
    M/Phe                     
   d Z ddlZddlZddlmZmZmZ ddlZ	ddl
Z
ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  ej                    j        Z e	j        d	d
d          e_        d2dZd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d  Z,e
j-        j.        d!             Z/e
j-        0                    d"d#dg          d$             Z1d% Z2d& Z3d' Z4d( Z5d) Z6d* Z7d+ Z8d, Z9d- Z:d. Z;d/ Z<d0 Z=d1 Z>dS )3zV
Tests for structural time series models

Author: Chad Fulton
License: Simplified-BSD
    N)assert_equalassert_allcloseassert_raises)	macrodata)SpecificationWarning)
structural)UnobservedComponents)results_structural
1959-01-01z
2009-07-01QS)startendfreqFc           	      N   t          t          |           }|d         D ]}|                                }|                    |d                    ||d<   t                                          }|                    dd           }|.t          j        dt          t                    |          |_	        d|v rDt          j        |d                   }|d         d	k    r|j                                        }||d<   t          |d
         fi |}|j         |                    |                    |j                            }	t%          |j        |	           |                    |d                   }
||d         n|j	        j        d         }d|v r	|d         }n#|dv rd}n|dv rd}n|dv rd}ndt          j        f}t-          |j        dt          j        z  |d         z  dt          j        z  |d         z  f           |                    dd          }|                    dd          }|rG|
j                                        |
j        dz  t          j        dt          j        z            z  z   }n&|
j        |
j        d                                          }t%          ||d         ||           	 dd lm} 	 ddl m!}  |             n# tD          $ r Y nw xY w|#                                }|
$                    |           n# tD          $ r Y nw xY wtK          j&        d          5  i }d |v r|d          |d <    |j'        d&|                    d!d           d"d#|}|rG|j                                        |j        dz  t          j        dt          j        z            z  z   }n&|j        |
j        d                                          }||d         k    rt%          ||d         d$%           |(                                 d d d            n# 1 swxY w Y   d S )'Nmodelskwargsuse_exact_diffuser   r   )r   periodsr   exogrealgdpnumpyunempparamsr   cycle_period_bounds)AASYYS)g      ?   )Qr   )g      @0   )MMS)g      2@         rtolHz>atol      ?llf)r'   r)   )register_matplotlib_converters)figTrecordmaxiterstart_params)r1   dispg-C6?)r'    ))getattrr
   copyupdatedtapoppd
date_rangelenindexnplogvaluessqueezer	   r1   transform_paramsuntransform_paramsr   filterfreqstrinfr   cycle_frequency_boundpigetllf_obssumnobs_diffuseloglikelihood_burnmatplotlib.pyplotpyplotpandas.plottingr,   ImportErrorfigureplot_componentswarningscatch_warningsfitsummary)namer   truemodelr   r@   r   r   mod	roundtripres_truerE   r   r'   r)   res_llfpltr,   r-   
fit_kwargsress                        p/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_structural.pyrun_ucmrc      s   %t,,Dh o od8n%%%&7"# zz&$''=|SXX.24 4 4FL V6&+,,D f~(({**,,!F6N #6'?==f== 	((""3#3446 6	()444 ::d8n-- "-$q''6<3G3J F**"()>"?..."+##"/##"1 $%bf+ 	S.g 3A 66g 3A 668	9 	9 	9
 xx%%xx"" 	K
  '++--!.4rva"%i7H7HHIGG &x'B'C'CDHHJJGe4dCCCC
	++++++JJJJJJ..0000   **,,C$$$---- 	 	 	D	 $D111 	 	JD  (,Y
9%#' 1txx'E'E!1 1%/1 1C ! J;??,, -3bfQY6G6GGH +h&A&B&BCGGII$u+%%e4@@@@ KKMMM)	 	 	 	 	 	 	 	 	 	 	 	 	 	 	wo osI   7L
>KL

KL
K-L


LL/CPP	P	c                 F    t          d           t          dd           d S )N	irregularTr   rc   close_figuress    rb   test_irregularrj      s)    KK4000000    c                     i t           _        t          }d}t          j        ||          5  t          d           t          dd           d d d            d S # 1 swxY w Y   d S )Nz Specified model does not containmatchfixed_interceptTrf   r   __warningregistry__r   pytestwarnsrc   ri   warningrn   s      rb   test_fixed_interceptrv      s    %'J""G.E	gU	+	+	+ ; ;!"""!T::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;   !AA!Ac                 F    t          d           t          dd           d S )Ndeterministic_constantTrf   rg   rh   s    rb   test_deterministic_constantrz      +    $%%%$======rk   c                 F    t          d           t          dd           d S )Nrandom_walkTrf   rg   rh   s    rb   test_random_walkr~      )    MMT222222rk   c                 F    t          d           t          dd           d S )Nlocal_levelTrf   rg   rh   s    rb   test_local_levelr      r   rk   c                     t           }d}t          j        ||          5  t          d           t          dd           d d d            d S # 1 swxY w Y   d S Nirregular component addedrm   fixed_slopeTrf   )r   rr   rs   rc   rt   s      rb   test_fixed_sloper      s    "G'E	gU	+	+	+ 7 766667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   !AAAc                     i t           _        t          }d}t          j        ||          5  t          d           t          dd           d d d            d S # 1 swxY w Y   d S r   rp   rt   s      rb   test_fixed_slope_warnr      s    %'J""G'E	gU	+	+	+ 7 766667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7rw   c                 F    t          d           t          dd           d S )Ndeterministic_trendTrf   rg   rh   s    rb   test_deterministic_trendr      s+    !"""!T::::::rk   c                 F    t          d           t          dd           d S )Nrandom_walk_with_driftTrf   rg   rh   s    rb   test_random_walk_with_driftr      r{   rk   c                 F    t          d           t          dd           d S )N local_linear_deterministic_trendTrf   rg   rh   s    rb   %test_local_linear_deterministic_trendr      s+    .///.$GGGGGGrk   c                 F    t          d           t          dd           d S )Nlocal_linear_trendTrf   rg   rh   s    rb   test_local_linear_trendr      s+     !!! D999999rk   c                 F    t          d           t          dd           d S )Nsmooth_trendTrf   rg   rh   s    rb   test_smooth_trendr      )    NNd333333rk   c                 F    t          d           t          dd           d S )Nrandom_trendTrf   rg   rh   s    rb   test_random_trendr      r   rk   c                 F    t          d           t          dd           d S )Ncycle_approx_diffusecycleTrf   rg   rh   s    rb   
test_cycler      s*    "###Gt,,,,,,rk   c                 F    t          d           t          dd           d S )Nseasonal_approx_diffuseseasonalTrf   rg   rh   s    rb   test_seasonalr      s*    %&&&J$//////rk   c                 F    t          d           t          dd           d S )Nfreq_seasonal_approx_diffusefreq_seasonalTrf   rg   rh   s    rb   test_freq_seasonalr      s*    *+++Ot444444rk   c                 F    t          d           t          dd           d S )Nreg_approx_diffuseregTrf   rg   rh   s    rb   test_regr      s*     !!!ET******rk   c                 F    t          d           t          dd           d S )N
rtrend_ar1Trf   rg   rh   s    rb   test_rtrend_ar1r      s)    LLD111111rk   c                 F    t          d           t          dd           d S )N-lltrend_cycle_seasonal_reg_ar1_approx_diffuselltrend_cycle_seasonal_reg_ar1Trf   rg   rh   s    rb   #test_lltrend_cycle_seasonal_reg_ar1r      s+    ;<<<,EEEEEErk   r   Tc                    t          j        d          dz  }|dz  }|d d dxx         dz  cc<   |dd dxx         dz  cc<   t          j        d          5  t	          |d|d| 	          }|                    d
          }t	          |d|d| 	          }|                    d
          }d d d            n# 1 swxY w Y   t          |j        j        d         dd           t          |j	        d         dd           | r@t          |j                   t          |j        d           t          |j        d           d S t          |j        d           t          |j        d           d S )Nd         ?r%   g{Gz?r&   Tr.   F)re   r   mle_regressionr   r2   r3   )r   r2   r*   gh㈵>r)   r   )r>   arangerT   rU   r	   rV   r   regression_coefficientsfilteredr   printpredicted_diffuse_state_covr   rL   rM   )r   endogr   mod1res1mod2res2s          rb   test_mle_regr      s   IcNN3E7D	##A#JJJ$JJJ	!$Q$KKK4KKK		 	-	-	- 	! 	!#ET)-e6GI I I xxRx  #ET)-d6GI I I xxRx  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! D09%@    DKNCd3333  1d.///T&***T&*****T,a000T,a00000s   AB99B= B=c                  D   i t           _        ddg} t          }d}t          j        ||          5  t          |           }t          |j        d           d d d            n# 1 swxY w Y   t          j        t                    5  t          | d           d d d            n# 1 swxY w Y   t          }d}t          j        ||          5  t          | dd	          }t          |j        d
           d d d            n# 1 swxY w Y   g d}|D ]K}|di}t          }d}t          j        ||          5  t          | d
fi | d d d            n# 1 swxY w Y   Lt          j        t                    5  t          | d           d d d            d S # 1 swxY w Y   d S )Nr&   r%   r   rm   re   zinvalid specz!Trend component specified withoutT)trendre   deterministic trend)re   r   stochastic_levelstochastic_trendz may be overridden when the trend)r   )
r   rq   r   rr   rs   r	   r   trend_specificationraises
ValueError)r   ru   rn   r[   trend_attributes	attributer   s          rb   test_specificationsr     s$   %'J"FE #G'E	gU	+	+	+ ; ;"5))S,k:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 
z	"	" 4 4UN3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 #G/E	gU	+	+	+ E E"5EEES,.CDDDE E E E E E E E E E E E E E E, , ,% I I	T"&2\'/// 	I 	I (=HHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 
z	"	" 0 0UQ////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sY   %A!!A%(A%B""B&)B&(D  DD6EE	E	6FFFc                     t          d          } t          j        d         }t          j        d         }t          j                            d           t          j        t          j        |           t          j        |           dz  f         }t          j                            |           }t          j	        | dz             }t          d|           D ]7}|d	         ||         z  |d         ||dz
           z  z   ||         z   ||dz   <   8|dd          }|t          j        ||          z  }t          ||d
          }t          |j        g dd           d S )Ng     @)
   )r*   皙?i  r   sizer%   r&   r   )r   autoregressive)r   r*   r   r   r   r   r   )intr>   r_randomseedc_onesr   normalzerosrangedotr	   r   r1   )nobsbetaphir   epsr   tr[   s           rb   test_start_paramsr   J  s>   
 s88D5=D
%/C INN45	$ 334D
)



%
%CHT!VE1d^^ F FVeAh&Q%!*)<<s1vEac

!""IE	RVD$E
 u4
B
B
BCC$&<&<&<4HHHHHHrk   c                  |   t          j        d          dz   } t          j        d          }t          | |dd          }|                    g d          }|                    dt          j        dd          d d t           j        f                   }t          j        dd          dz   }t          ||           d S )	N2   r   	dconstant   )r   levelr   )gV瞯<r   r&   <   r   )r>   r   r	   smoothforecastnewaxisr   )r   r   r[   ra   actualdesireds         rb   test_forecastr   d  s    IbMMBE9R==D
u4{Q
O
O
OC
**]]]
#
#C\\"29R#4#4QQQ
]#C\DDFiB"$GFG$$$$$rk   c            
         d} d}t           j                            d           t           j                            | |f          }t           j        |d ddf<   t           j                            | df          }t           j                            | df          }t          j        dd	| 
          }t          j        ||          }t          j        |	                                |          }t          j        ||          }t          |d|          t          |d|          t          |d|          t          |d|          t          |d|          t          |d|          g}	|	D ]}
|
j         |
                    d          }|                                 |                                 |                    d           |                                 t           j                            d|
j        f          }|                    d|           |                    d|           t           j                            d|
j        f          }t'          j        t*                    5  |                    d|           d d d            n# 1 swxY w Y   t           j                            d|
j        dz   f          }t'          j        t*                    5  |                    d|           d d d            n# 1 swxY w Y   t'          j        t*                    5  t          |dt          j        d                     d d d            d S # 1 swxY w Y   d S )N   r&   i  r   r   r   r%   z
1970-01-01r   )r   r   )r=   llevelr   Fr   T)dynamic)stepsr   )r   r   )r>   r   r   r   nanr:   r;   	DataFrameSeriesrA   r	   r1   rV   rW   predictget_predictionk_exogr   get_forecastrr   r   r   r   )r   k_endogr   exog1exog2r=   endog_pdexog1_pdexog2_pdr   r[   ra   oos_exogs                rb   test_misc_exogr  p  s   DGINN4I4/22E6E"1"a%LI4),,EI4),,EM,T4@@@E|E///Hy666H|E///H 	UH5999UH5999UH5999Xxh???Xxh???Xxh???F  1 1gg5g!!D!!!9##!SZ#9918,,,qx000 9##!SZ#99]:&& 	1 	1LLqxL000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 9##!SZ!^)<#==]:&& 	1 	1LLqxL000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 
z	"	" F FUH28G3D3DEEEEF F F F F F F F F F F F F F F F F Fs6   9JJ!	$J!	+LL	L	5%M''M+.M+c                     t           j                            d           t          j        t           j                            d                    } t          j        | d          }|                    |j	                  }|
                    dddg          }t          |j                            t          j        dg                    d           d S )	Ni r   r   r   r&   a)r   r   r=   T)r>   r   r   r:   r   r   r   r	   r   r1   r   r   r=   equalsIndex)r   r[   ra   outs       rb   test_predict_custom_indexr    s    INN6L))r)2233E

)%
:
:C
**S%
&
&C
++A1SE+
2
2C!!"(C5//22D99999rk   c                  
   t                                           } t          | d         dddidddgdd	d
gdddgd          }dddddd	t          j        z  dz  dg}|                    |           t          |j        d           t          |j        d           t          |j	        d           t          |j        j        d           t          |j        t          |                     t          j        ddgg dg dddgf                             dd          }t          |j        j        d d d d df         |           t%          t          j        ddgddgg          t          j        g dg dg dg dg          t          j        t          j        d	t          j        z  dz  dz            t          j        d	t          j        z  dz  dz            ddddgt          j        d	t          j        z  dz  dz             t          j        d	t          j        z  dz  dz            ddddgddt          j        d	t          j        z  d	z  dz            t          j        d	t          j        z  d	z  dz            ddgddt          j        d	t          j        z  d	z  dz             t          j        d	t          j        z  d	z  dz            ddgddddt          j        d	t          j        z  dz            t          j        d	t          j        z  dz            gddddt          j        d	t          j        z  dz             t          j        d	t          j        z  dz            gg          t          j        dt          j        d	t          j        z  dz            z  dt          j        d	t          j        z  dz            z  gdt          j        d	t          j        z  dz            z  dt          j        d	t          j        z  dz            z  gg          g          }t          |j        j        d d d d df         |d           t          j        d           }t          j        d	          |dd	dd	f<   t          j        d          |d	dd	df<   t          j        d	          |d!d d!d f<   t          |j        j        d d d d df         |           t%          t          j        |dd                   t          j        d          |d         z  t          j        d	          |d         z  g          }t          |j        j        d d d d df         |           d S )"Nr   lltrendperiodr   	      )r  	harmonicsTr%      F)r   r   r   r   damped_cyclestochastic_freq_seasonalstochastic_cycler&         g      >@g?      r   )r&   r   r&   r   )r&   r   r&   r   r&   r   )r   r&   r   r   )r2   r   r   r   )r   r   r2   r   )r   r   r   r2   g      "@g      @gr(   r   )r  r  r   )r8   r6   r	   r>   rH   r7   r   k_statesk_state_covrM   r   ssmk_posdefk_paramsr<   r   reshapedesign__direct_sumarraycossin
transitionr   eye	selectiondiag	state_cov)r@   rZ   r   expected_designexpected_transitionexpected_selectionexpected_state_covs          rb   (test_matrices_somewhat_complicated_modelr0    sA   XXZZF '0191;<10M0M0O'+67W.2;?-26	# 	# 	#E 25b	F 
LL ///"M222)=999EI&666V--- eQF(LL...F# $ %,GArNN  EI$QQQ1W-???&
1a&a& 	 	
,,,-- .. .." 	# 	# 	26!BE'!)B,''"%	")=)=q!QJF1RU719R<((("&252*>*>1aKa"&252..qwqy|0D0DaKa"&252...qwqy|0D0DaKaAqwrz 2 2BF1RU72:4F4FGaAqwrz 2 22BF1RU72:4F4FGI 	J 	J 	2bfQruWS[)))2bfQruWS[.A.A+ABbfQruWS[)))2bfQruWS[.A.A+ABD 	E 	E(    	QQQ1W%':G G G G
 ,//#%6!99qsAaCx #%6!99qsAaCx #%6!99rssBCCx EI'111a02DEEE%
qs
q		&)
q		&)'  
 EI'111a02DEEEEErk   c                     t          j        d | D             d          }t          j        |          }d}| D ]*}|j        \  }}||k    sJ |||||z   |||z   f<   ||z  }+|S )zLCompute the matrix direct sum of an iterable of square numpy 2-d arrays
    c                     g | ]	}|j         
S r4   )shape).0ms     rb   
<listcomp>z __direct_sum.<locals>.<listcomp>  s    999A999rk   r   )axis)r>   rK   r   r3  )square_matrices	new_shape	new_arrayoffsetr5  rowscolss          rb   r#  r#    s     99999BBBI##IF  W
dt||||@A	&$&v}(<<=$rk   c            	         d} t          j        |           dz  }t          j        |           }t          |d|          }|                    ddg          }d}t          j        d          }t          j        d          }t	          |                    d|          d           t	          |                    d|          d           t	          |                    d|          d           d}t          j        |          }t          j        |df          }t	          |                    ||          d           t	          |                    ||          d           t          t          |j        |d           t          t          |j        |dd	g           t          t          |j        |t          j        |d	f                     d S )
Nr          @re   r   r   r&   )r&   r&   r   r%   )r>   r   r	   r   r   r   r   r   )	r   r   r   r[   ra   exog_fcast_scalarexog_fcast_1dimexog_fcast_2dimhs	            rb   test_forecast_exogrD    s   DGDMMCE74==D
uk
=
=
=C
**c3Z
 
 C gajjOgfooOCLL):L;;R@@@CLLL992>>>CLLL992>>> 	AgajjOgq!fooOCLLL992>>>CLLL992>>> *clAB7777*clAQF;;;;*clABGQFOODDDDDDrk   c                 V   g d}g d}|D ].}t          t          ||          t          | |                     /|D ]8}t          t          |j        |          t          | j        |                     9t          |                                |                                            d S )N)r   r   seasonal_periodsr   freq_seasonal_periodsfreq_seasonal_harmonicsr   r   ar_orderr   re   r   r   stochastic_seasonalr  r  r  r   r   
trend_mask
regressionrG   )r   r   r  r  obs_interceptr"  obs_covstate_interceptr'  r)  r+  )r   r5   r  _get_init_kwds)r[   r   attrs	ssm_attrsattrs        rb   check_equivalent_modelsrT  "  s    ! ! !EN N NI  > >WT4(('#t*<*<==== F FWTXt,,gcgt.D.DEEEE$$&&(:(:(<(<=====rk   c            	         d} t          j        |           dz  }t          j        |           }g d}|D ]}t          ||dd|          }t          |fd|i|                                }t	          ||           t          |||d	          }t          |fd|i|                                }t	          ||           t          |||ddd
          }t          |fd|i|                                }t	          ||           d S )Nr   r?  )re   ntrendzfixed interceptzdeterministic constantr   zlocal levelr   zrandom walkrwalkzfixed sloper   dtrendz local linear deterministic trendlldtrendzrandom walk with driftrwdriftzlocal linear trendr  zsmooth trendstrendzrandom trendrtrendr%   T)r   r   rJ  r   r   r&   )r   r   r   )r   r   r   r  r  )r>   r   r	   rP  rT  )r   r   r   levelsr   r[   r   s          rb   test_recreate_modelr^  9  sc   DGDMMCE74==DG G GF  + +
 #57;$H H H#EMMM8J8J8L8LMMT*** #5D235 5 5#EMMM8J8J8L8LMMT*** #5D)-046 6 6 $EMMM8J8J8L8LMMT****++ +rk   c            	      P   t          j        d          } t          j        |           }g d}t          | d|          }|                    |          }t          | d d         d|d d                   }|                    |          }|                    | dd          |dd                    }t          |j        |j                   t          |j	        |j	                   dD ].}t          t          ||          t          ||                     /dD ].}t          t          ||          t          ||                     /t          |                    dt          j        d                    |                    dt          j        d                               d S )	Nr   r   r   r   r   r   r   r   r   r+   rJ   rM   filtered_statefiltered_state_covpredicted_statepredicted_state_cov	forecastsforecasts_errorforecasts_error_covstandardized_forecasts_errorforecasts_error_diffuse_covr   scaled_smoothed_estimatorscaled_smoothed_estimator_covsmoothing_errorsmoothed_statesmoothed_state_covsmoothed_state_autocov smoothed_measurement_disturbancesmoothed_state_disturbance$smoothed_measurement_disturbance_covsmoothed_state_disturbance_covr   )r>   r   	ones_liker	   r   appendr   specificationr   cov_params_defaultr5   r   r   	r   r   r   r   r   r   r   res3rS  s	            rb   test_append_resultsr|  ^  s   IcNNE<DFxd;;;D;;vDcrc
H49EEED;;vD;;uRSSzRSS	;22D#T%7888D+T-DEEE@ ? ?WT4(('$*=*=>>>>. ? ? 	WT4(('$*=*=>>>>DMM"272;;M77MM"272;;M779 9 9 9 9rk   c            	         t          j        d          } t          j        |           }g d}t          | d|          }|                    |          }t          | d d         d|d d                   }|                    |          }|                    | dd          |dd                    }t          |j        |j        dd                     dD ]>}t          ||          }	|	|	ddd f         }	t          t          ||          |	           ?t          |
                    dt          j        d                    |
                    dt          j        d                               d S )	Nr   r`  r   r   r   rb  .r   )r>   r   rv  r	   r   extendr   rJ   r5   r   r   r   )
r   r   r   r   r   r   r   r{  rS  r   s
             rb   test_extend_resultsr    sm   IcNNE<DFxd;;;D;;vDcrc
H49EEED;;vD;;uRSSzRSS	;22DDL$,rss"3444. 3 3 $%%c233h'GWT4(('2222DMM"272;;M77MM"272;;M779 9 9 9 9rk   c            	      p   t          j        d          } t          j        |           }g d}t          | d d         d|d d                   }|                    |          }t          | dd          d|dd                    }|                    |          }|                    | d d         |d d                   }t          |j        |j                   t          |j	        |j	                   dD ].}t          t          ||          t          ||                     /dD ].}t          t          ||          t          ||                     /t          |                    dt          j        d                    |                    dt          j        d                               d S )	Nr   r`  r   r   r   ra  rb  r   )r>   r   rv  r	   r   applyr   rx  r   ry  r5   r   r   rz  s	            rb   test_apply_resultsr    s   IcNNE<DFcrc
H49EEED;;vDbcc
H49EEED;;vD::eCRCjtCRCy:11D#T%7888D+T-DEEE@ ? ?WT4(('$*=*=>>>>. ? ? 	WT4(('$*=*=>>>>DMM"272;;M77MM"272;;M779 9 9 9 9rk   )F)?__doc__rT   r   r>   numpy.testingr   r   r   pandasr:   rr   statsmodels.datasetsr   statsmodels.tools.sm_exceptionsr   statsmodels.tsa.statespacer   %statsmodels.tsa.statespace.structuralr	   (statsmodels.tsa.statespace.tests.resultsr
   load_pandasdatar8   r;   r=   rc   rj   rv   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markslowr   parametrizer   r   r   r   r  r  r0  r#  rD  rT  r^  r|  r  r  r4   rk   rb   <module>r     sE         F F F F F F F F F F      * * * * * * @ @ @ @ @ @ 1 1 1 1 1 1 F F F F F F G G G G G Gi"BM,TJJJ	r r r rj1 1 1
; ; ;> > >
3 3 3
3 3 3
7 7 77 7 7; ; ;
> > >
H H H
: : :
4 4 4
4 4 4
- - -
0 0 0
5 5 5
+ + +
2 2 2
 F F F
 ,tUm<<1 1 =<1D(0 (0 (0VI I I4	% 	% 	%0F 0F 0Ff: : :EF EF EFP  E E E@> > >."+ "+ "+J"9 "9 "9J"9 "9 "9J#9 #9 #9 #9 #9rk   