# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tuomo.keskitalo@iki.fi-20110501112334-1tp9a244dp5v9h8g # target_branch: http://bzr.savannah.gnu.org/r/gsl/trunk/ # testament_sha1: 8ced23ae2da46d717b4a85af75263f1b7a86869e # timestamp: 2011-05-01 14:29:00 +0300 # base_revision_id: bjg@gnu.org-20110429185211-0bp8ojq6jmx6ggma # # Begin patch === modified file 'doc/ode-initval.texi' --- doc/ode-initval.texi 2010-10-16 18:26:18 +0000 +++ doc/ode-initval.texi 2011-05-01 10:24:40 +0000 @@ -66,7 +66,7 @@ The function should return @code{GSL_SUCCESS} if the calculation was completed successfully. Any other return value indicates an error. A -special return value @code{GSL_EBADFUNC} causes @code{odeiv2} +special return value @code{GSL_EBADFUNC} causes @code{gsl_odeiv2} routines to immediately stop and return. The user must call an appropriate reset function (e.g. @code{gsl_odeiv2_driver_reset} or @code{gsl_odeiv2_step_reset}) before continuing. Use return values @@ -82,14 +82,14 @@ matrix @code{J(i,j) = dfdy[i * dimension + j]} where @code{dimension} is the dimension of the system. -Not all of the stepper algorithms of @code{odeiv2} make use of the +Not all of the stepper algorithms of @code{gsl_odeiv2} make use of the Jacobian matrix, so it may not be necessary to provide this function (the @code{jacobian} element of the struct can be replaced by a null pointer for those algorithms). The function should return @code{GSL_SUCCESS} if the calculation was completed successfully. Any other return value indicates an error. A -special return value @code{GSL_EBADFUNC} causes @code{odeiv2} +special return value @code{GSL_EBADFUNC} causes @code{gsl_odeiv2} routines to immediately stop and return. The user must call an appropriate reset function (e.g. @code{gsl_odeiv2_driver_reset} or @code{gsl_odeiv2_step_reset}) before continuing. Use return values @@ -188,7 +188,7 @@ functions defined in the system @var{sys} returns @code{GSL_EBADFUNC}, the function returns immediately with the same return code. In this case the user must call @code{gsl_odeiv2_step_reset} before calling -it again. +this function again. @end deftypefun @@ -490,7 +490,7 @@ @code{GSL_EBADFUNC}, the function returns immediately with the same return code. In this case the user must call @code{gsl_odeiv2_step_reset} and -@code{gsl_odeiv2_evolve_reset} before calling it again. +@code{gsl_odeiv2_evolve_reset} before calling this function again. Otherwise, if the user-supplied functions defined in the system @var{sys} or the stepping function @var{step} return a status other @@ -591,8 +591,8 @@ returns with @code{GSL_ENOPROG}. If the user-supplied functions defined in the system @var{sys} returns @code{GSL_EBADFUNC}, the function returns immediately with the same return code. In this case -the user must call @code{gsl_odeiv2_driver_reset} before calling it -again. +the user must call @code{gsl_odeiv2_driver_reset} before calling this +function again. @end deftypefun @deftypefun {int} gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * @var{d}, double * @var{t}, const double @var{h}, const unsigned long int @var{n}, double @var{y}[]) === modified file 'ode-initval2/ChangeLog' --- ode-initval2/ChangeLog 2010-08-06 12:13:56 +0000 +++ ode-initval2/ChangeLog 2011-05-01 11:23:34 +0000 @@ -1,184 +1,261 @@ -2009-08-12 Brian Gough - - * rk4.c (rk4_alloc): fix order of free statements to avoid memory - leak - -2009-07-09 Brian Gough - - * step.c (gsl_odeiv_step_free): handle NULL argument in free - - * evolve.c (gsl_odeiv_evolve_free): handle NULL argument in free - - * control.c (gsl_odeiv_control_free): handle NULL argument in free - -2009-04-21 Brian Gough - - * gear2.c (gear2_apply): save initial values of y for possible - failures - -2009-04-20 Brian Gough - - * evolve.c (gsl_odeiv_evolve_apply): restore original t value when - step fails - -2008-07-03 Brian Gough - - * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir - -2008-01-28 Brian Gough - - * test.c (test_evolve_negative_h): test evolution with negative - steps as well as positive - -2008-01-03 Brian Gough - - * evolve.c (gsl_odeiv_evolve_apply): handle the case where - GSL_ODEIV_HADJ_DEC does not represent a real decrease (e.g. where - x+h = x due to finite precision) - -2006-07-29 Brian Gough - - * evolve.c (gsl_odeiv_evolve_apply): notify user of step-size - which caused any failure by returning it - -2006-06-13 Brian Gough - - * gsl_odeiv.h, control.c (gsl_odeiv_control_hadjust): change y0 to - y in prototype to avoid conflict with bessel y0() in math.h - - * test.c (test_odeiv_stepper): change y0 to ystart - -2005-04-08 Brian Gough - - * Fixed all functions to consistently return status instead of - GSL_EBADFUNC. - -2004-12-29 Brian Gough - - * test.c (test_compare_vanderpol): avoid variable size array - (test_compare_oregonator): as above - -2004-12-23 Brian Gough - - * test.c (test_evolve_xsin): changed description from "failures" - to "errors" - -2004-12-22 Brian Gough - - * rk2simp.c (rk2simp_step): added missing static declaration - - * gear1.c (gear1_step): added missing static declaration - - * gear2.c (gear2_step): added missing static declaration - - * rk4imp.c (rk4imp_step): added missing static declaration - - * rk4.c (rk4_step): added missing static declaration - - * rk2imp.c (rk2imp_step): added missing static declaration - -2004-12-01 Brian Gough - - * updated all solvers to ensure correct handling of error codes - from user defined functions - - * test.c (rhs_xsin): added a test which includes failures of the - function itself and jacobian - -2004-11-25 Brian Gough - - * gear2.c (gear2_alloc): added check for non-allocation of primer, - and two-step error estimation - -2004-11-23 Brian Gough - - * gear1.c (gear1_apply): use 90% error bound - - * rk2imp.c (rk2imp_apply): use 90% error bound - - * rk2simp.c (rk2simp_apply): use 90% error bound - -2004-11-18 Brian Gough - - * test.c: new test program (Tuomo Keskitalo) - -2004-11-12 Brian Gough - - * evolve.c (gsl_odeiv_evolve_apply): check for internal stepper - failure (Tuomo Keskitalo) - - * bsimp.c: gives exact dydt_out (Tuomo Keskitalo) - - * rk2simp.c: new semi-implicit solver (Tuomo Keskitalo) - - * gear1.c rkf45.c rkck.c rk8pd.c rk4imp.c rk2imp.c rk2.c rk4.c: - fix error estimate, exact derivatives on output (Tuomo Keskitalo) - -2004-05-28 Brian Gough - - * bsimp.c (bsimp_apply): fix prototype of function to match - definition in typedef by removing const on double args. - -Sat Aug 3 19:02:37 2002 Brian Gough - - * cscal.c (struct): use matlab style error control, with scalar - relative error and vector absolute error - -Wed Oct 3 13:19:28 2001 Brian Gough - - * evolve.c (gsl_odeiv_evolve_apply): report error if step - direction does not match interval direction - - * cstd.c (std_control_hadjust): allow for negative step-sizes - - * evolve.c (gsl_odeiv_evolve_apply): allow for integrating - backwards in time - -Sat Sep 29 21:02:36 2001 Brian Gough - - * bsimp.c: use the condition |D^-1 Delta| >> 1 to detect - singularities, as described in the paper and implemented in METAN1 - by Deuflhard et al. - - * evolve.c (gsl_odeiv_evolve_apply): reset the final_step flag - whenever the step size is decreased - -Sun Jul 1 22:42:02 2001 Brian Gough - - * bsimp.c: modified to use new-style vector views - -Fri Jun 22 11:59:24 2001 Brian Gough - - * evolve.c: keep track of failed step count - -Tue Jun 12 11:34:23 2001 Brian Gough - - * rkf45.c: added Runge-Kutta Fehlberg method, RKF45 - - * reorganized to use standard gsl conventions - -Mon Apr 23 10:26:22 2001 Brian Gough - - * unified error handling conventions to _e for error handling - functions and no suffix for plain functions, so _impl functions - are no longer needed. - - * removed tests for EFAULT, since EFAULT should only apply to - invalid non-null pointers. - -2000-05-14 Steve Robbins - - * Makefile.am (test_LDADD): put libgslpermutation ahead of - libgslvector in the link beccause the former uses - `gsl_check_range' which is defined in the latter. - -Tue Apr 11 19:59:01 2000 Brian Gough - - * bsimp.c (bsimp_step_local): changed gsl_la prefix to gsl_linalg, - new naming convention - - -Fri Oct 1 15:46:13 1999 Brian Gough - - * bsimp.c: converted to use new-style block/vector code - +2011-05-01 Tuomo Keskitalo + + * Replaced ChangeLog with contents of ode-initval2 development log + file (ChangeLog-odeiv2_development) and reformatted the log file. + +2010-10-16 Tuomo Keskitalo + + * Modified evolve and driver so that when user function returns + GSL_EBADFUNC, then ode-initval2 functions return immediately with + that same return value. + + * Corrected bug in msadams for saving ordm1coeff to state. Thanks + to Andrew Benson for pointing out this bug! + +2010-10-10 Tuomo Keskitalo + + * driver.c: Corrected error in driver_evolve_apply, integration to + negative direction should work now. + + * Added evolve_apply_fixed_step and driver_apply_fixed_step for + users who want to use a constant step size to evolve the system. + + * test.c: added test cases for driver (negative evolution, + apply_fixed_step). + + * gsl_odeiv2.h: cleaning and add apply_fixed_step functions. + + * doc/ode-initval.texi: Replaced derivative apostrophe with \prime + (because my new system fails to make ps otherwise). Added new + documentation about apply_fixed_step functions. + +2010-10-09 Tuomo Keskitalo + + * ode-initval2 bzr development branch now at savannah: + http://bzr.savannah.gnu.org/r/gsl/ode-initval2/ + +2010-01-02 Tuomo Keskitalo + + * Changes from ode-initval2-0.9 to ode-initval2-1.0: + + * Removed set_control member from step object and added a + set_driver member to evolve, control and step objects, so that the + driver object and consequently evolve, control and step objects + are all accessible from another. Currently only some steppers + utilize this. They access the control_errlevel function via + state->driver->c instead of state->control. This modification to + the framework enables implementation of more efficient ODE + solvers, which utilize communication among evolve, control and + stepper objects. This also means that some steppers now require a + driver object, and it is best to use those stepper methods through + driver object functions. + + * cstd.c and cscal.c: Added a sanity check for errlev <= 0 + + * run indent -gnu -nut for *.c *.h + + * driver.c: added function odeiv2_driver_alloc_standard_new and + odeiv2_driver_alloc_yp_new + + * driver.c: changed n and nmax in driver struct to unsigned long + int + + * modified documentation accordingly with small nomenclature + changes and made year updates to source files + +2009-11-01 Tuomo Keskitalo + + * Merged with master and modified source to be published as a + package for gsl-1.13. + +2009-05-09 Tuomo Keskitalo + + * Agreed with Brian Gough that the modification I've made cannot + be incorporated to GSL until a major version number change, due to + changes in API. + + * Replated rk2imp with imprk2 and rk4imp with imprk4. Also renamed + impeuler to rk1imp for consistency. + + * Deleted steppers that are deprecated considering new major + release: gear1, gear2, and rk2simp. Modified test.c accordingly. + +2009-05-01 Tuomo Keskitalo + + * Merged with master (evolve.c and test.c needed some manual + work). + + * driver.c: Modified alloc-functions to minimal interface, added + set_hmax, set_nmax and set_hmin functions. + + * test.c: Added test for minimum allowed step size. + Applied indent -gnu -nut. + + * doc/ode-initval.texi: Updated documentation, added Driver + section, updated examples. + +2009-04-05 Tuomo Keskitalo + + * Several uninitialized variable corrections from Brian Gough + added + + * modnewton1, impeuler, imprk2, imprk4: removed unneeded arguments + from solve and init + + * msadams and msbdf modifications: + + * added ordprevbackup, ordwaitbackup (backups) and failcount (to + detect repeated steps rejections). + + * added checks to make sure order is not changed by more than one + order. Added sanity check to catch it. + + * corrected failure and rejection handling for first step + + * Added a heuristic stability enhancement for msbdf. This is yet + to be tested in practice. + + * test.c: Added more benchmark test cases. The results seem + sensible. + + * test.c: Note for benchmark_precision: msbdf performs badly in + rhs_func_exp. Newton iteration starts to fail to converge at some + point, and this forces very small step sizes to be used. I + currently think that this is not a bug, but that msbdf is just not + suitable for this problem. I think that msbdf's prediction step + does not give a good initial guess for Newton iteration in this + case. + + * I tried to increase max_iter in msbdf from 3 to 7 (value used in + modnewton1), and as a result, the performance was better for this + case (Newton iteration convergence was better). However, I would + not increase max_iter, because the default value of 3 is the value + used by the authors in the references, and because it would + decrease the efficiency of msbdf (method would use more function + evaluations per step, and convergence might still not be + achieved). It is best to useanother stepper in this kind of a + case. + +2009-02-28 Tuomo Keskitalo + + * new stepper: msbdf. This is a variable-coefficient linear + multistep backward differentiation formula (BDF) method in + Nordsieck form. It appears to handle stiff cases well and it is + efficient! + + * test.c: Ordered functions in file. Added extreme test case. + + * modnewton1: Convergence test now takes the desired error level + via control object into account. Modified steppers that use + modnewton1 accordingly. + + * modnewton1: Removed reuse_decomp. The variable was useless since + iteration matrix is reconstructed at each stepper call. + + * modnewton1: Dropped max_iter from 10 to 7. Hairer and Wanner + suggests a "relatively high number", but many iterations per step + is costly. + + * steppers that use step doubling for error estimates: Introduced + constant GSL_ODEIV_ERR_SAFETY in gsl_odeiv.h that is used to + multiply the error estimates (yerr). This way user can modify this + coefficient in one place if a change is wanted. + + * driver.c: This is a high level wrapper for ode-initval, which + was wished for in TODO. Added test_driver to test.c to test it. Is + this functionality enough? + + * ode-initval.texi: Added documentation for new steppers. Moved + note about user error codes to system definition. + + * Some finetuning / code cleanup. + +2009-01-21 Tuomo Keskitalo + + * New explicit stepper: msadams (An explicit variable-coefficient + linear multistep Adams method in Nordsieck form). Functional + iteration is used to solve the non-linear equation system. The + algorithms described in the references (see msadams.c) have been + adapted to fit GSL odeiv framework. Currently this is beta, but + the stepper now passes the odeiv test suite. + + * control.c, cstd.c, cscal.c: Added errlev function which + calculates desired error level. This is used in masadams (and can + be used in imp* steppers, too) to control accuracy of functional + iteration. User must call gsl_odeiv_step_set_control after + allocating step and control objects to pass the information about + control object to stepper. This change (or something similar) is + needed to pass tolerance for the stepper routines that need + it. Modified stepper routines accordingly. + + * evolve.c: Changed the step length scaling coefficient for + stepper failure from 0.1 to 0.5, because msadams seems to cope + much better with this change in stiff[0,1] test case. + + * gsl_odeiv.h: gsl_odeiv_control and control_type introduced + earlier because gsl_odeiv_step_type now refers to it. + +2008-11-01 Tuomo Keskitalo + + * New implicit solvers: imprk4 (replaces imprk42 in previous test + package), imprk2 (replaces imprk21 in previous test package) and + impeuler, which use modified Newton iteration to solve the + implicit equations. I decided to dump imprk42 and imprk21 because + I was unsure how to calculate the error estimates for them. I + think that these new implicit methods could be used instead of + rk4imp, rk2imp, gear2 and gear1, which use functional + iteration (which is inefficient for stiff problems.) However, even + these new solvers can not be used efficiently for truly nasty + stiff problems, and better solvers are still needed. + + * modnewton1.c: a modified Newton solver for solution of + non-linear equations of implicit solvers. Jacobian evaluation has + been moved from modnewton1 to imprk2, imprk4 and impeuler. + + * evolve.c: modification to decrease step size if stepper fails, + instead of giving up immediately. + + * evolve.c: A bug fix: Exit with GSL_FAILURE if step size reaches + machine precision instead of continuing with old step size. + + * test.c: added Robertson stiff test + + * test.c: embedded test_oregonator to test_compare_stiff_probelms + to test several stiff problems. Note: the tested integration + interval is rather short due to inefficiency of solvers other than + bsimp in these problems. + + * test.c: modified test_compare_vanderpol and + test_compare_stiff_problems to check against results from first + ode-solver. Changed rk4 or bsimp to first place. + + * test.c: modified stepfn and stepfn2 and expanded these to be + tested with all explicit solvers + + * test.c: removed stepfn3 and added test_broken and + test_stepsize_fail to check that evolve decreases step size below + machine precision and exits with a failure code in the end if user + functions fail continuously. + + * Changes in ode-initval.texi: + + * removed untrue sentence concerning stepping functions: "The + step-size @var{h} will be set to the step-size which caused the + error." + + * Changed gsl_odeiv_system variable name from dydt to sys for + clarity + + * added "explicit" or "implicit" to stepper introductions for + clarity + + * reformulated description of evolve_apply and step_apply and made + changes to reflect the modifications to the code. + + * clarified the point on integrating over discontinuities. It is + best to integrate in sequences. + + * removed the text suggesting the user to force a step size to + integrate over the edge of a discontinuity. The applicability of + this kind of a numerical tweak depends on the case, and should in + my opinion not to be included in a reference book. # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWWXTtZ0AB6VfgAAwcPf/9/// 366////6YBfe333jOAAAH3DO9drrqIJ8a2UvbWxAnhd3O7t9enIEi9BqEiKqqkBVp7zPGZip5akw kkAgExCYTJpPRNNT0hkAyMgAGjCBqYBE000QFDNKZQep5RpiDIAADQAENNCk1PUPUBoaABoGgBoA AAAASakQIAIaTEniE1NPKbSbUaAyNBoABoMRTU0myj0j1GgNADQPSAxAyGgGJpoBIiCCaCYQTAjQ m0E1PIE0NMgADQIkkEd6JJMuB/ZLybBNDDSYKkwvR/KpiK/TstSx4adSz1XT+SX+y4fD3nR/rEFt i6wU3RU/nUSUYQ5lz/s8fRF60/OMZKc2dM9+mjo74xsxe3h7upwDRycN7XLFLMuqobONBWHzud8/ VQeCZJuSPqq6e3SVH7+b0/EfFwO9z73nJI8gvid4eTyxgIP70fHlqdZInZVe10Xxm8qnAg2gFJ08 CLwlV0buXZg2sdyhV4nRs0T6ejsfP+4ntN/YeeOtkmZd9e3ggrkZEuna+GO6D4UNVH0jJmpBzyjV kwcD8/eCqc57Oc1z183V8ZT8IY3Dx9nDy77WvA24ImSejC0ZFDxYYe+mFEYCVSXIM74yLVnGCw2x BmAClQcAUM20zndSsqkxs3EvZWc0B/GEX1eeWnfJXRDIjWtP9ca7ZjntPPpoEt7a+M0PvCctlr67 l4Jpnttgq1h5/4dRWLrvOC4MXMDhRlW7UuRwffdNBX4AgtQG6mtW+l299aIOd5E1DHKBaeRPpcON Jf2R0ItPJb/KQnyMOEtrjlfejRepsXc1W2Q8sXzRA7+DiSM69AqpedA1O7HqtAZ69I1O1H54ToNA 5OSgjoVLWVWtzk705OBy9WicoPOD4O8YAeGJpGOCOEPdguji1Sg0ZEPNlrRBDe0ozCArEqGETLs7 vzvixY5vzD14xXmJ2xY+HHnUcXkfOVYyWycddyXvg3fKNVUampIXBeDT61HRV3Xr44ojX4lhmqwk MlF9GNNu0xUx2sDBcdDaOPasXslwdtXcDnFM3gnE1BF176D0Z71BSofa2+tUdzNe58Fr69GF/NaB Yjh4c1DHeHMtAHUvgKv2y7+sr1lnadkuYLiXV/Dvv1kVBGZGGuH3Tjlj9mzBMplDIKpqiGSLrbLw IHL7E8reyQgXe0jA9UB9yco1MMYJkIEDIuZiJvyJ+yES6PJzHAPS2oFT2KmBe2imvFxpoTisQjZj oAK8qyOmBXRd+SU1qbQvaYU2fGw0qNkrmGHKroAWYW6hiONkCjgJqi2nASUIHUSbHrp/hrdylHP2 qDwKAzKjU6ganE5waCVQIEWXvz2eGKxqxrEhE6K4Ka1js3KrVtZ/dd1OXxCKrPoLEIUenj3q0lHX g+3gj0KYunkqJqjaKB8CUnlE6doCecA0oC69VwK939E7TFY7h8qoOlSIEWO7ZYSRhCnwq+NLRobj JGIbVSovyFreiXNdlGRkm9NFTYVNMWNTK1htxsTayc1CTZnAuKky1wKBkzBvzeL6GBebHPO3qu9X DGc+e9/VTe2CEKLCMDqqjR/OBPDwk7hTb2bpLSNGrItfYconhff9ztHisrh1WZER/U5jyucPg9e6 VUQlx5D2qF4jVTWcIOTJK2Fph0BUqtxkaSKSwedxEu7VtNpTHNB2v75OZu23g8w3jP64HN1U/Y0E hkPcRzsiNk0zejJpf+PYxC/iLbGhYI1JBgyLRropC3nkirsrc/IiLJD7QHy7ZyYlLqQUHYQPKIbc tbO4SXmy+He9BC+oMtQE17fpZHz77+dYeN+nDlVVq59jUIz/LJ2wPZefXcOCCS56rksEu/WgYgYo 1ug0inbWkqxmrL4VCBB9GQe59xOIwXqY4XeqoARQxFWG2ZE8r8PGvKrMxUxcqmpoOY9Lm+t3Ku9e Bog4F8qz4GFhjagODf76JCtXM6Q1OKyliZAExXkiZ2Y5SFhR0Cm87c+BvWkbDxnKjW4pIQtfeNxo wxc6rbGRyp1lx1p3wGg+ah33wPdtn4aFcLXUpZzbDOq40YyhpBz3j1LucehI1gNiCnnW8m5Si07o gXRRBxFp2M3eHLVjc8JibJ0Eskb99fEpuzU1bVlXsNmJnPBUgwUj1POtlKpoKegUQbOJug2YKSnG pjwK5cjy2ZcuWsZS4momqDieEh0DNCSCxchizqsutV3pK1sJh3rHI7u5Z1C4XEzWlsdTmtt05QbY evrqINrVFfLnWEC9QyCJYr35GBAq1LXdSnWK8ro4umsWZ9UZMRND1lodbJxsLLjFG6Zj0X1vccV7 1ruNy26qzVlPoNKt1mZmKmWLDHmXSn6YYSqa9wrXv2bNJBRJ0jcRvH2YdqdQx0uswNJkLcvgg8CK rOOiBATanlgpGkgXGrgVLA2668qV16wxFgRY5iinII53fJ42sHMGbN1UlTSG0WecVldvpcara8zb QgjODtXPJ2lCTiO5yIChAmWHQMErXGc5QXJHqBiPyx9hsXUOzCdJVgDYFA4S405DKjQa4JKYbBxW 3JN9XKuUUCgrpgoHApqsHBEQuCXwLRH1xfpldpoO8bFzN/BgCyGOFVwCKAJxeREoEQtoHIUJ0RJW YZimyNfS/KAWMT9iTlFjoYBRPEGpfrAza763c4r3sX+c82iWsEWk9DBG1BumHiRajDpKgWy5MlmE gBV2cZcdT343DTJGwm5GdptwD4OrUNCm/y+0301Aaj6hbS2I76nVfZOyFzmDVekYVsKw8nrMg9Ie 3oJB6DYKlgzIKlGjl6oI3KZUleXoPrD2/fWWss5r89MOLizW5gaAZzbYwsRI7w4Ue8tGQJDwAw2t ZFKnLalXxuTh07nOVAXzMgCrddISMbxzz4WRo1DMte0C1skMZaJBsbpYKoRkaEJr0TVhQthhIrRb XcGhtsxUnB3uxMYEFdhnmpjQeVd5ejg3RxRrIq1Y9dpZpuNmy2Xd0NNuhXbjA3ajBpCx9Gnn+Gk/ Azx3XF5Tic8AIrcwMwptsxdBjl+EKgRSUsZ3DEfEIMGDkUdR0oLyuZRc7cpAxTL1+n0JDL2NewXo 4ZHh+JzgWuXhRCM6jznUb9p3nLnVQKVFDxzwJRLT0m+W9BqSd5t+VFsyGRi+sY3KZSDeuNizO+t5 UD0F1fZuUosFjWriGmgYSyCFDClSsD44oK0D80uX7pwjuJy7lAVcs6BlG2N0fa0t4a4R65kwWBUK k5qzdgFI8aKYXqhVghmdwaa88ZjilNNLGRYx9KU2oqKqCdGUICKwVmdXaSWqihRVRcaGVQiqIiN6 pQFILApg3oOZ4HlvO/y8Y6y23ecTdDQiarE37YeZ26w+tmfum+br+aTEUFFVdKOYsA8+3ue16gMk noQphu5WMDQIXKOYzdppWAxaylLMDQyDaFqoDIIWJnNAO6qzab9Aq3nVVQR1wiBjwq7Gs+UhZUfp 693lXfFPJuLy09D9I+6o+i6/G/uVARVkjhXIYYjNVOzmxGQMqGgW9aorwbnYE1Zm1xbC1S+iCyg6 eotSCSWKrjVtiIL8+MtTFldSIEQUXtKriEDbSLmNE0M5NLVMqVAYaOmcCrlaiaCQ4AE2hGMS7miB ZCDq+XX3mp+341t6rl9dy3jppsOJj0OjbgyDar32lEoa13bnVhr+WldztwcLQ6+FgSZ3O9/AXjib ILA6xk+zP4By10Xi8UqHicunZpLusQXXrOWu9sXG1Xo9AqIRRKNMSpiNqonPZ5KSs6ohT0JCYiUG REKojszMZMaKO2HgKbv4oNYA77jL+nwHCkB98eY8eEHoMTQ0NmQeOzVEOGd01rcZYfMiCgIk3hfp sO4Yq49w8KGHr3zqLAc15Rg48nY7i3jH6R4Oog6dK1GmJq2Sj5tpt8jHLz20cvjj2jmqorrBhWM6 Qtoq5yLXAkowhblI4EiWZrIrMYdMxrg1Ga5Yq0I7s6UwzoGULU0FCQJisy4YAoHeLXhE+exQolaU FfWEVK/9Gsttzk/o3HtaXdljQiKl7GgIgQzrlS21WBy7IhGzAx8jP6z5tPEsQrxmtSTMORJ/0SzB DY222dOOXOPIFuTBEjXFazNc+xK+mWIpDddDscA20uZ8p5qBmFes0/dkQvJ9SHcu0u/crDgVCgMO YDih89pK4ZG2TuizgnglmIxqUWKoat/KJ2+z6O38dvYfhPLOGrtM+XLdwaWFtDwUXPdAqpvch/PW bqK3uuSipcR9gkpRQQwXh+JrPiMLtG1H2L5U9S77ISkZxa+spSlIaRm+mxlKzaVWZtGnZnuGEeUJ tIgcRJEGicx9YaBrL0mDqghjBpZBCKF4ITR7TI6kzUMdyoVU6H2rn0v7SEfbP3NfxQwzevfp2v6I 1QiBpkwREBEzMo38fpX3Cm5lj9AGZs2Fw/uCqMVftthJGqiqSCyD4+OEMzA+KSyGWX1YSYXEwAwV giIi25k8CSrFdsrzKd+vv4/q86Q16QD2CS6zFfGoVEuYzRXcOF8PUTO4jvnDpYUzSpIiqCpfznIW eUjLou0sKiJyWXEIAyQizofHH0CSt2q7rIby56EvDhU1oabD5qPf771Vu66iz6UJogr2EFik4NqB jEzBxcY7n1kVyx20Kmk0iHf0DeaajPZ6J4CQU2T8/LI6l8iqQao/K8Q+B7DrLSHRIpvqiAiMjJDq Hs6+vA3c5s4xFFjOCFJFiLIrieHR8TaChq2m3Pdsy1iTzqhm3f3BIcK85fARF3yTYazF1d5RAuJx mHdAL+viFBCngTkZIoCP0z3XnrJoIGU/BbzsXNynSAY9qcYOzBEjaqqlI9ghelfAkmh2ycQkM9Ic ZpODy0dkFGm7eXqMaG6DKPCk1KCKSBCCAP0VKAei1QT2+KWOakl3mmRQLMngxruYQKxfjTFo3YBj hStzgXbMyiRM6HXW+mwjKjTDKIG213jS0KQCRYMiRtEWKfTYoNEm1iqtgJbDzGOmE8awV77dVrF2 8LZhk0rB5sXT55eczjNIw27DSx5jKl4yncXtNexHHUb1S9GD8hRffgzKUz1mBWx6WYlCHlBkSWSS JBbG2izRkKuTAtUayCUS0B4oOMrZqgbxE8kLOo4eGqTwTpS9zUSpiCSITSl180UK9ESmMyiNjSh1 wkqxVqC1gpYKJELYSiFoyGQwvyKDSWa64GmWBoiuFSoywXhCpYCKQsIRkRGarYFydeejsblc8TC8 92PiJO0C5ixtJagQwzNOwkim6JSRI1BFscZKMg0tqklluarE00AuhLubWdCDa1qouwLUUUyWlMoi kEUiQlEMX5QpEqUA2CtVYJxqKJkFu8nPoEqInYSJJO9gsIiTtyuRLr7UDQXElu/TOsRIuVWmmGJi 7Fv0e2CBkXsva5c7ZzrG0DEDdJ71RiQ0NoXhszCGh+KY9f1L0L6lOIS0i/Dj6BtjBNBRI5lH3OeL vnyBIIeBJZhqdQMBSzZkMRC4DQdlqn3nNxmyQVSF9bww2dm2rWGQR2nqZRpzGtqE000vFozdqSlw oX7Mgg/SPdUa7feG4+KKwmfMZ4mzbD5Ute/KbmRHcvh5fx5uG401U0d53Hh3Gx1Hq6SXO/ZDW19p 1TUkySqKCMVaaKr4s4k2Trkx/SmzwXPOfAuJGfdrLh00PRq6yqQmYxGTAxC8qzcsS5dNSManWkxD HY9Zf3mGgUkB+CBtyunk80+/aEvZQ5Djk57r+qfZO6YybhyqlREQRjPbVWGkEUjEERKopg00KKsW IIJTRTxZCzRT31JY17U0t+l0pPEfmXh6Su2Com1Nx5DP6MC3K9WjVUpVMy9cNgVwmSJpfVhJmnw7 /KyLrMHkoFPsHn0kINS6T5kh2ZLWDFlo0R+Ji6zCNsI5VESH42JBSJFlbUJkwzA1sMU0UKsMndLA OTEudI10J0yA82hlm2jNQkoaNTA3qYJiO1BkF2Td1GxW9dYwRFY+f35aitZICih2BAeAVdAQuG8U 2xbLiXpJUIhFgoqQFJRWld1H/poiPFa7CpuYVCKbHAeYHxwqvQ64tQlMFKOt4rFnkMFJTMEgQ4ZA wVuGapAWHFPmISB0kZmQbTBgxhA244RDmkik6WI7LkTBslHk+1q5rZbqeAzMfywGypqKLDM5xz2H 4RY7GBrMdeEFNR21gEh6jobGLQTjgegZNEOLJryo8zVOYi701CRSsqpAmKbrljR6Fgwnphxwi5VV RCLklCSkFJK1F7XQKCDgd+tKOa1aUkElIZAJIRdeoRIWzHSyGHFx4l1DQKHhZJncxMGCOYBQ7iGW ihSDkgKigik9fupexdw8aU5aoyoWL8c5ZVjs6MmrUWQvyuQGCbKDjMHDtsYJEIKoi3zQUNCUXazL hnsMIrYqz2PovqJYqFKwJPWmGoYowLmENkhOxij5AVDiYwnelgMGSCwih3Id+fELYJvaQMWmKZF4 dVjIywNWvdPQSBTAhHUEE4FIC8iaYNg6b5kbYJaqzqgGMWCPCUGMMtfiybm7KQINoPWhO1kqg2fr Fx57WqILJzsNU01Q9tNbIoJ4cwVPNGPkfQOAZA4/AReqLiDSNJA7yxBAtSv+MZtmzkvHQdJDnDiR w7QuKgri8cfbys6GaYrw6zOqSYwdWUC52EaCP3ZInv1RGVwx+QgoIWPlRxBpOly3BVNso+6z23N2 SYxjG7vzYWSFUX3nxro76KKwyyubjTuUJ8xEOfAgUMA8X15kI/ZhZ5DrEHwgS1AVQUesUE0gVNxs kKLhaTM2O7TLIh7YDJPb+uBWtigxBnKenUdyGt540iHNhuQDRxxtYGE90DYbHrXv6FSitWUQB/Rp K+KjeQDNQzhzRnXrUzaKs7no1QdmiLtQjht5nwXTc7ReUIM96A3GAyV3ykjkO8P/F3JFOFCQZdO1 nQ==