o
    iKt                     @   sn  d dl mZ ddlT d dlT d dlmZ d dlmZ d dlmZ G dd dej	Z
G d	d
 d
ej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd dej	ZG dd  d ej	ZG d!d" d"ej	ZG d#d$ d$ej	ZG d%d& d&ej	ZG d'd( d(ej	ZG d)d* d*ej	ZG d+d, d,ej	ZG d-d. d.ej	ZG d/d0 d0ej	ZG d1d2 d2ej	ZG d3d4 d4ej	Z G d5d6 d6ej	Z!G d7d8 d8ej	Z"G d9d: d:ej	Z#G d;d< d<ej	Z$G d=d> d>ej	Z%G d?d@ d@ej	Z&G dAdB dBej	Z'G dCdD dDej	Z(G dEdF dFej	Z)G dGdH dHej	Z*G dIdJ dJej	Z+G dKdL dLej	Z,G dMdN dNej	Z-G dOdP dPej	Z.G dQdR dRej	Z/G dSdT dTej	Z0G dUdV dVej	Z1G dWdX dXej	Z2G dYdZ dZej	Z3G d[d\ d\ej	Z4G d]d^ d^ej	Z5G d_d` d`ej	Z6daS )b    )serializers   )*)languageKey)
MEDIA_ROOT)getLanguagec                   @      e Zd ZG dd dZdS )TokenTypeSerializerc                   @      e Zd ZeZg dZdS )zTokenTypeSerializer.Meta)idkeyNametokenTypeLencreatedDateupdatedDateN)__name__
__module____qualname__	TokenTypemodelfields r   r   ^/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/mama_care_api/basic/serializers.pyMeta       r   Nr   r   r   r   r   r   r   r   r	          r	   c                   @   r   )DeviceOSTypeSerializerc                   @   r
   )zDeviceOSTypeSerializer.Meta)r   r   r   r   N)r   r   r   DeviceOSTyper   r   r   r   r   r   r      r   r   Nr   r   r   r   r   r      r   r   c                   @   r   )LanguageSerializerc                   @   r
   )zLanguageSerializer.Meta)r   namecountryCode	isEnabledlanguageCoder   r   N)r   r   r   Languager   r   r   r   r   r   r   )   r   r   Nr   r   r   r   r   r   (   r   r   c                   @   *   e Zd Ze ZG dd dZdd ZdS )GenderSerializerc                   @   r
   )zGenderSerializer.Metar   r   r   N)r   r   r   Genderr   r   r   r   r   r   r   <   r   r   c                 C   J   t | }|d ur!tjjt|jdj|d}| dkr#|d jS d S d S )N)genderId
languageIdr   )r   GenderLanguageobjectsfilterstrr   __len__r   )selfinstancer+   genderLanguageListr   r   r   get_name@      
zGenderSerializer.get_nameNr   r   r   r   SerializerMethodFieldr   r   r4   r   r   r   r   r%   9       r%   c                   @   r   )GenderLanguageSerializerc                   @      e Zd ZeZdddegZdS )zGenderLanguageSerializer.Metar   r   r)   N)r   r   r   r,   r   r   r   r   r   r   r   r   K       r   Nr   r   r   r   r   r9   J   r   r9   c                   @   r$   )ChildTypeSerializerc                   @   r
   )zChildTypeSerializer.Metar&   N)r   r   r   	ChildTyper   r   r   r   r   r   r   T   r   r   c                 C   r(   )N)childTypeIdr*   r   )r   ChildTypeLanguager-   r.   r/   r   r0   r   )r1   r2   r+   childTypeLanguageListr   r   r   r4   X   r5   zChildTypeSerializer.get_nameNr6   r   r   r   r   r<   Q   r8   r<   c                   @   r   )ChildTypeLanguageSerializerc                   @   r:   )z ChildTypeLanguageSerializer.Metar   r   r>   N)r   r   r   r?   r   r   r   r   r   r   r   r   c   r;   r   Nr   r   r   r   r   rA   b   r   rA   c                   @   r$   )SymptomTypeSerializerc                   @   r
   )zSymptomTypeSerializer.Meta)r   r   imager   r   r   N)r   r   r   SymptomTyper   r   r   r   r   r   r   l   r   r   c                 C   r(   )N)symptomTypeIdr*   r   )r   SymptomTypeLanguager-   r.   r/   r   r0   r   )r1   r2   r+   symptomTypeLanguageListr   r   r   r4   w   r5   zSymptomTypeSerializer.get_nameNr6   r   r   r   r   rB   i   s    rB   c                   @   r   )SymptomTypeLanguageSerializerc                   @   r:   )z"SymptomTypeLanguageSerializer.Metar   r   rE   N)r   r   r   rF   r   r   r   r   r   r   r   r          r   Nr   r   r   r   r   rH      r   rH   c                   @   r$   )KickTrackerStatusSerializerc                   @   r
   )z KickTrackerStatusSerializer.Meta)r   r   countcolorr   r   r   N)r   r   r   KickTrackerStatusr   r   r   r   r   r   r      r   r   c                 C   r(   )N)kickTrackerStatusIdr*   r   )r   KickTrackerStatusLanguager-   r.   r/   r   r0   r   )r1   r2   r+   kickTrackerStatusLanguageListr   r   r   r4      r5   z$KickTrackerStatusSerializer.get_nameNr6   r   r   r   r   rJ          rJ   c                   @   r   )#KickTrackerStatusLanguageSerializerc                   @   s   e Zd ZeZddddegZdS )z(KickTrackerStatusLanguageSerializer.Metar   r   descriptionrN   N)r   r   r   rO   r   r   r   r   r   r   r   r      s    r   Nr   r   r   r   r   rR      r   rR   c                   @   :   e Zd Ze Ze ZG dd dZdd Zdd Z	dS )BMICaseTypeSerializerc                   @   r
   )zBMICaseTypeSerializer.Meta)r   r   r   r   r   caseListN)r   r   r   BMICaseTyper   r   r   r   r   r   r      r   r   c                 C   r(   )NbmiCaseTypeIdr*   r   )r   BMICaseTypeLanguager-   r.   r/   r   r0   r   )r1   r2   r+   BMICaseTypeLanguageListr   r   r   r4      r5   zBMICaseTypeSerializer.get_namec                 C   ,   t | }tjj|jd}t|t|iddjS )NrX   Tcontextmany)r   BMICaser-   r.   r   BMICaseSerializerr   data)r1   r2   r+   bmiCaseListr   r   r   get_caseList      
z"BMICaseTypeSerializer.get_caseListN)
r   r   r   r   r7   r   rV   r   r4   rd   r   r   r   r   rU          	rU   c                   @   r   )BMICaseTypeLanguageSerializerc                   @   r:   )z"BMICaseTypeLanguageSerializer.Metar   r   rY   N)r   r   r   rZ   r   r   r   r   r   r   r   r      rI   r   Nr   r   r   r   r   rg      r   rg   c                   @   J   e Zd Ze Ze Ze ZG dd dZdd Z	dd Z
dd Zd	S )
ra   c                   @   r
   )zBMICaseSerializer.Meta)
r   r   minmaxr   r   rY   r   	rangeTypeweightGainListN)r   r   r   r`   r   r   r   r   r   r   r      r   r   c                 C   r(   )N	bmiCaseIdr*   r   )r   BMICaseLanguager-   r.   r/   r   r0   r   )r1   r2   r+   BMICaseLanguageListr   r   r   r4      r5   zBMICaseSerializer.get_namec                 C   s(   d}|j dkrd}|S |jdkrd}|S )Nr   r      )ri   rj   )r1   r2   valr   r   r   get_rangeType   s   

zBMICaseSerializer.get_rangeTypec                 C   s   t jj|jd}t|ddjS )Nrm   T)r_   )BMICaseWeightGainr-   r.   r   BMICaseWeightGainSerializerrb   )r1   r2   rl   r   r   r   get_weightGainList  s   z$BMICaseSerializer.get_weightGainListN)r   r   r   r   r7   r   rk   rl   r   r4   rs   rv   r   r   r   r   ra      s    	ra   c                   @   r   )BMICaseLanguageSerializerc                   @   r:   )zBMICaseLanguageSerializer.Metar   r   rn   N)r   r   r   ro   r   r   r   r   r   r   r   r   	  rI   r   Nr   r   r   r   r   rw     r   rw   c                   @   r   )ru   c                   @   r
   )z BMICaseWeightGainSerializer.Meta)r   ri   rj   rn   r   r   N)r   r   r   rt   r   r   r   r   r   r   r     r   r   Nr   r   r   r   r   ru     r   ru   c                   @   r$   )CalculationMethodSerializerc                   @   r
   )z CalculationMethodSerializer.Meta)r   r   r   r   r   N)r   r   r   CalculationMethodr   r   r   r   r   r   r   #  r   r   c                 C   r(   )N)calculationMethodIdr*   r   )r   CalculationMethodLanguager-   r.   r/   r   r0   r   )r1   r2   r+   calculationMethodLanguageListr   r   r   r4   -  r5   z$CalculationMethodSerializer.get_nameNr6   r   r   r   r   rx          
rx   c                   @   r   )#CalculationMethodLanguageSerializerc                   @   r:   )z(CalculationMethodLanguageSerializer.Metar   r   rz   N)r   r   r   r{   r   r   r   r   r   r   r   r   8  rI   r   Nr   r   r   r   r   r~   7  r   r~   c                   @   rT   )PregnancyWeekBasicSerializerc                   @   r
   )z!PregnancyWeekBasicSerializer.Meta)r   rC   fetalDevelopmentbabySizeNr   r   r   PregnancyWeekr   r   r   r   r   r   r   I  r   r   c                 C   r(   NpregnancyWeekIdr*   r   r   PregnancyWeekLanguager-   r.   r/   r   r0   r   r1   r2   r+   pregnancyWeekLanguageListr   r   r   get_fetalDevelopmentR  r5   z1PregnancyWeekBasicSerializer.get_fetalDevelopmentc                 C   >   t | }tjj|jd}| dkrt|d t|idjS d S Nr   r   r^   )	r   PregnancyBabySizer-   r.   r   r0    PregnancyBabySizeBasicSerializerr   rb   r1   r2   r+   dataListr   r   r   get_babySize[     z)PregnancyWeekBasicSerializer.get_babySizeN)
r   r   r   r   r7   r   r   r   r   r   r   r   r   r   r   E  s    		r   c                   @   sz   e Zd Ze Ze Ze Ze Ze Z	e Z
G dd dZdd Zdd Zdd Zd	d
 Zdd Zdd ZdS )PregnancyWeekDetailSerializerc                   @   r
   )z"PregnancyWeekDetailSerializer.Meta)r   r   
weekNumber	trimesterrC   r   r   r   r   symptomList	checkListnutritionList
monthlyTipNr   r   r   r   r   r   m  r   r   c                 C   r(   r   r   r   r   r   r   r     r5   z2PregnancyWeekDetailSerializer.get_fetalDevelopmentc                 C   r   r   )	r   r   r-   r.   r   r0   !PregnancyBabySizeDetailSerializerr   rb   r   r   r   r   r     r   z*PregnancyWeekDetailSerializer.get_babySizec                 C   r\   Nr   Tr]   )r   PregnancySymptomr-   r.   r   PregnancySymptomSerializerr   rb   r   r   r   r   get_symptomList  re   z-PregnancyWeekDetailSerializer.get_symptomListc                 C   r\   r   )r   PregnancyCheckListr-   r.   r   PregnancyCheckListSerializerr   rb   r   r   r   r   get_checkList  re   z+PregnancyWeekDetailSerializer.get_checkListc                 C   r\   r   )r   PregnancyNutritionr-   r.   r   PregnancyNutritionSerializerr   rb   r   r   r   r   get_nutritionList  re   z/PregnancyWeekDetailSerializer.get_nutritionListc                 C   s   t | }d}|jdkrd}n:|jdkrd}n2|jdkrd}n*|jdkr&d}n"|jd	kr.d
}n|jdkr6d}n|jdkr>d}n
|jdkrFd}nd}tjj|d}| dkr`t|d t|idjS d S )Nr      r      rq                              #   	   )monthNumberr   )	r   r   
MonthlyTipr-   r.   r0   MonthlyTipSerializerr   rb   )r1   r2   r+   monthselectedr   r   r   get_monthlyTip  s6   







z,PregnancyWeekDetailSerializer.get_monthlyTipN)r   r   r   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   e  s    		r   c                   @   r   )PregnancyWeekLanguageSerializerc                   @       e Zd ZeZdddddegZdS )z$PregnancyWeekLanguageSerializer.Metar   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r         r   Nr   r   r   r   r   r     r   r   c                   @   r$   )r   c                   @   s   e Zd ZeZddgZdS )z%PregnancyBabySizeBasicSerializer.MetarC   rS   Nr   r   r   r   r   r   r   r   r   r   r     s
    r   c                 C   r(   N)pregnancyBabySizeIdr*   r   r   PregnancyBabySizeLanguager-   r.   r/   r   r0   rS   r1   r2   r+   pregnancyBabySizeLanguager   r   r   get_description  r5   z0PregnancyBabySizeBasicSerializer.get_descriptionNr   r   r   r   r7   rS   r   r   r   r   r   r   r     s    r   c                   @   r$   )r   c                   @   r
   )z&PregnancyBabySizeDetailSerializer.Meta)r   r   rC   r   r   r   rS   Nr   r   r   r   r   r     r   r   c                 C   r(   r   r   r   r   r   r   r     r5   z1PregnancyBabySizeDetailSerializer.get_descriptionNr   r   r   r   r   r     rQ   r   c                   @   r   )#PregnancyBabySizeLanguageSerializerc                   @   r   )z(PregnancyBabySizeLanguageSerializer.Metar   rS   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r     r   r   Nr   r   r   r   r   r     r   r   c                   @   r$   )r   c                   @   r
   )zPregnancySymptomSerializer.Metar   r   r   r   rS   N)r   r   r   r   r   r   r   r   r   r   r     r   r   c                 C   r(   )N)pregnancySymptomIdr*   r   )r   PregnancySymptomLanguager-   r.   r/   r   r0   rS   )r1   r2   r+   pregnancySymptomLanguager   r   r   r     r5   z*PregnancySymptomSerializer.get_descriptionNr   r   r   r   r   r     r}   r   c                   @   r   )"PregnancySymptomLanguageSerializerc                   @   r   )z'PregnancySymptomLanguageSerializer.Metar   rS   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   )  r   r   Nr   r   r   r   r   r   (  r   r   c                   @   r$   )r   c                   @   r
   )z!PregnancyCheckListSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r   r   ;  r   r   c                 C   r(   )N)pregnancyCheckListIdr*   r   )r   PregnancyCheckListLanguager-   r.   r/   r   r0   rS   )r1   r2   r+   pregnancyCheckListLanguager   r   r   r   E  r5   z,PregnancyCheckListSerializer.get_descriptionNr   r   r   r   r   r   8  r}   r   c                   @   r   )$PregnancyCheckListLanguageSerializerc                   @   r   )z)PregnancyCheckListLanguageSerializer.Metar   rS   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   P  r   r   Nr   r   r   r   r   r   O  r   r   c                   @   r$   )r   c                   @   r
   )z!PregnancyNutritionSerializer.Meta)r   r   r   r   rS   N)r   r   r   r   r   r   r   r   r   r   r   b  r   r   c                 C   r(   )N)pregnancyNutritionIdr*   r   )r   PregnancyNutritionLanguager-   r.   r/   r   r0   rS   )r1   r2   r+   pregnancyNutritionLanguager   r   r   r   l  r5   z,PregnancyNutritionSerializer.get_descriptionNr   r   r   r   r   r   _  r}   r   c                   @   r   )$PregnancyNutritionLanguageSerializerc                   @   r   )z)PregnancyNutritionLanguageSerializer.Metar   rS   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   w  r   r   Nr   r   r   r   r   r   v  r   r   c                   @   sZ   e Zd Ze Ze Ze Ze ZG dd dZ	dd Z
dd Zdd Zd	d
 ZdS )r   c                   @   r
   )zMonthlyTipSerializer.Meta)r   r   r   r   titlerS   inspirationtipListN)r   r   r   r   r   r   r   r   r   r   r     r   r   c                 C   r(   NmonthlyTipIdr*   r   )r   MonthlyTipLanguager-   r.   r/   r   r0   r   r1   r2   r+   monthlyTipLanguager   r   r   	get_title  r5   zMonthlyTipSerializer.get_titlec                 C   r(   r   )r   r   r-   r.   r/   r   r0   rS   r   r   r   r   r     r5   z$MonthlyTipSerializer.get_descriptionc                 C   r(   r   )r   r   r-   r.   r/   r   r0   r   r   r   r   r   get_inspiration  r5   z$MonthlyTipSerializer.get_inspirationc                 C   s4   t | }tjj|jdj|d}t|dt|idjS )Nr   )tip_tiplanguage__languageIdT)r_   r^   )r   Tipr-   r.   r   TipSerializerr   rb   )r1   r2   r+   selectedListr   r   r   get_tipList  s   
z MonthlyTipSerializer.get_tipListN)r   r   r   r   r7   r   rS   r   r   r   r   r   r   r   r   r   r   r   r     s    			r   c                   @   r   )MonthlyTipLanguageSerializerc                   @   s$   e Zd ZeZdddddddegZdS )	z!MonthlyTipLanguageSerializer.Metar   r   rS   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r     s    r   Nr   r   r   r   r   r     r   r   c                   @   r$   )r   c                   @   r
   )zTipSerializer.Meta)r   r   r   r   rS   N)r   r   r   r   r   r   r   r   r   r   r     r   r   c                 C   r(   )N)tipIdr*   r   )r   TipLanguager-   r.   r/   r   r0   rS   )r1   r2   r+   tipLanguageListr   r   r   r        
zTipSerializer.get_descriptionNr   r   r   r   r   r     r8   r   c                   @   r   )TipLanguageSerializerc                   @   r   )zTipLanguageSerializer.Metar   rS   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r     r   r   Nr   r   r   r   r   r     r   r   c                   @   rT   )FAQCategorySerializerc                   @   r
   )zFAQCategorySerializer.Meta)r   r   r   r   faqListN)r   r   r   FAQCategoryr   r   r   r   r   r   r     r   r   c                 C   r(   )NfaqCategoryIdr*   r   )r   FAQCategoryLanguager-   r.   r/   r   r0   r   )r1   r2   r+   faqCategoryLanguageListr   r   r   r     r5   zFAQCategorySerializer.get_titlec                 C   r\   )Nr   Tr]   )r   FAQr-   r.   r   FAQSerializerr   rb   r   r   r   r   get_faqList   re   z!FAQCategorySerializer.get_faqListN)
r   r   r   r   r7   r   r   r   r   r   r   r   r   r   r     s    	r   c                   @   r   )FAQCategoryLanguageSerializerc                   @   r   )z"FAQCategoryLanguageSerializer.Metar   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   	  r   r   Nr   r   r   r   r   r     r   r   c                   @   rT   )r   c                   @   r
   )zFAQSerializer.Meta)r   r   r   r   questionanswerN)r   r   r   r   r   r   r   r   r   r   r     r   r   c                 C   r(   N)faqIdr*   r   )r   FAQLanguager-   r.   r/   r   r0   r   r1   r2   r+   faqLanguageListr   r   r   get_question$  r   zFAQSerializer.get_questionc                 C   r(   r   )r   r   r-   r.   r/   r   r0   r   r   r   r   r   
get_answer-  r   zFAQSerializer.get_answerN)
r   r   r   r   r7   r   r   r   r   r   r   r   r   r   r     rf   r   c                   @   r   )FAQLanguageSerializerc                   @   "   e Zd ZeZddddddegZdS )zFAQLanguageSerializer.Metar   r   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   8      r   Nr   r   r   r   r   r   7  r   r   c                   @   r   )CheckUpStatusSerializerc                   @   r
   )zCheckUpStatusSerializer.Meta)r   levelminSystolicmaxSystolicminBPMmaxBPMminMGDLmaxMGDLbloodSugarTypeflagr   r   N)r   r   r   CheckUpStatusr   r   r   r   r   r   r   I  r   r   Nr   r   r   r   r   r  H  r   r  c                   @   r   )CheckUpStatusLanguageSerializerc                   @   r   )z$CheckUpStatusLanguageSerializer.Metar   r   rS   r   r   checkUpStatusIdN)r   r   r   CheckUpStatusLanguager   r   r   r   r   r   r   r   \  r   r   Nr   r   r   r   r   r  [  r   r  c                   @   rh   )
SubscriptionPlanBasicSerializerc                   @   r
   )z$SubscriptionPlanBasicSerializer.Meta)r   r   isRecommendedpricer   rS   subscriptionPLanDetailListNr   r   r   SubscriptionPlanr   r   r   r   r   r   r   s  r   r   c                 C   F   t | }|d ur!tjjt|jdj|d}| dkr!|d jS d S NsubscriptionPlanIdr*   r   r   SubscriptionPlanLanguager-   r.   r/   r   r0   r   r1   r2   r+   subscriptionPlanLanguageListr   r   r   r     s   
z)SubscriptionPlanBasicSerializer.get_titlec                 C   r  r  r   r  r-   r.   r/   r   r0   rS   r  r   r   r   r     s   
z/SubscriptionPlanBasicSerializer.get_descriptionc                 C   s,   t | }tjj|jd}t|d|iddjS )Nr  r+   Tr]   )r   SubscriptionPlanDetailr-   r.   r    SubscriptionPlanDetailSerializerrb   r   r   r   r   get_subscriptionPLanDetailList  re   z>SubscriptionPlanBasicSerializer.get_subscriptionPLanDetailListN)r   r   r   r   r7   r   rS   r  r   r   r   r   r   r   r   r   r  n  s    
r  c                   @   rT   )SubscriptionPlanSerializerc                   @   r
   )zSubscriptionPlanSerializer.Meta)r   r   r  r  isUnLimitedisAllowAddingaddingRecordCountisAllowEditingisAllowDeletingisAllowReadingisAllowPagingisAllowAIAssist	isDefaultr   r   r   rS   Nr  r   r   r   r   r     r   r   c                 C   r(   r  r  r  r   r   r   r     r5   z$SubscriptionPlanSerializer.get_titlec                 C   r(   r  r  r  r   r   r   r     r5   z*SubscriptionPlanSerializer.get_descriptionN)
r   r   r   r   r7   r   rS   r   r   r   r   r   r   r   r!    s    	r!  c                   @   r   )"SubscriptionPlanLanguageSerializerc                   @   r   )z'SubscriptionPlanLanguageSerializer.Metar   r   rS   r   r   r  N)r   r   r   r  r   r   r   r   r   r   r   r     r   r   Nr   r   r   r   r   r+    r   r+  c                   @   r$   )r  c                   @   r
   )z%SubscriptionPlanDetailSerializer.Meta)r   r  r   r   rS   N)r   r   r   r  r   r   r   r   r   r   r     r   r   c                 C   r(   )N)subscriptionPlanDetailIdr*   r   )r   SubscriptionPlanDetailLanguager-   r.   r/   r   r0   rS   )r1   r2   r+   "subscriptionPlanDetailLanguageListr   r   r   r     s   
z0SubscriptionPlanDetailSerializer.get_descriptionNr   r   r   r   r   r    r}   r  c                   @   r   )(SubscriptionPlanDetailLanguageSerializerc                   @   r   )z-SubscriptionPlanDetailLanguageSerializer.Metar   rS   r   r   r,  N)r   r   r   r-  r   r   r   r   r   r   r   r     r   r   Nr   r   r   r   r   r/    r   r/  N)7rest_frameworkr   modelsdjango.db.modelsmama_care_api.settingsr   r   common.commonr   ModelSerializerr	   r   r   r%   r9   r<   rA   rB   rH   rJ   rR   rU   rg   ra   rw   ru   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r+  r  r/  r   r   r   r   <module>   sf     * _8".-