
    /              
       
   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKr\R.                  R1                  \R.                  R3                  \5      S5      r\R.                  R1                  \S5      r\" \5       r\ R>                  " \5      r SSS5        \R.                  R1                  \S5      r!\R.                  R1                  \S5      r"\R.                  R1                  \S5      r#\R.                  R1                  \S5      r$\R.                  R1                  \S5      r%\" \#5       r\ R>                  " \5      r&SSS5        \R.                  R1                  \S5      r'Sr(Sr)Sr*Sr+Sr,Sr-Sr.S \)S!\(S"\'0S#.r/S \)S!\(S$S%S%00S#.r0S \)S&\(S'\,\-\.S(.S#.r1S)r2S*S+Rg                  \25      -   r4S \)S!\(S"\'0\4S,.r5S \)S&\(S'\,\-\.S(.\4S,.r6S \*S-\(S"\'0\+S..r7S \*S-\(S"\'0\4\+S/.r8\R.                  R1                  \S05      r9\R.                  R1                  \S15      r:\R.                  R1                  \S25      r;\R.                  R1                  \S35      r<\R.                  R1                  \S45      r=\R.                  R1                  \S55      r>\R~                  " \
R                  S69rA\A\AR                  lC        SS7 jrD\R                  " S8\A\R                  R                  4S9S:9rH\R                  R                  \R                  S;\DS9S<9rKS= rLS> rMS? rNS@ rOSA rPSB rQSC rRSD rSSE rTSF rUSG rVSH rWSI rXSJ rYSK rZSL r[SM r\SN r]SO r^SP r_SQ r`SR raSS rb\KST 5       rc\KSU 5       rd\KSV 5       re\KSW 5       rf\KSX 5       rg\KSY 5       rh\KSZ 5       ri\KS[ 5       rjS\ rk\KS] 5       rl\R                  R                  \R                  0 S9S^9S_ 5       roS` rpSa rqSb rr\R                  R                  ScSSd/5      \HSe 5       5       ru\HSf 5       rv\R                  R                  ScSSd/5      \R                  " SgS9Sh9\R                  " SiS9Sh9Sj 5       5       5       rw\R                  R                  ScSSd/5      \H\R                  " SgS9Sh9Sk 5       5       5       rx\R                  " SgS9Sh9Sl 5       ry\R                  " Sm\R                  R                  S9S:9\R                  " SnS9S9S:9\HSo 5       5       5       rz\R                  " SmSS9S:9\R                  " SnS9Sp9\HSq 5       5       5       r{Sr r|Ss r} " St Su\I5      r~\R                  Sv 5       r\R                  R                  \R                  5      Sw 5       r\R                  R                  \R                  5      Sx 5       r\R                  R                  \R                  5      Sy 5       rSz r\R                  R                  \R                  5      S{ 5       r\R                  R                  \R                  5      \R                  R                  \S|SS}9S~ 5       5       r\R                  " SS9S9S:9\R                  " SSS9S:9S 5       5       r\R                  " SSS9S:9S 5       r\R                  " SS9S9S:9\R                  " S\GR                  " 5       S9S<9S 5       5       rS r\R                  " SSS9S:9S 5       r\R                  " S\A\R                  R                  4S9S:9S 5       r\R                  " S8\A\R                  R                  4S9S:9S 5       r\R                  " SnS9S9S:9\R                  " SgSS9S:9\R                  " S8\A\R                  R                  4S9S:9S 5       5       5       r\R                  " S\A\R                  R                  4S9S:9S 5       r\R                  " S\A\R                  R                  4S9S:9S 5       r\R                  " SS9Sh9\R                  " S\AS4S9S:9\R                  " Si\AS4S9S:9\R                  " S\AS4S9S:9\R                  " S\AS4S9S:9S 5       5       5       5       5       r\R                  " SSS9S:9\R                  " SiSS9S:9\R                  " SSS9S:9\R                  " SSS9S:9S 5       5       5       5       r\R                  " S\A\R                  R                  4S9S:9\R                  " S\AS9S:9S 5       5       r\R                  " S\A\R                  R                  4S9S:9S 5       r\R                  " S\A\R                  R                  4S9S:9S 5       r\KS 5       r\KS 5       r\K\R                  R                  \R                  5      S 5       5       r\K\R                  R                  \R                  5      S 5       5       r\KS 5       r\KS 5       r\KS 5       r\KS 5       r\KS 5       rS r\R                  " SgS9Sh9S 5       r\R                  " SgS9Sh9S 5       r\R                  " SgS9Sh9S 5       r\R                  " SgS9Sh9S 5       r\R                  " SgS9Sh9S 5       r\R                  " SgS9Sh9S 5       r\KS 5       r\R                  " SgS9Sh9S 5       r\R                  R                  \R                  5      \R                  " SgS9Sh9S 5       5       r\R                  " SS9S9S:9\R                  " SSS9S:9\R                  R                  \R                  5      S 5       5       5       rg! , (       d  f       G
N= f! , (       d  f       G	N= f)    N)_default)api_key)
app_engine)aws)compute_engine)credentials)environment_vars)
exceptions)external_account) external_account_authorized_user)identity_pool)impersonated_credentials)	pluggable)gdch_credentials)service_accountdatazauthorized_user.jsonzauthorized_user_cloud_sdk.jsonz4authorized_user_cloud_sdk_with_quota_project_id.jsonzservice_account.jsonzclient_secrets.jsonzgdch_service_account.jsonzexternal_subject_token.txtz#https://sts.googleapis.com/v1/tokenzi//iam.googleapis.com/projects/123456/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_IDzR//iam.googleapis.com/locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID"WORKFORCE_POOL_USER_PROJECT_NUMBERzChttp://169.254.169.254/latest/meta-data/placement/availability-zonez@http://169.254.169.254/latest/meta-data/iam/security-credentialszNhttps://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15r   z$urn:ietf:params:oauth:token-type:jwtfile)typeaudiencesubject_token_type	token_urlcredential_source
executablecommandz+urn:ietf:params:aws:token-type:aws4_requestaws1)environment_id
region_urlurlregional_cred_verification_urlz1service-1234@service-name.iam.gserviceaccount.comz<https://us-east1-iamcredentials.googleapis.com/v1/projects/-z'/serviceAccounts/{}:generateAccessToken)r   r   r   r   r   !service_account_impersonation_urlz)urn:ietf:params:oauth:token-type:id_token)r   r   r   r   r   workforce_pool_user_project)r   r   r   r   r   r!   r"   z8impersonated_service_account_authorized_user_source.jsonz4impersonated_service_account_with_quota_project.jsonz8impersonated_service_account_service_account_source.jsonzIimpersonated_service_account_external_account_authorized_user_source.jsonz%external_account_authorized_user.jsonz-external_account_authorized_user_non_gdu.json)specc                 Z    U R                   (       d  g [        R                  R                  $ N)scopesmocksentinel
project_id)selfrequests     Mplatform/gsutil/third_party/google-auth-library-python/tests/test__default.pyget_project_id_side_effectr-      s    ;;==###    z/google.auth._default.load_credentials_from_fileT)return_valueautospecget_project_id)side_effectr0   c                      [         R                  " [        R                  5       n [        R
                  " S5        S S S 5        W R                  S5      (       d   eg ! , (       d  f       N'= f)N z	not found)pytestraisesr
   DefaultCredentialsErrorr   load_credentials_from_filematchexcinfos    r,   'test_load_credentials_from_missing_filer<      sI    	z99	:g++B/ 
; ==&&&& 
;	:s   A
A+c                     [         R                  " [        R                  5       n [        R
                  " S5        S S S 5        W R                  S5      (       d   e[         R                  " [        R                  5       n [        R
                  " S 5        S S S 5        U R                  S5      (       d   e[         R                  " [        R                  5       n [        R
                  " S5        S S S 5        U R                  S5      (       d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NI= f)Nr4   zdict type was expected   )r5   r6   r
   r7   r   load_credentials_from_dictr9   r:   s    r,   /test_load_credentials_from_dict_non_dict_objectr@      s    	z99	:g++B/ 
;==23333	z99	:g++D1 
;==23333	z99	:g++A. 
;==23333 
;	: 
;	: 
;	:s#   D D$D5
D!$
D25
Ec                      [         R                  " [        5      u  p[        U [        R
                  R                  R                  5      (       d   eUb   eg r%   )r   r?   AUTHORIZED_USER_FILE_DATA
isinstancegoogleoauth2r   Credentialsr   r)   s     r,   /test_load_credentials_from_dict_authorized_userrH      sI    &AA!K k6==#<#<#H#HIIIIr.   c                 2   U R                  S5      nUR                  S5        [        R                  " [        R
                  5       n[        R                  " [        U5      5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Ninvalid.json{znot a valid json file)
joinwriter5   r6   r
   r7   r   r8   strr9   tmpdirjsonfiler;   s      r,   ,test_load_credentials_from_file_invalid_jsonrR      sh    {{>*HNN3	z99	:g++CM: 
; ==12222 
;	:s    B
Bc                 ^   U R                  S5      nUR                  [        R                  " SS05      5        [        R
                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)NrJ   r   znot-a-real-typedoes not have a valid typerL   rM   jsondumpsr5   r6   r
   r7   r   r8   rN   r9   rO   s      r,   ,test_load_credentials_from_file_invalid_typerX      sw    {{>*HNN4::v'89:;	z99	:g++CM: 
; ==67777 
;	:s    B
B,c                      [         R                  " [        5      u  p[        U [        R
                  R                  R                  5      (       d   eUb   eg r%   )r   r8   AUTHORIZED_USER_FILErC   rD   rE   r   rF   rG   s     r,   /test_load_credentials_from_file_authorized_userr[      sE    &AABVWKk6==#<#<#H#HIIIIr.   c                    [         R                  " [        R                  5       n[        R
                  " [        5        S S S 5        WR                  S5      (       d   eUR                  S5      (       d   eg ! , (       d  f       N?= f)NrT   zType is None)r5   r6   r
   r7   r   r8   CLIENT_SECRETS_FILEr9   )rP   r;   s     r,   'test_load_credentials_from_file_no_typer^      sb     
z99	:g++,?@ 
; ==67777==))))	 
;	:s   A99
Bc                    U R                  S5      nUR                  [        R                  " SS05      5        [        R
                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  S5      (       d   eUR                  S5      (       d   eg ! , (       d  f       N?= f)Nzauthorized_user_bad.jsonr   authorized_userzFailed to load authorized usermissing fieldsrU   rP   filenamer;   s      r,   :test_load_credentials_from_file_authorized_user_bad_formatrd         {{56HNN4::v'89:;	z99	:g++CM: 
; ==:;;;;==*++++	 
;	:    B66
Cc                     [         R                  " [        SS9   [        R                  " [
        5      u  pS S S 5        [        W [        R                  R                  R                  5      (       d   eWb   e[        R                  " [        5      u  p[        U [        R                  R                  R                  5      (       d   eUb   eg ! , (       d  f       N= f)N	Cloud SDKr9   )r5   warnsUserWarningr   r8   AUTHORIZED_USER_CLOUD_SDK_FILErC   rD   rE   r   rF   4AUTHORIZED_USER_CLOUD_SDK_WITH_QUOTA_PROJECT_ID_FILErG   s     r,   9test_load_credentials_from_file_authorized_user_cloud_sdkrn     s    	k	5"*"E"E*#
 
6 k6==#<#<#H#HIIII 'AA<K k6==#<#<#H#HIIII 
6	5s   C
Cc                  <   [         R                  " [        SS9   [        R                  " [
        S/S9u  pS S S 5        [        W [        R                  R                  R                  5      (       d   eWb   eU R                  S/:X  d   eg ! , (       d  f       N\= f)Nrh   ri   %https://www.google.com/calendar/feedsr&   )r5   rj   rk   r   r8   rl   rC   rD   rE   r   rF   r&   rG   s     r,   Etest_load_credentials_from_file_authorized_user_cloud_sdk_with_scopesrr     s    	k	5"*"E"E*;<#
 
6
 k6==#<#<#H#HIIII"I!JJJJ 
6	5s   B
Bc                      [         R                  " [        SS9u  p[        U [        R
                  R                  R                  5      (       d   eUb   eU R                  S:X  d   eg Nproject-fooquota_project_id)	r   r8   rl   rC   rD   rE   r   rF   rw   rG   s     r,   Ltest_load_credentials_from_file_authorized_user_cloud_sdk_with_quota_projectrx   (  s_    &AA&K k6==#<#<#H#HIIII''=888r.   c                      [         R                  " [        5      u  p[        U [        R
                  5      (       d   eU[        S   :X  d   eg )Nr)   )r   r8   SERVICE_ACCOUNT_FILErC   r   rF   SERVICE_ACCOUNT_FILE_DATArG   s     r,   /test_load_credentials_from_file_service_accountr|   2  sC    &AABVWKk?#>#>????2<@@@@r.   c                      [         R                  " [        S/S9u  p[        U [        R
                  5      (       d   eU[        S   :X  d   eU R                  S/:X  d   eg )Nrp   rq   r)   )r   r8   rz   rC   r   rF   r{   r&   rG   s     r,   ;test_load_credentials_from_file_service_account_with_scopesr~   8  se    &AA&M%NK k?#>#>????2<@@@@"I!JJJJr.   c                      [         R                  " [        SS9u  p[        U [        R
                  5      (       d   eU[        S   :X  d   eU R                  S:X  d   eg )Nru   rv   r)   )r   r8   rz   rC   r   rF   r{   rw   rG   s     r,   Btest_load_credentials_from_file_service_account_with_quota_projectr   A  s]    &AA}K k?#>#>????2<@@@@''=888r.   c                    U R                  S5      nUR                  [        R                  " SS05      5        [        R
                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  S5      (       d   eUR                  S5      (       d   eg ! , (       d  f       N?= f)Nzserivce_account_bad.jsonr   r   zFailed to load service accountra   rU   rb   s      r,   :test_load_credentials_from_file_service_account_bad_formatr   J  re   rf   c                     [         R                  " [        5      u  p[        U [        R
                  5      (       d   e[        U R                  [        R                  R                  R
                  5      (       d   eU R                  S:X  d   eU R                  S/:X  d   eU R                  (       a   eU R                  (       a   eUb   eg Nz"service-account-target@example.comz$service-account-delegate@example.com)r   r8   8IMPERSONATED_SERVICE_ACCOUNT_AUTHORIZED_USER_SOURCE_FILErC   r   rF   _source_credentialsrD   rE   r   service_account_email
_delegates_quota_project_id_target_scopesrG   s     r,   Htest_load_credentials_from_file_impersonated_with_authorized_user_sourcer   U  s    &AA@K k#;#G#GHHHH'')B)B)N)N    ,,0TTTT!!&L%MMMM,,,,))))r.   c                      [         R                  " [        5      u  p[        U [        R
                  5      (       d   eU R                  S:X  d   eg )Nquota_project)r   r8   4IMPERSONATED_SERVICE_ACCOUNT_WITH_QUOTA_PROJECT_FILErC   r   rF   r   r   _s     r,   ?test_load_credentials_from_file_impersonated_with_quota_projectr   d  sG    88<NK k#;#G#GHHHH((O;;;r.   c                      [         R                  " [        5      u  p[        U [        R
                  5      (       d   e[        U R                  [        R
                  5      (       d   eU R                  (       a   eg r%   )	r   r8   8IMPERSONATED_SERVICE_ACCOUNT_SERVICE_ACCOUNT_SOURCE_FILErC   r   rF   r   r   r   r   s     r,   Htest_load_credentials_from_file_impersonated_with_service_account_sourcer   l  sd    88@NK k#;#G#GHHHHk557R7RSSSS,,,,,r.   c                      [         R                  " [        5      u  p[        U [        R
                  5      (       d   e[        U R                  [        R
                  5      (       d   eU R                  (       a   eg r%   )	r   r8   IIMPERSONATED_SERVICE_ACCOUNT_EXTERNAL_ACCOUNT_AUTHORIZED_USER_SOURCE_FILErC   r   rF   r   r   r   r   s     r,   Ytest_load_credentials_from_file_impersonated_with_external_account_authorized_user_sourcer   u  sp    88QNK k#;#G#GHHHH'')I)U)U    ,,,,,r.   c                  ^    [         R                  " [        SS9u  pU R                  S:X  d   eg )Nnew_quota_projectrv   )r   r8   r   r   r   s     r,   Btest_load_credentials_from_file_impersonated_passing_quota_projectr     s1    88@,NK ((,????r.   c                  f    [         R                  " [        SS/S9u  pU R                  SS/:X  d   eg Nscope1scope2rq   )r   r8   r   r   r   s     r,   ;test_load_credentials_from_file_impersonated_passing_scopesr     s:    88@(#NK %%(H)====r.   c                    [        [        5       n[        R                  " U5      nS S S 5        SWS'   U R	                  S5      nUR                  [        R                  " U5      5        [        R                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N= f! , (       d  f       N8= f)Nsomething_wrongr!   rJ   zCannot extract target principalopenr   rV   loadrL   rM   rW   r5   r6   r
   r7   r   r8   rN   r9   rP   fhimpersonated_credentials_inforQ   r;   s        r,   Ctest_load_credentials_from_file_impersonated_wrong_target_principalr     s    	F	G2(,		"% 
H 	 "+ {{>*HNN4::;<=	z99	:g++CM: 
; ==;<<<< 
H	G 
;	:s   C C 
C 
C.c                    [        [        5       n[        R                  " U5      nS S S 5        SWS   S'   U R	                  S5      nUR                  [        R                  " U5      5        [        R                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N= f! , (       d  f       N8= f)Nr   source_credentialsr   rJ   z;source credential of type external_account is not supportedr   r   s        r,   >test_load_credentials_from_file_impersonated_wrong_source_typer     s    	F	G2(,		"% 
HBT!"67?{{>*HNN4::;<=	z99	:g++CM: 
; ==WXXXX 
H	G 
;	:s   C C#
C #
C1c                 ,   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUb   eU R                  (       d   eg Nconfig.json)rL   rM   rV   rW   IDENTITY_POOL_DATAr   r8   rN   rC   r   rF   calledr1   rP   config_filer   r)   s        r,   >test_load_credentials_from_file_external_account_identity_poolr     sv     ++m,Kdjj!345&AA#kBRSKk=#<#<====    r.   c                 ,   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUb   eU R                  (       d   eg r   )rL   rM   rV   rW   AWS_DATAr   r8   rN   rC   r   rF   r   r   s        r,   4test_load_credentials_from_file_external_account_awsr     sq    ++m,Kdjj*+&AA#kBRSKk3??3333    r.   c                 x   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       a   eUb   eU R                  (       d   eg r   )rL   rM   rV   rW   IMPERSONATED_IDENTITY_POOL_DATAr   r8   rN   rC   r   rF   is_useris_workforce_poolr   r   s        r,   Ktest_load_credentials_from_file_external_account_identity_pool_impersonatedr     s     ++m,Kdjj!@AB&AA#kBRSKk=#<#<===="""",,,,    r.   c                 x   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       a   eUb   eU R                  (       d   eg r   )rL   rM   rV   rW   IMPERSONATED_AWS_DATAr   r8   rN   rC   r   rF   r   r   r   r   s        r,   Atest_load_credentials_from_file_external_account_aws_impersonatedr     s     ++m,Kdjj!678&AA#kBRSKk3??3333"""",,,,    r.   c                 x   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUR                  (       d   eUR                  (       d   eUb   eU R                  (       d   eg r   )rL   rM   rV   rW   IDENTITY_POOL_WORKFORCE_DATAr   r8   rN   rC   r   rF   r   r   r   r   s        r,   :test_load_credentials_from_file_external_account_workforcer     s    ++m,Kdjj!=>?&AA#kBRSKk=#<#<====((((    r.   c                 x   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       d   eUb   eU R                  (       d   eg r   )rL   rM   rV   rW   )IMPERSONATED_IDENTITY_POOL_WORKFORCE_DATAr   r8   rN   rC   r   rF   r   r   r   r   s        r,   Gtest_load_credentials_from_file_external_account_workforce_impersonatedr     s     ++m,Kdjj!JKL&AA#kBRSKk=#<#<====""""((((    r.   c                    UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      S/S/S9u  p4[        U[        R                  5      (       d   eU[        R                  R                  L d   eUR                  S/:X  d   eUR                  S/:X  d   eg )Nr   rp   .https://www.googleapis.com/auth/cloud-platformr&   default_scopes)rL   rM   rV   rW   r   r   r8   rN   rC   r   rF   r'   r(   r)   r&   r   r   s        r,   Mtest_load_credentials_from_file_external_account_with_user_and_default_scopesr     s     ++m,Kdjj!345&AAK78HIK k=#<#<====11111"I!JJJJ%%8*   r.   c                 (   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      SS9u  p4[        U[        R                  5      (       d   eUb   eUR                  S:X  d   eg )Nr   ru   rv   )rL   rM   rV   rW   r   r   r8   rN   rC   r   rF   rw   r   s        r,   Ctest_load_credentials_from_file_external_account_with_quota_projectr     s     ++m,Kdjj!345&AAK=K k=#<#<====''=888r.   c                    U R                  S5      nUR                  [        R                  " SS05      5        [        R
                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  SR                  [        U5      5      5      (       d   eg ! , (       d  f       N?= fNzexternal_account_bad.jsonr   r   z3Failed to load external account credentials from {}rL   rM   rV   rW   r5   r6   r
   r7   r   r8   rN   r9   formatrb   s      r,   ;test_load_credentials_from_file_external_account_bad_formatr   +  s    {{67HNN4::v'9:;<	z99	:g++CM: 
; ===DDS]S    
;	:rf   c                    UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      [        R                  R                  S/S9u  p4[        U[        R                  5      (       d   eU[        R                  R                  L d   eU R                  U[        R                  R                  S9  g Nr   r   )r+   r&   r+   )rL   rM   rV   rW   r   r   r8   rN   r'   r(   r+   rC   r   rF   r)   assert_called_withr   s        r,   Atest_load_credentials_from_file_external_account_explicit_requestr   7  s     ++m,Kdjj!345&AAK%%@AK k=#<#<====11111%%k4==;P;P%Qr.   )clearc                  :    [         R                  " 5       S:X  d   eg )NNN)r   !_get_explicit_environ_credentials r.   r,   -test__get_explicit_environ_credentials_no_envr   I  s    557<GGGr.   c                      [         R                  " [        [        R                  R
                  S9u  p[        U [        R                  5      (       d   eUb   eg Nr   )	r   r8   %EXTERNAL_ACCOUNT_AUTHORIZED_USER_FILEr'   r(   r+   rC   r   rF   rG   s     r,   @test_load_credentials_from_file_external_account_authorized_userr   N  sL    &AA-t}}7L7LK k#C#O#OPPPPr.   c                      [         R                  " [        [        R                  R
                  S9u  p[        U [        R                  5      (       d   eU R                  S:X  d   eg )Nr   fake_universe_domain)
r   r8   -EXTERNAL_ACCOUNT_AUTHORIZED_USER_NON_GDU_FILEr'   r(   r+   rC   r   rF   universe_domainr   s     r,   Htest_load_credentials_from_file_external_account_authorized_user_non_gdur   W  sT    885t}}?T?TNK k#C#O#OPPPP&&*@@@@r.   c                    U R                  S5      nUR                  [        R                  " SS05      5        [        R
                  " [        R                  5       n[        R                  " [        U5      5        S S S 5        WR                  SR                  [        U5      5      5      (       d   eg ! , (       d  f       N?= f)Nz)external_account_authorized_user_bad.jsonr   r   zCFailed to load external account authorized user credentials from {}r   rb   s      r,   Ktest_load_credentials_from_file_external_account_authorized_user_bad_formatr   `  s    {{FGHNN4::v'IJKL	z99	:g++CM: 
; ==MTTM	
    
;	:rf   rw   ru   c                     UR                  [        R                  S5        [        R                  " US9u  p4U[
        L d   eU[        R                  R                  L d   eU R                  SUS9  g Nrc   rv   )
setenvr	   CREDENTIALSr   r   MOCK_CREDENTIALSr'   r(   r)   r   )r   rw   monkeypatchr   r)   s        r,   &test__get_explicit_environ_credentialsr   n  sn     '33Z@&HH)K ****11111J9IJr.   c                     [         S 4U l        UR                  [        R                  S5        [
        R                  " 5       u  p#U[         L d   eUb   eg )Nrc   )r   r/   r   r	   r   r   r   )r   r   r   r)   s       r,   4test__get_explicit_environ_credentials_no_project_idr   |  sR    ($.D'33Z@&HHJK****r.   z?google.auth._cloud_sdk.get_application_default_credentials_path)r0   z0google.auth._default._get_gcloud_sdk_credentialsc                     SUl         UR                  [        R                  S5        [        R
                  " US9  U R                  US9  g r   )r/   r   r	   r   r   r   r   )get_gcloud_credsget_adc_pathrw   r   s       r,   9test__get_explicit_environ_credentials_fallback_to_gcloudr     sF     !+L'33Z@..@PQ ''9I'Jr.   c                     [         U l        [        R                  " US9u  p4U[        L d   eU[
        R                  R                  L d   eUR                  [         US9  g )Nrv   )	rz   r/   r   _get_gcloud_sdk_credentialsr   r'   r(   r)   r   )r   r   rw   r   r)   s        r,    test__get_gcloud_sdk_credentialsr     s`     !5L&BB)K ****111110CSTr.   c                     UR                  S5      n[        U5      U l        [        R                  " 5       u  p4Ub   eUb   eg )Nznon-existent)rL   rN   r/   r   r   )r   rP   non_existentr   r)   s        r,   -test__get_gcloud_sdk_credentials_non_existentr     sH     ;;~.L #L 1L&BBDKr.   z%google.auth._cloud_sdk.get_project_idzos.path.isfilec                     [         S 4U l        [        R                  " 5       u  p4U[         :X  d   eU[        R
                  R                  :X  d   eUR                  (       d   eg r%   )r   r/   r   r   r'   r(   r)   r   r   unused_isfiler1   r   r)   s        r,   +test__get_gcloud_sdk_credentials_project_idr     sX     )$.D&BBDK****11111    r.   )r/   c                     [         S 4U l        [        R                  " 5       u  p4U[         :X  d   eUb   eUR                  (       d   eg r%   )r   r/   r   r   r   r   s        r,   .test__get_gcloud_sdk_credentials_no_project_idr     sL     )$.D&BBDK****    r.   c                      [         R                  " [        R                  5       n [        R
                  " SSS05        S S S 5        W R                  S5      (       d   eg ! , (       d  f       N'= f)N	file_nameformat_version2z/Failed to load GDCH service account credentials)r5   r6   r
   r7   r   %_get_gdch_service_account_credentialsr9   r:   s    r,   Atest__get_gdch_service_account_credentials_invalid_format_versionr    sU    	z99	:g66*C0	
 
; ==JKKKK	 
;	:s   A  
A.c                      [         R                  " S5      n [        U [        R                  5      (       d   eU R
                  S:X  d   eg )Nr   )r   get_api_key_credentialsrC   r   rF   token)credss    r,   test_get_api_key_credentialsr
    s=    ,,Y7EeW001111;;)###r.   c                       \ rS rSrSrS rSrg)_AppIdentityModulei  zThe interface of the App Idenity app engine module.
See https://cloud.google.com/appengine/docs/standard/python/refdocs    /google.appengine.api.app_identity.app_identity
c                     [        5       er%   )NotImplementedError)r*   s    r,   get_application_id%_AppIdentityModule.get_application_id  s    !##r.   r   N)__name__
__module____qualname____firstlineno____doc__r  __static_attributes__r   r.   r,   r  r    s    
$r.   r  c              #   t   #    [         R                  " [        SS9nU R                  [        SU5        Uv   g7f)z9Mocks the app_identity module for google.auth.app_engine.T)instanceapp_identityN)r'   create_autospecr  setattrr   )r   app_identity_modules     r,   r  r    s4      ../ADQ
N4GH
s   68c                 H   S[         R                  [        R                  '   [        R
                  R                  U R                  l        [        R                  " 5       u  p[        U[        R                  5      (       d   eU[        R
                  R                  :X  d   eg Npython27)osenvironr	   LEGACY_APPENGINE_RUNTIMEr'   r(   projectr  r/   r   _get_gae_credentialsrC   r   rF   )r  r   r)   s      r,   test__get_gae_credentials_gen1r%    sq    <FBJJ88937==3H3HL##0&;;=Kk:#9#9::::.....r.   c                  l    S[         R                  S'   [        R                  " 5       u  pU b   eUb   eg Npython37GAE_RUNTIME)r   r!  r   r$  rG   s     r,   test__get_gae_credentials_gen2r*    s9     *BJJ}&;;=Kr.   c                      S[         R                  [        R                  '   S[         R                  S'   [        R
                  " 5       u  pU b   eUb   eg r'  )r   r!  r	   r"  r   r$  rG   s     r,   /test__get_gae_credentials_gen2_backwards_compatr,    sQ     =GBJJ889 *BJJ}&;;=Kr.   c                      [         R                  [        R                  ;  d   eS[        R                  ;  d   e[        R
                  " 5       u  pU b   eUb   eg )Nr)  r	   r"  r   r!  r   r$  rG   s     r,   #test__get_gae_credentials_env_unsetr/    sU    44BJJFFF

***&;;=Kr.   c                     [         R                  [        R                  ;  d   eSS Kn [
        R                  R                  U R                  SS 05         [        R                  " 5       u  pUb   eUb   eS[        R                  [         R                  '   [        R                  " 5       u  pUb   eUb   e S S S 5        g ! , (       d  f       g = f)Nr   google.auth.app_enginer  )r	   r"  r   r!  sysr'   patchdictmodulesr   r$  r2  r   r)   s      r,   'test__get_gae_credentials_no_app_enginer7     s     44BJJFFF	'?&F	G"*"?"?"A"""!!!@J

#<<="*"?"?"A"""!!! 
H	G	Gs   A$C
Cr  )newc                     [         R                  [        R                  ;  d   e[        R
                  " 5       u  pU b   eUb   eS[        R                  [         R                  '   [        R
                  " 5       u  pU b   eUb   eg r  r.  rG   s     r,   !test__get_gae_credentials_no_apisr:  2  s     44BJJFFF&;;=K<FBJJ889&;;=Kr.   z.google.auth.compute_engine._metadata.is_on_gcez3google.auth.compute_engine._metadata.get_project_idexample-projectc                     [         R                  " 5       u  p#[        U[        R                  5      (       d   eUS:X  d   eg )Nr;  r   _get_gce_credentialsrC   r   rF   
unused_getunused_pingr   r)   s       r,   test__get_gce_credentialsrB  B  s=     ';;=Kk>#=#=>>>>****r.   Fc                 F    [         R                  " 5       u  pUb   eUb   eg r%   )r   r>  )rA  r   r)   s      r,   !test__get_gce_credentials_no_pingrD  Q  s-     ';;=Kr.   c                 ~    [         R                  " 5       u  p#[        U[        R                  5      (       d   eUb   eg r%   r=  r?  s       r,   'test__get_gce_credentials_no_project_idrF  [  s:     ';;=Kk>#=#=>>>>r.   c                      SS K n [        R                  R                  S5         S U R                  S'   [
        R                  " 5       u  pUb   eUb   e S S S 5        g ! , (       d  f       g = f)Nr   sys.modulesgoogle.auth.compute_engine)r2  r'   r3  r4  r5  r   r>  r6  s      r,   +test__get_gce_credentials_no_compute_enginerJ  j  sY    		'4801"*"?"?"A"""!!!	 
(	'	's   1A
A-c                     [         R                  " [        R                  R                  5        U R                  [        R                  R                  S9  g r   )r   r>  r'   r(   r+   r   )pings    r,   *test__get_gce_credentials_explicit_requestrM  t  s7     !!$--"7"78DMM$9$9:r.   z6google.auth._default._get_explicit_environ_credentialsc                 v    [         R                  " 5       [        [        R                  R
                  4:X  d   eg r%   )r   defaultr   r'   r(   r)   )r@  s    r,   test_default_early_outrP  |  s+     "2DMM4L4L!MMMMr.   c                     UR                  [        R                  S5        [        R                  " 5       u  p#UR
                  S:X  d   eg )Nz/path/to/filezN/path/to/file file via the GOOGLE_APPLICATION_CREDENTIALS environment variable)r   r	   r   r   rO  _cred_file_path)unused_load_credr   credr   s       r,   #test_default_cred_file_path_env_varrU    sH     '33_E GD[	\	\r.   /path/to/adc/filec                 V    [         R                  " 5       u  p4UR                  S:X  d   eg )NrV  )r   rO  rR  )rS  unused_get_adc_filer   rT  r   s        r,   "test_default_cred_file_path_gcloudrY    s)      GD#6666r.   c                     UR                  [        R                  S5        [        R                  " 5       [
        S4:X  d   eg Nzexplicit-env)r   r	   PROJECTr   rO  r   r@  r   s     r,   test_default_explict_project_idr^    s8     '//@"2N!CCCCr.   c                     UR                  [        R                  S5        [        R                  " 5       [
        S4:X  d   eg r[  )r   r	   LEGACY_PROJECTr   rO  r   r]  s     r,   &test_default_explict_legacy_project_idra    s8     '66G"2N!CCCCr.   zlogging.Logger.warningz)google.auth._default._get_gae_credentialsz)google.auth._default._get_gce_credentialsc                     [         R                  " 5       [        S 4:X  d   eUR                  [        R
                  [        R
                  [        R
                  5        g r%   )r   rO  r   r   r'   ANY)
unused_gce
unused_gae
unused_sdkunused_explicitlogger_warnings        r,   test_default_without_project_idri    s?    0 "2D!9999%%dhh$((Cr.   r   c                    [         R                  " [        R                  5       n[        R
                  " 5       (       d   e S S S 5        WR                  [        R                  5      (       d   eg ! , (       d  f       N5= fr%   )r5   r6   r
   r7   r   rO  r9   _CLOUD_SDK_MISSING_CREDENTIALS)rd  re  rf  rg  r;   s        r,   test_default_failrl    sX    * 
z99	:g!!!! 
; ==@@AAAA 
;	:s   A22
B z/google.auth.credentials.with_scopes_if_requiredc                     SS/n[         R                  " US9u  p4X0R                  :X  d   eU[        R                  R
                  :X  d   eU R                  [        US S9  g )Nonetworq   r   )r   rO  r/   r'   r(   r)   assert_called_once_withr   )with_scopesr@  r&   r   r)   s        r,   test_default_scopedrs    sa     U^F&..f=K2222211111''(8&QU'Vr.   c                     [         R                  " SS9u  p[        R                  R	                  S5        U[
        R                  R                  :X  d   eg rt   )r   rO  r   with_quota_projectrq  r'   r(   r)   )ru  r   r)   s      r,   test_default_quota_projectrv    sC     '..NK''??N11111r.   c                 .   SSK n[        R                  R                  S5         SUR                  S'   SUR                  S'   [
        R                  " 5       [        [        R                  R                  4:X  d   e SSS5        g! , (       d  f       g= f)z
google.auth.compute_engine and google.auth.app_engine are both optional
to allow not including them when using this package. This verifies
that default fails gracefully if these modules are absent
r   NrH  rI  r1  )
r2  r'   r3  r4  r5  r   rO  r   r(   r)   )r@  r2  s     r,   0test_default_no_app_engine_compute_engine_modulerx    sh     		'480104,-!&68P8P%QQQQ 
(	'	's   AB
Bc                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " 5       u  pE[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       a   eUb   eg r   )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  rC   r   rF   r   r   r1   r   rP   r   r   r)   s         r,   7test_default_environ_external_credentials_identity_poolr{  #  s     ++m,Kdjj!345'33S5EF&..0Kk=#<#<===="""",,,,r.   c                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S9u  pE[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       a   eU[         R"                  R$                  L d   eUR&                  S/:X  d   eU R(                  S:X  d   eg )Nr   rp   rq      )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  rC   r   rF   r   r   r'   r(   r)   r&   
call_countrz  s         r,   Dtest_default_environ_external_credentials_identity_pool_impersonatedr  4  s     ++m,Kdjj!@AB'33S5EF&..78K k=#<#<===="""",,,,11111"I!JJJJ $$)))r.   c                 $   SnU[         R                  [        R                  '   UR	                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S9u  pV[        U[        R                   5      (       d   eUR"                  (       a   eUR$                  (       a   eXc:X  d   eUR&                  S/:X  d   eU R(                  S:X  d   eg Nproject_from_envr   rp   rq   r>   )r   r!  r	   r\  rL   rM   rV   rW   r   r   r   rN   r   rO  rC   r   rF   r   r   r&   r~  r1   r   rP   r  r   r   r)   s          r,   :test_default_environ_external_credentials_project_from_envr  J  s    
 *+;BJJ''(++m,Kdjj!@AB'33S5EF&..78K k=#<#<===="""",,,,)))"I!JJJJ $$)))r.   c                 $   SnU[         R                  [        R                  '   UR	                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S9u  pV[        U[        R                   5      (       d   eUR"                  (       a   eUR$                  (       a   eXc:X  d   eUR&                  S/:X  d   eU R(                  S:X  d   eg r  )r   r!  r	   r`  rL   rM   rV   rW   r   r   r   rN   r   rO  rC   r   rF   r   r   r&   r~  r  s          r,   Atest_default_environ_external_credentials_legacy_project_from_envr  d  s    
 *2BBJJ../++m,Kdjj!@AB'33S5EF&..78K k=#<#<===="""",,,,)))"I!JJJJ $$)))r.   c                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S9u  pE[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       a   eU[         R"                  R$                  L d   eUR&                  S/:X  d   eg Nr   rp   rq   )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  rC   r   rF   r   r   r'   r(   r)   r&   rz  s         r,   :test_default_environ_external_credentials_aws_impersonatedr  ~  s     ++m,Kdjj!678'33S5EF&..78K k3??3333"""",,,,11111"I!JJJJr.   c                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S9u  pE[        U[        R                  5      (       d   eUR                  (       d   eUR                  (       d   eU[         R"                  R$                  L d   eUR&                  S/:X  d   eg r  )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  rC   r   rF   r   r   r'   r(   r)   r&   rz  s         r,   3test_default_environ_external_credentials_workforcer    s     ++m,Kdjj!=>?'33S5EF&..78K k=#<#<====((((11111"I!JJJJr.   c                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S9u  pE[        U[        R                  5      (       d   eUR                  (       a   eUR                  (       d   eU[         R"                  R$                  L d   eUR&                  S/:X  d   eg r  )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  rC   r   rF   r   r   r'   r(   r)   r&   rz  s         r,   @test_default_environ_external_credentials_workforce_impersonatedr    s     ++m,Kdjj!JKL'33S5EF&..78K k=#<#<====""""((((11111"I!JJJJr.   c                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " S/S/SS9u  pE[        U[        R                  5      (       d   eU[        R                  R                   L d   eUR"                  S:X  d   eUR$                  S/:X  d   eUR&                  S/:X  d   eg )Nr   rp   r   ru   )r&   r   rw   )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  rC   r   rF   r'   r(   r)   rw   r&   r   rz  s         r,   [test_default_environ_external_credentials_with_user_and_default_scopes_and_quota_project_idr    s     ++m,Kdjj!345'33S5EF&..78HI&K k=#<#<====11111''=888"I!JJJJ%%8*   r.   c                    UR                  S5      nUR                  [        R                  " [        5      5        UR                  [        R                  [        U5      5        [        R                  " [        R                  R                  S/S9u  pE[        U[        R                   5      (       d   eU[        R                  R"                  L d   eU R%                  [        R&                  [        R                  R                  S9  g r   )rL   rM   rV   rW   r   r   r	   r   rN   r   rO  r'   r(   r+   rC   r   rF   r)   r   rc  rz  s         r,   Ftest_default_environ_external_credentials_explicit_request_with_scopesr    s     ++m,Kdjj!345'33S5EF&..%%@AK
 k=#<#<====11111
 %%dhh8M8M%Nr.   c                    UR                  S5      nUR                  [        R                  " SS05      5        U R	                  [
        R                  [        U5      5        [        R                  " [        R                  5       n[        R                  " 5         S S S 5        WR                  SR                  [        U5      5      5      (       d   eg ! , (       d  f       N?= fr   )rL   rM   rV   rW   r   r	   r   rN   r5   r6   r
   r7   r   rO  r9   r   )r   rP   rc   r;   s       r,   4test_default_environ_external_credentials_bad_formatr    s    {{67HNN4::v'9:;<'33S]C	z99	:g 
; ===DDS]S    
;	:s   C
C#c                     [         U l        [        R                  " [        [
        R                  S9   [
        R                  " S S9u  pS S S 5        g ! , (       d  f       g = f)Nri   rv   )rl   r/   r5   rj   rk   r   _CLOUD_SDK_CREDENTIALS_WARNINGrO  r   r   r)   s      r,   <test_default_warning_without_quota_project_id_for_user_credsr    s@     !?L	k)P)P	Q"*"2"2D"I 
R	Q	Qs   A
A!c                 F    [         U l        [        R                  " SS9u  pg rt   )rl   r/   r   rO  r  s      r,   <test_default_no_warning_with_quota_project_id_for_user_credsr    s!     !?L&..NKr.   c                    [         U l        [        R                  " 5       u  p[	        U[
        R                  5      (       d   e[	        UR                  [        R                  R                  R                  5      (       d   eUR                  S:X  d   eUR                  S/:X  d   eUR                  (       a   eUR                  (       a   eg r   )r   r/   r   rO  rC   r   rF   r   rD   rE   r   r   r   r   r   )r   r   r   s      r,   )test_default_impersonated_service_accountr    s     !YL%%'NKk#;#G#GHHHH'')B)B)N)N    ,,0TTTT!!&L%MMMM,,,,)))))r.   c                 r    [         U l        SS/n[        R                  " US9u  p#UR                  U:X  d   eg r   r   r/   r   rO  r   )r   r&   r   r   s       r,   4test_default_impersonated_service_account_set_scopesr    s=     !YL!F%%V4NK%%///r.   c                 r    [         U l        SS/n[        R                  " US9u  p#UR                  U:X  d   eg )Nr   r   rp  r  )r   r   r   r   s       r,   <test_default_impersonated_service_account_set_default_scopesr  !  s=     !YL)N%%^DNK%%777r.   c                 z    [         U l        SS/nSS/n[        R                  " XS9u  p4UR                  U:X  d   eg )Nr   r   scope3scope4r   r  )r   r&   r   r   r   s        r,   Ltest_default_impersonated_service_account_set_both_scopes_and_default_scopesr  ,  sG     !YL!F)N%%VSNK%%///r.   c                 ,   UR                  S5      nUR                  [        R                  " [        5      5        [
        R                  " [        U5      5      u  p4[        U[        R                  5      (       d   eUb   eU R                  (       d   eg r   )rL   rM   rV   rW   PLUGGABLE_DATAr   r8   rN   rC   r   rF   r   r   s        r,   5test_load_credentials_from_external_account_pluggabler  :  ss    ++m,Kdjj01&AA#kBRSKk9#8#89999    r.   c                 "   [         U l        [        R                  " SS9u  p[	        U[
        R                  5      (       d   eUR                  S:X  d   eUR                  b   eUR                  S:X  d   eUR                  S:X  d   eUS:X  d   eg )Nru   rv   service_identity_namez.https://service-identity.<Domain>/authenticatez/path/to/ca/certproject_foo)GDCH_SERVICE_ACCOUNT_FILEr/   r   rO  rC   r   ServiceAccountCredentials_service_identity_name	_audience
_token_uri_ca_cert_path)r   r	  r#  s      r,   -test_default_gdch_service_account_credentialsr  F  s     !:L%%}ENEe-GGHHHH''+BBBB??"""OOOO"4444m###r.   c                 T   [         U l        [        R                  " S S9u  pUR                  S:X  d   eSnU[
        R                  [        R                  '   [        R                  " S S9u  pUR                  U:X  d   eSn[        R                  " US9u  pUR                  U:X  d   eg )Nrv   rw   quota_from_envexplicit_quota)	rm   r/   r   rO  rw   r   r!  r	   GOOGLE_CLOUD_QUOTA_PROJECT)r   r   r   r  r  s        r,   #test_quota_project_from_environmentr  V  s    
 !UL%%t<NK''+====%N>LBJJ::;%%t<NK''>999%N%%~FNK''>999r.   c                 L   [         R                  " 5       u  p#US:X  d   eUR                  b   eSnU[        R                  [
        R                  '   [         R                  " 5       u  p#UR                  U:X  d   eSn[         R                  " US9u  p#UR                  U:X  d   eg )Nr;  r  r  rv   )r   r>  rw   r   r!  r	   r  )r@  rA  r   r)   r  r  s         r,   test_quota_gce_credentialsr  j  s     ';;=K****''/// &N>LBJJ::;&;;=K''>999 &N&;;'K ''>999r.   r%   )rV   r   r'   r5   google.authr   r   r   r   r   r   r	   r
   r   r   r   r   r   google.oauth2r   r   google.oauth2.credentialsrD   pathrL   dirname__file__DATA_DIRrZ   r   r   r   rB   rl   rm   rz   r]   r  r{   SUBJECT_TOKEN_TEXT_FILE	TOKEN_URLAUDIENCEWORKFORCE_AUDIENCEWORKFORCE_POOL_USER_PROJECT
REGION_URLSECURITY_CREDS_URLCRED_VERIFICATION_URLr   r  r   SERVICE_ACCOUNT_EMAILr   !SERVICE_ACCOUNT_IMPERSONATION_URLr   r   r   r   r   r   r   r   r   r   MockCredentialsWithQuotaProjectr   ru  r/   r-   r3  r(   r)   LOAD_FILE_PATCHobjectrF   %EXTERNAL_ACCOUNT_GET_PROJECT_ID_PATCHr<   r@   rH   rR   rX   r[   r^   rd   rn   rr   rx   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4  r!  r   r   r   r   markparametrizer   r   r   r   r   r   r   r  r
  r  fixturer  r%  r*  r,  r/  r7  r:  rB  rD  TransportErrorrF  rJ  rM  rP  rU  rY  r^  ra  ri  rl  rs  rv  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r.   r,   <module>r     s    	      "  & # ( " ( 8 % 0 ! * )   77<<16:ww||H.DE 	
2 $		"   "$."  8:ww||D8 4 ww||H.DE ggll8-BC GGLL3NO 	
2 $		"   '',,x1MN 1	vX  C R
W T  @ "9:  @&I(>? G  !*?	 L B/667LMN "
 @ "9:)J#  G  !*?	 *K  "E "9:#>   "E "9:)J#>- ) <>77<<H< 8 8:ww||D8 4 <>77<<H< 8 MOGGLLOM I
 )+5) % 13=1 - 99+"I"IJ 3C  # # 0$ **5"DMM$<$<=
 )-

(9(9  *	 ): ) %'438*, K9AK9,<--@>= Y '
! '
! '! '! '! '! '! '! '
! '
! '! '! ' '( '9 '9	 'R 'R" Rt,H -HA +dM-BC	K  D	K   +dM-BCEPT >NK O D
K +dM-BCEPT	U  D
	U EPT +))
 4$?	!  @	! 3$QUV40	!  1 W	!L$$ $   / /     " "" :~48 9  44RV 9"
++ 45SW 44RV 9))+
" 45SW;;
 <"DMM$<$<=
N
N 5"DMM$<$<=

 4$?E$
 5"DMM$<$<=
7 @7 <"DMM$<$<=
D
D
 <"DMM$<$<=
D
D
 $t4<"D)
 6"D)
 /"D)
 /"D)
D 5*D <
 6
 /
 /
B(B <"DMM$<$<=
 5!
WW <"DMM$<$<=
2
2 <"DMM$<$<=
R
R ' '  '* '** '*  '*0 '*  '*0 'K 'K$ 'K 'K$ 'K 'K$ ' ', 'O 'O*
 EPTJJ EPTOO EPT** EPT00 EPT88 EPT00 '! '! EPT
$
$ EPT: :  44RV 9"
 : :S*  "  s   m!7m3!
m03
n