From 972610fbefed3da3bbcb3e2b4ab38a5a1778037e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 12:51:33 -0700 Subject: [PATCH 1/2] Update develop-ref after #2457 and #2453 (#2458) Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com> Co-authored-by: John Halley Gotway Co-authored-by: jprestop Co-authored-by: Tracy Hertneky Co-authored-by: Giovanni Rosa Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com> Co-authored-by: Mrinal Biswas Co-authored-by: j-opatz Co-authored-by: Daniel Adriaansen Co-authored-by: Jonathan Vigh Co-authored-by: root Co-authored-by: Dan Adriaansen Co-authored-by: lisagoodrich <33230218+lisagoodrich@users.noreply.github.com> Co-authored-by: Julie Prestopnik Co-authored-by: Tracy Co-authored-by: bikegeek <3753118+bikegeek@users.noreply.github.com> Co-authored-by: metplus-bot <97135045+metplus-bot@users.noreply.github.com> Co-authored-by: Lisa Goodrich Co-authored-by: Tracy Hertneky <39317287+hertneky@users.noreply.github.com> Co-authored-by: Giovanni Rosa Co-authored-by: mrinalbiswas Co-authored-by: Christina Kalb Co-authored-by: jason-english <73247785+jason-english@users.noreply.github.com> Co-authored-by: John Sharples <41682323+John-Sharples@users.noreply.github.com> Co-authored-by: Hank Fisher Co-authored-by: reza-armuei <144857501+reza-armuei@users.noreply.github.com> Co-authored-by: Mallory Row Closes https://github.com/dtcenter/METplus/issues/1986 fix develop Fix broken documentation links (#2004) fix #2026 develop StatAnalysis looping (#2028) fix priority of obs_window config variables so that wrapper-specific version is preferred over generic OBS_WINDOW_BEGIN/END (#2062) fix #2070 var list numeric order (#2072) fix #2087 develop docs_pdf (#2091) fix #2096/#2098 develop - fix skip if output exists and do not error if no commands were run (#2099) Fix for Dockerfile smell DL4000 (#2112) fix #2082 develop regrid.convert/censor_thresh/censor_val (#2140) fix #2082 main_v5.0 regrid.convert/censor_thresh/censor_val (#2101) fix #2137 develop PointStat -obs_valid_beg/end (#2141) fix failured introduced by urllib3 (see https://github.com/urllib3/urllib3/issues/2168) fix #2161 develop PCPCombine additional field arguments in -subtract mode (#2162) fix #2168 develop - StatAnalysis time shift (#2169) fix releases. (#2183) fix #2189 develop - spaces in complex thresholds (#2191) fix #2179 develop TCPairs fix -diag argument (#2187) fixes (#2200) fix diff tests (#2217) fix automated tests (#2237) fix #2235 rename multivar_itensity to multivar_intensity_flag (#2236) fix #2241 Create directory containing -out_stat file (#2242) fix #2245 use unique run ID to name logger instance (#2247) fix #2244 develop fix diff tests (#2254) fixture to set pytest tmpdir (#2261) fix #1853 develop - PointStat don't require mask variables to be set (#2262) fix #2279 develop - buoy station file from 2022 (#2280) fix (#2313) fix ReadTheDocs requirements to include pillow which is a dependency of sphinx-gallery: see https://blog.readthedocs.com/defaulting-latest-build-tools/ for more info on why this was necessary fix bug described in https://github.com/pangeo-data/xESMF/issues/246 fix failing use case tests -- install python packages dateutil and requests via apk instead of pip because the pip commands began failing -- see PEP668 https://peps.python.org/pep-0668/ -- also changed scripts to create conda environments for use case tests to install all packages in a single call to mamba instead of individual calls --- .github/actions/run_tests/Dockerfile | 4 +- .github/parm/use_case_groups.json | 4 +- docs/Users_Guide/glossary.rst | 24 ++-- docs/Users_Guide/release-notes.rst | 7 + docs/Users_Guide/wrappers.rst | 58 ++------ ...idStat_fcstGFS_obsOMI_TotalColumnOzone.png | Bin 0 -> 173716 bytes ...ridStat_fcstGFS_obsOMI_TotalColumnOzone.py | 136 ++++++++++++++++++ internal/scripts/docker_env/README.md | 3 - .../scripts/docker_env/scripts/cfgrib_env.sh | 5 +- .../docker_env/scripts/cycloneplotter_env.sh | 4 +- .../scripts/docker_env/scripts/diff_env.sh | 3 +- .../docker_env/scripts/geovista_env.sh | 4 +- .../docker_env/scripts/icecover_env.sh | 5 +- .../docker_env/scripts/metdataio_env.sh | 4 +- .../docker_env/scripts/metplotpy_env.sh | 15 +- .../scripts/docker_env/scripts/pandac_env.sh | 12 -- .../docker_env/scripts/py_embed_base_env.sh | 3 +- .../scripts/docker_env/scripts/pygrib_env.sh | 3 +- .../docker_env/scripts/spacetime_env.sh | 7 +- .../docker_env/scripts/weatherregime_env.sh | 4 +- .../scripts/docker_env/scripts/xesmf_env.sh | 6 +- .../wrappers/tc_diag/test_tc_diag_wrapper.py | 22 ++- internal/tests/use_cases/all_use_cases.txt | 1 + metplus/wrappers/tc_diag_wrapper.py | 29 ++-- parm/met_config/TCDiagConfig_wrapped | 33 ++--- .../met_tool_wrapper/TCDiag/TCDiag.conf | 23 +-- ...dStat_fcstGFS_obsOMI_TotalColumnOzone.conf | 106 ++++++++++++++ .../read_omi-aura_l3-omto3e.py | 92 ++++++++++++ 28 files changed, 415 insertions(+), 202 deletions(-) create mode 100644 docs/_static/medium_range-GridStat_fcstGFS_obsOMI_TotalColumnOzone.png create mode 100644 docs/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.py create mode 100644 parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf create mode 100644 parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/read_omi-aura_l3-omto3e.py diff --git a/.github/actions/run_tests/Dockerfile b/.github/actions/run_tests/Dockerfile index f76b50ffae..8e4636d235 100644 --- a/.github/actions/run_tests/Dockerfile +++ b/.github/actions/run_tests/Dockerfile @@ -3,8 +3,6 @@ FROM alpine:latest COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh -RUN apk add --update --no-cache docker python3 py3-pip bash - -RUN pip3 install python-dateutil requests +RUN apk add --update --no-cache docker python3 py3-pip bash py3-dateutil py3-requests ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 2ba2e011c4..4bf11ac758 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -1,7 +1,7 @@ [ { "category": "met_tool_wrapper", - "index_list": "0-29,59-61,63", + "index_list": "0-29,59-63", "run": false }, { @@ -101,7 +101,7 @@ }, { "category": "medium_range", - "index_list": "3-5", + "index_list": "3-5,10", "run": false }, { diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index 1ab1e903bf..6a3d717e5b 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -10302,20 +10302,19 @@ METplus Configuration Glossary | *Used by:* TCDiag - TC_DIAG_CENSOR_THRESH - Specify the value for 'censor_thresh' in the MET configuration file for TCDiag. + TC_DIAG_DOMAIN_INFO_OVERRIDE_DIAGS + Specify the value for the nth 'domain_info.override_diags' in the MET configuration file for TCDiag. | *Used by:* TCDiag - TC_DIAG_CENSOR_VAL - Specify the value for 'censor_val' in the MET configuration file for TCDiag. + TC_DIAG_CENSOR_THRESH + .. warning:: **DEPRECATED:** Please use :term:`BOTH_VAR_OPTIONS` instead. - | *Used by:* TCDiag + TC_DIAG_CENSOR_VAL + .. warning:: **DEPRECATED:** Please use :term:`BOTH_VAR_OPTIONS` instead. TC_DIAG_CONVERT - Specify the value for 'convert' in the MET configuration file for TCDiag. - - | *Used by:* TCDiag + .. warning:: **DEPRECATED:** Please use :term:`BOTH_VAR_OPTIONS` instead. TC_DIAG_DATA_DOMAIN Specify the value for 'data.domain' in the MET configuration file for TCDiag. @@ -10407,8 +10406,8 @@ METplus Configuration Glossary | *Used by:* TCDiag - TC_DIAG_NC_RNG_AZI_FLAG - Specify the value for 'nc_rng_azi_flag' in the MET configuration file for TCDiag. + TC_DIAG_NC_CYL_GRID_FLAG + Specify the value for 'nc_cyl_grid_flag' in the MET configuration file for TCDiag. | *Used by:* TCDiag @@ -10423,7 +10422,10 @@ METplus Configuration Glossary | *Used by:* TCDiag TC_DIAG_OUTPUT_PREFIX - Specify the value for 'output_prefix' in the MET configuration file for TCDiag. + .. warning:: **DEPRECATED:** Please use :term:`TC_DIAG_OUTPUT_BASE_FORMAT` instead. + + TC_DIAG_OUTPUT_BASE_FORMAT + Specify the value for 'output_base_format' in the MET configuration file for TCDiag. | *Used by:* TCDiag diff --git a/docs/Users_Guide/release-notes.rst b/docs/Users_Guide/release-notes.rst index 28054ff5c2..6042b24fb1 100644 --- a/docs/Users_Guide/release-notes.rst +++ b/docs/Users_Guide/release-notes.rst @@ -197,6 +197,13 @@ the use case will not run until the METplus configuration file has been updated. How to upgrade ^^^^^^^^^^^^^^ +This video provides a demonstration of the process to upgrade a use case. + +.. raw:: html + + + + Removing **_CONFIG_FILE**, e.g. :term:`GRID_STAT_CONFIG_FILE`, from the METplus config file will prevent the errors and allow the use case to run. diff --git a/docs/Users_Guide/wrappers.rst b/docs/Users_Guide/wrappers.rst index 1078f6466c..380c7e8673 100644 --- a/docs/Users_Guide/wrappers.rst +++ b/docs/Users_Guide/wrappers.rst @@ -8225,9 +8225,7 @@ METplus Configuration | :term:`TC_DIAG_DOMAIN_INFO_N_AZIMUTH` | :term:`TC_DIAG_DOMAIN_INFO_DELTA_RANGE_KM` | :term:`TC_DIAG_DOMAIN_INFO_DIAG_SCRIPT` -| :term:`TC_DIAG_CENSOR_THRESH` -| :term:`TC_DIAG_CENSOR_VAL` -| :term:`TC_DIAG_CONVERT` +| :term:`TC_DIAG_DOMAIN_INFO_OVERRIDE_DIAGS` | :term:`TC_DIAG_INPUT_DATATYPE` | :term:`TC_DIAG_DATA_DOMAIN` | :term:`TC_DIAG_DATA_LEVEL` @@ -8247,10 +8245,10 @@ METplus Configuration | :term:`TC_DIAG_RADIAL_VELOCITY_LONG_FIELD_NAME` | :term:`TC_DIAG_VORTEX_REMOVAL` | :term:`TC_DIAG_ONE_TIME_PER_FILE_FLAG` -| :term:`TC_DIAG_NC_RNG_AZI_FLAG` +| :term:`TC_DIAG_NC_CYL_GRID_FLAG` | :term:`TC_DIAG_NC_DIAG_FLAG` | :term:`TC_DIAG_CIRA_DIAG_FLAG` -| :term:`TC_DIAG_OUTPUT_PREFIX` +| :term:`TC_DIAG_OUTPUT_BASE_FORMAT` | :term:`TC_DIAG_SKIP_IF_OUTPUT_EXISTS` | :term:`TC_DIAG_MET_CONFIG_OVERRIDES` | :term:`TC_DIAG_SKIP_VALID_TIMES` @@ -8447,42 +8445,8 @@ ${METPLUS_DOMAIN_INFO_LIST} - domain_info.delta_range_km * - :term:`TC_DIAG_DOMAIN_INFO_DIAG_SCRIPT` - domain_info.diag_script - -${METPLUS_CENSOR_THRESH} -"""""""""""""""""""""""" - -.. list-table:: - :widths: 5 5 - :header-rows: 1 - - * - METplus Config(s) - - MET Config File - * - :term:`TC_DIAG_CENSOR_THRESH` - - censor_thresh - -${METPLUS_CENSOR_VAL} -""""""""""""""""""""" - -.. list-table:: - :widths: 5 5 - :header-rows: 1 - - * - METplus Config(s) - - MET Config File - * - :term:`TC_DIAG_CENSOR_VAL` - - censor_val - -${METPLUS_CONVERT} -"""""""""""""""""" - -.. list-table:: - :widths: 5 5 - :header-rows: 1 - - * - METplus Config(s) - - MET Config File - * - :term:`TC_DIAG_CONVERT` - - convert + * - :term:`TC_DIAG_DOMAIN_INFO_OVERRIDE_DIAGS` + - domain_info.override_diags ${METPLUS_DATA_FILE_TYPE} """"""""""""""""""""""""" @@ -8670,8 +8634,8 @@ ${METPLUS_ONE_TIME_PER_FILE_FLAG} * - :term:`TC_DIAG_ONE_TIME_PER_FILE_FLAG` - one_time_per_file_flag -${METPLUS_NC_RNG_AZI_FLAG} -"""""""""""""""""""""""""" +${METPLUS_NC_CYL_GRID_FLAG} +""""""""""""""""""""""""""" .. list-table:: :widths: 5 5 @@ -8679,8 +8643,8 @@ ${METPLUS_NC_RNG_AZI_FLAG} * - METplus Config(s) - MET Config File - * - :term:`TC_DIAG_NC_RNG_AZI_FLAG` - - nc_rng_azi_flag + * - :term:`TC_DIAG_NC_CYL_GRID_FLAG` + - nc_cyl_grid_flag ${METPLUS_NC_DIAG_FLAG} """"""""""""""""""""""" @@ -8715,8 +8679,8 @@ ${METPLUS_OUTPUT_PREFIX} * - METplus Config(s) - MET Config File - * - :term:`TC_DIAG_OUTPUT_PREFIX` - - output_prefix + * - :term:`TC_DIAG_OUTPUT_BASE_FORMAT` + - output_base_format ${METPLUS_MET_CONFIG_OVERRIDES} """"""""""""""""""""""""""""""" diff --git a/docs/_static/medium_range-GridStat_fcstGFS_obsOMI_TotalColumnOzone.png b/docs/_static/medium_range-GridStat_fcstGFS_obsOMI_TotalColumnOzone.png new file mode 100644 index 0000000000000000000000000000000000000000..965f3e58dbee772f04d90757a71e9b2c95250814 GIT binary patch literal 173716 zcmeGE_g|0wA3lyh8x%!FNKvUMrA12{X(cmZDH;50y$u zB`wk(pW|`8-tX`C*UumDxo)o8g|42R=i|JO<2dfe{S47PuC`%4`+5q6vOz;#MV~^U z_NP#&`smllUFDdCM)tURk~7|4gONb<*13v z3C9aAZdRAiQ|zr=oGv-KT(UXC?Rx(56&pu~10v!gV*9wQU0j@GMMeMrUl(z_d{MMu zENB~r!cEaoIb`7e==V1_6V~<~y2**H9n|}{O9Z&3;&=qAZozbBR}-~N66TmRB7<1a%VKQ&~o zT=-dA>pc5AL!O66jIomZy1KUP)#md5{bA{a3Ds>YwwqRLskf}wDC563tzuGS8ryV{r~>Qa=(xBe}}{^%PA%&PaZNh-gfWaz2V+6rT+eYiGGLfA{Kd0 zCj8>piEru9QL%1GXK|P3Tv}dkotbi%*NPSUUeI(eCT2~PIxS~p(2W~6+GS@FeoRa- z85_3?4(yO~Wqd5>cC(;BQiX@5wyv%*|E!wI(W9+%vMM)%gXvvZ)2e8_Ey}wfm_11g?>{A?aa&!o4mW&cuz@| zb|kD4H*XOPnqP4JKXuR?Ci!D7j+)VxgF;nPt|@X=G3PwVc*G$yTXq#ZD!lN`FdWSn1o#$ zqo=25UVi?eiJlT?e0uhjs6}b`@yD`-4nN_<>lRe`|8>?s_E(J zzW)9IkH0^Y^73>?J%ko!x*S>9*yuSpI40fYajh?#ir%`89mc=9x#kKujCak=n;%L$ z8ige<%o?>CeLWx;Ie0B@kctwcICL~@tBr!=(KTz<#7fv~!gcT38uopB{MJ}kp&v_MXvfj&=;$m>Rx;(i zcu|?G7MW+;Dmb^WaAy9`pecj>+O=y<3LPF--M6}QY2SEn850f7b+%yprFo$w{Z_;YJ$VKox(2xBlRiX3C~r zyLQd}tydyX?-D}x=FOXPixXv21CdHRJUrBN8+Rz{G){DGck^uNU+9 zb8c>KF0rVH4If-Sl;C%(Y-NE#Pfzc*W=eN{U|=Adq%AAEq%Cc}N%)N$w6zIJT=-(q z<-zqXSFc*EQnlYHDw65w>@0opSJ=Fm4f!_r^Pyuyp4Aa~-z7GNt^53gg6O^^C^2o@ zwoSwVC#1MCcb43;*X;NQWPq5@f(tDzE%&ZnR6J4i*T1Piv#P+8W+Nq+qDr3!bq@#4jc=Pq10^XblR>#kSAPm+^K5{ryypDOG_ zp1ZlZ{qD%8*}Z%B-1ysxhEg9dvl7oO7cN|&nEPzs%u>4a=a`I)jDP*mKugAnSUES5 zHnZGFE*t4U=^IyfnzfqxxLf>UiMlQu2hYlT@LlnOom?|1VaS0SH zouj6RUHPdMzWspe=s_um?%)Eu_9u?LrLC!9|AlVM%JSmbKR-U%T5VvLNS`@Kqg>{@ z%*@3ViFi&z;s*x@mnR;&UQ~Z7=K1se(_>xRE`E9R?xjt0-@w52ii*Q#Z(KCS=+r*c z*ZWXlhJl`fhpK+o0uSfw*RN5i zCWAkIIDJn_N_v`>rba`zk&lautKjTi&E5ENG|)MV10(JKst)gkKthx z`%a5u_d~L>veP4J37LWSV`7|Fdz00eP@}V^6b6TeqH+CeXlc^}nb^eqwY0Tc6;IuX zj@H2Eqb3^Jo2F?$RHY2#QMOhIC-^ETD6HSGp_M)N^jlYyfwZj_83y_W5C4 znRRoVwnHe>`d_Gxol>oCmwdKvPT^FM(=Ifewr3}4l5|Td3<94qoPSTM7L=HdbJiVSFh^&f^asK1s^4 zC;U@1e`QtGTIA^L__re$F6^m_;Gn~k7#ojXyIZRA%&HIE%5 z6|3UYr*+M#+RYt~R#w*n8MgH!5dW)|E9emDAR7xEdw*8k+9`MQ?p;X^CVwMMuzS58<%%)u8!W0iqac=ZBX`0NHOfK+XN3EAMMYdKhbfW zE?=(5G|bA>K2>v1xDk09F^SaZ=;%naDDySzcy#be-{4>%p7EhQ(eElNX-3HaUh{uCA`O6L#O;TpeymqG6YISgM+R^2W$e zo84z&8a=OJVaJyBYt}O`IM4h(S^MbV=F-wqTkQ^M#~zi3QueoFV}o}eyVqBKjb^wp znT}MzgI9hUJa~oU`d<6s0Q++4tsMsgrl(yB0vs=2-me<{0Eyz_?*rbe z%d?UmjJ6Iv#UcLwlw$WOY7S`!6?b=;9JAMdjJTGVIOUZ!HA79CEzX?bp(G-Q*{9HU zzKrFDqa`E8Tfdw%KY4QdkIM&96U1GAn=rEg5Uy6u>gqW-h=^E}K671OoSjH6Dk^I7 zdgC_1si~>iQV~MGK9JhO!$ZbjEuJW zE{yP_%&$91t_@!M{8w2;g_dvAI$$=_0^7h1 z98xXA3n3vPNR}pnmdu=NPv1x`B~_e3cX#*XzjlktiVEt(Nz5W5B6G;y%;GA59p)W7 z7*Cx#H7<82<6397|5D!hbLW^T>@rT4F;fB8udkyR`{deIg+@lEA?TPXnp#?XPmHx$ zP|0@lc#iJrLqEFn>0HYz`%@zOBqZ*loP2xhrX!s5`0?Ym)Q6#US2L$w@t8YFmfS%z zVrEwMS)9q1S{ap~avST6p)gbM{VxF*Y$Np~Q*H(Y8E>zzs0euU=uuIbp?0}SZro*I zVPQ106RxgOAu2qbMb5nEFI*^f-t1K9@Qt1lbN8-6Tq>@Ig<@Llo^R@IX0~H?2Spdp zd#|Xdj_~pJoYSA$+KiI3-rZQYS$*Hu=D$PrLM0A3<&j^%n%XV=vbU}ztS$xZ+qX~9 zK2%6Zi1)SGag^iTn>TOP7mVpvL=oANaN5a9OoMOJ=Z_!zDp=RAk+f@jri#D+G@5ESErgjue+8~clk!qZBZ6Hr6a_y^enPs}`v^r~|9<_^74(hE6IGu-Yi0`tOBqV8 z+8l77wA{2l@b2x~<$)P-B8B!{sVo+)Yj_kCP78Z?y|TBR2h*@}Y{^c}++)e}X*6d)%A;u|{`vm>`#Z@i!^6XUb5jHAnwp+j zqlPap4{DkfyR#q)j^c5#?AYrbCP9g!M2oAg}% z$IqWP=jPnsS5*{`Yaw6jL95~0a;3Z`ji%}Ab0xB zo;`bpzrNsKnHyjdaRfrK1bt!Ke=fK)cLi(+r?(DBnwg%qp|SCuTdz;h@86dq8t=9q zbnd66rlxMO^`fPI$I%+TnFToG7I4Q|G{AI=vQpJYpL^WSe=pCvrho{m{_!cg@vWO< zwlm-?I-^J*4mRM$ivs}218znfia>~$zP;I^w7PTv+56AbCbuZpu01C>GEz-Ti}7cD zLL{KXE&&1cvA;j;cLLuNqz2>}gi!yE%Eu;thW6&hou(s0jp)_+p8sr78LR-k*%wF3 zB<~MO+naDU82I*r46tn46fiT^#fydma8J+3`2NY!u-gwFoV1sG8>ikac| z`sU_n{JwqrEAI{5ERDq;e?NA2Kf*<+X~#)?zm=u2AraM}Q*`!EfdEQ5-`21Zw1T_Q z(UtZfl;_T#O>R3ld)1BtY@Wno+U|M&##t@&HqN4gSx+cv-$BcN=3!d zkVeL~MSvP%p%IgMOtR=mm*~PDkQN<^^+;2Sipt%%xXgP>FYVD?GXFfvJl+$;#I=X# ziD8xz3+0XTz}js?6@d(V%=7}>-2N*|e|2QNX7=I2t`zVN+WofGrx9SLw|*bY!ft~e zSZCKt5scA9_u^Gd&_UB^>+qYKw4zp~W8!S-XfN~g1E+8D?D;p^zB!>jO)ptBqt(Ia zsL1{3tSq}28cti&#RFb5m#CEyL+u@Iqiw>}%2`I)O&!wbKeP5vxf__7nGMbx77R*e zoD|J{&aRxIuVG|l)KcQ*7U2U51;n5rC?KHA5E&WCpKqcC=9BZ%)$HF%Q{QG+`+IaN zy`w*`rKhJ04iwmT-Rpd5lgtty8>>#S9_uWywP|vlIB=m>*KYTTllf=XP$jP0yvN|d zT2(nCnmNvOwA9|yjcV%Z>dLmZnQbx|85u<`Bb#Jhf74%6PL%x8kaQ#p{0E`a&Z(8> zx9a;IN7R+BmrS9!jd#C$aNwe@zJ9>k4eaF|9kE^Ln^E`f-5ega9+y9pZ!(&<`1$AE z=9w@@MA_u*Y;~NZT?62_yN5^8)zP+(_4R()UY?udp? z&~R}j6vjDx1hO9WzyE9PySr*CBqIqt>h)VaJ<570(}O?PqAVwW0!eE+l+q3Ut{TpE zt)W5p2AbT-MZI`k0sM|`)}f~b09Fi7y*6Hf!@_U5pvqTGO--Hej^>1hq`j^os4i7s zc5~*R>5&ui9)E7gIeOT4zC2`QmDJgN>%oHu1lIsH=G(Q4II!Of^_=;g5tUGL)}ycP zum7(D&)=-LLi9nYZA$ksJbmil(vF=wTT}Bh$4!Cjt5B!DkB)|cWg9(Mo4TpMbm~KKk9{b0QOQj;(bcB;+y8+xRAvTT1UMCS1T%=qsBetFvA@Mun!O@xOlaCUbew@Sm~iiwhB^-GEih zNYq_NZW^5IdZvwwk+f;LVRrhoP{fJTWAz9*yB6tDrPX<+2M-@+{iD;?(AahQ^fy7f zazm6}HH!7nm&c%pNY(N?cQ$Pb`_PhoN;<*^DiBU!ubkY&VDr{Hpx#l+-0oQ;;U=8! zZ{-`1%}tGsjSCM9%~6=C5^;)IfhY#rXW3(c8l!IAy46``fz%%#AGd8Dewvzk2Xyu1 z$&-!I{5qN1LdiQH(l02WXz#oyeCj6H%)9pXZJYOKDPLc^p(rF#6rAvU&AoTk)oGvq zwzyRNi_;Zg?RaUk8K_I_%zOH5XT(qla%+|zag`+yXEK0o(di(egDjB|0ZY%l_N=!8Zn-s3>EH(qyty^z? z2;0UB3c4voC0W!Q_%086B2;6`mUKO$HxasMQ>T3u5bMpW2P{p*X1bHB23`+oh(G~!(a zAhnvC{O;uDR*f$2Jk@`+!0y$huXo;BKs}lM)yi=E_;E1_2^GM4P_pY_8FpIlod5pR zCZxJNi~S1_kci(wIk_v6*~jkf`wzl6e0!6m7Rkx(BVD7DEq?LK4v0x>uU)%Fer%D3 zzc$nj)fz|_TTu{H?~9z)E%Wuk0rVq@h(zk`?JYRgZe$L5&-kyokr5&DBFnzMzG4Rs zTvz9-C~_VkN5i;%Kkd7B?*N^G!^2g;O$b23`BPC+k3SCW=rCdAlxNe=c-f?w*{Z#} z;*WCOpYlkhm5&i`3JVH|SV*+g9S1Md;^+rl=>L^$+SG=N6D1w6f;K7rl zpOyAM(8}Ht(D>xlvBaxKK^6$?1@>1LU?qYV`f?;_Y#NL4sSSxzj;1saJTxfQ2%MNI zy?-djw+yzzH;u8*g04G@;C<&nyXQrrZI*)m&LwId|@y z3iP)heSOLhA5(DJ5pyWM1s)ICm1CYg+qZznmJX}|B&A_tk%0Cva^J#NFY6>P4|wJi zXj0J-AwoW!A=T#D$pdkiBp65Q_f!Tk?cKL8{L-aML?)}Pt^HVC9RvZvc+e+iXkg$7 z#d@;uo#`yPR(zb4y(UjoFuT+xbzs*Yws*`6*WMm(Rj+zw-vv^@bL`kL@~O)Uqq&lq zRL?r3UoE8yi*g>ke53P~{joFovA}s`%2Ug`ba4S6P{&k)ltCWtt9GMB^$nyp-~C<>#+n z?EwL}qnXlzDzdP$IFXT;m-qRiS+vVz8Rvj7Vj6$k{&6#$ z$jMyH4kq&JHI%ie++0!g%_v;~J{lStTcC%6<%pV^`ua3vEV(c+L;b%$>x2|m(7aoK zL-vb_aRW_3en|nbzp}`s=xvfbyP6vPseQNn6ZYDQ&;J|ed5d*$GygZa`+qgWn-8-8 zZ)&Aue*mdeR;ILZhsj!)N{QM#$Y`ZSh$1j`Om;jWa7W}y&J!t_c zp6$Q|t%&}utgMzj#U9p;Pu5_*k_c4_|B!KpfQX21mdnzqA45ZDAuU+<6d!~Jgc(9Z zx*jj%4jE=-me<%{6etFatDv{~B~RBrmNT|fRD?j`E^i)ljA1|H-+HURl>J)5Ux8l$ z%GUB6hQ8}NKe)|d)VgH|E~$W(A8ywncu-~&W$W;V9;t>b72m|0{C zT@=H$pT$TuV|PwYj%^LWksFYCs32Wldnu*2LN}-P;NJZ&#I4qWJ0tdK9x3{m+K1$W z1vy1Gqs$b4-aWH2MlKC1J4%{mL*gMbcMy`vuNM;zWf-)b`PH(Wo!v<8;DJi9)g5iL zwPLHA&g8QpdqE%d7(|7IKY$N4APIw2cw!$sumYiHA7!t8|GvDpmkU(%wmP46Ln2i` zK!7eD`i~#y99r)|&vMc(0?+f|w-FT-tiUkB>f%K@M1D)I1s5hluRCSy@%)SYRuwVg zcs-hByP1K3Vd}#+3#YnRe5f@VKeXjJ)e(FYBPMczmUnnY9d-McsX`Yas`88HA_LN#dZxd@$xQVyA8bR~53rTJUe4d^st`}YT^@LU7j z#gHqrH+cYvFaksw$YxNpS= zJ#d3>Z>6^io8Gv6n|X)4J9F4p;R=w@?-LXC|IQveeq6P2gUHqY>jgloPt3{+!|e`C zey=onY0ZMf(ls?*kDo~Eno2a-d^`&x1c2HQS)!1(Wt7A} zB~d3q5iMs-&hliy4hV$(B>3yeOF_Lj3kh2(QKAKa}=fz9S zsT;tEz}|xZI(d0{lbed#b1jI3?u74oW?HbGh>%c!)-rL1BdZNO9>+nU4-N~vuFS2B zQu_L0(WS4?H6u@!`6@tgX1a3a$`U3Tb7O_Q(D$!Fh_Kt2ytdf$B1WjyP-dnE?_2Z( z2bAM5dS%BLPw=QJYSL$pJr6 zlSAX-dD7p1hFTc~&h}WUg6DKFrJ-JFwKkBT`Rmtdwy?6MKfVHCfQ-M0QqnVuuBagx zb9w$_Rn<+X=&AX&=Mofs)CFUjfZJOt@T}GMKL~&8tFOO_O7~Qzkc><$I&r4+7!GmGk6tm$)`<~<Logfnismxd81Xq1l2CbpIS5 z--tHvppyIctsKNmacC%z6uI1SeoC%ffISp{klBJs1m6*iIN*lJZS+8T6Y~L72>QUo zAk3CXXrl5B*{r23ObEuxbLyP!1w)PiMSp^FWb)QkcpE1y1ptaR(~Sm_DaOU^#6y5% z@i!d*gaHuqB`Z^b&x}TN8P@yJLp3&JaWF{`FVytTCo&dHW{s> zpq$A18Ws|A2o>AX#wNqn8~6L?&mW1n)4hd6xdgqzc+z%)_yaI}ct@oDxK^q}<6LuF zKMWjp;IVzIt6NrUsuknf1S?LgY5$KOH$d!?(M^U?tJ-o-hY`^Xu+Dv|e+{J%A3=W8 zE}ge@58)2DM)60spoy(TCJ+Y($eWXk%X<*j-bEh_3yC@hn==M6u~!{Vj`)Pq_zhsP+{!G+a3(DYb2c1(iBV^7VdjFU>8VpkFjtOHp_52RQ|F`hXS$%tb#tCSU$30; zuV_=T#}ySdwE+O=$?54E7~rFg7p-`a*_qQSYJ=BH$6iiMqaY%cwp znGmi+;}Y1nPsP`_)YS9y=g*VBzaEH)@3Lu+<<+M3;Z%WIsxlnv$^?(&*LCiv* zw#nd8i@@cgVV^Cugv_U(LlZ9Te!c=^QC`%ej>ZWdwd@jF55P_;}90o$%He zdwLrg-BUe~5o&w*Vyh1^WXQ^zo}DJ&!X5o7^HEQAPYeH}|=l zS=7Ua9N-CgS4WL<4syD;?kh#Nav5$obXG;aQfy-5eW{BZzDw-D9l4 z)Muz9(PwC%1RgUp{w)ksx|S?srqtBbyuw1itVL+pHvk(;=lU7s{Z@9Eo0}8;A0T;y zsHkW`V?Ok*jxs+b*YWOkUS3}6e48+c;}#QRh7GIosYY}|ma!-wKmXbB?$>#so*0Am z2%KhNVHt*WOlG%QaT4pee5P5XS*8)CM6p-`*Dzax+%$j@;~XpllTfD$Ml?Yj`}+F) z(e!!c<##~TAyEkx#p%xvjeVvs>6aJ&UC+&(uuHo#_&Ej&$aQEW=s6o8Nnn1_kMjz? zb*oL*KKwI2VhREV5gdAYdeV(^ISFk===UKOiAx8LG^*mbl_3}>h(LhrTelJk0jD9^zb^1F zxlnLJHMAn4{;+P_cJ_NkAae0NTpi|%CqV+(ZM|66SGGuYs#0;Vv)@5S5I+6pE}3ff z*9=~Uw;+LtZ~upof+ncqOj7|vHnHdtiapkK|M&0Tcn(n^A?wf{ZNiNdfNKh%YhZdw zl?amDuKD7XUb%`2q&^9_mNG5M6mev zkLB(kD}#3hG)iw&pgAs_+UQeFO)_xe9fU3vKybw$4J`MxsYzetmM!Zf4qdY8sqnJfL{AE|zuPFIxSajc()<<{77O2l zxH5~&fY!;hoY-fezTwLttUwmpm<=YO5){lC=a?no5l3t7!OTtt&+;jeEj~0#t&a`1 zM(nqsUJ{NDK4$vXHM?zgGZ&W*fX?m^mBW-Gz1}TqR9Q<1iWZnzL>%2lngZeGNZhI> zxn4#|$wJs0_8D5`v**A)S_fESvb-+-=M=S4bbrRg{h!lRYiH$p|Nmn;WfY?9|L?ag z;#@9NVoFL}gnS{vFhYjH(~^3Fn}-O{ZEbBJB_zZmIHYaGKm708Cwl2lQ+7b%CS(Z6 zZ2-iW_z#GQ@a0PhN;#9#l0QV`ekc)#0MPac3u8oc5!|!=^5_3~S$h(gTv-8L#X&&{ z13}7PXMiP3&C-&)balnc2bTYf6dz@3iOL5Mn?$nJ)s%nO;%oDa4-!$Ox5%o0-1v`}b?0 z91ivd6!v4=S)$qoBPfxc@0#(iJ?9JeWFL&ojZ3XA-7`U zAGU>}q=GIL91(F8b~#`d%k$?0!MNa4b7FXU@!UButx&n2Pz%@#0t9)Y)a~DS`uO-z z{G+2c%gf963_SjyFi|YWH7#Jd1-J~>*!W<#V@p;mCmXo7F) zcWL}D5Ir0fhp8=Lh=5*y4OO3%aEyUtmHZUZM=2BxPLCiQ2-kS@Xa{=bchokRQ_~0U z9{4Znij}y2%loh1K=(|Bq)Nt3qck7M4XyHa%)0Fy`QINHE0@Zc-mHtYS}|s32@MOw zbZ6J55W&Zx=~65#s8QwkGc!G&M)|-LAu$A^;J~`ijle{yVq>#+&Rg-uVXK0Nw{C5G z_UxIZqaza?9UY=!NhpD;Qmi&80Cw!3!YOHK1JKsMrU2hm@HC8`nOuYZ$_tZ@sCjWY zoQ;!^0Pn&|mem5Te~6ozTUvS>Af$kh(7>0BtSp9n6UKa#T5YAL3w|Lg)JKjSVPj{n zsI6th`Kcls;Zdyr=jgKyH6sW;(X7mOr{C(b^vcSjBTOoXg*PVD2kB?r06|CJDS8>I z!UL!i5R9>V<~Q?F?~s51>hWU850JCbCxcM45HMnwf2bG4cp59a#Mxi1XBNBX5DrarDt_(}KfL1YjA6N=S&r z6{5Xd4=&Q)x3v;k3OmZw)D#(d!)b%F?*qENP#3og)d|Yoz!wELp|l?CUjxe!H%~#p zGu#pxIHJ=DCY;5b9PPk%y7ri+rV}Qm-EXdjF?5x96`JlkDRQ4zPL2a`7xx#Cl(Y-k zjCtWRDGPoSf#i@4)E*4aHje}a1v@QF+pw~-I<0vGiD#cl9z+1v^;ULv3@}f}K73dS zU<9Sx>FU*^2-O_(l28cgR{ifo0FgZ|j<6rNzz7PE#ezblYi9P0<$|SUxjh`&@|=-f zmoHy-8mQVp@kfybKcJD8mX`NfxGUs>NU}2Pw5a@&?wZomb!1S@h!vBv=f zQmav|$7W2LDxmTd%#88!5R68wNVc|uAOu93&)EuV4K)Sic0KwjV17kM2OCt#ZKCGy zaUsO{Rlr^W47-xW;Ey0f0XOV|N(gABtRi#u7prtg31R_O#?`3OC=7s90bXEf2*HdE z_>>AdA9&jb2qJp=`qU4!ZbJ1%SC}YCO_4fx{`@W}sjc9v)c|x+j~<1i={uAmtI!4; zFrmjFvv1kgrBMG?XWymFIqJ2kHQ?!9}&u?^B*j^cRx;lon{ zSJ=02M{!M4b%uitdP{h1trpaLOH{g!5-({4A<zVwy zg7I0uL%_eBir&Gh5$uP+sbOwaLA90apPKiUuxX+Nu64R{<$6|@5G-8)o|J3Kx(s{i z^!4?f7H90`-6tvd4#K+@X2!zcVmN~?NCsP&WI1C(rdgkqmKKD&g|JuP1U<1B{jnrv z88fF3(66#03PAzMooVcOZI7ifF z?oA;L&(9yjXucm~RA`FIy1LB%#x%P?OKw7Fq@uLbO+YUK=P&D&ydDr>dFD(2Bo}!4 ztsumjHgDazGXk?MDoS`n#P{LhV0bM0@W{<}K=J{7s)WP}>vW?41!C#tp*dZQL<;r{ zfk6?QwXKgxd-kay)Y>a{UaK6WcpNK)gaybBXF}EBu2%J-UvVrjg{+6ogBY|BGH)Xt4C7=3HTXTh6SnxkwAzY5FJuRPL7agF-ggzq#Zy=ftKIK6*J%de?xHy-0oO%-_@l# zXDp;dExzr~oeM24F3y7i=>7ZmmPmdI1%^HcpJCt^=-KR)JUjssWgvzWT@#aF0F?e9 zF5hyXxYjQm5EhW{#$HS$zPk!VXJ^rbt*ots5xO~%r@)&L$BcyEwQh?>%3&l#kI#Q* zl1~jf)@nX_gfNcZJtZ8+?u&eYn>EY3zTjw*F44E4Bpt;gg?3C0>6C=0eg-Rq&hE(j zX!ztK0K$#r)KHYruu=PI(GrJ8Mh-y{LD99XJ}{w!X+r7ZxEx`OM2DQu)kLKfU|kPU z0s?#mdJy$B3TZNzFF!Y}8%J#BBd9xz)}*fgy~sfkcl_Oya*UQ3n+&=%=DFp)X2P*4 zggn!5!EBXG=x|OvJn+sYqZ(|cLx(TUbq{y<+pk}H z6b$LwgQ_MX1qCN2;GD*UOB1o(?F<=hH%nAi$w66JeWaTW#xks1wj9MXHZV0^80T78 zWrIx4F6Vm5o`K;5`l@O#youu^3+zx$#A*W3Hz*@Qt_+?`od6@1;ILwYak9|Adaa z7p{ZU^?W$6i8p)8ivglPTQ~9`sSP@Rkn_NbgIRJ$%G0Me9$pmT<)uMo1w50!9T)ds z-$Mf^g5vSYvG*3{xj0L$u{rqK*x~p+GAd05d-10rvXVt%GHJXO2bLEfNh2#TULj3ITyLdb4`O5Iqkr2I5|z zknIQjQ2M~tar1p>39zye!F<~*OzeS%EoXjz#oYNuVWBiGZ{q_kqY?iA)cDG_wwVOY z86^>5UdVtI@Ks^{&hXN(K(0sNMEeIVw6RiNg8xAj{t5w~V?G7V5D*aFlMShs!HQ?>9 zKhHkIzz7lw59MX9k9}hn!9MWtMvQh8?v$KV9(Lo^LeJGZFQ|?9H^ZPMj zya}Jh-G^H>MedVU)M|cY-&R5fCjb073=zHovwqXDPGGNa0>$B{S@dREA4r@DB_+#c zD{98tq$5$hh4#^uye6@Vd3FoEBX$FkzfQ{wSE2YZ;kl409Pzzl+U`(54;jg<$myC~ z4%$$W&!W_9Ax6f=!%tR^`#$?6?`UTiCR(<%3H0GTbQ=~9jxazKGLm$ko7_cI>8L2w zOM!9>V4Qpy>+0%uMSlYMAP5Zr1vSCh=Q)OI05q_W;}_N`$nM&}01bM`OS|@sNT`g< zE}3wfqbTK{uh|NOmRH3aV%YBH>Z%Hoimka|MW2P1xemW9Tr%O(58pbWwX(^&SdZ=b zwSk3&un5S{gmr3%G^ z!V{pM@g8eL&MQkEkCgm4L7oXS$EdQmro?Cn(kx6wnJ#xw-Xp9EHnWrF}zqbt#>^>LC6 z3BC(^Q41^tH72J@6;49OR^M+sZ)1iDyH^Vt{BHX zc#s5v+`8%MI_&bjw})Ub;p0#OK;iwjPFeZ*a@trpg@4|454*d&J2v*C3a!m>Y=Eh)e0NuoLkUex)Get~VItYJ-YMlhH z15Enfv)|lI?ToP=a|6>rUSZ)4*tQ|(S33Wb1N$Q<28?H6PG#A-Gh1BzWqdp*`Buz# zA<+Q`!{_uQJv}%q*|q{>Vv0X{_!_bTmo+pi3tTORgyGme-v?1Wa~ zEaXQ@u&8M6y%QhO0i;PoA|5)-B*3r;A0>+=C(@1&+V=Z^SilTURx$CMCR|b;eFiNf z<0pU@Ql05()wQ()A*)gdf;=V@(ZNH6xFS zFz{wc@Puo@L_^70*M@@7>$^x+IEgNS56&@y35OY5$RPFV$BrF=XaU^ogs1T|CFNat zxxdgO*O8_*AbNq3k@a2^qtU2XWN!uwPym>fX~;11+}Rvv7TByl3!gIf-Cj)k0a7sc zLyNee3N5y|9O`}!){KVI{{P+!aG$v5Aw^UIMUp{)_srLe^q4+8c<`0u@v64%SAteR zT?9{U@Q>5^Hl35PC%(N3TfjQ;^554ckfkxKq(S0AU%P?l`@el1)P8Je5_2EP=GxkD z4&5fKXiSf`Gr|9r`^`}Y`o-S8>!6LmReYmU5qi`kc@KTN)h@6%0(~(a&6-_0h2EBD zW7)HoL)H8W%&n;PqWyp8UwY49&UQvORl|gpC=1yqtnj5sbUb4DGRiU2xbm}h7akA0 z_!*Uy=8LfX+z$@^S^FS)>q?DiSpy1KO9d`+4ISMH1OPs{5v(U2Z5O81Pw+z{PE?4C zElNEd3i&kV`*u(3dwUbAZtXmVrKMdVD*A&h;@A(KtB&`98cLN2yU5CDTJ&B4fkZr4 z?Xi<5O-ycs$l|kGUH`r=o!(gHq6Dnd8lc?rs*L<(dR#b;d(T4~EhiMBL z@Mm%|5st9VLPstZ7U7f6Z$OAv!SWM(HI{Jo0QBG!4EH@VxNNs#_9LAM09LUNgUwAX`NPghX&E#9{qH2i@Q)W*UuTg9p1$e8{YbdZE^f zS^(fS5P(=WZ92RVX}#KE+UH(ybOT^ zn+BSwY7^hrl_;UB1*5G|*C1CW!xQh#*T^cgDGi5>+W zp3sPh-Eh;u$!dUh($w6{3xLzq-p-FM%MNmnB_T&p6itjL_>cvkYioZradL1R!=R`I zdyt>&>y6*$0%nYR9!{EE?RfiVQXsT=*=V*q`qR-hA zp>OBgX;^Qpp*?zz>f}2HJyzzE#=6R^w5*EU%=jN^H#uxNto~8KO~-AuR4Fs<;!WCv z3T<_Zm{%S623g|U>3?mDa-jqw^XReudvx8c$AiBvL230l-RH2tuCcaJ{pQ4Zufy2! z%Gw}PFz55VcXg%E*AYtGvCt<}Z+ao1t3|hw#U9 zQy}1|!T^&9ShKvuq&UY7Te$x-BcXKx%v0U9agw8g=KmbSkZ@Sg+2Vu5e+jPSIZ-le z4d<-{8iU}zea~K%WoD9r6}2)NL#tnIdU_%m+fN(A7RR#rNN)Qv@TWahY~P%#cebP) z+eWM!Xj730#Co}m0@Lif@$tv;;F5rQEM6VTVJ;YO6Q(NWq2=Pf{!V#g&~=C*Ghqn_ znCW%7nG=!Ejj)4_T%+Sm#JeOK@K%Atcle^}hZeu>-ibZARyq2h%0uM1vQNLghs!(y ziGo*;HAFmh;%s5pzgylQmP5iXo;(Q%4#p@algkS;K^~q3?866(tD=u6vP|(clmGr3 z|8|N?z;kw7`#K#{DnwZpil&ZEQo-UZ-=kXkj zG3LqnFJUg!vEMmApBX=-Ikoh+{sjDn-+X4jv1m?$Yx|96E?3I!`#zAw=nj*0w*NFj0VBlD)C zQE2ef8tg2M*iA6kwr5&h`Te54>G#(cHt;h}<4BtPsc5EWfB9`+T^dqaNBIUgg-vo> zVW{&keUz0%V6VTAB4aK?m-z{tu5 zuRV~!#u;%AV;l2`fxiA>-!coOpv=st0-p^ta``lV%r1T!m}($5{~>e>_MSiDPl!Eh z;1N9JQTpd@z>>|_gc`{%?8%&x#kQRmXbNfMjSzZqv4x!;=z1sZ3vR&Nvx#C0E17nz z*fs2zYx$NXbUR3caEB4cv-CHY%?k5BqFaE8LT}wlMTXqzogm`JaOxmzF46Tv$p9Lo zS5dc8Kw)Hkm*%!ar-O^>p>B`79*R!}%zi|Bh@=QUG}(7~p%Jl^@$%(#=oerWO-OFJ z`9653iu2L)7Q#!|Utsz73+mQ4&(Un!8%A35$(0kcC*T*sW?k&eM6V7qFeG-z<17Ih z?ywJsot>RuV(Zr;J02i7&8qTdqkZAG)Us;nZl@zE@cI9C*Eqj+;vd51xI>}bnJ%zh zUabV_9(P{6NX5W-huz`ZPD{CGk!uT~5)|P5TO<`7i>KBqAPyv)`&Gz8EBX6HZo1`! zP9r*l4jOV2T1_-M=&9s4?z_-Hn$e22poZs8&1a9~!ae))+^0JhiEDWB;V=sRyCS-| zyp#L3ka9za3tlHd#1Is!tF3p=y)hG!|MQX8KSv7*Z z{X^nX2QzTkf^5+t4A00*HJFT$ zmwzX*|DAFqY{HnPjE*oN$@0*p$<7FJ@(5V8xXZBa)2B~cOeRqL&Y*_MIQ3Cr&i2PX zU4^y88MryH!tr-a?xMEqti#;w8moe%_FwBGbkJXI*qhGP!w|AB@w0wR)1c#TZvDeP#;g*4A(78 zEGnL!Z{q8GaodpFisCO^7rzNJ-V=y)ML*;0$WiXIC^fS<${P&0mVkIjFkC#&2SwB zY6tdTuQgiVcp`vr!p>zme4BX?U&&?T+F*iH2Ft_LY8|Ll5T~cQs2!{U@cI};jGf#6 zz*6er6jE-KPdN6y6jB5(1tml(F&}q~xuQOt#m^xlw;dblip@oFkiql;+}s##VL}T! zc@#TYd3Z|=*-fJ40lLUzD?rJsH<kk^dHbWZ(O|j~-Z2A{c_JWxnO>dm_Vi4$>12hA{`mRxVWf>SP(U&g zU3NZ-ZyjDKHTTuc;tn5P{K1GD4XC?t1Ol@2kB=; zrwZX#;_+F>vJ0bgBJpBty|gn(AXJxi4FxAcHnzHP?di{+wIsh?ohdA{0&QWbk=uwL z!sR_lMd7@5@T%s`k8t(Y z>ddhthK7Q|!YLS*!U6d=9V!VVz7&fgSSYPggIthMpTB%bMN_iKtHu7v3H&TLmZCt! zwtwe~zkgp1Bs2{{Pk?;}+Rcz8hnd${0RgBRg9a|vtqb4=7S5bmL!mbF83!7@w2+cB1rDq>~mFkkmLmZji|aXXMbf+~(X3k<~{4nmHxyI}N0x z!M2t{Pm6u7slmGwqB1k5u}Rf{zF_n5_AWwSZM$A&_mo01M2itK%|COr;A6v3yw@#C z1D?7X-mOIxl%urrEY7{TiL16q{k@RODp(cpnzCQbX-ruA4MW*Wdzf|o5XWqfm*}VG zTBuNWA3xRx+n4=zrC#A&zDZ_D7Ru?ZNd}ICm(RVQf#7VR_pr5pHVETIg7)E2)kBdv z`1trAcX<~~qZc5d*q~Ov#7=N${#iO);keGxygT8fIi> z{xW7@zs(ndmlqs|zI<7w3+9?wEXSq;WMN3d`ki6TWO^CyBMzag0>ci=jXb2z^he%E zT}XK8=;{lv5F`3fEOki~4l#2?(FcZzbRn zYGu5*>dgCz&?mZ>8S{SGBJT$0wWLy2W~Sf*8tUQ4vR9kvG^*GLM}pDP=j7~JY)GAx zU?-tP2oQj4-|qX)dy!F3_~YH5n40c*`|UU?Wg2AlhGU{7D(HDdwx#K1YWu*~!6HJ$ zRq?$kcn~YLL-+VXAQ`FGE6na73$~Q;BUp7lSCX(^H9UUN4Nm|ymi^n+_S2rU>A3Jy z4zB|Nl{oSpF`$LmXHKxBCpel70zd+99kcCxxfi%{ym&<2Ok|tS%KXqYcA`cn#-OC} zlJ^0&xV;13l&6@2}C|Kl3jhYhVJ6*Xn2(Kf?>mYUum*u>}XUiI3uf z?MSs9qpojxgKt-UPXxIz&9kJUO2m>|{A}?%L^r{mNi`` z^jJ?9WN0`ScXr?fT;y?}#b`g+ALzR@rS|#Lr`MT!e$V%<=7c2gtC0Yop;o3@%UJY; zb?>(8=%0;{%JvEgjTUeI1a`8p*t-gcH42Q13Z{$lK24hxJ>Cr5lKW^a(e&7@Mj2EDrPe&VYW5THh$I}&HWk2xRMT%xl^f82T@I{Z?<{L4c_CLb^e;k%fV4GC zu@SVLaqTbg$Ot|MR3H+2s9VBVCAHAG`T~~cUri}tE03^JGxy{dXShRY=LL(C_x2)+ zh}an?W)%=`o`%+W-#Z6`aCR|E3b}e>2gTQ@u{GU@w_RC-slm}N5C=;!v?6+ zc=qhsy$23NtLQxi{Du5SyFEgcS{ZJ@GR@Gezq?{B#Fi$^uI6nmC^GoJr#(vr7kU!P zN)xOBHfZ5@F@{E0O~bY0T@z%luTf#PJ9&Z>lFxN@tz{4EE|7Bs{s~!`iu6-)afNqx zHCwb`t0Z9;^$*S$c9A|O0qcP0K!o&{hqB*SS0+}i;X9V_Tk$5hTmrKCCeyiei!6|< z4u$xOiBz&RED$Rm%4)ZEBw>to=fjyKyWEnQCoh)i>gR{Bh97!*175i9FOdo~=ODz1m;OK@+YKt%wjnVCXPK z2fQH!s-0EF=_?A{%SwxtG;nT#aF zE0`p#nM+nz7Js>28w?)AchO zE6w|y_x-#+eDDVz&w1|qzOHXwkHNMYJRXz5ZSXBw>hlJFkP;BbyM9zs!|?(9oA$za z)!>=cY5R%~lPiF?5sCs&tFnfkOZAuR{$OXwQ+*Eu#$mt~0|SHdhgZ{MW5vC`X6-<>x^FsuD9LIXzGU|^L1!b$L6#!t#?3E&pZs$k^jn3ta|u5-{EB(}hm zC>?))F+)Q`B`|mAg9A_F`IS#oV{`cv@s#6I@JJO4mQbLWMDa4iZyk zfFMS?fgy{b;UT!%FpDAJd($YGj+h4A(|PV8JJWz|Xoy*anDYxN3pOad)C&&2Wm(#fq_Uj5i48wKU$sk8Vt#%1fd}6t{)zb`I+j5^9l&`6&0sY7Rn9X>h&a~wK zEc(hpwfILcFF^%-^Vd&du>$VI<1X*? zz;puc!%yNtm#u{pj-adA*dV$nyrxFza_F<0FsS`qpqK;i#YfP$`4n8az2~_TLX12- zNnpjI1-3ei6dNaRpdo}HNQ|MadGP$eib5BpRl&nZ4^%83fF{Krw=gi)#uivz|Cv)D(hUrhG<|E- zd3$;EV9L9u<|D|UvkM7jfTh72=m*Ube9%LFKMd1B>`WnUBPDLKva<9+;6sfV)@;JX z9LEF#Na>(MBuGj9@gr^`%Z4oQo3~`0&!^vjBvx5vVL%*+OG<;-B^c462DW8o!OxDs zedDq81v6M*-j#yjb8;zLD+rf>iaolZlYX35@I1mGmf-(C2OiC!WnRa)8SJ?+#T2+> zwYs?2fJ$2MnE^qD9~4&GcQ@;Ix*!q1RIQJpiv0U;_NVhyzKH2)YV$WH%3MF$uNc3-Bg~lZYqNyYUu~AHwIS<}wuX%S&Q3A$;GN2olEbbsf#xYh`U$kLOo|6D4nx1{H$01YecAdrV?YbEcle`EThcP#&5 z5-Gp~L@v{zea&O6856D>bOqKBo*;-?2G)WAI`l8Kw3M1B3doxJWG<=+^>k%YnAL=+ ze3hpA)(ocwbrB{sNC1=KX!h&_1$cz@Y#n_EV?!{0sL^|`kY{UOXsy=ohx-z^^L|bQ z&}fY?q50S7_?69}CdGDHuuUD1E*_`1ZEOHwfbHlOv11J3FnrfuaSAh@MKz zh*!awU9ZS_u!Y5C0h9GdSr$ZpEqb^zd&mpcCho2VKU)~e#Z8>WH``oqk@@*(Q3t$F z9Np5Lo^Q#(;`_(ZsA1A%4>r^o9TVt~4Fg{n$i`$z&a`6!ijT>bB7t*w_EF2(E2Wbj zSdo<81?>aF(|sn6X^0`-jdF8MgBupGhte3j{YUk?-sR?Ca^@P#PBy(Dq~03}CrP%y zU2}wRyjx1Lr*@lrtsx%$@`=Jt3q#}F1+fd!OGX}oq+?ihCj< zy&fj_+CjN=ukar(;l!<rgOM!R(dsiNWyB-?b(w zJPOP8M;q7dF?>tcbhA=BN#~Xz-wp0Q7!?8tQH+8|NiiD&RI}<@S`q?{UyiekHf0!Y z8#VgDL{T_cu`7WYT!~*|aY5E;xMfy4p32e>0&JXJVbsMSY`qEMmE9X+VH*8w#t2f_PNYca#XA0BU`|@A5X=1p1GC+Bb zO8C5IfZxyhYyG)-R!BjXI*=!hONq7FMM_fbIN(L3(3$a!wrxM_K{N<0wS$D-=BXbh z^wHQXz}?r?E^$=qCOiTxBQdGfDpo0g+d3nnyqJEO_o-2BmfQDjz$0G0TEqg*IsHfPNp)<* z)tja=w`#SOENW!04u?(|;G?j%vcnv6_%0c)X9*~>3wMY9$*2rgoXE}m*l_K*l;o!& z?4clrZ3ONp=>p-)!KKQr+_J!h)BU@8f`ChDzR!x&B-k+fpvE`9)Ngb)8^o4sNSLWM z+sUElm03gswxo>#ms%-Tos!q*-aY9|*!H*~vF4u%0T2tr2=o5W2lx2y2E?JALB0t* z7NS7J)kxw;67Hc@;@{a)v2r!ul=Y-qCBV=$k}poCHgkTIyQ`1m>e8o94ri2Ilt;vMh!5ABU(y>7ha+RGh@~S-dJL61 z?k5K!??q-U^eKz(*^IT4RjgSL;LF_dGoOICk+PB!CetJgByFwE0fPIj`}F6H$B=I6 z#D>#6XGgzdI0--G(1>BabR#?3Q-k!`nPXFTC=@X#n7Mh&5!FUiExP@HJRsB-FFQ-! zxnKe>W1K6DFG@(pXn@jA`N~h07q{wK#bT&C;Ig^llRf|DB)!V1-@c~gg#!zqU5rBC zt{83pbgw(PpqQHQ-Q28DF1Y3!DISZM@aB1PE#zilv`GgYYjskA$?^jb9fv+^2n_4a zZSNQ-V|LDl_~Mx%cc1f)gWm^qKaib(RvrURAf~zyT`-tbCI7S31&s-rTgnn&3?n}t zdXd=QT8{rAuk1#6vEFVJs^RUpMnqJ#@b}5z!0?-rek(&c51#CKT;?SR#feb)Zd-li z=Fbk2{WcRW@FB**SW__xARq@5Hf$?rdC$1|oBuvN#uxy?EGi&g1(w_xM0W$M96dYC zPp&Y}J`R{}N7HosBZT%~TbP%1SeE^z{ONeI6lwPxOI-MEH>$3LQJweKE1NiB1@FsE z@#Bc`{-PEJwLh+RiAGqGZ!A~I+><}#pZFC7>r~@7){@LPkuuQ0hGw~XJn8Qiq<=-P zI``Rc&C&twUrX>}mk{~vd$VuN9(Wt!Gq}>17x!fo6C9pXXX|bIUEn`UVEaaF7iqAy z)rF5#myIkXQJ)|BqL5;ryxfs%CpPax*|mB0G_9G9%-oQ)PWXYOhvn>qw>I>x@B>21 ziLoj&reG)*GfV0ph%A=t0ljX&+Ba&M_=9aFI1Ja*nJjRB_RsHT^;OdfYpaepn808` zHB)IKdT^|<&3u^10pXifO)@H)fD~bg(TUZe0BjRvV~adLzAc^8P<_w4*n+>RU%@b| zz>631A~GxsUcAORGV>lcJ+6-9I}B?2ZA+buoA+$$830|Qo(+j)ti5p z7b;E78!x+WkM-YYZu1^9*6+&(GLe3!ZLHMEKXtv9RYZ^WVGT~Xkmv#qZGQuU0y}J8 zeuindIo0HxDB>WwZv%m=+De*FI=Gh_-=*D!$|Zs4jZ_wf+&xdR-%D~hxsf`yQ{{i| z!(~a9tj86h($niFFfv?RQ-c6OL_e?tKRN5YyXn4q)Ukx-2$`lYP|)X%??y^T{!DXY z95TgyPE>pT4{4)B1@8*&e>+{e{U}2Htz@Ne{gg!M)~NSDGj}&+d;8q_Y~&m8?LsX| z4c0@G8spPFAW3^x^8m2<;(*m18Sl5?_+TxOdee!mBMh||A6uuqiI%P`(zDrd;e zTlUW!hoTFO{4{tbBtCUQ*<~Fkd^AJ}kXt!(CEs`ty>x0ayK`H7o$~HET;;R|abNMc z01rma){HPU+RXBk$WB03)&hBqi?hV%CfkUJ&t9+m?Ipep_}R=cb5_HM``G{{J7Sda z%CD~x+a45-p^Tr$=6K`G@|ZJDlzI{-fD-ra7$Yxe1h1C@%fJW|wn~0?z0X@@EM=6W zNI#Reev`&tJ%8%NU8M;%LMj4)%qwq1iIODJLy-fK!%@XLdbPkU1nl_1IIwtQs~`%% z6MV=pDSg=jPTCPa7d!r=At^BS$^%24ECUYT)IOOF@P!0@BoO^iuY}aoA_2`oJ@&lT z6Gi<#gYEoBU6_4s9Mk<0t!~^h;GANk&T5#zi)rc!PWxs;f;>;j(^j%`+g3*+_W%3FJI+pH2e z5~G#G_`!8Gf`9yWHSlB7Eq?sTUxAh4f+gH}d$f4v(?r%;Pqz=8zXHUA=>4%kD(r$D zj9P<=)cezPsT<(N#U+?Pj0{7qXvy4t$*!fTb>|)1El5eTfks}k4i2n;%zf4bH>_d` zMOcNzB+L}NN|4leqQ-vT25&DW=OwsnSqhm9gCIjZRA+Pd3$Ut3$4F)&inLkLhT%dH zoY2P4Q&k*)H*@{q;T94}Ym^*cj>40l;IM5^93&>vvArx(di^Eli1ggwpf}>ejPoRE z7U8vAy)msqe*HECuA>Kk@)7d=_UB)Hi2`kqjim#@G*Aj&^9>BvW|agP6~CPn6%cU8 z+1ZPVv6~BFSB>)MIu`yAa`hp6d2L(*)s>O=UwBm>(!l8OzXl;`_^%XwVnxUv3P1mX zQNKs*^*U8q;=0{SM&ofPH@o5qUZV^1yy1^<2HsUcsz|h>wvZW8^wmgYwkUo%6P4aK zj@pio{p09ySUv~rseL@(NNkakenbR;1E~7G!E$sI36&C^dU(w&3 zRFDmJY9tSn-gq!fs5YVi3gjEh`i%}Km%Pq1vcX=|yDbZTn|`kWcAkDtvTpSlT)2(3 zxnP!oHVO*{Gbr{?09tSj)MYz{h+K#%)NW(iS-xj$L=FNkGzA&HO*M9+&yIz4WfM~R zZFUr!3$VW z6YZxX$*^@WfCLk@4Fa@F6Wu1*yk8mrdPDgJn*P|!hCFo{Kwl~k<)Ap22lkk#odP2W z@t~wrNC#38Iabq}t1D~@;rKqSb|BeNe>07me2XVIw%qn5XWm#NbOi#!Cy#{ppdnj zD^^`Bq2!4__CJbAlN-&T*2HZGe+@|)*U#cvK!8x1R`*DC*z%JR)O9MNE78iBp}2Se zi+SW^+c0C}FT1L0qr9$xqS9|CDb^*3S0r{o~I)U zhko_O2$`(;;uOV{BsXAVXFs(@vP$BT*G)M}u5B^2l(c8f@b!mC(tAB(l$2H3y>Ag$ zRui(01<9o3e{kre0zeigJM^f&ix5MhgF-ge{CF@r&Kjf)h+z;=9NQ0KMK}#B@xOj~ zgK`c=aq-U2e7#h2o3SNVR=N0olKJ^$URLedezKw}?r*sWJ0O5gFjC7tzw%sw2^VRN z+%v&1=a5lM!(}O!owsC2HB44N2?z`Jxb_@i+^t&l#>vJaE^uE;99Y6Y!Le0fg@^y409j!>a zU$2eF_K!Dvpr(YBu`8lc&?>SN`pAwN7b%Ptt_9PChHIJ=Agj=IP&`WMy>yL;*XGd$9J3L{=gV)FPyI5r}SZJBNN=BGIK_2=rHvQUe0YPx*ehlo>&;vB)q& z3S!VAPa?+v(%5|55-(&0sC&NvB6pS*rdn6B+g*2p^ zOi-T{kK;W#*}rtMKt$0}heI(F(7jMt;$VJ2mk}Hl!P}cM!7FfRI^A!=D1F3r!i&O| zr+@1|BYfK&Til>}CD;sr*mDs8O2VP9t32ce&Of&qSb z&|1uYs(CgpVI<0FF%irXP{#+CJly>~E&Q4P-fv&pOQTtPO`qsfyr}CHP&5jclC2Ya zv5r)R=*dP-yPzLG=Mu?<#gw8Kb`hj*Xq51m_n)+gl^}dxl-YESibC^amMupQ9@AwY z#!5nwg{gD<=roy_)S+-CG%f|UbO_tn1BO8|M^Y@nw6?N%oKo(N7vOy;CLebXFnNUf zbt%Vn*8|)B*$XeDqQe1(l&C#l3E*T(tw*%LbvHO3kjXRa=r{hOf4O;_=x`orMqN6M zoKDp`Sl~c>d3=6y%t)l2Iezd`fjpD27ha=`j93)6K66(B$zWX&GYX~ zi#c8FT>veb|Gq+wah_+bY+a;hyB^vQ|DQ$@(~beDv}Daza+=da)Yq6p#qU?7aw7Oe z8K|%_t2vtcFU~H+;-46$B!n9Vs&s{RiNASTuYJWy?j}{+#{rc(igPAr=_`vEAp!!D zZ8!L-H9_bdTvcGdi;+e99lpu(1PO0DOj`z~BAtQ)vCWd`dr&|#PnZCtrH4V;e+rlo zfT>17Gh+9FATJdeHXU=gaSaT59ePtOKg>9-!Zd4`BYlQqEyMv&^{4V-%CTR`pW4foX7r&p(mGrybns?xic1Zk%I~ZXQYfEli$rNX zh_5v$n98r(xr%`j&siRL%lrhm;6I#DNXn+T2sW&Zc`jwSFeY}SQy>zq%$AAz59MDx z(RyPn!nOml1|VM|*8PpxCYB$_(M29_QG2LuvBpF<*OK)Ye>yW)MVvT<#_eKrRJ4-M zhvDNk#-I&dA3VasCx_bFPI*eO@PdxGcLVzbebzfIm*sG;xql18ac=LBW z&x}aOds>0^((-Ec@9%l!CjB}o+8)b&Or}Sz$k2yNJhbUcpc7Pmzmd1Ls~Rt0JDXr+ zUcE&%dN-*alTd-vkkt0~lx(-%XX;))H@?M6+L}J^%VX+5{u*kyuO?vdEz0ScDJEum z6V&Mq>OYpEnCHTb%D5MJA_s=plYv%VaM+P`LP>Wwov>N?eLF4OBoD`?T=@e8iG%R> zO8iVO_TmRTr?Q0%uyDs8M0u}k5DYH=6>VX`9&9{XQe$uxv8R(2Fx8 z_0XqCCPb;clNA@KiNsEVEr~WLkCEqCH_;H!spc(tgpIN@stY_C)qE83ETAmLCE{u$ zvPgpdBLz6bLee~$6i!o8wg0So5cO+Lh zW%=PJ(MrNN<7GSX-=ih#0S=*G?AW-$pkMQch;*bGH4@rSX3ds?QdI8#$uiI>z|q5l z^a8mSOnxMFq$7RP3` z{%~ds;>l?IK`vKcCBM|F4)CIlF=Z+6HGWAZa2txp0APf-C<$LKOz<`+MX?2AvjWI@ z`>gh|ECcXB+k+BFt%6RRBoNr31u363rHl}E7;(EKsmXu)ps*!a-otR`yI}tm@6)}! zRf$*36W8FS>RMA!=MLklHWkX4435dSu;$^e4(t3e@`PvEvZllR6g}!v82F1r3v@PY zJW;r6!tza2CNJcN|LF~Y^kb||n_^4C?yigRDE99dbrur#48oGd|dr zMj2(@AtA7$NT&V)Jj!hzM*?cQw-No~Uz7$Cu#B@{VEP*wNNSo~oLRDE;YM1@*Xs{I z<(V5Je4$M_#~ha@30RN4pBoMeHY-u?aGd7m7e`6ONYAHX>E4)wVyW_$Ay;{*W z3m?79o!3C-*NLMXw=&!|F(n7pIH5jk@;(&91;vM8x#ww*CUEuMrIRW{R$k1&{u}ZN zk;=<_uJ0YX)?9kYP=v~{d>BUFiMR+6QXOcmvSE!_WT{TQ!hzGDt`#QB7|BZ}Et8|H zYs<1`Ki|=|{_<6YP$U+vzHVp367F6_#`3WugSUC5XE^#7LgEJNuJqfV&Qs}S0J80@ zky#E%R}H3ws{_=xOD3ZGGE1nRbz=mV-bxcI*!jb4hfb@4Dn{Y?pec@PZ!YD_G< z^skK9IT&3?Dow3JPQi-*Fh@@ZPcVi!G3?$o1V}CFRZ*063pc@KB?(&&twJ33i~q=K zsPy4QJ)D)A5t|*Ii*B{ROlj@BLtNch=n87*q zKZ6s(e)ech;x-lzRI8Bpa8d-;*lw)PkMlIuBSJIRvfQwi-gwoW=QUZ>0L`OP-0DoAWSsJ@tvcA8S);#pHV{ zH~_o5LXngc2I?5Q2|Kh63jsDB;iyk`$P_b&UPJB$J>`22CQG8UmjwqZ(v7SOyaeNV zQLoD`xVwM(u-m?c683(@z1b`1-!rG0QjV&tT<{E{c_v~Pz$9aw{O76qz3yOHLr6UJ zw#@ioH-XdXr-ek%FFRjx+Yo^Bm$BF3l^>ixF(9f>9VNd#!hWgsnbynSvVjWJkbr0Y z!^W4-cHYM;`DuS((8WtN(KpWyTNUL0K+@$fj6GTL)hk6NyY-KN91}`=#vL!87@^!F z#YAHc&&EZ!n`W;7T#=7w*st=hqcg=zW-}r?X%43MTpSsyPM)TvqOF#(7)klJ7+hxg z#?3SAn2P4AIOGK57?iLV3c#^a=85%QXG3*k{SEM-4Z=U(X=kyiX@9{Y`BAp*inZ@wk}GTw9W zbZtmd+4K;6__Z%pvQYU=Z20C3ISC(Y#g&&##{)FpqX$94i8kGDS7-n9=rZ;&Dz`YN zt6q0e#w3JiAl{R6`n8vkEdPeN2ZFHP?AubCbo4(TMMdh4yJB!$81DOn-P{mYJciNx z!ie*;Fbx*RSCbThR-|IXO>vSWj@_~Sj=)DZDCxB1Gb`ffL>CP)u)@3{eMTUGOwM$- z;&CDsLosO`{2)F~TI|2%kC*^h~U=jf>wsm{ThSB#I4-*umP5NkO($ zslNwdt=|-9{?O(bc9B|_L-AmR7OGuoq-7;8JBV%Ph`&7)Ek~e$6)gv|w~Y}ZGl<;q zRp&KBCOcpoX2ccFlnyDeJxUgec88Z`683w*`04r%9GU(ZlS)q-pUi;6rLt|?Hg1&e zMnK!$33#gX{CIMcvA$@bxE(cL#kIc>C}+=$Qsjj%KFfj=hvJ15RvCF+G4jIo3}KRx zBc@zh7ZK(s&##FDZ4#>r3|o8)$TSU=nFOTuh|B-9$KV^835cf#6>h zoSSQ)JeqcMb4IOOQfU_}aE^!9Bqa0-_uGm%&7HXyP0_Pm*uRP>qwf>Hjp#Egw^yp_0} za~IuTO!M1X2nz**nQkPz6YX!p)@=!`1(W2XYax38^Yk-Ows~i9l?_n75PT)mv#L>WGMw zF}Sl!VIRXQEMhHNSjR%cm3bGF9f>_RnB4bfZfKdtA*_`6`?xQ$mmU>!T$tLT9vsga zt}R)TqQ`U~09Q~C9QxjWYkQAlwBo<@Y2OFtPqbxJT9rbcLBcfjZxd*mew}wLDKZu> zPX1w#tPOqKNDr6S&WIBs{7q0zxp9hwc;uYfDeFcW>Z^_(R}GYD(W@fN6dAf>yKO3L zBF|s`a8&fT`tb?v%fe0YHIjsK}>9CguMRR;_2f%doqE->)DsaCKDkt zE_fS1k=XZcH{y|Fp196i#K|rWjd2M?|KMR3I|AHEP{GD1@%q}sXSgR>?XP1uQmMZy ziXJGMVL1Bp#3+xX>C}jP z$8dm97EzT<9{j-(YtU3=BNMfC{;R89xG>pjIN5o-ym58VTHx2vc#bcHj1eBlHP5Ic zWzzB6g$_wm2`r%;gPPO{DbiS4%#cTR=uAH7lc)RN^p*X#BtA~RI(`_0lsso3o$6aW zQp$!!+48(t;34t+Jgl=}?@U}az|PnAR#x{NIuDI#QDysm`dU)dwc$j7ITtTOZ>;Vo zFP>iy`yhc2-bFCU&-=-Ipxegetr2GM&PyXIxtIU11$dj~b+D;w)oiWZdajuFgSY4# z2lf<$=kIJ`RZfrIAH~|mI=7OwDQPm{p?Nk+p&>@(ecMY5ZFB$0g#P^sEMIWm2CeW~ zLMk)yXGkmPG)l(4CjYm;&+fx{>qcc^f7z@QcygIla|r3x8?J&J$z|`c2xC?Ua>&+bO0Up1jm&@8h>! zO0BkTBjTXEaQ+y!>Jz&=cAkGlo(e3*#p-fJNA%~mkJ*y@IZ1pAPWl{4=l-1j^r~P& zqw-?vr`1m@M~g;46)R@A8z}IxNX1vz;x$R^^j{=)PyC89uzS?hPR!=yb`bxF@sEsT zvzcJzEzY=A@*-peY@`yOkoP|sg|BG*B^Khl51c)gYckW7|1*>=X%f+%cQDg1BUfM&L#Gg&3jq+7=u=iG<%tf z1s07fdu{e!h;bTGq0+{3j`IV?xHD!l{CJ(DS>ggAuKp0vGBU7X{9 zHE*tBx|l<`7_MP3yelQydUuk7or6g8X?=|-r&q6H<aG_P6=k?qTcV!N6-$r!3fnnv=BX|1epA ziLJXAaKIP{!amNwns9c@2K1VN&Wi~*5ypy8WnvT-JFLG?>o@@tmLiw2gu5;p{;6+C zq&8zRN3n!Lf;>`XTG^1u+WPH&XwQA(OSu}@_iDx^HdQFa{WE%f@_TZ1Q9_+u&j)gd ziPDXs9$LpFu!6?aQrqJn-Y=ZpRF-9)MX>RcpWlFhSMwhSBxSI+o3_BXq8iC(NY4?|g14%*StoI#oZ^oP#t(PC0n zM4uq3iMxZFXUO!=%g99;;3TR8+rZ%08(_^6W#?|5LrJaJg4;_e$QZ{&-a9~5nBvzL zQ6nV-6@}T}K%bpg`kgE> zD&~}*(FMYxDIhTV1yG8-N+1i28)N$Euz^w#3M9&SGw#dPdRXXEgq5f0b`3@} zBk-VDrPE)Pl;^laM;Za&yp#<*pvkeXrla7iA<=<_RfImYdA8=f8NGo3k_3r$m>}!< zx|oobpbVOqBh$$<=Bv?*mB07~Yk?;C?fIwa!2DL+K5Cwl!o+7XCe@_|Oyn217O6`1 z%2pTNRa67%ukMOI{3L9t5nl;edD2xNoKb=oV+|RKV#%yxWOZp&tXmW}r&qqFM;7a6!9TAu5_=Et{Mk-(c{v-z z%I6^b;q| zfvz#KGLMv+1hWRES9s*-vrwPiZ2E;B^wWoG6g>$wyKRP7{#*|`m9U@B-duH3gmX&B zC(xzO8~I$et799~>_BxB0VVnx_=90N*#2md_4BCC$094JIrqaLzR?;hjkT*!klBB? zQux8Tck&e#HcCqYGM!Qr?SNj=K8V;m`s;Wl3rDaitvjgS1V3Dj38*i*oMim)<374| zu;asnPthh4&b%|Kj&GJJc&u5jC)~0DkS{wNTqSWO?DX-sA2(CAldfbo6vPkkhoQ;3Q{ybFmb6zC`+hb~ui*(w+J;$g*vK=$0jA zlFG9mn`$H1wO$SkISlT0{T-mKK8woKjrDv{j+P0gDR}_vks2EL`U3@O@l)E+xA#Uv zv0&e&Mg0TkS3hERvtYHG4%D?KV6T3gCVlqS?#+VnhLe04YtVz@uhuMfRGmyxmHd4P zELlHyHgbvnliS$e#a0L0-_L(4C2UfT-Xkj6UsHur>Wc=8DwN@y-xLne-&Yp3WgC3- zay^XXfimXO`UxezqcuVnA|3WC(q3C7Za8bt6f+W-{4=GB*k}}FXFjpBmn0SSftZ9U z3PJgWz07K!L@}oedLA!U&ApZQBreY^dmX|_7o@HEZx-G1I@f-VPl4Jocp3fS>>Djc zUP;MqjthYKdu$^;l$-z7+yxKy!P%Sz^H>%cV-I1eLq=!R>R;7X$Sxm-O02Z>VQUBu z*VPfQ3XZClE&Q`h7&|PC+IfKKxP+?>8eF?{B zS?Pq5Fwsp(uXug`l+#611@%soa?27J1R_2AhL$;QL32^O|6fRys1<9=J`XlR3x;gZ z$b3ccQ=3!@tr)p|IYnu=7--w`Wy|lm2OiN)Ev-T>muB~KzT00v5lq#dpaXNOBF_T~ zd<@8!qWzLY6PdA3Hg|ac#pW8Pvh~%ZbboF$?D?Z^q292(yJmP6-SU0oB3=U#X<|Qi z@)yjjkWW>PLI(0DFw44#v>rnD^v!E~BU-l|>G=8dICquCJ zga++z3`}`g?G^VY0I6^f*Na>rdj&Sch&MEr{o2p~%D`^M=4#aS?&?&ldDmbz@v&7a z*Jbw+V8Oyr6#g-6`s)@kHdU|_h3~R5-4L-hN4A^z)0~YHi5j5t6&&E;)WCCUXgd&b zpjbA~=1$Lt^K4Q@DanvLr=K^`yNF4xe}% z86)86rpF&;TQ(95YPe49*xqckLx;I9@7{ap#6}o}liaqE(^)kCZC9uK4d5x{@%3x~ zVVtVt#0tH$KSw~hKk+DEDcfh}30?OkPENFNlAX43f&)ctjw{O(izvIOzuX1ySZ>d3 zHQ*=s5#THz{wLOouem+THjR*>FJFzr{;|+$vpC=tt2yOqj_X2kSrnB1i-^&bC<&N^ zLW_9F4!pMRAc72T1^UjOY*;3V&U4QH#`MOvkSQzx_Kq8Tl)|~kfy8&s#~9A)vWxYM1mzF5->As|uDJzP|a~XRj3=P7vWS zvnw$$zkX#8NelAdq&-a2Ozbgt-y>q+txm7kpxt11e)UHEGXo2Hn2B-!dMGzkq&q@;`AUib%e zAx}?|INw*2=58*{%c+A_tc<$aMRvL?5(oP?nnF9MDiYy@ln#5jhSBZcif^Ox$2zLt zn6@lqyV2^M1;5|_DRLgL8zbd5n@Y0ZUYFwXEN4c}S z0b;LY){IxFLdp9ntCC2y$b`v4&^ekio%2v^1L-BCXi(zD(B=pIS99zz0i%&FvfjvF zao9vT;Sn{C20Kfs0WY*@bv`spS&)nQ1_b54_WGjTV5|Wc-aq~PLs3xtAKssF1~{1{ zJN62+@3V=Y;|E$z-6O2aCEO-xCI$5qABQkT9~%Bdlw7_`voFpIqeq1^B1@{9bs_44 zt9{o@o*>6+3r5ZO{pi^DT(ya2`LebsRzb=x+03h0SJnLYZzv_)O}4X+$3`-2^GSo`_U|n9`-qQ{Qhy*(B{t-%F>eKuWnQ!;Gm6}-baA-0lovXvWP zdHl~}=gY;+3<%U12$h!WmLa9hTudkxh^nC>&YEX@)z)qj8OQwXqBSna&3h5;^ZTFAPp7hmpI^?FGb29iwQBx!HNC$;u9t@=xYn!Fc{o_1 zoZ4Q~6+^4`d;SFG^DjA3YxMQKtJ586p{vb`yP|(jjcn4xybe;`npHOx?R35b-ABO4<#@b` zMlOo9R#2(JUzTush3BV_%x#c&KvKGfoF1d;lk&Uu7H2LIQ`!EfbwommBg<`CY$>&;`kPed8_^al5}aO08-o#l7fAgfLlbA#xT zOMdx&E8&|Wl`T`)jnZ7!9-GV;h+tIfyLQbOQsempqb=OG0cYQczP-68=z6SZs_-9A z&aZ@fCJ9MzQW39R<W@dirw$%G2u>i=7A;X}tL}6{ZZQ;$DcTfp z>j5W%t9)4R$KMZmA$r0Xro+g8!Qg{2=#R z@Fy!&m5ebIKSZB0%v}6iK0M3#`_BFLer*L`@m3{^XMd=PJT~Kit!%*aOLs3-g2&3e z9xaf*YOBZnrq2b0mH}C1k!J=g^}iu_?-$&Iu70qztw>gPeA614wFeSKTT?r?jSsjO z7rdo&cP6m? zC;Jk(Iwk5DGncxwe&b?jENm8(ePfBP$41wa&HUL?Ww}h*6E|El2&k{G?)$|x7Q>wB zViyDu1GoMr;=Og%%@KOG%PVFSFW|kbYPdx%dsIJzm@N9>UE3 zg@VxG#kBo3bBt{MJAK03qbIRsigeYAzmqIZ8E?-=Wwttx>IZ8Kg`mAa^Czz0Ai(oL zxE1nPg#3k%f&Ts@DLzE}Lvgcw0mYOE;&LU5b3XA-1w~S}C}fc@UqqZyFe`WPv)>Mo zhHs|$^3Sbvo^=Kvq6nv#*3~Qj*pjsMm|TWC+PieSM(&Y*ct19(o77rHmBTOi3h7#V zC>$c)gML2hut82|ey9GB_3i_$aZnivj$77nT?Wa_%^-(KKn4;3vv)>?zql=Izgn^r zTJx%(>0AmE8DZOomw!ss$?_*S;q~T4XKI&l75`G;y(yrDqWi=d8s9Iva3?nx+7mQl z>2a5`;J$#{h+klhOV_AVcnJ;E*d}B}Swvz2w!rv!xE&I7g<=8UK?}d=kM?a(O+S&S z)`M-Gs!v2%Py)7pUvmjp*|4jDt|~`_ ztXjpYDlQ~oo|)uj1_M7~X=##Z44KUKYUO%-L2y_`mv{|r>&xpK>8Ck8!X=qzqqh96 zX_WzN<00L2x}%K`s!W-U1ZVaiZG>d1O13F()ilw`T*(fQEuwLOFYayhdo#!WA8wru z#9te}qHYsbNtmkGE}W$BrkqZ!XE2*|(JWqWA-7etm>0(Bd@vELj5x2W<8|=3egj8a z)gAP(06M;}pE_WTQtadd;_cJ-q_pWjiM))-ipG!CG{oppNjGRTiw0umw{ z6y50X95=p)Gw(U^IbX`*aR6_D54B``b2`>@K~y&B$({$R-6e?&>AO)1Nx39L!@i`2 z(TbrBi52t-phWz+St)D>0!Ok+>f?;@UXx7dfqE6cHKH|d2;#{PpkbV8G37% zj&B2w)E)FNzfu>0VX@NB#e9fz<_+M?*W?#ySgphwNMSpK)ZbxOR>y8fa zB#X*s<^u_xJ!-Oc8x{X+bN%wi+!Ly9qj=qGD|WbL*i@S8CL}BBFc>!UJ;wMWZLLAY zxWMbbFV&!y@KsYI4p@Obmj8dawwBN7C!_-iBRF}Bheyt4BndE}ci{SH90ljx*RKg+ zmINHb{eV91h!U!4wU;$roY`k-QMHIUCyf!4YmmoRqEWWMp%Ej7F@c-*D$!GAnXWGq`0h3Up`wPkf_)e;ezPq zh=x?`aAI9{B>=tg>O*oOiz-weelk5G8owVu1u}zShbqLcu_^SO8uZXy7s(Etdz#C$ z6CHrv)6vFZGPMUDUaN^YiudPwZHA)G>;@)>)c%GW{9{Xq=^@q#kg8(GewmT##@Hsh z<$}AJ%KPH`Xv_p-xANjg0WLv_{UMue|e0VhA7N?x+%X=hJx}UeNb(>LgtH0 z8c$Qg@qH<$h1Cjj-iE4^|I}lT5nN3+wL^V{kC44rYd<}~aouN~_uFRFx;B^XlK)29 z*@q9!(Mjc6SX*n`cv_YSVYNC?!0jmzgzRkg?jOykKOwY)sX1FktDE|>#NNMvJd5&F z%zg6ukDEKQxaNKif}%%&e<1vKfXvQ_krQW9a{xiWl2L*)%ihV0>lliQb#*2AJRl>^ zZkSYhC~9l(lXP&SLZ>?IK?Pl0ezEUOFd;;%Kjw~V2q|pr`N%t#A;jcYBRTY>x%zty z@t-z_{rA>$^sXDCgdQEcl$g;qIQRS*%vU0RUim$9NSN_X=q|em@3j0jm#cJ^Yp`|? zaEpFWo7JeUYwU&^VIEF?*I!FAq2!|8Bt{aSxHf;>_2qn1B2R^MB;P6i&062PPs)G( zho-ZDiKA;5@Z#=L+`YKFySuwfp^Lk_6sJ(!trRH~FYfN{Qrxvjxx;t!CnO|5!p`o@ zIp?+KDYRKwv~6*Q(av5(EWvj2FN-nhkQ&^2WMgJt?(NMNj8sPqG)6BZfC}ViPcXwb zEg!7&6@ewk<{!n_Fj0Qu}Ra|k>98V?cV$x%0`MN9v& z4zieJ#kg*V=Y+AXnm6WMfcw-BkUA0ov_V~@%x9yPdfm#Sfa+!G7Wr%$g<@u^_!5p} z=u#wn2GIlt+GDj ziSsYpI?a64z_7aPGONy%L#~wTbaG6OQQnk?%0}kmRo1HER>Q3F>Q;bkaRWuS&xe?Q z6jzHlkdde{cW))hBN;Yon8mZStXYp_q0J|`Wtey6JqLG5&m!0c@?9omiU^Mp>%5H) zrc0%1wEP~?T#2wu0bd%rjOu5)J3N+n);bIDf9gZ2AEnFA^rIw-RJTO86{W%*j$)6! z+K@ilES@E!>VDxOu2MR=jcu@^gF57c{>QFI*dx#3+_N*pJr$X;#aVkC-MT;EgYy0N z{R$GmD-7M`^#ZuV?{GvnV@}?`ZBvw52gfe#i;KrlUt@#~C&gQ^LtJ6$adu=WVyI%Y zqFJrs&GR|(uiL(%J-G-zVe*`n8sQ?NPDhRl)*OBA)_Z&MTW$AJLE}*@L)cq+<=}Oc zp&hP;6!rCt5+Y@xRPPFwU?OS?g_^+oiP~#7`Qhr2O-XkjO3FlRnJ9$qW$!PSP$LJh z&5Y%VkT$MAtLrK~TR-)EZ=s7LischiSC8mzuckK9^h6k|!$_08?{i~Bnxs%OT+bQl z5U>axEUNC)CX~*ln)>!3#gXkNM|R4;d^<#VcWq@)s!Gy z-X9`L2_Fevccq(d0BXnX`zydw5ex>fCD7sRk%kN1VW9&%{|Hs&Hg%2aC!C$tc|K^s z;>Le{Jj&n1S6P?raUqTb`xAH5*iRyX!t^CH2kyw0T$q5UrqXdv@$b4U4SfZfA(E2= zDnncsI|+HXJkA!;=@=S!GwE@``iXZLzXplBddu&|H-&zAs0q4lQic+Ax4-T=?I62i zAOWIAH@(jh7wFtOU%cwkloHnCF@DtSY&|QkOyo2~lt3bB|+PGWRw;FS%-{^}XEvw_l&-9w+3uS*I z1@2{O-?}qyZ@!mdZ75`2Lc0Zkmieq-&bczxE{8+wN-9vW|AhIZ%qvU z8jAx$TwzfD=w)pek>1NV6e(r;;}c#mAzeO&Frcos1R4BW2u}E_eU)O6+ZTp_<+B=2 zHMgl=5lMBTHR_63bo)T3+!7RVND>xQoZJ{g73NUVQRNRE1j^6lt33z++41osJG?|X z_ysFzs}86N=b-)J)6B#rGV@H6eW(k$>kZu9O%NFXIOqJ}%=0J0fuoR#h;(JpRVM%wY@J=DFckzH9?4 z`h0PhVWdZ>8Aai&Q7E3Ttx~Z0nM1vKZGJ~<2e>I=qOfLYBmXB4%9Gp0U&o6Iy%?>?*S7=i3hC;;cqcG1aNz* zXT{T_UZ(5=rUFFrNs4iCIK`T^j0_3Zsp4$;5aO)i_G7B3Jfs-lNE&_-2gUTJ>6Q7i zAJ~Ccj%SUlPR*{R2`y!o7>^i`q^e)L952EjZQa8Fg>Rte6s&<@1eaC{e(7YoMEFu& z;%a4*HOgR5t|Q8lE6ax{>T?3AanL8qEi};5UXFT*`Aw z&K1p)0yaEEUU-<>PT8{q|NTu=Uoa{HbxnSQdK*Z(EynJ#n^z)NgLjLdH=WwLoQcHU zNuSIZTODjZek5<+n+gDbiHpNX_Ba#{u@Dn#5LlwW_;j1`?i{Dhal_mQeDi;wxLI{- zV*&tizJ~*ZpZgqB;H#A1Y`IDU8wfz)E~i)LlVYR9t4E*kbcbC4VK?B}aYGDG4*v7a zW(R;!L0KRJAr|*L0vk|7As=swit<%MDxyiRRk9qo#IpN(d^Jvh@_~;W8Hgyd4I;(5 z-4K@kH`0%wqawwQv3xI3N!8gK<&y}{C6M{S{^V)|H(C+x1;h|Hv%YBmeBAA9y6Np1 z`rNG?m?ugGItTq!d_Y+I{vcbnjj3{`TR3x8q#unggXzquc8aKqz$KD}(QoOP_DvhV z9h?~c`PIGm;5@NYdbruiIlue>Ityyu?D*c&t}x$*9$O;ZB#`1tjTZa|zS15d6`j>{ ze&a_MMsLt79GjnuJ<007jwRP!F6UhtF?BopMlGZM?~L?G)0VRVkI9_c_}GTZTXXf; zl^D*r1{@4(S@u_{+(bX8EX(FTYS91u6i=60K~)B+Ta`FDbs~l=nbpSp`ep{?cCyHk zbun8Vbm+;_7c-roq**u@7PV^fr1U*Y%_uD@!ph9R8VhkHQ(w}v*LcK-IS+!X{Npx@ z%IE}^GRqu=>pH`CpA+wXdbf`MxMpzPV|5~qcOcgRo3287EGTQw_h8hrbK_BBxzg}P zV-FU8wpKj)2=qjcseFJ00f?~og9H%EDEdx9(zDPmvc%@EMxG(|6(}k$?&{LC2GKu5M{U9Ku!FUCd~c=8Qf4B_cgB;K6}nG zb8Zx?t3&wLX8{eQFmom|wTe;@tnBD_wQQGsMhHnZ$$?-**;F37CorL5UqM(5^g4CWlJuAOfn!c;&hWtF(a*hvQr<1YpmTY&6O0*2``fR|A5qU&x zQ6s&E#cOO9^|O)X+TZbjsoNgbcUKsAD;PTdGceHp{xH&|k2ddYB>4C_P4p-mI#2pG z{|kZY`WxXLnI;cYmhJN2t^;7;5aV~>S=PMwOBQSZB#_8`PVK$)?6K+ZDM}FA9pwi4 zfz0KjYwSrPp=+ zvu7`XYT>b~zlhJ{(_SsF9Rw~>c%aAB+nct4=_=7G3b@u!D-I2~OhCP}wiRH=&Cx}A zuTmiW0L(PbmZy8p@J-Pv>naw^!nx2O(P6W5OVAvM!mAh3dB6w}KsiSCdO!>AZhmqG zEAMaHQ%iQ^=weENxND3K-#*vDfSe+RczE%qhK{`gK$rm-L3fzmS!>vw{9KE*RdS<* zTqv<6#_fD?qN2nqCFoJNS+4Qo)Kr^;9Ro=B3ohd1r3V+1TthaDm8cnsRL?pa^c>b5+eRAb=R z#JCF6awXK+)YXUkMs?{to)M&nRz$00SGqPX4V&c5U{#|v^}BJ7Ok4TP|6cDmpZ*-Z zT)QFH*2adl!mnQ93EiB$p5C85ZkpA>;~47a8sxNixz}rGu!e`{;|`ATuIVQMgJva~rGrN_5rCsGG>48WG zwzE)XqDBKOlBaHP-19P#;nR@$X^Rnr38_Z@*teuw4E^4zjYp|l09#IhEFlQo?!4P! zSjmf%0vCb+a{oO9S+eosnGmvfIAs@%UAhBL6W4>^>SMvPly3upDn?-k7uiw2JxH2^ ze@ung1N;K`UiA1~GI+=_;C`oTT5~}Hs4u7>RiqkP5OC;I5Y2^klXnH7Y$h0Jl5nrj zn(>VjWS-^^6FG@TxgL-`aUmED28Rv#f>*Em9#Z>|_PEkJF3aU)nsK*y(b=U9uTxI6 zI6oZnFOV6ni!`bbDFxhrf^PbxkQa@!6ZA8|tO;#GkN9_gjWlqp9$q3G;y~@3q=^S{ zL}V*{LCMt;k-4Src-D^E^bd!nH&E5;o7UqVz+=a)EiVS|KVve(Ij!VaNCuyOm@I55 z!DARZR$clG>ZKRZ&3JJN+by#@A8jbwehv`d*E4z4PsGo!%EeC@XB%3j$LjfmsCVZ3 z**Sj;a@}XF9_H$p&jw+B1P@l0K53Xgy1L2=fi>RJX)BvD#(WPEHC27+D@?~J2#f>= zG$(9>l!f>crj_QTXe`o(GUwDyM*5$SesH`0ds&zG91%3Id{DgTyQlTI&AM616m%*POiL0xv*Cx-w7g#-k88jAv>L2qy zB>EiS$8%3a)rH?XxeIM7YX9G+yl#W`4`zg^xL+QQxU}L~z6Ad*KQ~5Rp zS2f|mt)3JJpXoqC2B#ia8}cDXMZ58FBd2`&T1metlZNh$PP?-mhw(~%j#J9%n z$XD&>f}p%n1GAXhz!l$mg!N+KK`V`X3tpG&1>fe5*D~euSJ@_5?FP3wF&edE1Hgd+ zfD(396Znd>;M4A(a$_|zvkbY#xs~a=+0XSbDLPT_e61$1d+mzW*Y*4J;hn%cADqZ# zh};V(&(#5hawrf$?xFU($=d7#c&||$lY&@q#BS)0pZ~cZ!6{)yrcKYV%-^~XXq=nq z(k$bp;8!`KvzemjTPGTwpSqJSetC>n8}3;J^L}G4Vx25b7R;~YSQ=>4JG|yt#J8Fq zCbmN}xiRwpG(&IFx8FV!FsG z%&N`Gu5Zeuj@vfA-iO*mgD)x=H~dHc0QD?4pkbdsXb3zuZzLSx)fK4loR3squS?%$!4V@7OG6l&i-No&pn`6B&E>PwsGIsPxsUGwo2rO1O!BR$P1 zN50(TOWiD`#4WIV%N`6~L=gn-y3s^&$(V5(3%b(Df;vpc*a?&f+fl_1^^?!e*KXx+ z8zli*qB}kLm14<3>hfYwml_&vI2TT*ZG z&2GQ0_EJ>L0p@Ts5Qnk4?8!3fH^7sM{KbkR*xC~C<=Ud1tmz&PbQ*M$FyzfPdmFyF z?0bmZ>ZCypKLKYytV%@@!!-p23RImUJ3rUQI`53Tveou?|0;{`!-s1q4zh&00=iy{ zbQyO5Bg!enzf|=G6VkxA%d>g#r}$S-QqbVSNb%Rm(ZE`k0Pt}@^V0;+<)JI-4(SDB zPg{M!{CA~oWr4FW@q(cDOu)PLz;Lmjr{f9*Snuwd&s$F}0b$q<;6WOE&r#G_u!KHs zz1;SG(}wgZt#bIsLw%IVNhC@AE8aAbJ4kZg2X%|a@cYgh9|9Vh=t{S7W%0|jeVQB7 zD=12I-@b&8vkn)RhuSCT=g%y!PD>VpFf9@J{jkb3_-t3rk7hH?u%PN*HF~*>)vo#= zj9mFWy-cokDs3t&bEIE#KN$ww3ATUrG8sPP_T{D1ArC`J+;pY#AxgM*^|$HqdW4B; zOjKtz_2`<9L}H*44zT&B^;}rX9LD)G9;fPRXz@Cyh8n@ae`-5x^xsGi=HfqAdb(}Z z$J>}rqcCGrN8gbx9>_GPpZkbSzXbSB^eqzzGEwcjMsMDG@y(GyYshB4xNGeaIYt4JC6lTP?zOFagks*WSVp1WO`Xm62vBn?XTnPV-c-0} zF+;Vr*3-ug355xwYt5ioJw|3>It?gKl@`?pmHL?-5Yttd{=&9RZi3Elz;m()hSgn^ zyLrM#E7$CH)3#1G^5_PX#qTZmy8z&MeJda%UI=8D4l07^W(#zUlCj7g6qcigm-{&6 zLN8iGxur!ZnIzeXyngAbGHm`Fd7S0KO?^BO`p;b#DW^Vu@+h!4wFh8P)B$2g#T@ze zcEGGe44~nA0T?D~TcAerwgv3ox9IU%y);Dw{^`tW`KF|wAJxKX%xn0@2R`kD!RD6^ zi@RQ=7BU)ER1u2Z7Efd>yv|A}>fZ3XMHVvwSJz9CG=#?kTe%H$%ujrw2}9;uF2h>bGum5sW+KQ`T*b^D}b>_#%G5<$aYn3 zrQCcrp22@@RLR*x{KS(*Ja(v0G>B z4b$o8COnbJPS}56!28xU;M0_3Yz~+m64iHlkXZWo4zfcX8<%0j#Ub87?*V^DP0YJP zVB9Y*HcxkMdz%KLH&-A8zBoZ!ApcN;S@XN{>Z|KBN|@*Z`ayj5|DY0Z!cPi6GoteC zp=Sf#+g>}-v_M&k8Ss}h{Q9*W$1%}`7WgQE4E)(U%}Bo|^O=FM?3|M3dy~_y91|-i zJDc+tpWsDBifPcCfKAZZzf}~HtUU*nK+ft_x%%Tf+Z*T1a$F%VehR+D&>te8EZ8GTp^l8AoQXfGJJOkJ6J)v2#ddBk$yZ3 z(>(3W$3l#tkdj6ufJcnr)kY5q7NAHP4X!52fR-wr#~8a&<;g_I^4eAICbv%xr~xza z>Y%N7xExNM($xW{IDxs<|>ix+1oq)VNcDT`& ztB)`Az-1k|An`L8BOJ4R0CIQsg3El#KS!u>*#PJwhuk0TO>txwYjw;{ndz8KEtrAN z&%radhplDI|B6JqY%n_~gmdRe4JNQcXp6P(SI(w#Bx#*K`j zs){S|juh3^t~G+#ZoO>t2aE0bu~-zTqb9Cjwyzuv9X_>ox0vBQWC|TQyaVDM0TI;t z$tJ4E3wUK=c(%Z}5@MW*U&89A6#mGXxUB$t*;IW4F5H}v-KVZoB2~Lcp9jWT=Z6P7 zljWqqNFSHH+(6c@DR?HNpUdLt;^B8G0Yn3}cWiM+VwpjpR_0Aal*QX0$jBfwJ{ZJb z#?>H4{RlQZo5VWF@5#2q;1_po47ht1P;xar-N+}XAY|$t_vY63mhgb=GO~vUbh-e#)1L(c)J0FCGu)x-Ss}lW!nMn)_EE3))U-8VPGuW>W=P)aqt0r zDg#EmfEU%u%8Jj62@L=`6MZ>S3G7jmAr7yf;74lO@cEdTmF0ZdO;2sQ{L>1slwkuz zW!S58J9^C8+5zd zwtEU8EelHE$-1SBD;f-6T_>Y=J`IZ00>pYJ@H61m8Uz^W;dy6ATVpw#od#e_5U{Bg zR*4#2@EedS@K$$Cyz*}7D?ezaz_ojblNfb~7mcbOqhjW)Dn+v;=v*B=5I_{`wNcsR z55kmfg{Z4h_9u0HeFI0*E{otRh%!LlnOrYH zf_NlYW9{@HMsVp$x*UVu*&uca;Si+tL>BgcS4}v5r{&hjNGhyz9S3mSbps#7 zeA#R5L{^sD-8V~|dfw(Oxf@YknuKL`JwJ5(Y4Gxpw3EB;>3EXXo1@2cKmt)g(`pTAjEX44TT`+tCE{gTEHT$={zC`PB6Ci#t1O`QxtkR9Z08z#Q zpf%Ohb8wPRWxzag0DIb1$(5{p#bt9!$+Scugq5S22XawLAPEEC`Uv^UC5SV8yxx^N8C({w3M`o5-n!U!Xo zyVXNpHnSdRzlXNXen8lj@Xl}BcWH@Ky$5ja$P>{Tl^a5_##J6ucQ(~3P{>MOCR0OG z*gI5W<;fw8^Cxu#j@zc5@lFqU@{J#1h1fV@7J(izTrci`PIUuTcCmbxY6f^6vU>|z zBVo&Ia!zHHtXk6dBmTlw>QUv7FHm03*4_&Nk*23#{1Y_O#QR6U90<8{aR-fP_VLuhA zm7BLtpOMjYb#tk1BAfA-44aCle-MujfO;yOWd(4~f`Fve3owR3fB>)bgEN3Mas*RY zoA~qR=!Q}_R|P#O%R&9KOtpr_ivt1+H~eZ@V&yG0XQn9+lV~zmWw@uh4bu&sFa99;e2?l zvI2OwgZ}Z}wLXBmbLvloR~JmT1)hIx{rRA6K3RY|@mF7Ah7ASu7lnwk8XxY9gL2J>oBD+1Ujx!3D~8VfIA9~5 zqekeUcQz!@buYU~1SixIcVb-Tth$MTTwJ3BNqS(b)zH~9v79b)*+Bi8eMSSTLx7vmbf9!tSQC2VR!R^)7=7U#| zt9JO3e{Bk<30_OR(iezMCz*qiJ&@I&H-%$v7hmM9g)Y8=1LsUnu5*MglrsK6tqbb1 zqCUagQ6!kDS*fpwvHE|#02JOViN~xnHq_0dCv)^2Rdx9NY#r^uhg(&pw9KxY47r92 ze%d#)B7QPhh%f>t4?dY+<~SrdUM2!x4#hGj`GT4H9JaRC<=CoV;Ag)h-QdESO%U(@w{AE|C(5w;s8I8a)i7}lH-PaAh z&_xqw%)DVtWQM_t4zS;F(L5GPgGcLCpZ?Y=@speYxsJPDafzbH2x+wOAK&`mmIZxc z)hoh?J(eJJjNEZH0-hZ~T>y)1wd@lUp{IzIX13p#q7a1=Bd4;I%Hiq^c765aSr?)- z51-Gf&-&b!eD+Xfb{kHe%oTk9&V&X0$4S{7G3{dj_2tQ}ADHIQVeTNpA#!GLYy zGu{it3Iz-74x(ILc@%WkE(5w-X~LI2pt8?qHG-WD2({iDxV!lxt@PeQ7P7D|K*Fi> z-+WN8J*`m8$MW_QPjqT>x|tqI#@V8uu;q6iu5I+m~F8S6* z*EkH~IAZ8BLe)twX@w)3Yig&Xe}%;SiDn_Wk1p1fke_u65qoBp%3s;)EJ02e2|q$! zsD%Bpc2|Mk(jIEK5sXe0Z$X~rnmEoUXY;*6bt#@~^rvotel+-|O_=64&UTY4H7aq> zRTqz;;F}#{HQ;-)9?RrH`d|o#05m`0Fi5y_Ej>UNU{Y5e>R|nrrQ;Gl(pSnY>(gRM zM^QT>1x6=@3AL>*2U(U6*^}q(~ z;LQ5kYv$7`iREF|h}pw#`sRixtZep>WL#(MfruPR=8n4Ty=vL6yi2PVkVV3=0+4V(^aWoG9-4uruK?5im0MC{lMB)9nvY3c`{_G*f)I-ZlKFD3xRyFc*X zL152~U^eiP5pF`H40t+rHOiru70K%97&Su3noLZrM7>6Jkz1&;rE#2AL0KjtqndDz z*)L!Ej$QaiYbf)Toc{%|2U9gBop9Pbuek0cqw{0;R9eD`b#a&Z^4{f(LkeT55 zgDo8h)6JYDOUT`M%U5c4)UFohzxHyt73h(v!Ae2xU&FTbRc40y5I%r4Li0G_j)g}& zq9FJM){S869b1hdPK8ThnnaqQo7%Bj z2R2O|)cgek6pTT(2|y6ox|kqv&iis#6W9+B{FZk)PJ?U;j2E0Z#@u2&=R1M;5(7i3 zLbzlzM_oZM9amsqnQXD1evghmBj& z=S|ei#rxe(f5a_V-E#Izd)gy)cNgK+GL_qd+DxES?+VOIIf6i*(3K8{{H|`+>$*`7;WmN?ORz&ZbeLxT3LCzbzzD?|x;$ZqlQ#csld+xCgY_2Ws^?F)U$)ckyS zbv3i*cP-xdP})2{%$%GYJV2wPudjdkSToUAb_U_G#1OlCZ`Xa>V$^({(05f2GduR6p}j;gic*Rfd&H_B3|%X zmeH^o9nkHbcpKXjrrQ&SBQIGP>L5t|PH3>0JyH5n0b^D!^}ERSH$n7CEO^8N6gB&4 zU^_pQU?GmqyGo(EgqbveOPomIasJkrTM09cjhC5;mB%`~(TS0l5@tPsOMZ<$dA9_+ zNAwu;`yVp_NYC*YRx9bCkX|yJWueUI=Znpg1gLYP;LVpmJiI52g;B^vyy)-bPft%C zk7cV5M1Ggu?+442Gq-oJ$u-4P%u^CuFnGlg5(Uy;QOLSR7jt<(L1nBJEKKaV%t&2)QUTT z)9Mt5`r`odY$bGsLd{(Zg>zl0?aS|KliQMo|K?3asX&(tLaa{t`4FRx zN9JQb`V1vBgjkEID26tnp&7s&8$<^|ZV35|YiuZ=4;e?OOkrKg@!d9N6EsKoDH(hm>_ripn&G*Usvc^DO!+`slv`B0UddQzg+q_dNm~?aJ52f6~+d> zt@aiS__NiQw*W$;;T7*@J8o5}YtI^p`5Zs8qhf4XxP{VXD_PX5I5mUf1lu+ES3 zCLLQXgs zkooNHNZA-*KEQ;#xebNQpHie|=0Ut1=xlR7X-Inn4o90t~EnMXGeB0B>k3+XDEl*9q;a>81%&&yk5^L?nFKY3`t$fK_cN-p;nCJg=<* znlqRD9-U>m9kTqZ$o+7&&5;Y%&B!Y8*6Vc>>+X4X&7jE#58OKV5U|<5Tczbt>g&_$ zq_f%j@E&cz$;%;cuH{4y3JU~e}C zAJ$x>q>FfgZ_|K0a}AiDd7s7wiNEWR!vHt7`RYQbsH+J(WJV#XC1CS@&x&ln&vpWn zU$w3W%7?A-?;QYu>e!hA*DG$*$9d`MzmDY*HDc8Q{|X;(XKs36n~^9 ze)fs^wfvX?GYL8_5#pn=Av=dtp+`Jgv@K*UomX`Dt}GR!Z6@S;dh1Jc?Z8E<>FS-> zLBJH}Jc1vlb8;w~VDWhu_5j~cnpU1UGyN`!8>Fk}Y3PCbaq(wk)sR|9+ z_kMQe*e<}wNkNi8i5bm{x;2p_P}h0~{mE;e<`hXoCL5=1_wn&7L3#R*B0H@w>TO@Y zPzw~|P0h#%ifIMgWyas==wpU1mI)-p=9PzT?Y616k(no8=YX-bv>gfCf0gtcAX+pe zd>tIU^F8ve+v1>kkkU%)kLd=D_e$WTNDF*BONDy$%qWG>`VI;p6`M5==3>fh?;t}* z(rKPUJ#TZcn#0(v=;SVNPbrWe%EFWt0B@jfBaS`b^b`-dd%s< z(#E#bh{7ZQA4XZrG&;A2B!LUbOL4ob_h9F3`vRHB1ygzxB zmiq=?CAbf3FN0R`2$~vGbc`a`fR{q;xF~$?4f}`*UMqJq0qQ|J{CK*nD=OXIw$_V~ z_M@5Dz8wjN*wGKKv9Ln+j^U)zlEEn=v880%6N<~F3;HjiM(yzT2kVE%@R9VQ7^o4I z`O-t71bW|s>~>7?yU*XUREDH-j*U-ONX1h4A+l%N8H}H7NPLiA9U3Z(fBQ^a5a+H2 zKYc!4@=UcwY?PzZC@nC(T!vsxvy6qlKnCGyMD?KaOgF~_A3;@G?2==h4W9QjX!UoE zh9$=VvQD7ln6I(@9+eao7efO=%)#y6$T|Q`S7oF?cMe#F*}ShU4S`3a+@L@4B%z+B z_(0Lh+M31=^e?Th@u*mGW{lKsPvTYo-D2gRyE9!0I<{3a^1S6-kJkZA62Oydl3!j9 z|6cmIJ(^9*$vIPX1h!D2_jB2m7tuH4h+{Dvfq1H^w<>AG zFydEjbrw(JsBxn;Xi=5K$VO$fUhU-LAv6zd0#~HYi33Cu)5J_eMhr|4>U;~>$wH!4 zRj;MAHp0t&+_zM6y%8*D-VhNboipyWjNo3%c!SD_x;lIPgzei(e1Zy#_HGe=&>Izv za3zf>X=YP)JLxJAW*&Mn;DRB1k!oNQQ}WozLU~vhHP7#KIj-buHs@eOS`=X{QYgCDb$F{eh!$iy59us!+3tG$A*=uL+Pe% z1}tTGB;t5@>4ldtw#d0b=Wh9Oqu4Yp){u^v+Ukg2Lhv8H?%X>QPF**kYj@6&j0W(> zs4H~;d!>GK)}hbj8SV}`Z?PLxe4niKAX45Mh}Xj|w?&Lg4AwPEZ4lorrIbfPx9a*+ z*yS@M0sqr+_m&aIf@N$Vip4S=CdnT6&-q3-o@=%UD1*}uQ;?+f>-ER{qT#m) zVkX7XQqXWPy9IW}Wg(XUxf+cC(QeQ0xtm|NpdVI8hpj1VNQ>Jywn1>pAMk@hcuVb6 zF%jUtSQe0}8bXGv;Zz<^=cf+rzve}7W$5q0zi~*vj&Ox)0Fd}_k|2k5wofb#7)?PU zh)P~&d=;y@_$cFmvz(IPOQBdOEFC?)SewTgtLq=d)72(4AUpRT)c4`}eGfWa`GwR; z!Yug^K_a+JiUTyye0_w;bw(^Nsxuy_{S~gg{qASy=T~-~& zuU)GogOnoU7vu07R>)1y6~~Jv^q^*|tsa%$9&eiXx2}_dyY3ShLE)F0ReHF~3)X(h zyLomLm+K4%O8%d4L)4h;W1Y-ivg{J+Q@?_K6IVm?vCSC@(P(szeL=Mk%7f@eM~_Vn zj7P*fX+poh9z7B>ynGc56NhNfwdekT;876JIx41xBg%EewX=&4`)BN1=+SK1?nzDO z!1G0C!om-OT|j`|XIGZvamwqoLe>&Q0yPA7gesMa$Fm3v@o}Rwj*q9oG%bZGvBzoE zJ{SM$_QNOs5uN?j7Eg}w`|ln7+Ix=LPs{A@Dfy)~PnP$QTx4Q?Y{1<9-Eah}eMTMq ztlu3c*4PeO_7VijZ;07c$j)TF;Gdjzwx6$(|59|U0H^v0?;Ml;M4AR+N`z31C^7nT z`|3!}eD`VwTI!l4ijj_aU!II((h)Z+pVs(xg&atgvUG6FhtgZFv87_-Q?qNQxMM~uZ zS4h5YcjXMwtk-l5WNC%!Z{sByL|K8Eln$WaspSx+YKR`Zy;yJI^q4QCtlOI${mdjwAu_>)qlmprQlVUa+tz1YtlBvkUOw zBp_-;>Qpqb)nkzB+b}DG;3+H+jXH?+k;3TG0oIPS&M>_hN;5~uU|n=BA_Xw zs63Gmm)Xg|e0IcL0D<708M9Pp0SDR|DSY30!^zvosYIvi=7Dj5L>qA(QY+8ybrN* z2WVu2$j&Q!9F_6`O4K4H;1S7uD@GP`Q4AhBq@S{ zhE>zKa<%u!?GiYRkWo_ZE;+-)DS)F#nET>}51_quw^5y)5md$<(hj6!+}a1p_;7+u zd{vuJR2iPuJvX|6_cHcfF#;q?4%b>-ONcwEu=#-3 zjjup5h}ngiZXaN#wZx{eX{82;XjxF#%Oo^1s-AWUTQE5D@fb8E!bxt)Tv*3Zse8hp zs>&xWWMa(^+00S6&*=uZj2yPEvXo_d`NcM9zka^PJ*YTttv@QWKohz}_c&V#w-J8D z=Fq{-@3jjEbKA;>6~1+{C7U%}L!j7TuqeJMIAjohp^n(^#HFMy-ySkKu$?dx9nCW2@v8wcO4iPk57G@e4 zcJIjpJW-EUosU>n3r!J_l@WE-G|&hmD!VBA7_*A{j><7M zTbdGrXbH-4v3RjLtPcat^-Oc4`Z{n;S^onspi_Ns;nD_1YJj(@$oJvAc`sQZyW9qt z!~+bWsP9`mkas9-ZpQmyM&s9OsH{88^|4>%C7&n=z2RDxMhHW8Xg!o>G%oZRCE zL#-)9+7I6mzi7qrZMjN4Wqu;atNiQlh8KVc8K?L}(tMLHtJ{2D0MiUGr>5&|RQ!NC z^5IO$=;p~wa0s-_rB2iaVk|Wkm#BtaJAy{3>Ze$4b0zBSPe$%k9O}Qu*nGP*!*w`j z$ocil3CM{s#qz&Ma%s{jzytpo$v_Jjy#HOI zD^x+b5%9?9@(()=5^r6>jy5o8RNiY??~m(}vA>0US&i0rT;YF@7Jk4QcDT+M^uxDE z_a|4J*u}Zj@99p9v5=x5M+vk;R&f$r2;$Ol@Kr-79_I<@>v^2{N+tzzwmbU!Sy}-p z-gLR9WO!YN!4#m{NUSzGMq8WWB|lR^g4D>VRAGKeiE!_gVgXa4%vVCo@{&%ISdibSjp5tR`GUww0jyhG z1}YiWf)x?~;UdbyePbh|{fKX;yo?RWNFmb_Q9(m2zK-U_e)KQ~3*GF+KFoG&4H0~N zOJIW28W^5pLw)G&Y-{YJERY5%Y=_Ym@cKk86!3IZ#%4D|psrm|ttO-W??s75~+>z)neJAZdABXk=5i;LevhA4x#s7spkm4{sgbKp#mCoGJZ7XHPzNVUBa=H zS=65y=s9;EqUhXOvQpqRz1PFpoYr{PfJ3hBVl^=!AB+HE9Sa~WZ|l78lKe6?XDOpU z1O>nQe>8n%Sd?AY_R!ra-Q6KWcS<+X-QC^YCEY0vBHbw7~)=3nM3Ji;*?l;LMKilCDpLji-cO`58 z{K_=B_|1UtfMot}ns>g@64PsFD4KZK$MPCW=wSjX8$Ttllb}zQxL7h89pWJV^zXlT z&$HjAz$01d_2&aps^`Aj>!1>HfPm9!RF*t20yq`2z*f+Bc$2VZeY)?xJRBhTF$7R$ zif+53c;c8TEekTV;19FS|KkEE#!C$eBRhPem#0ru674K?PtUPsRu@uOs<}hv2HgAN;$mdT2Af>1s2PckbX|!zbXv zG=W@~FILGPg0`ysPl}f}tz~+3V&5;;n0_>(b_L2nU zu0^&#HNfN0MYOa zW(mU&kFfdI=gmn5F&n=r5z8otq+o<9oV4aJWN!OHQCQ5Dj|QDx5WcM#$1(eTr0^IZ zd^$^)X{<0F71JBjvhZ@4b>q&HVTSo6E>Ber~7JR74-*yu2#%DLE{x(ufpvs#^# znqSzFs5U~==GpOZYf_r<|FpI~qYZDYj}lkS^=FPocHyYZpO%DDbE3_nOXEkH=8)8% zyiO4ejUTI#LpE;=ikri^@LI_xvzO8wO2muDgCL7!WxqoF0vJc;|& z+YT0rVFbqG-$0B*FjC5}wZ1xH_mGFt)7 zg6T$=CkN_Y_9zSREP&6e@Wr!q**p#9%C4CXR0LLO^+z{25OAfThR!!Kq0xBV@=p`8AzbtTBNWU4*e3?sJ^zjD|e#7aJ!uBs)Mw}js zKoTp}_}3$1B78*Vo(q}d4)dJHAVwwtFKgiF#&jSA3Zh#JdV93yS>nmfg-EaY$3jw@y<5jCd32STPsqI>r4IJy>kluxCo8=#f!Je#Rpd@bhpIbUOM)y(obGs zsLkP+Y_oEDo3Ud7@$$_Cs#9ywXQ}$t^1f9d1Jh1+%XhejhqwKbX?0%So~PXW_PjKq4!g2pmBRo-=6YIQ?rFXVbQBWoDM!gF^$z8IV%jfTRuh1y+7Ig zlNQ5{`ucow3hHlr5|GJkp>VdKH{0p&`uK~DZh(0VplX1_sjba?DV(O3H1N-sS)|Kg z2Gu(7WVgixHpGwE{&$@?FgLjXZn6+p*{{YZrcM|6+3|5q^JhN!&?gZ{ywqZb!KgJK zE5JITANC@7Y$uykx9r$TD(ok;O0OgKHJ*FL#PfrYS(Vo4rk4{aQc7TCQ5LmzFsqAL z=S0*rDf3N>vSwit=j6shm~wRcFA){YKAu|D&T$2V)C{qJ`^+^Ojf7tSFfc}n>fmPm zn=e-Oki{J84~MX=am#Wa-i8!H4b5HosG1+Wp`_iF+A9G)P0FygaWWaX<^G!TGB+Ng zuZH(iEcsX&{w2@7AOg}F>^&j*^Kvf`@X_>u#Nz_f>?jbQ;yR4R2U!-32ll$}k&Xk> z?Qr@+pWO%gR_s<6Bwze%4Gc^b<@vM)`F~$z2XlqAnlY$J2Bf3_LE3Q0X;xFG7)aW( zfj-^{M_A#+WC_JW1BKiFKSvYmisqR3#Bjz|-P{Un+GfYyp;bEiZF{bRvXhLkHlI6# zA;sU%Oye@iWQmaTTl7WD&zPT|zgnk}3<8|7kn2bW>3s0xYGHgL&!b~KoF^nGZL?Gm z*v^7utbz8Q7&R#n83lk-7r?iVf5~l#h|eh@o~;WJ_>f7b(0Kj#?cy0oVE?!sY4a;}?;$yF^5-3EMsON z=X{iD0USo2O-HYYa@7`|fK@NARebs@WuuLM!qC)11cd0?usIJc;H?esD8Zj8nL84I zIPQSz|46Tk@A7$r$%A|a$?XMp7a=4CZk~^CGF6lLYozICx_pPRVvC1R7uZ~tP&>Wj z4Lai9o7(NKQ+8(0CE&kjJ_FDqIh9MAtEb2meN5g`KrzPVIdw6fXa@C@m&qhb6bN`; z0cg!0#MR!^l(O$(7iD0UPum;xIV#?v@dNA^(Yx$qh;tN#SPZNj2a`wzuK=?PNB|-* z5^H?UiZE@ zmfy;ub_>4Zn6Qs+vnVMJ*QR0)#~k8O?6v1UXJnUTdh z*)=T4wb#-N;H0zghE8z95Z&4Rf{b>EG3ak#pxkh$31zu>6auezBRs%LNu3j|WwAzvTw={h;F;j=>i^@ zd*$Rdj-x(Fgp?tsGDue`mSnijsl?j?LC^LWq*3Hs&PZj({Xv8rCLoCCiNl{(q{zs~ z2jB%DA}mPj^v!x!2FRoVl;BA~Yh0>QBmzF;5hd%aKzqv$<_>y2XQ~T0!XEf|{R8F3 zb$ry*wVWah7@z39G_VfnJj3q^61JyuZ{V1y0AUpK)@hzXhAPRdT6T}q(f zm+w=slX;SC6|ohlPZkl)BIG=F6{7SF`dF2Sh|pV(s~r4iQf??_2&W(8#|)^(@@AJy zXNnsDKa~?}g)OYMRaYd=WOBs5lTdKO;@^hDExPyV-m_1{-dIe9#ff=7ZRF9$qugP> z7H*_~FA7oRYfX?b>r&q~;X`->vNgDRJUW;?M~w(D7B}fGRu_g_w~(Y%uMkH43*TC$ zUWGnr3YGdEh`a(7{2fO3x5JtY50Nx**?Jg`^KAv}y*L6F(gR@OM`~RrbmJogz>O|R zCMmMQHPJdGzBZCj_2Z?bkav?S7ZL1TLg@KI3Jxm6q++ zzfDXH&nAd8ZZh9aBJy70ca0^qR?G48)pgC3T!i|7t5HG;2a!fcL=vv!Og?|L*D6;l zSt}vZ;?R@rhU*P2nk7_%B{VH9O*$@H#m%^x0r5O-77dBbd=ir(j)h+@Og$3L^hW9%D3*B|BAT8r_a3|4jPuzl<~ObDEYhYN zjRLwcSYnxm8Rp7Q)xsWp_LjKP2M{F%Ts7ILVSi1+^^mRN2x_4$LHDdmS^qtdJ3^<3 zmbbZqv!8QslWsIee*M+cI_|wSNQ8-NoKo(Y3yO4ep;J8FT-W)+> zUl5`29FTZa#RRs*Nmsp@-^b=lqfZaAj$^@ek=_29n};%poBN9jj=7XhSdOpc5DwY^ zWg?I|lLTG?eJXAfH{rW44gk-I-;D;pK{!HoYXx?S3raVFD^6~G?jY*)AmE28 zzI+=v)d`P6lUSwaky@aAdiYOHASXaJ$Y4U%>$Yu`vnrBFt>`DJIfA{u`3J+0IO6I$ zTM0SR+nl$OfPn_lx%UpgQn?^^vr;eh+9P`!g;=O{z*2k1CO#_#T_t8gNTd+@{@GUY z&es-)%LBo)CF_m4my^N8LLgg0%6qgdG?tAq717ZF8crS8uHyL4Wm-|oO#ugKWlOV% z;S7*d42M9$%+>4j1zb0NYko>pw#hxBXDcF}b}ySPMb<2z-1y5NF($Wc%HBayf40-p zI9J4-U=giCQOLGR^bi;^Kq%f-#LLdlE8VYE7~;e!|{d7Rb>A!PWtxVU{f z#+1w!^c`3AngmWr6q9b32jkQ2NjR{%UE+q(y=>d4Os;a6XkkmwgVlfQ7 z(cTgfDR+-Dal`TUAh{}i@F3F>{ArieJC6||)>T#g5@HCnr66TvJYr=%;oSm0-C?cc z4R6+2v7M1yS^_Ev`8;#Ef)BkY8J%5r3nnNQ)_(nZss;_#J@oXu%lnzA`Q;9ScHjJm z_l{$aVk`5{YlLO|84UxybKg9}pp&I0U{kiIN?w0vN%|+-{Ro`Sl9VQVvlFZK@-xRg z!d5O6dt6T{#8Yv*G8rp3Ct&{aPHm&!2KU>fJfPmrCHfyO!d3YJ=mN6Y1LAD~Lxq%_ zoLETd0MXmv_m>+e5PRPP6_3)emX6^8qImz^Z++Dz9=b?|Nf6B+I=brY{6a;)&AiMY zWNjNlDD^eO6t%3(VmSHR7`*u02gVwrSG`P}!31eUQy81FIJb-_&ILFY7K(AI)RZ5w zn2x`B_+>)ymvI34)e%r3Jdp-PpJ)jF@K#ceL2%hMQriN#+S+eT%hyW&uFEPQ|_xM z+Ts&yq4mNUH7bjNH13Xy6Q*=0qfei{^0k$K6=4-`wuT)nd&j1jNJssThe%I z=W7u#V& zb_wV0bRUDu;UzEb@(EVlF|QwaRqv7QBhW~TryqUh(lJHQ=-AVdn5kO1!A_+q-dVYS zxQs1+@3*6`hXGqoX5hSSoZamnWEqbETPlOc^c=O$)wl^e{lEOFAGLUjE&3zoGPQUjaJ6uv@Xjks=Lt$6>BL$q_pt>Ja`+OidaLL9Bvx z7^52uW*XteZCN!%yB1?=dPC=<=}$N{|w z%l4l-O3jSH7EDopB~pms%C%of_5wTe`T6yuN|n^UmghZ!d$()PRA@qg3;%2QDWYrO2& zI|~ymP;N#Y-!#nFqU_w2Eszq`D1x=2uXK*?8{w-3{`-WNT{X_zT-YTVjnfmyKXpkS zsu*YX35o>~G#0tv@`N$4Ib@ld4L!nKwd2FJBA*BS*7!O9W(T{%Bb)}@xgMt>UH710 z7jw^=z%Q#Hgyfw&X6OJ-qW|}TEuPOj;y5PJ$U)#lrXD$YQkuqQP0W^(lxmcj=gA|n zj0wx_ZFgOqjXy;_qnZKP2@vh{+%9|qRqwh!Fz0auh-vUN;Eecsvkuo5z3(W5KU?B5 zG{ie%C66F347nUzOO?4gyizCpR;rz-Zs!`KUXZ=Gh&3|I-5EUU3!AOo1D42Ra0CV+ zfZq!#q?H85C8J08f*EOPwj7~c(h4VXN58sc>iayDyp-p_@2a>O zxa9lst;hK0piPoO^jo)m-PHGc0$|+uc)s3=19`a_@E)oNCLO;OG#sup*KQyj_7P`? z6`g$Jz_vwjqrJQKf)px`(Zt!!^$<0ihAFJ=Osr-peRz8d@&r$Qht5W5Lh0Zp$9_ar zK8GnZG71VO;Q9hN^MO;7?84Wt@1<~x8S!h#-nPtbgori3>H2$fb3HFh&OfsSaJfTK z*n2RgrKPihAAY(!iw3-Z29ItA_pT{`WhKDWAX2^*#W-5;Ld;4w2(2a43(YGuLPp#*a){J{yfKo+dm$8>AZM29i* zipNyWzXSd=Tl(1eWU%EQf)1MNY3kK-SuQKuUN)5FIGKp&IG*>lS@&d-QCS@rFOat} zkRct&lZG;>q5F-zL?NqtH+fr|g;1w_k4pAKH-DKGnyJ!F$pBg8zXJ2cE;>-!vLh$D zX_!5`dcRXp?*}DiVxZVbn2gyi=6~LPBcYEkXhqx(Udon9ie!*Z#-Ai+9ArjMRE!XVUeo41>8SDL zr)Q04nb~tr1B(8Ip;Sw7;Nc8)k-tIGBsVr?{xv6Ht8bLVt-i_m!zz5X@+Fz zSTN9Sg%-RzDP#f5@q`Cci9V$5nMhd?e7Pv%)=Z*$at2oM1xaLFGYkBXWtr|^M40%Qyrks^$m8Y=hYe%0Ds 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 literal 0 HcmV?d00001 diff --git a/docs/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.py b/docs/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.py new file mode 100644 index 0000000000..521f84f209 --- /dev/null +++ b/docs/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.py @@ -0,0 +1,136 @@ +""" +Grid-Stat: Using Python Embedding for Total Column Ozone +================================================================================ + +model_applications/medium_range/GridStat_fcstGFS_obsOMI +_TotalColumnOzone.conf + +""" +############################################################################## +# Scientific Objective +# -------------------- +# To provide useful statistical information on the relationship between observation +# data in gridded format to a gridded forecast. The Ozone Monitoring Instrument (OMI) +# data covers a 36 hour period and is compared to the average of the gridded forecast +# files (all from the same initialization time). + +############################################################################## +# Datasets +# -------- +# +# | **Forecast:** GFS (1 degree Lat/Lon grid) +# | **Observation:** NASA's Level-3 Aura/OMI Global Total Ozone Mapping Spectrometer-Like (TOMS-Like) Total Column Ozone gridded product OMTO3e (0.25deg Lat/Lon grid) +# | **Location:** Click here for the METplus releases page and download sample data for the appropriate release: https://github.com/dtcenter/METplus/releases +# | This tarball should be unpacked into the directory that you will set the value of INPUT_BASE. See `Running METplus`_ section for more information. + +############################################################################## +# METplus Components +# ------------------ +# +# This use case first runs PCPCombine on the forecast data to build a +# 36-hour Total Colum Ozone mean/average file. Then the forecast data +# are compared to the observation data using GridStat. This use case utilizes +# the METplus GridStat wrapper to read in the observation file using Python Embedding. + +############################################################################## +# METplus Workflow +# ---------------- +# +# The following tools are used for each run time: +# +# PCPCombine (forecast) > GridStat +# +# It processes the following run times: +# +# | **Valid:** 2023-12-05 06Z (36 hour period covering 2023-12-03 18Z - 2023-12-05 06Z) +# | **Init:** 2023-12-03 06Z +# | **Forecast lead:** 48 + +############################################################################## +# METplus Configuration +# --------------------- +# +# METplus first loads all of the configuration files found in parm/metplus_config, +# then it loads any configuration files passed to METplus via the command line +# parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf +# +# .. highlight:: bash +# .. literalinclude:: ../../../../parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf + +############################################################################## +# MET Configuration +# ----------------- +# +# METplus sets environment variables based on user settings in the METplus configuration file. +# See :ref:`How METplus controls MET config file settings` for more details. +# +# **YOU SHOULD NOT SET ANY OF THESE ENVIRONMENT VARIABLES YOURSELF! THEY WILL BE OVERWRITTEN BY METPLUS WHEN IT CALLS THE MET TOOLS!** +# +# If there is a setting in the MET configuration file that is currently not supported by METplus you'd like to control, please refer to: +# :ref:`Overriding Unsupported MET config file settings` +# +# .. note:: See the :ref:`GridStat MET Configuration` section of the User's Guide for more information on the environment variables used in the file below: +# +# .. highlight:: bash +# .. literalinclude:: ../../../../parm/met_config/GridStatConfig_wrapped + +############################################################################## +# Python Embedding +# ---------------- +# +# This use case uses one Python embedding script with GridStat to read the input observation data +# +# parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/read_omi-aura_l3-omto3e.py +# +# .. highlight:: python +# .. literalinclude:: ../../../../parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/read_omi-aura_l3-omto3e.py + + +############################################################################## +# Running METplus +# --------------- +# +# Pass the use case configuration file to the run_metplus.py script +# along with any user-specific system configuration files if desired:: +# +# run_metplus.py /path/to/METplus/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf /path/to/user_system.conf +# +# See :ref:`running-metplus` for more information. +# + +############################################################################## +# Expected Output +# --------------- +# +# A successful run will output the following both to the screen and to the logfile:: +# +# INFO: METplus has successfully finished running. +# +# Refer to the value set for **OUTPUT_BASE** to find where the output data was generated. +# Output for this use case will be found in /model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone +# (relative to **OUTPUT_BASE**) +# and will contain the following files: +# +# * PCPCombine/pcp_combine.tozone_l0.mean.f048.init2023120306.nc +# * GridStat/grid_stat_GFS_vs_OMI_480000L_20231205_060000V.stat + +############################################################################## +# Keywords +# -------- +# +# .. note:: +# +# * PCPCombineToolUseCase +# * GridStatToolUseCase +# * MediumRangeAppUseCase +# * GRIBFileUseCase +# * PythonEmbeddingFileUseCase +# * RegriddingInToolUseCase +# * NOAAEMCOrgUseCase +# +# Navigate to the :ref:`quick-search` page to discover other similar use cases. +# +# +# +# sphinx_gallery_thumbnail_path = '_static/medium_range-GridStat_fcstGFS_obsOMI_TotalColumnOzone.png' +# diff --git a/internal/scripts/docker_env/README.md b/internal/scripts/docker_env/README.md index a3f70f3b39..6a121cde50 100644 --- a/internal/scripts/docker_env/README.md +++ b/internal/scripts/docker_env/README.md @@ -416,9 +416,6 @@ docker push dtcenter/metplus-envs:geovista.${METPLUS_ENV_VERSION} ``` export METPLUS_ENV_VERSION=v6.0 ./scripts/geovista_env.sh ${METPLUS_ENV_VERSION} - -cd /home/met_test/geovista -/home/met_test/.conda/envs/geovista.${METPLUS_ENV_VERSION}/bin/pip3 install --no-deps --editable . ``` ## pandac.v6.0 (from metplotpy.v6.0) diff --git a/internal/scripts/docker_env/scripts/cfgrib_env.sh b/internal/scripts/docker_env/scripts/cfgrib_env.sh index 123d99d45d..66799f1aef 100755 --- a/internal/scripts/docker_env/scripts/cfgrib_env.sh +++ b/internal/scripts/docker_env/scripts/cfgrib_env.sh @@ -21,7 +21,4 @@ METPLUS_VERSION=$1 ENV_NAME=cfgrib.${METPLUS_VERSION} mamba create -y --name ${ENV_NAME} -c conda-forge python=3.10.4 -mamba install -y --name ${ENV_NAME} -c conda-forge metpy==1.4.0 -mamba install -y --name ${ENV_NAME} -c conda-forge netcdf4==1.6.2 -mamba install -y --name ${ENV_NAME} -c conda-forge cfgrib==0.9.10.1 -mamba install -y --name ${ENV_NAME} -c conda-forge pygrib==2.1.4 +mamba install -y --name ${ENV_NAME} -c conda-forge metpy==1.4.0 netcdf4==1.6.2 cfgrib==0.9.10.1 pygrib==2.1.4 diff --git a/internal/scripts/docker_env/scripts/cycloneplotter_env.sh b/internal/scripts/docker_env/scripts/cycloneplotter_env.sh index ae742ceaec..d7aa43e863 100755 --- a/internal/scripts/docker_env/scripts/cycloneplotter_env.sh +++ b/internal/scripts/docker_env/scripts/cycloneplotter_env.sh @@ -23,6 +23,4 @@ ENV_NAME=cycloneplotter.${METPLUS_VERSION} BASE_ENV=metplus_base.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge cartopy==0.20.3 -mamba install -y --name ${ENV_NAME} -c conda-forge matplotlib==3.5.2 -mamba install -y --name ${ENV_NAME} -c conda-forge pandas==1.4.3 +mamba install -y --name ${ENV_NAME} -c conda-forge cartopy==0.20.3 matplotlib==3.5.2 pandas==1.4.3 diff --git a/internal/scripts/docker_env/scripts/diff_env.sh b/internal/scripts/docker_env/scripts/diff_env.sh index b5f62c4e2e..40048e841a 100755 --- a/internal/scripts/docker_env/scripts/diff_env.sh +++ b/internal/scripts/docker_env/scripts/diff_env.sh @@ -24,8 +24,7 @@ ENV_NAME=diff.${METPLUS_VERSION} BASE_ENV=netcdf4.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge pandas==2.0.2 -mamba install -y --name ${ENV_NAME} -c conda-forge pillow==9.2.0 +mamba install -y --name ${ENV_NAME} -c conda-forge pandas==2.0.2 pillow==9.2.0 apt-get update apt-get install -y poppler-utils diff --git a/internal/scripts/docker_env/scripts/geovista_env.sh b/internal/scripts/docker_env/scripts/geovista_env.sh index 4c0a8a9398..9dce88d63d 100755 --- a/internal/scripts/docker_env/scripts/geovista_env.sh +++ b/internal/scripts/docker_env/scripts/geovista_env.sh @@ -25,6 +25,4 @@ apt install -y libgl1-mesa-glx apt install -y libegl1 mamba create -y --name ${ENV_NAME} -c conda-forge python=3.10.4 -mamba install -y --name ${ENV_NAME} -c conda-forge geovista==0.3.0 -mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2023.8.0 -mamba install -y --name ${ENV_NAME} -c conda-forge iris==3.7.0 +mamba install -y --name ${ENV_NAME} -c conda-forge geovista==0.3.0 xarray==2023.8.0 iris==3.7.0 diff --git a/internal/scripts/docker_env/scripts/icecover_env.sh b/internal/scripts/docker_env/scripts/icecover_env.sh index fc5ea361cf..a622b869e0 100755 --- a/internal/scripts/docker_env/scripts/icecover_env.sh +++ b/internal/scripts/docker_env/scripts/icecover_env.sh @@ -23,7 +23,4 @@ ENV_NAME=icecover.${METPLUS_VERSION} BASE_ENV=py_embed_base.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2023.5.0 -mamba install -y --name ${ENV_NAME} -c conda-forge pyresample==1.27.1 -mamba install -y --name ${ENV_NAME} -c conda-forge scikit-learn==1.3.0 -mamba install -y --name ${ENV_NAME} -c conda-forge pyproj==3.6.0 +mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2023.5.0 pyresample==1.27.1 scikit-learn==1.3.0 pyproj==3.6.0 diff --git a/internal/scripts/docker_env/scripts/metdataio_env.sh b/internal/scripts/docker_env/scripts/metdataio_env.sh index a1e2c291c8..a0eac3a869 100755 --- a/internal/scripts/docker_env/scripts/metdataio_env.sh +++ b/internal/scripts/docker_env/scripts/metdataio_env.sh @@ -23,6 +23,4 @@ BASE_ENV=metplus_base.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge lxml==4.9.1 -mamba install -y --name ${ENV_NAME} -c conda-forge pymysql==1.0.2 -mamba install -y --name ${ENV_NAME} -c conda-forge pandas==1.5.1 +mamba install -y --name ${ENV_NAME} -c conda-forge lxml==4.9.1 pymysql==1.0.2 pandas==1.5.1 diff --git a/internal/scripts/docker_env/scripts/metplotpy_env.sh b/internal/scripts/docker_env/scripts/metplotpy_env.sh index c571404b65..6a55e6238e 100755 --- a/internal/scripts/docker_env/scripts/metplotpy_env.sh +++ b/internal/scripts/docker_env/scripts/metplotpy_env.sh @@ -33,17 +33,4 @@ BASE_ENV=metplus_base.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge matplotlib==3.6.3 -mamba install -y --name ${ENV_NAME} -c conda-forge scipy==1.9.3 -mamba install -y --name ${ENV_NAME} -c conda-forge plotly==5.13.0 -mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2023.1.0 -mamba install -y --name ${ENV_NAME} -c conda-forge netcdf4==1.6.2 -mamba install -y --name ${ENV_NAME} -c conda-forge pyyaml==6.0 -#mamba install -y --name ${ENV_NAME} -c conda-forge statsmodels #==0.13.2 -mamba install -y --name ${ENV_NAME} -c conda-forge python-kaleido==0.2.1 -mamba install -y --name ${ENV_NAME} -c conda-forge imageio==2.25.0 -mamba install -y --name ${ENV_NAME} -c conda-forge imutils==0.5.4 -mamba install -y --name ${ENV_NAME} -c conda-forge scikit-image -mamba install -y --name ${ENV_NAME} -c conda-forge pint==0.20.1 -mamba install -y --name ${ENV_NAME} -c conda-forge metpy -mamba install -y --name ${ENV_NAME} -c conda-forge cartopy==0.21.1 +mamba install -y --name ${ENV_NAME} -c conda-forge matplotlib==3.6.3 scipy==1.9.3 plotly==5.13.0 xarray==2023.1.0 netcdf4==1.6.2 pyyaml==6.0 python-kaleido==0.2.1 imageio==2.25.0 imutils==0.5.4 scikit-image pint==0.20.1 metpy cartopy==0.21.1 diff --git a/internal/scripts/docker_env/scripts/pandac_env.sh b/internal/scripts/docker_env/scripts/pandac_env.sh index 05474b936e..571824f19a 100755 --- a/internal/scripts/docker_env/scripts/pandac_env.sh +++ b/internal/scripts/docker_env/scripts/pandac_env.sh @@ -24,20 +24,8 @@ BASE_ENV=metplotpy.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} - -#mamba install -y --name ${ENV_NAME} -c conda-forge scipy==1.10.1 -#if [ $? != 0 ]; then -# echo install of scipy==1.10.1 failed -# exit 1 -#fi - mamba install -y --name ${ENV_NAME} -c conda-forge pygrib==2.1.4 if [ $? != 0 ]; then echo install of pygrib==2.1.4 failed exit 1 fi -#mamba install -y --name ${ENV_NAME} -c conda-forge matplotlib==3.6.3 -#if [ $? != 0 ]; then -# echo install of matplotlib==3.6.3 failed -# exit 1 -#fi diff --git a/internal/scripts/docker_env/scripts/py_embed_base_env.sh b/internal/scripts/docker_env/scripts/py_embed_base_env.sh index 1a59cd3b2d..bd28945ea7 100755 --- a/internal/scripts/docker_env/scripts/py_embed_base_env.sh +++ b/internal/scripts/docker_env/scripts/py_embed_base_env.sh @@ -19,5 +19,4 @@ METPLUS_VERSION=$1 ENV_NAME=py_embed_base.${METPLUS_VERSION} mamba create -y --name ${ENV_NAME} -c conda-forge python=3.10.4 -mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2022.3.0 -mamba install -y --name ${ENV_NAME} -c conda-forge netcdf4==1.6.2 +mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2022.3.0 netcdf4==1.6.2 yaml==0.2.5 diff --git a/internal/scripts/docker_env/scripts/pygrib_env.sh b/internal/scripts/docker_env/scripts/pygrib_env.sh index 061ff2c951..ab2754ca01 100755 --- a/internal/scripts/docker_env/scripts/pygrib_env.sh +++ b/internal/scripts/docker_env/scripts/pygrib_env.sh @@ -23,5 +23,4 @@ BASE_ENV=py_embed_base.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge pygrib==2.1.4 -mamba install -y --name ${ENV_NAME} -c conda-forge metpy==1.3.0 +mamba install -y --name ${ENV_NAME} -c conda-forge pygrib==2.1.4 metpy==1.3.0 diff --git a/internal/scripts/docker_env/scripts/spacetime_env.sh b/internal/scripts/docker_env/scripts/spacetime_env.sh index d56c2c3221..36e250496a 100755 --- a/internal/scripts/docker_env/scripts/spacetime_env.sh +++ b/internal/scripts/docker_env/scripts/spacetime_env.sh @@ -23,9 +23,4 @@ ENV_NAME=spacetime.${METPLUS_VERSION} mamba create -y --name ${ENV_NAME} -c conda-forge python=3.10.4 -mamba install -y --name ${ENV_NAME} -c conda-forge netCDF4==1.6.4 -mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2023.8.0 -mamba install -y --name ${ENV_NAME} -c conda-forge scipy==1.11.2 -mamba install -y --name ${ENV_NAME} -c conda-forge matplotlib==3.7.2 -mamba install -y --name ${ENV_NAME} -c conda-forge pyngl==1.6.1 -mamba install -y --name ${ENV_NAME} -c conda-forge pyyaml==6.0.1 +mamba install -y --name ${ENV_NAME} -c conda-forge netCDF4==1.6.4 xarray==2023.8.0 scipy==1.11.2 matplotlib==3.7.2 pyngl==1.6.1 pyyaml==6.0.1 diff --git a/internal/scripts/docker_env/scripts/weatherregime_env.sh b/internal/scripts/docker_env/scripts/weatherregime_env.sh index e00b92e411..74932dc5e9 100755 --- a/internal/scripts/docker_env/scripts/weatherregime_env.sh +++ b/internal/scripts/docker_env/scripts/weatherregime_env.sh @@ -25,6 +25,4 @@ BASE_ENV=metplotpy.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge scikit-learn==1.1.1 -mamba install -y --name ${ENV_NAME} -c conda-forge eofs==1.4.0 -mamba install -y --name ${ENV_NAME} -c conda-forge cmocean==2.0 +mamba install -y --name ${ENV_NAME} -c conda-forge scikit-learn==1.1.1 eofs==1.4.0 cmocean==2.0 diff --git a/internal/scripts/docker_env/scripts/xesmf_env.sh b/internal/scripts/docker_env/scripts/xesmf_env.sh index 779e0c36ff..3a7965b264 100755 --- a/internal/scripts/docker_env/scripts/xesmf_env.sh +++ b/internal/scripts/docker_env/scripts/xesmf_env.sh @@ -26,8 +26,4 @@ ENV_NAME=xesmf.${METPLUS_VERSION} BASE_ENV=metplus_base.${METPLUS_VERSION} mamba create -y --clone ${BASE_ENV} --name ${ENV_NAME} -mamba install -y --name ${ENV_NAME} -c conda-forge netcdf4==1.6.2 -mamba install -y --name ${ENV_NAME} -c conda-forge xarray==2022.3.0 -mamba install -y --name ${ENV_NAME} -c conda-forge xesmf==0.8.2 -mamba install -y --name ${ENV_NAME} -c conda-forge esmf==8.3.1 - +mamba install -y --name ${ENV_NAME} -c conda-forge netcdf4==1.6.2 xarray==2022.3.0 xesmf==0.8.2 esmf==8.3.1 diff --git a/internal/tests/pytests/wrappers/tc_diag/test_tc_diag_wrapper.py b/internal/tests/pytests/wrappers/tc_diag/test_tc_diag_wrapper.py index ec3458c8ea..2a0954cb2b 100644 --- a/internal/tests/pytests/wrappers/tc_diag/test_tc_diag_wrapper.py +++ b/internal/tests/pytests/wrappers/tc_diag/test_tc_diag_wrapper.py @@ -101,35 +101,31 @@ def set_minimum_config_settings(config): {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{delta_range_km = 10.0;}];'}), ({'TC_DIAG_DOMAIN_INFO1_DIAG_SCRIPT': 'MET_BASE/python/tc_diag/compute_all_diagnostics.py,MET_BASE/python/tc_diag/compute_custom_diagnostics.py', }, {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{diag_script = ["MET_BASE/python/tc_diag/compute_all_diagnostics.py", "MET_BASE/python/tc_diag/compute_custom_diagnostics.py"];}];'}), + ({'TC_DIAG_DOMAIN_INFO1_OVERRIDE_DIAGS': 'RMW,SST', }, + {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{override_diags = ["RMW", "SST"];}];'}), ({'TC_DIAG_DOMAIN_INFO1_DOMAIN': 'parent', 'TC_DIAG_DOMAIN_INFO1_N_RANGE': '150', 'TC_DIAG_DOMAIN_INFO1_N_AZIMUTH': '8', 'TC_DIAG_DOMAIN_INFO1_DELTA_RANGE_KM': '10.0', 'TC_DIAG_DOMAIN_INFO1_DIAG_SCRIPT': 'MET_BASE/python/tc_diag/compute_all_diagnostics.py,MET_BASE/python/tc_diag/compute_custom_diagnostics.py', + 'TC_DIAG_DOMAIN_INFO1_OVERRIDE_DIAGS': 'RMW,SST', }, - {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{domain = "parent";n_range = 150;n_azimuth = 8;delta_range_km = 10.0;diag_script = ["MET_BASE/python/tc_diag/compute_all_diagnostics.py", "MET_BASE/python/tc_diag/compute_custom_diagnostics.py"];}];'}), + {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{domain = "parent";n_range = 150;n_azimuth = 8;delta_range_km = 10.0;diag_script = ["MET_BASE/python/tc_diag/compute_all_diagnostics.py", "MET_BASE/python/tc_diag/compute_custom_diagnostics.py"];override_diags = ["RMW", "SST"];}];'}), # domain_info 2 dictionaries in list ({'TC_DIAG_DOMAIN_INFO1_DOMAIN': 'parent', 'TC_DIAG_DOMAIN_INFO1_N_RANGE': '150', 'TC_DIAG_DOMAIN_INFO1_N_AZIMUTH': '8', 'TC_DIAG_DOMAIN_INFO1_DELTA_RANGE_KM': '10.0', 'TC_DIAG_DOMAIN_INFO1_DIAG_SCRIPT': 'MET_BASE/python/tc_diag/compute_all_diagnostics.py,MET_BASE/python/tc_diag/compute_custom_diagnostics.py', + 'TC_DIAG_DOMAIN_INFO1_OVERRIDE_DIAGS': 'RMW,SST', 'TC_DIAG_DOMAIN_INFO2_DOMAIN': 'nest', 'TC_DIAG_DOMAIN_INFO2_N_RANGE': '100', 'TC_DIAG_DOMAIN_INFO2_N_AZIMUTH': '7', 'TC_DIAG_DOMAIN_INFO2_DELTA_RANGE_KM': '12.0', 'TC_DIAG_DOMAIN_INFO2_DIAG_SCRIPT': 'MET_BASE/python/tc_diag/compute_sst_diagnostics.py', + 'TC_DIAG_DOMAIN_INFO2_OVERRIDE_DIAGS': 'SST', }, - {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{domain = "parent";n_range = 150;n_azimuth = 8;delta_range_km = 10.0;diag_script = ["MET_BASE/python/tc_diag/compute_all_diagnostics.py", "MET_BASE/python/tc_diag/compute_custom_diagnostics.py"];},{domain = "nest";n_range = 100;n_azimuth = 7;delta_range_km = 12.0;diag_script = ["MET_BASE/python/tc_diag/compute_sst_diagnostics.py"];}];'}), - - ({'TC_DIAG_CENSOR_THRESH': '>12000,<5000', }, - {'METPLUS_CENSOR_THRESH': 'censor_thresh = [>12000, <5000];'}), - - ({'TC_DIAG_CENSOR_VAL': '12000,5000', }, - {'METPLUS_CENSOR_VAL': 'censor_val = [12000, 5000];'}), - - ({'TC_DIAG_CONVERT': '2*x', }, - {'METPLUS_CONVERT': 'convert(x) = 2*x;'}), + {'METPLUS_DOMAIN_INFO_LIST': 'domain_info = [{domain = "parent";n_range = 150;n_azimuth = 8;delta_range_km = 10.0;diag_script = ["MET_BASE/python/tc_diag/compute_all_diagnostics.py", "MET_BASE/python/tc_diag/compute_custom_diagnostics.py"];override_diags = ["RMW", "SST"];},{domain = "nest";n_range = 100;n_azimuth = 7;delta_range_km = 12.0;diag_script = ["MET_BASE/python/tc_diag/compute_sst_diagnostics.py"];override_diags = ["SST"];}];'}), ({'TC_DIAG_DATA_DOMAIN': 'parent,nest', }, {'METPLUS_DATA_DOMAIN': 'domain = ["parent", "nest"];'}), @@ -197,13 +193,13 @@ def set_minimum_config_settings(config): ({'TC_DIAG_VORTEX_REMOVAL': 'False', }, {'METPLUS_VORTEX_REMOVAL': 'vortex_removal = FALSE;'}), - ({'TC_DIAG_NC_RNG_AZI_FLAG': 'true', }, {'METPLUS_NC_RNG_AZI_FLAG': 'nc_rng_azi_flag = TRUE;'}), + ({'TC_DIAG_NC_CYL_GRID_FLAG': 'true', }, {'METPLUS_NC_CYL_GRID_FLAG': 'nc_cyl_grid_flag = TRUE;'}), ({'TC_DIAG_NC_DIAG_FLAG': 'true', }, {'METPLUS_NC_DIAG_FLAG': 'nc_diag_flag = TRUE;'}), ({'TC_DIAG_CIRA_DIAG_FLAG': 'True', }, {'METPLUS_CIRA_DIAG_FLAG': 'cira_diag_flag = TRUE;'}), - ({'TC_DIAG_OUTPUT_PREFIX': 'my_prefix', }, {'METPLUS_OUTPUT_PREFIX': 'output_prefix = "my_prefix";'}), + ({'TC_DIAG_OUTPUT_BASE_FORMAT': 's{storm_id}_{technique}_doper_{init_ymdh}', }, {'METPLUS_OUTPUT_BASE_FORMAT': 'output_base_format = "s{storm_id}_{technique}_doper_{init_ymdh}";'}), ({'TC_DIAG_ONE_TIME_PER_FILE_FLAG': 'false', }, {'METPLUS_ONE_TIME_PER_FILE_FLAG': 'one_time_per_file_flag = FALSE;'}), ] diff --git a/internal/tests/use_cases/all_use_cases.txt b/internal/tests/use_cases/all_use_cases.txt index 235c910c71..68f29e3873 100644 --- a/internal/tests/use_cases/all_use_cases.txt +++ b/internal/tests/use_cases/all_use_cases.txt @@ -115,6 +115,7 @@ Category: medium_range 7::TCStat_SeriesAnalysis_fcstGFS_obsGFS_FeatureRelative_SeriesByLead_PyEmbed_Multiple_Diagnostics:: model_applications/medium_range/TCStat_SeriesAnalysis_fcstGFS_obsGFS_FeatureRelative_SeriesByLead_PyEmbed_Multiple_Diagnostics.conf:: cfgrib_env,py_embed 8::MTD_SeriesAnalysis_fcstGFS_obsGFS_FeatureRelative_SeriesByLead::model_applications/medium_range/MTD_SeriesAnalysis_fcstGFS_obsGFS_FeatureRelative_SeriesByLead.conf:: netcdf4_env 9::GridStat_fcstGEFS_obsCADB_BinaryObsPOE:: model_applications/medium_range/GridStat_fcstGEFS_obsCADB_BinaryObsPOE.conf:: netcdf4_env +10::GridStat_fcstGFS_obsOMI_TotalColumnOzone:: model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf:: py_embed Category: pbl diff --git a/metplus/wrappers/tc_diag_wrapper.py b/metplus/wrappers/tc_diag_wrapper.py index e72f0efffa..554151a0f9 100755 --- a/metplus/wrappers/tc_diag_wrapper.py +++ b/metplus/wrappers/tc_diag_wrapper.py @@ -43,9 +43,6 @@ class TCDiagWrapper(RuntimeFreqWrapper): 'METPLUS_LEAD_LIST', 'METPLUS_DIAG_SCRIPT', 'METPLUS_DOMAIN_INFO_LIST', - 'METPLUS_CENSOR_THRESH', - 'METPLUS_CENSOR_VAL', - 'METPLUS_CONVERT', 'METPLUS_DATA_FILE_TYPE', 'METPLUS_DATA_DOMAIN', 'METPLUS_DATA_LEVEL', @@ -61,15 +58,19 @@ class TCDiagWrapper(RuntimeFreqWrapper): 'METPLUS_VORTEX_REMOVAL', 'METPLUS_VORTEX_REMOVAL', 'METPLUS_NC_DIAG_FLAG', - 'METPLUS_NC_RNG_AZI_FLAG', + 'METPLUS_NC_CYL_GRID_FLAG', 'METPLUS_CIRA_DIAG_FLAG', - 'METPLUS_OUTPUT_PREFIX', + 'METPLUS_OUTPUT_BASE_FORMAT', 'METPLUS_ONE_TIME_PER_FILE_FLAG', ] # deprecated env vars that are no longer supported in the wrapped MET conf DEPRECATED_WRAPPER_ENV_VAR_KEYS = [ 'OUTPUT_PREFIX', + 'METPLUS_OUTPUT_PREFIX', + 'METPLUS_CENSOR_THRESH', + 'METPLUS_CENSOR_VAL', + 'METPLUS_CONVERT', ] def __init__(self, config, instance=None): @@ -168,6 +169,7 @@ def create_c_dict(self): 'n_azimuth': 'int', 'delta_range_km': 'float', 'diag_script': 'list', + 'override_diags': ('list', 'allow_empty'), } if not add_met_config_dict_list(config=self.config, app_name=self.app_name, @@ -176,19 +178,6 @@ def create_c_dict(self): dict_items=dict_items): self.isOK = False - self.add_met_config(name='censor_thresh', - data_type='list', - extra_args={'remove_quotes': True}) - - self.add_met_config(name='censor_val', - data_type='list', - extra_args={'remove_quotes': True}) - - self.add_met_config(name='convert', - data_type='string', - extra_args={'remove_quotes': True, - 'add_x': True}) - # handle data dictionary, including field, domain, level, and file_type c_dict['VAR_LIST_TEMP'] = parse_var_list(self.config, data_type='FCST', @@ -228,11 +217,11 @@ def create_c_dict(self): self.add_met_config(name='one_time_per_file_flag', data_type='bool') - self.add_met_config(name='nc_rng_azi_flag', data_type='bool') + self.add_met_config(name='nc_cyl_grid_flag', data_type='bool') self.add_met_config(name='nc_diag_flag', data_type='bool') self.add_met_config(name='cira_diag_flag', data_type='bool') - self.add_met_config(name='output_prefix', data_type='string') + self.add_met_config(name='output_base_format', data_type='string') return c_dict diff --git a/parm/met_config/TCDiagConfig_wrapped b/parm/met_config/TCDiagConfig_wrapped index d081f2430d..8dacb81b26 100644 --- a/parm/met_config/TCDiagConfig_wrapped +++ b/parm/met_config/TCDiagConfig_wrapped @@ -88,21 +88,17 @@ ${METPLUS_DOMAIN_INFO_LIST} //////////////////////////////////////////////////////////////////////////////// // -// Data censoring and conversion +// Cylindrical coordinate transformation regridding options // May be set separately in each diag_data "field" entry // -// censor_thresh = []; -${METPLUS_CENSOR_THRESH} - -// censor_val = []; -${METPLUS_CENSOR_VAL} - -// convert(x) = x; -${METPLUS_CONVERT} +//regrid = { +${METPLUS_REGRID_DICT} // // Data fields +// censor_thresh, censor_val, and convert(x) may be set separately +// in each data "field" array entry // data = { @@ -122,12 +118,6 @@ data = { //////////////////////////////////////////////////////////////////////////////// -// -// Regridding options -// -//regrid = { -${METPLUS_REGRID_DICT} - // // Optionally convert u/v winds to tangential/radial winds // @@ -168,8 +158,8 @@ ${METPLUS_ONE_TIME_PER_FILE_FLAG} // // Flags to control output files // -//nc_rng_azi_flag = -${METPLUS_NC_RNG_AZI_FLAG} +//nc_cyl_grid_flag = +${METPLUS_NC_CYL_GRID_FLAG} //nc_diag_flag = ${METPLUS_NC_DIAG_FLAG} @@ -177,14 +167,15 @@ ${METPLUS_NC_DIAG_FLAG} //cira_diag_flag = ${METPLUS_CIRA_DIAG_FLAG} +// +// Output base file naming convention +// +//output_base_format = +${METPLUS_OUTPUT_BASE_FORMAT} //////////////////////////////////////////////////////////////////////////////// tmp_dir = "${MET_TMP_DIR}"; - -//output_prefix = -${METPLUS_OUTPUT_PREFIX} - //version = "V11.1.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/parm/use_cases/met_tool_wrapper/TCDiag/TCDiag.conf b/parm/use_cases/met_tool_wrapper/TCDiag/TCDiag.conf index 385148ee0b..37f191c712 100644 --- a/parm/use_cases/met_tool_wrapper/TCDiag/TCDiag.conf +++ b/parm/use_cases/met_tool_wrapper/TCDiag/TCDiag.conf @@ -45,12 +45,6 @@ TC_DIAG_INPUT1_TEMPLATE = subset.gfs.t12z.pgrb2.0p50.f* TC_DIAG_INPUT1_DOMAIN = parent TC_DIAG_INPUT1_TECH_ID_LIST = AVNO - -TC_DIAG_INPUT2_DIR = {INPUT_BASE}/met_test/new/model_data/grib2/gfs -TC_DIAG_INPUT2_TEMPLATE = subset.gfs.t12z.pgrb2.0p50.f* -TC_DIAG_INPUT2_DOMAIN = nest -TC_DIAG_INPUT2_TECH_ID_LIST = AVNO - TC_DIAG_OUTPUT_DIR = {OUTPUT_BASE}/tc_diag TC_DIAG_OUTPUT_TEMPLATE = {date?fmt=%Y} @@ -96,17 +90,8 @@ TC_DIAG_DOMAIN_INFO1_DOMAIN = parent TC_DIAG_DOMAIN_INFO1_N_RANGE = 150 TC_DIAG_DOMAIN_INFO1_N_AZIMUTH = 8 TC_DIAG_DOMAIN_INFO1_DELTA_RANGE_KM = 10.0 -#TC_DIAG_DOMAIN_INFO1_DIAG_SCRIPT = - -TC_DIAG_DOMAIN_INFO2_DOMAIN = nest -TC_DIAG_DOMAIN_INFO2_N_RANGE = 150 -TC_DIAG_DOMAIN_INFO2_N_AZIMUTH = 8 -TC_DIAG_DOMAIN_INFO2_DELTA_RANGE_KM = 2.0 - - -#TC_DIAG_CENSOR_THRESH = -#TC_DIAG_CENSOR_VAL = -#TC_DIAG_CONVERT = +TC_DIAG_DOMAIN_INFO1_DIAG_SCRIPT = MET_BASE/python/tc_diag/compute_tc_diag.py MET_BASE/python/tc_diag/config/post_resample.yml MET_BASE/tc_data/v2023-04-07_gdland_table.dat +TC_DIAG_DOMAIN_INFO1_OVERRIDE_DIAGS = #TC_DIAG_DATA_DOMAIN = #TC_DIAG_DATA_LEVEL = @@ -128,9 +113,9 @@ TC_DIAG_DOMAIN_INFO2_DELTA_RANGE_KM = 2.0 #TC_DIAG_RADIAL_VELOCITY_LONG_FIELD_NAME = #TC_DIAG_VORTEX_REMOVAL = #TC_DIAG_ONE_TIME_PER_FILE_FLAG = -#TC_DIAG_NC_RNG_AZI_FLAG = +#TC_DIAG_NC_CYL_GRID_FLAG = #TC_DIAG_NC_DIAG_FLAG = #TC_DIAG_CIRA_DIAG_FLAG = -#TC_DIAG_OUTPUT_PREFIX = +#TC_DIAG_OUTPUT_BASE_FORMAT = #LOG_LEVEL=DEBUG \ No newline at end of file diff --git a/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf b/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf new file mode 100644 index 0000000000..02c1e5b1b8 --- /dev/null +++ b/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.conf @@ -0,0 +1,106 @@ +[config] + +# Documentation for this use case can be found at +# https://metplus.readthedocs.io/en/latest/generated/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone.html + +# For additional information, please see the METplus Users Guide. +# https://metplus.readthedocs.io/en/latest/Users_Guide + +### +# Processes to run +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list +### + +PROCESS_LIST = PCPCombine, GridStat + +### +# Time Info +# LOOP_BY options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +# LEAD_SEQ is the list of forecast leads to process +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control +### + +LOOP_BY = VALID +VALID_TIME_FMT = %Y%m%d%H +VALID_BEG = 2023120506 +VALID_END = 2023120506 +VALID_INCREMENT = 21600 + +LEAD_SEQ = 48 + +### +# File I/O +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info +### + +# PCP_COMBINE +FCST_PCP_COMBINE_RUN = True +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/fcst +FCST_PCP_COMBINE_INPUT_TEMPLATE = tozne.pgbf{lead?fmt=%HH}.gfs.{init?fmt=%Y%m%d%H} +FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/PCPCombine +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = pcp_combine.tozone_l0.mean.f{lead?fmt=%HHH}.init{init?fmt=%Y%m%d%H}.nc + +# GRID_STAT +FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} +FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} +OBS_GRID_STAT_INPUT_TEMPLATE = PYTHON_NUMPY +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/GridStat +GRID_STAT_OUTPUT_TEMPLATE = + +### +# Field Info +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info +### + +CONFIG_DIR = {PARM_BASE}/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone + +# GRID_STAT +GRID_STAT_ONCE_PER_FIELD = False +FCST_VAR1_NAME = TOZNE_L0_mean +FCST_VAR1_LEVELS = (*,*) +OBS_VAR1_NAME = {CONFIG_DIR}/read_omi-aura_l3-omto3e.py {INPUT_BASE}/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/obs/OMI-Aura_L3-OMTO3e_{valid?fmt=%Y?shift=-86400}m{valid?fmt=%m%d?shift=-86400}_v883-{valid?fmt=%Y}m{valid?fmt=%m%d}t010905.he5 obs + +### +# PCPCombine Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#pcpcombine +### +FCST_PCP_COMBINE_METHOD = DERIVE +FCST_PCP_COMBINE_STAT_LIST = mean +FCST_PCP_COMBINE_DERIVE_LOOKBACK = 42H +FCST_PCP_COMBINE_MIN_FORECAST = 12 +FCST_PCP_COMBINE_MAX_FORECAST = 48 +FCST_IS_PROB = false +FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB +FCST_PCP_COMBINE_INPUT_ACCUMS = 6H +FCST_PCP_COMBINE_INPUT_NAMES = TOZNE +FCST_PCP_COMBINE_INPUT_LEVELS = L0 +FCST_PCP_COMBINE_INPUT_OPTIONS = GRIB_lvl_typ = 200; +FCST_PCP_COMBINE_OUTPUT_ACCUM = 36H +FCST_PCP_COMBINE_OUTPUT_NAME = + +### +# GridStat Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#gridstat +### + +MODEL = GFS +OBTYPE = OMI +GRID_STAT_OUTPUT_PREFIX = {MODEL}_vs_{OBTYPE} +GRID_STAT_DESC = NA +GRID_STAT_REGRID_TO_GRID = G004 +GRID_STAT_REGRID_METHOD = BILIN +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_MASK_POLY = +GRID_STAT_CLIMO_CDF_WRITE_BINS = False +GRID_STAT_OUTPUT_FLAG_SL1L2 = STAT +GRID_STAT_OUTPUT_FLAG_CNT = STAT +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE +GRID_STAT_GRID_WEIGHT_FLAG = COS_LAT diff --git a/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/read_omi-aura_l3-omto3e.py b/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/read_omi-aura_l3-omto3e.py new file mode 100644 index 0000000000..38b963e672 --- /dev/null +++ b/parm/use_cases/model_applications/medium_range/GridStat_fcstGFS_obsOMI_TotalColumnOzone/read_omi-aura_l3-omto3e.py @@ -0,0 +1,92 @@ +""" +Mallory Row - SAIC at NOAA/NWS/NCEP/EMC +Designed to read in NASA OMI Total Column Ozone +""" + +import sys +import os +import numpy as np +import netCDF4 as netcdf +import datetime + +print("Python Script:\t" + repr(sys.argv[0])) + +# Process script arguements +if len(sys.argv) != 3: + print("Must specify the following elements: omi_file file_flag") + sys.exit(1) +omi_file = os.path.expandvars(sys.argv[1]) +if not os.path.exists(omi_file): + print(f"OMI file {omi_file} does not exist, exit") + sys.exit(1) +file_flag = sys.argv[2] +if file_flag not in ['fcst', 'obs']: + print(f"File flag {file_flag} not valid (fcst, obs), exit") + sys.exit(1) + +print(f"Processing {omi_file} as {file_flag} data") + +# Read in OMI data +omi_data = netcdf.Dataset(omi_file) +omi_StartUTC = omi_data['/HDFEOS/ADDITIONAL/FILE_ATTRIBUTES'].StartUTC +omi_StartUTC_dt = datetime.datetime.strptime(omi_StartUTC.split(':')[0], + '%Y-%m-%dT%H') +omi_EndUTC = omi_data['/HDFEOS/ADDITIONAL/FILE_ATTRIBUTES'].EndUTC +omi_EndUTC_dt = datetime.datetime.strptime(omi_EndUTC.split(':')[0], + '%Y-%m-%dT%H') +omi_delta_lat = float(eval( + omi_data['/HDFEOS/GRIDS/OMI Column Amount O3'].GridSpacing +)[0]) +omi_delta_lon = float(eval( + omi_data['/HDFEOS/GRIDS/OMI Column Amount O3'].GridSpacing +)[1]) +omi_ColumnAmountO3 = omi_data[ + '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/ColumnAmountO3' +] +omi_lat_ll = float(eval( + omi_data['/HDFEOS/GRIDS/OMI Column Amount O3'].GridSpan +)[2]) +omi_lon_ll = float(eval( + omi_data['/HDFEOS/GRIDS/OMI Column Amount O3'].GridSpan +)[0]) +omi_nlat = int( + omi_data['/HDFEOS/GRIDS/OMI Column Amount O3'].NumberOfLatitudesInGrid +) +omi_nlon = int( + omi_data['/HDFEOS/GRIDS/OMI Column Amount O3'].NumberOfLongitudesInGrid +) +omi_ColumnAmountO3_vals = omi_ColumnAmountO3[:] +omi_ColumnAmountO3_Units = omi_ColumnAmountO3.Units + +# There is no geolocation data, so construct it ourselves. +latitude = np.arange(0., omi_nlat) * omi_delta_lat + omi_lat_ll + 0.125 +longitude = np.arange(0., omi_nlon) * omi_delta_lon + omi_lon_ll + 0.125 + +# Set data up for MET +met_data = omi_ColumnAmountO3_vals.copy() +omi_MidPointUTC_dt = omi_StartUTC_dt + ((omi_EndUTC_dt - omi_StartUTC_dt)/2) +print(f"Data runs from {omi_StartUTC_dt:%Y%m%d_%H%M%S} to " + +f"{omi_EndUTC_dt:%Y%m%d_%H%M%S}...setting valid date as " + +f"{omi_EndUTC_dt:%Y%m%d_%H%M%S}") +met_data.attrs = { + 'valid': f"{omi_EndUTC_dt:%Y%m%d_%H%M%S}", + 'init': f"{omi_EndUTC_dt:%Y%m%d_%H%M%S}", + 'lead': '00', + 'accum': '00', + 'name': 'ColumnAmountO3', + 'standard_name': 'total_column_ozone', + 'long_name': 'total_column_ozone', + 'level': 'TotalColumn', + 'units': omi_ColumnAmountO3_Units, + 'grid': { + 'type': 'LatLon', + 'name': 'OMI Grid', + 'lat_ll': omi_lat_ll, + 'lon_ll': omi_lon_ll, + 'delta_lat': omi_delta_lat, + 'delta_lon': omi_delta_lon, + 'Nlat': omi_nlat, + 'Nlon': omi_nlon, + } +} +attrs = met_data.attrs From a61bb93406dc4ee44b2fbc6d68955699879ee0df Mon Sep 17 00:00:00 2001 From: bikegeek <3753118+bikegeek@users.noreply.github.com> Date: Wed, 7 Feb 2024 14:46:51 -0700 Subject: [PATCH 2/2] Feature 2406 redo usecase rrfs (#2488) * issue #2406 RRFS use case files * issue #2406 added usecase to tests * Issue #2406 added metplotpy and metcalcpy as dependencies --- .github/parm/use_case_groups.json | 9 +- ...tRRFS_fcstOnly_Reformat_Aggregate_Plot.png | Bin 0 -> 70128 bytes ...format_Aggregate_Plot_ecnt_spread_skill.py | 255 ++++++++++++++++ internal/tests/use_cases/all_use_cases.txt | 1 + ...RRFS_fcstOnly_Reformat_Aggregate_Plot.conf | 67 +++++ .../aggregate_ecnt.py | 66 ++++ .../aggregate_ecnt.yaml | 41 +++ .../plot_spread_skill.py | 35 +++ .../plot_spread_skill.yaml | 281 ++++++++++++++++++ .../reformat_ecnt.yaml | 23 ++ .../reformat_ecnt_linetype.py | 58 ++++ 11 files changed, 834 insertions(+), 2 deletions(-) create mode 100644 docs/_static/short-range_UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.png create mode 100755 docs/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot_ecnt_spread_skill.py create mode 100755 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf create mode 100755 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.py create mode 100644 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.yaml create mode 100755 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.py create mode 100644 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.yaml create mode 100755 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt.yaml create mode 100755 parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt_linetype.py diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index db716d52c5..5684f4f2cd 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -61,12 +61,12 @@ }, { "category": "marine_and_cryosphere", - "index_list": "0-1", + "index_list": "0-2", "run": false }, { "category": "marine_and_cryosphere", - "index_list": "2-5", + "index_list": "3-5", "run": false }, { @@ -264,6 +264,11 @@ "index_list": "13", "run": false }, + { + "category": "short_range", + "index_list": "14", + "run": false + }, { "category": "space_weather", "index_list": "0-1", diff --git a/docs/_static/short-range_UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.png b/docs/_static/short-range_UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfa948d3c0ec82a3363f3d835e1a9ae995f3089 GIT binary patch literal 70128 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 literal 0 HcmV?d00001 diff --git a/docs/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot_ecnt_spread_skill.py b/docs/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot_ecnt_spread_skill.py new file mode 100755 index 0000000000..c48e6c6cec --- /dev/null +++ b/docs/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot_ecnt_spread_skill.py @@ -0,0 +1,255 @@ +""" +UserScript: Reformat MET .stat ECNT data, calculate aggregation statistics, and generate a spread skill plot +====================================================================================================================== + +model_applications/ +short_range/ +UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot_ecnt_spread_skill.py + +""" + +################################################################################# +# Scientific Objective +# -------------------- +# +# This use case illustrates how to use MET .stat output (using the ECNT linetype data) to generate a +# spread skill plot using a subset of the METplus Analysis Tools (METdataio, METcalcpy, +# and METplotpy). The METdataio METreformat module extracts the ECNT linetype data and +# performs reformatting, the METcalcpy agg-stat module performs aggregation, and the +# METplotpy line plot is used to generate the spread skill plot. +# + +################################################################################# +# Datasets +# -------- +# +# * Forecast dataset: RRFS GEFS (Rapid Refresh Forecast System Global Ensemble Forecast System) +# * Observation dataset: None +# +# **Input**: MET .stat files from MET ensemble-stat tool for RRFS for 20220506 +# +# **Location**: All the input data required for this use case can be found in the met_test sample data tarball +# (**sample_data-short_range.tgz**). +# +# Click here to see the METplus releases page and download sample data for the appropriate +# release: https://github.com/dtcenter/METplus/releases +# +# See `Running METplus `_ +# section for more information. +# +# **This tarball should be unpacked into the directory corresponding to the value of INPUT_BASE** in the +# `User Configuration File `_ +# section. +# + +############################################################################# +# External Dependencies +# --------------------- +# You will need to use the version of Python that is required for the METplus version +# in use. Refer to the Installation section of the User's Guide for basic Python requirements: +# https://metplus.readthedocs.io/en/latest/Users_Guide/installation.html +# +# The METplus Analysis tools: METdataio, METcalcpy, and METplotpy have the additional third-party +# Python package requirements. The version numbers are found in the requirements.txt file found at the +# top-level directory of each repository. +# +# * lxml +# * pandas +# * pyyaml +# * numpy +# * netcdf4 +# * xarray +# * scipy +# * metpy +# * pint +# * python-dateutil +# * kaleido (python-kaleido) +# * plotly +# * matplotlib + + + +############################################################################## +# METplus Components +# ------------------ +# +# This use case runs the UserScript wrapper tool to run a user provided script, +# in this case, reformat_ecnt_linetype.py, agg_stat_ecnt.py and plot_spread_skill.py. +# It also requires the METdataio, METcalcpy and METplotpy source code to reformat the MET .stat output, +# perform aggregation, and generate the plot. Clone the METdataio repository +# (https://github.com/dtcenter/METdataio), +# METcalcpy repository (https://github.com/dtcenter/METcalcpy, and the METplotpy +# repository (https://github.com/dtcenter/METplotpy) under the same base directory as the +# METPLUS_BASE directory so that the METdataio, METcalcpy, and METplotpy directories are under the +# same base directory (i.e. if the METPLUS_BASE directory is /home/username/working/METplus, +# then clone the METdataio, METcalcpy and METplotpy source code into the /home/username/working directory) +# +# Clone the METdataio, METcalcpy, and METplotpy source code from their repositories under a base directory. The +# repositories are located: +# +# * https://github.com/dtcenter/METdataio +# * https://github.com/dtcenter/METcalcpy +# * https://github.com/dtcenter/METplotpy +# +# +# +# Define the OUTPUT_BASE, INPUT_BASE, and MET_INSTALL_DIR settings in the user +# configuration file. For instructions on how to set up the user configuration file, refer to the `User ConfigurationFile +# `_ section. +# + + +############################################################################## +# METplus Workflow +# ---------------- +# +# This use case reads in the MET .stat output that contains the ECNT linetype (from +# the MET ensemble-stat tool). The .stat output *MUST* reside under one directory. +# If .stat files are spread among multiple directories, these must be consolidated under a +# single directory. +# The use case loops over three processes: reformatting, aggregating, and plotting. +# + + +############################################################################## +# METplus Configuration +# --------------------- +# +# METplus first loads all the configuration files found in parm/metplus_config, +# then it loads any configuration files passed to METplus via the command line +# with the -c option, i.e. -c parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf +# +# .. highlight:: bash +# .. literalinclude:: ../../../../parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf +# + +############################################################################# +# MET Configuration +# --------------------- +# +# There are no MET tools used in this use case. The use case uses MET .stat +# output as input for the reformatting step. +# + +############################################################################## +# Python Embedding +# ---------------- +# +# There is no python embedding in this use case +# + +############################################################################## +# Python Scripts +# ---------------- +# This use case uses Python scripts to invoke the METdataio reformatter, the METcalcpy aggregator, and the METplotpy +# line plot. +# +# The following Python script (from METdataio) is used to reformat the MET .stat ECNT linetype data +# into a format that can be used by the aggregating script. +# +# .. highlight:: python +# .. literalinclude:: ../../../../parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt_linetype.py +# +# This Python script (from METcalcpy) is used to calculate aggregation statistics for the ECNT linetype. +# +# .. highlight:: python +# .. literalinclude:: ../../../../parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.py +# +# Finally,this Python script (from METplotpy) is used to generate a spread-skill plot using the METplotypy line plot code. +# +# .. highlight:: python +# .. literalinclude:: ../../../../parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.py +# + +############################################################################## +# Running METplus +# --------------- +# +# This use case can be run two ways: +# +# 1) Passing in UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf, +# then a user-specific system configuration file:: +# +# run_metplus.py -c /path/to/METplus/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf -c /path/to/user_system.conf +# +# 2) Modifying the configurations in parm/metplus_config, then passing in UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf:: +# +# run_metplus.py -c /path/to/METplus/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf +# +# The former method is recommended. Whether you add them to a user-specific configuration file or modify the metplus_config files, the following variables must be set correctly: +# +# * **INPUT_BASE** - Path to directory where sample data tarballs are unpacked (See Datasets section to obtain tarballs). This is not required to run METplus, but it is required to run the examples in parm/use_cases +# * **OUTPUT_BASE** - Path where METplus output will be written. This must be in a location where you have write permissions +# * **MET_INSTALL_DIR** - Path to location where MET is installed locally +# +# and for the [exe] section, you will need to define the location of NON-MET executables. +# If the executable is in the user's path, METplus will find it from the name. +# If the executable is not in the path, specify the full path to the executable here (i.e. RM = /bin/rm) +# The following executables are required for performing series analysis use cases: +# +# Example User Configuration File:: +# +# [config] +# INPUT_BASE = /path/to/sample/input/data +# OUTPUT_BASE = /path/to/output/dir +# MET_INSTALL_DIR = /path/to/met-X.Y +# +# +# [exe] +# RM = /path/to/rm +# CUT = /path/to/cut +# TR = /path/to/tr +# NCAP2 = /path/to/ncap2 +# CONVERT = /path/to/convert +# NCDUMP = /path/to/ncdump +# + +############################################################################## +# Expected Output +# ---------------- +# +# A successful run will output the following both to the screen and to the logfile, one for the +# reformat, aggregate, and plot steps of the use case:: +# +# INFO: METplus has successfully finished running. +# +# +# **Reformat Output** +# +# The reformatted ensemble-stat ECNT linetype data should exist in the location specified in the user +# configuration file (OUTPUT_BASE). Verify that the ensemble_stat_ecnt.data file exists. The file now has all +# the statistics under the stat_name and stat_value columns, all ECNT statistic columns labelled with their +# corresponding names (e.g. crps, crpss, rmse, etc.) and confidence level values under the +# following columns: stat_btcl and stat_btcu +# +# +# **Aggregation Output** +# +# The METcalcpy agg_stat module is used to calculate aggregated statistics and confidence intervals for each +# series (line) point. +# +# **Plot Output** +# +# A spread-skill plot of temperature for the RMSE, SPREAD_PLUS_OERR, and a ratio line of SPREAD_PLUS_OERR/RMSE is +# created and found in the output location specified in the user configuration file (OUTPUT_BASE). The plot is named +# short-range_UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.png +# +# + +############################################################################## +# Keywords +# -------- +# +# .. note:: +# +# * UserScriptUseCase +# * ShortRangeAppUseCase +# * METdataioUseCase +# * METcalcpyUseCase +# * METplotpyUseCase +# +# Navigate to the :ref:`quick-search` page to discover other similar use cases. +# +# +# +# sphinx_gallery_thumbnail_path = '_static/short-range_UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.png' diff --git a/internal/tests/use_cases/all_use_cases.txt b/internal/tests/use_cases/all_use_cases.txt index 6bb6af4eff..658f73d3dd 100644 --- a/internal/tests/use_cases/all_use_cases.txt +++ b/internal/tests/use_cases/all_use_cases.txt @@ -175,6 +175,7 @@ Category: short_range 11::UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalProfile::model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalProfile.conf:: metplotpy_env 12::UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalCrossSection::model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalCrossSection.conf:: metplotpy_env 13::MODEMultivar_fcstHRRR_obsMRMS_HRRRanl::model_applications/short_range/MODEMultivar_fcstHRRR_obsMRMS_HRRRanl.conf +14::UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot::model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf:: metdataio, metcalcpy, metplotpy,mp_analysis_env Category: space_weather diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf new file mode 100755 index 0000000000..6ee8473174 --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf @@ -0,0 +1,67 @@ +[config] + +# Documentation for this use case can be found at +# https://metplus.readthedocs.io/en/latest/generated/model_applications/short-range/UserScript_fcstRRFS_obsOnly_Reformat_Aggregate_Plot.html + +# For additional information, please see the METplus Users Guide. +# https://metplus.readthedocs.io/en/latest/Users_Guide + +### +# Processes to run +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list +### + +PROCESS_LIST = UserScript(reformatter), UserScript(aggregate), UserScript(plotting) + +### +# Time Info +# LOOP_BY options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +# LEAD_SEQ is the list of forecast leads to process +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control +### + +LOOP_BY = VALID +VALID_TIME_FMT = %Y%m%d_%H%M%S +VALID_BEG = 20220506_000000 + +USER_SCRIPT_RUNTIME_FREQ = RUN_ONCE +LOOP_ORDER = processes + +### +# UserScript Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#userscript +### + + +[user_env_vars] +REFORMAT_YAML_CONFIG_NAME = {PARM_BASE}/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt.yaml +AGGREGATE_YAML_CONFIG_NAME = {PARM_BASE}/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.yaml +PLOTTING_YAML_CONFIG_NAME = {PARM_BASE}/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.yaml +REFORMAT_INPUT_BASE = {INPUT_BASE}/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot +REFORMAT_OUTPUT_BASE = {OUTPUT_BASE}/reformatted +AGGREGATE_INPUT_BASE = {REFORMAT_OUTPUT_BASE} +AGGREGATE_OUTPUT_BASE = {OUTPUT_BASE}/aggregated +PLOT_INPUT_BASE = {AGGREGATE_OUTPUT_BASE} +PLOT_OUTPUT_BASE = {OUTPUT_BASE}/plot +METDATAIO_BASE = {METPLUS_BASE}/../METdataio +METCALCPY_BASE = {METPLUS_BASE}/../METcalcpy +METPLOTPY_BASE = {METPLUS_BASE}/../METplotpy +PYTHONPATH = {METDATAIO_BASE}:{METDATAIO_BASE}/METdbLoad:{METDATAIO_BASE}/METdbLoad/ush:{METDATAIO_BASE}/METreformat:{METCALCPY_BASE}:{METCALCPY_BASE}/metcalcpy:{METPLOTPY_BASE}:{METPLOTPY_BASE}/metplotpy/plots + + +[reformatter] +USER_SCRIPT_COMMAND = {PARM_BASE}/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt_linetype.py + +[aggregate] +USER_SCRIPT_COMMAND = {PARM_BASE}/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.py + +[plotting] +USER_SCRIPT_COMMAND = {PARM_BASE}/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.py + + + + diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.py b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.py new file mode 100755 index 0000000000..4766dd500e --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 + + +import os +import time +import logging +import pandas as pd +import yaml +from metcalcpy.util import read_env_vars_in_config as readconfig +from metcalcpy.agg_stat import AggStat + +logger = logging.getLogger(__name__) + +def main(): + ''' + Read in the config file (with ENVIRONMENT variables defined in the + UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf). Invoke METcalcpy agg_stat module to + calculate the aggregation statistics, clean up the data so it is compatible for the METplotpy line plot + and write a tab-separated ASCII file. + + ''' + + start_agg_step = time.time() + + # Read in the YAML configuration file. Environment variables in + # the configuration file are supported. + try: + input_config_file = os.getenv("AGGREGATE_YAML_CONFIG_NAME", "aggregate_ecnt.yaml") + settings = readconfig.parse_config(input_config_file) + logger.info(settings) + except yaml.YAMLError as exc: + logger.error(exc) + + # Calculate the aggregation statistics using METcalcpy agg_stat + agg_begin = time.time() + try: + os.mkdir(os.getenv("AGGREGATE_OUTPUT_BASE")) + except OSError: + # Directory already exists, ignore error. + pass + + AGG_STAT = AggStat(settings) + AGG_STAT.calculate_stats_and_ci() + agg_finish = time.time() + time_for_aggregation = agg_finish - agg_begin + logger.info("Total time for calculating aggregation statistics (in seconds): {time_for_aggregation}") + + # Add a 'dummy' column (fcst_valid with the same values as fcst_lead) + # to the output data. The aggregation was based + # on the fcst_lead BUT the line plot requires a *second* time-related + # column (i.e. fcst_init_beg, fcst_valid, etc.) to identify unique + # points. In this case, the aggregated data already consists of + # unique points. If any other time column was used, this + # step would not be required. + output_file = settings['agg_stat_output'] + df = pd.read_csv(output_file, sep='\t') + df['fcst_valid'] = df['fcst_lead'] + df.to_csv(output_file, sep='\t') + + finish_agg = time.time() + total_agg_step = finish_agg - start_agg_step + logger.info("Total time for performing the aggregation step (in sec): {total_agg_step} ") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.yaml b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.yaml new file mode 100644 index 0000000000..4d94d41809 --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/aggregate_ecnt.yaml @@ -0,0 +1,41 @@ +agg_stat_input: !ENV '${AGGREGATE_INPUT_BASE}/ensemble_stat_ecnt.data' +agg_stat_output: !ENV '${AGGREGATE_OUTPUT_BASE}/ecnt_aggregated.data' +alpha: 0.05 +append_to_file: null +circular_block_bootstrap: True +derived_series_1: [] +derived_series_2: [] +event_equal: False +fcst_var_val_1: + TMP: + - ECNT_RMSE + - ECNT_SPREAD_PLUS_OERR +fcst_var_val_2: {} +indy_vals: +- '30000' +- '40000' +- '60000' +- '90000' +- '120000' +- '150000' +- '160000' +- '170000' +- '180000' +- '200000' +- '240000' +- '270000' + +indy_var: fcst_lead +line_type: ecnt +list_stat_1: + - ECNT_RMSE + - ECNT_SPREAD_PLUS_OERR +list_stat_2: [] +method: perc +num_iterations: 1 +num_threads: -1 +random_seed: null +series_val_1: + model: + - RRFS_GEFS_GF.SPP.SPPT +series_val_2: {} diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.py b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.py new file mode 100755 index 0000000000..d482ba5d4e --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + + +import os +from time import perf_counter +import logging +import yaml +import metcalcpy.util.read_env_vars_in_config as readconfig +from metplotpy.plots.line import line + +def main(): + + # Read in the YAML configuration file. Environment variables in + # the configuration file are supported. + try: + input_config_file = os.getenv("PLOTTING_YAML_CONFIG_NAME", "plot_spread_skill.yaml") + settings = readconfig.parse_config(input_config_file) + logging.info(settings) + except yaml.YAMLError as exc: + logging.error(exc) + + try: + start = perf_counter() + plot = line.Line(settings) + plot.save_to_file() + plot.write_html() + plot.write_output_file() + end = perf_counter() + execution_time = end - start + plot.line_logger.info(f"Finished creating line plot, execution time: {execution_time} seconds") + except ValueError as val_er: + print(val_er) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.yaml b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.yaml new file mode 100644 index 0000000000..2b1951bd82 --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/plot_spread_skill.yaml @@ -0,0 +1,281 @@ +alpha: 0.05 +box_avg: 'False' +box_boxwex: 0.2 +box_notch: 'False' +box_outline: 'True' +box_pts: 'False' +caption_align: 0.0 +caption_col: '#333333' +caption_offset: 3.0 +caption_size: 0.8 +caption_weight: 1 +cex: 1 + +colors: +# Colors for each line that will be generated. +# Accessible colors https://davidmathlogic.com/colorblind/#%23D81B60-%231E88E5-%23FFC107-%23004D40 +- '#D41159' # reddish +- '#4B0092' # purple-ish +- '#1Aff1A' # lime green-ish + + +con_series: +- 1 +- 1 +- 1 + +create_html: 'False' + +# Two derived series (lines) are supported (i.e. difference or ratio lines: DIFF or RATIO). +derived_series_1: + # Generate the ratio line of the ECNT spread_plus_oerr/rmse for temperature and the + # The first line is the top portion (left side) of the ratio, the second is the bottom (right side), and the + # third line indicates the type of derived line (i.e. RATIO or DIFF). This is a list of lists, so remember + # to have two '-' at the start of the first line ( - - 'model var stat') + # + # RRFS_GEFS_GF.SPP.SPPT model for temperature and the SPREAD_PLUS_OERR and RMSE statistics. + # +- - RRFS_GEFS_GF.SPP.SPPT TMP ECNT_SPREAD_PLUS_OERR + - RRFS_GEFS_GF.SPP.SPPT TMP ECNT_RMSE + - RATIO + +derived_series_2: [] + +dump_points_1: 'False' +dump_points_2: 'False' +event_equal: 'False' +fcst_var_val_1: + # Specify the variable name and the statistic(s) of interest. + # This will generate the line for the spread_plus_oerr values for TMP and a + # line for rmse values for TMP. + TMP: + - ECNT_SPREAD_PLUS_OERR + - ECNT_RMSE + +fcst_var_val_2: {} + +fixed_vars_vals_input: {} +grid_col: '#cccccc' +grid_lty: 3 +grid_lwd: 1 +grid_on: 'True' +grid_x: listX + +# Labels for the x-axis +indy_label: +- '3' +- '4' +- '6' +- '9' +- '12' +- '15' +- '16' +- '17' +- '18' +- '20' +- '24' +- '27' +- '30' +- '32' +- '33' +- '34' +- '36' + +# Stagger the points so overlapping points don't obscure one another +indy_stagger_1: 'True' +indy_stagger_2: 'True' + +# Values for the x-axis +indy_vals: +- '30000' +- '40000' +- '60000' +- '90000' +- '120000' +- '150000' +- '160000' +- '170000' +- '180000' +- '200000' +- '240000' +- '270000' +- '300000' +- '320000' +- '330000' +- '340000' +- '360000' + +# Specify the variable corresponding to the x-axis +indy_var: fcst_lead + +legend_box: o +legend_inset: + x: 0.0 + y: -0.25 +legend_ncol: -1 +legend_size: 0.8 +line_type: None + +# Explicitly set only the statistics for the derived series line +# (without the accompanying variable name) +list_stat_1: + - ECNT_SPREAD_PLUS_OERR + - ECNT_RMSE +list_stat_2: [] + +mar: +- 8 +- 4 +- 5 +- 4 +method: bca +mgp: +- 1 +- 1 +- 0 +num_iterations: 1 +num_threads: -1 +plot_caption: Caption +plot_ci: +- std +- std +- std + +# Turn on/off displaying the lines +plot_disp: +- 'True' +- 'True' +- 'True' + + +plot_filename: !ENV '${PLOT_OUTPUT_BASE}/short-range_UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.png' +plot_height: 8.5 +plot_res: 72 +plot_stat: median +plot_type: png16m +plot_units: in +plot_width: 11.0 + +# Optional, uncomment and set to directory to store the .points1 file +# that is used by METviewer (created when dump_points_1 is set to True) +# if dump_points_1 is True and this is uncommented, the points1 file +# will be saved in the default location (i.e. where the input data file is stored). +#points_path: /path/to + +random_seed: null + +# Define the style of the line +series_line_style: +- '-' # solid +- '--' # dashes +- ':' # dots + + + +series_line_width: +- 1 +- 1 +- 1 + +series_order: +# The order in which to apply settings for line width, line style, colors, symbols, etc. +# A convenience for experimenting with which color/line style/symbol combination works best for +# a particular line. +- 1 +- 2 +- 3 + + +series_symbols: +- . # circle +- "s" # square +- ^ # triangle up + + +series_type: +# b=lines + markers, l=lines only p=markers only +- b +- b +- b + +series_val_1: + # value of interest, in this case, the model, RRFS_GEFS_GF.SPP.SPPT + model: + - 'RRFS_GEFS_GF.SPP.SPPT' +series_val_2: {} + +show_nstats: 'False' +show_signif: +- 'False' +- 'False' +- 'False' + + +stat_input: !ENV '${PLOT_INPUT_BASE}/ecnt_aggregated.data' +sync_yaxes: 'False' +title: Spread skill plot with ratio line from MET ensemble-stat data (aggregation statistics) +title_align: 0.5 +title_offset: -2 +title_size: 1.4 +title_weight: 2.0 +# Use empty list to use automatically generated legend labels +user_legend: [] +# comment above and uncomment below to use user-specified legend labels +#user_legend: ['ECNT SPREAD_PLUS_OERR for RRFS_GEFS_GF.SPP.SPPT TMP ', 'ECNT RMSE for for RRFS_GEFS_GF.SPP.SPPT TMP', 'RATIO(RRFS_GEFS_GF.SPP.SPPT TMP SPREAD_PLUS_OERR/RMSE)'] +variance_inflation_factor: 'False' +vert_plot: 'False' +x2lab_align: 0.5 +x2lab_offset: -0.5 +x2lab_size: 0.8 +x2lab_weight: 1 +x2tlab_horiz: 0.5 +x2tlab_orient: 1 +x2tlab_perp: 1 +x2tlab_size: 0.8 +xaxis: fcst lead (hr) +xaxis_reverse: 'False' +xlab_align: 0.5 +xlab_offset: 2 +xlab_size: 1 +xlab_weight: 1 +xlim: [] +xtlab_decim: 0 +xtlab_horiz: 0.5 +xtlab_orient: 1 +xtlab_perp: -0.75 +xtlab_size: 1 +y2lab_align: 0.5 +y2lab_offset: 1 +y2lab_size: 1 +y2lab_weight: 1 +y2lim: [] +y2tlab_horiz: 0.5 +y2tlab_orient: 1 +y2tlab_perp: 1 +y2tlab_size: 1.0 +yaxis_1: Statistic value (or ratio of statistic values) +yaxis_2: '' +ylab_align: 0.5 +ylab_offset: -2 +ylab_size: 1 +ylab_weight: 1 +ylim: [] +ytlab_horiz: 0.5 +ytlab_orient: 1 +ytlab_perp: 0.5 +ytlab_size: 1 + +show_legend: +# 0 for don't show, 1 to show + - 1 + - 1 + - 1 + + +# Default logging is ERROR and to stdout. Omit the log_filename and log_level setting name and value if +# to use default settings. +log_filename: !ENV '${PLOT_OUTPUT_BASE}/spread_skill_ecnt.log' +log_level: INFO + +# 0-value on the x-axis is to the far left. +start_from_zero: False diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt.yaml b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt.yaml new file mode 100755 index 0000000000..a60bbdac21 --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt.yaml @@ -0,0 +1,23 @@ +# The REFORMAT_OUTPUT_BASE and REFORMAT_INPUT_BASE are defined in the +# UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot.conf file +# + +# Indicates whether the .stat file input contains aggregated statistics (i.e. output from MET stat-analysis +# has been applied to MET .stat output from point-stat, grid-stat, or ensemble-stat, or previously aggregated +# via METcalcpy agg_stat). In this example, the input data is not aggregated. +# Set this to False, ensuring the appropriate format for METcalcpy agg_stat. +input_stats_aggregated: False +output_dir: !ENV '${REFORMAT_OUTPUT_BASE}' +output_filename: ensemble_stat_ecnt.data +line_type: ECNT +input_data_dir: !ENV '${REFORMAT_INPUT_BASE}' + +# !!! DO NOT modify the settings for the log_directory and log_filename.!!! +# The METdataio METreformat code is expecting values for these settings even though the log +# messages are in the METplus logfile. +log_directory: !ENV '${REFORMAT_OUTPUT_BASE}' +log_filename: 'ecnt_reformat.log' + +# Log levels are: INFO, DEBUG, WARNING, ERROR. +# Set to INFO for most verbose, ERROR for least verbose. +log_level: DEBUG diff --git a/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt_linetype.py b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt_linetype.py new file mode 100755 index 0000000000..239458c1f2 --- /dev/null +++ b/parm/use_cases/model_applications/short_range/UserScript_fcstRRFS_fcstOnly_Reformat_Aggregate_Plot/reformat_ecnt_linetype.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + + +import os +import time +import logging + +from METdbLoad.ush.read_data_files import ReadDataFiles +from METdbLoad.ush.read_load_xml import XmlLoadFile +from METreformat.write_stat_ascii import WriteStatAscii +from metcalcpy.util import read_env_vars_in_config as readconfig + + +logger = logging.getLogger(__name__) + +def main(): + + # Read in the YAML configuration file. Environment variables in + # the configuration file are supported. + input_config_file = os.getenv("REFORMAT_YAML_CONFIG_NAME", "reformat_ecnt.yaml") + settings = readconfig.parse_config(input_config_file) + logging.info(settings) + + + # Replacing the need for an XML specification file, pass in the XMLLoadFile and + # ReadDataFile parameters + rdf_obj: ReadDataFiles = ReadDataFiles() + xml_loadfile_obj: XmlLoadFile = XmlLoadFile(None) + + # Retrieve all the filenames in the data_dir specified in the YAML config file + load_files = xml_loadfile_obj.filenames_from_template(settings['input_data_dir'], + {}) + + flags = xml_loadfile_obj.flags + line_types = xml_loadfile_obj.line_types + beg_read_data = time.perf_counter() + rdf_obj.read_data(flags, load_files, line_types) + end_read_data = time.perf_counter() + time_to_read = end_read_data - beg_read_data + logger.info("Time to read input .stat data files using METdbLoad: {time_to_read}") + file_df = rdf_obj.stat_data + + # Check if the output file already exists, if so, delete it to avoid + # appending output from subsequent runs into the same file. + existing_output_file = os.path.join(settings['output_dir'], settings['output_filename']) + logger.info("Checking if {existing_output_file} already exists") + if os.path.exists(existing_output_file): + logger.info("Removing existing output file {existing_output_file}") + os.remove(existing_output_file) + + # Write stat file in ASCII format + stat_lines_obj: WriteStatAscii = WriteStatAscii(settings) + # stat_lines_obj.write_stat_ascii(file_df, parms, logger) + stat_lines_obj.write_stat_ascii(file_df, settings) + + +if __name__ == "__main__": + main()