ó
    TQÇgh�  ã                   ó€  • S SK r S SKrS SKrS SKJr  S SKrS SKrS SKr	S SK
r	S SKJrJrJrJr  S SKJrJrJrJrJr  S SKJrJr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!J"r"  S SK#J$r$J%r%  S SK&J'r'  S SK(J)r)J*r*  S SK+J,r,  S SK-J.r.J/r/J0r0J1r1  \ Rd                  " \35      r4Sq5S r6SSSS\%-  SS4S jr7S/S jr8 " S S5      r9 " S S\*5      r: " S S\)5      r; " S S5      r< " S S\<5      r= " S S \5      r> " S! S"5      r? " S# S$5      r@ " S% S&5      rA " S' S(5      rB " S) S*5      rC " S+ S,5      rD " S- S.5      rEg)0é    N)ÚBytesIO)ÚAwsCredentialsÚAwsCredentialsProviderÚAwsSigningAlgorithmÚAwsSigningConfig)ÚClientBootstrapÚClientTlsContextÚDefaultHostResolverÚEventLoopGroupÚTlsContextOptions)ÚS3ClientÚS3RequestTlsModeÚS3RequestType)ÚUNSIGNED)Úurlsplit)ÚConfig)ÚNoCredentialsError)Ú	ArnParserÚInvalidArnException)ÚFULL_OBJECT_CHECKSUM_ARGSÚMB)ÚTransferNotDoneError)ÚBaseTransferFutureÚBaseTransferMeta)ÚTransferManager)ÚCallArgsÚOSUtilsÚget_callbacksÚis_s3express_bucketc                 ó    • [         c2  [        R                  R                  U 5      n UR	                  5         Uq [         $ ! [
         a     g f = f©N)ÚCRT_S3_PROCESS_LOCKÚawscrtÚs3ÚCrossProcessLockÚacquireÚRuntimeError)ÚnameÚcrt_locks     Ú0/usr/lib/python3/dist-packages/s3transfer/crt.pyÚacquire_crt_s3_process_lockr+   :   sS   € ô Ñ"Ü—9‘9×-Ñ-¨dÓ3ˆð	Ø×ÑÔð 'ÐÜÐøô ó 	ñ ð		ús   ¨A  Á 
AÁAé   Tc                 óT  • [        U5      n[        U5      n[        Xx5      n	Sn
U(       a  [        R                  O[        R
                  nUbC  [        5       nU(       a  UR                  US9  OSUl        [        U5      nUR                  5       n
[        US9n[        U	U UUUU
USS9$ )a  
:type region: str
:param region: The region used for signing

:type crt_credentials_provider:
    Optional[awscrt.auth.AwsCredentialsProvider]
:param crt_credentials_provider: CRT AWS credentials provider
    to use to sign requests. If not set, requests will not be signed.

:type num_threads: Optional[int]
:param num_threads: Number of worker threads generated. Default
    is the number of processors in the machine.

:type target_throughput: Optional[int]
:param target_throughput: Throughput target in bytes per second.
    By default, CRT will automatically attempt to choose a target
    throughput that matches the system's maximum network throughput.
    Currently, if CRT is unable to determine the maximum network
    throughput, a fallback target throughput of ``1_250_000_000`` bytes
    per second (which translates to 10 gigabits per second, or 1.16
    gibibytes per second) is used. To set a specific target
    throughput, set a value for this parameter.

:type part_size: Optional[int]
:param part_size: Size, in Bytes, of parts that files will be downloaded
    or uploaded in.

:type use_ssl: boolean
:param use_ssl: Whether or not to use SSL.  By default, SSL is used.
    Note that not all services support non-ssl connections.

:type verify: Optional[boolean/string]
:param verify: Whether or not to verify SSL certificates.
    By default SSL certificates are verified.  You can provide the
    following values:

    * False - do not validate SSL certificates.  SSL will still be
        used (unless use_ssl is False), but SSL certificates
        will not be verified.
    * path/to/cert/bundle.pem - A filename of the CA cert bundle to
        use. Specify this argument if you want to use a custom CA cert
        bundle instead of the default one on your system.
N)Úca_filepathF)Ú provided_throughput_target_bytesT)Ú	bootstrapÚregionÚcredential_providerÚ	part_sizeÚtls_modeÚtls_connection_optionsÚthroughput_target_gbpsÚenable_s3express)r   r
   r   r   ÚENABLEDÚDISABLEDr   Ú&override_default_trust_store_from_pathÚverify_peerr	   Únew_connection_optionsÚ_get_crt_throughput_target_gbpsr   )r1   Úcrt_credentials_providerÚnum_threadsÚtarget_throughputr3   Úuse_sslÚverifyÚevent_loop_groupÚhost_resolverr0   r5   r4   Útls_ctx_optionsÚclient_tls_optionÚtarget_gbpss                  r*   Úcreate_s3_crt_clientrH   S   sÊ   € ôh & kÓ2ÐÜ'Ð(8Ó9€MÜÐ 0Ó@€IØ!Ðö %,Ô× Ò Ô1A×1JÑ1Jð ð ÑÜ+Ó-ˆÞØ×BÑBØ"ð Cò ð +0ˆOÔ'Ü,¨_Ó=ÐØ!2×!IÑ!IÓ!KÐÜ1Ø):ñ€Kô ØØØ4ØØØ5Ø*Øñ	ð 	ó    c                 ó¼   • U c:  [         R                  R                  5       n[        R	                  SU5        Uc  SnOU S-  S-  n[        R	                  SU5        U$ )Nz-Recommended CRT throughput target in gbps: %sg      $@r,   i Êš;z'Using CRT throughput target in gbps: %s)r#   r$   Ú&get_recommended_throughput_target_gbpsÚloggerÚdebug)r/   rG   s     r*   r=   r=   ¨   s_   € Ø'Ñ/Ü—i‘i×FÑFÓHˆÜ�‰Ø;¸[ô	
ð ÑØˆKøð 7¸Ñ:¸]ÑJˆÜ
‡L�LÐ:¸KÔHØÐrI   c                   óò   • \ rS rSr\R
                  r\R                  r\R                  rSr\R                  r	SS jr
S rS r SS jrSS jrSS	 jrSS
 jrS rS rS rS rS rS rSS jrS rS rSrg)ÚCRTTransferManageréº   TNc                 óÜ   • Uc  [        5       U l        Xl        [        X R                  5      U l        UR
                  U l        / U l        [        R                  " S5      U l
        SU l        g)aö  A transfer manager interface for Amazon S3 on CRT s3 client.

:type crt_s3_client: awscrt.s3.S3Client
:param crt_s3_client: The CRT s3 client, handling all the
    HTTP requests and functions under then hood

:type crt_request_serializer: s3transfer.crt.BaseCRTRequestSerializer
:param crt_request_serializer: Serializer, generates unsigned crt HTTP
    request.

:type osutil: s3transfer.utils.OSUtils
:param osutil: OSUtils object to use for os-related behavior when
    using with transfer manager.
Né€   r   )r   Ú_osutilÚ_crt_s3_clientÚS3ClientArgsCreatorÚ_s3_args_creatorÚtranslate_crt_exceptionÚ_crt_exception_translatorÚ_future_coordinatorsÚ	threadingÚ	SemaphoreÚ
_semaphoreÚ_id_counter)ÚselfÚcrt_s3_clientÚcrt_request_serializerÚosutils       r*   Ú__init__ÚCRTTransferManager.__init__Ã   sc   € ð ‰>Ü"›9ˆDŒLØ+ÔÜ 3Ø"§L¡Ló!
ˆÔð #×:Ñ:ð 	Ô&ð %'ˆÔ!Ü#×-Ò-¨cÓ2ˆŒàˆÕrI   c                 ó   • U $ r!   © ©r^   s    r*   Ú	__enter__ÚCRTTransferManager.__enter__à   s   € ØˆrI   c                 ó<   • SnU(       a  SnU R                  U5        g )NFT©Ú	_shutdown)r^   Úexc_typeÚ	exc_valueÚargsÚcancels        r*   Ú__exit__ÚCRTTransferManager.__exit__ã   s   € ØˆÞØˆFØ�‰�vÕrI   c                 ó¬   • Uc  0 nUc  0 nU R                  X@R                  5        U R                  U5        [        UUUUUS9nU R	                  SU5      $ )N©ÚbucketÚkeyÚfileobjÚ
extra_argsÚsubscribersÚ
get_object)Ú_validate_all_known_argsÚALLOWED_DOWNLOAD_ARGSÚ_validate_if_bucket_supportedr   Ú_submit_transfer)r^   rt   ru   rv   rw   rx   Úcallargss          r*   ÚdownloadÚCRTTransferManager.downloadé   sj   € ð ÑØˆJØÑØˆKØ×%Ñ% j×2LÑ2LÔMØ×*Ñ*¨6Ô2ÜØØØØ!Ø#ñ
ˆð ×$Ñ$ \°8Ó<Ð<rI   c                 óÎ   • Uc  0 nUc  0 nU R                  X@R                  5        U R                  U5        U R                  U5        [	        UUUUUS9nU R                  SU5      $ )Nrs   Ú
put_object)rz   ÚALLOWED_UPLOAD_ARGSr|   Ú&_validate_checksum_algorithm_supportedr   r}   )r^   rv   rt   ru   rw   rx   r~   s          r*   ÚuploadÚCRTTransferManager.uploadû   sv   € ØÑØˆJØÑØˆKØ×%Ñ% j×2JÑ2JÔKØ×*Ñ*¨6Ô2Ø×3Ñ3°JÔ?ÜØØØØ!Ø#ñ
ˆð ×$Ñ$ \°8Ó<Ð<rI   c                 óª   • Uc  0 nUc  0 nU R                  X0R                  5        U R                  U5        [        UUUUS9nU R	                  SU5      $ )N)rt   ru   rw   rx   Údelete_object)rz   ÚALLOWED_DELETE_ARGSr|   r   r}   )r^   rt   ru   rw   rx   r~   s         r*   ÚdeleteÚCRTTransferManager.delete  se   € ØÑØˆJØÑØˆKØ×%Ñ% j×2JÑ2JÔKØ×*Ñ*¨6Ô2ÜØØØ!Ø#ñ	
ˆð ×$Ñ$ _°hÓ?Ð?rI   c                 ó&   • U R                  U5        g r!   rj   ©r^   ro   s     r*   ÚshutdownÚCRTTransferManager.shutdown  s   € Ø�‰�vÕrI   c                 ó¼   • U R                   (       aK  U R                  R                  5        H,  u  p#UR                  U5      nU(       d  M  [	        SU S35      e   g g )Nz'TransferManager methods do not support z+ resource. Use direct client calls instead.)Ú VALIDATE_SUPPORTED_BUCKET_VALUESÚ_UNSUPPORTED_BUCKET_PATTERNSÚitemsÚmatchÚ
ValueError)r^   rt   ÚresourceÚpatternr”   s        r*   r|   Ú0CRTTransferManager._validate_if_bucket_supported  sc   € ð ×0×0Ø%)×%FÑ%F×%LÑ%LÖ%NÑ!�ØŸ™ fÓ-�ß�5Ü$ØAÀ(Àð LEð Eóð ò &Oð 1rI   c           	      ó`   • U H(  nX2;  d  M
  [        SU SSR                  U5       35      e   g )NzInvalid extra_args key 'z', must be one of: z, )r•   Újoin)r^   ÚactualÚallowedÚkwargs       r*   rz   Ú+CRTTransferManager._validate_all_known_args+  s?   € ÛˆEØÕ#Ü Ø.¨u¨gð 6'Ø'+§y¡y°Ó'9Ð&:ð<óð ò rI   c                 óÒ   • UR                  S5      nUc  g [        [        R                  R                  R
                  5      nUR                  5       U;  a  [        SU SU 35      eg )NÚChecksumAlgorithmzChecksumAlgorithm: z* not supported. Supported algorithms are: )ÚgetÚlistr#   r$   ÚS3ChecksumAlgorithmÚ__members__Úupperr•   )r^   rw   Úchecksum_algorithmÚsupported_algorithmss       r*   r„   Ú9CRTTransferManager._validate_checksum_algorithm_supported3  su   € Ø'Ÿ^™^Ð,?Ó@ÐØÑ%ØÜ#¤F§I¡I×$AÑ$A×$MÑ$MÓNÐØ×#Ñ#Ó%Ð-AÓAÜØ%Ð&8Ð%9ð :-Ø-AÐ,BðDóð ð BrI   c                 óx   • U R                    H*  nUR                  5       (       a  M  UR                  5         M,     g r!   )rY   Údonero   ©r^   Úcoordinators     r*   Ú_cancel_transfersÚ$CRTTransferManager._cancel_transfers>  s-   € Ø×4Ô4ˆKØ×#Ñ#×%Ó%Ø×"Ñ"Ö$ò 5rI   c                 óJ   • U R                    H  nUR                  5         M     g r!   )rY   Úresultr«   s     r*   Ú_finish_transfersÚ$CRTTransferManager._finish_transfersC  s   € Ø×4Ô4ˆKØ×ÑÖ ò 5rI   c                 óJ   • U R                    H  nUR                  5         M     g r!   )rY   Ú%wait_until_on_done_callbacks_completer«   s     r*   Ú_wait_transfers_doneÚ'CRTTransferManager._wait_transfers_doneG  s   € Ø×4Ô4ˆKØ×=Ñ=Ö?ò 5rI   c                 óô   • U(       a  U R                  5          U R                  5         U R	                  5         g ! [         a    U R                  5          N-[         a     N8f = f! U R	                  5         f = fr!   )r­   r±   ÚKeyboardInterruptÚ	Exceptionrµ   r�   s     r*   rk   ÚCRTTransferManager._shutdownK  sg   € ÞØ×"Ñ"Ô$ð	(Ø×"Ñ"Ô$ð ×%Ñ%Õ'øô !ó 	%Ø×"Ñ"Ö$Üó 	Ùð	ûð ×%Ñ%Õ'ús-   ™: ºA"ÁA% Á	A"ÁA% Á!A"Á"A% Á%A7c                 ó8   • U R                   R                  5         g r!   )r\   Úrelease©r^   Úkwargss     r*   Ú_release_semaphoreÚ%CRTTransferManager._release_semaphoreX  s   € Ø�‰×ÑÕ!rI   c                 óä  • U R                   /n[        U R                  U R                  S9n[	        U R                  U5      US.n[        S	0 UD6n[        U5      nUR                  U5         U R                  R                  5         U R                  R                  US5      nU" 5         U R                  R                  UUUUU5      n	U R                  R                  " S	0 U	D6n
UR                  U
5        U R$                  R                  U5        U =R                  S-  sl        U$ ! [          a=  nUR#                  US5        U R                  R                  USUS9nU" US9   S nANtS nAff = f)
N)Útransfer_idÚexception_translator)Úmetar¬   ÚqueuedTrª   )Úafter_subscribers)Úerroré   re   )r¿   ÚCRTTransferCoordinatorr]   rX   ÚCRTTransferMetaÚCRTTransferFutureÚAfterDoneHandlerÚappendr\   r&   rV   Úget_crt_callbackÚget_make_request_argsrT   Úmake_requestÚset_s3_requestr¹   Úset_exceptionrY   )r^   Úrequest_typeÚ	call_argsÚon_done_after_callsr¬   Ú
componentsÚfutureÚ	afterdoneÚ	on_queuedÚcrt_callargsÚcrt_s3_requestÚeÚon_dones                r*   r}   Ú#CRTTransferManager._submit_transfer[  sp  € Ø#×6Ñ6Ð7ÐÜ,Ø×(Ñ(Ø!%×!?Ñ!?ñ
ˆô
 $ D×$4Ñ$4°iÓ@Ø&ñ
ˆ
ô #Ñ0 ZÑ0ˆÜ$ [Ó1ˆ	Ø×"Ñ" 9Ô-ð	7Ø�O‰O×#Ñ#Ô%Ø×-Ñ-×>Ñ>Ø˜óˆIñ ŒKØ×0Ñ0×FÑFØØØØØ#óˆLð "×0Ñ0×=Ò=ÑMÀÑMˆNð ×&Ñ& ~Ô6Ø×!Ñ!×(Ñ(¨Ô5à×Ò˜AÑÕØˆøô ó 	Ø×%Ñ% a¨Ô.Ø×+Ñ+×<Ñ<Ø˜Ð2Eð =ð ˆGñ ˜!×ûð	ús   Á-A8D( Ä(
E/Ä23E*Å*E/)rX   rT   rY   r]   rS   rV   r\   r!   ©NN©F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r{   rƒ   r‰   r‘   r’   rb   rg   rp   r   r…   rŠ   rŽ   r|   rz   r„   r­   r±   rµ   rk   r¿   r}   Ú__static_attributes__re   rI   r*   rO   rO   º   s‘   † Ø+×AÑAÐØ)×=Ñ=ÐØ)×=Ñ=Ðà'+Ð$à#2×#OÑ#OÐ ôò:òð BFô=ô$=ô"@ôòòò	ò%ò
!ò@ô(ò"õ'rI   rO   c                   óR   • \ rS rSrSrS	S jr\S 5       r\S 5       r\S 5       r	Sr
g)
rÊ   i…  z*Holds metadata about the CRTTransferFutureNc                 ó*   • Xl         X l        0 U l        g r!   )Ú_transfer_idÚ
_call_argsÚ_user_context)r^   rÂ   rÔ   s      r*   rb   ÚCRTTransferMeta.__init__ˆ  s   € Ø'ÔØ#ŒØˆÕrI   c                 ó   • U R                   $ r!   )ré   rf   s    r*   rÔ   ÚCRTTransferMeta.call_args�  s   € à�‰ÐrI   c                 ó   • U R                   $ r!   )rè   rf   s    r*   rÂ   ÚCRTTransferMeta.transfer_id‘  s   € à× Ñ Ð rI   c                 ó   • U R                   $ r!   )rê   rf   s    r*   Úuser_contextÚCRTTransferMeta.user_context•  s   € à×!Ñ!Ð!rI   )ré   rè   rê   rß   )rá   râ   rã   rä   Ú__doc__rb   ÚpropertyrÔ   rÂ   rñ   rå   re   rI   r*   rÊ   rÊ   …  sF   † Ù4ô ð
 ñó ðð ñ!ó ð!ð ñ"ó ó"rI   rÊ   c                   óJ   • \ rS rSrS
S jr\S 5       rS rSS jrS r	S r
S	rg)rË   iš  Nc                 ó@   • Xl         Uc  [        5       U l         X l        g)a2  The future associated to a submitted transfer request via CRT S3 client

:type meta: s3transfer.crt.CRTTransferMeta
:param meta: The metadata associated to the transfer future.

:type coordinator: s3transfer.crt.CRTTransferCoordinator
:param coordinator: The coordinator associated to the transfer future.
N)Ú_metarÊ   Ú_coordinator)r^   rÄ   r¬   s      r*   rb   ÚCRTTransferFuture.__init__›  s   € ð Œ
Ø‰<Ü(Ó*ˆDŒJØ'ÕrI   c                 ó   • U R                   $ r!   )r÷   rf   s    r*   rÄ   ÚCRTTransferFuture.meta©  s   € à�z‰zÐrI   c                 ó6   • U R                   R                  5       $ r!   )rø   rª   rf   s    r*   rª   ÚCRTTransferFuture.done­  s   € Ø× Ñ ×%Ñ%Ó'Ð'rI   c                 ó:   • U R                   R                  U5        g r!   )rø   r°   ©r^   Útimeouts     r*   r°   ÚCRTTransferFuture.result°  s   € Ø×Ñ× Ñ  Õ)rI   c                 ó8   • U R                   R                  5         g r!   )rø   ro   rf   s    r*   ro   ÚCRTTransferFuture.cancel³  s   € Ø×Ñ× Ñ Õ"rI   c                 óx   • U R                  5       (       d  [        S5      eU R                  R                  USS9  g)z!Sets the exception on the future.z?set_exception can only be called once the transfer is complete.T)ÚoverrideN)rª   r   rø   rÒ   ©r^   Ú	exceptions     r*   rÒ   ÚCRTTransferFuture.set_exception¶  s:   € à�y‰y�{‰{Ü&ðóð ð 	×Ñ×'Ñ'¨	¸DÐ'ÒArI   )rø   r÷   rß   r!   )rá   râ   rã   rä   rb   rô   rÄ   rª   r°   ro   rÒ   rå   re   rI   r*   rË   rË   š  s0   † ô(ð ñó ðò(ô*ò#õBrI   rË   c                   ó    • \ rS rSrS rS rSrg)ÚBaseCRTRequestSerializeriÀ  c                 ó   • [        S5      e)a4  Serialize CRT HTTP requests.

:type transfer_type: string
:param transfer_type: the type of transfer made,
    e.g 'put_object', 'get_object', 'delete_object'

:type future: s3transfer.crt.CRTTransferFuture

:rtype: awscrt.http.HttpRequest
:returns: An unsigned HTTP request to be used for the CRT S3 client
zserialize_http_request()©ÚNotImplementedError)r^   Útransfer_typer×   s      r*   Úserialize_http_requestÚ/BaseCRTRequestSerializer.serialize_http_requestÁ  s   € ô "Ð"<Ó=Ð=rI   c                 ó   • [        S5      e)Nztranslate_crt_exception()r  r  s     r*   rW   Ú0BaseCRTRequestSerializer.translate_crt_exceptionÏ  s   € Ü!Ð"=Ó>Ð>rI   re   N)rá   râ   rã   rä   r  rW   rå   re   rI   r*   r
  r
  À  s   † ò>õ?rI   r
  c                   ó`   • \ 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 rS rS rSrg)ÚBotocoreCRTRequestSerializeriÓ  Nc                 ó:  • Xl         Uc  0 nU R                  X5        UR                  " S0 UD6U l        U R                  R                  R
                  R                  SU R                  5        U R                  R                  R
                  R                  SU R                  5        U R                  R                  R
                  R                  SU R                  5        U R                  R                  R
                  R                  SU R                  5        g)a‚  Serialize CRT HTTP request using botocore logic
It also takes into account configuration from both the session
and any keyword arguments that could be passed to
`Session.create_client()` when serializing the request.

:type session: botocore.session.Session

:type client_kwargs: Optional[Dict[str, str]])
:param client_kwargs: The kwargs for the botocore
    s3 client initialization.
Nzrequest-created.s3.*zafter-call.s3.*zbefore-send.s3.*zbefore-call.s3.*re   )Ú_sessionÚ_resolve_client_configÚcreate_clientÚ_clientrÄ   ÚeventsÚregisterÚ_capture_http_requestÚ+_change_response_to_serialized_http_requestÚ_make_fake_http_responseÚ_remove_checksum_context)r^   ÚsessionÚclient_kwargss      r*   rb   Ú%BotocoreCRTRequestSerializer.__init__Ô  sá   € ð  ŒØÑ ØˆMØ×#Ñ# GÔ;Ø×,Ò,Ñ=¨}Ñ=ˆŒØ�‰×Ñ× Ñ ×)Ñ)Ø" D×$>Ñ$>ô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø˜t×OÑOô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø × =Ñ =ô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø × =Ñ =õ	
rI   c                 óÄ   • S nUR                  5       (       a  UR                  5       nSU;   a  US   n[        [        S9nU(       a  UR                  U5      nXBS'   SUS'   g )NÚconfig)Úsignature_versionr$   Úservice_name)Úget_default_client_configr   r   Úmerge)r^   r   r!  Úuser_provided_configÚclient_configs        r*   r  Ú3BotocoreCRTRequestSerializer._resolve_client_configò  sh   € Ø#ÐØ×,Ñ,×.Ñ.Ø#*×#DÑ#DÓ#FÐ Ø�}Ó$Ø#0°Ñ#:Ð ä´Ñ:ˆÞØ0×6Ñ6°}ÓEˆMØ"/�hÑØ(,ˆ�nÒ%rI   c                 ó  • [        UR                  5      nUR                  nUR                  (       a  U SUR                   3n/ nUR                  R                  5        HK  u  pV[        U[        5      (       a  UR                  XV45        M.  UR                  U[        US5      45        MM     [        R                  R                  U5      n[        R                  R                  UR                  UUUR                  S9nU$ )NÚ?zutf-8)ÚmethodÚpathÚheadersÚbody_stream)r   Úurlr/  Úqueryr0  r“   Ú
isinstanceÚstrrÍ   r#   ÚhttpÚHttpHeadersÚHttpRequestr.  Úbody)	r^   Úaws_requestÚ	url_partsÚcrt_pathÚheaders_listr(   ÚvalueÚcrt_headersÚcrt_requests	            r*   Ú_crt_request_from_aws_requestÚ:BotocoreCRTRequestSerializer._crt_request_from_aws_requestÿ  sÛ   € Ü˜[Ÿ_™_Ó-ˆ	Ø—>‘>ˆØ�?�?Ø"˜ 1 Y§_¡_Ð$5Ð6ˆHØˆØ&×.Ñ.×4Ñ4Ö6‰KˆDÜ˜%¤×%Ñ%Ø×#Ñ# T MÖ2à×#Ñ# T¬3¨u°gÓ+>Ð$?Ö@ñ	 7ô —k‘k×-Ñ-¨lÓ;ˆä—k‘k×-Ñ-Ø×%Ñ%ØØØ#×(Ñ(ð	 .ð 
ˆð ÐrI   c                 ó<  • U R                  U5      nUR                  R                  S5      c;  [        UR                  5      nUR                  R                  SUR                  5        UR                  R                  S5      b  UR                  R                  S5        UR                  R                  S5      c)  UR                  c  UR                  R                  SS5        UR                  R                  S5      b  UR                  R                  S5        U$ )NÚhostzContent-MD5zContent-LengthÚ0zTransfer-Encoding)
rA  r0  r¡   r   r2  ÚsetÚnetlocÚremover9  Úadd)r^   Úbotocore_http_requestr@  r;  s       r*   Ú_convert_to_crt_http_requestÚ9BotocoreCRTRequestSerializer._convert_to_crt_http_request  sô   € à×8Ñ8Ð9NÓOˆØ×Ñ×"Ñ" 6Ó*Ñ2ä Ð!6×!:Ñ!:Ó;ˆIØ×Ñ×#Ñ# F¨I×,<Ñ,<Ô=Ø×Ñ×"Ñ" =Ó1Ñ=Ø×Ñ×&Ñ& }Ô5ð ×Ñ×"Ñ"Ð#3Ó4Ñ<Ø$×)Ñ)Ñ1Ø×#Ñ#×'Ñ'Ð(8¸#Ô>ð ×Ñ×"Ñ"Ð#6Ó7ÑCØ×Ñ×&Ñ&Ð':Ô;àÐrI   c                 ó    • XR                   S'   g )NÚhttp_request)Úcontext©r^   Úrequestr¾   s      r*   r  Ú2BotocoreCRTRequestSerializer._capture_http_request3  s   € Ø*1�‰˜Ò'rI   c                 ó4   • US   nUR                  5       US'   g )NrN  ÚHTTPRequest)Úprepare)r^   rO  Úparsedr¾   rQ  s        r*   r  ÚHBotocoreCRTRequestSerializer._change_response_to_serialized_http_request6  s   € ð ˜.Ñ)ˆØ '§¡Ó 1ˆˆ}ÒrI   c                 óX   • [         R                  R                  S S0 [        S5      5      $ )NéÈ   rI   )ÚbotocoreÚ
awsrequestÚAWSResponseÚFakeRawResponserP  s      r*   r  Ú5BotocoreCRTRequestSerializer._make_fake_http_response<  s,   € Ü×"Ñ"×.Ñ.ØØØÜ˜CÓ ó	
ð 	
rI   c                 ó‚   • [        U R                  U5      " SUR                  UR                  S.UR                  D6S   $ )N)ÚBucketÚKeyrT  re   )Úgetattrr  rt   ru   rw   )r^   Úclient_methodrÔ   s      r*   Ú_get_botocore_http_requestÚ7BotocoreCRTRequestSerializer._get_botocore_http_requestD  sD   € Ü�t—|‘| ]Ô3ð 
Ø×#Ñ#¨¯©ñ
Ø:C×:NÑ:Nñ
à
ñð 	rI   c                 ór   • U R                  XR                  R                  5      nU R                  U5      nU$ r!   )rd  rÄ   rÔ   rK  )r^   r  r×   rJ  r@  s        r*   r  Ú3BotocoreCRTRequestSerializer.serialize_http_requestI  s9   € Ø $× ?Ñ ?ØŸ;™;×0Ñ0ó!
Ðð ×7Ñ7Ð8MÓNˆØÐrI   c                 óx   • [        U[        R                  R                  5      (       a  U R	                  U5      $ g r!   )r4  r#   r$   ÚS3ResponseErrorÚ _translate_crt_s3_response_errorr  s     r*   rW   Ú4BotocoreCRTRequestSerializer.translate_crt_exceptionP  s-   € Ü�i¤§¡×!:Ñ!:×;Ñ;Ø×8Ñ8¸ÓCÐCàrI   c                 óF  • UR                   nUS:  a  g UR                   VVs0 s H  u  p4X4_M	     nnnUR                  nUb<  U R                  R                  R
                  nUR                  U5      R                  nOS n[        R                  R                  U5      UUR                  S.n	U R                  R                  R                  X˜S9n
U
R                  S0 5      R                  S5      nU R                  R                  R!                  U5      nU" X¦S9$ s  snnf )Ni-  )r0  Ústatus_coder9  )ÚshapeÚErrorÚCode)Úoperation_name)rm  r0  rq  r  rÄ   Úservice_modelÚoperation_modelÚoutput_shaperZ  r[  ÚHeadersDictr9  Ú_response_parserÚparser¡   Ú
exceptionsÚ	from_code)r^   Ús3_response_errorrm  ÚkÚvr0  rq  rr  rn  Úresponse_dictÚparsed_responseÚ
error_codeÚerror_classs                r*   rj  Ú=BotocoreCRTRequestSerializer._translate_crt_s3_response_errorV  s  € Ø'×3Ñ3ˆØ˜Óð à$5×$=Ò$=Ô>Ò$=™D˜A�1’4Ñ$=ˆÑ>Ø*×9Ñ9ˆØÑ%Ø ŸL™L×-Ñ-×;Ñ;ˆMØ!×1Ñ1°.ÓA×NÑN‰EàˆEô  ×*Ñ*×6Ñ6°wÓ?Ø&Ø%×*Ñ*ñ
ˆð
 Ÿ,™,×7Ñ7×=Ñ=Øð >ð 
ˆð %×(Ñ(¨°"Ó5×9Ñ9¸&ÓAˆ
Ø—l‘l×-Ñ-×7Ñ7¸
ÓCˆÙ˜?ÑJÐJùó' ?s   £Dc                 ó<   • UR                  S0 5      nSU;   a  US	 g g )NrO  Úchecksum)r¡   )r^   Úparamsr¾   Úrequest_contexts       r*   r  Ú5BotocoreCRTRequestSerializer._remove_checksum_contextr  s'   € Ø Ÿ*™* Y°Ó3ˆØ˜Ó(Ø 
Ñ+ð )rI   )r  r  r!   )rá   râ   rã   rä   rb   r  rA  rK  r  r  r  rd  r  rW   rj  r  rå   re   rI   r*   r  r  Ó  s?   † ô
ò<-òò,ò<2ò2ò
òò
òòKõ8,rI   r  c                   ó   • \ rS rSrSS jrSrg)r]  ix  Nc              #   óJ   #   •  U R                  U5      nU(       d  g Uv •  M  7fr!   )Úread)r^   ÚamtÚdecode_contentÚchunks       r*   ÚstreamÚFakeRawResponse.streamy  s%   é € ØØ—I‘I˜c“NˆEÞØØŠKñ	 ùs   ‚!#re   )i   N)rá   râ   rã   rä   r�  rå   re   rI   r*   r]  r]  x  s   † ÷rI   r]  c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚBotocoreCRTCredentialsWrapperi�  c                 ó   • Xl         g r!   ©Ú_resolved_credentials)r^   Úresolved_botocore_credentialss     r*   rb   Ú&BotocoreCRTCredentialsWrapper.__init__‚  s   € Ø%BÕ"rI   c                 ó”   • U R                  5       R                  5       n[        UR                  UR                  UR
                  5      $ r!   )Ú_get_credentialsÚget_frozen_credentialsr   Ú
access_keyÚ
secret_keyÚtoken)r^   Úcredentialss     r*   Ú__call__Ú&BotocoreCRTCredentialsWrapper.__call__…  s?   € Ø×+Ñ+Ó-×DÑDÓFˆÜØ×"Ñ" K×$:Ñ$:¸K×<MÑ<Mó
ð 	
rI   c                 ó.   • [         R                  " U 5      $ r!   )r   Únew_delegaterf   s    r*   Úto_crt_credentials_providerÚ9BotocoreCRTCredentialsWrapper.to_crt_credentials_provider‹  s   € Ü%×2Ò2°4Ó8Ð8rI   c                 óH   • U R                   c
  [        5       eU R                   $ r!   )r“  r   rf   s    r*   r—  Ú.BotocoreCRTCredentialsWrapper._get_credentialsŽ  s#   € Ø×%Ñ%Ñ-Ü$Ó&Ð&Ø×)Ñ)Ð)rI   r’  N)	rá   râ   rã   rä   rb   r�  r¡  r—  rå   re   rI   r*   r�  r�  �  s   † òCò
ò9õ*rI   r�  c                   óp   • \ rS rSrSr SS jr\S 5       rS rSS jr	SS jr
S	 rSS
 jrS rS rS rSrg)rÉ   i”  z-A helper class for managing CRTTransferFutureNc                 ó¬   • Xl         X0l        X l        [        R                  " 5       U l        S U l        S U l        [        R                  " 5       U l	        g r!   )
rÂ   Ú_exception_translatorÚ_s3_requestrZ   ÚLockÚ_lockÚ
_exceptionÚ_crt_futureÚEventÚ_done_event)r^   rÂ   Ú
s3_requestrÃ   s       r*   rb   ÚCRTTransferCoordinator.__init__—  sB   € ð 'ÔØ%9Ô"Ø%ÔÜ—^’^Ó%ˆŒ
ØˆŒØˆÔÜ$Ÿ?š?Ó,ˆÕrI   c                 ó   • U R                   $ r!   )r¨  rf   s    r*   r¯  Ú!CRTTransferCoordinator.s3_request¢  s   € à×ÑÐrI   c                 ó8   • U R                   R                  5         g r!   )r®  rF  rf   s    r*   Úset_done_callbacks_completeÚ2CRTTransferCoordinator.set_done_callbacks_complete¦  s   € Ø×Ñ×ÑÕrI   c                 ó:   • U R                   R                  U5        g r!   )r®  Úwaitrÿ   s     r*   r´   Ú<CRTTransferCoordinator.wait_until_on_done_callbacks_complete©  s   € Ø×Ñ×Ñ˜gÕ&rI   c                 ó”   • U R                      U R                  5       (       a  U(       a  Xl        S S S 5        g ! , (       d  f       g = fr!   )rª  rª   r«  )r^   r  r  s      r*   rÒ   Ú$CRTTransferCoordinator.set_exception¬  s%   € Ø�Z‹ZØ—9‘9—;‘;¦(Ø"+”÷ �ZŽZús	   �#9¹
Ac                 ó\   • U R                   (       a  U R                   R                  5         g g r!   )r¨  ro   rf   s    r*   ro   ÚCRTTransferCoordinator.cancel±  s"   € Ø××Ø×Ñ×#Ñ#Õ%ð rI   c                 óž  • U R                   (       a  U R                   e U R                  R                  U5        U R                  (       a  S U l        g g ! [         a-    U R	                  5         U R                  R                  U5        e [
         a  nU R                  U5         S nANoS nAff = f! U R                  (       a  S U l        f f = fr!   )r«  r¬  r°   r¸   ro   r¹   Úhandle_exceptionr¨  )r^   r   rÜ   s      r*   r°   ÚCRTTransferCoordinator.resultµ  s¨   € Ø�?�?Ø—/‘/Ð!ð
	(Ø×Ñ×#Ñ# GÔ,ð ××Ø#'�Õ ð  øô !ó 	Ø�K‰KŒMØ×Ñ×#Ñ# GÔ,ØÜó 	%Ø×!Ñ! !×$Ñ$ûð	%ûð ××Ø#'�Õ ð  ús)   ŸA Á?B.ÂB)Â$B1 Â)B.Â.B1 Â1Cc                 ó°   • S nU R                   (       a   U R                  U5      nUb  X!eUe! [         a  n[        R                  SUS9   S nAN*S nAff = f)NzUnable to translate exception.)Úexc_info)r§  r¹   rL   rM   )r^   ÚexcÚtranslated_excrÜ   s       r*   r¾  Ú'CRTTransferCoordinator.handle_exceptionÄ  s`   € ØˆØ×%×%ðØ!%×!;Ñ!;¸CÓ!@�ð Ñ%Ø Ð)àˆIøô ó ô —‘Ð=È�ÑJÜûð	ús   •- ­
A·AÁAc                 óR   • U R                   c  gU R                   R                  5       $ )NF)r¬  rª   rf   s    r*   rª   ÚCRTTransferCoordinator.doneÓ  s&   € Ø×ÑÑ#ØØ×Ñ×$Ñ$Ó&Ð&rI   c                 óF   • Xl         U R                   R                  U l        g r!   )r¨  Úfinished_futurer¬  )r^   r¯  s     r*   rÑ   Ú%CRTTransferCoordinator.set_s3_requestØ  s   € Ø%ÔØ×+Ñ+×;Ñ;ˆÕrI   )r¬  r®  r«  r§  rª  r¨  rÂ   )NNNr!   rà   )rá   râ   rã   rä   ró   rb   rô   r¯  r´  r´   rÒ   ro   r°   r¾  rª   rÑ   rå   re   rI   r*   rÉ   rÉ   ”  sM   † Ù7ð GKô	-ð ñ ó ð òô'ô,ò
&ô(òò'õ
<rI   rÉ   c                   ó@   • \ rS rSrS rS r  S
S jrS rS rS r	S	r
g)rU   iÝ  c                 ó   • Xl         X l        g r!   )Ú_request_serializerÚ	_os_utils)r^   r`   Úos_utilss      r*   rb   ÚS3ClientArgsCreator.__init__Þ  s   € Ø#9Ô Ø!�rI   c           	      óL   • [        U SU 3U R                  5      nU" UUUU/ US9$ )NÚ_get_make_request_args_©rÓ   rÔ   r¬   r×   Úon_done_before_callsrÕ   )rb  Ú_default_get_make_request_args)r^   rÓ   rÔ   r¬   r×   rÕ   Úrequest_args_handlers          r*   rÏ   Ú)S3ClientArgsCreator.get_make_request_argsâ  sF   € ô  'ØØ% l ^Ð4Ø×/Ñ/ó 
Ðñ
 $Ø%ØØ#ØØ!#Ø 3ñ
ð 	
rI   Nc                 ó    ^^^^• UUUU4S jnU$ )Nc                  óŒ   >• / nTb  UT-  nU[        TT5      -  nTb  UT-  nU H  nTS:X  a  U" U S   S9  M  U" U 0 UD6  M     g )NÚprogressr   )Úbytes_transferred)r   )rn   r¾   Úcallbacks_listÚcallbackrÆ   Úbefore_subscribersÚcallback_typer×   s       €€€€r*   Úinvoke_all_callbacksÚBS3ClientArgsCreator.get_crt_callback.<locals>.invoke_all_callbacksú  sh   ø€ ØˆNØ!Ñ-ØÐ"4Ñ4�Øœm¨F°MÓBÑBˆNØ Ñ,ØÐ"3Ñ3�Û*�ð ! JÓ.Ù¨t°A©wÔ7á˜dÐ- fÔ-ò +rI   re   )r^   r×   rÞ  rÝ  rÆ   rß  s    ```` r*   rÎ   Ú$S3ClientArgsCreator.get_crt_callbackó  s   û€ ÷	.ð 	.ð  $Ð#rI   c           	      óŠ  ^• S n[        TR                  [        5      (       a7  TR                  nU R                  R	                  U5      nUTR
                  S'   OTR                  TR
                  S'   S n	[        U4S j[         5       5      (       d…  TR
                  R                  SS5      R                  5       n
[        R                  R                  [        R                  R                  U
   [        R                  R                  R                  S9n	STR
                  S'   U R!                  UTUUUUS	9nX{S
'   X›S'   U$ )NÚContentLengthÚBodyc              3   óB   >#   • U  H  nUTR                   ;   v •  M     g 7fr!   )rw   )Ú.0Úchecksum_argrÔ   s     €r*   Ú	<genexpr>ÚHS3ClientArgsCreator._get_make_request_args_put_object.<locals>.<genexpr>  s#   øé € ð 
â 9�ð ˜I×0Ñ0Ö0Ú 9ùs   ƒr    ÚCRC32)Ú	algorithmÚlocationzoverride-to-be-removedÚ
ContentMD5rÒ  Úsend_filepathÚchecksum_config)r4  rv   r5  rÍ  Úget_file_sizerw   Úanyr   Úpopr¥   r#   r$   ÚS3ChecksumConfigr£   ÚS3ChecksumLocationÚTRAILERrÔ  )r^   rÓ   rÔ   r¬   r×   rÓ  rÕ   rî  Údata_lenrï  r¦   Úmake_request_argss     `         r*   Ú!_get_make_request_args_put_objectÚ5S3ClientArgsCreator._get_make_request_args_put_object  s>  ø€ ð ˆÜ�i×'Ñ'¬×-Ñ-Ø%×-Ñ-ˆMØ—~‘~×3Ñ3°MÓBˆHØ4<ˆI× Ñ  Ò1à+4×+<Ñ+<ˆI× Ñ  Ñ(àˆÜô 
å 9ó
÷ 
ñ 
ð "+×!5Ñ!5×!9Ñ!9Ø# Wó"ç‰e‹gð ô %Ÿi™i×8Ñ8Ü Ÿ)™)×7Ñ7Ð8JÑKÜŸ™×5Ñ5×=Ñ=ð 9ð ˆOð .Fˆ	×Ñ˜\Ñ*à ×?Ñ?Ø%ØØ#ØØ!5Ø 3ð @ð 
Ðð .;˜/Ñ*Ø/>Ð+Ñ,Ø Ð rI   c           	      óŠ  • S nS n[         R                  R                  SS9n	[        UR                  [
        5      (       aM  UR                  n
U R                  R                  U
5      nUR                  [        X:XpR                  5      5        O[        UR                  5      nU R                  UUUUUUS9nX{S'   X‹S'   X›S'   U$ )NT)Úvalidate_responserÒ  Úrecv_filepathÚon_bodyrï  )r#   r$   ró  r4  rv   r5  rÍ  Úget_temp_filenamerÍ   ÚRenameTempFileHandlerÚOnBodyFileObjWriterrÔ  )r^   rÓ   rÔ   r¬   r×   rÓ  rÕ   rü  rý  rï  Úfinal_filepathr÷  s               r*   Ú!_get_make_request_args_get_objectÚ5S3ClientArgsCreator._get_make_request_args_get_object;  sÒ   € ð ˆØˆÜ Ÿ)™)×4Ñ4ÀtÐ4ÐLˆÜ�i×'Ñ'¬×-Ñ-Ø&×.Ñ.ˆNØ ŸN™N×<Ñ<¸^ÓLˆMØ ×'Ñ'Ü%Ø°ÇÁóõô *¨)×*;Ñ*;Ó<ˆGà ×?Ñ?Ø%ØØ#ØØ!5Ø 3ð @ð 
Ðð .;˜/Ñ*Ø'.˜)Ñ$Ø/>Ð+Ñ,Ø Ð rI   c                 óˆ  • U R                   R                  X5      [        [        UR	                  5       [        R
                  5      U R                  USXV5      U R                  US5      S.nUS   [        R
                  :X  a*  SR                  S UR                  S5       5       5      US'   [        5       nUR                  UR                  5      =n	(       a2  U	S	   S:X  a)  [        [        R                  S
SSS9US'   U	S   Ul        U$ [        UR                  5      (       a  [        [        R                   SSS9US'   U$ )Nrª   rÙ  )rQ  ÚtyperÝ   Úon_progressr  Ú c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr!   )Útitle)ræ  Úxs     r*   rè  ÚES3ClientArgsCreator._default_get_make_request_args.<locals>.<genexpr>x  s   é € ð :Ú#:˜a—‘—	�	Ò#:ùs   ‚Ú_rq  r1   Ú*F)rë  r1   Úuse_double_uri_encodeÚshould_normalize_uri_pathÚsigning_configÚresource_name)rë  r  r  )rÌ  r  rb  r   r¥   ÚDEFAULTrÎ   rš   ÚsplitÚ_S3ArnParamHandlerÚ
handle_arnrt   r   r   ÚV4_ASYMMETRICr   ÚV4_S3EXPRESS)
r^   rÓ   rÔ   r¬   r×   rÓ  rÕ   r÷  Úarn_handlerÚaccesspoint_arn_detailss
             r*   rÔ  Ú2S3ClientArgsCreator._default_get_make_request_args_  s^  € ð ×/Ñ/×FÑFØóô Ü˜|×1Ñ1Ó3´]×5JÑ5Jóð ×,Ñ,Ø˜Ð 4óð  ×0Ñ0°¸ÓDñ
Ðð ˜VÑ$¬×(=Ñ(=Ó=Ø24·'±'ñ :Ø#/×#5Ñ#5°cÔ#:ó:ó 3ÐÐ.Ñ/ô )Ó*ˆà'2×'=Ñ'=¸i×>NÑ>NÓ'OÐOÐ#ÕOØ% hÑ/°2Ó5ô
 3CÜ-×;Ñ;ØØ&+Ø*/ñ	3ÐÐ.Ñ/ð  7°ÑGˆIÔð !Ð ô ! ×!1Ñ!1×2Ñ2ô 3CÜ-×:Ñ:Ø&+Ø*/ñ3ÐÐ.Ñ/ð
 !Ð rI   )rÍ  rÌ  rß   )rá   râ   rã   rä   rb   rÏ   rÎ   rø  r  rÔ  rå   re   rI   r*   rU   rU   Ý  s*   † ò"ò
ð*  Øô$ò2-!ò^"!õH4!rI   rU   c                   ó    • \ rS rSrS rS rSrg)rÿ  i–  c                 ó4   • Xl         X l        X0l        X@l        g r!   )rø   Ú_final_filenameÚ_temp_filenamerS   )r^   r¬   Úfinal_filenameÚtemp_filenamera   s        r*   rb   ÚRenameTempFileHandler.__init__—  s   € Ø'ÔØ-ÔØ+ÔØ�rI   c                 óx  • US   nU(       a&  U R                   R                  U R                  5        g  U R                   R                  U R                  U R                  5        g ! [
         aJ  nU R                   R                  U R                  5        U R                  R                  U5         S nAg S nAff = f)NrÇ   )rS   Úremove_filer  Úrename_filer  r¹   rø   rÒ   )r^   r¾   rÇ   rÜ   s       r*   r�  ÚRenameTempFileHandler.__call__�  s�   € Ø�w‘ˆÞØ�L‰L×$Ñ$ T×%8Ñ%8Õ9ð3Ø—‘×(Ñ(Ø×'Ñ'¨×)=Ñ)=õøô ó 3Ø—‘×(Ñ(¨×)<Ñ)<Ô=à×!Ñ!×/Ñ/°×2Ñ2ûð3ús   ´0A% Á%
B9Á/A B4Â4B9)rø   r  rS   r  N©rá   râ   rã   rä   rb   r�  rå   re   rI   r*   rÿ  rÿ  –  s   † òõ3rI   rÿ  c                   ó    • \ rS rSrS rS rSrg)rÌ   i¬  c                 ó   • Xl         g r!   ©rø   r«   s     r*   rb   ÚAfterDoneHandler.__init__­  s   € Ø'ÕrI   c                 ó8   • U R                   R                  5         g r!   )rø   r´  r½   s     r*   r�  ÚAfterDoneHandler.__call__°  s   € Ø×Ñ×5Ñ5Õ7rI   r)  Nr&  re   rI   r*   rÌ   rÌ   ¬  s   † ò(õ8rI   rÌ   c                   ó    • \ rS rSrS rS rSrg)r   i´  c                 ó   • Xl         g r!   ©Ú_fileobj)r^   rv   s     r*   rb   ÚOnBodyFileObjWriter.__init__µ  s   € Ø�rI   c                 ó:   • U R                   R                  U5        g r!   )r0  Úwrite)r^   rŒ  r¾   s      r*   r�  ÚOnBodyFileObjWriter.__call__¸  s   € Ø�‰×Ñ˜EÕ"rI   r/  Nr&  re   rI   r*   r   r   ´  s   † ò õ#rI   r   c                   óT   • \ rS rSrSr\R                  " S5      rS rS r	S r
S rSrg	)
r  i¼  züPartial port of S3ArnParamHandler from botocore.

This is used to make a determination on MRAP accesspoints for signing
purposes. This should be safe to remove once we properly integrate auth
resolution from Botocore into the CRT transfer integration.
zA^(?P<resource_type>accesspoint|outpost)[/:](?P<resource_name>.+)$c                 ó"   • [        5       U l        g r!   )r   Ú_arn_parserrf   s    r*   rb   Ú_S3ArnParamHandler.__init__È  s   € Ü$›;ˆÕrI   c                 óD   • U R                  U5      nUc  g US   S:X  a  U$ g )NÚresource_typeÚaccesspoint)Ú_get_arn_details_from_bucket©r^   rt   Úarn_detailss      r*   r  Ú_S3ArnParamHandler.handle_arnË  s3   € Ø×7Ñ7¸Ó?ˆØÑØØ�Ñ'¨=Ó8ØÐð 9rI   c                 ó€   •  U R                   R                  U5      nU R                  U5        U$ ! [         a     g f = fr!   )r7  Ú	parse_arnÚ_add_resource_type_and_namer   r=  s      r*   r<  Ú/_S3ArnParamHandler._get_arn_details_from_bucketÒ  sF   € ð	Ø×*Ñ*×4Ñ4°VÓ<ˆKØ×,Ñ,¨[Ô9ØÐøÜ"ó 	ØØð	ús   ‚-0 °
=¼=c                 ó    • U R                   R                  US   5      nU(       a)  UR                  S5      US'   UR                  S5      US'   g g )Nr–   r:  r  )Ú_RESOURCE_REGEXr”   Úgroup)r^   r>  r”   s      r*   rB  Ú._S3ArnParamHandler._add_resource_type_and_nameÛ  sK   € Ø×$Ñ$×*Ñ*¨;°zÑ+BÓCˆÞØ+0¯;©;°Ó+GˆK˜Ñ(Ø+0¯;©;°Ó+GˆK˜Ò(ð rI   )r7  N)rá   râ   rã   rä   ró   ÚreÚcompilerE  rb   r  r<  rB  rå   re   rI   r*   r  r  ¼  s/   † ñð —j’jØLó€Oò'òòõHrI   r  r!   )FÚloggingrH  rZ   Úior   Úawscrt.httpr#   Ú	awscrt.s3Úbotocore.awsrequestrZ  Úbotocore.sessionÚawscrt.authr   r   r   r   Ú	awscrt.ior   r	   r
   r   r   r   r   r   r   Úbotocore.compatr   Úbotocore.configr   Úbotocore.exceptionsr   Úbotocore.utilsr   r   Ús3transfer.constantsr   r   Ús3transfer.exceptionsr   Ús3transfer.futuresr   r   Ús3transfer.managerr   Ús3transfer.utilsr   r   r   r   Ú	getLoggerrá   rL   r"   r+   rH   r=   rO   rÊ   rË   r
  r  r]  r�  rÉ   rU   rÿ  rÌ   r   r  re   rI   r*   Ú<module>r\     s@  ðó Û 	Û Ý ã Û Û Û ÷ó ÷õ ÷ @Ñ ?Ý Ý $Ý "Ý 2ß 9ç >Ý 6ß CÝ .÷ó ð 
×	Ò	˜8Ó	$€àÐ òð6 "ØØØ�"‰fØØôRôj÷$Hñ HôV"Ð&ô "ô*#BÐ*ô #B÷L?ñ ?ô&b,Ð#;ô b,ôJ�gô ÷*ñ *÷&F<ñ F<÷Rv!ñ v!÷r3ñ 3÷,8ñ 8÷#ñ #÷#Hò #HrI   