ó
    Ú°›jáˆ  ã                   óV  • S r SSKrSSKrSSKrSSKJr  SSKrSSKJrJ	r	  SSK
JrJrJr  SSKJr  SSKJrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!  SS	K"J#r#  SS
K$J%r%J&r&  \RN                  " \(5      r)Sr*S0 0r+ " S S5      r, " S S\,5      r- " S S\.\5      r/ " S S5      r0g)zÛResolves regions and endpoints.

This module implements endpoint resolution, including resolving endpoints for a
given service and region and resolving the available endpoints for a service
in a specific AWS partition.
é    N)ÚEnum)ÚUNSIGNEDÚ
xform_name)ÚAUTH_TYPE_MAPSÚHAS_CRTÚresolve_auth_scheme_preference©ÚCRT_SUPPORTED_AUTH_TYPES)ÚS3_UNREFERENCED_PARAMSÚEndpointProvider)ÚEndpointProviderErrorÚEndpointVariantErrorÚ!InvalidEndpointConfigurationErrorÚInvalidHostLabelErrorÚMissingDependencyExceptionÚNoRegionErrorÚParamValidationErrorÚ$UnknownEndpointResolutionBuiltInNameÚUnknownRegionErrorÚUnknownSignatureVersionErrorÚ*UnsupportedS3AccesspointConfigurationErrorÚUnsupportedS3ConfigurationErrorÚUnsupportedS3ControlArnErrorÚ&UnsupportedS3ControlConfigurationError)Úregister_feature_id)Úensure_booleanÚinstance_cachez{service}.{region}.{dnsSuffix}Ú	endpointsc                   ó4   • \ rS rSrSrSS jrS r S	S jrSrg)
ÚBaseEndpointResolveré;   z3Resolves regions and endpoints. Must be subclassed.Nc                 ó   • [         e)a‡  Resolves an endpoint for a service and region combination.

:type service_name: string
:param service_name: Name of the service to resolve an endpoint for
    (e.g., s3)

:type region_name: string
:param region_name: Region/endpoint name to resolve (e.g., us-east-1)
    if no region is provided, the first found partition-wide endpoint
    will be used if available.

:rtype: dict
:return: Returns a dict containing the following keys:
    - partition: (string, required) Resolved partition name
    - endpointName: (string, required) Resolved endpoint name
    - hostname: (string, required) Hostname to use for this endpoint
    - sslCommonName: (string) sslCommonName to use for this endpoint.
    - credentialScope: (dict) Signature version 4 credential scope
      - region: (string) region name override when signing.
      - service: (string) service name override when signing.
    - signatureVersions: (list<string>) A list of possible signature
      versions, including s3, v4, v2, and s3v4
    - protocols: (list<string>) A list of supported protocols
      (e.g., http, https)
    - ...: Other keys may be included as well based on the metadata
©ÚNotImplementedError)ÚselfÚservice_nameÚregion_names      ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/regions.pyÚconstruct_endpointÚ'BaseEndpointResolver.construct_endpoint>   s
   € ô6 "Ð!ó    c                 ó   • [         e)z€Lists the partitions available to the endpoint resolver.

:return: Returns a list of partition names (e.g., ["aws", "aws-cn"]).
r#   )r%   s    r(   Úget_available_partitionsÚ-BaseEndpointResolver.get_available_partitions[   s
   € ô
 "Ð!r+   c                 ó   • [         e)ar  Lists the endpoint names of a particular partition.

:type service_name: string
:param service_name: Name of a service to list endpoint for (e.g., s3)

:type partition_name: string
:param partition_name: Name of the partition to limit endpoints to.
    (e.g., aws for the public AWS endpoints, aws-cn for AWS China
    endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc.

:type allow_non_regional: bool
:param allow_non_regional: Set to True to include endpoints that are
     not regional endpoints (e.g., s3-external-1,
     fips-us-gov-west-1, etc).
:return: Returns a list of endpoint names (e.g., ["us-east-1"]).
r#   )r%   r&   Úpartition_nameÚallow_non_regionals       r(   Úget_available_endpointsÚ,BaseEndpointResolver.get_available_endpointsb   s
   € ô& "Ð!r+   © ©N)ÚawsF)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r)   r-   r2   Ú__static_attributes__r4   r+   r(   r    r    ;   s   † Ù=ô"ò:"ð FK÷"r+   r    c                   ó¤   • \ rS rSrSrSS/rSS jrSS jrS r   SS	 jr	 SS
 jr
    SS jrS r SS jrS rS rS rS rS rS rS rSrg)ÚEndpointResolveréx   z7Resolves endpoints based on partition endpoint metadatazaws-isoz	aws-iso-bc                 ó>   • SU;  a  [        S5      eXl        X l        g)zÑ
:type endpoint_data: dict
:param endpoint_data: A dict of partition data.

:type uses_builtin_data: boolean
:param uses_builtin_data: Whether the endpoint data originates in the
    package's data directory.
Ú
partitionsz%Missing "partitions" in endpoint dataN)Ú
ValueErrorÚ_endpoint_dataÚuses_builtin_data)r%   Úendpoint_datarD   s      r(   Ú__init__ÚEndpointResolver.__init__}   s$   € ð ˜}Ó,ÜÐDÓEÐEØ+ÔØ!2Õr+   c                 ól   • U R                   S    H!  nUS   U:w  a  M  US   nX;  a  M  XA   S   s  $    g )NrA   Ú	partitionÚservicesr   )rC   )r%   r&   r0   rI   rJ   s        r(   Úget_service_endpoints_dataÚ+EndpointResolver.get_service_endpoints_data‹   sH   € Ø×,Ñ,¨\Ô:ˆIØ˜Ñ%¨Ó7ÙØ  Ñ,ˆHØÓ+ÙØÑ)¨+Ñ6Ò6ò ;r+   c                 ó^   • / nU R                   S    H  nUR                  US   5        M     U$ )NrA   rI   )rC   Úappend)r%   ÚresultrI   s      r(   r-   Ú)EndpointResolver.get_available_partitions”   s2   € ØˆØ×,Ñ,¨\Ô:ˆIØ�M‰M˜) KÑ0Ö1ñ ;àˆr+   Nc                 óP  • / nU R                   S    H�  nUS   U:w  a  M  US   nX;  a  M  Xq   S   nU Hi  n	X–S   ;   n
U(       a7  U
(       a0  U R                  X‰   U5      nU(       a  UR                  U	5        MF  MH  U(       d	  U
(       d  MX  UR                  U	5        Mk     M’     U$ )NrA   rI   rJ   r   Úregions)rC   Ú_retrieve_variant_datarN   )r%   r&   r0   r1   Úendpoint_variant_tagsrO   rI   rJ   Úservice_endpointsÚendpoint_nameÚis_regional_endpointÚvariant_datas               r(   r2   Ú(EndpointResolver.get_available_endpointsš   s¸   € ð ˆØ×,Ñ,¨\Ô:ˆIØ˜Ñ%¨Ó7ÙØ  Ñ,ˆHØÓ+ÙØ (Ñ 6°{Ñ CÐÛ!2�Ø'4À)Ñ8LÑ'LÐ$æ(Ö-AØ#'×#>Ñ#>Ø)Ñ8Ð:Oó$�Lö $ØŸ™ mÖ4ñ $æ'×+?Ð+?Ø—M‘M -Ö0ó "3ñ ;ð$ ˆr+   c                 óÐ   • U R                   S    HS  nUS   U:X  d  M  U(       a9  U R                  UR                  S5      U5      nU(       a  SU;   a  US   s  $ ML  MN  US   s  $    g )NrA   rI   ÚdefaultsÚ	dnsSuffix)rC   rS   Úget)r%   r0   rT   rI   Úvariants        r(   Úget_partition_dns_suffixÚ)EndpointResolver.get_partition_dns_suffix¶   sx   € ð ×,Ñ,¨\Ô:ˆIØ˜Ñ%¨Õ7Þ(Ø"×9Ñ9Ø!Ÿ™ jÓ1Ð3Hó�Gö  ;°'Ó#9Ø& {Ñ3Ò3ñ $:‘wð % [Ñ1Ò1ñ ;ð r+   c                 óT  • US:X  a  U(       a  Uc  SnUbA  S nU R                   S    H  nUS   U:X  d  M  UnM     Ub  U R                  UUUUUS5      nU$ g U R                   S    H?  nU(       a  US   U R                  ;   a  M  U R                  UUUUU5      nU(       d  M=  Us  $    g )NÚs3z	us-east-1rA   rI   T)rC   Ú_endpoint_for_partitionÚ!_UNSUPPORTED_DUALSTACK_PARTITIONS)	r%   r&   r'   r0   Úuse_dualstack_endpointÚuse_fips_endpointÚvalid_partitionrI   rO   s	            r(   r)   Ú#EndpointResolver.construct_endpointÅ   sà   € ð ˜DÓ Þ&ØÑ#à%ˆKàÑ%Ø"ˆOØ!×0Ñ0°Ô>�	Ø˜[Ñ)¨^Õ;Ø&/’Oñ ?ð Ñ*Ø×5Ñ5Ø#Ø ØØ*Ø%Øó�ð �Øð ×,Ñ,¨\Ô:ˆIÞ%Ø˜+Ñ&Ø×9Ñ9ó:ñ Ø×1Ñ1ØØØØ&Ø!óˆF÷ ˆvØ’ò ;r+   c                 ó|   • U R                   S    H   nU R                  X!5      (       d  M  US   s  $    [        USS9e)NrA   rI   z,No partition found for provided region_name.)r'   Ú	error_msg)rC   Ú_region_matchr   )r%   r'   rI   s      r(   Úget_partition_for_regionÚ)EndpointResolver.get_partition_for_region÷   sH   € Ø×,Ñ,¨\Ô:ˆIØ×!Ñ! )×9Ó9Ø  Ñ-Ò-ñ ;ô !Ø#ØDñ
ð 	
r+   c                 óP  • US   nU(       a   XpR                   ;   a  SU S3n[        S/US9eUS   R                  U[        5      n	Uc  SU	;   a  U	S   nO
[	        5       eUUU	UUUS.n
X9S	   ;   a  U R
                  " S0 U
D6$ U R                  X5      (       d  U(       aˆ  U	R                  S5      nU	R                  S
S5      nU(       a5  U(       d.  [        R                  SUUU5        XºS'   U R
                  " S0 U
D6$ [        R                  SUU5        U R
                  " S0 U
D6$ g )NrI   z4Dualstack endpoints are currently not supported for z
 partitionÚ	dualstack©Útagsrj   rJ   ÚpartitionEndpoint)rI   r&   Úservice_datarV   re   rf   r   ÚisRegionalizedTz'Using partition endpoint for %s, %s: %srV   z*Creating a regex based endpoint for %s, %sr4   )	rd   r   r]   ÚDEFAULT_SERVICE_DATAr   Ú_resolverk   ÚLOGÚdebug)r%   rI   r&   r'   re   rf   Úforce_partitionr0   rj   rs   Úresolve_kwargsÚpartition_endpointÚis_regionalizeds                r(   rc   Ú(EndpointResolver._endpoint_for_partition   sb  € ð # ;Ñ/ˆæ"Ø×"HÑ"HÓHðØ&Ð' zð3ð ô '¨[¨MÀYÑOÐOð ! Ñ,×0Ñ0ØÔ.ó
ˆð ÑØ" lÓ2Ø*Ð+>Ñ?‘ä#“oÐ%ð #Ø(Ø(Ø(Ø&<Ø!2ñ
ˆð  {Ñ3Ó3Ø—=’=Ñ2 >Ñ2Ð2ð ×Ñ˜i×5Ñ5¾à!-×!1Ñ!1Ð2EÓ!FÐØ*×.Ñ.Ð/?ÀÓFˆOÞ!®/Ü—	‘	Ø=Ø ØØ&ô	ð 3E˜Ñ/Ø—}’}Ñ6 ~Ñ6Ð6Ü�I‰IØ<ØØôð
 —=’=Ñ2 >Ñ2Ð2ð% :Ir+   c                 ór   • X!S   ;   a  gSU;   a(  [         R                  " US   5      R                  U5      $ g)NrR   TÚregionRegexF)ÚreÚcompileÚmatch)r%   rI   r'   s      r(   rk   ÚEndpointResolver._region_matchA  s:   € Ø IÑ.Ó.ØØ˜IÓ%Ü—:’:˜i¨Ñ6Ó7×=Ñ=¸kÓJÐJØr+   c                 ó˜   • UR                  S/ 5      nU H2  n[        US   5      [        U5      :X  d  M   UR                  5       nUs  $    g )NÚvariantsrq   )r]   ÚsetÚcopy)r%   rE   rq   r…   r^   rO   s         r(   rS   Ú'EndpointResolver._retrieve_variant_dataH  sC   € Ø ×$Ñ$ Z°Ó4ˆÛˆGÜ�7˜6‘?Ó#¤s¨4£yÕ0Ø Ÿ™›�Ø’ò  r+   c                 ój   • / nU(       a  UR                  S5        U(       a  UR                  S5        U$ )Nro   Úfips)rN   )r%   re   rf   rq   s       r(   Ú_create_tag_listÚ!EndpointResolver._create_tag_listO  s*   € ØˆÞ!Ø�K‰K˜Ô$ÞØ�K‰K˜ÔØˆr+   c                 óv   • 0 nX#U4 H.  nU R                  Xa5      nU(       d  M  U R                  Xu5        M0     U$ r5   )rS   Ú_merge_keys)r%   rq   rE   Úservice_defaultsÚpartition_defaultsrO   r…   r^   s           r(   Ú_resolve_variantÚ!EndpointResolver._resolve_variantW  sD   € ð ˆØ&Ð:LÓMˆHØ×1Ñ1°(ÓAˆGßˆwØ× Ñ  Ö1ñ Nð ˆr+   c                 ó�  • UR                  S0 5      R                  U0 5      nUR                  S5      (       a  [        R                  SU5        UR                  S0 5      nUR                  S0 5      n	U R                  XV5      n
U
(       a;  U R	                  X§X‰5      nU0 :X  a  SU SU 3n[        X¬S9eU R                  X{5        OUnSU;  a  US   US'   US	   US	'   XKS
'   U R                  X‹5        U R                  X›5        U R                  UUS   UUUS   5      US'   SU;   a  U R                  UUS   UUUS   5      US'   U$ )Nr   Ú
deprecatedz5Client is configured with the deprecated endpoint: %sr[   zEndpoint does not exist for z in region rp   r\   rI   ÚendpointNameÚhostnameÚsslCommonName)r]   rw   Úwarningr‹   r‘   r   rŽ   Ú_expand_template)r%   rI   r&   rs   rV   re   rf   rE   r�   r�   rq   rO   rj   s                r(   rv   ÚEndpointResolver._resolvea  s�  € ð %×(Ñ(¨°bÓ9×=Ñ=Ø˜2ó
ˆð ×Ñ˜\×*Ñ*Ü�K‰KØGØôð
 (×+Ñ+¨J¸Ó;ÐØ&Ÿ]™]¨:°rÓ:ÐØ×$Ñ$Ð%;ÓOˆæØ×*Ñ*ØÐ%5óˆFð ˜‹|à2°<°.ð A!Ø!. ð1ð ô +°ÑJÐJØ×Ñ˜]Õ3à"ˆFð ˜fÓ$Ø"+¨KÑ"8ˆF�;Ñà'¨Ñ4ˆˆ{ÑØ!.ˆ~Ñð 	×ÑÐ)Ô2Ø×ÑÐ+Ô4à!×2Ñ2ØØ�:ÑØØØ�;Ñó
ˆˆzÑð ˜fÓ$Ø&*×&;Ñ&;ØØ�Ñ'ØØØ�{Ñ#ó'ˆF�?Ñ#ð ˆr+   c                 ó0   • U H  nX2;  d  M
  X   X#'   M     g r5   r4   )r%   Ú	from_datarO   Úkeys       r(   rŽ   ÚEndpointResolver._merge_keys£  s   € ÛˆCØÕ Ø'™n�“ò r+   c                 ó"   • UR                  X4US9$ )N)ÚserviceÚregionr\   )Úformat)r%   rI   Útemplater&   rV   r\   s         r(   r™   Ú!EndpointResolver._expand_template¨  s   € ð �‰Ø À)ð ð 
ð 	
r+   )rC   rD   )F)r6   )r6   FNr5   )NNFF)r7   r8   r9   r:   r;   rd   rF   rK   r-   r2   r_   r)   rl   rc   rk   rS   r‹   r‘   rv   rŽ   r™   r<   r4   r+   r(   r>   r>   x   s‚   † ÙAà)2°KÐ(@Ð%ô3ô7òð Ø Ø"ôð: 59ôð$ ØØ$Øô0òd
ð  ô?3òBòòòò@òD-õ

r+   r>   c                   óL   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrg)ÚEndpointResolverBuiltinsi°  zAWS::RegionzAWS::UseFIPSzAWS::UseDualStackzAWS::STS::UseGlobalEndpointzAWS::S3::UseGlobalEndpointzAWS::S3::AcceleratezAWS::S3::ForcePathStylezAWS::S3::UseArnRegionz$AWS::S3::DisableS3ExpressSessionAuthzAWS::S3Control::UseArnRegionz'AWS::S3::DisableMultiRegionAccessPointszSDK::EndpointzAWS::Auth::AccountIdz AWS::Auth::AccountIdEndpointModer4   N)r7   r8   r9   r:   Ú
AWS_REGIONÚAWS_USE_FIPSÚAWS_USE_DUALSTACKÚAWS_STS_USE_GLOBAL_ENDPOINTÚAWS_S3_USE_GLOBAL_ENDPOINTÚAWS_S3_ACCELERATEÚAWS_S3_FORCE_PATH_STYLEÚAWS_S3_USE_ARN_REGIONÚ#AWS_S3_DISABLE_EXPRESS_SESSION_AUTHÚAWS_S3CONTROL_USE_ARN_REGIONÚAWS_S3_DISABLE_MRAPÚSDK_ENDPOINTÚ
ACCOUNT_IDÚACCOUNT_ID_ENDPOINT_MODEr<   r4   r+   r(   r¦   r¦   °  sd   † à€Jð "€Lð ,Ðð #@Ðð ">Ðà-Ðà7Ðð 4Ðð 	/ð (ð
 $BÐ àCÐà"€Là'€JàAÓr+   r¦   c                   ó¬   • \ rS rSrSr   SS jrS rS rS rS r	S	 r
S
 rS rS r\S 5       r\S 5       r\S 5       rS rS rS rS rS rS rSrg)ÚEndpointRulesetResolveriØ  z5Resolves endpoints using a service's endpoint rulesetNc
                 óü   • [        UUUR                  S:X  a  [        OS S9U l        U R                  R                  R
                  U l        X0l        X@l        XPl	        X`l
        Xpl        X€l        X�l        0 U l        g )Nrb   )Úruleset_dataÚpartition_dataÚexcluded_params)r   r&   r   Ú	_providerÚrulesetÚ
parametersÚ_param_definitionsÚ_service_modelÚ	_builtinsÚ_client_contextÚ_event_emitterÚ_use_sslÚ_requested_auth_schemeÚ_auth_scheme_preferenceÚ_instance_cache)
r%   Úendpoint_ruleset_datar¹   Úservice_modelÚbuiltinsÚclient_contextÚevent_emitterÚuse_sslÚrequested_auth_schemeÚauth_scheme_preferences
             r(   rF   Ú EndpointRulesetResolver.__init__Û  sx   € ô *Ø.Ø)ð !×-Ñ-°Ó5õ 'àñ
ˆŒð #'§.¡.×"8Ñ"8×"CÑ"CˆÔØ+ÔØ!ŒØ-ÔØ+ÔØŒØ&;Ô#Ø'=Ô$Ø!ˆÕr+   c           	      ól  • Uc  0 nUc  0 nU R                  XU5      n[        R                  SU5         U R                  R                  " S0 UD6n[        R                  SUR                  5        U R                  (       dE  UR                  R                  S5      (       a%  SU;  a  UR                  SUR                  SS  3S9nUR                  UR                  R                  5        VV	s0 s H
  u  p‰X‰S	   _M     sn	nS
9nU$ ! [
         a  nU R                  Xd5      nUc  e XveSnAff = fs  sn	nf )zAInvokes the provider with params defined in the service's rulesetNz-Calling endpoint provider with parameters: %szEndpoint provider result: %szhttps://ÚEndpointzhttp://é   )Úurlr   )Úheadersr4   )Ú_get_provider_paramsrw   rx   r»   Úresolve_endpointr   Ú#ruleset_error_to_botocore_exceptionrÓ   rÃ   Ú
startswithÚ_replacerÔ   Úitems)
r%   Úoperation_modelÚ	call_argsÚrequest_contextÚprovider_paramsÚprovider_resultÚexÚbotocore_exceptionr�   Úvals
             r(   r)   Ú*EndpointRulesetResolver.construct_endpointú  sX  € ð ÑØˆIàÑ"Ø ˆOà×3Ñ3Ø¨ó
ˆô 	�	‰	Ø;¸_ô	
ð	1Ø"Ÿn™n×=Ò=ñ Ø!ñˆOô 	�	‰	Ð0°/×2EÑ2EÔFð ——Ø×#Ñ#×.Ñ.¨z×:Ñ:Ø /Ó1à-×6Ñ6Ø˜o×1Ñ1°!°"Ð5Ð6Ð7ð 7ð ˆOð *×2Ñ2à,;×,CÑ,C×,IÑ,IÔ,KôÚ,K¡ �˜‘V’Ñ,Kòð 3ð 
ˆð Ðøô; %ó 	1Ø!%×!IÑ!IØó"Ðð "Ñ)Øà(Ð0ûð	1üó0s   ´D Ã.D0
Ä
D-ÄD(Ä(D-c                 ó  • 0 nU R                  XU5      nU R                  R                  5        HZ  u  pgU R                  UUUS9nUc'  UR                  b  U R                  UR                  US9nUc  ME  X„U'   U R                  Xh5        M\     U$ )aU  Resolve a value for each parameter defined in the service's ruleset

The resolution order for parameter values is:
1. Operation-specific static context values from the service definition
2. Operation-specific dynamic context values from API parameters
3. Client-specific context parameters
4. Built-in values such as region, FIPS usage, ...
)Ú
param_namerÛ   rÜ   )Úbuiltin_namerÉ   )Ú_get_customized_builtinsr¾   rÚ   Ú_resolve_param_from_contextÚbuiltinÚ_resolve_param_as_builtinÚ_register_endpoint_feature_ids)	r%   rÛ   rÜ   rÝ   rÞ   Úcustomized_builtinsrå   Ú	param_defÚ	param_vals	            r(   rÕ   Ú,EndpointRulesetResolver._get_provider_params0  s¸   € ð ˆð #×;Ñ;Ø¨ó
Ðð &*×%<Ñ%<×%BÑ%BÖ%DÑ!ˆJØ×8Ñ8Ø%Ø /Ø#ð 9ð ˆIð
 Ñ  Y×%6Ñ%6Ñ%BØ ×:Ñ:Ø!*×!2Ñ!2Ø0ð ;ð �	ð Ó$Ø.7 
Ñ+Ø×3Ñ3°JÖJñ &Eð Ðr+   c                 ó¬   • U R                  X5      nUb  U$ U R                  XU5      nUb  U$ U R                  XU5      nUb  U$ U R                  U5      $ r5   )Ú&_resolve_param_as_static_context_paramÚ'_resolve_param_as_dynamic_context_paramÚ)_resolve_param_as_operation_context_paramÚ&_resolve_param_as_client_context_param)r%   rå   rÛ   rÜ   ÚstaticÚdynamicÚoperation_context_paramss          r(   rè   Ú3EndpointRulesetResolver._resolve_param_from_contextR  s}   € ð ×<Ñ<Øó
ˆð ÑØˆMØ×>Ñ>Ø¨ó
ˆð ÑØˆNà×:Ñ:Ø¨Yóð 	!ð
 $Ñ/Ø+Ð+Ø×:Ñ:¸:ÓFÐFr+   c                 óF   • U R                  U5      nUR                  U5      $ r5   )Ú_get_static_context_paramsr]   )r%   rå   rÛ   Ústatic_ctx_paramss       r(   rñ   Ú>EndpointRulesetResolver._resolve_param_as_static_context_paramh  s&   € ð !×;Ñ;¸OÓLÐØ ×$Ñ$ ZÓ0Ð0r+   c                 óZ   • U R                  U5      nX;   a  XA   nUR                  U5      $ g r5   )Ú_get_dynamic_context_paramsr]   )r%   rå   rÛ   rÜ   Údynamic_ctx_paramsÚmember_names         r(   rò   Ú?EndpointRulesetResolver._resolve_param_as_dynamic_context_paramn  s7   € ð "×=Ñ=¸oÓNÐØÓ+Ø,Ñ8ˆKØ—=‘= Ó-Ð-ð ,r+   c                 ól   • U R                  5       nX;   a  X!   nU R                  R                  U5      $ g r5   )Ú_get_client_context_paramsrÁ   r]   )r%   rå   Úclient_ctx_paramsÚclient_ctx_varnames       r(   rô   Ú>EndpointRulesetResolver._resolve_param_as_client_context_paramv  s=   € Ø ×;Ñ;Ó=ÐØÓ*Ø!2Ñ!>ÐØ×'Ñ'×+Ñ+Ð,>Ó?Ð?ð +r+   c                 ó`   • UR                   nX;   a  XA   S   n[        R                  " XS5      $ g )NÚpath)Úoperation_context_parametersÚjmespathÚsearch)r%   rå   rÛ   rÜ   Úoperation_ctx_paramsr  s         r(   ró   ÚAEndpointRulesetResolver._resolve_param_as_operation_context_param|  s7   € ð  /×KÑKÐØÓ-Ø'Ñ3°FÑ;ˆDÜ—?’? 4Ó3Ð3ð .r+   c                 ó¬   • U[         R                  R                  5       ;  a	  [        US9eUR	                  U5      n[        U5      (       a  U" 5       $ U$ )N)Úname)r¦   Ú__members__Úvaluesr   r]   Úcallable)r%   ræ   rÉ   ré   s       r(   rê   Ú1EndpointRulesetResolver._resolve_param_as_builtin„  sK   € ØÔ7×CÑC×JÑJÓLÓLÜ6¸LÑIÐIØ—,‘,˜|Ó,ˆÜ�G×ÑÙ“9ÐØˆr+   c                 óp   • UR                    Vs0 s H  nUR                  UR                  _M     sn$ s  snf )z=Mapping of param names to static param value for an operation)Ústatic_context_parametersr  Úvalue©r%   rÛ   Úparams      r(   rú   Ú2EndpointRulesetResolver._get_static_context_paramsŒ  s<   € ð
 )×BÒBó
âB�ð �J‰J˜Ÿ™Ò#ÙBñ
ð 	
ùò 
ó   �!3c                 óp   • UR                    Vs0 s H  nUR                  UR                  _M     sn$ s  snf )z7Mapping of param names to member names for an operation)Úcontext_parametersr  r   r  s      r(   rþ   Ú3EndpointRulesetResolver._get_dynamic_context_params”  s>   € ð
 )×;Ò;ó
â;�ð �J‰J˜×)Ñ)Ò)Ù;ñ
ð 	
ùò 
r  c                 ó–   • U R                   R                   Vs0 s H#  nUR                  [        UR                  5      _M%     sn$ s  snf )z7Mapping of param names to client configuration variable)r¿   Úclient_context_parametersr  r   )r%   r  s     r(   r  Ú2EndpointRulesetResolver._get_client_context_paramsœ  sG   € ð
 ×,Ñ,×FÒFó
âF�ð �J‰Jœ
 5§:¡:Ó.Ò.ÙFñ
ð 	
ùò 
s   ™*Ac                 óÎ   • U R                   R                  R                  5       n[        R                  " U R                  5      nU R
                  R                  SU 3UUUUS9  U$ )Nzbefore-endpoint-resolution.)rÉ   ÚmodelÚparamsÚcontext)r¿   Ú
service_idÚ	hyphenizer‡   rÀ   rÂ   Úemit)r%   rÛ   rÜ   rÝ   r%  rì   s         r(   rç   Ú0EndpointRulesetResolver._get_customized_builtins¤  sh   € ð ×(Ñ(×3Ñ3×=Ñ=Ó?ˆ
Ü"Ÿiši¨¯©Ó7Ðà×Ñ× Ñ Ø)¨*¨Ð6Ø(Ø!ØØ#ð 	!ñ 	
ð #Ð"r+   c                 óv  ^ • [        U[        5      (       a  [        U5      S:X  a  [        S5      e[        R                  SSR                  U Vs/ s H  nSUR                  S5       S3PM     sn5      T R                  5        T R                  [        :X  a  S0 4$ U Vs/ s H  o"S   R                  S5      S	   PM     nnU Vs/ s H  n0 UEST R                  US   5      0EPM     nnT R                  b   [        U 4S jU 5       5      u  pTO„T R                  bb  T R                  R                  S5      nU Vs0 s H*  nT R                  US   R                  S5      S	   5      U_M,     nn[        Xc5      nXu   nO [        S U 5       5      u  pT0 n
SU;   a	  US   U
S'   O/SU;   a)  [        US   5      S:”  a  SR                  US   5      U
S'   SU;   a  U
R)                  US   S9  SU;   a  [+        US   5      U
S'   [        R                  SUS   UU
5        XZ4$ s  snf s  snf s  snf ! [         a    S
0 4s $ f = fs  snf ! [         ab    SnU Vs/ s H  o"S   PM	     Os  snf n	n[         (       d  [#        S U	 5       5      nU(       a	  [%        SS9e['        SR                  U	5      S9ef = f)a¨  Convert an Endpoint's authSchemes property to a signing_context dict

:type auth_schemes: list
:param auth_schemes: A list of dictionaries taken from the
    ``authSchemes`` property of an Endpoint object returned by
    ``EndpointProvider``.

:rtype: str, dict
:return: Tuple of auth type string (to be used in
    ``request_context['auth_type']``) and signing context dict (for use
    in ``request_context['signing']``).
r   z&auth_schemes must be a non-empty list.z_Selecting from endpoint provider's list of auth schemes: %s. User selected auth scheme is: "%s"z, Ú"r  ÚnoneÚ#éÿÿÿÿNc              3   óŒ   >#   • U  H9  nTR                  TR                  US    5      (       d  M)  TR                  U4v •  M;     g7f©r  N)Ú._does_botocore_authname_match_ruleset_authnamerÄ   )Ú.0Úsr%   s     €r(   Ú	<genexpr>ÚFEndpointRulesetResolver.auth_schemes_to_signing_ctx.<locals>.<genexpr>Ù  sB   øé € ð $â)˜Ø×JÑJØ×3Ñ3°Q°v±Y÷ó 5�T×0Ñ0°!Õ4Ú)ùs
   ƒ(A¯AÚ,c              3   óN   #   • U  H  nUS    [         ;   d  M  US    U4v •  M     g7fr/  )r   )r1  r2  s     r(   r3  r4  ñ  s-   é € ð $â)˜Ø˜‘y¤NÑ2ó #�Q�v‘Y •NÚ)ùs   ‚%—%Fc              3   ó4   #   • U  H  nU[         ;   v •  M     g 7fr5   r	   )r1  Úschemes     r(   r3  r4  ý  s   é € ð +â&7˜Fð Ô":Ö:Ú&7ùs   ‚zbThis operation requires an additional dependency. Use pip install botocore[crt] before proceeding.©Úmsg)Úsignature_versionÚsigningRegionr¡   ÚsigningRegionSetÚsigningName)Úsigning_nameÚdisableDoubleEncodingz?Selected auth type "%s" as "%s" with signing context params: %s)Ú
isinstanceÚlistÚlenÚ	TypeErrorrw   rx   Újoinr]   rÄ   r   ÚsplitÚ_strip_sig_prefixÚnextÚStopIterationrÅ   r   r   Úanyr   r   Úupdater   )r%   Úauth_schemesr2  Úavailable_ruleset_namesr8  r  ÚprefsÚauth_schemes_by_auth_typeÚfixable_with_crtÚauth_type_optionsÚsigning_contexts   `          r(   Úauth_schemes_to_signing_ctxÚ3EndpointRulesetResolver.auth_schemes_to_signing_ctx³  s9  ø€ ô ˜,¬×-Ñ-´°\Ó1BÀaÓ1GÜÐDÓEÐEä�	‰	ð1à�I‰I±\ÓB²\°˜˜1Ÿ5™5 ›=˜/¨Ó+±\ÑBÓCØ×'Ñ'ô		
ð ×&Ñ&¬(Ó2Ø˜2�:Ðñ /;ó#
Ú.:¨ˆf‰I�O‰O˜CÓ  Ô$©lð 	 ð #
ñ
 'ó
â&�ð GˆvÐF�v˜t×5Ñ5°f¸V±nÓEÔFÙ&ð 	ð 
ð ×&Ñ&Ñ2ð ô  $ô $á)ó$ó  ‘��fð ×)Ñ)Ñ5Ø×0Ñ0×6Ñ6°sÓ;ˆEñ &ó)â%�Að ×&Ñ& q¨¡y§¡°sÓ';¸BÑ'?Ó@À!ÒCÙ%ð &ð )ô 2ØóˆDð /Ñ4‰FðÜ#ñ $á)ó$ó  ‘�ð6 ˆØ˜fÓ$Ø(.¨Ñ(?ˆO˜HÒ%Ø 6Ó)Ü�6Ð,Ñ-Ó.°Ó2Ø,/¯H©HØÐ-Ñ.ó-� Ñ)ð ˜FÓ"Ø×"Ñ"°°}Ñ0EÐ"ÑFØ" fÓ,Ü7EØÐ.Ñ/ó8ˆOÐ3Ñ4ô 	�	‰	ØMØ�6‰NØØô		
ð Ð$Ð$ùòw Cùò#
ùò
øô  !ó  ð ˜R�x’ð	 üò)øô !ó ð $)Ð Ù8DÓ$Eº°1 v¤YºùÒ$EÐ!Ð$Eß’wÜ'*ñ +á&7ó+ó (Ð$ö
 $Ü4ðLñð ô
 7Ø*.¯)©)Ð4EÓ*Fñð ð%úsC   ÁH$Â! H)Ã$H.Ã;H3 Ä?1IÆI È3IÉIÉJ8ÉI+É*AJ8c                 ó<   • UR                  S5      (       a  USS $ U$ )z6Normalize auth type names by removing any "sig" prefixÚsigé   N)rØ   )r%   Ú	auth_names     r(   rG  Ú)EndpointRulesetResolver._strip_sig_prefix#  s#   € à )× 4Ñ 4°U× ;Ñ ;ˆy˜˜ˆ}ÐJÀÐJr+   c                 ó–   • U R                  U5      nUR                  S5      S   nUS:w  a  UR                  S5      (       a  USS nX!:H  $ )a´  
Whether a valid string provided as signature_version parameter for
client construction refers to the same auth methods as a string
returned by the endpoint ruleset provider. This accounts for:

* The ruleset prefixes auth names with "sig"
* The s3 and s3control rulesets don't distinguish between v4[a] and
  s3v4[a] signers
* The v2, v3, and HMAC v1 based signers (s3, s3-*) are botocore legacy
  features and do not exist in the rulesets
* Only characters up to the first dash are considered

Example matches:
* v4, sigv4
* v4, v4
* s3v4, sigv4
* s3v7, sigv7 (hypothetical example)
* s3v4a, sigv4a
* s3v4-query, sigv4

Example mismatches:
* v4a, sigv4
* s3, sigv4
* s3-presign-post, sigv4
Ú-r   rb   é   N)rG  rF  rØ   )r%   ÚbotonameÚrsnames      r(   r0  ÚFEndpointRulesetResolver._does_botocore_authname_match_ruleset_authname'  sS   € ð4 ×'Ñ'¨Ó/ˆØ—>‘> #Ó& qÑ)ˆØ�tÓ × 3Ñ 3°D× 9Ñ 9Ø  �|ˆHØÑ!Ð!r+   c                 ó  • UR                   R                  S5      nUc  gUR                  S5      (       a   UR                  S5      S   n[        US9$ U R                  R                  nUS:X  aÏ  US:X  d  US	:X  a	  [        US
9$ UR                  S5      (       dn  UR                  S5      (       dX  UR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a	  [        US
9$ UR                  5       R                  S5      (       a	  [        US9$ US:X  at  UR                  S5      (       a  UR                  S5      n[        XcS9$ UR                  S5      (       d  UR                  S5      (       a	  [        US
9$ US:X  a	  [        US9$ US:X  a.  UR                  S5      (       a	  [        US
9$ US:X  a	  [        US
9$ g! [         a    Un GN²f = f)ztAttempts to translate ruleset errors to pre-existing botocore
exception types by string matching exception strings.
r:  NzInvalid region in ARN: Ú`é   )Úlabelrb   z/S3 Object Lambda does not support S3 Acceleratez#Accelerate cannot be used with FIPSr9  zS3 Outposts does not supportzS3 MRAP does not supportz!S3 Object Lambda does not supportzAccess Points do not supportzInvalid configuration:z#Client was configured for partitionzinvalid arn:)ÚreportÚ	s3controlzInvalid ARN:ÚBucket)Úarnr:  z!AccountId is required but not setÚeventszUInvalid Configuration: FIPS is not supported with EventBridge multi-region endpoints.z&EndpointId must be a valid host label.)Úkwargsr]   rØ   rF  Ú
IndexErrorr   r¿   r&   r   r   Úlowerr   r   r   r   )r%   Úruleset_exceptionr#  r:  rc  r&   rg  s          r(   r×   Ú;EndpointRulesetResolver.ruleset_error_to_botocore_exceptionG  sæ  € ð  ×&Ñ&×*Ñ*¨5Ó1ˆØ‰;Øà�>‰>Ð3×4Ñ4ðØŸ	™	 #› qÑ)�ô )¨uÑ5Ð5à×*Ñ*×7Ñ7ˆØ˜4ÓàÐHÓHØÐ?Ó?ä6¸3Ñ?Ð?à—‘Ð=×>Ñ>Ø—>‘>Ð"<×=Ñ=Ø—>‘>Ð"E×FÑFØ—>‘>Ð"@×AÑAØ—>‘>Ð":×;Ñ;Ø—>‘>Ð"G×HÑHäAÀcÑJÐJØ�y‰y‹{×%Ñ% n×5Ñ5Ü+°3Ñ7Ð7Ø˜;Ó&Ø�~‰~˜n×-Ñ-Ø—j‘j Ó*�Ü3¸ÑEÐEØ�~‰~Ð6×7Ñ7¸3¿>¹>Ø5÷<ñ <ô >À#ÑFÐFØÐ9Ó9Ü+°3Ñ7Ð7Ø˜8Ó#Ø�~‰~ð6÷ñ ô 9¸SÑAÐAØÐ>Ó>Ü8¸SÑAÐAØøôQ ó Ø“ðús   ·G. Ç.G>Ç=G>c                 ón   • US:X  a  [        SUR                  5        35        g US:X  a  [        S5        g g )NÚAccountIdEndpointModeÚACCOUNT_ID_MODE_Ú	AccountIdÚRESOLVED_ACCOUNT_ID)r   Úupper)r%   rå   rî   s      r(   rë   Ú6EndpointRulesetResolver._register_endpoint_feature_ids~  s9   € ØÐ0Ó0ÜÐ"2°9·?±?Ó3DÐ2EÐ FÕGØ˜;Ó&ÜÐ 5Õ6ð 'r+   )
rÅ   rÀ   rÁ   rÂ   rÆ   r¾   r»   rÄ   r¿   rÃ   )TNN)r7   r8   r9   r:   r;   rF   r)   rÕ   rè   rñ   rò   rô   ró   rê   r   rú   rþ   r  rç   rS  rG  r0  r×   rë   r<   r4   r+   r(   r¶   r¶   Ø  s    † Ù?ð Ø"Ø#ô"ò>4òl òDGò,1ò.ò@ò4òð ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ò#òn%ò`Kò"ò@5õn7r+   r¶   )1r;   r‡   Úloggingr€   Úenumr   r
  Úbotocorer   r   Úbotocore.authr   r   r   Úbotocore.crtr
   Úbotocore.endpoint_providerr   r   Úbotocore.exceptionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úbotocore.useragentr   Úbotocore.utilsr   r   Ú	getLoggerr7   rw   ÚDEFAULT_URI_TEMPLATEru   r    r>   Ústrr¦   r¶   r4   r+   r(   Ú<module>r�     s¥   ðñó Û Û 	Ý ã ç )÷ñ õ
 2ß O÷÷ ÷ ÷ õ  3ß 9à×Ò˜Ó!€Ø7Ð Ø# RÐ(Ð ÷:"ñ :"ôzu
Ð+ô u
ôp	%B˜s Dô %B÷Pj7ò j7r+   