§
    1@Äj›  ã                   óœ(  — d dl mZ d dlZd dl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 d dlmZ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mZ d dlm Z m!Z!  e
¦   «         Z"e"j#        Z#e"j$        Z%e"j&        Z&d„ Z' e% ej(        e¦  «        d¦  «        d„ ¦   «         Z) e% ej(        e¦  «        d¦  «        d„ ¦   «         Z* e% ej(        e¦  «        d¦  «        d„ ¦   «         Z+ e% ej(        e¦  «        d¦  «        d„ ¦   «         Z, e% ej(        e¦  «        d¦  «        d„ ¦   «         Z- e%e d¦  «        d„ ¦   «         Z. e%e d¦  «        d„ ¦   «         Z/ e%e d¦  «        d„ ¦   «         Z0 e#ej1        j2        ej3        ¦  «        d „ ¦   «         Z4d a5d!„ Z6 e#ej7        j8        ej9        ej:        ¦  «        d"„ ¦   «         Z; e#ej7        j8        ej<        ej:        ¦  «         e#ej7        j8        ej=        ej:        ¦  «        d#„ ¦   «         ¦   «         Z> e#ej?        j8        ej9        ej:        ¦  «        d$„ ¦   «         Z@ e#ej?        j8        ej<        ej:        ¦  «         e#ej?        j8        ej=        ej:        ¦  «        d%„ ¦   «         ¦   «         ZA e#ejB        ¦  «        d&„ ¦   «         ZC e#ejD        ¦  «        d'„ ¦   «         ZE e#ejF        ¦  «        d(„ ¦   «         ZG e#ejH        ¦  «        d)„ ¦   «         ZI e#ejH        ejJ        ¦  «        d*„ ¦   «         ZK e#ejL        ejJ        ejJ        ejJ        ejJ        ejJ        ¦  «         e#ejL        ejJ        ejJ        ejM        ejJ        ejJ        ¦  «         e#ejL        ejJ        ejJ        ejN        ejJ        ejJ        ¦  «         e#ejL        ejJ        ejJ        ejO        ejJ        ejJ        ¦  «        d+„ ¦   «         ¦   «         ¦   «         ¦   «         ZP e#ejQ        ejJ        ejJ        ejR        ¦  «        d,„ ¦   «         ZS e#ejT        ejJ        ejJ        ¦  «         e#ejT        ejJ        ejM        ¦  «         e#ejT        ejJ        ejN        ¦  «         e#ejT        ejJ        ejO        ¦  «        d-„ ¦   «         ¦   «         ¦   «         ¦   «         ZU e#ejV        ejJ        ejJ        ¦  «         e#ejV        ejJ        ejM        ¦  «         e#ejV        ejJ        ejN        ¦  «         e#ejV        ejJ        ejO        ¦  «        d.„ ¦   «         ¦   «         ¦   «         ¦   «         ZW e#ejX        ¦  «        d/„ ¦   «         ZY e#ejZ        ¦  «        d0„ ¦   «         Z[ e#ej\        ej:        ¦  «        d1„ ¦   «         Z] e#ej^        ej:        ej:        ej:        ¦  «        d2„ ¦   «         Z_d3„ Z` eeja        ejb        ¦  «        d4„ ¦   «         Zc eejb        eja        ¦  «        d5„ ¦   «         Zdd6„ Ze eeja        ejf        ¦  «        d7„ ¦   «         Zg eejf        eja        ¦  «         eej9        eja        ¦  «        d8„ ¦   «         ¦   «         Zhd9„ Zi eiejj        jk        d:¦  «          eiejl        d:¦  «          eiejm        d:¦  «          eiejj        jn        d;¦  «          eiejo        d;¦  «          eiejp        d;¦  «          eiejj        jq        d<¦  «          eiejr        d<¦  «          eiejs        d<¦  «          e#ejj        jt        eja        ¦  «        d=„ ¦   «         Zu e#ejv        eja        ¦  «        d>„ ¦   «         Zw e#ejj        jx        eja        ¦  «        d?„ ¦   «         Zy e#ezeja        ¦  «        d@„ ¦   «         Z{ e#ejj        j|        eja        eja        eja        ¦  «        dA„ ¦   «         Z} e#ej~        eja        eja        ¦  «         e#ej        eja        eja        ¦  «        dB„ ¦   «         ¦   «         Z€dCZ�dD„ Z‚  e#ejj        jƒ        eja        eja        ¦  «         e‚dE¦  «        ¦  «           e#ej„        eja        eja        ¦  «         e‚dE¦  «        ¦  «           e#ejj        j…        eja        eja        ¦  «         e‚dF¦  «        ¦  «           e#ej†        eja        eja        ¦  «         e‚dF¦  «        ¦  «           e#ejj        j‡        eja        eja        ¦  «         e‚dG¦  «        ¦  «           e#ejˆ        eja        eja        ¦  «         e‚dG¦  «        ¦  «           e#ejj        j‰        eja        eja        ¦  «         e‚dH¦  «        ¦  «           e#ejŠ        eja        eja        ¦  «         e‚dH¦  «        ¦  «           e#ejj        j‹        eja        eja        ¦  «         e‚dI¦  «        ¦  «           e#ejŒ        eja        eja        ¦  «         e‚dI¦  «        ¦  «           e#ejj        j�        eja        eja        ¦  «         e‚dJ¦  «        ¦  «           e#ejŽ        eja        eja        ¦  «         e‚dJ¦  «        ¦  «         dK„ Z� e�ejj        j�        dLdH¦  «          e�ejj        j‘        dMdJ¦  «         ej’        dNej“        dOiZ” e#ej•        ej’        ¦  «         e#ej•        ej“        ¦  «        dP„ ¦   «         ¦   «         Z– e#ej—        ej˜        ¦  «        dQ„ ¦   «         Z™ e#ej—        ejš        ¦  «        dR„ ¦   «         Z› e#ejœ        ej:        ¦  «        dS„ ¦   «         Z� e#ejž        ejJ        ¦  «         e#ejž        ej˜        ¦  «        dT„ ¦   «         ¦   «         ZŸ e#ejž        ejM        ¦  «         e#ejž        ejš        ¦  «        dU„ ¦   «         ¦   «         Z  e#ej¡        ej:        ej:        ej:        ¦  «        dV„ ¦   «         Z¢ e#e£ejN        ejN        ¦  «        dW„ ¦   «         Z¤ e#e£ejO        ejN        ¦  «         e#e£ejN        ejO        ¦  «         e#e£ejO        ejO        ¦  «        dX„ ¦   «         ¦   «         ¦   «         Z¥ e#e¦ejN        ejN        ¦  «        dY„ ¦   «         Z§ e#e¦ejO        ejN        ¦  «         e#e¦ejN        ejO        ¦  «         e#e¦ejO        ejO        ¦  «        dZ„ ¦   «         ¦   «         ¦   «         Z¨ e#e©ejN        ¦  «         e#e©ejO        ¦  «        d[„ ¦   «         ¦   «         Zª e#e©ejN        ejf        ¦  «         e#e©ejO        ejf        ¦  «        d\„ ¦   «         ¦   «         Z«d]„ Z¬ej­        d^z  Z®d^ej­        z  Z¯  e#ej°        ejN        ¦  «         e¬e®¦  «        ¦  «           e#ej°        ejO        ¦  «         e¬e®¦  «        ¦  «           e#ej±        ejN        ¦  «         e¬e¯¦  «        ¦  «           e#ej±        ejO        ¦  «         e¬e¯¦  «        ¦  «         d_„ Z²d`„ Z³ e#ej´        jl        ej3        ejµ        ej:        ¦  «         e#ej´        jl        ej3        ej=        ej:        ¦  «         e#ej´        jl        ej3        ej<        ej:        ¦  «        e³da„ ¦   «         ¦   «         ¦   «         ¦   «         Z¶ e#ej´        jo        ej3        ejµ        ej:        ¦  «         e#ej´        jo        ej3        ej=        ej:        ¦  «         e#ej´        jo        ej3        ej<        ej:        ¦  «        e³db„ ¦   «         ¦   «         ¦   «         ¦   «         Z· e#ej´        j¸        ej3        ejµ        ej:        ¦  «         e#ej´        j¸        ej3        ej=        ej:        ¦  «         e#ej´        j¸        ej3        ej<        ej:        ¦  «        e³dc„ ¦   «         ¦   «         ¦   «         ¦   «         Z¹ e#ej´        jº        ej3        ejµ        ej:        ¦  «         e#ej´        jº        ej3        ej=        ej:        ¦  «         e#ej´        jº        ej3        ej<        ej:        ¦  «        e³dd„ ¦   «         ¦   «         ¦   «         ¦   «         Z»de„ Z¼ e¼ej´        j½        df¦  «          e¼ej´        j¾        dg¦  «          e¼ej´        j¿        dh¦  «          e#ej´        jÀ        ej3        ejµ        ej:        ¦  «         e#ej´        jÀ        ej3        ej=        ej:        ¦  «         e#ej´        jÀ        ej3        ej<        ej:        ¦  «        e³di„ ¦   «         ¦   «         ¦   «         ¦   «         ZÁ e#ej´        j£        ej3        ejµ        ej:        ¦  «         e#ej´        j£        ej3        ej<        ej:        ¦  «         e#ej´        j£        ej3        ej=        ej:        ¦  «        e³dj„ ¦   «         ¦   «         ¦   «         ¦   «         ZÂ e#ej´        j¦        ej3        ejµ        ej:        ¦  «         e#ej´        j¦        ej3        ej<        ej:        ¦  «         e#ej´        j¦        ej3        ej=        ej:        ¦  «        e³dk„ ¦   «         ¦   «         ¦   «         ¦   «         ZÃ e#ej´        jÄ        ej3        ejµ        ej:        ¦  «         e#ej´        jÄ        ej3        ej<        ej:        ¦  «         e#ej´        jÄ        ej3        ej=        ej:        ¦  «        e³dl„ ¦   «         ¦   «         ¦   «         ¦   «         ZÅ e#ej´        jÆ        ej3        ejµ        ej:        ¦  «         e#ej´        jÆ        ej3        ej<        ej:        ¦  «         e#ej´        jÆ        ej3        ej=        ej:        ¦  «        e³dm„ ¦   «         ¦   «         ¦   «         ¦   «         ZÇ e#ej´        jÈ        ej3        ej:        ej:        ¦  «        dn„ ¦   «         ZÉ e#ej´        jÊ        ej3        ejµ        ej:        ej:        ¦  «         e#ej´        jÊ        ej3        ej<        ej:        ej:        ¦  «         e#ej´        jÊ        ej3        ej=        ej:        ej:        ¦  «        do„ ¦   «         ¦   «         ¦   «         ZË e#ejÌ        ejÍ        ¦  «        dp„ ¦   «         ZÎ	 dtdr„ZÏ e&e!¦  «        ds„ ¦   «         ZÐ e ejÑ        ¦   «         e#¦  «         dS )ué    )ÚreduceN)Úir)ÚRegistryÚ
lower_cast)Úparse_dtype)Úmodels)ÚtypesÚcgutils)Úufunc_db)Úregister_ufuncsé   )Únvvm)Úcuda)Ú	nvvmutilsÚstubsÚerrors)Údim3ÚCUDADispatcherc                 óÂ   — t          j        | d|z  ¦  «        }t          j        | d|z  ¦  «        }t          j        | d|z  ¦  «        }t          j        | |||f¦  «        S )Nz%s.xz%s.yz%s.z)r   Ú	call_sregr
   Úpack_struct)ÚbuilderÚprefixÚxÚyÚzs        úDC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/cudaimpl.pyÚinitialize_dim3r      s]   € ÝÔ˜G V¨f¡_Ñ5Ô5€AÝÔ˜G V¨f¡_Ñ5Ô5€AÝÔ˜G V¨f¡_Ñ5Ô5€AÝÔ˜w¨¨A¨q¨	Ñ2Ô2Ð2ó    Ú	threadIdxc                 ó"   — t          |d¦  «        S )NÚtid©r   ©Úcontextr   ÚsigÚargss       r   Úcuda_threadIdxr(       s   € å˜7 EÑ*Ô*Ð*r   ÚblockDimc                 ó"   — t          |d¦  «        S )NÚntidr#   r$   s       r   Úcuda_blockDimr,   %   s   € å˜7 FÑ+Ô+Ð+r   ÚblockIdxc                 ó"   — t          |d¦  «        S )NÚctaidr#   r$   s       r   Úcuda_blockIdxr0   *   s   € å˜7 GÑ,Ô,Ð,r   ÚgridDimc                 ó"   — t          |d¦  «        S )NÚnctaidr#   r$   s       r   Úcuda_gridDimr4   /   s   € å˜7 HÑ-Ô-Ð-r   Úlaneidc                 ó,   — t          j        |d¦  «        S )Nr5   )r   r   r$   s       r   Úcuda_laneidr7   4   s   € åÔ˜w¨Ñ1Ô1Ð1r   r   c                 ó.   — |                      |d¦  «        S ©Nr   ©Úextract_valuer$   s       r   Údim3_xr<   9   ó   € à× Ò   qÑ)Ô)Ð)r   r   c                 ó.   — |                      |d¦  «        S )Nr   r:   r$   s       r   Údim3_yr?   >   r=   r   r   c                 ó.   — |                      |d¦  «        S )Né   r:   r$   s       r   Údim3_zrB   C   r=   r   c                 ó   — |d         S r9   © r$   s       r   Úcuda_const_array_likerE   J   s   € ð �Œ7€Nr   c                 óL   — t           dz  a d                     | t           ¦  «        S )zÍDue to bug with NVVM invalid internalizing of shared memory in the
    PTX output.  We can't mark shared memory to be internal. We have to
    ensure unique name is generated for shared memory symbol.
    r   z{0}_{1})Ú_unique_smem_idÚformat©Únames    r   Ú_get_unique_smem_idrK   T   s$   € õ �qÑ€OØ×Ò˜D¥/Ñ2Ô2Ð2r   c           	      ó¶   — |j         d         j        }t          |j         d         ¦  «        }t          | ||f|t	          d¦  «        t
          j        d¬¦  «        S )Nr   r   Ú_cudapy_smemT©ÚshapeÚdtypeÚsymbol_nameÚ	addrspaceÚcan_dynsized)r'   Úliteral_valuer   Ú_generic_arrayrK   r   ÚADDRSPACE_SHARED©r%   r   r&   r'   ÚlengthrP   s         r   Úcuda_shared_array_integerrY   ^   sX   € àŒX�aŒ[Ô&€FÝ˜œ œÑ$Ô$€EÝ˜' 7°6°)À5Ý&9¸.Ñ&IÔ&IÝ$(Ô$9Ø'+ð-ñ -ô -ð -r   c           	      ó¾   — d„ |j         d         D ¦   «         }t          |j         d         ¦  «        }t          | |||t          d¦  «        t          j        d¬¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S rD   ©rT   ©Ú.0Úss     r   ú
<listcomp>z+cuda_shared_array_tuple.<locals>.<listcomp>k   ó   € Ð4Ð4Ð4 !ˆaŒoÐ4Ð4Ð4r   r   r   rM   TrN   )r'   r   rU   rK   r   rV   ©r%   r   r&   r'   rO   rP   s         r   Úcuda_shared_array_tuplerc   h   sc   € ð 5Ð4 s¤x°¤{Ð4Ñ4Ô4€EÝ˜œ œÑ$Ô$€EÝ˜' 7°%¸uÝ&9¸.Ñ&IÔ&IÝ$(Ô$9Ø'+ð-ñ -ô -ð -r   c           	      óœ   — |j         d         j        }t          |j         d         ¦  «        }t          | ||f|dt          j        d¬¦  «        S )Nr   r   Ú_cudapy_lmemFrN   )r'   rT   r   rU   r   ÚADDRSPACE_LOCALrW   s         r   Úcuda_local_array_integerrg   s   sP   € àŒX�aŒ[Ô&€FÝ˜œ œÑ$Ô$€EÝ˜' 7°6°)À5Ø&4Ý$(Ô$8Ø',ð.ñ .ô .ð .r   c           	      ó¤   — d„ |j         d         D ¦   «         }t          |j         d         ¦  «        }t          | |||dt          j        d¬¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S rD   r\   r]   s     r   r`   z(ptx_lmem_alloc_array.<locals>.<listcomp>€   ra   r   r   r   re   FrN   )r'   r   rU   r   rf   rb   s         r   Úptx_lmem_alloc_arrayrj   }   s[   € ð 5Ð4 s¤x°¤{Ð4Ñ4Ô4€EÝ˜œ œÑ$Ô$€EÝ˜' 7°%¸uØ&4Ý$(Ô$8Ø',ð.ñ .ô .ð .r   c                 óè   — |rJ ‚d}|j         }t          j        t          j        ¦   «         d¦  «        }t	          j        |||¦  «        }|                     |d¦  «         |                      ¦   «         S )Nzllvm.nvvm.membar.ctarD   ©Úmoduler   ÚFunctionTypeÚVoidTyper
   Úget_or_insert_functionÚcallÚget_dummy_value©r%   r   r&   r'   ÚfnameÚlmodÚfntyÚsyncs           r   Úptx_threadfence_blockrx   ˆ   óh   € à€O€Oˆ8Ø"€EØŒ>€DÝŒ?�2œ;™=œ=¨"Ñ-Ô-€DÝÔ)¨$°°eÑ<Ô<€DØ‡L‚L��rÑÔÐØ×"Ò"Ñ$Ô$Ð$r   c                 óè   — |rJ ‚d}|j         }t          j        t          j        ¦   «         d¦  «        }t	          j        |||¦  «        }|                     |d¦  «         |                      ¦   «         S )Nzllvm.nvvm.membar.sysrD   rl   rs   s           r   Úptx_threadfence_systemr{   “   ry   r   c                 óè   — |rJ ‚d}|j         }t          j        t          j        ¦   «         d¦  «        }t	          j        |||¦  «        }|                     |d¦  «         |                      ¦   «         S )Nzllvm.nvvm.membar.glrD   rl   rs   s           r   Úptx_threadfence_devicer}   ž   sh   € à€O€Oˆ8Ø!€EØŒ>€DÝŒ?�2œ;™=œ=¨"Ñ-Ô-€DÝÔ)¨$°°eÑ<Ô<€DØ‡L‚L��rÑÔÐØ×"Ò"Ñ$Ô$Ð$r   c                 ó¤   — |                       t          j        d¦  «        }t          j        t          j        ¦  «        }t	          | |||g¦  «        S )Nl   ÿÿ )Úget_constantr	   Úint32ÚnoneÚptx_syncwarp_mask)r%   r   r&   r'   ÚmaskÚmask_sigs         r   Úptx_syncwarpr…   ©   s@   € à×Ò¥¤¨ZÑ8Ô8€DÝŒz�%œ+Ñ&Ô&€HÝ˜W g¨x¸$¸Ñ@Ô@Ð@r   c                 ó  — d}|j         }t          j        t          j        ¦   «         t          j        d¦  «        f¦  «        }t          j        |||¦  «        }|                     ||¦  «         |                      ¦   «         S )Nzllvm.nvvm.bar.warp.syncé    )	rm   r   rn   ro   ÚIntTyper
   rp   rq   rr   rs   s           r   r‚   r‚   °   sj   € à%€EØŒ>€DÝŒ?�2œ;™=œ=­2¬:°b©>¬>Ð*;Ñ<Ô<€DÝÔ)¨$°°eÑ<Ô<€DØ‡L‚L��tÑÔÐØ×"Ò"Ñ$Ô$Ð$r   c           
      óH  — |\  }}}}}|j         d         }	|	t          j        v r-|                     |t	          j        |	j        ¦  «        ¦  «        }d}
|j        }t	          j        t	          j	        t	          j        d¦  «        t	          j        d¦  «        f¦  «        t	          j        d¦  «        t	          j        d¦  «        t	          j        d¦  «        t	          j        d¦  «        t	          j        d¦  «        f¦  «        }t          j        |||
¦  «        }|	j        dk    r—|                     ||||||f¦  «        }|	t          j        k    rj|                     |d¦  «        }|                     |d¦  «        }|                     |t	          j        ¦   «         ¦  «        }t          j        |||f¦  «        }�nä|                     |t	          j        d¦  «        ¦  «        }|                     ||                      t          j        d¦  «        ¦  «        }|                     |t	          j        d¦  «        ¦  «        }|                     ||||||f¦  «        }|                     ||||||f¦  «        }|                     |d¦  «        }|                     |d¦  «        }|                     |d¦  «        }|                     |t	          j        d¦  «        ¦  «        }|                     |t	          j        d¦  «        ¦  «        }|                     ||                      t          j        d¦  «        ¦  «        }|                     ||¦  «        }|	t          j        k    r'|                     |t	          j        ¦   «         ¦  «        }t          j        |||f¦  «        }|S )a�  
    The NVVM intrinsic for shfl only supports i32, but the cuda intrinsic
    function supports both 32 and 64 bit ints and floats, so for feature parity,
    i64, f32, and f64 are implemented. Floats by way of bitcasting the float to
    an int, then shuffling, then bitcasting back. And 64-bit values by packing
    them into 2 32bit values, shuffling thoose, and then packing back together.
    rA   zllvm.nvvm.shfl.sync.i32r‡   r   r   é@   )r'   r	   Úreal_domainÚbitcastr   rˆ   Úbitwidthrm   rn   ÚLiteralStructTyper
   rp   rq   Úfloat32r;   Ú	FloatTypeÚmake_anonymous_structÚtruncÚlshrr   Úi8ÚzextÚshlÚor_Úfloat64Ú
DoubleType)r%   r   r&   r'   rƒ   ÚmodeÚvalueÚindexÚclampÚ
value_typert   ru   rv   ÚfuncÚretÚrvÚpredÚfvÚvalue1Ú
value_lshrÚvalue2Úret1Úret2Úrv1Úrv2Úrv1_64Úrv2_64Úrv_shls                               r   Úptx_shfl_sync_i32r®   º   sô  € ð  '+Ñ#€Dˆ$��u˜eØ”˜!”€JØ•UÔ&Ð&Ð&Ø—’ ¥r¤z°*Ô2EÑ'FÔ'FÑGÔGˆØ%€EØŒ>€DÝŒ?Ý
Ô�bœj¨™nœn­b¬j¸©m¬mÐ<Ñ=Ô=ÝœZ¨™^œ^­R¬Z¸©^¬^½R¼ZÈ¹^¼^ÝœZ¨™^œ^­R¬Z¸©^¬^ð=ñô €Dõ
 Ô)¨$°°eÑ<Ô<€DØÔ˜bÒ Ð Ø�lŠl˜4 $¨¨e°U¸EÐ!BÑCÔCˆØ�œÒ&Ð&Ø×&Ò& s¨AÑ.Ô.ˆBØ×(Ò(¨¨aÑ0Ô0ˆDØ—’ ¥R¤\¡^¤^Ñ4Ô4ˆBÝÔ/°¸"¸d¸ÑDÔDˆCùà—’˜u¥b¤j°¡n¤nÑ5Ô5ˆØ—\’\ %¨×)=Ò)=½e¼hÈÑ)KÔ)KÑLÔLˆ
Ø—’˜z­2¬:°b©>¬>Ñ:Ô:ˆØ�|Š|˜D 4¨¨v°u¸eÐ"DÑEÔEˆØ�|Š|˜D 4¨¨v°u¸eÐ"DÑEÔEˆØ×#Ò# D¨!Ñ,Ô,ˆØ×#Ò# D¨!Ñ,Ô,ˆØ×$Ò$ T¨1Ñ-Ô-ˆØ—’˜c¥2¤:¨b¡>¤>Ñ2Ô2ˆØ—’˜c¥2¤:¨b¡>¤>Ñ2Ô2ˆØ—’˜V W×%9Ò%9½%¼(ÀBÑ%GÔ%GÑHÔHˆØ�[Š[˜ Ñ(Ô(ˆØ�œÒ&Ð&Ø—’ ¥R¤]¡_¤_Ñ5Ô5ˆBÝÔ+¨G°b¸$°ZÑ@Ô@ˆØ€Jr   c                 óx  — d}|j         }t          j        t          j        t          j        d¦  «        t          j        d¦  «        f¦  «        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        f¦  «        }t          j        |||¦  «        }|                     ||¦  «        S )Nzllvm.nvvm.vote.syncr‡   r   )rm   r   rn   rŽ   rˆ   r
   rp   rq   )r%   r   r&   r'   rt   ru   rv   rŸ   s           r   Úptx_vote_syncr°   ð   s™   € à!€EØŒ>€DÝŒ?�2Ô/µ´¸B±´Ý13´¸A±´ð1@ñ Aô AåœJ r™NœN­B¬J°r©N¬N½B¼JÀq¹M¼MÐJñLô L€Dõ Ô)¨$°°eÑ<Ô<€DØ�<Š<˜˜dÑ#Ô#Ð#r   c                 óà  — |\  }}|j         d         j        }|j         d         t          j        v r(|                     |t          j        |¦  «        ¦  «        }d                     |¦  «        }|j        }t          j	        t          j        d¦  «        t          j        d¦  «        t          j        |¦  «        f¦  «        }	t          j        ||	|¦  «        }
|                     |
||f¦  «        S )Nr   zllvm.nvvm.match.any.sync.i{}r‡   )r'   r�   r	   r‹   rŒ   r   rˆ   rH   rm   rn   r
   rp   rq   ©r%   r   r&   r'   rƒ   r›   Úwidthrt   ru   rv   rŸ   s              r   Úptx_match_any_syncr´   û   sÂ   € ð
 �K€Dˆ%ØŒH�QŒKÔ €EØ
„x�„{•eÔ'Ð'Ð'Ø—’ ¥r¤z°%Ñ'8Ô'8Ñ9Ô9ˆØ*×1Ò1°%Ñ8Ô8€EØŒ>€DÝŒ?�2œ: b™>œ>­B¬J°r©N¬N½B¼JÀuÑ<MÔ<MÐ+NÑOÔO€DÝÔ)¨$°°eÑ<Ô<€DØ�<Š<˜˜t U˜mÑ,Ô,Ð,r   c                 ó,  — |\  }}|j         d         j        }|j         d         t          j        v r(|                     |t          j        |¦  «        ¦  «        }d                     |¦  «        }|j        }t          j	        t          j
        t          j        d¦  «        t          j        d¦  «        f¦  «        t          j        d¦  «        t          j        |¦  «        f¦  «        }	t          j        ||	|¦  «        }
|                     |
||f¦  «        S )Nr   zllvm.nvvm.match.all.sync.i{}r‡   )r'   r�   r	   r‹   rŒ   r   rˆ   rH   rm   rn   rŽ   r
   rp   rq   r²   s              r   Úptx_match_all_syncr¶     sí   € ð
 �K€Dˆ%ØŒH�QŒKÔ €EØ
„x�„{•eÔ'Ð'Ð'Ø—’ ¥r¤z°%Ñ'8Ô'8Ñ9Ô9ˆØ*×1Ò1°%Ñ8Ô8€EØŒ>€DÝŒ?�2Ô/µ´¸B±´Ý13´¸A±´ð1@ñ Aô AåœJ r™NœN­B¬J°uÑ,=Ô,=Ð>ñ@ô @€Dõ Ô)¨$°°eÑ<Ô<€DØ�<Š<˜˜t U˜mÑ,Ô,Ð,r   c                 ó¨   — t          j        t          j        t          j        d¦  «        g ¦  «        ddd¬¦  «        }|                     |g ¦  «        S )Nr‡   zactivemask.b32 $0;ú=rT©Úside_effect©r   Ú	InlineAsmrn   rˆ   rq   ©r%   r   r&   r'   Ú
activemasks        r   Úptx_activemaskr¿     sL   € å”�bœo­b¬j¸©n¬n¸bÑAÔAØ2°DÀdðLñ Lô L€Jà�<Š<˜
 BÑ'Ô'Ð'r   c                 ó¨   — t          j        t          j        t          j        d¦  «        g ¦  «        ddd¬¦  «        }|                     |g ¦  «        S )Nr‡   zmov.u32 $0, %lanemask_lt;r¸   Tr¹   r»   r½   s        r   Úptx_lanemask_ltrÁ   $  sL   € å”�bœo­b¬j¸©n¬n¸bÑAÔAØ9¸4Ø*.ð0ñ 0ô 0€Jð �<Š<˜
 BÑ'Ô'Ð'r   c                 ó8   — |                      |d         ¦  «        S r9   )Úctpopr$   s       r   Úptx_popcrÄ   ,  s   € à�=Š=˜˜aœÑ!Ô!Ð!r   c                 ó   —  |j         |Ž S ©N)Úfmar$   s       r   Úptx_fmarÈ   1  s   € àˆ7Œ;˜ÐÐr   c                 ón   — dddœ}	 ||          S # t           $ r d| › d�}t          j        |¦  «        ‚w xY w)N)Úf32Úf)Úf64Úd)r‡   rŠ   z$Conversion between float16 and floatú unsupported©ÚKeyErrorr   ÚCudaLoweringError©r�   ÚtypemapÚmsgs      r   Úfloat16_float_ty_constraintrÕ   6  s[   € Ø \Ð2Ð2€Gð,Ø�xÔ Ð øÝð ,ð ,ð ,ØK°XÐKÐKÐKˆÝÔ& sÑ+Ô+Ð+ð,øøøs   ‡ �%4c                 ó4  — |j         |j         k    r|S t          |j         ¦  «        \  }}t          j        |                      |¦  «        t          j        d¦  «        g¦  «        }t          j        |d|› d�d|› d�¦  «        }|                     ||g¦  «        S )Né   zcvt.ú.f16 $0, $1;ú=ú,h)r�   rÕ   r   rn   Úget_value_typerˆ   r¼   rq   ©	r%   r   ÚfromtyÚtotyÚvalÚtyÚ
constraintrv   Úasms	            r   Úfloat16_to_float_castrã   @  s”   € à„˜$œ-Ò'Ð'Øˆ
å0°´Ñ?Ô?�N€Bˆ
åŒ?˜7×1Ò1°$Ñ7Ô7½"¼*ÀR¹.¼.Ð9IÑJÔJ€DÝ
Œ,�tÐ4 BÐ4Ð4Ð4Ð6H¸*Ð6HÐ6HÐ6HÑ
IÔ
I€CØ�<Š<˜˜c˜UÑ#Ô#Ð#r   c                 ó2  — |j         |j         k    r|S t          |j         ¦  «        \  }}t          j        t          j        d¦  «        |                      |¦  «        g¦  «        }t          j        |d|› d�d|› �¦  «        }|                     ||g¦  «        S )Nr×   úcvt.rn.f16.ú $0, $1;ú=h,)r�   rÕ   r   rn   rˆ   rÛ   r¼   rq   rÜ   s	            r   Úfloat_to_float16_castrè   L  s‘   € à„˜$œ-Ò'Ð'Øˆ
å0°´ÑAÔA�N€Bˆ
åŒ?�2œ: b™>œ>¨G×,BÒ,BÀ6Ñ,JÔ,JÐ+KÑLÔL€DÝ
Œ,�tÐ7¨2Ð7Ð7Ð7Ð9K¸zÐ9KÐ9KÑ
LÔ
L€CØ�<Š<˜˜c˜UÑ#Ô#Ð#r   c                 ór   — dddddœ}	 ||          S # t           $ r d| › d�}t          j        |¦  «        ‚w xY w)NÚcÚhÚrÚl)é   r×   r‡   rŠ   z"Conversion between float16 and intrÎ   rÏ   rÒ   s      r   Úfloat16_int_constraintrï   X  s_   € Ø˜C S¨cÐ3Ð3€Gð,Ø�xÔ Ð øÝð ,ð ,ð ,ØI°8ÐIÐIÐIˆÝÔ& sÑ+Ô+Ð+ð,øøøs   ‰ ‘%6c                 ó(  — |j         }t          |¦  «        }|j        rdnd}t          j        |                      |¦  «        t          j        d¦  «        g¦  «        }t          j        |d|› |› d�d|› d�¦  «        }	|                     |	|g¦  «        S )Nr_   Úur×   zcvt.rni.rØ   rÙ   rÚ   )	r�   rï   Úsignedr   rn   rÛ   rˆ   r¼   rq   ©
r%   r   rÝ   rÞ   rß   r�   rá   Ú
signednessrv   râ   s
             r   Úfloat16_to_integer_castrõ   b  sœ   € àŒ}€HÝ'¨Ñ1Ô1€JØœÐ,��¨€JåŒ?˜7×1Ò1°$Ñ7Ô7½"¼*ÀR¹.¼.Ð9IÑJÔJ€DÝ
Œ,�tØD *ÐD¨hÐDÐDÐDØ)˜:Ð)Ð)Ð)ñ+ô +€Cð �<Š<˜˜c˜UÑ#Ô#Ð#r   c                 ó&  — |j         }t          |¦  «        }|j        rdnd}t          j        t          j        d¦  «        |                      |¦  «        g¦  «        }t          j        |d|› |› d�d|› �¦  «        }	|                     |	|g¦  «        S )Nr_   rñ   r×   rå   ræ   rç   )	r�   rï   rò   r   rn   rˆ   rÛ   r¼   rq   ró   s
             r   Úinteger_to_float16_castr÷   o  s    € ð Œ€HÝ'¨Ñ1Ô1€JØœÐ.��¨3€JåŒ?�2œ: b™>œ>Ø#×2Ò2°6Ñ:Ô:Ð;ñ=ô =€Då
Œ,�tØC ZÐC°ÐCÐCÐCØ)˜ZÐ)Ð)ñ+ô +€Cð �<Š<˜˜c˜UÑ#Ô#Ð#r   c                 óh   ‡— t          | t          j        t          j        ¦  «        ˆfd„¦   «         }d S )Nc                 óü   •— t          j        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        g¦  «        }t          j        |‰› d�d¦  «        }|                     ||¦  «        S )Nr×   z.f16 $0,$1,$2;ú=h,h,h©r   rn   rˆ   r¼   rq   )r%   r   r&   r'   rv   râ   Úops         €r   Úptx_fp16_binaryz*lower_fp16_binary.<locals>.ptx_fp16_binary  sh   ø€ åŒ�rœz¨"™~œ~Ý "¤
¨2¡¤µ´
¸2±´Ð?ñAô AˆåŒl˜4 BÐ!6Ð!6Ð!6¸ÑAÔAˆØ�|Š|˜C Ñ&Ô&Ð&r   ©Úlowerr	   Úfloat16)Úfnrü   rý   s    ` r   Úlower_fp16_binaryr  ~  sA   ø€ Ý
ˆ2�uŒ}�eœmÑ,Ô,ð'ð 'ð 'ð 'ñ -Ô,ð'ð 'ð 'r   ÚaddÚsubÚmulc                 óÎ   — t          j        t          j        d¦  «        t          j        d¦  «        g¦  «        }t          j        |dd¦  «        }|                     ||¦  «        S )Nr×   zneg.f16 $0, $1;ú=h,hrû   ©r%   r   r&   r'   rv   râ   s         r   Úptx_fp16_hnegr	  ’  óN   € åŒ?�2œ: b™>œ>­B¬J°r©N¬NÐ+;Ñ<Ô<€DÝ
Œ,�tÐ.°Ñ
7Ô
7€CØ�<Š<˜˜TÑ"Ô"Ð"r   c                 ó&   — t          | |||¦  «        S rÆ   )r	  r$   s       r   Úoperator_hnegr  ™  ó   € å˜ '¨3°Ñ5Ô5Ð5r   c                 óÎ   — t          j        t          j        d¦  «        t          j        d¦  «        g¦  «        }t          j        |dd¦  «        }|                     ||¦  «        S )Nr×   zabs.f16 $0, $1;r  rû   r  s         r   Úptx_fp16_habsr  ž  r
  r   c                 ó&   — t          | |||¦  «        S rÆ   )r  r$   s       r   Úoperator_habsr  ¥  r  r   c                 ó  — t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        g}t          j        t          j        d¦  «        |¦  «        }t          j        |dd¦  «        }|                     ||¦  «        S )Nr×   zfma.rn.f16 $0,$1,$2,$3;z=h,h,h,h)r   rˆ   rn   r¼   rq   )r%   r   r&   r'   Úargtysrv   râ   s          r   Úptx_hfmar  ª  sg   € åŒj˜‰nŒn�bœj¨™nœn­b¬j¸©n¬nÐ=€FÝŒ?�2œ: b™>œ>¨6Ñ2Ô2€DÝ
Œ,�tÐ6¸
Ñ
CÔ
C€CØ�<Š<˜˜TÑ"Ô"Ð"r   c                 ó8   — d„ }|                       ||||¦  «        S )Nc                 óB   — t           j                             | |¦  «        S rÆ   )r   Úfp16Úhdiv)r   r   s     r   Úfp16_divzfp16_div_impl.<locals>.fp16_divµ  s   € ÝŒy�~Š~˜a Ñ#Ô#Ð#r   ©Úcompile_internal)r%   r   r&   r'   r  s        r   Úfp16_div_implr  ²  s-   € ð$ð $ð $ð ×#Ò# G¨X°s¸DÑAÔAÐAr   z’{{
          .reg .pred __$$f16_cmp_tmp;
          setp.{op}.f16 __$$f16_cmp_tmp, $1, $2;
          selp.u16 $0, 1, 0, __$$f16_cmp_tmp;
        }}c                 ó   ‡ — ˆ fd„}|S )Nc                 óæ  •— t          j        t          j        d¦  «        t          j        d¦  «        t          j        d¦  «        g¦  «        }t          j        |t                               ‰	¬¦  «        d¦  «        }|                     ||¦  «        }|                      t          j	        d¦  «        }| 
                    |t          j        d¦  «        ¦  «        }|                     d||¦  «        S )Nr×   )rü   rú   r   z!=)r   rn   rˆ   r¼   Ú	_fp16_cmprH   rq   r   r	   Úint16rŒ   Úicmp_unsigned)
r%   r   r&   r'   rv   râ   ÚresultÚzeroÚ
int_resultrü   s
            €r   Úptx_fp16_comparisonz*_gen_fp16_cmp.<locals>.ptx_fp16_comparisonÃ  s²   ø€ ÝŒ�rœz¨"™~œ~µ´
¸2±´ÅÄ
È2ÁÄÐ/OÑPÔPˆÝŒl˜4¥×!1Ò!1°RÐ!1Ñ!8Ô!8¸(ÑCÔCˆØ—’˜c 4Ñ(Ô(ˆà×#Ò#¥E¤K°Ñ3Ô3ˆØ—_’_ V­R¬Z¸©^¬^Ñ<Ô<ˆ
Ø×$Ò$ T¨:°tÑ<Ô<Ð<r   rD   )rü   r%  s   ` r   Ú_gen_fp16_cmpr&  Â  s$   ø€ ð=ð =ð =ð =ð =ð Ðr   ÚeqÚneÚgeÚgtÚleÚltc                 óh   ‡— t          | t          j        t          j        ¦  «        ˆfd„¦   «         }d S )Nc                 ó€   •—  t          ‰¦  «        | |||¦  «        }|                     ||d         |d         ¦  «        S )Nr   r   )r&  Úselect)r%   r   r&   r'   Úchoicerü   s        €r   Úptx_fp16_minmaxz*lower_fp16_minmax.<locals>.ptx_fp16_minmaxÝ  s>   ø€ à"•˜rÑ"Ô" 7¨G°S¸$Ñ?Ô?ˆØ�~Š~˜f d¨1¤g¨t°A¬wÑ7Ô7Ð7r   rþ   )r  rt   rü   r1  s     ` r   Úlower_fp16_minmaxr2  Ü  sA   ø€ Ý
ˆ2�uŒ}�eœmÑ,Ô,ð8ð 8ð 8ð 8ñ -Ô,ð8ð 8ð 8r   ÚmaxÚminÚ
__nv_cbrtfÚ	__nv_cbrtc                 óæ   — |j         }t          |         }|                      |¦  «        }|j        }t	          j        ||g¦  «        }t          j        |||¦  «        }	|                     |	|¦  «        S rÆ   )	Úreturn_typeÚ
cbrt_funcsrÛ   rm   r   rn   r
   rp   rq   )
r%   r   r&   r'   rà   rt   Úftyru   rv   r  s
             r   Úptx_cbrtr;  ñ  si   € ð 
Œ€BÝ�rŒN€EØ
×
 Ò
  Ñ
$Ô
$€CØŒ>€DÝŒ?˜3  Ñ&Ô&€DÝ	Ô	'¨¨d°EÑ	:Ô	:€BØ�<Š<˜˜DÑ!Ô!Ð!r   c           	      óÔ   — t          j        |j        t          j        t          j        d¦  «        t          j        d¦  «        f¦  «        d¦  «        }|                     ||¦  «        S )Nr‡   Ú	__nv_brev©r
   rp   rm   r   rn   rˆ   rq   ©r%   r   r&   r'   r  s        r   Úptx_brev_u4r@  ý  sV   € õ
 
Ô	'ØŒÝ
Œ�œ
 2™œ­¬°B©¬Ð(9Ñ:Ô:Øñ
ô 
€Bð �<Š<˜˜DÑ!Ô!Ð!r   c           	      óÔ   — t          j        |j        t          j        t          j        d¦  «        t          j        d¦  «        f¦  «        d¦  «        }|                     ||¦  «        S )NrŠ   Ú__nv_brevllr>  r?  s        r   Úptx_brev_u8rC  	  sV   € õ
 
Ô	'ØŒÝ
Œ�œ
 2™œ­¬°B©¬Ð(9Ñ:Ô:Øñ
ô 
€Bð �<Š<˜˜DÑ!Ô!Ð!r   c                 óv   — |                      |d         |                      t          j        d¦  «        ¦  «        S r9   )Úctlzr   r	   Úbooleanr$   s       r   Úptx_clzrG    s4   € à�<Š<ØˆQŒØ×Ò�Uœ]¨AÑ.Ô.ñ0ô 0ð 0r   c           	      óÔ   — t          j        |j        t          j        t          j        d¦  «        t          j        d¦  «        f¦  «        d¦  «        }|                     ||¦  «        S )Nr‡   Ú__nv_ffsr>  r?  s        r   Ú
ptx_ffs_32rJ    sV   € õ 
Ô	'ØŒÝ
Œ�œ
 2™œ­¬°B©¬Ð(9Ñ:Ô:Øñ
ô 
€Bð �<Š<˜˜DÑ!Ô!Ð!r   c           	      óÔ   — t          j        |j        t          j        t          j        d¦  «        t          j        d¦  «        f¦  «        d¦  «        }|                     ||¦  «        S )Nr‡   rŠ   Ú
__nv_ffsllr>  r?  s        r   Ú
ptx_ffs_64rM  &  sV   € õ 
Ô	'ØŒÝ
Œ�œ
 2™œ­¬°B©¬Ð(9Ñ:Ô:Øñ
ô 
€Bð �<Š<˜˜DÑ!Ô!Ð!r   c                 ó<   — |\  }}}|                      |||¦  «        S rÆ   )r/  )r%   r   r&   r'   ÚtestÚaÚbs          r   Úptx_selprR  0  s#   € à�J€Dˆ!ˆQØ�>Š>˜$  1Ñ%Ô%Ð%r   c           	      óô   — t          j        |j        t          j        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         f¦  «        d¦  «        }|                     ||¦  «        S )NÚ
__nv_fmaxf©r
   rp   rm   r   rn   r�   rq   r?  s        r   Ú
ptx_max_f4rV  6  ó`   € å	Ô	'ØŒÝ
ŒÝŒL‰NŒNÝŒ\‰^Œ^�Rœ\™^œ^Ð,ñ	.ô 	.ð 	ñ
ô 
€Bð �<Š<˜˜DÑ!Ô!Ð!r   c           
      ó¼  — t          j        |j        t          j        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         f¦  «        d¦  «        }|                     ||                      ||d         |j        d         t          j
        ¦  «        |                      ||d         |j        d         t          j
        ¦  «        g¦  «        S )NÚ	__nv_fmaxr   r   ©r
   rp   rm   r   rn   r™   rq   Úcastr'   r	   Údoubler?  s        r   Ú
ptx_max_f8r]  A  ó­   € õ 
Ô	'ØŒÝ
ŒÝŒM‰OŒOÝŒ]‰_Œ_�bœm™oœoÐ.ñ	0ô 	0ð 	ñ
ô 
€Bð �<Š<˜Ø�Š�W˜d 1œg s¤x°¤{µE´LÑAÔAØ�Š�W˜d 1œg s¤x°¤{µE´LÑAÔAðñ ô ð r   c           	      óô   — t          j        |j        t          j        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         f¦  «        d¦  «        }|                     ||¦  «        S )NÚ
__nv_fminfrU  r?  s        r   Ú
ptx_min_f4ra  R  rW  r   c           
      ó¼  — t          j        |j        t          j        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         f¦  «        d¦  «        }|                     ||                      ||d         |j        d         t          j
        ¦  «        |                      ||d         |j        d         t          j
        ¦  «        g¦  «        S )NÚ	__nv_fminr   r   rZ  r?  s        r   Ú
ptx_min_f8rd  ]  r^  r   c           	      ó6  — t          j        |j        t          j        t          j        d¦  «        t          j        ¦   «         f¦  «        d¦  «        }|                     ||                      ||d         |j	        d         t          j        ¦  «        g¦  «        S )NrŠ   Ú__nv_llrintr   )r
   rp   rm   r   rn   rˆ   r™   rq   r[  r'   r	   r\  r?  s        r   Ú	ptx_roundrg  n  s†   € õ 
Ô	'ØŒÝ
ŒÝŒJ�r‰NŒNÝŒ]‰_Œ_Ðñ	 ô 	 ð 	ñ
ô 
€Bð �<Š<˜Ø�Š�W˜d 1œg s¤x°¤{µE´LÑAÔAðñ ô ð r   c                 ó8   — d„ }|                       ||||¦  «        S )Nc                 ó�  — t          j        | ¦  «        st          j        | ¦  «        r| S |dk    r7|dk    rd|dz
  z  }d}nd|z  }d}| |z  |z  }t          j        |¦  «        r| S nd| z  }| |z  }t          |¦  «        }t          j        ||z
  ¦  «        dk    rdt          |dz  ¦  «        z  }|dk    r	||z  |z  }n||z  }|S )Nr   é   g      $@g’ÕMÏð€Dg      ð?g      à?g       @)ÚmathÚisinfÚisnanÚroundÚfabs)r   ÚndigitsÚpow1Úpow2r   r   s         r   Úround_ndigitsz$round_to_impl.<locals>.round_ndigitsƒ  sû   € ÝŒ:�a‰=Œ=ð 	�DœJ q™MœMð 	ØˆHà�aŠ<ˆ<Ø˜Š|ˆ|ð  ¨"¡Ñ-�Ø��à˜w‘�Ø�Ø�T‘˜TÑ!ˆAÝŒz˜!‰}Œ}ð Ø�ðð ˜W˜HÑ%ˆDØ�D‘ˆAå�!‰HŒHˆÝŒI�a˜!‘eÑÔ Ò#Ð#à•e˜A ™G‘n”nÑ$ˆAà�aŠ<ˆ<Ø�T‘˜TÑ!ˆAˆAà�‰IˆAàˆr   r  )r%   r   r&   r'   rs  s        r   Úround_to_implrt  €  s.   € ðð ð ðB ×#Ò# G¨]¸CÀÑHÔHÐHr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óz   •— |j         \  }|                      |‰¦  «        }|                     ||d         ¦  «        S r9   )r'   r   Úfmul)r%   r   r&   r'   ÚargtyÚfactorÚconsts         €r   Úimplzgen_deg_rad.<locals>.impl¨  s9   ø€ Ø”‰ˆØ×%Ò% e¨UÑ3Ô3ˆØ�|Š|˜F D¨¤GÑ,Ô,Ð,r   rD   )rz  r{  s   ` r   Úgen_deg_radr|  §  s#   ø€ ð-ð -ð -ð -ð -ð €Kr   g     €f@c                 ó   ‡ ‡— |t           j        v rt          j        |d¬¦  «        }|g}n$t          j        ‰|t          |¦  «        ¬¦  «        }ˆˆ fd„t          ||¦  «        D ¦   «         }|j        }||k    rt          d|›d|›�¦  «        ‚|j	        t          |¦  «        k    r&t          d|j	        t          |¦  «        fz  ¦  «        ‚||fS )z4
    Convert integer indices into tuple of intp
    r   )rP   Úcount)r~  c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S rD   )r[  r	   Úintp)r^   ÚtÚir   r%   s      €€r   r`   z&_normalize_indices.<locals>.<listcomp>À  sA   ø€ ð 0ð 0ð 0Ù�1�að �|Š|˜G Q¨­5¬:Ñ6Ô6ð 0ð 0ð 0r   zexpect z	 but got z#indexing %d-D array with %d-D index)
r	   Úinteger_domainÚUniTupler
   Úunpack_tupleÚlenÚziprP   Ú	TypeErrorÚndim)r%   r   ÚindtyÚindsÚarytyÚvaltyÚindicesrP   s   ``      r   Ú_normalize_indicesr�  ·  sû   øø€ ð •Ô$Ð$Ð$Ý” U°!Ð4Ñ4Ô4ˆØ�&ˆˆåÔ& w°½CÀ¹J¼JÐGÑGÔGˆð0ð 0ð 0ð 0ð 0Ý˜u gÑ.Ô.ð0ñ 0ô 0€Gð ŒK€EØ�‚~€~Ýˆi°%°%°%¸¸Ð?Ñ@Ô@Ð@à„z•S˜‘Z”ZÒÐÝÐ=Øœ¥S¨¡Z¤ZÐ0ñ1ñ 2ô 2ð 	2ð �'ˆ>Ðr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óô   •— |j         \  }}}|\  }}}	|j        }
t          | |||||¦  «        \  }} |                      |¦  «        | ||¦  «        }t	          j        | ||||d¬¦  «        } ‰| ||
||	¦  «        S )NT©Ú
wraparound)r'   rP   r�  Ú
make_arrayr
   Úget_item_pointer)r%   r   r&   r'   rŒ  rŠ  r�  Úaryr‹  rß   rP   rŽ  ÚlaryÚptrÚdispatch_fns                 €r   Úimpz_atomic_dispatcher.<locals>.impÏ  s¤   ø€ à!œhÑˆˆu�eØ‰ˆˆT�3Ø”ˆå+¨G°W¸eÀTØ,1°5ñ:ô :‰ˆˆwð )ˆw×!Ò! %Ñ(Ô(¨°'¸3Ñ?Ô?ˆÝÔ& w°¸ÀÀgØ26ð8ñ 8ô 8ˆð ˆ{˜7 G¨U°C¸Ñ=Ô=Ð=r   rD   )r™  rš  s   ` r   Ú_atomic_dispatcherr›  Î  s#   ø€ ð>ð >ð >ð >ð >ð €Jr   c                 ó6  — |t           j        k    r1|j        }|                     t	          j        |¦  «        ||f¦  «        S |t           j        k    r1|j        }|                     t	          j        |¦  «        ||f¦  «        S |                     d||d¦  «        S )Nr  Ú	monotonic)	r	   r�   rm   rq   r   Údeclare_atomic_add_float32r˜   Údeclare_atomic_add_float64Ú
atomic_rmw©r%   r   rP   r˜  rß   ru   s         r   Úptx_atomic_add_tupler¢  à  óœ   € ð
 •”ÒÐØŒ~ˆØ�|Š|�IÔ@ÀÑFÔFØ  #˜Jñ(ô (ð 	(à	•%”-Ò	Ð	ØŒ~ˆØ�|Š|�IÔ@ÀÑFÔFØ  #˜Jñ(ô (ð 	(ð ×!Ò! %¨¨c°;Ñ?Ô?Ð?r   c                 ó6  — |t           j        k    r1|j        }|                     t	          j        |¦  «        ||f¦  «        S |t           j        k    r1|j        }|                     t	          j        |¦  «        ||f¦  «        S |                     d||d¦  «        S )Nr  r�  )	r	   r�   rm   rq   r   Údeclare_atomic_sub_float32r˜   Údeclare_atomic_sub_float64r   r¡  s         r   Úptx_atomic_subr§  ñ  r£  r   c                 óÜ   — |t           j        j        v rG|j        }|j        }t          t          d|› �¦  «        }|                      ||¦  «        ||f¦  «        S t          d|› d�¦  «        ‚)NÚdeclare_atomic_inc_intzUnimplemented atomic inc with ú array©	r   ÚcudadeclÚunsigned_int_numba_typesr�   rm   Úgetattrr   rq   rˆ  ©r%   r   rP   r˜  rß   Úbwru   r  s           r   Úptx_atomic_incr±    ót   € ð
 •”Ô6Ð6Ð6ØŒ^ˆØŒ~ˆÝ•YÐ =¸Ð =Ð =Ñ>Ô>ˆØ�|Š|˜B˜B˜t™HœH s¨C jÑ1Ô1Ð1åÐF¸ÐFÐFÐFÑGÔGÐGr   c                 óÜ   — |t           j        j        v rG|j        }|j        }t          t          d|› �¦  «        }|                      ||¦  «        ||f¦  «        S t          d|› d�¦  «        ‚)NÚdeclare_atomic_dec_intzUnimplemented atomic dec with rª  r«  r¯  s           r   Úptx_atomic_decrµ    r²  r   c                 óÖ   ‡— t           ˆfd„¦   «         }t          j        t          j        t          j        fD ]1} t          | t          j        |t          j        ¦  «        |¦  «         Œ2d S )Nc                 ó†   •— |t           j        j        v r|                     ‰||d¦  «        S t	          d‰› d|› d�¦  «        ‚)Nr�  zUnimplemented atomic z with rª  ©r   r¬  Úinteger_numba_typesr   rˆ  )r%   r   rP   r˜  rß   rü   s        €r   Úimpl_ptx_atomicz+ptx_atomic_bitwise.<locals>.impl_ptx_atomic  sO   ø€ à•T”]Ô6Ð7Ð7Ø×%Ò% b¨#¨s°KÑ@Ô@Ð@åÐK°BÐKÐK¸eÐKÐKÐKÑLÔLÐLr   )r›  r	   r€  r„  ÚTuplerÿ   ÚArrayÚAny)Ústubrü   rº  rà   s    `  r   Úptx_atomic_bitwiser¿    s}   ø€ ÝðMð Mð Mð Mñ ÔðMõ Œz�5œ>­5¬;Ð7ð Að AˆØ/�ˆd•E”K ¥U¤YÑ/Ô/°Ñ@Ô@Ð@Ð@ðAð Ar   ÚandÚorÚxorc                 ó~   — |t           j        j        v r|                     d||d¦  «        S t	          d|› d�¦  «        ‚)NÚxchgr�  zUnimplemented atomic exch with rª  r¸  )r%   r   rP   r˜  rß   s        r   Úptx_atomic_exchrÅ  /  sH   € ð
 •”Ô2Ð3Ð3Ø×!Ò! &¨#¨s°KÑ@Ô@Ð@åÐG¸%ÐGÐGÐGÑHÔHÐHr   c                 óè  — |j         }|t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        t          j	        fv r| 
                    d||d¬¦  «        S |t          j        t          j        fv r| 
                    d||d¬¦  «        S t          d|z  ¦  «        ‚©Nr3  r�  ©ÚorderingÚumaxz&Unimplemented atomic max with %s array)rm   r	   r˜   rq   r   Údeclare_atomic_max_float64r�   Údeclare_atomic_max_float32r€   Úint64r   Úuint32Úuint64rˆ  r¡  s         r   Úptx_atomic_maxrÐ  :  óï   € ð
 Œ>€DØ•”ÒÐØ�|Š|�IÔ@ÀÑFÔFØ  #˜Jñ(ô (ð 	(à	•%”-Ò	Ð	Ø�|Š|�IÔ@ÀÑFÔFØ  #˜Jñ(ô (ð 	(à	•5”;¥¤Ð,Ð	,Ð	,Ø×!Ò! %¨¨c¸KÐ!ÑHÔHÐHØ	•5”<¥¤Ð.Ð	.Ð	.Ø×!Ò! &¨#¨s¸[Ð!ÑIÔIÐIåÐ@À5ÑHÑIÔIÐIr   c                 óè  — |j         }|t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        t          j	        fv r| 
                    d||d¬¦  «        S |t          j        t          j        fv r| 
                    d||d¬¦  «        S t          d|z  ¦  «        ‚©Nr4  r�  rÈ  Úuminz&Unimplemented atomic min with %s array)rm   r	   r˜   rq   r   Údeclare_atomic_min_float64r�   Údeclare_atomic_min_float32r€   rÍ  r   rÎ  rÏ  rˆ  r¡  s         r   Úptx_atomic_minr×  N  rÑ  r   c                 óè  — |j         }|t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        t          j	        fv r| 
                    d||d¬¦  «        S |t          j        t          j        fv r| 
                    d||d¬¦  «        S t          d|z  ¦  «        ‚rÇ  )rm   r	   r˜   rq   r   Údeclare_atomic_nanmax_float64r�   Údeclare_atomic_nanmax_float32r€   rÍ  r   rÎ  rÏ  rˆ  r¡  s         r   Úptx_atomic_nanmaxrÛ  b  óï   € ð
 Œ>€DØ•”ÒÐØ�|Š|�IÔCÀDÑIÔIØ  #˜Jñ(ô (ð 	(à	•%”-Ò	Ð	Ø�|Š|�IÔCÀDÑIÔIØ  #˜Jñ(ô (ð 	(à	•5”;¥¤Ð,Ð	,Ð	,Ø×!Ò! %¨¨c¸KÐ!ÑHÔHÐHØ	•5”<¥¤Ð.Ð	.Ð	.Ø×!Ò! &¨#¨s¸[Ð!ÑIÔIÐIåÐ@À5ÑHÑIÔIÐIr   c                 óè  — |j         }|t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        k    r*|                     t	          j        |¦  «        ||f¦  «        S |t          j        t          j	        fv r| 
                    d||d¬¦  «        S |t          j        t          j        fv r| 
                    d||d¬¦  «        S t          d|z  ¦  «        ‚rÓ  )rm   r	   r˜   rq   r   Údeclare_atomic_nanmin_float64r�   Údeclare_atomic_nanmin_float32r€   rÍ  r   rÎ  rÏ  rˆ  r¡  s         r   Úptx_atomic_nanminrà  v  rÜ  r   c                 ó  — |                      |j        d         t          j        |j        d         |j        d         ¦  «        }|d         |                      t          j        d¦  «        |d         |d         f}t          | |||¦  «        S )Nr   r   rA   )r8  r'   r	   r€  r   Úptx_atomic_casr$   s       r   Úptx_atomic_compare_and_swaprã  Š  sm   € à
�/Š/˜#œ( 1œ+¥u¤z°3´8¸A´;ÀÄÈÄÑ
LÔ
L€CØ�ŒG�W×)Ò)­%¬*°aÑ8Ô8¸$¸q¼'À4ÈÄ7ÐK€DÝ˜' 7¨C°Ñ6Ô6Ð6r   c                 ó€  — |j         \  }}}}|\  }}	}
}t          | |||	||¦  «        \  }} |                      |¦  «        | ||¦  «        }t          j        | ||||d¬¦  «        }|j        t          j        j        v r,|j	        }|j        j
        }t          j        |||||
|¦  «        S t          d|j        z  ¦  «        ‚)NTr’  z&Unimplemented atomic cas with %s array)r'   r�  r”  r
   r•  rP   r   r¬  r¹  rm   r�   r   Úatomic_cmpxchgrˆ  )r%   r   r&   r'   rŒ  rŠ  Úoldtyr�  r–  r‹  Úoldrß   rŽ  r—  r˜  ru   r�   s                    r   râ  râ  ‘  sß   € ð "%¤Ñ€Eˆ5�%˜ØÑ€Cˆˆs�Cå'¨°¸%ÀÀuØ(-ñ/ô /�N€Eˆ7ð %ˆ7×Ò˜eÑ$Ô$ W¨g°sÑ;Ô;€DÝ
Ô
" 7¨G°U¸DÀ'Ø.2ð4ñ 4ô 4€Cð „{•t”}Ô8Ð9Ð9ØŒ~ˆØ”;Ô'ˆÝÔ'¨°°xÀÀcÈ3ÑOÔOÐOåÐ@À5Ä;ÑNÑOÔOÐOr   c                 óâ   — t          j        t          j        t          j        ¦   «         t          j        d¦  «        g¦  «        ddd¬¦  «        }|d         }|                     ||g¦  «         d S )Nr‡   znanosleep.u32 $0;rì   Tr¹   r   )r   r¼   rn   ro   rˆ   rq   )r%   r   r&   r'   Ú	nanosleepÚnss         r   Úptx_nanosleeprë  ©  sf   € å”�Rœ_­R¬[©]¬]½R¼ZÈ¹^¼^Ð<LÑMÔMØ0°#À4ðIñ Iô I€Ià	ˆaŒ€BØ‡L‚L�˜R˜DÑ!Ô!Ð!Ð!Ð!r   Fc           
      ó  ‡ — t          t          j        |d¦  «        }|dk    o|ot          |¦  «        dk    }|dk    r|st	          d¦  «        ‚‰ j        |         }	t          |t          j        t          j	        f¦  «        p)t          |	t          j        ¦  «        p|t          j        k    }
|t          j        vr|
st          d|z  ¦  «        ‚‰                      |¦  «        }t!          j        ||¦  «        }|t$          j        k    rt)          j        |||¬¦  «        }n»|j        }t)          j        ||||¦  «        }‰                      |¦  «        }d|dz
                       ¦   «         z  |_        |rd|_        n$t!          j        |t           j        ¦  «        |_        |                     |t!          j         t!          j!        d¦  «        ¦  «        d¦  «        }tE          j#        t%          j$        ¦   «         j%        ¦  «        }‰                      |¦  «        }| &                    |¦  «        }|}g }tO          tQ          |¦  «        ¦  «        D ]\  }}| )                    |¦  «         ||z  }Œ d	„ tQ          |¦  «        D ¦   «         }ˆ fd
„|D ¦   «         }|r±t!          j*        t!          j+        t!          j!        d¦  «        g ¦  «        ddd¬¦  «        }| ,                    | -                    |g ¦  «        t!          j!        d¦  «        ¦  «        }‰  .                    t          j/        |¦  «        }| 0                    ||¦  «        g}nˆ fd„|D ¦   «         }t          |¦  «        }t          j1        ||d¬¦  «        } ‰  2                    |¦  «        ‰ |¦  «        }‰  3                    || 4                    ||j5        j6        ¦  «        ||‰  .                    t          j/        |¦  «        d ¬¦  «         | 7                    ¦   «         S )Nr   r   zarray length <= 0zunsupported type: %srI   Úexternalrî   Úgenericc                 ó   — g | ]}|‘ŒS rD   rD   r]   s     r   r`   z"_generic_array.<locals>.<listcomp>õ  s   € Ð-Ð-Ð-�QˆqÐ-Ð-Ð-r   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S rD   ©r   r	   r€  ©r^   r_   r%   s     €r   r`   z"_generic_array.<locals>.<listcomp>ö  s+   ø€ ÐEÐEÐE¸�×$Ò$¥U¤Z°Ñ3Ô3ÐEÐEÐEr   r‡   zmov.u32 $0, %dynamic_smem_size;r¸   Tr¹   rŠ   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S rD   rñ  rò  s     €r   r`   z"_generic_array.<locals>.<listcomp>  s+   ø€ ÐEÐEÐE¸!�'×&Ò&¥u¤z°1Ñ5Ô5ÐEÐEÐEr   ÚC)rP   r‰  Úlayout)ÚdatarO   ÚstridesÚitemsizeÚmeminfo)8r   Úoperatorr  r†  Ú
ValueErrorÚdata_model_managerÚ
isinstancer	   ÚRecordÚBooleanr   ÚStructModelr   Únumber_domainrˆ  Úget_data_typer   Ú	ArrayTyper   rf   r
   Úalloca_oncerm   Úadd_global_variableÚget_abi_sizeofÚ
bit_lengthÚalignÚlinkageÚConstantÚ	UndefinedÚinitializerÚaddrspacecastÚPointerTyperˆ   ÚllÚcreate_target_dataÚNVVMÚdata_layoutÚget_abi_sizeÚ	enumerateÚreversedÚappendr¼   rn   r•   rq   r   r€  Úudivr¼  r”  Úpopulate_arrayrŒ   rö  ÚtypeÚ	_getvalue) r%   r   rO   rP   rQ   rR   rS   Ú	elemcountÚdynamic_smemÚ
data_modelÚother_supported_typeÚlldtypeÚlarytyÚdataptrru   Úgvmemr  Ú
targetdatarø  Ú
laststrideÚrstridesr‚  Úlastsizer÷  ÚkstridesÚget_dynshared_sizeÚdynsmem_sizeÚ	kitemsizeÚkshaper‰  rŒ  r–  s    `                               r   rU   rU   ´  së  ø€ å•x”| U¨AÑ.Ô.€Ið  ’>ÐF lÐFµs¸5±z´zÀQ²€LØ�A‚~€~˜l€~ÝÐ,Ñ-Ô-Ð-ð Ô+¨EÔ2€Jå�5�5œ<­¬Ð7Ñ8Ô8ð 	"Ý�j¥&Ô"4Ñ5Ô5ð	"à•E”MÒ!ð ð
 •EÔ'Ð'Ð'Ð0DÐ'ÝÐ.°Ñ6Ñ7Ô7Ð7à×#Ò# EÑ*Ô*€GÝŒ\˜' 9Ñ-Ô-€Fà•DÔ(Ò(Ð(õ Ô% g¨v¸KÐHÑHÔHˆˆàŒ~ˆõ Ô+¨D°&¸+Ø,5ñ7ô 7ˆð ×&Ò& wÑ/Ô/ˆð ˜E A™I×2Ò2Ñ4Ô4Ñ4ˆŒàð 		BØ&ˆEŒMˆMõ !#¤¨FµB´LÑ AÔ AˆEÔð ×'Ò'¨­r¬~½b¼jÈ¹m¼mÑ/LÔ/LØ(1ñ3ô 3ˆõ Ô&¥t¤y¡{¤{Ô'>Ñ?Ô?€JØ×#Ò# EÑ*Ô*€GØ×#Ò# JÑ/Ô/€Hð €JØ€HÝ ¥¨%¡¤Ñ1Ô1ð ð ‰ˆˆ8Ø�Š˜
Ñ#Ô#Ð#Ø�hÑˆ
ˆ
Ø-Ð-�( 8Ñ,Ô,Ð-Ñ-Ô-€GØEÐEÐEÐE¸WÐEÑEÔE€Hð ð Fõ
  œ\­"¬/½"¼*ÀR¹.¼.È"Ñ*MÔ*MØ*KØ*.¸DðBñ Bô BÐð —|’| G§L¢LÐ1CÀRÑ$HÔ$HÝ$&¤J¨r¡N¤Nñ4ô 4ˆð ×(Ò(­¬°XÑ>Ô>ˆ	Ø—,’,˜|¨YÑ7Ô7Ð8ˆˆàEÐEÐEÐE¸uÐEÑEÔEˆõ ˆu‰:Œ:€DÝŒK˜e¨$°sÐ;Ñ;Ô;€EØ
#ˆ'×
Ò
˜UÑ
#Ô
# G¨WÑ
5Ô
5€Cà×Ò˜3Ø '§¢°¸¼¼Ñ GÔ GØ!'Ø#+Ø$+×$8Ò$8½¼ÀXÑ$NÔ$NØ#'ð ñ )ô )ð )ð �=Š=‰?Œ?Ðr   c                 ó*   — |                       ¦   «         S rÆ   )rr   )r%   r   rà   Úpyvals       r   Úcuda_dispatcher_constr.    s   € à×"Ò"Ñ$Ô$Ð$r   )F)ÒÚ	functoolsr   rú  rk  Úllvmliter   Úllvmlite.bindingÚbindingr  Únumba.core.imputilsr   r   Únumba.core.typing.npydeclr   Únumba.core.datamodelr   Ú
numba.corer	   r
   Únumba.npr   Únumba.np.npyimplr   Úcudadrvr   Únumbar   Ú
numba.cudar   r   r   Únumba.cuda.typesr   r   Úregistryrÿ   Úlower_getattrÚ
lower_attrÚlower_constantr   ÚModuler(   r,   r0   r4   r7   r<   r?   rB   rz  Ú
array_liker¼  rE   rG   rK   ÚsharedÚarrayÚIntegerLiteralr½  rY   r»  r„  rc   Úlocalrg   rj   Úthreadfence_blockrx   Úthreadfence_systemr{   Úthreadfencer}   Úsyncwarpr…   Úi4r‚   Úshfl_sync_intrinsicr”   Úf4Úf8r®   Úvote_sync_intrinsicrF  r°   Úmatch_any_syncr´   Úmatch_all_syncr¶   r¾   r¿   Úlanemask_ltrÁ   ÚpopcrÄ   rÇ   rÈ   rÕ   r   ÚFloatrã   rè   rï   ÚIntegerrõ   r÷   r  r  Úhaddr  ÚiaddÚhsubr  ÚisubÚhmulr  ÚimulÚhnegr	  Únegr  Úhabsr  Úabsr  Úhfmar  ÚtruedivÚitruedivr  r  r&  Úheqr'  Úhner(  Úhger)  Úhgtr*  Úhler+  Úhltr,  r2  ÚhmaxÚhminr�   r˜   r9  Úcbrtr;  ÚbrevÚu4r@  Úu8rC  ÚclzrG  ÚffsrJ  rM  ÚselprR  r3  rV  r]  r4  ra  rd  rn  rg  rt  r|  ÚpiÚ_deg2radÚ_rad2degÚradiansÚdegreesr�  r›  Úatomicr€  r¢  r§  Úincr±  Údecrµ  r¿  Úand_r—   rÂ  ÚexchrÅ  rÐ  r×  ÚnanmaxrÛ  Únanminrà  Úcompare_and_swaprã  Úcasrâ  ré  rÎ  rë  rU   r.  Ú
get_ufuncsrD   r   r   ú<module>r�     s›  ðØ Ð Ð Ð Ð Ð Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1àˆ8‰:Œ:€ØŒ€ØÔ#€
ØÔ(€ð3ð 3ð 3ð €ˆLˆEŒL˜ÑÔ Ñ,Ô,ð+ð +ñ -Ô,ð+ð €ˆLˆEŒL˜ÑÔ 
Ñ+Ô+ð,ð ,ñ ,Ô+ð,ð €ˆLˆEŒL˜ÑÔ 
Ñ+Ô+ð-ð -ñ ,Ô+ð-ð €ˆLˆEŒL˜ÑÔ 	Ñ*Ô*ð.ð .ñ +Ô*ð.ð €ˆLˆEŒL˜ÑÔ Ñ)Ô)ð2ð 2ñ *Ô)ð2ð €ˆD�#ÑÔð*ð *ñ Ôð*ð €ˆD�#ÑÔð*ð *ñ Ôð*ð €ˆD�#ÑÔð*ð *ñ Ôð*ð €€t„zÔ˜eœkÑ*Ô*ðð ñ +Ô*ðð €ð3ð 3ð 3ð €€t„{Ô˜%Ô.°´	Ñ:Ô:ð-ð -ñ ;Ô:ð-ð €€t„{Ô˜%œ+ u¤yÑ1Ô1Ø€€t„{Ô˜%œ.¨%¬)Ñ4Ô4ð-ð -ñ 5Ô4ñ 2Ô1ð-ð €€t„zÔ˜Ô-¨u¬yÑ9Ô9ð.ð .ñ :Ô9ð.ð €€t„zÔ˜œ e¤iÑ0Ô0Ø€€t„zÔ˜œ¨¬Ñ3Ô3ð.ð .ñ 4Ô3ñ 1Ô0ð.ð €€uÔÑÔð%ð %ñ  Ôð%ð €€uÔÑ Ô ð%ð %ñ !Ô ð%ð €€uÔÑÔð%ð %ñ Ôð%ð €€u„~ÑÔðAð Añ ÔðAð €€u„~�u”xÑ Ô ð%ð %ñ !Ô ð%ð €€uÔ  %¤(¨E¬H°e´hÀÄØ„xñô à€€uÔ  %¤(¨E¬H°e´hÀÄØ„xñô à€€uÔ  %¤(¨E¬H°e´hÀÄØ„xñô à€€uÔ  %¤(¨E¬H°e´hÀÄØ„xñô ð+ð +ñô ñô ñô ñô ð+ð\ €€uÔ  %¤(¨E¬H°e´mÑDÔDð$ð $ñ EÔDð$ð €€uÔ˜UœX u¤xÑ0Ô0Ø€€uÔ˜UœX u¤xÑ0Ô0Ø€€uÔ˜UœX u¤xÑ0Ô0Ø€€uÔ˜UœX u¤xÑ0Ô0ð	-ð 	-ñ 1Ô0ñ 1Ô0ñ 1Ô0ñ 1Ô0ð	-ð €€uÔ˜UœX u¤xÑ0Ô0Ø€€uÔ˜UœX u¤xÑ0Ô0Ø€€uÔ˜UœX u¤xÑ0Ô0Ø€€uÔ˜UœX u¤xÑ0Ô0ð-ð -ñ 1Ô0ñ 1Ô0ñ 1Ô0ñ 1Ô0ð-ð €€uÔÑÔð(ð (ñ Ôð(ð €€uÔÑÔð(ð (ñ Ôð(ð €€u„z�5”9ÑÔð"ð "ñ Ôð"ð €€u„y�%”)˜UœY¨¬	Ñ2Ô2ðð ñ 3Ô2ðð,ð ,ð ,ð €ˆEŒM˜5œ;Ñ'Ô'ð$ð $ñ (Ô'ð$ð €ˆEŒK˜œÑ'Ô'ð$ð $ñ (Ô'ð$ð,ð ,ð ,ð €ˆEŒM˜5œ=Ñ)Ô)ð	$ð 	$ñ *Ô)ð	$ð €ˆEŒM˜5œ=Ñ)Ô)Ø€ˆEÔ  %¤-Ñ0Ô0ð
$ð 
$ñ 1Ô0ñ *Ô)ð
$ð'ð 'ð 'ð Ð �%”*”/ 5Ñ )Ô )Ð )Ø Ð �(”, Ñ &Ô &Ð &Ø Ð �(”- Ñ 'Ô 'Ð 'Ø Ð �%”*”/ 5Ñ )Ô )Ð )Ø Ð �(”, Ñ &Ô &Ð &Ø Ð �(”- Ñ 'Ô 'Ð 'Ø Ð �%”*”/ 5Ñ )Ô )Ð )Ø Ð �(”, Ñ &Ô &Ð &Ø Ð �(”- Ñ 'Ô 'Ð 'ð €€u„z„˜œÑ&Ô&ð#ð #ñ 'Ô&ð#ð €€x„|�U”]Ñ#Ô#ð6ð 6ñ $Ô#ð6ð €€u„z„˜œÑ&Ô&ð#ð #ñ 'Ô&ð#ð €€sˆEŒMÑÔð6ð 6ñ Ôð6ð €€u„z„˜œ u¤}°e´mÑDÔDð#ð #ñ EÔDð#ð €€xÔ˜œ¨¬Ñ6Ô6Ø€€xÔ˜%œ-¨¬Ñ7Ô7ðBð Bñ 8Ô7ñ 7Ô6ðBð€	ð	ð 	ð 	ð 4€€€e„j„n�e”m U¤]Ñ 3Ô 3°M°MÀ$Ñ4GÔ4GÑ HÔ HÐ HØ 0€€€h„k�5”= %¤-Ñ 0Ô 0°°¸tÑ1DÔ1DÑ EÔ EÐ EØ 3€€€e„j„n�e”m U¤]Ñ 3Ô 3°M°MÀ$Ñ4GÔ4GÑ HÔ HÐ HØ 0€€€h„k�5”= %¤-Ñ 0Ô 0°°¸tÑ1DÔ1DÑ EÔ EÐ EØ 3€€€e„j„n�e”m U¤]Ñ 3Ô 3°M°MÀ$Ñ4GÔ4GÑ HÔ HÐ HØ 0€€€h„k�5”= %¤-Ñ 0Ô 0°°¸tÑ1DÔ1DÑ EÔ EÐ EØ 3€€€e„j„n�e”m U¤]Ñ 3Ô 3°M°MÀ$Ñ4GÔ4GÑ HÔ HÐ HØ 0€€€h„k�5”= %¤-Ñ 0Ô 0°°¸tÑ1DÔ1DÑ EÔ EÐ EØ 3€€€e„j„n�e”m U¤]Ñ 3Ô 3°M°MÀ$Ñ4GÔ4GÑ HÔ HÐ HØ 0€€€h„k�5”= %¤-Ñ 0Ô 0°°¸tÑ1DÔ1DÑ EÔ EÐ EØ 3€€€e„j„n�e”m U¤]Ñ 3Ô 3°M°MÀ$Ñ4GÔ4GÑ HÔ HÐ HØ 0€€€h„k�5”= %¤-Ñ 0Ô 0°°¸tÑ1DÔ1DÑ EÔ EÐ Eð8ð 8ð 8ð Ð �%”*”/ 5¨$Ñ /Ô /Ð /Ø Ð �%”*”/ 5¨$Ñ /Ô /Ð /ð 
„M�<Ø	„M�;ð€
ð €€u„z�5”=Ñ!Ô!Ø€€u„z�5”=Ñ!Ô!ð"ð "ñ "Ô!ñ "Ô!ð"ð €€u„z�5”8ÑÔð"ð "ñ Ôð"ð €€u„z�5”8ÑÔð"ð "ñ Ôð"ð €€u„y�%”)ÑÔð0ð 0ñ Ôð0ð €€u„y�%”(ÑÔØ€€u„y�%”(ÑÔð"ð "ñ Ôñ Ôð"ð €€u„y�%”(ÑÔØ€€u„y�%”(ÑÔð"ð "ñ Ôñ Ôð"ð €€u„z�5”9˜eœi¨¬Ñ3Ô3ð&ð &ñ 4Ô3ð&ð
 €€sˆEŒH�e”hÑÔð"ð "ñ  Ôð"ð €€sˆEŒH�e”hÑÔØ€€sˆEŒH�e”hÑÔØ€€sˆEŒH�e”hÑÔðð ñ  Ôñ  Ôñ  Ôðð €€sˆEŒH�e”hÑÔð"ð "ñ  Ôð"ð €€sˆEŒH�e”hÑÔØ€€sˆEŒH�e”hÑÔØ€€sˆEŒH�e”hÑÔðð ñ  Ôñ  Ôñ  Ôðð €€uˆeŒhÑÔØ€€uˆeŒhÑÔð	ð 	ñ Ôñ Ôð	ð  €€uˆeŒh˜œÑ&Ô&Ø€€uˆeŒh˜œÑ&Ô&ð"Ið "Iñ 'Ô&ñ 'Ô&ð"IðJð ð ð Œ7�T‰>€Ø�$”'‰>€Ø €€€d„l�E”HÑ Ô ˜k˜k¨(Ñ3Ô3Ñ 4Ô 4Ð 4Ø €€€d„l�E”HÑ Ô ˜k˜k¨(Ñ3Ô3Ñ 4Ô 4Ð 4Ø €€€d„l�E”HÑ Ô ˜k˜k¨(Ñ3Ô3Ñ 4Ô 4Ð 4Ø €€€d„l�E”HÑ Ô ˜k˜k¨(Ñ3Ô3Ñ 4Ô 4Ð 4ðð ð ð.ð ð ð$ €€u„|Ô˜œ e¤j°%´)Ñ<Ô<Ø€€u„|Ô˜œ e¤n°e´iÑ@Ô@Ø€€u„|Ô˜œ e¤k°5´9Ñ=Ô=Øð
@ð 
@ñ Ôñ >Ô=ñ AÔ@ñ =Ô<ð
@ð €€u„|Ô˜œ e¤j°%´)Ñ<Ô<Ø€€u„|Ô˜œ e¤n°e´iÑ@Ô@Ø€€u„|Ô˜œ e¤k°5´9Ñ=Ô=Øð
@ð 
@ñ Ôñ >Ô=ñ AÔ@ñ =Ô<ð
@ð €€u„|Ô˜œ e¤j°%´)Ñ<Ô<Ø€€u„|Ô˜œ e¤n°e´iÑ@Ô@Ø€€u„|Ô˜œ e¤k°5´9Ñ=Ô=ØðHð Hñ Ôñ >Ô=ñ AÔ@ñ =Ô<ðHð €€u„|Ô˜œ e¤j°%´)Ñ<Ô<Ø€€u„|Ô˜œ e¤n°e´iÑ@Ô@Ø€€u„|Ô˜œ e¤k°5´9Ñ=Ô=ØðHð Hñ Ôñ >Ô=ñ AÔ@ñ =Ô<ðHð	Að 	Að 	Að Ð �5”<Ô$ eÑ ,Ô ,Ð ,Ø Ð �5”<Ô# TÑ *Ô *Ð *Ø Ð �5”<Ô# UÑ +Ô +Ð +ð €€u„|Ô˜%œ+ u¤z°5´9Ñ=Ô=Ø€€u„|Ô˜%œ+ u¤~°u´yÑAÔAØ€€u„|Ô˜%œ+ u¤{°E´IÑ>Ô>ØðIð Iñ Ôñ ?Ô>ñ BÔAñ >Ô=ðIð €€u„|Ô˜œ e¤j°%´)Ñ<Ô<Ø€€u„|Ô˜œ e¤k°5´9Ñ=Ô=Ø€€u„|Ô˜œ e¤n°e´iÑ@Ô@ØðJð Jñ Ôñ AÔ@ñ >Ô=ñ =Ô<ðJð  €€u„|Ô˜œ e¤j°%´)Ñ<Ô<Ø€€u„|Ô˜œ e¤k°5´9Ñ=Ô=Ø€€u„|Ô˜œ e¤n°e´iÑ@Ô@ØðJð Jñ Ôñ AÔ@ñ >Ô=ñ =Ô<ðJð  €€u„|Ô˜EœK¨¬°U´YÑ?Ô?Ø€€u„|Ô˜EœK¨¬°e´iÑ@Ô@Ø€€u„|Ô˜EœK¨¬¸¼ÑCÔCØðJð Jñ Ôñ DÔCñ AÔ@ñ @Ô?ðJð  €€u„|Ô˜EœK¨¬°U´YÑ?Ô?Ø€€u„|Ô˜EœK¨¬°e´iÑ@Ô@Ø€€u„|Ô˜EœK¨¬¸¼ÑCÔCØðJð Jñ Ôñ DÔCñ AÔ@ñ @Ô?ðJð  €€u„|Ô$ e¤k°5´9¸e¼iÑHÔHð7ð 7ñ IÔHð7ð €€u„|Ô˜œ e¤j°%´)¸U¼YÑGÔGØ€€u„|Ô˜œ e¤k°5´9¸e¼iÑHÔHØ€€u„|Ô˜œ e¤n°e´iÀÄÑKÔKðPð Pñ LÔKñ IÔHñ HÔGðPð* €€u„˜œÑ%Ô%ð"ð "ñ &Ô%ð"ð !&ðað að að aðH €�ÑÔð%ð %ñ  Ôð%ð €Ð#�Ô#Ñ%Ô% uÑ -Ô -Ð -Ð -Ð -r   