+
    ¢THiØ  ã                   óÊ   € ^ RI t ^ RIHu Ht ^ RIHtHt ^ RIH	t	 RR.t
RtRt ! R R]P                  P                  ]P                  4      t ! R	 R]P                  4      tR# )
é    N)ÚconsteqÚto_native_str)Úunicode_or_bytesÚunix_disabledÚ	plaintextz*!s   *!c                   ó.  a a€ ] tR t^t oRtR tRtRt]! ]	! ]
4      4      tR]P                  9   d   RtMRt]RV 3R ll4       t]R 4       t]R 4       t]R 4       t]P*                  ! R	R
R7      ]RR l4       4       t]RR l4       t]R 4       tRtVtV ;t# )r   a�  This class provides disabled password behavior for unix shadow files,
and follows the :ref:`password-hash-api`.

This class does not implement a hash, but instead matches the "disabled account"
strings found in ``/etc/shadow`` on most Unix variants. "encrypting" a password
will simply return the disabled account marker. It will reject all passwords,
no matter the hash string. The :meth:`~passlib.ifc.PasswordHash.hash`
method supports one optional keyword:

:type marker: str
:param marker:
    Optional marker string which overrides the platform default
    used to indicate a disabled account.

    If not specified, this will default to ``"*"`` on BSD systems,
    and use the Linux default ``"!"`` for all other platforms.
    (:attr:`!unix_disabled.default_marker` will contain the default value)

.. versionadded:: 1.6
    This class was added as a replacement for the now-removed
    :class:`!unix_fallback` class.
ÚbsdÚ*Ú!c                óˆ   <€ \         SV `  ! R/ VB pVe-   V P                  V4      '       g   \        RV: 24      hWn        V# )Nzinvalid marker: © )ÚsuperÚusingÚidentifyÚ
ValueErrorÚdefault_marker)ÚclsÚmarkerÚkwdsÚsubclsÚ	__class__s   &&, €Ú7/usr/lib/python3/dist-packages/passlib/handlers/misc.pyr   Úunix_disabled.using7   sG   ø€ ä‘’Ñ& Ñ&ˆØÒØ—<‘< ×'Ò'Ü Ð#3°F±:Ð!>Ó?Ð?Ø$*Ô!Øˆó    c                óì   € \        V\        4      '       d   \        pM=\        V\        4      '       d   \        pM \
        P                  P                  VR 4      hV'       * ;'       g    V^ ,          V9   # ©Úhash)Ú
isinstanceÚstrÚ_MARKER_CHARSÚbytesÚ_MARKER_BYTESÚuhÚexcÚExpectedStringError)r   r   Ústarts   && r   r   Úunix_disabled.identify@   sX   € ô  �dœC× Ò Ü!‰EÜ˜œe×$Ò$Ü!‰Eä—&‘&×,Ñ,¨T°6Ó:Ð:ØŒx×+Ð+˜4 �7 eÑ+Ð+r   c                óž   € \         P                  ! V4       V P                  V4      '       g    \         P                  P	                  V 4      hR # )F)r#   Úvalidate_secretr   r$   ÚInvalidHashError)r   Úsecretr   s   &&&r   ÚverifyÚunix_disabled.verifyX   s7   € ä
×Ò˜6Ô"Ø�|‰|˜D×!Ò!Ü—&‘&×)Ñ)¨#Ó.Ð.Ùr   c                ó$  € V'       d8   \         P                  ! W4       V P                  ! R/ VB P                  V4      # \         P                  ! V4       V P
                  pV'       g   Q hV P                  V4      '       g   Q h\        VR R7      # )r   ©Úparamr   )r#   Úwarn_hash_settings_deprecationr   r   r)   r   r   r   )r   r+   r   r   s   &&, r   r   Úunix_disabled.hash_   sr   € çÜ×-Ò-¨cÔ8Ø—9’9Ñ$˜tÑ$×)Ñ)¨&Ó1Ð1Ü
×Ò˜6Ô"Ø×#Ñ#ˆßˆˆvØ�|‰|˜F×#Ò#Ð#Ð#Ü˜V¨8Ô4Ð4r   ú1.7ú2.0©Ú
deprecatedÚremovedc                ó  € V P                  V4      '       g    \        P                  P                  V 4      hV'       d$   \        P                  ! V4       \        VR R7      # Ve   V P                  VR7      p V P                  V4      # )Úconfigr/   ©r   )r   r#   r$   r*   r)   r   r   r   )r   r+   r9   r   s   &&&&r   ÚgenhashÚunix_disabled.genhashj   sk   € ð �|‰|˜F×#Ò#Ü—&‘&×)Ñ)¨#Ó.Ð.çä×Ò˜vÔ&Ü  ¨xÔ8Ð8ØÒØ—)‘) 6�)Ó*ˆCØ�x‰x˜ÓÐr   c                óº   € V P                  R 4      pVeF   \        VRR7      pV P                  V4      '       d   V P                  V4      pV'       d	   W!,          pV# )Ú r   r/   )r   r   r   Úenable)r   r   Úouts   && r   ÚdisableÚunix_disabled.disablex   sM   € à�h‰h�r‹lˆØÒÜ  ¨VÔ4ˆDØ�|‰|˜D×!Ò!à—z‘z $Ó'�ßØ•�Øˆ
r   c                óø   € \        VR R7      pV P                   F?  pVP                  V4      '       g   K  V\        V4      R pV'       d   Vu # \	        R4      h	  \
        P                  P                  V 4      h)r   r/   Nzcannot restore original hash)r   Ú_disable_prefixesÚ
startswithÚlenr   r#   r$   r*   )r   r   ÚprefixÚorigs   &&  r   r?   Úunix_disabled.enable„   sh   € ä˜T¨Ô0ˆØ×+Ô+ˆFØ�‰˜v×&Ô&ØœC ›K˜MÐ*�ßØ’KÜ Ð!?Ó@Ð@ñ ,ô �f‰f×%Ñ% cÓ*Ð*r   r   r:   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚnameÚsetting_kwdsÚcontext_kwdsÚtupler   r    rD   ÚsysÚplatformr   Úclassmethodr   r   r,   r   r#   Údeprecated_methodr;   rA   r?   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r   r      sé   ù‡ € ñð. €DØ€LØ€Lá™c -Ó0Ó1Ðð �—‘ÔØ‰ð
 ˆàöó ðð ñ,ó ð,ð. ñó ðð ñ5ó ð5ð ×Ò U°EÔ:Øó
 ó ó ;ð
 ð ó	ó ð	ð ñ+ó ÷+ð +r   c                   óì   a € ] tR t^�t o RtR tRtRtRt]	R 4       t
]	RR l4       t]	RR l4       t]P                  ! RRR	7      ]	R
 4       4       t]P                  ! RRR	7      ]	RR l4       4       tRtV tR# )r   aR  This class stores passwords in plaintext, and follows the :ref:`password-hash-api`.

The :meth:`~passlib.ifc.PasswordHash.hash`, :meth:`~passlib.ifc.PasswordHash.genhash`, and :meth:`~passlib.ifc.PasswordHash.verify` methods all require the
following additional contextual keyword:

:type encoding: str
:param encoding:
    This controls the character encoding to use (defaults to ``utf-8``).

    This encoding will be used to encode :class:`!str` passwords
    under Python 2, and decode :class:`!bytes` hashes under Python 3.

.. versionchanged:: 1.6
    The ``encoding`` keyword was added.
zutf-8c                ór   € \        V\        4      '       d   R # \        P                  P	                  VR4      h)Tr   )r   r   r#   r$   r%   )r   r   s   &&r   r   Úplaintext.identify¨   s*   € ä�dÔ,×-Ò-ÙÜ�f‰f×(Ñ(¨¨vÓ6Ð6r   Nc                ón   € \         P                  ! V4       V'       g   V P                  p\        WR 4      # )r+   )r#   r)   Údefault_encodingr   )r   r+   Úencodings   &&&r   r   Úplaintext.hash®   s+   € ä
×Ò˜6Ô"ßØ×+Ñ+ˆHÜ˜V¨xÓ8Ð8r   c                óä   € V'       g   V P                   p\        W#R 4      pV P                  V4      '       g    \        P                  P                  V 4      h\        V P                  W4      V4      # r   )r`   r   r   r#   r$   r*   r   r   )r   r+   r   ra   s   &&&&r   r,   Úplaintext.verifyµ   sV   € çØ×+Ñ+ˆHÜ˜T¨VÓ4ˆØ�|‰|˜D×!Ò!Ü—&‘&×)Ñ)¨#Ó.Ð.Ü�s—x‘x Ó1°4Ó8Ð8r   r3   r4   r5   c                ó$   € V P                  R 4      # )r>   r   )r   s   &r   Ú	genconfigÚplaintext.genconfig¾   s   € ð �x‰x˜‹|Ðr   c                ó’   € V P                  V4      '       g    \        P                  P                  V 4      hV P	                  WR 7      # )©ra   )r   r#   r$   r*   r   )r   r+   r9   ra   s   &&&&r   r;   Úplaintext.genhashÃ   s9   € ð �|‰|˜F×#Ò#Ü—&‘&×)Ñ)¨#Ó.Ð.Ø�x‰x˜ˆxÓ2Ð2r   r   ri   rJ   )rK   rL   rM   rN   rO   rP   rQ   rR   r`   rV   r   r   r,   r#   rW   rf   r;   rX   rY   )r[   s   @r   r   r   �   s­   ø‡ € ñð$ €DØ€LØ €LØÐàñ7ó ð7ð
 ó9ó ð9ð ó9ó ð9ð ×Ò U°EÔ:Øñó ó ;ðð ×Ò U°EÔ:Øó3ó ó ;ö3r   )rT   Úpasslib.utils.handlersÚutilsÚhandlersr#   Úpasslib.utilsr   r   Úpasslib.utils.compatr   Ú__all__r    r"   ÚifcÚDisabledHashÚMinimalHandlerr   r   r   r   r   Ú<module>rt      sb   ðÛ 
ç #Ð #ß 0Ý 1ð Øð€ð
 €Ø€ô}+�B—F‘F×'Ñ'¨×):Ñ):ô }+ô@93�×!Ñ!ö 93r   