
    mic                     J    d dl Zd dlZd dlZd dlZd dlZ G d de          ZdS )    Nc                   0   e Zd Zd-dZd Zd Zd Zd Zd Zd.d	Z	d/dZ
d Zd Zd Zd Zd Zd Zd-dZd-dZ	 	 	 	 	 	 	 	 	 	 	 d0dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z	 	 	 	 	 	 	 	 	 	 	 	 d1d"Zd# Zd$ Z d% Z!d& Z"d' Z#d( Z$d2d)Z%d* Z&d+ Z'd, Z(dS )3	KaggleApiNc                 >    |t          j                    }|| _        d S N)apir   
api_client)selfr   s     m/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/kaggle/api/kaggle_api.py__init__zKaggleApi.__init__   s    J$    c                 8    | j                             |d          S )zDownload competition leaderboard  # noqa: E501.

        :param str id: Competition name (required)
        :return: Result
        N)r    competition_leaderboard_downloadr	   ids     r
    competition_download_leaderboardz*KaggleApi.competition_download_leaderboard#   s     ??DIIIr   c                 6    | j                             |          S )zView competition leaderboard  # noqa: E501.

        :param str id: Competition name (required)
        :return: Result
        )r   competition_leaderboard_viewr   s     r
   competition_view_leaderboardz&KaggleApi.competition_view_leaderboard+   s     ;;B???r   c                 8    | j                             ||          S )zDownload competition data file  # noqa: E501.

        :param str id: Competition name (required)
        :param str file_name: Competition name (required)
        :return: Result
        )r   competition_download_file)r	   r   	file_names      r
   competitions_data_download_filez)KaggleApi.competitions_data_download_file3   s     88YGGGr   c                 6    | j                             |          S )zDownload all competition data files  # noqa: E501.

        :param str id: Competition name (required)
        :return: Result
        )r   competition_download_filesr   s     r
    competitions_data_download_filesz*KaggleApi.competitions_data_download_files<   s     99"===r   c                 6    | j                             |          S )zList competition data files  # noqa: E501.

        :param str id: Competition name (required)
        :return: Result
        )r   competition_list_filesr   s     r
   competitions_data_list_filesz&KaggleApi.competitions_data_list_filesD   s     55b999r      c                 >    | j                             |||||          S )a_  List competitions  # noqa: E501.

        :param str group: Filter competitions by a particular group
        :param str category: Filter competitions by a particular category
        :param str sort_by: Sort the results
        :param int page: Page number
        :param str search: Search terms
        :return: ApiListCompetitionsResponse
        )r   competitions_list)r	   groupcategorysort_bypagesearchs         r
   r!   zKaggleApi.competitions_listL   s#     00'4QWXXXr   r   c                 8    | j                             ||          S )zList competition submissions  # noqa: E501.

        :param str id: Competition name (required)
        :param int page: Page number
        :return: Result
        )r   competition_submissions)r	   r   r%   s      r
   competitions_submissions_listz'KaggleApi.competitions_submissions_listX   s     66r4@@@r   c                 Z    t          d           t          d           t                      )aT  Submit to competition  # noqa: E501.

        :param str blob_file_tokens: Token identifying location of uploaded
            submission file (required)
        :param str submission_description: Description of competition
            submission (required)
        :param str id: Competition name (required)
        :return: Result
        z1competitions_submissions_submit() not implemented>use kaggle_api_extended.KaggleApi.competition_submit() insteadprintNotImplementedError)r	   blob_file_tokenssubmission_descriptionr   s       r
   competitions_submissions_submitz)KaggleApi.competitions_submissions_submita   s.     	ABBBNOOO!###r   c                 Z    t          d           t          d           t                      )a  Upload competition submission file  # noqa: E501.

        :param file file: Competition submission file (required)
        :param str guid: Location where submission should be uploaded
            (required)
        :param int content_length: Content length of file in bytes
            (required)
        :param int last_modified_date_utc: Last modified date of file in
            seconds since epoch in UTC (required)
        :return: Result
        z1competitions_submissions_upload() not implementedzKuse kaggle_api_extended.KaggleApi.competitions_submissions_submit() insteadr,   )r	   fileguidcontent_lengthlast_modified_date_utcs        r
   competitions_submissions_uploadz)KaggleApi.competitions_submissions_uploado   s.     	ABBB[\\\!###r   c                 Z    t          d           t          d           t                      )a  Generate competition submission URL  # noqa: E501.

        :param str id: Competition name, as it appears in the competition's
            URL (required)
        :param int content_length: Content length of file in bytes
            (required)
        :param int last_modified_date_utc: Last modified date of file in
            seconds since epoch in UTC (required)
        :param str file_name: Competition submission file name
        :return: Result
        z.competitions_submissions_url() not implementedr+   r,   )r	   r   r5   r6   s       r
   competitions_submissions_urlz&KaggleApi.competitions_submissions_url   s.     	>???NOOO!###r   c                 Z    t          d           t          d           t                      )zCreates (aka \&quot;drops\&quot;) a new file into the inbox.  # noqa:
        E501.

        :param CreateInboxFileRequest create_inbox_file_request: (required)
        :return: Result
        z#create_inbox_file() not implementedz<use kaggle_api_extended.KaggleApi.files_upload_cli() insteadr,   )r	   create_inbox_file_requests     r
   create_inbox_filezKaggleApi.create_inbox_file   s.     	3444LMMM!###r   c                 Z    t          d           t          d           t                      )zCreate a new dataset  # noqa: E501.

        :param DatasetNewRequest request: Information for creating a new
            dataset (required)
        :return: Result
        z%datasets_create_new() not implementedz>use kaggle_api_extended.KaggleApi.dataset_create_new() insteadr,   )r	   requests     r
   datasets_create_newzKaggleApi.datasets_create_new   s.     	5666NOOO!###r   c                 Z    t          d           t          d           t                      )a  Create a new dataset version by id  # noqa: E501.

        :param int id: Dataset ID (required)
        :param DatasetNewVersionRequest dataset_new_version_request:
            Information for creating a new dataset version (required)
        :return: throws NotImplementedError
        z/datasets_create_version_by_id() not implementedzBuse kaggle_api_extended.KaggleApi.dataset_create_version() insteadr,   )r	   r   dataset_new_version_requestkwargss       r
   datasets_create_version_by_idz'KaggleApi.datasets_create_version_by_id   s.     	?@@@RSSS!###r   c                 X    | d| }||d| z  }| j                             |          S )zDownload dataset file  # noqa: E501.

        :param str owner_slug: Dataset owner (required)
        :param str dataset_slug: Dataset name (required)
        :param str dataset_version_number: Dataset version number
        :return: Result
        /)r   dataset_download_files)r	   
owner_slugdataset_slugdataset_version_numberdatasets        r
   datasets_downloadzKaggleApi.datasets_download   sG      00,00!-31333G55g>>>r   c                 Z    | d| }||d| z  }| j                             ||          S )ac  Download dataset file  # noqa: E501.

        :param str owner_slug: Dataset owner (required)
        :param str dataset_slug: Dataset name (required)
        :param str file_name: File name (required)
        :param str dataset_version_number: Dataset version number
        :return: True if the file was downloaded successfully, False otherwise
        rE   N@)r   dataset_download_file)r	   rG   rH   r   rI   rJ   s         r
   datasets_download_filez KaggleApi.datasets_download_file   sI      00,00!-31333G44WiHHHr   Fc                 L    | j                             |||||||||	|
|          S )a  List datasets  # noqa: E501.

        :param str group: Display datasets by a particular group
        :param str sort_by: Sort the results
        :param str size: (DEPRECATED). Please use --max-size and --min-size
            to filter dataset sizes.
        :param str filetype: Display datasets of a specific file type
        :param str license: Display datasets with a specific license
        :param str tagids: A comma separated list of tags to filter by
        :param str search: Search terms
        :param str user: Display datasets by a specific user or organization
        :param int page: Page number
        :param int max_size: Max Dataset Size (bytes)
        :param int min_size: Max Dataset Size (bytes)
        :return: List of ApiDatasetFile.
        )r$   size	file_typelicense_nametag_idsr&   userminer%   max_sizemin_size)r   dataset_list)r	   r$   rQ   rR   rS   rT   r&   rU   rV   r%   rW   rX   s               r
   datasets_listzKaggleApi.datasets_list   sD    < ++% , 
 
 	
r   c                 B    | j                             | d| d          S )zGet dataset creation status  # noqa: E501.

        :param str owner_slug: Dataset owner (required)
        :param str dataset_slug: Dataset name (required)
        :return: Result
        rE   ))r   dataset_status)r	   rG   rH   rB   s       r
   datasets_statuszKaggleApi.datasets_status   s+     --.M.Ml.M.M.MNNNr   c                 B    | j                             | d| d          S )zDelete a model  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :return: ApiDeleteModelResponse
        rE   r\   )r   model_deleter	   rG   
model_slugs      r
   delete_modelzKaggleApi.delete_model  s+     ++z,I,IJ,I,I,IJJJr   c           	      P    | j                             | d| d| d| d          S )a6  Delete a model instance  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :param str framework: Model instance framework (required)
        :param str instance_slug: Model instance slug (required)
        :return: Result
        rE   Tyes)r   model_instance_deleter	   rG   rb   	frameworkinstance_slugs        r
   delete_model_instancezKaggleApi.delete_model_instance
  s@     44
5m5mZ5m5mR[5m5m^k5m5msw4xxxr   c                 V    | j                             | d| d| d| d| 	d          S )a  Delete a model instance version  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :param str framework: Model instance framework (required)
        :param str instance_slug: Model instance slug (required)
        :param str version_number: Model instance version number (required)
        :return: Result
        rE   Tre   )r   model_instance_version_delete)r	   rG   rb   ri   rj   version_numbers         r
   delete_model_instance_versionz'KaggleApi.delete_model_instance_version  sO     <<UUJUUUU]UU^UU[_ = 
 
 	
r   c                 @    | j                             | d|           S )zGet a model  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :return: Result
        rE   )r   	model_getra   s      r
   	get_modelzKaggleApi.get_model%  s(     ((J)E)E)E)EFFFr   c           	      L    | j                             | d| d| d|           S )a3  Get a model instance  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :param str framework: Model instance framework (required)
        :param str instance_slug: Model instance slug (required)
        :return: Result
        rE   )r   model_instance_getrh   s        r
   get_model_instancezKaggleApi.get_model_instance.  s9     11Z2j2j*2j2jy2j2j[h2j2jkkkr   c                 F    | j                             | d| dd          S )zDownload the latest output from a kernel  # noqa: E501.

        :param str user_name: Kernel owner (required)
        :param str kernel_slug: Kernel name (required)
        :return: Result
        rE   NT)pathforce)r   kernels_outputr	   	user_namekernel_slugs      r
   kernel_outputzKaggleApi.kernel_output9  s1     --.J.J[.J.JQU]a-bbbr   c                 D    | j                             | d| d          S )zPull the latest code from a kernel  # noqa: E501.

        :param str user_name: Kernel owner (required)
        :param str kernel_slug: Kernel name (required)
        :return: Result
        rE   N)rw   )r   kernels_pullrz   s      r
   kernel_pullzKaggleApi.kernel_pullB  s-     ++y,H,H;,H,Ht+TTTr   c                    t          j                    5 }t          j                            |d          }t          j        dd|d          \  }}|                    t          j        |j	                             t          j
        |           t          |d          5 }|                                }||d<   |                    d          |d	<   |                    d
          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   d}|D ]}	|                    |	d           |                    t          j        |                     ddd           n# 1 swxY w Y   | j                            |          cddd           S # 1 swxY w Y   dS )a  Push a new kernel version.  Can be used to create a new kernel and
        update an existing one.  # noqa: E501.

        :param KernelPushRequest kernel_push_request: Information for
            pushing a new kernel version (required)
        :return: Result
        zkernel-metadata.jsoncodepyT)textw	code_filecompetition_data_sourcescompetition_sourcesdataset_data_sourcesdataset_sourceskernel_data_sourceskernel_sourcesmodel_data_sourcesmodel_sources	new_titletitle)r   r   r   r   r   N)tempfileTemporaryDirectoryosrw   joinmkstempwritejsondumpsr   closeopento_dictgetpopr   kernels_push)
r	   kernel_push_requesttmpdir	meta_filefdr   fparamsentries_to_removeks
             r
   kernel_pushzKaggleApi.kernel_pushK  s&    (** 	8fV-CDDI&.vtV$OOOORHHTZ 3 899:::HRLLLi%% ,,4466&/{#06

;U0V0V,-,2JJ7M,N,N()+1::6K+L+L'(*0**5I*J*J'"(**["9"9w%! + ( (AJJq$''''
6**+++#, , , , , , , , , , , , , , ,$ ?//77/	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s7   BF3 CF6F3F	F3	F	
F33F7:F7c                 @    | j                             | d|           S )zGet the status of the latest kernel version  # noqa: E501.

        :param str user_name: Kernel owner (required)
        :param str kernel_slug: Kernel name (required)
        :return: Result
        rE   )r   kernels_statusrz   s      r
   kernel_statuszKaggleApi.kernel_statusl  s(     --.J.J[.J.JKKKr      everyonec                 V    | j                             |||||||dk    ||	|
||          S )al  List kernels  # noqa: E501.

        :param int page: Page number
        :param int page_size: Page size
        :param str search: Search terms
        :param str group: Display only your kernels
        :param str user: Display kernels by a particular group
        :param str language: Display kernels in a specific language
        :param str kernel_type: Display kernels of a specific type
        :param str output_type: Display kernels with a specific output type
        :param str sort_by: Sort the results. 'relevance' only works if
            there is a search query
        :param str dataset: Display kernels using the specified dataset
        :param str competition: Display kernels using the specified
            competition
        :param str parent_kernel: Display kernels that have forked the
            specified kernel
        :return: Result
        r   )r%   	page_sizerJ   competitionparent_kernelr&   rV   rU   languagekernel_typeoutput_typer$   )r   kernels_list)r	   r%   r   rJ   r   r   r&   r"   rU   r   r   r   r$   s                r
   r   zKaggleApi.kernels_listu  sM    D ++#'*$## , 
 
 	
r   c                 B    | j                             | d| d          S )zGet the metadata for a dataset  # noqa: E501.

        :param str owner_slug: Dataset owner (required)
        :param str dataset_slug: Dataset name (required)
        :return: Result
        rE   N)r   dataset_metadata)r	   rG   rH   s      r
   metadata_getzKaggleApi.metadata_get  s+     //:0N0N0N0NPTUUUr   c                    t          j                    5 }t          j                            |d          }t          |d          5 }|                                }|                    d          |d<   |                    dd           |	                    t          j        |                     ddd           n# 1 swxY w Y   | j                            | d| |          cddd           S # 1 swxY w Y   dS )a+  Update the metadata for a dataset  # noqa: E501.

        :param str owner_slug: Dataset owner (required)
        :param str dataset_slug: Dataset name (required)
        :param DatasetUpdateSettingsRequest settings: Dataset metadata to
            update (required)
        :return: Result
        zdataset-metadata.jsonr   
is_private	isPrivateNrE   )r   r   r   rw   r   r   r   r   r   r   r   r   r   dataset_metadata_update)	r	   rG   rH   settingsr>   r   r   r   r   s	            r
   metadata_postzKaggleApi.metadata_post  sz    (** 	ffV-DEEIi%% , **&,jj&>&>{#

<...
6**+++	, , , , , , , , , , , , , , ,
 ?::j;Y;Y<;Y;Y[dee	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	f 	fs6   1C2A*B;/C2;B?	?C2B?	"C22C69C6c           	      V    | d| d| d| d| 	}| j                             |          S )a  Download model instance version files  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :param str framework: Model instance framework (required)
        :param str instance_slug: Model instance slug (required)
        :param str version_number: Model instance version number (required)
        :return: Result
        rE   )r   model_instance_version_download)r	   rG   rb   ri   rj   rn   vs          r
    model_instance_versions_downloadz*KaggleApi.model_instance_versions_download  sE     UUJUUUU]UU^UU>>qAAAr   c                 Z    t          d           t          d           t                      )a?  Create a new model instance  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model slug (required)
        :param ModelNewInstanceRequest model_new_instance_request:
            Information for creating a new model instance (required)
        :return: Result
        z(models_create_instance() not implementedzAuse kaggle_api_extended.KaggleApi.model_instance_create() insteadr,   )r	   rG   rb   model_new_instance_requests       r
   models_create_instancez KaggleApi.models_create_instance  s.     	8999QRRR!###r   c                 Z    t          d           t          d           t                      )a  Create a new model instance version  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model slug (required)
        :param str framework: Model instance framework (required)
        :param str instance_slug: Model instance slug (required)
        :param ModelInstanceNewVersionRequest
            model_instance_new_version_request: Information for creating a
            new model instance version (required)
        :return: Result
        z0models_create_instance_version() not implementedzIuse kaggle_api_extended.KaggleApi.model_instance_version_create() insteadr,   )r	   rG   rb   ri   rj   "model_instance_new_version_requests         r
   models_create_instance_versionz(KaggleApi.models_create_instance_version  s.     	@AAAYZZZ!###r   c                    t          j                    5 }t          j                            |d          }t          |d          5 }|                                }|                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d	          |d
<   d}|D ]}|                    |d           |	                    t          j        |                     ddd           n# 1 swxY w Y   | j                            |          cddd           S # 1 swxY w Y   dS )zCreate a new model  # noqa: E501.

        :param ModelNewRequest model_new_request: Information for creating a
            new model (required)
        :return: Result
        model-metadata.jsonr   rG   	ownerSlugr   r   publish_timepublishTimeprovenance_sourcesprovenanceSources)rG   r   r   r   N)r   r   r   rw   r   r   r   r   r   r   r   r   r   model_create_new)r	   model_new_requestr   r   r   r   r   r   s           r
   models_create_newzKaggleApi.models_create_new  s    (** 	<fV-BCCIi%% 	,*2244&,jj&>&>{#&,jj&>&>{#(.

>(B(B}%.4jj9M.N.N*+$f!* ( (AJJq$''''
6**+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ?33F;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s6   1D;B9D
>D;
D	D;D	D;;D?D?c                 @    | j                             |||||          S )a7  List models

        :param str search: Search terms
        :param str sort_by: Sort the results
        :param str owner: Display models by a specific user or organization
        :param int page_size: Page size
        :param str page_token: Page token for pagination
        :return: list of models
        )r$   r&   ownerr   
page_token)r   
model_list)r	   r$   r&   r   r   r   s         r
   models_listzKaggleApi.models_list  s/     ))F%9Yc * 
 
 	
r   c                    t          j                    5 }t          j                            |d          }t          |d          5 }|                                }|                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d	          |d
<   |                    d          |d<   d}|D ]}	|                    |	d           |	                    t          j        |                     ddd           n# 1 swxY w Y   | j                            |          cddd           S # 1 swxY w Y   dS )a  Update a model  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :param ModelUpdateRequest model_update_request: Information for
            updating a model (required)
        :return: Result
        r   r   rG   r   r   r   r   r   r   r   update_mask
updateMask)rG   r   r   r   r   N)r   r   r   rw   r   r   r   r   r   r   r   r   r   model_update)
r	   rG   rb   model_update_requestr   r   r   r   r   r   s
             r
   update_modelzKaggleApi.update_model  s    (** 	8fV-BCCIi%% 
,-5577&,jj&>&>{#&,jj&>&>{#(.

>(B(B}%.4jj9M.N.N*+'-zz-'@'@|$$u!* ( (AJJq$''''
6**+++
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, ?//77	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s6   1ECD"E"D&	&E)D&	*EEEc                     t          j                    5 }t          j                            |d          }t          |d          5 }|                                }	|	                    d          |	d<   |	                    d          |	d<   |	                    d          |	d<   |	                    d	          |	d
<   |	                    d          |	d<   |	                    d          |	d<   |	                    d          |	d<   d}
|
D ]}|	                    |d           |	                    t          j        |	                     ddd           n# 1 swxY w Y   | j                            |          cddd           S # 1 swxY w Y   dS )a  Update a model  # noqa: E501.

        :param str owner_slug: Model owner (required)
        :param str model_slug: Model name (required)
        :param str framework: Model instance framework (required)
        :param str instance_slug: Model instance slug (required)
        :param ModelInstanceUpdateRequest model_instance_update_request:
            Information for updating a model instance (required)
        :return: Result
        zmodel-instance-metadata.jsonr   rS   licenseNamefine_tunablefineTunabletraining_datatrainingDatamodel_instance_typemodelInstanceTypebase_model_instancebaseModelInstanceexternal_base_model_urlexternalBaseModelUrlr   r   )rS   r   r   r   r   r   r   N)r   r   r   rw   r   r   r   r   r   r   r   r   r   model_instance_update)r	   rG   rb   ri   rj   model_instance_update_requestr   r   r   r   r   r   s               r
   update_model_instancezKaggleApi.update_model_instance/  s    (** 	AfV-KLLIi%% ,6>>@@(.

>(B(B}%(.

>(B(B}%)/O)D)D~&.4jj9N.O.O*+.4jj9N.O.O*+17<U1V1V-.'-zz-'@'@|$%! + ( (AJJq$''''
6**+++), , , , , , , , , , , , , , ,* ?88@@/	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As6   1FDEFE	FE	FF
Fc                 x    t          d           t          d           t          d           t                      )zStart uploading a file  # noqa: E501 :param StartBlobUploadRequest
        start_blob_upload_request: (required) :return: StartBlobUploadResponse.zupload_file() not implementedz2it should not be needed after converting your codez>to use kaggle_api_extended.KaggleApi.<high-level-fn>() insteadr,   )r	   start_blob_upload_requests     r
   upload_filezKaggleApi.upload_fileU  s=     	-...BCCCNOOO!###r   r   )NNNr   N)r   )NNNNNNNFr   NN)r   r   NNNNr   NNNNN)NNNr   N))__name__
__module____qualname__r   r   r   r   r   r   r!   r)   r1   r7   r9   r<   r?   rC   rK   rO   rZ   r^   rc   rk   ro   rr   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r
   r   r      s       % % % %
J J J@ @ @H H H> > >: : :
Y 
Y 
Y 
YA A A A$ $ $$ $ $ $ $ $ 	$ 	$ 	$	$ 	$ 	$
$ 
$ 
$? ? ? ?I I I I  *
 *
 *
 *
XO O OK K K	y 	y 	y
 
 
 G G G	l 	l 	lc c cU U U8 8 8BL L L /
 /
 /
 /
bV V Vf f f$B B B$ $ $$ $ $$< < <*
 
 
 
8 8 8:$A $A $AL$ $ $ $ $r   r   )kaggle_api_extendedr   r   r   rer   objectr   r   r   r
   <module>r      su   * " ! ! !  				 				 $ $ $ $ $ $ $ $ $ $r   