
    %i                        d dl Z d dlmZ 	 d dlmZ  e       Zej1                  d       de j2                  v re j2                  d   dv rd	Znd
Z e       Z ee j                  j                  e j                  j                  e      d            5 Zej=                         ZejA                  deg ee       ddd        G d d      Z! G d de!      Z" G d de!      Z#ddZ$e%dk(  rejM                          yy# e$ r d dlZd dlZe j                  j                  e j                  j                  e      d      Zej                  j                  de      Zej                  j#                  e      Zeej&                  ej(                  <   ej*                  j-                  e       ej                  ZY w xY w# 1 sw Y   xY w)    N)FFI)get_compile_argsz_compile_args.pyzautobahn.nvx._compile_argsao  
    void* nvx_xormask_new (const uint8_t* mask);

    void nvx_xormask_reset (void* xormask);

    size_t nvx_xormask_pointer (void* xormask);

    void nvx_xormask_process (void* xormask, uint8_t* data, size_t length);

    void nvx_xormask_free (void* xormask);

    int nvx_xormask_set_impl(void* xormask, int impl);

    int nvx_xormask_get_impl(void* xormask);
AUTOBAHN_USE_NVX)1trueFTz_xormasker.c_nvx_xormasker)	librariesextra_compile_argsoptionalc                   .    e Zd ZdZdZddZd Zd Zd Zy)	XorMaskerNvxzA
    XOR masker using native NVX acceleration.
    :noindex:
    )ffilib_masker_mask_bufferc                    t        |      dk(  sJ d       ddlm}m} || _        || _        | j                  j	                  d|      | _        | j                  j                  | j                  j                  | j
                        | j                  j                        | _	        |r'| j                  j                  | j                  d       y | j                  j                  | j                  d       y )N   zMask must be exactly 4 bytesr   )r   r   z
uint8_t[4]      )lenr   r   r   newr   gcnvx_xormask_newnvx_xormask_freer   nvx_xormask_set_impl)selfmaskuse_simd_ffi_libs        q/var/www/html/navyabakers_fullstack/navyabakers_prod/venv/lib/python3.12/site-packages/autobahn/nvx/_xormasker.py__init__zXorMaskerNvx.__init__b   s    4yA~===~; !HHLLt<xx{{HH$$T%6%67HH%%
 HH))$,,:HH))$,,:    c                 L    | j                   j                  | j                        S N)r   nvx_xormask_pointerr   r   s    r!   pointerzXorMaskerNvx.pointerw   s    xx++DLL99r#   c                 N    | j                   j                  | j                         y r%   )r   nvx_xormask_resetr   r'   s    r!   resetzXorMaskerNvx.resetz   s    ""4<<0r#   c                 "   t        |      }| j                  j                  d|      }| j                  j                  |||       | j                  j                  | j                  ||       t        | j                  j                  ||            S )Nz	uint8_t[])	r   r   r   memmover   nvx_xormask_processr   bytesbuffer)r   datadata_lendata_buffers       r!   processzXorMaskerNvx.process}   sm    t9hhll;9dH5 	$$T\\;I TXX__[(;<<r#   N)T)	__name__
__module____qualname____doc__	__slots__r"   r(   r+   r4    r#   r!   r   r   Z   s"    
 :I;*:1
=r#   r   c                   "     e Zd ZdZ fdZ xZS )XorMaskerSimplezD
    Simple scalar XOR masker for small payloads.
    :noindex:
    c                 (    t         |   |d       y )NFr   superr"   r   r   	__class__s     r!   r"   zXorMaskerSimple.__init__   s    .r#   r5   r6   r7   r8   r"   __classcell__rB   s   @r!   r<   r<      s    / /r#   r<   c                   "     e Zd ZdZ fdZ xZS )XorMaskerShifted1zE
    SIMD-optimized XOR masker for large payloads.
    :noindex:
    c                 (    t         |   |d       y )NTr>   r?   rA   s     r!   r"   zXorMaskerShifted1.__init__   s    -r#   rC   rE   s   @r!   rG   rG      s    . .r#   rG   c                 <    ||dk  rt        |       S t        |       S )a  
    Factory function to create XOR masker with optimal implementation.

    :param mask: 4-byte masking key
    :param length: Payload length hint - uses scalar for < 128 bytes, SIMD for >= 128
    :return: XorMaskerSimple or XorMaskerShifted1 instance
       )r<   rG   )r   lengths     r!   create_xor_maskerrL      s%     ~#t$$ &&r#   __main__r%   )'oscffir   autobahn.nvx._compile_argsr   ImportErrorimportlib.util	importlibsyspathjoindirname__file___pathutilspec_from_file_locationspecmodule_from_specmodmodulesnameloaderexec_moduler   cdefenvironr   r
   openfdreadc_source
set_sourcer   r<   rG   rL   r5   compiler:   r#   r!   <module>rk      s  6 
 ,;  
e $ #

3E(F-(WHH
 &' 	"'',,rwwx0.
AB bwwyHNN-  -= -=`/l /. .' zKKM Q  ,
 GGLL24FGE>>112NPUVD
..
)
)$
/C CKK		KKC ++,Z s   C: 'F::B9F76F7:G