+
    –°³jöM  ã                   ó8  a € R4 t=0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht ^ RIHt ^RIHt ^RIHtHtHt ^RIHt ^RIHt ^R	IHtHt R
tRtR R ltRs]! 4       tRs ] ^ k ]PB                  ! ]"4      t#R R lt$R R lt%R R lt&R R lt' ! R R]4      t(]! 4       t)Rs*] ^k Rt+R R lt, ! R R]4      t-]! 4       t.Rs/] ^k R5t0Rt1Rs2R R lt3R  R! lt4R" R# lt5R$ R% lt6R& R' lt7R( R) lt8R* R+ lt9R, R- lt:R.RR/R/R0 R1 llt;R2 R3 lt<R# )6zVContains a helper to get the token from machine (env variable, secret or config file).N)ÚPath)ÚLock)Ú	TypedDict)Ú	constants)ÚDeviceCodeErrorÚOAuthErrorCodeÚ	OIDCError)ÚWeakFileLock)Úrefresh_access_token)Úis_colab_enterpriseÚis_google_colabi€  iÀ  c                ó4   € V ^8„  d   QhR\         R\        RR/# )é   ÚpathÚcontentÚreturnN)r   Ústr)Úformats   "Ú\/home/luca/screen-checking/.venv/lib/python3.14/site-packages/huggingface_hub/utils/_auth.pyÚ__annotate__r   %   s!   € ÷ ñ œð ¤sð ¨tñ ó    c                ó6  € V P                   P                  RR\        R7       \        P                  ! \        V 4      \        P                  \        P                  ,          \        P                  ,          \        4      p\        P                  ! VR4      ;_uu_ 4       pVP                  V4       RRR4        V P                  \        4       V P                   P                  \        4       R#   + '       g   i     LG; i  \        \        3 d     R# i ; i)ziWrite content to file, restricting both the file and its parent directory to owner-only on POSIX systems.T)ÚparentsÚexist_okÚmodeÚwN)ÚparentÚmkdirÚ_SECRET_DIR_MODEÚosÚopenr   ÚO_WRONLYÚO_CREATÚO_TRUNCÚ_SECRET_FILE_MODEÚfdopenÚwriteÚchmodÚOSErrorÚNotImplementedError)r   r   ÚfdÚfs   &&  r   Ú_write_secretr,   %   s´   € à‡K�K×Ñ˜d¨TÔ8HÐÔIÜ	�Š”�T“œBŸK™K¬"¯*©*Õ4´r·z±zÕAÔCTÓ	U€BÜ	�Š�2�s×	Ô	˜qØ	�‰�Ô÷ 
ðØ�
‰
Ô$Ô%Ø�‰×ÑÔ*Ö+÷	 
×	ûô
 Ô(Ð)ô âðús   ÂC0Â:4D Ã0D 	ÄDÄDFc                ó2   € V ^8„  d   QhR\         R,          /# ©r   r   N©r   )r   s   "r   r   r   :   s   € ÷ ñ ”3˜•:ñ r   c                 ó‚   € \        4       ;'       g/    \        4       ;'       g    \        4       ;'       g    \        4       # )a%  
Get token if user is logged in.

Note: in most cases, you should use [`huggingface_hub.utils.build_hf_headers`] instead. This method is only useful
      if you want to retrieve the token for other purposes than sending an HTTP request.

If `HF_OIDC_RESOURCE` is set (Trusted Publishers, typically in CI), a short-lived token obtained via OIDC token
exchange takes precedence. Otherwise the token is retrieved from the `HF_TOKEN` environment variable, then from the
token file in the Hugging Face home folder. Returns None if user is not logged in. To log in, use [`login`] or
`hf auth login`.

OAuth tokens obtained with the browser-based login come with a refresh token: when such a token is close to
expiry, it is transparently refreshed and persisted before being returned.

Note: if `HF_OIDC_RESOURCE` is set but the OIDC token exchange fails, this raises instead of returning `None`,
opting into OIDC is explicit, so a failure surfaces as a clear error rather than a silent fallback.

Returns:
    `str` or `None`: The token, `None` if it doesn't exist.
)Ú_get_token_from_oidcÚ_get_token_from_environmentÚ_get_token_from_file_refreshedÚ_get_token_from_google_colab© r   r   Ú	get_tokenr6   :   sA   € ô, 	Ó÷ 	*ð 	*Ü&Ó(÷	*ð 	*ä)Ó+÷	*ð 	*ô (Ó)ð	r   c                ó2   € V ^8„  d   QhR\         R,          /# r.   r/   )r   s   "r   r   r   W   s   € ÷ 7$ñ 7$¤c¨D¥jñ 7$r   c            	     óˆ  € \        4       '       d   \        4       '       d   R# \        ;_uu_ 4        \        '       d   \        uuRRR4       #  ^ RIHp  ^ RIHp  T P                  R4      p\        T4      sR	s\        uuRRR4       #   \         d     RRR4       R# i ; i  T P                   d    \        P                  ! R4       Rs LWT P                   d    \         P#                  R4       Rs L€T d0   p\        P                  ! R\%        T4       R24       Rs Rp?L°Rp?ii ; i  + '       g   i     R# ; i)
z×Get token from Google Colab secrets vault using `google.colab.userdata.get(...)`.

Token is read from the vault only once per session and then stored in a global variable to avoid re-requesting
access to the vault.
N)Úuserdata)ÚErrorÚHF_TOKENz¥
Access to the secret `HF_TOKEN` has not been granted on this notebook.
You will not be requested again.
Please restart the session if you want to be prompted again.z¯The secret `HF_TOKEN` does not exist in your Colab secrets. Run `huggingface_hub.login()` to authenticate (recommended but still optional to access public models or datasets).z@
Error while fetching `HF_TOKEN` secret value from your vault: 'z'.T)r   r   Ú_GOOGLE_COLAB_SECRET_LOCKÚ_IS_GOOGLE_COLAB_CHECKEDÚ_GOOGLE_COLAB_SECRETÚgoogle.colabr9   Úgoogle.colab.errorsr:   ÚImportErrorÚgetÚ_clean_tokenÚNotebookAccessErrorÚwarningsÚwarnÚSecretNotFoundErrorÚloggerÚinfor   )r9   Ú
ColabErrorÚtokenÚes       r   r4   r4   W   s$  € ô ×ÒÔ 3× 5Ò 5Ù÷ 
#Ö	"÷ $Ó#Ü'÷ 
#Ò	"ð	Ý-Ý?ð	(Ø—L‘L Ó,ˆEÜ#/°Ó#6Ð ð0 $(Ð Ü#÷Q 
#Ò	"øô ô 	Ø÷ 
#Ñ	"ð	ûð ×+Ñ+ô 	(ô �MŠMðQôð
 $(Ò Ø×+Ñ+ô 	(ô �K‰Kðfôð $(Ò Øô 	(ä�MŠMÐ]Ô^aÐbcÓ^dÐ]eÐegÐhÔiØ#'Õ ûð	(ú÷E 
#×	"Ð	"úsw   ±D0ÁB
ÁB$Á8D0Â
B!ÂD0Â B!Â!D0Â$)D-ÃD0ÃD-ÃD-Ã6D0Ã8D-Ã=D-Ã>%D(Ä#D0Ä(D-Ä-D0Ä0E	c                ó2   € V ^8„  d   QhR\         R,          /# r.   r/   )r   s   "r   r   r   ‘   s   € ÷ `ñ `¤S¨4¥Zñ `r   c                  ó    € \        \        P                  P                  R 4      ;'       g     \        P                  P                  R4      4      # )r;   ÚHUGGING_FACE_HUB_TOKEN)rC   r   ÚenvironrB   r5   r   r   r2   r2   ‘   s0   € äœŸ
™
Ÿ™ zÓ2×^Ð^´b·j±j·n±nÐE]Ó6^Ó_Ð_r   c                ó2   € V ^8„  d   QhR\         R,          /# r.   r/   )r   s   "r   r   r   –   s   € ÷ ñ œc D�jñ r   c                  óˆ   €  \        \        \        P                  4      P	                  4       4      #   \
         d     R # i ; i)N)rC   r   r   ÚHF_TOKEN_PATHÚ	read_textÚFileNotFoundErrorr5   r   r   Ú_get_token_from_filerV   –   s8   € ðÜœD¤×!8Ñ!8Ó9×CÑCÓEÓFÐFøÜô Úðús   ‚/2 ²AÁ Ac                   ó,   a € ] tR t^�t o V 3R ltRtV tR# )Ú_OidcTokenCachec                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[;R&   # )r   ÚresourcerK   Ú
expires_at©r   Úfloat)r   Ú__classdict__s   "€r   r   Ú_OidcTokenCache.__annotate__�   s&   ø‡ ‚ Ù�Mñ á�Jñ ñ Ñò r   r5   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r^   s   @r   rX   rX   �   ó   ø‡ ‡ „ r   rX   i,  c                ó2   € V ^8„  d   QhR\         R,          /# r.   r/   )r   s   "r   r   r   ª   s   € ÷ 0ñ 0œc D�jñ 0r   c                 ó¤  € \         P                  P                  R4      p V '       g   R# ^RIHpHp \        ;_uu_ 4        \        P                  ! 4       p\        e<   \        R,          V 8X  d*   V\        R,          8  d   \        R,          uuRRR4       # \         P                  P                  R4      ;'       g    RpVf   V! 4       f   \        R4      hV! WR	7      pVR
,          p\        VP                  RR4      4      pVe   ^ M\        pRV RVRV\        Wx,
          ^ 4      ,           /s	VuuRRR4       #   + '       g   i     R# ; i)aÓ  Get a short-lived OIDC token in CI (Trusted Publishers).

Enabled by setting `HF_OIDC_RESOURCE`, which scopes the token to a repo or user.
The ID token is read from `HF_OIDC_ID_TOKEN` if available, or minted from a supported CI provider (e.g. GitHub Actions).

Returns `None` when OIDC is not enabled.
If enabled, any failure is raised explicitly rather than falling back silently.

See `huggingface_hub._oidc` and https://huggingface.co/docs/hub/trusted-publishers.
ÚHF_OIDC_RESOURCEN)Údetect_providerÚ
oidc_loginrZ   r[   rK   ÚHF_OIDC_ID_TOKENzçHF_OIDC_RESOURCE is set but no OIDC id token is available: not running in a supported CI provider (github) and HF_OIDC_ID_TOKEN is not set. Set HF_OIDC_ID_TOKEN to the id token minted by your CI provider, or unset HF_OIDC_RESOURCE.)rZ   Úsubject_tokenÚaccess_tokenÚ
expires_ini  )r   rP   rB   Ú_oidcrm   rn   Ú_OIDC_TOKEN_LOCKÚtimeÚ	monotonicÚ_OIDC_TOKEN_CACHEr   ÚintÚ_OIDC_REFRESH_MARGINÚmax)	rZ   rm   rn   Únowrp   ÚresultrK   rr   Úmargins	            r   r1   r1   ª   s  € ô �z‰z�~‰~Ð0Ó1€HßÙç3÷ 
Ö	Ü�nŠnÓˆäÒ)Ü! *Õ-°Ô9ØÔ'¨Õ5Ô5ä$ WÕ-÷ 
Ò	ô Ÿ
™
Ÿ™Ð'9Ó:×BÐB¸dˆØÒ ¡_Ó%6Ò%>ÜðOóð ñ  XÔKˆØ�~Õ&ˆÜ˜Ÿ™ L°$Ó7Ó8ˆ
ð $Ò/‘Ô5Iˆà˜Ø�UØ˜#¤ JÕ$7¸Ó ;Õ;ð
Ðð
 ÷= 
×	×	Ó	ús   Á AD>Â%D>Â?A4D>Ä>E	c                   ó,   a € ] tR t^Ýt o V 3R ltRtV tR# )Ú_OAuthRefreshCachec                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[;R&   # )r   Ú
file_tokenÚresolved_tokenÚ
recheck_atr\   )r   r^   s   "€r   r   Ú_OAuthRefreshCache.__annotate__Ý   s'   ø‡ ‚ Ù�Oñ áÑñ ñ Ñò r   r5   Nr`   rh   s   @r   r   r   Ý   ri   r   r   c                ó2   € V ^8„  d   QhR\         R,          /# r.   r/   )r   s   "r   r   r   ì   s   € ÷ 1ñ 1¬¨d­
ñ 1r   c                 ó8   € \        4       p V f   R# \        V 4      # )zSGet the token from `HF_TOKEN_PATH`, transparently refreshing it if close to expiry.N)rV   Ú_refresh_oauth_token_if_needed©rK   s    r   r3   r3   ì   s   € ä Ó"€EØ‚}ÙÜ)¨%Ó0Ð0r   c                ó0   € V ^8„  d   QhR\         R\         /# )r   rK   r   r/   )r   s   "r   r   r   ô   s   € ÷ `ñ `¬#ð `´#ñ `r   c                óÖ  a € \         ;_uu_ 4        \        P                  ! 4       p\        pVe/   VR,          S 8X  d!   WR,          8  d   VR,          uuRRR4       # \        V 3R l\	        4       P                  4        4       R/ 34      w  r4VP                  R4      p\        V4      pVe	   Ve   VfA   \        4       pVe   VS 8w  d   VuuRRR4       # RS RS RV\        ,           /sS uuRRR4       # V\        ,
          V8”  d    RS RS RV\        ,
          /sS uuRRR4       #  \        \        P                  R,           ^R7      ;_uu_ 4        \	        4       P                  V/ 4      pVP                  R	4      S 8w  d(   VP                  R	4      ;'       g    S p\        V4      p	M²\        V4      p
V
R
,          pRV
9   d#   \        V4      \        V
R,          4      ,           MRp	\!        TTV
P                  R4      ;'       g    TV	R7       \        4       S 8X  d$   \#        \%        \        P&                  4      V4       \(        P+                  RV R24       RRR4       RXRTR\?        T\        ,           X	'       d   T	\        ,
          M^ 4      /sTuuRRR4       #   + '       g   i     LN; i  \,         d•   p\/        T\0        4      '       dE   TP2                  \4        P6                  8X  d&   \(        P9                  RT R24       \;        R4      pM\=        RT R24       T\        ,           pRS RS RT/sS u Rp?uuRRR4       # Rp?ii ; i  + '       g   i     R# ; i)a  Refresh an OAuth access token if it is close to expiry. Best-effort: never raises.

OAuth tokens obtained with the browser-based login are stored with a `refresh_token` and an
`expires_at` timestamp (see `_save_token`). When the active token is one of them and about to
expire, exchange the refresh token for a new access token and persist it. Any other token is
returned unchanged.
Nr�   rƒ   r‚   c              3   ó^   <"  € T F"  w  rVP                  R 4      S8X  g   K  W3x € K$  	  R# 5i)Úhf_tokenN)rB   )Ú.0ÚnameÚfieldsrK   s   &  €r   Ú	<genexpr>Ú1_refresh_oauth_token_if_needed.<locals>.<genexpr>  s.   øé € ÐvÑ0R¡ ÐV\×V`ÑV`ÐakÓVlÐpuÑVuŒ^ˆd�^Ó0Rùs   ƒ-¢-Úrefresh_tokenz.lock)ÚtimeoutrŒ   rq   rr   )rK   Ú
token_namer’   r[   zAccess token `z` has been refreshed.z�Your Hugging Face access token has expired and could not be refreshed (session expired or revoked). Run `hf auth login` to re-authenticate. (Ú)Úinfz2Could not refresh your Hugging Face access token: z. Will retry later.) Ú_OAUTH_REFRESH_LOCKru   Ú_OAUTH_REFRESH_CACHEÚnextÚ_read_stored_tokens_fullÚitemsrB   Ú_parse_expires_atrV   Ú_OAUTH_RECHECK_INTERVALÚ_OAUTH_REFRESH_MARGINr	   r   ÚHF_STORED_TOKENS_PATHr
   rx   Ú_save_tokenr,   r   rS   rH   rI   Ú	ExceptionÚ
isinstancer   Ú
error_coder   ÚINVALID_GRANTÚwarningr]   Ú_warn_refresh_failure_oncerz   )rK   r{   Úcacher”   r�   r’   r[   Úcurrent_file_tokenÚ	new_tokenÚnew_expires_atÚresponserL   rƒ   s   f            r   r‡   r‡   ô   s*  ø€ ÷ 
Ö	Ü�iŠi‹kˆÜ$ˆØÒ  |Õ!4¸Ô!=À#ÈlÕH[ÔB[ØÐ)Õ*÷	 
Ò	ô "ÜvÔ0HÓ0J×0PÑ0PÔ0RÓvØ�2ˆJó
Ñˆ
ð Ÿ
™
 ?Ó3ˆÜ& vÓ.ˆ
ØÒ Ò!6¸*Ò:Lô "6Ó!7ÐØ!Ò-Ð2DÈÔ2MØ)÷# 
Ò	ð( ˜eØ  %Ø˜cÔ$;Õ;ð$Ð ð
 ÷1 
Ò	ð4 Ô-Õ-°Ô3à˜eØ  %Ø˜jÔ+@Õ@ð$Ð ð
 ÷A 
Ò	ðD)	ô œi×=Ñ=ÀÕGÐQS×TÖTä1Ó3×7Ñ7¸
ÀBÓG�Ø—:‘:˜jÓ)¨UÔ2à &§
¡
¨:Ó 6× ?Ð ?¸%�IÜ%6°vÓ%>‘Nä3°MÓB�HØ (¨Õ 8�IØO[Ð_gÔOg¤S¨£X´°H¸\Õ4JÓ0KÖ%KÐmq�NÜØ'Ø#-à&.§l¡l°?Ó&C×&TÐ&TÀ}Ø#1õô ,Ó-°Ô6Ü%¤d¬9×+BÑ+BÓ&CÀYÔOÜ—K‘K .°°Ð<QÐ RÔS÷+ UðR ˜)Ø˜ið œ#ØÔ-Õ-ß:H�Ô!6Ö6Èaóð	 
Ðð ÷o 
Ò	÷J U×Tûô, ô 	Ü˜!œ_×-Ò-°!·,±,Ä.×B^ÑB^Ô2^ô —‘ð^Ø^_Ð]`Ð`aðcôô # 5›\‘
ô +Ð-_Ð`aÐ_bÐbuÐ+vÔwØ Ô#:Õ:�
à$0°%Ð9IÈ5ÐR^Ð`jÐ#kÐ ØŒL÷W 
Ò	ûðv	ú÷w 
×	Ð	úsƒ   �AMÁA.MÃMÃ6&MÄ(*J5ÅAJ"	ÆA,J"	ÈAJ"	ÉJ5É$3MÊ"J2Ê-J5Ê1MÊ2J5Ê5MË A?MÌ?MÍ MÍMÍMÍM(	c                ó(   € V ^8„  d   QhR\         RR/# )r   Úmessager   Nr/   )r   s   "r   r   r   W  s   € ÷ %ñ %¬ð %°ñ %r   c                 óP   € \         '       g   \        P                  V 4       R s R# R# )TN)Ú_OAUTH_REFRESH_WARNEDrH   r¥   )r­   s   &r   r¦   r¦   W  s   € ç Ó Ü�‰�wÔØ $Òñ !r   c                ó`   € V ^8„  d   QhR\         \        \        3,          R\        R,          /# )r   r�   r   N)Údictr   rx   )r   s   "r   r   r   ^  s&   € ÷ ñ œd¤3¬ 8�nð ´°tµñ r   c                óX   €  \        V R,          4      #   \        \        3 d     R# i ; i)zVParse the `expires_at` field of a stored-tokens section, `None` if missing or corrupt.r[   N)rx   ÚKeyErrorÚ
ValueError)r�   s   &r   rœ   rœ   ^  s.   € ðÜ�6˜,Õ'Ó(Ð(øÜ”jÐ!ô Úðús   ‚ ”)¨)c                óF   € V ^8„  d   QhR\         \        \        3,          /# ©r   r   ©r±   r   )r   s   "r   r   r   f  s   € ÷ 	qñ 	qœ4¤¤S �>ñ 	qr   c            	     ó†   € \        4       P                  4        U Uu/ uF  w  rWP                  RR4      bK  	  upp # u upp i )a)  
Returns the parsed INI file containing the access tokens.
The file is located at `HF_STORED_TOKENS_PATH`, defaulting to `~/.cache/huggingface/stored_tokens`.
If the file does not exist, an empty dictionary is returned.

Returns: `dict[str, str]`
    Key is the token name and value is the token.
rŒ   Ú )rš   r›   rB   )r”   r�   s     r   Úget_stored_tokensrº   f  s=   € ô NfÓMg×MmÑMmÔMoÔpÑMoÑ7I°zˆJŸ
™
 :¨rÓ2Ò2ÑMoÒpÐpùÓps   œ=c                óh   € V ^8„  d   QhR\         \        \         \        \        3,          3,          /# r¶   r·   )r   s   "r   r   r   r  s%   € ÷ ñ ¤$¤s¬D´´c°­NÐ':Õ";ñ r   c            	     ó¨  € \        \        P                  4      p V P                  4       '       g   / # \        P
                  ! RR7      p VP                  V 4       VP                  4        Uu/ uF  q"\        VP                  V4      4      bK  	  up# u upi   \        P                   d%   p\        P                  RT 24       / u Rp?# Rp?ii ; i)zéRead all sections of the stored tokens INI file, with all their fields.

Beside `hf_token`, sections for OAuth tokens also carry `refresh_token` and `expires_at`
(unix timestamp), used by [`get_token`] to transparently refresh them.
N©Úinterpolationz"Error parsing stored tokens file: )r   r   rŸ   ÚexistsÚconfigparserÚConfigParserÚreadÚsectionsr±   r›   r:   rH   Úerror)Útokens_pathÚconfigr”   rL   s       r   rš   rš   r  sª   € ô ”y×6Ñ6Ó7€KØ×Ñ×ÒØˆ	ä×&Ò&°TÔ:€FðØ�‰�KÔ ØMSÏ_É_ÔM^Ó_ÑM^¸zœD §¡¨jÓ!9Ó:Ò:ÑM^Ñ_Ð_ùÒ_øÜ×Ñô Ü�‰Ð9¸!¸Ð=Ô>Ø�	ûðús0   Á
#B Á-#BÂB ÂB ÂCÂ-CÃCÃCc                ól   € V ^8„  d   QhR\         \        \         \        \        3,          3,          RR/# )r   Ústored_tokensr   Nr·   )r   s   "r   r   r   …  s0   € ÷ 
Iñ 
I¬D´´d¼3Ä¸8µnÐ1DÕ,Eð 
IÈ$ñ 
Ir   c                ó¦  € \         P                  ! RR7      p\        V P                  4       4       FE  pVP	                  V4       W,          P                  4        F  w  r4VP                  W#V4       K  	  KG  	  \        P                  ! 4       pVP                  V4       \        \        \        P                  4      VP                  4       4       R# )zBWrite all sections and their fields to the stored tokens INI file.Nr½   )rÀ   rÁ   ÚsortedÚkeysÚadd_sectionr›   ÚsetÚioÚStringIOr&   r,   r   r   rŸ   Úgetvalue)rÈ   rÆ   r”   ÚkeyÚvalueÚbufs   &     r   Ú_save_stored_tokens_fullrÔ   …  s’   € ä×&Ò&°TÔ:€FÜ˜]×/Ñ/Ó1Ö2ˆ
Ø×Ñ˜:Ô&Ø'Õ3×9Ñ9Ö;‰JˆCØ�J‰J�z¨Ö.ó <ñ 3ô
 �+Š+‹-€CØ
‡L�L�ÔÜ”$”y×6Ñ6Ó7¸¿¹»ÖHr   c                ó>   € V ^8„  d   QhR\         R\         R,          /# )r   r”   r   Nr/   )r   s   "r   r   r   ’  s   € ÷ 3ñ 3¤3ð 3¬3°­:ñ 3r   c                óH   € \        4       pW9  d   R# \        W,          4      # )z¤
Get the token by name.

Args:
    token_name (`str`):
        The name of the token to get.

Returns:
    `str` or `None`: The token, `None` if it doesn't exist.

N)rº   rC   )r”   rÈ   s   & r   Ú_get_token_by_namer×   ’  s#   € ô &Ó'€MØÔ&ÙÜ˜Õ1Ó2Ð2r   r’   r[   c          
      óh   € V ^8„  d   QhR\         R\         R\         R,          R\        R,          RR/# )r   rK   r”   r’   Nr[   r   )r   rx   )r   s   "r   r   r   ¤  sE   € ÷ añ aÜðaÜðaÜ36¸µ:ðaÜRUÐX\ÕR\ðaà	ñar   c               óÆ   € \        4       pRV /pVe   W%R&   Ve   \        V4      VR&   WTV&   \        V4       \        P	                  RV R\
        P                   24       R# )a’  
Save the given token.

If the stored tokens file does not exist, it will be created.
Args:
    token (`str`):
        The token to save.
    token_name (`str`):
        The name of the token.
    refresh_token (`str`, *optional*):
        OAuth refresh token used to renew the access token when it expires.
    expires_at (`int`, *optional*):
        Unix timestamp at which the access token expires.
rŒ   Nr’   r[   zThe token `z` has been saved to )rš   r   rÔ   rH   rI   r   rŸ   )rK   r”   r’   r[   rÈ   r�   s   &&$$  r   r    r    ¤  si   € ô" -Ó.€MØ˜%Ð €FØÒ Ø"/ˆÑØÒÜ" :›ˆˆ|Ñà &�*ÑÜ˜]Ô+Ü
‡K�K�+˜j˜\Ð)=¼i×>]Ñ>]Ð=^Ð_Ö`r   c                óL   € V ^8„  d   QhR\         R,          R\         R,          /# )r   rK   Nr   r/   )r   s   "r   r   r   Á  s&   € ÷ Eñ Eœ˜d�
ð E¤s¨T¥zñ Er   c                ó‚   € V f   R# V P                  RR4      P                  RR4      P                  4       ;'       g    R# )zmClean token by removing trailing and leading spaces and newlines.

If token is an empty string, return None.
NÚr¹   Ú
)ÚreplaceÚstriprˆ   s   &r   rC   rC   Á  s;   € ð
 ‚}ÙØ�=‰=˜˜rÓ"×*Ñ*¨4°Ó4×:Ñ:Ó<×DÐDÀÐDr   c                óº   € V ^8„  d   Qh/ ^ \         9   d   \        R,          ;R&   ^\         9   d   \        R,          ;R&   ^\         9   d   \        R,          ;R&   # )r   Nr>   rw   r˜   )Ú__conditional_annotations__r   rX   r   )r   s   "r   r   r      sV   € × \Ñ \÷N (Ò '”c˜D•jÑ 'ñO ]÷p 1Ò 0”? TÕ)Ñ 0ñq ]÷p 7Ò 6Ô(¨4Õ/Ñ 6òq ]r   i€Q )>rá   Ú__doc__rÀ   rÎ   Úloggingr   ru   rE   Úpathlibr   Ú	threadingr   Útypingr   r¹   r   Úerrorsr   r   r   Ú_fixesr	   Ú_oauth_devicer
   Ú_runtimer   r   r$   r   r,   r=   r<   r>   Ú	getLoggerra   rH   r6   r4   r2   rV   rX   rt   rw   ry   r1   r   r—   r˜   rž   r�   r¯   r3   r‡   r¦   rœ   rº   rš   rÔ   r×   r    rC   r   )rá   s   @r   Ú<module>rì      s1  øðö ]ã Û 	Û Û 	Û Û Ý Ý Ý å ß ?Ñ ?Ý  Ý /ß :ð Ð ØÐ õð !Ð Ù ›FÐ Ø#'Ð Ó 'à	×	Ò	˜8Ó	$€õõ:7$õt`õ
ô�iô ñ “6Ð Ø,0Ð Ó 0ØÐ õ0ôf˜ô ñ “fÐ Ø26Ð Ó 6Ø!Ð ØÐ ØÐ õ1õ`õF%õõ	qõõ&
Iõ3ð$aØ@DðaØ_c÷a÷:Er   