+
     °³jBF  ã                   ó˜   € ^ RI t ^ RIt^ RIHt ^ RIHtHtHtHt ^ RI	H
t
HtHtHt ^ RIHt ]'       d   ^ RIHt ] ! R R4      4       tR# )	é    N)Ú	dataclass)ÚTYPE_CHECKINGÚLiteralÚOptionalÚUnion)ÚDeepSpeedSequenceParallelConfigÚDistributedTypeÚTorchContextParallelConfigÚTorchTensorParallelConfig)Úis_torch_version)ÚAcceleratorc                   ó¬  a € ] tR t^!t o RtRtRtRtRtRt	Rt
RtRtRtRtRtR tR t]R 4       t]R 4       t]R 4       t]R 4       t]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t V 3R lR lt!R V 3R lR llt"V 3R lR lt#R t$V 3R lR lt%V 3R lR lt&V 3R lt'Rt(V t)R# )!ÚParallelismConfigaM  
A dataclass to configure parallelisms applied to the model. Inspired by torchtitan's `ParallelDims`
https://github.com/pytorch/torchtitan/blob/main/torchtitan/distributed/parallel_dims.py

Args:
    dp_replicate_size (`int`, defaults to `1`):
        The size of the data parallel group. If `dp_replicate_size` is set to 1, the data parallel replication
        group will not be used.
    dp_shard_size (`int`, defaults to `1`):
        The size of the model shard group. If `dp_replicate_size > 1` and `tp_size > 1`, `dp_shard_size` must also
        be greater than 1, as composing DDP + TP is currently not supported.
    tp_size (`int`, defaults to `1`):
        The size of the tensor parallel group. If `tp_size` is set to `1`, the tensor parallel group will not be
        used.
    tp_handler (`~utils.TorchTensorParallelConfig`, defaults to `None`):
        The handler for the tensor parallel group.
    cp_size (`int`, defaults to `1`):
        The size of the context parallel group. Currently not supported, but reserved for future use and enabled
        for downstream libraries.
    cp_backend (`str`, defaults to `torch`):
        Which CP backend to use: `torch` (FSDP2)
    sp_size (`int`, defaults to `1`):
        The size of the sequence parallel group.
    sp_backend (`str`, defaults to `deepspeed`):
        Which SP backend to use:`deepspeed` (ALST/Ulysses)

You may obtain different distributed data parallel paradigms by configuring `dp_replicate_size` and `dp_shard_size`
together:
    - `dp_replicate_size == 1` and `dp_shard_size > 1`, we obtain Fully Sharded Data Parallel (FSDP).
    - `dp_replicate_size > 1` and `dp_shard_size > 1`, we obtain Hybrid Sharded Data Parallel (HSDP).
    - `dp_replicate_size > 1` and `dp_shard_size == 1` is an invalid configuration, to use pure DP, use
      `DistributedDataParallelKwargs` instead.

Nc                ó  € R V P                    RV P                   RV P                   RV P                   RV P                   RV P
                   RV P                   RV P                   RV P                   R	V P                   R
2# )z'ParallelismConfig(
 	dp_replicate_size=z,
	dp_shard_size=z,
	tp_size=z,
	cp_size=z,
	cp_backend=z,
	sp_size=z,
	sp_backend=z,
	total_size=z
	tp_handler=z,
	cp_handler=z)
)
Údp_replicate_sizeÚdp_shard_sizeÚtp_sizeÚcp_sizeÚ
cp_backendÚsp_sizeÚ
sp_backendÚ
total_sizeÚ
tp_handlerÚ
cp_handler©Úselfs   &Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/accelerate/parallelism_config.pyÚ__repr__ÚParallelismConfig.__repr__U   s¥   € ð#Ø#'×#9Ñ#9Ð":ð ;Ø#×1Ñ1Ð2ð 3ØŸ™˜ð 'ØŸ™˜ð 'Ø ŸO™OÐ,ð -ØŸ™˜ð 'Ø ŸO™OÐ,ð -Ø ŸO™OÐ,ð -Ø ŸO™OÐ,ð -Ø ŸO™OÐ,¨Cð
1ð	
ó    c                ó  € ^ RI pR.pTP                  V P                  P                  4        UUu/ uF=  w  r4W29  g   K  T\	        VR4      '       d   VP                  VP                  4      MTbK?  	  upp4       R# u uppi )r   NÚdevice_meshÚ__dict__)ÚcopyÚdeepcopyr#   ÚitemsÚhasattr)r   r$   Ú_non_serializable_fieldsÚkÚvs   &    r   Úto_jsonÚParallelismConfig.to_jsond   ss   € Ûà$1 ?Ð à�‰ð !ŸM™M×/Ñ/Ô1ôá1‘D�AØÑ4ô N�´¸¸:×0FÒ0F�4—=‘= §¡Ô,ÈAÒMÙ1òö	
ùós
   °
A=
¿4A=
c                óz   € . pV P                   '       d   VR.,          pV P                  '       d   VR.,          pV# )zENames of enabled dimensions across which data parallelism is applied.Údp_replicateÚdp_shard)Údp_replicate_enabledÚdp_shard_enabled©r   Údimss   & r   Údp_dim_namesÚParallelismConfig.dp_dim_namesq   s?   € ð ˆØ×$×$Ð$Ø�^Ð$Õ$ˆDØ× × Ð Ø�Z�LÕ ˆDØˆr    c                ó²   € . pV P                   '       d   VR.,          pV P                  '       d   VR.,          pV P                  '       d   VR.,          pV# )z]Names of enabled dimensions which will receive the same batch (non-data parallel dimensions).ÚtpÚcpÚsp)Ú
tp_enabledÚ
cp_enabledÚ
sp_enabledr2   s   & r   Únon_dp_dim_namesÚ"ParallelismConfig.non_dp_dim_names{   sJ   € ð ˆØ�?�?ˆ?Ø�T�F�NˆDØ�?�?ˆ?Ø�T�F�NˆDØ�?�?ˆ?Ø�T�F�NˆDØˆr    c                óz   € . pV P                   '       d   VR.,          pV P                  '       d   VR.,          pV# )zlNames of enabled dimensions which will be flattened into a joint mesh across which is model sharded in FSDP.r/   r8   )r1   r;   r2   s   & r   Údp_shard_cp_dim_namesÚ'ParallelismConfig.dp_shard_cp_dim_names‡   s:   € ð ˆØ× × Ð Ø�Z�LÕ ˆDØ�?�?ˆ?Ø�T�F�NˆDØˆr    c                ó²   € . pV P                   '       d   VR.,          pV P                  '       d   VR.,          pV P                  '       d   VR.,          pV# )z@Names of enabled dimensions across which loss should be averagedr.   r/   r8   )r0   r1   r;   r2   s   & r   Údp_cp_dim_namesÚ!ParallelismConfig.dp_cp_dim_names‘   sS   € ð ˆØ×$×$Ð$Ø�^Ð$Õ$ˆDØ× × Ð Ø�Z�LÕ ˆDØ�?�?ˆ?Ø�T�F�NˆDØˆr    c                óV   € . pV P                   '       d   VR.,          pVR.,          pV# )z^Names of enabled dimensions across which FSDP is applied, including data parallel replication.r.   Údp_shard_cp)r0   r2   s   & r   Úfsdp_dim_namesÚ ParallelismConfig.fsdp_dim_names�   s3   € ð ˆØ×$×$Ð$Ø�^Ð$Õ$ˆDØ��ÕˆØˆr    c                ó¢   € V P                   V P                  ,          V P                  ,          V P                  ,          V P                  ,          # )zSThe total size of the parallelism configuration, which is the product of all sizes.)r   r   r   r   r   r   s   &r   r   ÚParallelismConfig.total_size¦   s9   € ð ×%Ñ%¨×(:Ñ(:Õ:¸T¿\¹\ÕIÈDÏLÉLÕXÐ[_×[gÑ[gÕgÐgr    c                ó^   € V P                   V P                  ,          V P                  ,          # )zhThe size of the non-data parallel dimensions, which is the product of tensor and context parallel sizes.)r   r   r   r   s   &r   Únon_data_parallel_sizeÚ(ParallelismConfig.non_data_parallel_size«   s    € ð �|‰|˜dŸl™lÕ*¨T¯\©\Õ9Ð9r    c                ó<   € V P                   V P                  ,          # )z_The size of the data parallel dimensions, which is the product of data parallel replication and)r   r   r   s   &r   Údata_parallel_sizeÚ$ParallelismConfig.data_parallel_size°   s   € ð ×%Ñ%¨×(:Ñ(:Õ:Ð:r    c                ó    € V P                   ^8„  # )zKTrue if data parallel replication is enabled, i.e. `dp_replicate_size > 1`.)r   r   s   &r   r0   Ú&ParallelismConfig.dp_replicate_enabledµ   s   € ð ×%Ñ%¨Ñ)Ð)r    c                ó    € V P                   ^8„  # )zDTrue if data parallel sharding is enabled, i.e. `dp_shard_size > 1`.)r   r   s   &r   r1   Ú"ParallelismConfig.dp_shard_enabledº   s   € ð ×!Ñ! AÑ%Ð%r    c                ó    € V P                   ^8„  # )z:True if tensor parallelism is enabled, i.e. `tp_size > 1`.)r   r   s   &r   r:   ÚParallelismConfig.tp_enabled¿   ó   € ð �|‰|˜aÑÐr    c                ó    € V P                   ^8„  # )z;True if context parallelism is enabled, i.e. `cp_size > 1`.)r   r   s   &r   r;   ÚParallelismConfig.cp_enabledÄ   rW   r    c                ó    € V P                   ^8„  # )z;True if context parallelism is enabled, i.e. `sp_size > 1`.)r   r   s   &r   r<   ÚParallelismConfig.sp_enabledÉ   rW   r    c                ó<   € V P                   V P                  ,           # )z$Names of all active mesh dimensions.)r4   r=   r   s   &r   Úactive_mesh_dimsÚ"ParallelismConfig.active_mesh_dimsÎ   s   € ð × Ñ  4×#8Ñ#8Õ8Ð8r    c                ó    <€ V ^8„  d   QhRS[ /# ©é   Údevice_type)Ústr)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚParallelismConfig.__annotate__Ó   s   ø€ ÷ !ñ !©Sñ !r    c                ó*  € V P                   R8X  d   V P                  ^8”  d   R# \        RR4      '       d   ^ RIHp M\        R4      hV P                  4       p\        V4      ^ 8X  d   R# Vw  rEV! VVVR7      pV P                  '       d"   W`P                  ,          P                  R4       V P                  '       d"   W`P                  ,          P                  R	4       V P                  '       d"   W`P                  ,          P                  R
4       V# )a  Builds a device mesh for the given device type based on the parallelism configuration.
This method will also create required joint meshes (e.g. `dp_shard_cp`, `dp_cp`, `dp`).

Args:
    device_type (`str`): The type of device for which to build the mesh, e
Ú	deepspeedNz>=z2.2.0)Úinit_device_meshz4Building a device_mesh requires to have torch>=2.2.0)Úmesh_dim_namesÚdprF   Údp_cp)r   r   r   Útorch.distributed.device_meshrj   ÚRuntimeErrorÚ	_get_meshÚlenr4   Ú_flattenr@   rC   )r   rb   rj   Úmeshrk   Ú
mesh_shaper"   s   &&     r   Úbuild_device_meshÚ#ParallelismConfig.build_device_meshÓ   sà   € ð �?‰?˜kÔ)¨d¯l©l¸QÔ.>Ùä˜D '×*Ò*ÞFäÐUÓVÐVà�~‰~ÓˆÜˆt‹9˜Œ>ÙØ%)Ñ"ˆÙ&ØØØ)ô
ˆð
 ××ÐØ×)Ñ)Õ*×3Ñ3°DÔ9Ø×%×%Ð%Ø×2Ñ2Õ3×<Ñ<¸]ÔKØ××ÐØ×,Ñ,Õ-×6Ñ6°wÔ?àÐr    c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r`   )r   rc   )rd   re   s   "€r   rf   rg   ö   s   ø€ ÷  ñ  ©8±C­=ñ  r    c                ó"  € V P                   f2   Ve#   V P                  V4      V n         V P                   # \        R4      hVeB   V P                   P                  V8w  d'   \        RV P                   P                   RV R24      hV P                   # )Nz@You need to pass a device_type e.g cuda to build the device meshz4The device_mesh is already created with device type z@. However, you are trying to get a device mesh with device_type z<. Please check if you correctly initialized your device_mesh)r"   ru   Ú
ValueErrorrb   )r   rb   s   &&r   Úget_device_meshÚ!ParallelismConfig.get_device_meshö   s®   € Ø×ÑÒ#ØÒ&Ø#'×#9Ñ#9¸+Ó#F�Ô ð ×ÑÐô !Ð!cÓdÐdàÒ&Ø×#Ñ#×/Ñ/°;Ô>Ü$ØNÈt×O_ÑO_×OkÑOkÐNlð  mmð  nyð  mzð  zvð  wóð ð ×ÑÐr    c                ó^   <€ V ^8„  d   QhRS[ S[ S[R3,          S[ S[R3,          3,          /# )ra   Úreturn.)ÚtupleÚintrc   )rd   re   s   "€r   rf   rg     s.   ø€ ÷ )ñ )™5¡¡s¨C x¥±%¹¸S¸µ/Ð!AÕBñ )r    c                óÐ   a€ V P                    Uu/ uF  qV P                  V,          bK  	  pp. ROo\        VP                  4       V3R lR7      p\	        \        V!  4      # u upi )zQGenerate mesh shape and dimension names for torch.distributed.init_device_mesh().c                 ó4   <€ SP                  V ^ ,          4      # )r   )Úindex)ÚxÚ
mesh_orders   &€r   Ú<lambda>Ú-ParallelismConfig._get_mesh.<locals>.<lambda>  s   ø€ ˜:×+Ñ+¨A¨a­DÔ1r    )Úkey)r.   r/   r8   r9   r7   )r]   Ú_sizesÚsortedr&   r~   Úzip)r   ÚparallelismÚ	mesh_dimsÚsorted_itemsr„   s   &   @r   rp   ÚParallelismConfig._get_mesh  sf   ø€ ð OS×NcÒNcÓdÑNc¸{ $§+¡+¨kÕ":Ò:ÑNcˆ	Ðdò Dˆ
ÜØ�O‰OÓÜ2ô
ˆô ”S˜,Ñ'Ó(Ð(ùò es   �A#c           
     óD	  € V P                   f/   \        \        P                  P	                  RR4      4      V n         V P
                  f/   \        \        P                  P	                  RR4      4      V n        V P                  f/   \        \        P                  P	                  RR4      4      V n        V P                  f/   \        \        P                  P	                  RR4      4      V n        V P                  f&   \        P                  P	                  RR4      V n        V P                  f/   \        \        P                  P	                  RR4      4      V n	        V P                  f&   \        P                  P	                  R	R
4      V n
        V P                  ^8”  d   V P                  f   \        4       V n        V P                  ^8”  dœ   V P                  f   \        4       V n        M}\        \        R7      p\!        V P                  WP                  ,          4      '       gB   \#        RV P                   RWP                  ,           R\%        V P                  4       24      hV P                  ^8”  d   V P&                  f   \)        4       V n        V P                   ^8  d   \#        RV P                    24      hV P
                  ^8  d   \#        RV P
                   24      hV P                  ^8  d   \#        RV P                   24      hV P                  ^8  d   \#        RV P                   24      hR.pV P                  V9  d   \#        RV RV P                   24      hV P                  ^8  d   \#        RV P                   24      hR
.pV P                  V9  d   \#        RV RV P                   24      hV P                  ^8”  d8   V P                  ^8”  d'   \#        RV P                   RV P                   R24      hV P                  ^8”  g   V P                  ^8”  d.   V P                   ^8”  d   V P
                  ^8X  d   \#        R4      hRV P                   RV P
                  RV P                  RV P                  RV P                  /V n        R # ) NÚ$PARALLELISM_CONFIG_DP_REPLICATE_SIZEÚ1Ú PARALLELISM_CONFIG_DP_SHARD_SIZEÚPARALLELISM_CONFIG_TP_SIZEÚPARALLELISM_CONFIG_CP_SIZEÚPARALLELISM_CONFIG_CP_BACKENDÚtorchÚPARALLELISM_CONFIG_SP_SIZEÚPARALLELISM_CONFIG_SP_BACKENDri   )r–   zParallelismConfig's cp_backend=z
 requires z, but cp_handler was set to z.dp_replicate_size must be at least 1, but got z*dp_shard_size must be at least 1, but got z$tp_size must be at least 1, but got z$cp_size must be at least 1, but got zcp_backend must be one of z
, but got z$sp_size must be at least 1, but got zsp_backend must be one of z[Context Parallelism (CP) and Sequence Parallelism (SP) are mutually exclusive. Got cp_size=z and sp_size=z+. Please set either cp_size=1 or sp_size=1.aC  Tensor/Context parallelism (tp/cp_size > 1) cannot be used with pure data parallelism (dp_replicate_size > 1 and dp_shard_size == 1). Please set dp_shard_size > 1 and dp_replicate_size == 1 to compose FSDP + TP/CP for 2D parallel, or set dp_replicate_size == 1 and dp_shard_size > 1 to compose HSDP + TP/CP for 3D parallel.r.   r/   r7   r8   r9   )r   r   ÚosÚenvironÚgetr   r   r   r   r   r   r   r   r   r
   ÚdictÚ
isinstancery   ÚtypeÚ
sp_handlerr   rˆ   )r   Úcp_backends_config_mapÚvalid_cp_backendsÚvalid_sp_backendss   &   r   Ú__post_init__ÚParallelismConfig.__post_init__  sì  € à×!Ñ!Ò)Ü%(¬¯©¯©Ð8^Ð`cÓ)dÓ%eˆDÔ"Ø×ÑÒ%Ü!$¤R§Z¡Z§^¡^Ð4VÐX[Ó%\Ó!]ˆDÔØ�<‰<ÒÜœrŸz™zŸ~™~Ð.JÈCÓPÓQˆDŒLØ�<‰<ÒÜœrŸz™zŸ~™~Ð.JÈCÓPÓQˆDŒLØ�?‰?Ò"Ü Ÿj™jŸn™nÐ-LÈgÓVˆDŒOØ�<‰<ÒÜœrŸz™zŸ~™~Ð.JÈCÓPÓQˆDŒLØ�?‰?Ò"Ü Ÿj™jŸn™nÐ-LÈkÓZˆDŒOà�<‰<˜!ÔØ�‰Ò&Ü";Ó"=�”à�<‰<˜!ÔØ�‰Ò&Ü"<Ó">�•ä)-Ü4ô*Ð&ô " $§/¡/Ð3IÏ/É/Õ3Z×[Ò[Ü$Ø9¸$¿/¹/Ð9JÈ*ÐUk×l{Ñl{ÕU|ÐT}ð  ~Zô  [_ð  `d÷  `oñ  `oó  [pð  Zqð  róð ð �<‰<˜!ÔØ�‰Ò&Ü"AÓ"C�”Ø×!Ñ! AÔ%ÜÐMÈd×NdÑNdÐMeÐfÓgÐgØ×Ñ Ô!ÜÐIÈ$×J\ÑJ\ÐI]Ð^Ó_Ð_Ø�<‰<˜!ÔÜÐCÀDÇLÁLÀ>ÐRÓSÐSØ�<‰<˜!ÔÜÐCÀDÇLÁLÀ>ÐRÓSÐSØ$˜IÐØ�?‰?Ð"3Ô3ÜÐ9Ð:KÐ9LÈJÐW[×WfÑWfÐVgÐhÓiÐià�<‰<˜!ÔÜÐCÀDÇLÁLÀ>ÐRÓSÐSØ(˜MÐØ�?‰?Ð"3Ô3ÜÐ9Ð:KÐ9LÈJÐW[×WfÑWfÐVgÐhÓiÐið �<‰<˜!Ô §¡¨qÔ 0ÜðØ#Ÿ|™|˜n¨M¸$¿,¹,¸ð H<ð<óð ð �L‰L˜1Ô §¡¨qÔ 0°d×6LÑ6LÈqÔ6PÐUY×UgÑUgÐklÔUlÜðoóð ð ˜D×2Ñ2Ø˜×*Ñ*Ø�$—,‘,Ø�$—,‘,Ø�$—,‘,ð
ˆŽr    c                ó&   <€ V ^8„  d   QhRS[ RS[/# )ra   r‹   Úsize)rc   r   )rd   re   s   "€r   rf   rg   ^  s   ø€ ÷ 3ñ 3¡Sð 3±ñ 3r    c                óÀ   € WP                   P                  4       9   g#   Q R V P                   P                  4        24       hW P                   V&   \        W R2V4       R# )zParallelism must be one of Ú_sizeN)rˆ   ÚkeysÚsetattr)r   r‹   r¦   s   &&&r   Ú	_set_sizeÚParallelismConfig._set_size^  sV   € ØŸk™k×.Ñ.Ó0Ô0ÐdÐ4OÐPT×P[ÑP[×P`ÑP`ÓPbÐOcÐ2dÓdÐ0Ø#'�‰�KÑ Ü�˜ UÐ+¨TÖ2r    c                ó   <€ V ^8„  d   QhRR/# )ra   Úacceleratorr   © )rd   re   s   "€r   rf   rg   c  s   ø€ ÷ 6ñ 6°ñ 6r    c                ó.  € \        4       pVP                  '       g   V P                  ^8X  d   R# V P                  ^8X  d   V P                  RVP                  4       V P
                  R8X  d   V P                  ^8”  d   MAV P                  VP                  8w  d'   \        RV P                   RVP                   R24      hVP                  '       d0   V P                  '       g   V P                  '       g   \        R4      hV P                  ^8”  d]   VP                  '       gK   VP                  '       g9   VP                  \        P                  8X  g   \        RVP                   R	24      hV P                  P                  4        F9  w  r4V^8X  g   K  \!        W R
2R4      f   K!  VP#                  RV RV R24       K;  	  V'       dH   VP$                  '       d4   \&        P(                  ! RRP+                  V4      ,           \,        4       R# R# R# )é   Nr.   ri   zParallelismConfig total_size (z ) does not match num_processes (zJ). Please adjust dp_replicate_size/ dp_shard_size/tp_size/cp_size/sp_size.a×  FSDP is enabled but the parallelism config has no dimension for FSDP to shard across (both `dp_shard_size` and `cp_size` are 1). This usually means a model that is already parallelized another way -- e.g. loaded with `DistributedConfig(tp_size=N)` or `enable_expert_parallel=True`, which makes the whole world size tensor/expert parallel -- was launched under an FSDP config. Either launch it without the FSDP config, or leave ranks for FSDP to use by lowering `tp_size`.z�ParallelismConfig is only compatible DistributedType.FSDP (version 2) or DistributedType.Multi{Device} or DistributedType.DEEPSPEED, but got Ú.Ú_handlerzParallelismConfig.z_handler is set, but z0_size is set to 1. This handler will be ignored.z.ParallelismConfig has the following warnings:
Ú
)ÚsetÚmulti_devicer   r«   Únum_processesr   r   ry   Úis_fsdp2r1   r;   Údistributed_typer	   Ú	DEEPSPEEDrˆ   r&   ÚgetattrÚaddÚis_main_processÚwarningsÚwarnÚjoinÚUserWarning)r   r®   Ú	_warningsr‹   r¦   s   &&   r   Ú_validate_acceleratorÚ'ParallelismConfig._validate_acceleratorc  sæ  € Ü“Eˆ	Ø×'×'Ð'¨D¯O©O¸qÔ,@áð �?‰?˜aÔØ�N‰N˜>¨;×+DÑ+DÔEð �?‰?˜kÔ)¨d¯l©l¸QÔ.>ØØ�_‰_ × 9Ñ 9Ô9ÜØ0°·±Ð0Að B"Ø"-×";Ñ";Ð!<ð =9ð:óð ð ××Ð¨×(=×(=Ð(=ÀdÇoÇoÀoÜðróð ð �?‰?˜QÔØ× × Ð Ø×'×'Ð'Ø×+Ñ+¬×/HÑ/HÔHäð bð  cn÷  cñ  cð  b@ð  @Að  Bóð ð "&§¡×!2Ñ!2Ö!4ÑˆKØ�qŽyœW T¨]¸(Ð+CÀTÓJÔVØ—‘Ø(¨¨Ð5JÈ;È-ð  XHð  Iöñ "5÷ ˜×4×4Ð4Ü�MŠMØAÀDÇIÁIÈiÓDXÕXÜöñ 5‰9r    c                ó:  <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[R,          ;R&   S[ S[,          ;R&   S[R,          ;R	&   S[R
S[3,          ;R&   S[R
S[3,          ;R&   S[R
S[3,          ;R&   # )ra   r   r   r   r   r–   r   r   ri   r   Nr   r   rŸ   )r   r   r   r   r   r
   r   )rd   re   s   "€r   rf   rg   !   sÚ   ø‡ ‚ ñJ  ¡•}Ñ+ñK ñL ™C•=Ñ'ñM ñN ‘c�]Ñ!ñO ñP ‘c�]Ñ!ñQ ñR ˜Õ Ñ'ñS ñT ‘c�]Ñ!ñU ñV ˜Õ$Ñ+ñW ñ\ �dÑ5Ð5Õ6Ñ=ñ] ñ^ �dÑ6Ð6Õ7Ñ>ñ_ ñ` �dÑ;Ð;Õ<ÑCòa r    )rˆ   r   r   r   r"   r   r   r   rŸ   r   r   r   )N)*Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r   r   r   r   r   rŸ   r"   r   r+   Úpropertyr4   r=   r@   rC   rG   r   rL   rO   r0   r1   r:   r;   r<   r]   ru   rz   rp   r£   r«   rÃ   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)re   s   @r   r   r   !   s­  ø‡ € ñ!ðF (,ÐØ#'€MØ!€GØ!€GØ#'€JØ!€GØ'+€Jð :>€JØ:>€JØ?C€Jà€Kò
ò
ð ñó ðð ñ	ó ð	ð ñó ðð ñ	ó ð	ð ñó ðð ñhó ðhð ñ:ó ð:ð ñ;ó ð;ð ñ*ó ð*ð ñ&ó ð&ð ñ ó ð ð ñ ó ð ð ñ ó ð ð ñ9ó ð9÷!ð !÷F ò  ÷)ð )òJ
÷X3ð 3÷
6ð 6÷E
 ƒ r    r   )r™   r¾   Údataclassesr   Útypingr   r   r   r   Úaccelerate.utils.dataclassesr   r	   r
   r   Úaccelerate.utils.versionsr   Ú
accelerater   r   r¯   r    r   Ú<module>rÔ      sI   ðó 
Û Ý !ß :Ó :÷ó õ 7÷ Ý&ð ÷wð wó òwr    