Ë
    ö%9j‚M  ã                   ó€  — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
ZddlZddlZddlmZ ddlmZ dd	lmZ d
ZdZdZdZ e ej.                  d¬«      j1                  «       «      Z e ej.                  d¬«      j1                  «       «      Z e ej.                  d¬«      j1                  «       «      ZdZ eg d¢«      ZdZdZ dZ!dZ" G d„ dejF                  jH                  jJ                  «      Z& G d„ d«      Z' G d„ d«      Z( G d „ d!e	jR                  «      Z* G d"„ d#«      Z+ G d$„ d%«      Z, G d&„ d'ejZ                  «      Z. G d(„ d)ejZ                  «      Z/ G d*„ d+ej`                  «      Z1 G d,„ d-ej`                  «      Z2 G d.„ d/ejf                  «      Z4 G d0„ d1e4«      Z5 G d2„ d3e4«      Z6y)4z1Firebase token minting and validation sub module.é    N)Úcredentials)Úiam)Újwt)Ú	transport)Ú
exceptions)Ú_auth_utils)Ú_http_clientzhttps://securetoken.google.com/zXhttps://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.comz$https://session.firebase.google.com/zEhttps://www.googleapis.com/identitytoolkit/v3/relyingparty/publicKeysé   )Úminutesé   )Údaysé   )ÚhourszYhttps://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit)ÚacrÚamrÚat_hashÚaudÚ	auth_timeÚazpÚcnfÚc_hashÚexpÚfirebaseÚiatÚissÚjtiÚnbfÚnonceÚsubzZhttp://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/emailÚRS256Únonez"firebase-auth-emulator@example.comc                   ó   — e Zd ZdZd„ Zd„ Zy)Ú_EmulatedSignerNc                  ó   — y ©N© ©Úselfs    úU/var/www/html/truck-me/venv/lib/python3.12/site-packages/firebase_admin/_token_gen.pyÚ__init__z_EmulatedSigner.__init__B   s   € Øó    c                  ó   — y)Nr+   r&   ©r(   Úmessages     r)   Úsignz_EmulatedSigner.signE   s   € Ør+   )Ú__name__Ú
__module__Ú__qualname__Úkey_idr*   r/   r&   r+   r)   r#   r#   ?   s   „ Ø€Fòór+   r#   c                   óz   — e Zd ZdZefd„Zed„ «       Zed„ «       Zed„ «       Z	e
d„ «       Ze
d„ «       Ze
d„ «       Zy	)
Ú_SigningProviderz2Stores a reference to a google.auth.crypto.Signer.c                 ó.   — || _         || _        || _        y r%   )Ú_signerÚ_signer_emailÚ_alg)r(   ÚsignerÚsigner_emailÚalgs       r)   r*   z_SigningProvider.__init__L   s   € ØˆŒØ)ˆÔØˆ�	r+   c                 ó   — | j                   S r%   )r7   r'   s    r)   r:   z_SigningProvider.signerQ   s   € à�|‰|Ðr+   c                 ó   — | j                   S r%   )r8   r'   s    r)   r;   z_SigningProvider.signer_emailU   s   € à×!Ñ!Ð!r+   c                 ó   — | j                   S r%   )r9   r'   s    r)   r<   z_SigningProvider.algY   s   € à�y‰yÐr+   c                 óB   — t        |j                  |j                  «      S r%   )r5   r:   r;   )ÚclsÚgoogle_creds     r)   Úfrom_credentialz _SigningProvider.from_credential]   s   € ä × 2Ñ 2°K×4LÑ4LÓMÐMr+   c                 óH   — t        j                  |||«      }t        ||«      S r%   )r   ÚSignerr5   )rA   ÚrequestrB   Úservice_accountr:   s        r)   Úfrom_iamz_SigningProvider.from_iama   s!   € ä—‘˜G [°/ÓBˆÜ ¨Ó8Ð8r+   c                 ó<   — t        t        «       t        t        «      S r%   )r5   r#   ÚAUTH_EMULATOR_EMAILÚALGORITHM_NONE)rA   s    r)   Úfor_emulatorz_SigningProvider.for_emulatorf   s   € ä¤Ó 1Ô3FÌÓWÐWr+   N)r0   r1   r2   Ú__doc__ÚALGORITHM_RS256r*   Úpropertyr:   r;   r<   ÚclassmethodrC   rH   rL   r&   r+   r)   r5   r5   I   s‰   „ Ù<à1@ó ð
 ñó ðð ñ"ó ð"ð ñó ðð ñNó ðNð ñ9ó ð9ð ñXó ñXr+   r5   c                   ó@   — e Zd ZdZdZd	d„Zd„ Zed„ «       Zd
d„Z	d„ Z
y)ÚTokenGeneratorz,Generates custom tokens and session cookies.z)https://identitytoolkit.googleapis.com/v1Nc                 óÖ   — || _         || _        t        j                  j	                  «       | _        |xs | j                  }dj                  ||j                  «      | _	        d | _
        y )Nz{0}/projects/{1})ÚappÚhttp_clientr   ÚrequestsÚRequestrF   ÚID_TOOLKIT_URLÚformatÚ
project_idÚbase_urlÚ_signing_provider)r(   rT   rU   Úurl_overrideÚ
url_prefixs        r)   r*   zTokenGenerator.__init__p   sW   € ØˆŒØ&ˆÔÜ ×)Ñ)×1Ñ1Ó3ˆŒØ!Ò8 T×%8Ñ%8ˆ
Ø*×1Ñ1°*¸c¿n¹nÓMˆŒØ!%ˆÕr+   c                 ó8  — t        j                  «       rt        j                  «       S | j                  j
                  j                  «       }t        |t        j                  j                  j                  «      rt        j                  |«      S | j                  j                  j                  d«      }|r!t        j                  | j                   ||«      S t        |t"        j$                  «      rt        j                  |«      S | j!                  t&        ddi¬«      }|j(                  dk7  r2t+        dj-                  |j.                  j1                  «       «      «      ‚|j.                  j1                  «       }t        j                  | j                   ||«      S )zPInitializes a signing provider by following the go/firebase-admin-sign protocol.ÚserviceAccountIdzMetadata-FlavorÚGoogle)ÚurlÚheaderséÈ   z2Failed to contact the local metadata service: {0}.)r   Úis_emulatedr5   rL   rT   Ú
credentialÚget_credentialÚ
isinstanceÚgoogleÚoauth2rG   ÚCredentialsrC   ÚoptionsÚgetrH   rF   r   ÚSigningÚMETADATA_SERVICE_URLÚstatusÚ
ValueErrorrY   ÚdataÚdecode)r(   rB   rG   Úresps       r)   Ú_init_signing_providerz%TokenGenerator._init_signing_providerx   s9  € ä×"Ñ"Ô$Ü#×0Ñ0Ó2Ð2à—h‘h×)Ñ)×8Ñ8Ó:ˆÜ�k¤6§=¡=×#@Ñ#@×#LÑ#LÔMÜ#×3Ñ3°KÓ@Ð@ð Ÿ(™(×*Ñ*×.Ñ.Ð/AÓBˆÙÜ#×,Ñ,¨T¯\©\¸;ÈÓXÐXô �k¤;×#6Ñ#6Ô7Ü#×3Ñ3°KÓ@Ð@ð �|‰|Ô 4Ð?PÐRZÐ>[ˆ|Ó\ˆØ�;‰;˜#ÒÜØD×KÑKÈDÏIÉI×L\ÑL\ÓL^Ó_óað aàŸ)™)×*Ñ*Ó,ˆÜ×(Ñ(¨¯©°{ÀOÓTÐTr+   c                 óÒ   — | j                   s"	 | j                  «       | _         | j                   S | j                   S # t        $ r"}d}t        dj	                  ||«      «      ‚d}~ww xY w)z@Initializes and returns the SigningProvider instance to be used.z@https://firebase.google.com/docs/auth/admin/create-custom-tokenszøFailed to determine service account: {0}. Make sure to initialize the SDK with service account credentials or specify a service account ID with iam.serviceAccounts.signBlob permission. Please refer to {1} for more details on creating custom tokens.N)r\   ru   Ú	Exceptionrq   rY   )r(   Úerrorrb   s      r)   Úsigning_providerzTokenGenerator.signing_provider•   sy   € ð ×%Ò%ðMØ)-×)DÑ)DÓ)F�Ô&ð ×%Ñ%Ð%ˆt×%Ñ%Ð%øô ò MØX�Ü ð9÷ :@¹ÀÀsÓ9Kó	Mð MûðMús   Ž; »	A&ÁA!Á!A&c                 óV  — |�¡t        |t        «      st        d«      ‚t        |j	                  «       «      t
        z  }|rdt        |«      dkD  r+dj                  dj                  |«      «      }t        |«      ‚dj                  dj                  |«      «      }t        |«      ‚|rt        |t        «      rt        |«      dkD  rt        d«      ‚| j                  }t        t        j                  «       «      }|j                  |j                  t        |||t        z   d	œ}|r||d
<   |�||d<   d|j                   i}		 t#        j$                  |j&                  ||	¬«      S # t(        j*                  j,                  j.                  $ r"}
dj                  |
«      }t1        ||
«      ‚d}
~
ww xY w)z.Builds and signs a Firebase custom auth token.Nz%developer_claims must be a dictionaryr   z:Developer claims {0} are reserved and cannot be specified.z, z8Developer claim {0} is reserved and cannot be specified.é€   z2uid must be a string between 1 and 128 characters.)r   r   r   Úuidr   r   Ú	tenant_idÚclaimsr<   )Úheaderz Failed to sign custom token. {0})rh   Údictrq   ÚsetÚkeysÚRESERVED_CLAIMSÚlenrY   ÚjoinÚstrry   ÚintÚtimer;   ÚFIREBASE_AUDIENCEÚMAX_TOKEN_LIFETIME_SECONDSr<   r   Úencoder:   ri   Úauthr   ÚTransportErrorÚTokenSignError)r(   r|   Údeveloper_claimsr}   Údisallowed_keysÚerror_messagery   ÚnowÚpayloadr   rx   Úmsgs               r)   Úcreate_custom_tokenz"TokenGenerator.create_custom_token¤   s™  € àÐ'ÜÐ.´Ô5Ü Ð!HÓIÐIä!Ð"2×"7Ñ"7Ó"9Ó:¼_ÑLˆOÙÜ�Ó'¨!Ò+ð&<ß<B¹FØ)-¯©°?Ó)Có=Eð "ô ! Ó/Ð/ð&<ß<B¹FØ)-¯©°?Ó)Có=Eð "ô ! Ó/Ð/áœ* S¬#Ô.´#°c³(¸S².ÜÐQÓRÐRà×0Ñ0ÐÜ”$—)‘)“+Óˆà#×0Ñ0Ø#×0Ñ0Ü$ØØØÔ3Ñ3ñ
ˆñ Ø#,ˆG�KÑ àÐ'Ø 0ˆG�HÑàÐ)×-Ñ-Ð.ˆð	-Ü—:‘:Ð.×5Ñ5°wÀvÔNÐNøÜ�{‰{×%Ñ%×4Ñ4ò 	-Ø4×;Ñ;¸EÓBˆCÜ   eÓ,Ð,ûð	-ús   Ä=!E Å'F(ÆF#Æ#F(c                 óˆ  — t        |t        «      r|j                  d«      n|}t        |t        «      r|st	        dj                  |«      «      ‚t        |t        j                  «      rt        |j                  «       «      }t        |t        «      st        |t        «      st	        dj                  |«      «      ‚|t        k  rt	        dj                  |t        «      «      ‚|t        kD  rt	        dj                  |t        «      «      ‚dj                  | j                  «      }||dœ}	 | j                  j                  d||¬	«      \  }}|r|j!                  d
«      st#        j$                  d|¬«      ‚|j!                  d
«      S # t&        j(                  j*                  $ r}t#        j,                  |«      ‚d}~ww xY w)z4Creates a session cookie from the provided ID token.úutf-8zDIllegal ID token provided: {0}. ID token must be a non-empty string.zIllegal expiry duration: {0}.zDIllegal expiry duration: {0}. Duration must be at least {1} seconds.zCIllegal expiry duration: {0}. Duration must be at most {1} seconds.z{0}:createSessionCookie)ÚidTokenÚvalidDurationÚpost)ÚjsonÚsessionCookiez Failed to create session cookie.)Úhttp_responseN)rh   Úbytesrs   r†   rq   rY   ÚdatetimeÚ	timedeltar‡   Útotal_secondsÚboolÚ#MIN_SESSION_COOKIE_DURATION_SECONDSÚ#MAX_SESSION_COOKIE_DURATION_SECONDSr[   rU   Úbody_and_responserm   r   ÚUnexpectedResponseErrorrV   r   ÚRequestExceptionÚhandle_auth_backend_error)r(   Úid_tokenÚ
expires_inrb   r“   ÚbodyÚ	http_resprx   s           r)   Úcreate_session_cookiez$TokenGenerator.create_session_cookieÑ   s™  € ä/9¸(ÄEÔ/J�8—?‘? 7Ô+ÐPXˆÜ˜(¤CÔ(±Üðß ™& Ó*ó,ð ,ô �j¤(×"4Ñ"4Ô5Ü˜Z×5Ñ5Ó7Ó8ˆJÜ�j¤$Ô'¬z¸*ÄcÔ/JÜÐ<×CÑCÀJÓOÓPÐPØÔ;Ò;Üð (ß(.©¨zÔ;^Ó(_óað aàÔ;Ò;Üð (ß(.©¨zÔ;^Ó(_óað að (×.Ñ.¨t¯}©}Ó=ˆàØ'ñ
ˆð	-Ø"×.Ñ.×@Ñ@ÀÈÐSZÐ@Ó[‰OˆD�)ñ ˜tŸx™x¨Ô8Ü!×9Ñ9Ø6ÀiôQð Qà—8‘8˜OÓ,Ð,øô ×"Ñ"×3Ñ3ò 	?Ü×7Ñ7¸Ó>Ð>ûð	?ús   Ä.!F
 Æ
GÆ'F<Æ<Gr%   )NN)r0   r1   r2   rM   rX   r*   ru   rO   ry   r•   r­   r&   r+   r)   rR   rR   k   s4   „ Ù6à@€Nó&òUð: ñ&ó ð&ó*-óZ -r+   rR   c                   ó@   — e Zd ZdZdd„Zed„ «       Zed„ «       Zdd„Zy)	ÚCertificateFetchRequestzyA google-auth transport that supports HTTP cache-control.

    Also injects a timeout to each outgoing HTTP request.
    Nc                 óÆ   — t        j                  t        j                  «       «      | _        t
        j                  j                  | j                  «      | _        || _	        y r%   )
ÚcachecontrolÚCacheControlrV   ÚSessionÚ_sessionr   rW   ÚsessionÚ	_delegateÚ_timeout_seconds)r(   Útimeout_secondss     r)   r*   z CertificateFetchRequest.__init__ú   sA   € Ü$×1Ñ1´(×2BÑ2BÓ2DÓEˆŒÜ"×+Ñ+×3Ñ3°D·L±LÓAˆŒØ /ˆÕr+   c                 ó   — | j                   S r%   )r´   r'   s    r)   rµ   zCertificateFetchRequest.sessionÿ   s   € à�}‰}Ðr+   c                 ó   — | j                   S r%   )r·   r'   s    r)   r¸   z'CertificateFetchRequest.timeout_seconds  s   € à×$Ñ$Ð$r+   c                 óR   — |xs | j                   } | j                  |f||||dœ|¤ŽS )N)Úmethodr«   rc   Útimeout)r¸   r¶   )r(   rb   r¼   r«   rc   r½   Úkwargss          r)   Ú__call__z CertificateFetchRequest.__call__  sB   € ØÒ1˜T×1Ñ1ˆØˆt�~‰~ØðWØ T°7ÀGñWØOUñWð 	Wr+   r%   )ÚGETNNN)	r0   r1   r2   rM   r*   rO   rµ   r¸   r¿   r&   r+   r)   r¯   r¯   ô   s:   „ ñó
0ð
 ñó ðð ñ%ó ð%ôWr+   r¯   c                   ó&   — e Zd ZdZd„ Zdd„Zdd„Zy)ÚTokenVerifierz'Verifies ID tokens and session cookies.c           
      óT  — |j                   j                  dt        j                  «      }t	        |«      | _        t        |j                  dddt        t        t        j                  t        ¬«      | _        t        |j                  dddt        t        t         t"        ¬«      | _        y )NÚhttpTimeoutzID tokenzverify_id_token()z<https://firebase.google.com/docs/auth/admin/verify-id-tokens)rZ   Ú
short_nameÚ	operationÚdoc_urlÚcert_urlÚissuerÚinvalid_token_errorÚexpired_token_errorzsession cookiezverify_session_cookie())rl   rm   r	   ÚDEFAULT_TIMEOUT_SECONDSr¯   rF   Ú_JWTVerifierrZ   ÚID_TOKEN_CERT_URIÚID_TOKEN_ISSUER_PREFIXr   ÚInvalidIdTokenErrorÚExpiredIdTokenErrorÚid_token_verifierÚCOOKIE_CERT_URIÚCOOKIE_ISSUER_PREFIXÚInvalidSessionCookieErrorÚExpiredSessionCookieErrorÚcookie_verifier)r(   rT   r½   s      r)   r*   zTokenVerifier.__init__  s�   € Ø—+‘+—/‘/ -´×1UÑ1UÓVˆÜ.¨wÓ7ˆŒÜ!-Ø—~‘~°*Ø)ØRÜ&Ü)Ü +× ?Ñ ?Ü 3ô"5ˆÔô  ,Ø—~‘~Ð2BØ/ØRÜ$Ü'Ü 9Ü 9ô ;ˆÕr+   c                 óP   — | j                   j                  || j                  |«      S r%   )rÒ   ÚverifyrF   )r(   r©   Úclock_skew_secondss      r)   Úverify_id_tokenzTokenVerifier.verify_id_token$  s"   € Ø×%Ñ%×,Ñ,¨X°t·|±|ÐEWÓXÐXr+   c                 óP   — | j                   j                  || j                  |«      S r%   )r×   rÙ   rF   )r(   ÚcookierÚ   s      r)   Úverify_session_cookiez#TokenVerifier.verify_session_cookie'  s"   € Ø×#Ñ#×*Ñ*¨6°4·<±<ÐASÓTÐTr+   N©r   )r0   r1   r2   rM   r*   rÛ   rÞ   r&   r+   r)   rÂ   rÂ     s   „ Ù1ò;ó(YôUr+   rÂ   c                   ó$   — e Zd ZdZd„ Zdd„Zd„ Zy)rÍ   z6Verifies Firebase JWTs (ID tokens or session cookies).c                 ó$  — |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        | j                  d   j                  «       dv r!d	j                  | j                  «      | _	        n d
j                  | j                  «      | _	        |j                  d«      | _
        |j                  d«      | _        y )NrZ   rÅ   rÆ   rÇ   rÈ   rÉ   r   Úaeiouzan {0}za {0}rÊ   rË   )ÚpoprZ   rÅ   rÆ   rb   rÈ   rÉ   ÚlowerrY   Úarticled_short_nameÚ_invalid_token_errorÚ_expired_token_error)r(   r¾   s     r)   r*   z_JWTVerifier.__init__.  sÊ   € Ø Ÿ*™* \Ó2ˆŒØ Ÿ*™* \Ó2ˆŒØŸ™ KÓ0ˆŒØ—:‘:˜iÓ(ˆŒØŸ
™
 :Ó.ˆŒØ—j‘j Ó*ˆŒØ�?‰?˜1Ñ×#Ñ#Ó%¨Ñ0Ø'/§¡°t·±Ó'GˆDÕ$à'.§~¡~°d·o±oÓ'FˆDÔ$Ø$*§J¡JÐ/DÓ$EˆÔ!Ø$*§J¡JÐ/DÓ$EˆÕ!r+   c                 ó~  — t        |t        «      r|j                  d«      n|}t        |t        «      r|s%t	        dj                  | j                  |«      «      ‚| j                  s$t	        dj                  | j                  «      «      ‚|dk  s|dkD  rt	        dj                  |«      «      ‚| j                  |«      \  }}|j                  d«      }|j                  d«      }|j                  d	«      }| j                  | j                  z   }	d
j                  | j                  «      }
dj                  | j                  | j                  «      }t        j                  «       }d}|t        k(  r(dj                  | j                  | j                   «      }�n­|s’|j                  d«      s�|j                  d«      dk(  rP|j                  d«      dk(  r<d|j                  di «      v r(dj                  | j                  | j                   «      }�n6dj                  | j                  «      }�n|sA|j                  d«      dk7  r-dj                  | j                  |j                  d«      |«      }nÖ|| j                  k7  r*dj                  | j                  | j                  ||
|«      }n�||	k7  r dj                  | j                  |	||
|«      }nx|�t        |t        «      sdj                  | j                  |«      }nI|sdj                  | j                  |«      }n*t#        |«      dkD  rdj                  | j                  |«      }|r| j%                  |«      ‚	 |r|}nBt&        j(                  j*                  j-                  ||| j                  | j.                  |¬«      }|d	   |d<   |S # t&        j0                  j2                  j4                  $ r}t7        t        |«      |¬«      ‚d}~wt        $ rJ}d t        |«      v r| j9                  t        |«      |¬«      ‚| j%                  t        |«      |¬«      ‚d}~ww xY w)!z5Verifies the signature and data for the provided JWT.r—   z:Illegal {0} provided: {1}. {0} must be a non-empty string.a  Failed to ascertain project ID from the credential or the environment. Project ID is required to call {0}. Initialize the app with a credentials.Certificate or set your Firebase project ID as an app option. Alternatively set the GOOGLE_CLOUD_PROJECT environment variable.r   é<   zKIllegal clock_skew_seconds value: {0}. Must be between 0 and 60, inclusive.r   r   r   zlMake sure the {0} comes from the same Firebase project as the service account used to authenticate this SDK.z+See {0} for details on how to retrieve {1}.Nz.{0} expects {1}, but was given a custom token.Úkidr<   ÚHS256Úvr|   Údz5{0} expects {1}, but was given a legacy custom token.z Firebase {0} has no "kid" claim.r    zIFirebase {0} has incorrect algorithm. Expected "RS256" but got "{1}". {2}zXFirebase {0} has incorrect "aud" (audience) claim. Expected "{1}" but got "{2}". {3} {4}zVFirebase {0} has incorrect "iss" (issuer) claim. Expected "{1}" but got "{2}". {3} {4}z.Firebase {0} has no "sub" (subject) claim. {1}z;Firebase {0} has an empty string "sub" (subject) claim. {1}r{   zHFirebase {0} has a "sub" (subject) claim longer than 128 characters. {1})rF   ÚaudienceÚ	certs_urlÚclock_skew_in_seconds©ÚcausezToken expired)rh   r†   r‹   rž   rq   rY   rÅ   rZ   rÆ   Ú_decode_unverifiedrm   rÉ   rb   r   re   r‰   rå   r„   ræ   ri   rj   r©   Úverify_tokenrÈ   rŒ   r   r�   ÚCertificateFetchErrorrç   )r(   ÚtokenrF   rÚ   r   r“   rÉ   rî   ÚsubjectÚexpected_issuerÚproject_id_match_msgÚverify_id_token_msgÚemulatedr‘   Úverified_claimsrx   s                   r)   rÙ   z_JWTVerifier.verify<  sî  € ä)3°E¼3Ô)?�—‘˜WÔ%ÀUˆÜ˜%¤Ô'©uÜðß ™& §¡°%Ó8ó:ð :ð �ŠÜð=÷ >D¹VÀDÇNÁNÓ=Só	Uð Uð  Ò!Ð%7¸"Ò%<ÜØ]ß‘Ð*Ó+ó-ð -ð ×1Ñ1°%Ó8‰ˆ�Ø—‘˜UÓ#ˆØ—;‘;˜uÓ%ˆØ—+‘+˜eÓ$ˆØŸ+™+¨¯©Ñ7ˆð(ß(.©¨t¯©Ó(?ð 	ð :×@Ñ@ÀÇÁÈ4Ï?É?Ó[ð 	ô ×*Ñ*Ó,ˆàˆØÔ(Ò(ðß™ §¡°×0HÑ0HÓIò ñ  &§*¡*¨UÔ"3Ø�z‰z˜%Ó  GÒ+°·±Øó1Øò1Ø"'¨7¯;©;°s¸BÓ+?Ñ"?ðß#™V D§N¡N°D×4LÑ4LÓMò ð !C× IÑ IÈ$Ï/É/Ó Z’Ù˜fŸj™j¨Ó/°7Ò:ðß#™V D§O¡O°V·Z±ZÀÓ5FÐH[Ó\ñ ð ˜Ÿ™Ò(ð%ß%+¡V¨D¯O©O¸T¿_¹_ÈhØ,@ÐBUó&Wñ ð �Ò&ð%ß%+¡V¨D¯O©O¸_ÈfØ,@ÐBUó&Wñ ð ˆ_¤J¨w¼Ô$<ðß‘f˜TŸ_™_Ð.AÓBñ ñ ðß‘f˜TŸ_™_Ð.AÓBñ ô �‹\˜CÒðß‘f˜TŸ_™_Ð.AÓBð ñ Ø×+Ñ+¨MÓ:Ð:ð	EÙØ")‘ä"(§-¡-×"8Ñ"8×"EÑ"EØØ#Ø!Ÿ_™_Ø"Ÿm™mØ*<ð #Fó #>�ð &5°UÑ%;ˆO˜EÑ"Ø"Ð"øÜ�{‰{×%Ñ%×4Ñ4ò 	AÜ'¬¨E«
¸%Ô@Ð@ûÜò 	EØ¤# e£*Ñ,Ø×/Ñ/´°E³
À%Ð/ÓHÐHØ×+Ñ+¬C°«J¸eÐ+ÓDÐDûð	Eús&   ÍAN) Î)'P<ÏO&Ï&P<Ï2AP7Ð7P<c                 ó¾   — 	 t        j                  |«      }t        j                  |d¬«      }||fS # t        $ r!}| j	                  t        |«      |¬«      ‚d }~ww xY w)NF)rÙ   rñ   )r   Údecode_headerrs   rq   ræ   r†   )r(   rö   r   r“   rx   s        r)   ró   z_JWTVerifier._decode_unverifiedœ  s^   € ð	EÜ×&Ñ& uÓ-ˆFÜ—j‘j ¨uÔ5ˆGØ˜7�?Ð"øÜò 	EØ×+Ñ+¬C°«J¸eÐ+ÓDÐDûð	Eús   ‚/2 ²	A»AÁANrß   )r0   r1   r2   rM   r*   rÙ   ró   r&   r+   r)   rÍ   rÍ   +  s   „ Ù@òFó^Eó@Er+   rÍ   c                   ó   — e Zd ZdZd„ Zy)rŽ   z7Unexpected error while signing a Firebase custom token.c                 óF   — t         j                  j                  | ||«       y r%   ©r   ÚUnknownErrorr*   ©r(   r.   rò   s      r)   r*   zTokenSignError.__init__¨  ó   € Ü×Ñ×(Ñ(¨¨w¸Õ>r+   N©r0   r1   r2   rM   r*   r&   r+   r)   rŽ   rŽ   ¥  s
   „ ÙAó?r+   rŽ   c                   ó   — e Zd ZdZd„ Zy)rõ   zHFailed to fetch some public key certificates required to verify a token.c                 óF   — t         j                  j                  | ||«       y r%   r  r  s      r)   r*   zCertificateFetchError.__init__¯  r  r+   Nr  r&   r+   r)   rõ   rõ   ¬  s
   „ ÙRó?r+   rõ   c                   ó   — e Zd ZdZd„ Zy)rÑ   z!The provided ID token is expired.c                 óF   — t         j                  j                  | ||«       y r%   ©r   rÐ   r*   r  s      r)   r*   zExpiredIdTokenError.__init__¶  s   € Ü×'Ñ'×0Ñ0°°wÀÕFr+   Nr  r&   r+   r)   rÑ   rÑ   ³  s   „ Ù+óGr+   rÑ   c                   ó   — e Zd ZdZd„ Zy)ÚRevokedIdTokenErrorz'The provided ID token has been revoked.c                 óD   — t         j                  j                  | |«       y r%   r
  r-   s     r)   r*   zRevokedIdTokenError.__init__½  s   € Ü×'Ñ'×0Ñ0°°wÕ?r+   Nr  r&   r+   r)   r  r  º  s   „ Ù1ó@r+   r  c                   ó   — e Zd ZdZdd„Zy)rÕ   z;The provided string is not a valid Firebase session cookie.Nc                 óF   — t         j                  j                  | ||«       y r%   )r   ÚInvalidArgumentErrorr*   r  s      r)   r*   z"InvalidSessionCookieError.__init__Ä  s   € Ü×'Ñ'×0Ñ0°°wÀÕFr+   r%   r  r&   r+   r)   rÕ   rÕ   Á  s   „ ÙEôGr+   rÕ   c                   ó   — e Zd ZdZd„ Zy)rÖ   z'The provided session cookie is expired.c                 ó2   — t         j                  | ||«       y r%   ©rÕ   r*   r  s      r)   r*   z"ExpiredSessionCookieError.__init__Ë  s   € Ü!×*Ñ*¨4°¸%Õ@r+   Nr  r&   r+   r)   rÖ   rÖ   È  s   „ Ù1óAr+   rÖ   c                   ó   — e Zd ZdZd„ Zy)ÚRevokedSessionCookieErrorz-The provided session cookie has been revoked.c                 ó0   — t         j                  | |«       y r%   r  r-   s     r)   r*   z"RevokedSessionCookieError.__init__Ò  s   € Ü!×*Ñ*¨4°Õ9r+   Nr  r&   r+   r)   r  r  Ï  s
   „ Ù7ó:r+   r  )7rM   rŸ   rˆ   r±   rV   Úgoogle.authr   r   r   r   Úgoogle.auth.exceptionsri   Úgoogle.oauth2.id_tokenÚgoogle.oauth2.service_accountÚfirebase_adminr   r   r	   rÏ   rÎ   rÔ   rÓ   r‡   r    r¡   r£   r¤   rŠ   r‰   r�   rƒ   ro   rN   rK   rJ   rŒ   ÚcryptrE   r#   r5   rR   rW   r¯   rÂ   rÍ   r  rŽ   rõ   rÐ   rÑ   r  r  rÕ   rÖ   r  r&   r+   r)   ú<module>r     sÌ  ðñ 8ã Û ã Û Ý #Ý Ý Ý !Û Û Û $å %Ý &Ý 'ð ;Ð ð>Ð ð >Ð ØY€Ù&)Ð*<¨(×*<Ñ*<ÀQÔ*G×*UÑ*UÓ*WÓ&XÐ #Ù&)Ð*<¨(×*<Ñ*<À"Ô*E×*SÑ*SÓ*UÓ&VÐ #ñ !Ð!3 ×!3Ñ!3¸!Ô!<×!JÑ!JÓ!LÓMÐ ðCÐ áò ó €ð9Ð à€Ø€ð ;Ð ô�f—k‘k×'Ñ'×.Ñ.ô ÷Xñ X÷DF-ñ F-ôRW˜i×/Ñ/ô W÷2Uñ U÷<wEñ wEôt?�Z×,Ñ,ô ?ô?˜J×3Ñ3ô ?ôG˜+×9Ñ9ô Gô@˜+×9Ñ9ô @ôG 
× ?Ñ ?ô GôAÐ 9ô Aô:Ð 9õ :r+   