
    Id7                     N    d Z d ZddZd Zd ZddZddZd ZddZdd	Z	d
 Z
y)z@Network Data Representation (NDR) marshalling and unmarshalling.c                 J    t        | dd      }|t        d| z         |       S )zmPack a NDR object.

    :param object: Object to pack
    :return: String object with marshalled object.
    __ndr_pack__N%r is not a NDR objectgetattr	TypeError)objectndr_packs     +/usr/lib/python3/dist-packages/samba/ndr.pyr	   r	      s1     v~t4H069:::    c                 b     |        }t        |dd      }|t        d|z         |||       |S )zNDR unpack an object.

    :param cls: Class of the object to unpack
    :param data: Buffer to unpack
    :param allow_remaining: allows remaining data at the end (default=False)
    :return: Unpacked object
    __ndr_unpack__Nr   allow_remainingr   )clsdatar   r   
ndr_unpacks        r
   r   r   $   s@     UF!148J069::t_5Mr   c                 J    t        | dd       }|t        |  d       |       S )N__ndr_print__z is not a NDR objectr   )r   	ndr_prints     r
   r   r   4   s1    6I6("6788;r   c                     t        | dd      }|t        d| z         |       }t        |       } |       }t        |dd      }|t        d|z         ||d       |S )zzCreate a deep copy of a NDR object, using pack/unpack

    :param object: Object to copy
    :return: The object copy
    r   Nr   r   Fr   )r   r   type)r   r	   r   r   copyr   s         r
   ndr_deepcopyr   ;   su     v~t4H069:::D
v,C5D/6J04788tU+Kr   c                 P    t        | dd      }|t        d| z         |||      S )zPack the input of an NDR function object.

    :param object: Object to pack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :return: String object with marshalled object.
    __ndr_pack_in__N%r is not a NDR function object	bigendianndr64r   )r   r   r   ndr_pack_in_fns       r
   ndr_pack_inr!   N   s7     V%6=N9FBCCIU;;r   c                 X    t        | dd      }|t        d| z         |||||       | S )ac  Unpack the input of an NDR function object.

    :param cls: Class of the object to unpack
    :param data: Buffer to unpack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :param allow_remaining: allows remaining data at the end (default=False)
    :return: Unpacked object
    __ndr_unpack_in__Nr   r   r   r   r   )r   r   r   r   r   ndr_unpack_in_fns         r
   ndr_unpack_inr&   \   sA     v':DA9FBCCTYe%46Mr   c                 J    t        | dd       }|t        d| z         |       S )N__ndr_print_in__r   r   )r   ndr_print_in_fns     r
   ndr_print_inr*   n   s1    f&8$?O9FBCCr   c                 P    t        | dd      }|t        d| z         |||      S )zPack the output of an NDR function object.

    :param object: Object to pack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :return: String object with marshalled object.
    __ndr_pack_out__Nr   r   r   )r   r   r   ndr_pack_out_fns       r
   ndr_pack_outr.   u   s7     f&8$?O9FBCCYe<<r   c                 X    t        | dd      }|t        d| z         |||||       | S )ad  Unpack the output of an NDR function object.

    :param cls: Class of the object to unpack
    :param data: Buffer to unpack
    :param bigendian: use LIBNDR_FLAG_BIGENDIAN (default=False)
    :param ndr64: use LIBNDR_FLAG_NDR64 (default=False)
    :param allow_remaining: allows remaining data at the end (default=False)
    :return: Unpacked object
    __ndr_unpack_out__Nr   r$   r   )r   r   r   r   r   ndr_unpack_out_fns         r
   ndr_unpack_outr2      sA      (<dC 9FBCCdiu&57Mr   c                 J    t        | dd       }|t        d| z         |       S )N__ndr_print_out__r   r   )r   ndr_print_out_fns     r
   ndr_print_outr6      s2    v':DA9FBCCr   N)F)FF)FFF)__doc__r	   r   r   r   r!   r&   r*   r.   r2   r6    r   r
   <module>r9      s=   * G	 &<$=$r   