
    wg\jco                     h   S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJrJ	r	  S SK
Jr  S SK
Jr  S SKJrJr  S SKJr  S SKJr  S	S
SSSSSS.r Sr  " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\" S5       " S S\5      5       r " S S \5      r " S! S"5      rg)#    N)
deprecated)JWExceptionJWKeyNotFound)json_decodejson_encode)JWE)default_allowed_algs)JWKJWKSet)JWSIssuerSubjectAudiencezExpiration Timez
Not Beforez	Issued AtzJWT ID)isssubaudexpnbfiatjtiTc                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )
JWTExpired(   zfJSON Web Token is expired.

This exception is raised when a token is expired according to its claims.
c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g )NzToken expired {%s})strsuperr   __init__selfmessage	exceptionmsg	__class__s       G/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/jwcrypto/jwt.pyr   JWTExpired.__init__.   s>    g,C!C7S^++Cj$(-     NN__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classcell__r$   s   @r%   r   r   (   s    
. .r'   r   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )JWTNotYetValid9   zrJSON Web Token is not yet valid.

This exception is raised when a token is not valid yet according to its
claims.
c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g )NzToken not yet validr   )r   r   r4   r   r   s       r%   r   JWTNotYetValid.__init__@   s>    g,C'C7S^++Cnd,S1r'   r(   r)   r*   r2   s   @r%   r4   r4   9   s    2 2r'   r4   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )JWTMissingClaimK   kJSON Web Token claim is invalid.

This exception is raised when a claim does not match the expected value.
c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g NzInvalid Claim Valuer   )r   r   r9   r   r   s       r%   r   JWTMissingClaim.__init__Q   s>    g,C'C7S^++Cot-c2r'   r(   r)   r*   r2   s   @r%   r9   r9   K   s    
3 3r'   r9   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )JWTInvalidClaimValue\   r;   c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g r=   )r   r   r@   r   r   s       r%   r   JWTInvalidClaimValue.__init__b   s?    g,C'C7S^++C"D237r'   r(   r)   r*   r2   s   @r%   r@   r@   \   s    
8 8r'   r@   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )JWTInvalidClaimFormatm   ziJSON Web Token claim format is invalid.

This exception is raised when a claim is not in a valid format.
c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g )NzInvalid Claim Formatr   )r   r   rE   r   r   s       r%   r   JWTInvalidClaimFormat.__init__s   s?    g,C(C7S^++C#T3C8r'   r(   r)   r*   r2   s   @r%   rE   rE   m   s    
9 9r'   rE    c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )JWTMissingKeyID~   zJSON Web Token is missing key id.

This exception is raised when trying to decode a JWT with a key set
that does not have a kid value in its header.
c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g )NzMissing Key IDr   )r   r   rK   r   r   s       r%   r   JWTMissingKeyID.__init__   s>    g,C"C7S^++Cot-c2r'   r(   r)   r*   r2   s   @r%   rK   rK   ~   s    3 3r'   rK   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )JWTMissingKey   zJSON Web Token is using a key not in the key set.

This exception is raised if the key that was used is not available
in the passed key set.
c                    > S nU(       a  [        U5      nOSnU(       a  US[        U5      -  -  n[        [        U ]  U5        g )NzMissing Keyr   )r   r   rP   r   r   s       r%   r   JWTMissingKey.__init__   s>    g,CC7S^++CmT+C0r'   r(   r)   r*   r2   s   @r%   rP   rP      s    1 1r'   rP   c                      \ rS rSrSr   S*S jr\S 5       r\R                  S 5       r\S 5       r	\	R                  S 5       r	\S	 5       r
\
R                  S
 5       r
\S 5       r\R                  S 5       r\S 5       r\R                  S 5       rS+S jr\S 5       r\R                  S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS  rS! r\S" 5       r S+S# jr!S,S$ jr"\#S% 5       r$S& r%S' r&S( r'S)r(g)-JWT   z>JSON Web token object

This object represent a generic token.
Nc
                 >   SU l         SU l        SU l        XPl        SU l        SU l        SU l        SU l        SU l        Xl	        Xl
        U(       a  Xl        Ub  X`l        Ub  USLa  U R                  U5        Xpl        Ub  X l        Ub  U R                  X45        gg)a  Creates a JWT object.

:param header: A dict or a JSON string with the JWT Header data.
:param claims: A dict or a string with the JWT Claims data.
:param jwt: a 'raw' JWT token
:param key: A (:class:`jwcrypto.jwk.JWK`) key to deserialize
 the token. A (:class:`jwcrypto.jwk.JWKSet`) can also be used.
:param algs: An optional list of allowed algorithms
:param default_claims: An optional dict with default values for
 registered claims. A None value for NumericDate type claims
 will cause generation according to system time. Only the values
 from RFC 7519 - 4.1 are evaluated.
:param check_claims: An optional dict of claims that must be
 present in the token, if the value is not None the claim must
 match exactly.
:param expected_type: An optional string that defines what kind
 of token to expect when validating a deserialized token.
 Supported values: "JWS" or "JWE"
 If left to None the code will try to detect what the expected
 type is based on other parameters like 'algs' and will default
 to JWS if no hints are found. It has no effect on token creation.
:param strict_serialization: An optional boolean (default False).
 RFC 7519 mandates that a JWT uses the JWS/JWE Compact
 Serialization. When set to True any token presented in the
 JWS/JWE JSON Serialization is rejected at deserialization time,
 so only the compact representation is accepted. The default is
 False to preserve backwards compatibility. It has no effect on
 token creation, which always produces the compact serialization.

Note: either the header,claims or jwt,key parameters should be
provided as a deserialization operation (which occurs if the jwt
is provided) will wipe any header or claim provided by setting
those obtained from the deserialization of the jwt token.

Note: if check_claims is not provided the 'exp' and 'nbf' claims
are checked if they are set on the token but not enforced if not
set. Any other RFC 7519 registered claims are checked only for
format conformance.
N<   iX  F)_header_claims_token_algs_reg_claims_check_claims_leeway	_validitydeserializelog_expected_type_strict_serializationheader_check_check_claimsclaimsdeserialize)
r    rd   rf   jwtkeyalgsdefault_claimscheck_claimsexpected_typestrict_serializations
             r%   r   JWT.__init__   s    V 
!"+%9" K%-#5(((6!- K?S& r'   c                 J    U R                   c  [        S5      eU R                   $ )Nz'header' not set)rY   KeyErrorr    s    r%   rd   
JWT.header   "    <<-..||r'   c                     [        U[        5      (       a  [        U5      nOUn[        U5      nUR	                  S5      SL a  [        S5      eX l        g )Nb64Fz8b64 header is invalid.JWTs cannot use unencoded payloads)
isinstancedictr   r   get
ValueErrorrY   )r    hehs      r%   rd   rs      sP    aQBBBA55<5  B C Cr'   c                 J    U R                   c  [        S5      eU R                   $ )Nz'claims' not set)rZ   rq   rr   s    r%   rf   
JWT.claims  rt   r'   c                     [        U[        5      (       d$  U R                  (       d  Xl        g [	        U5      nO[
        R                  " U5      nU R                  U5        [        U5      U l        g N)	rw   rx   r]   rZ   r   copydeepcopy_add_default_claimsr   )r    datas     r%   rf   r~   
  sT    $%%###t$D ==&D  &"4(r'   c                     U R                   $ r   )r[   rr   s    r%   token	JWT.token  s    {{r'   c                     [        U[        5      (       d*  [        U[        5      (       d  [        U[        5      (       a  Xl        g [        S5      e)Nz.Invalid token type, must be one of JWS,JWE,JWT)rw   r   r   rU   r[   	TypeError)r    ts     r%   r   r     s8    aAs!3!3z!S7I7IKLMMr'   c                     U R                   $ r   )r_   rr   s    r%   leeway
JWT.leeway%  s    ||r'   c                 $    [        U5      U l        g r   )intr_   )r    lwys     r%   r   r   )  s    3xr'   c                     U R                   $ r   )r`   rr   s    r%   validityJWT.validity-  s    ~~r'   c                 $    [        U5      U l        g r   )r   r`   r    vs     r%   r   r   1  s    Qr'   c                 x   U R                   c~  U R                  (       am  [        U R                  5      R                  [        S/-   5      (       a  SU l         O4[        U R                  5      R                  [
        5      (       a  SU l         U R                   c1  U R                  (       a   S[        U R                  5      ;   a  SU l         U R                   c  Ub  [        U[        5      (       a-  UR                  S5      nUS:X  a  SU l         OjUS:X  a  SU l         O\[        U[        5      (       aG  S nU H$  nUR                  S5      nUc  UnM  X#:w  d  M"  S n  O   US:X  a  SU l         OUS:X  a  SU l         U R                   Gc  UGb  [        U[        5      (       a  UR                  S5      nU(       aj  [        U[        5      (       d  U/n[        U5      R                  SS	/5      (       a	  SU l         GO#[        U5      R                  S
S/5      (       a  SU l         O[        U[        5      (       a  S nS nU H  nUR                  S5      nU(       a  [        U[        5      (       d  U/nUch  [        U5      R                  SS	/5      (       a  [        SS	/5      nSnMh  [        U5      R                  S
S/5      (       a  [        S
S/5      nSnM  S n  O4[        U5      R                  U5      (       d  S n  OM  U(       d  M  S n  O   U(       a  Xpl         U R                   c  SU l         U R                   $ )NRSA1_5r   r   encusesigkey_opssignverifyencryptdecrypt)rb   r\   setissubsetjwe_algsjws_algsrY   r   rw   r
   ry   r   list)r    ri   r   all_usekopsall_opsttypes           r%   _expected_type_heuristicsJWT._expected_type_heuristics5  s   &4::4::''H:(=>>&+#TZZ))(33&+#&4<<DLL11&+#&3?#s##ggen%<*/D'E\*/D'C((A%%,C"%"&  e#*/D'%*/D'&3?#s##ggi(%c400"e3x((&();<<.3+S**Iy+ABB.3+C((A%%	*C)#t44#&%C"?"3x00&(1CDD*-vx.@*A(-!$S!2!2Iy3I!J!J*-y).D*E(-(, %#&s8#4#4W#=#=(, % $> ! $+ , */'&"'D"""r'   c                 T    U R                   b  U R                   $ U R                  5       $ r   )rb   r   rr   s    r%   rm   JWT.expected_type}  s+    *&&& --//r'   c                 2    US;   a  Xl         g [        S5      e)N)r   r   z%Invalid value, must be 'JWS' or 'JWE')rb   rz   r   s     r%   rm   r     s    "#DEEr'   c                 X    X;   a  g U R                   R                  US 5      nUb  X2U'   g g r   )r]   ry   )r    namerf   vals       r%   _add_optional_claimJWT._add_optional_claim  s3    >""4.?4L r'   c                 |    X;   a  g XR                   ;   a'  U R                   U   c  X2U'   g U R                   U   X!'   g g r   )r]   )r    r   rf   defvals       r%   _add_time_claimJWT._add_time_claim  sE    >###%-%t#//5	 $r'   c                 t    SU;   d  SU R                   ;  a  g [        [        R                  " 5       5      US'   g )Nr   )r]   r   uuiduuid4r    rf   s     r%   _add_jti_claimJWT._add_jti_claim  s-    F?e4+;+;;DJJL)ur'   c                 p   U R                   c  g [        [        R                  " 5       5      nU R                  SU5        U R                  SU5        U R                  SU5        U R	                  SXU R
                  -   5        U R	                  SX5        U R	                  SX5        U R                  U5        g )Nr   r   r   r   r   r   )r]   r   timer   r   r   r   )r    rf   nows      r%   r   JWT._add_default_claims  s    #$))+  /  /  /UF$--,?@UF0UF0F#r'   c                 h    X;  d  X!   c  g [        X!   [        5      (       d  [        SU< S35      eg )NClaim  is not a StringOrURI type)rw   r   rE   r    r   rf   s      r%   _check_string_claimJWT._check_string_claim  s;    !5&,,,'8<?A A -r'   c                     X;  d  X!   c  g [        X!   [        5      (       a*  [        S X!    5       5      (       a  [        SU< S35      eg [        X!   [        5      (       d  [        SU< S35      eg )Nc              3   L   #    U  H  n[        U[        5      (       + v   M     g 7fr   )rw   r   ).0claims     r%   	<genexpr>3JWT._check_array_or_string_claim.<locals>.<genexpr>  s     H<%z%---<s   "$r   z contains non StringOrURI typesr   )rw   r   anyrE   r   r   s      r%   _check_array_or_string_claim JWT._check_array_or_string_claim  sz    !5flD))H6<HHH+AEHJ J I FL#..'8<?A A /r'   c                 |    X;  d  X!   c  g  [        X!   5        g ! [         a  n[        SU< S35      UeS nAff = f)Nr   z is not an integer)r   rz   rE   )r    r   rf   es       r%   _check_integer_claimJWT._check_integer_claim  sK    !5	@ 	@'0479>?@	@s    
;6;c                 4    XU-
  :  a  [        SXU4-  5      eg )Nz#Expired at %d, time: %d(leeway: %d))r   r    r   limitr   s       r%   
_check_expJWT._check_exp  s1    6>!B"6F3 3 4 4 "r'   c                 4    XU-   :  a  [        SXU4-  5      eg )Nz#Valid from %d, time: %d(leeway: %d))r4   r   s       r%   
_check_nbfJWT._check_nbf  s1    6>! !F!&vJ7 "7 8 8 "r'   c                 &   U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  ct  SU;   a3  U R	                  US   [
        R
                  " 5       U R                  5        SU;   a4  U R                  US   [
        R
                  " 5       U R                  5        g g g )	Nr   r   r   r   r   r   r   typ)r   r   r   r^   r   r   r_   r   r   s     r%   _check_default_claimsJWT._check_default_claims  s      /  /))%8!!%0!!%0!!%0  /  /%utyy{DLLIutyy{DLLI  &r'   c                 H   U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  S	U5        g )
Nr   r   r   scoper   r   r   r   r   )r   r   r   )r    rl   s     r%   re   JWT._check_check_claims  s      5  5))%>  ,7!!%6!!%6!!%6  5  5r'   c                 |   U R                   SL a  g  [        U R                  5      n[        U[        5      (       d
  [        5       e U R                  U5        U R                   c  g U R                   R                  5        GH  u  p4X1;  a  [        SU< S35      eUS;   a)  Ub$  XAU   :w  a  [        SU< SU< SX   < S	35      eMH  MJ  US
:X  a|  Ubw  [        X   [        5      (       a  X   nOX   /n[        U[        5      (       a  UnOU/nSnU H  nX;   d  M
  Sn  O   U(       d  [        SR                  X1U   U5      5      eM  M  US:X  aO  Ub  U R                  X   US5        M  U R                  X   [        R                  " 5       U R                  5        GM!  US:X  aP  Ub  U R!                  X   US5        GMB  U R!                  X   [        R                  " 5       U R                  5        GMw  US:X  aI  UbC  U R#                  U5      U R#                  X   5      :w  a  [        SU< SX   < SU< S	35      eGM  GM  US:X  a  Ub  [        X   [$        5      (       d-  [        SU< S['        X   5      < S[%        X   5      < 35      eSnX   R)                  5       n	U	 H  n
X:X  d  M
  Sn  O   U(       d  [        SU< SX   < SU< S	35      eGM]  GM`  Uc  GMf  XAU   :w  d  GMq  [        SU< SU< SX   < S	35      e   g ! [
         a#  nU R                   b  [        S5      Ue S nAg S nAff = f)NFz4Claims check requested but claims is not a json dictr   z is missing)r   r   r   z	Invalid 'z' value. Expected 'z' got ''r   Tz)Invalid '{}' value. Expected '{}' in '{}'r   r   r   r   z
' value. 'z' does not normalize to 'r   z.' value. Scope list has to be a string, got a z
 instead: z' value. Scope list 'z'' does not contain the required scope ')r^   r   rf   rw   rx   rz   rE   r   itemsr9   r@   r   formatr   r   r_   r   norm_typr   typesplit)r    rf   r   r   valuetclaimscclaimsfoundr   
got_scopesss              r%   _check_provided_claimsJWT._check_provided_claims  s4   &		 -Ffd++ l" , 	""6*%--335KD!%t&FGG,,$,)>. %78 8 *?$
 $!&,55"(,#)<.!%.."'#('!E$<$(E! % !2GNN $TlE;< < ! %& $OOFL%;OOFL$))+t||L$OOFL%;OOFL$))+t||L$}}U+t}}V\/JJ2=A=C\=B	4D E E K % $%flC882 !%d6<&8#fl:KMN N
 "E!'!3!3!5J':$(E! (
 !2 !%flE;< < ! %( $,)>. %78 8Q 6  	!!-+ -3 49:; 	s   4L 
L;L66L;c                 <    UR                  5       nSU;   a  U$ SU-   $ )N/zapplication/)lower)r    r   lcs      r%   r   JWT.norm_typR  s$    YY["9I!B&&r'   c                     [        U R                  5      nU R                  (       a  U R                  Ul        UR	                  XR
                  S9  X l        SU l        g)zSigns the payload.

Creates a JWS token with the header as the JWS protected header and
the claims as the payload. See (:class:`jwcrypto.jws.JWS`) for
details on the exceptions that may be raised.

:param key: A (:class:`jwcrypto.jwk.JWK`) key.
)	protectedr   N)r   rf   r\   allowed_algsadd_signaturerd   r   rb   r    ri   r   s      r%   make_signed_tokenJWT.make_signed_tokenY  sC     ::!ZZAN	{{3
#r'   c                     [        U R                  U R                  5      nU R                  (       a  U R                  Ul        UR                  U5        X l        SU l        g)zEncrypts the payload.

Creates a JWE token with the header as the JWE protected header and
the claims as the plaintext. See (:class:`jwcrypto.jwe.JWE`) for
details on the exceptions that may be raised.

:param key: A (:class:`jwcrypto.jwk.JWK`) key.
r   N)r   rf   rd   r\   r   add_recipientr   rb   r   s      r%   make_encrypted_tokenJWT.make_encrypted_tokenj  sC     T[[)::!ZZAN	
#r'   c                    / U l         U R                  c  [        S5      eU R                  U5      nSn[	        U R                  [
        5      (       aB  US:w  a%  [        (       a  [        SR                  U5      5      eU R                  R                  nOl[	        U R                  [        5      (       aB  US:w  a%  [        (       a  [        SR                  U5      5      eU R                  R                  nO[        S5      e U" U5        U R                   R                  S5        U R                  R&                  U l        U R                  R*                  n[	        U[,        5      (       a  UR/                  S
5      nXPl        U R3                  5         g! [         a  n[	        U R                  [
        5      (       a  U R                  R                  U l         O:[	        U R                  [        5      (       a  U R                  R                  U l         U R                   R                  S	R                  [!        U5      5      5        [	        U["        5      (       a  [%        5       Uee SnAff = f)zValidate a JWT token that was deserialized w/o providing a key

:param key: A (:class:`jwcrypto.jwk.JWK`) verification or
 decryption key, or a (:class:`jwcrypto.jwk.JWKSet`) that
 contains a key indexed by the 'kid' header.
NzToken emptyr   zExpected {}, got JWSr   zExpected {}, got JWEToken format unrecognizedSuccesszValidation failed: [{}]zutf-8)ra   r   rz   r   rw   r   JWT_expect_typer   r   r   r   r   append	Exception	verifylog
decryptlogreprr   rP   jose_headerrd   payloadbytesdecoderf   r   )r    ri   etvalidate_fnr   r  s         r%   validateJWT.validate{  s    !::]++++C0djj#&&U{ 6 = =b ABB**++K

C((U{ 6 = =b ABB**,,K899	&&y1 jj,,**$$gu%%nnW-G##%!  		$**c**&*jj&:&:#DJJ,,&*jj&;&;#&&)00a9;!]++#o1,		s   #F 
I*C	I%%I*c                 V     [        [        U 5      [        5      $ ! [         a     gf = fNF)rw   r   rx   rz   )rh   s    r%   _is_json_serializationJWT._is_json_serialization  s+    	k#.55 		s    
((c                    U R                   (       a!  U R                  U5      (       a  [        S5      eUR                  S5      nUS:X  a  [	        5       U l        O!US:X  a  [        5       U l        O[        S5      eU R                  (       a  U R                  U R
                  l        SU l	        U R
                  R                  US5        U(       a  U R                  U5        gg)a  Deserialize a JWT token.

NOTE: Destroys any current status and tries to import the raw
token provided.

:param jwt: a 'raw' JWT token.
:param key: A (:class:`jwcrypto.jwk.JWK`) verification or
 decryption key, or a (:class:`jwcrypto.jwk.JWKSet`) that
 contains a key indexed by the 'kid' header.

:raises ValueError: if strict_serialization is enabled and the
 token is not in the JWS/JWE Compact Serialization (for example
 when a JSON Serialization is provided).
zlOnly the JWS/JWE Compact Serialization is allowed for JWTs (RFC 7519), but a JSON Serialization was provided.      r  N)rc   r  rz   countr   r   r   r\   r   ra   rg   r  )r    rh   ri   r   s       r%   rg   JWT.deserialize  s     %%$*E*Ec*J*J : ; ; yy~19DJQYDJ899 ::&*jjDJJ#" 	

sD)MM# r'   c                 \    U(       d  [        S5      eU R                  R                  U5      $ )a  Serializes the object into a JWS token.

:param compact(boolean): must be True.

Note: the compact parameter is provided for general compatibility
with the serialize() functions of :class:`jwcrypto.jws.JWS` and
:class:`jwcrypto.jwe.JWE` so that these objects can all be used
interchangeably. However the only valid JWT representation is the
compact representation.

:return: A json formatted string or a compact representation string
:rtype: `str`
z)Only the compact serialization is allowed)rz   r   	serialize)r    compacts     r%   r   JWT.serialize  s(     HIIzz##G,,r'   c                 6    U " 5       nUR                  U5        U$ )zCreates a JWT object from a serialized JWT token.

:param token: A string with the json or compat representation
 of the token.

:raises InvalidJWEData or InvalidJWSObject: if the raw object is an
 invalid JWT token.

:return: A JWT token
:rtype: JWT
)rg   )clsr   objs      r%   from_jose_tokenJWT.from_jose_token  s     e
r'   c                     [        U[        5      (       d  gU R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r  )rw   rU   rZ   rY   r   )r    others     r%   __eq__
JWT.__eq__  sQ    %%%||u}}, &LLEMM)&JJ%++%	&r'   c                 d     U R                  5       $ ! [         a    U R                  5       s $ f = fr   )r   r	  __repr__rr   s    r%   __str__JWT.__str__  s/    	#>>## 	#==?"	#s    //c                     [        U R                  5      nSU R                   S3SU R                   S3-   SU S3-   SU R                   S3-   SU R
                   S3-   SU R                   S3-   $ )	NzJWT(header=z, zclaims=zjwt=zkey=None, algs=zdefault_claims=zcheck_claims=))r  r   rY   rZ   r\   r]   r^   )r    rh   s     r%   r-  JWT.__repr__  s    4::T\\N"-b)*cU"~ !B/0 !!1!1 2"5	6
 t112!45 	5r'   )r\   r^   rZ   rb   rY   r_   r]   rc   r[   r`   rf   ra   rd   r   )	NNNNNNNNFr   )T))r+   r,   r-   r.   r/   r   propertyrd   setterrf   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   re   r   r   r   r  r  staticmethodr  rg   r   classmethodr&  r*  r.  r-  r0   r(   r'   r%   rU   rU      s   
 @D>B:?F'P  
 ]]
 
  
 ]]) )   \\N N   ]]      __   F#P 0 0 F F6*
$A	A@4
8
J 	6_8B'$"$",&\ 	 	%N-&  "&#5r'   rU   )r   r   r   typing_extensionsr   jwcrypto.commonr   r   r   r   jwcrypto.jwer   r	   r   jwcrypto.jwkr
   r   jwcrypto.jwsr   r   JWTClaimsRegistryr  r   r4   r9   r@   rE   rK   rP   rU   r(   r'   r%   <module>r=     s       ( 6 4  9 $  9
 %%&-('$&  * . ."2[ 2$3k 3"8; 8"9K 9" B3k 3 3$1M 1$r	5 r	5r'   