From 4e8c5a14c6d3fc75b2b74056e051ab1c74533e27 Mon Sep 17 00:00:00 2001 From: olivroy <52606734+olivroy@users.noreply.github.com> Date: Wed, 3 Jan 2024 11:02:20 -0500 Subject: [PATCH] Delete docs directory --- docs/404.html | 124 --- docs/articles/SW00_Introduction_to_sweep.html | 738 ------------------ .../empty-anchor.js | 15 - .../figure-html/unnamed-chunk-12-1.png | Bin 265060 -> 0 bytes .../figure-html/unnamed-chunk-14-1.png | Bin 499750 -> 0 bytes .../figure-html/unnamed-chunk-17-1.png | Bin 290910 -> 0 bytes .../figure-html/unnamed-chunk-20-1.png | Bin 288923 -> 0 bytes .../figure-html/unnamed-chunk-4-1.png | Bin 339598 -> 0 bytes .../header-attrs-2.1/header-attrs.js | 12 - .../header-attrs-2.3/header-attrs.js | 12 - .../SW01_Forecasting_Time_Series_Groups.html | 622 --------------- .../empty-anchor.js | 15 - .../figure-html/unnamed-chunk-13-1.png | Bin 622911 -> 0 bytes .../figure-html/unnamed-chunk-17-1.png | Bin 712163 -> 0 bytes .../figure-html/unnamed-chunk-5-1.png | Bin 226126 -> 0 bytes .../header-attrs-2.1/header-attrs.js | 12 - .../header-attrs-2.3/header-attrs.js | 12 - .../SW02_Forecasting_Multiple_Models.html | 625 --------------- .../empty-anchor.js | 15 - .../figure-html/unnamed-chunk-19-1.png | Bin 465593 -> 0 bytes .../figure-html/unnamed-chunk-23-1.png | Bin 442184 -> 0 bytes .../figure-html/unnamed-chunk-6-1.png | Bin 209165 -> 0 bytes .../figure-html/unnamed-chunk-8-1.png | Bin 195363 -> 0 bytes .../header-attrs-2.1/header-attrs.js | 12 - .../header-attrs-2.3/header-attrs.js | 12 - docs/articles/index.html | 101 --- docs/authors.html | 119 --- docs/bootstrap-toc.css | 60 -- docs/bootstrap-toc.js | 159 ---- docs/docsearch.css | 148 ---- docs/docsearch.js | 85 -- docs/index.html | 421 ---------- docs/link.svg | 12 - docs/news/index.html | 128 --- docs/pkgdown.css | 384 --------- docs/pkgdown.js | 156 ---- docs/pkgdown.yml | 12 - docs/reference/Rplot001.png | Bin 1011 -> 0 bytes docs/reference/add_index.html | 114 --- docs/reference/arima_string.html | 116 --- docs/reference/bats_string.html | 112 --- docs/reference/bike_sales.html | 183 ----- docs/reference/figures/forecast.png | Bin 51529 -> 0 bytes docs/reference/figures/multiple_models.png | Bin 59684 -> 0 bytes docs/reference/figures/sweep-logo.png | Bin 79888 -> 0 bytes docs/reference/figures/time_series_groups.png | Bin 87067 -> 0 bytes docs/reference/index.html | 220 ------ docs/reference/reexports.html | 117 --- docs/reference/sw_augment.default.html | 122 --- docs/reference/sw_augment.html | 132 ---- docs/reference/sw_augment_columns.html | 122 --- docs/reference/sw_glance.default.html | 122 --- docs/reference/sw_glance.html | 139 ---- docs/reference/sw_sweep.html | 196 ----- docs/reference/sw_tidy.default.html | 122 --- docs/reference/sw_tidy.html | 151 ---- docs/reference/sw_tidy_decomp.html | 183 ----- docs/reference/sweep_package.html | 118 --- docs/reference/tbats_string.html | 112 --- docs/reference/tidiers_HoltWinters.html | 245 ------ docs/reference/tidiers_StructTS.html | 212 ----- docs/reference/tidiers_arima.html | 218 ------ docs/reference/tidiers_bats.html | 218 ------ docs/reference/tidiers_decomposed_ts.html | 165 ---- docs/reference/tidiers_ets.html | 238 ------ docs/reference/tidiers_nnetar.html | 211 ----- docs/reference/tidiers_robets.html | 316 -------- docs/reference/tidiers_stl.html | 205 ----- docs/reference/validate_index.html | 114 --- docs/sitemap.xml | 111 --- 70 files changed, 8645 deletions(-) delete mode 100644 docs/404.html delete mode 100644 docs/articles/SW00_Introduction_to_sweep.html delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/figure-html/unnamed-chunk-12-1.png delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/figure-html/unnamed-chunk-14-1.png delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/figure-html/unnamed-chunk-17-1.png delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/figure-html/unnamed-chunk-20-1.png delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/figure-html/unnamed-chunk-4-1.png delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/header-attrs-2.1/header-attrs.js delete mode 100644 docs/articles/SW00_Introduction_to_sweep_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups.html delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups_files/figure-html/unnamed-chunk-13-1.png delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups_files/figure-html/unnamed-chunk-17-1.png delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups_files/figure-html/unnamed-chunk-5-1.png delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups_files/header-attrs-2.1/header-attrs.js delete mode 100644 docs/articles/SW01_Forecasting_Time_Series_Groups_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models.html delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/figure-html/unnamed-chunk-19-1.png delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/figure-html/unnamed-chunk-23-1.png delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/figure-html/unnamed-chunk-6-1.png delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/figure-html/unnamed-chunk-8-1.png delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/header-attrs-2.1/header-attrs.js delete mode 100644 docs/articles/SW02_Forecasting_Multiple_Models_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/articles/index.html delete mode 100644 docs/authors.html delete mode 100644 docs/bootstrap-toc.css delete mode 100644 docs/bootstrap-toc.js delete mode 100644 docs/docsearch.css delete mode 100644 docs/docsearch.js delete mode 100644 docs/index.html delete mode 100644 docs/link.svg delete mode 100644 docs/news/index.html delete mode 100644 docs/pkgdown.css delete mode 100644 docs/pkgdown.js delete mode 100644 docs/pkgdown.yml delete mode 100644 docs/reference/Rplot001.png delete mode 100644 docs/reference/add_index.html delete mode 100644 docs/reference/arima_string.html delete mode 100644 docs/reference/bats_string.html delete mode 100644 docs/reference/bike_sales.html delete mode 100644 docs/reference/figures/forecast.png delete mode 100644 docs/reference/figures/multiple_models.png delete mode 100644 docs/reference/figures/sweep-logo.png delete mode 100644 docs/reference/figures/time_series_groups.png delete mode 100644 docs/reference/index.html delete mode 100644 docs/reference/reexports.html delete mode 100644 docs/reference/sw_augment.default.html delete mode 100644 docs/reference/sw_augment.html delete mode 100644 docs/reference/sw_augment_columns.html delete mode 100644 docs/reference/sw_glance.default.html delete mode 100644 docs/reference/sw_glance.html delete mode 100644 docs/reference/sw_sweep.html delete mode 100644 docs/reference/sw_tidy.default.html delete mode 100644 docs/reference/sw_tidy.html delete mode 100644 docs/reference/sw_tidy_decomp.html delete mode 100644 docs/reference/sweep_package.html delete mode 100644 docs/reference/tbats_string.html delete mode 100644 docs/reference/tidiers_HoltWinters.html delete mode 100644 docs/reference/tidiers_StructTS.html delete mode 100644 docs/reference/tidiers_arima.html delete mode 100644 docs/reference/tidiers_bats.html delete mode 100644 docs/reference/tidiers_decomposed_ts.html delete mode 100644 docs/reference/tidiers_ets.html delete mode 100644 docs/reference/tidiers_nnetar.html delete mode 100644 docs/reference/tidiers_robets.html delete mode 100644 docs/reference/tidiers_stl.html delete mode 100644 docs/reference/validate_index.html delete mode 100644 docs/sitemap.xml diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index d7ab004..0000000 --- a/docs/404.html +++ /dev/null @@ -1,124 +0,0 @@ - - -
- - - - -vignettes/SW00_Introduction_to_sweep.Rmd
- SW00_Introduction_to_sweep.Rmd
--Extending
-broom
to time series forecasting
The sweep
package extends the broom
tools
-(tidy, glance, and augment) for performing forecasts and time series
-analysis in the “tidyverse”. The package is geared towards the workflow
-required to perform forecasts using Rob Hyndman’s forecast
-package, and contains the following elements:
model tidiers: sw_tidy
,
-sw_glance
, sw_augment
,
-sw_tidy_decomp
functions extend tidy
,
-glance
, and augment
from the
-broom
package specifically for models (ets()
,
-Arima()
, bats()
, etc) used for
-forecasting.
forecast tidier: sw_sweep
converts
-a forecast
object to a tibble that can be easily
-manipulated in the “tidyverse”.
To illustrate, let’s take a basic forecasting workflow starting from -data collected in a tibble format and then performing a forecast to -achieve the end result in tibble format.
- -We’ll use the tidyquant
package to get the US alcohol
-sales, which comes from the FRED data base (the origin is the US Bureau
-of the Census, one of the 80+ data sources FRED connects to). The FRED
-code is “S4248SM144NCEN” and the data set can be found here.
-alcohol_sales_tbl <- tq_get("S4248SM144NCEN",
- get = "economic.data",
- from = "2007-01-01",
- to = "2016-12-31")
-alcohol_sales_tbl
## # A tibble: 120 × 3
-## symbol date price
-## <chr> <date> <int>
-## 1 S4248SM144NCEN 2007-01-01 6627
-## 2 S4248SM144NCEN 2007-02-01 6743
-## 3 S4248SM144NCEN 2007-03-01 8195
-## 4 S4248SM144NCEN 2007-04-01 7828
-## 5 S4248SM144NCEN 2007-05-01 9570
-## 6 S4248SM144NCEN 2007-06-01 9484
-## 7 S4248SM144NCEN 2007-07-01 8608
-## 8 S4248SM144NCEN 2007-08-01 9543
-## 9 S4248SM144NCEN 2007-09-01 8123
-## 10 S4248SM144NCEN 2007-10-01 9649
-## # ℹ 110 more rows
-We can quickly visualize using the ggplot2
package. We
-can see that there appears to be some seasonality and an upward
-trend.
-alcohol_sales_tbl %>%
- ggplot(aes(x = date, y = price)) +
- geom_line(linewidth = 1, color = palette_light()[[1]]) +
- geom_smooth(method = "loess") +
- labs(title = "US Alcohol Sales: Monthly", x = "", y = "Millions") +
- scale_y_continuous(labels = scales::dollar) +
- scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
- theme_tq()
## `geom_smooth()` using formula = 'y ~ x'
-
-The forecasting workflow involves a few basic steps:
-ts
object class.sw_sweep()
to tidy the forecast.Note that we purposely omit other steps such as testing the
-series for stationarity (Box.test(type = "Ljung")
) and
-analysis of autocorrelations (Acf
, Pacf
) for
-brevity purposes. We recommend the analyst to follow the forecasting
-workflow in “Forecasting: principles
-and practice”
ts
object class
-The forecast
package uses the ts
data
-structure, which is quite a bit different than tibbles that we are
-currently using. Fortunately, it’s easy to get to the correct structure
-with tk_ts()
from the timetk
package. The
-start
and freq
variables are required for the
-regularized time series (ts
) class, and these specify how
-to treat the time series. For monthly, the frequency should be specified
-as 12. This results in a nice calendar view. The
-silent = TRUE
tells the tk_ts()
function to
-skip the warning notifying us that the “date” column is being dropped.
-Non-numeric columns must be dropped for ts
class, which is
-matrix based and a homogeneous data class.
-alcohol_sales_ts <- tk_ts(alcohol_sales_tbl, start = 2007, freq = 12, silent = TRUE)
-alcohol_sales_ts
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
-## 2007 6627 6743 8195 7828 9570 9484 8608 9543 8123 9649 9390 10065
-## 2008 7093 7483 8365 8895 9794 9977 9553 9375 9225 9948 8758 10839
-## 2009 7266 7578 8688 9162 9369 10167 9507 8923 9272 9075 8949 10843
-## 2010 6558 7481 9475 9424 9351 10552 9077 9273 9420 9413 9866 11455
-## 2011 6901 8014 9832 9281 9967 11344 9106 10469 10085 9612 10328 11483
-## 2012 7486 8641 9709 9423 11342 11274 9845 11163 9532 10754 10953 11922
-## 2013 8383 8870 10085 10462 12177 11342 11139 11409 10442 11479 11077 12636
-## 2014 8506 9003 9991 10903 11709 11815 10875 10884 10725 11697 10353 13153
-## 2015 8279 8926 10557 10933 11330 12708 11700 11079 11882 11865 11420 14100
-## 2016 8556 10199 11949 11253 12046 13453 10755 12465 12038 11674 12761 14137
-A significant benefit is that the resulting ts
object
-maintains a “timetk index”, which will help with forecasting dates
-later. We can verify this using has_timetk_idx()
from the
-timetk
package.
-has_timetk_idx(alcohol_sales_ts)
## [1] TRUE
-Now that a time series has been coerced, let’s proceed with -modeling.
-The modeling workflow takes a time series object and applies a model.
-Nothing new here: we’ll simply use the ets()
function from
-the forecast
package to get an Exponential Smoothing ETS
-(Error, Trend, Seasonal) model.
Where sweep
can help is in the evaluation of a model.
-Expanding on the broom
package there are four
-functions:
sw_tidy()
: Returns a tibble of model parameterssw_glance()
: Returns the model accuracy
-measurementssw_augment()
: Returns the fitted and residuals of the
-modelsw_tidy_decomp()
: Returns a tidy decomposition from a
-modelThe guide below shows which model object compatibility with
-sweep
tidier functions.
Object | -sw_tidy() | -sw_glance() | -sw_augment() | -sw_tidy_decomp() | -sw_sweep() | -
---|---|---|---|---|---|
ar | -- | - | - | - | - |
arima | -X | -X | -X | -- | - |
Arima | -X | -X | -X | -- | - |
ets | -X | -X | -X | -X | -- |
baggedETS | -- | - | - | - | - |
bats | -X | -X | -X | -X | -- |
tbats | -X | -X | -X | -X | -- |
nnetar | -X | -X | -X | -- | - |
stl | -- | - | - | X | -- |
HoltWinters | -X | -X | -X | -X | -- |
StructTS | -X | -X | -X | -X | -- |
tslm | -X | -X | -X | -- | - |
decompose | -- | - | - | X | -- |
adf.test | -X | -X | -- | - | - |
Box.test | -X | -X | -- | - | - |
kpss.test | -X | -X | -- | - | - |
forecast | -- | - | - | - | X | -
Going through the tidiers, we can get useful model
-information.
sw_tidy()
returns the model parameters.
-sw_tidy(fit_ets)
## # A tibble: 17 × 2
-## term estimate
-## <chr> <dbl>
-## 1 alpha 0.159
-## 2 beta 0.0180
-## 3 gamma 0.000107
-## 4 phi 0.970
-## 5 l 8389.
-## 6 b 38.9
-## 7 s0 1.17
-## 8 s1 1.02
-## 9 s2 1.04
-## 10 s3 0.995
-## 11 s4 1.04
-## 12 s5 0.993
-## 13 s6 1.12
-## 14 s7 1.07
-## 15 s8 0.982
-## 16 s9 0.975
-## 17 s10 0.837
-sw_glance()
returns the model quality parameters.
-sw_glance(fit_ets)
## # A tibble: 1 × 12
-## model.desc sigma logLik AIC BIC ME RMSE MAE MPE MAPE MASE
-## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
-## 1 ETS(M,Ad,M) 0.0458 -1012. 2060. 2111. 40.7 431. 357. 0.223 3.54 0.705
-## # ℹ 1 more variable: ACF1 <dbl>
-sw_augment()
returns the actual, fitted and residual
-values.
-augment_fit_ets <- sw_augment(fit_ets)
-augment_fit_ets
## # A tibble: 120 × 4
-## index .actual .fitted .resid
-## <yearmon> <dbl> <dbl> <dbl>
-## 1 Jan 2007 6627 6446. 0.0280
-## 2 Feb 2007 6743 7122. -0.0532
-## 3 Mar 2007 8195 8255. -0.00730
-## 4 Apr 2007 7828 8330. -0.0603
-## 5 May 2007 9570 8986. 0.0650
-## 6 Jun 2007 9484 9541. -0.00597
-## 7 Jul 2007 8608 8500. 0.0127
-## 8 Aug 2007 9543 8932. 0.0684
-## 9 Sep 2007 8123 8694. -0.0657
-## 10 Oct 2007 9649 8977. 0.0749
-## # ℹ 110 more rows
-We can review the residuals to determine if their are any underlying
-patterns left. Note that the index is class yearmon
, which
-is a regularized date format.
-augment_fit_ets %>%
- ggplot(aes(x = index, y = .resid)) +
- geom_hline(yintercept = 0, color = "grey40") +
- geom_point(color = palette_light()[[1]], alpha = 0.5) +
- geom_smooth(method = "loess") +
- scale_x_yearmon(n = 10) +
- labs(title = "US Alcohol Sales: ETS Residuals", x = "") +
- theme_tq()
## `geom_smooth()` using formula = 'y ~ x'
-
-sw_tidy_decomp()
returns the decomposition of the ETS
-model.
-decomp_fit_ets <- sw_tidy_decomp(fit_ets)
-decomp_fit_ets
## # A tibble: 121 × 5
-## index observed level slope season
-## <yearmon> <dbl> <dbl> <dbl> <dbl>
-## 1 Dec 2006 NA 8389. 38.9 1.17
-## 2 Jan 2007 6627 8464. 42.0 0.765
-## 3 Feb 2007 6743 8433. 32.6 0.837
-## 4 Mar 2007 8195 8455. 30.5 0.975
-## 5 Apr 2007 7828 8404. 20.4 0.982
-## 6 May 2007 9570 8510. 29.6 1.07
-## 7 Jun 2007 9484 8531. 27.8 1.12
-## 8 Jul 2007 8608 8575. 29.0 0.993
-## 9 Aug 2007 9543 8697. 38.7 1.04
-## 10 Sep 2007 8123 8643. 27.2 0.995
-## # ℹ 111 more rows
-We can review the decomposition using ggplot2
as well.
-The data will need to be manipulated slightly for the facet
-visualization. The gather()
function from the
-tidyr
package is used to reshape the data into a long
-format data frame with column names “key” and “value” indicating all
-columns except for index are to be reshaped. The “key” column is then
-mutated using mutate()
to a factor which preserves the
-order of the keys so “observed” comes first when plotting.
-decomp_fit_ets %>%
- tidyr::gather(key = key, value = value, -index) %>%
- dplyr::mutate(key = as.factor(key)) %>%
- ggplot(aes(x = index, y = value, group = key)) +
- geom_line(color = palette_light()[[2]]) +
- geom_ma(ma_fun = SMA, n = 12, size = 1) +
- facet_wrap(~ key, scales = "free_y") +
- scale_x_yearmon(n = 10) +
- labs(title = "US Alcohol Sales: ETS Decomposition", x = "") +
- theme_tq() +
- theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Warning: Using the `size` aesthetic in this geom was deprecated in ggplot2 3.4.0.
-## ℹ Please use `linewidth` in the `default_aes` field and elsewhere instead.
-## This warning is displayed once every 8 hours.
-## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
-## generated.
-## Warning: Removed 1 row containing missing values (`geom_line()`).
-
-Under normal circumstances it would make sense to refine the model at -this point. However, in the interest of showing capabilities (rather -than how to forecast) we move onto forecasting the model. For more -information on how to forecast, please refer to the online book “Forecasting: principles and -practices”.
-Next we forecast the ETS model using the forecast()
-function. The returned forecast
object isn’t in a “tidy”
-format (i.e. data frame). This is where the sw_sweep()
-function helps.
We’ll use the sw_sweep()
function to coerce a
-forecast
into a “tidy” data frame. The
-sw_sweep()
function then coerces the forecast
-object into a tibble that can be sent to ggplot
for
-visualization. Let’s inspect the result.
-sw_sweep(fcast_ets, fitted = TRUE)
## # A tibble: 252 × 7
-## index key price lo.80 lo.95 hi.80 hi.95
-## <yearmon> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
-## 1 Jan 2007 actual 6627 NA NA NA NA
-## 2 Feb 2007 actual 6743 NA NA NA NA
-## 3 Mar 2007 actual 8195 NA NA NA NA
-## 4 Apr 2007 actual 7828 NA NA NA NA
-## 5 May 2007 actual 9570 NA NA NA NA
-## 6 Jun 2007 actual 9484 NA NA NA NA
-## 7 Jul 2007 actual 8608 NA NA NA NA
-## 8 Aug 2007 actual 9543 NA NA NA NA
-## 9 Sep 2007 actual 8123 NA NA NA NA
-## 10 Oct 2007 actual 9649 NA NA NA NA
-## # ℹ 242 more rows
-The tibble returned contains “index”, “key” and “value” (or in this
-case “price”) columns in a long or “tidy” format that is ideal for
-visualization with ggplot2
. The “index” is in a regularized
-format (in this case yearmon
) because the
-forecast
package uses ts
objects. We’ll see
-how we can get back to the original irregularized format (in this case
-date
) later. The “key” and “price” columns contains three
-groups of key-value pairs:
ets()
function (excluded by default)forecast()
functionThe sw_sweep()
function contains an argument
-fitted = FALSE
by default meaning that the model “fitted”
-values are not returned. We can toggle this on if desired. The remaining
-columns are the forecast confidence intervals (typically 80 and 95, but
-this can be changed with forecast(level = c(80, 95))
).
-These columns are setup in a wide format to enable using the
-geom_ribbon()
.
Let’s visualize the forecast with ggplot2
. We’ll use a
-combination of geom_line()
and geom_ribbon()
.
-The fitted values are toggled off by default to reduce the complexity of
-the plot, but these can be added if desired. Note that because we are
-using a regular time index of the yearmon
class, we need to
-add scale_x_yearmon()
.
-sw_sweep(fcast_ets) %>%
- ggplot(aes(x = index, y = price, color = key)) +
- geom_ribbon(aes(ymin = lo.95, ymax = hi.95),
- fill = "#D5DBFF", color = NA, linewidth = 0) +
- geom_ribbon(aes(ymin = lo.80, ymax = hi.80, fill = key),
- fill = "#596DD5", color = NA, linewidth = 0, alpha = 0.8) +
- geom_line(linewidth = 1) +
- labs(title = "US Alcohol Sales, ETS Model Forecast", x = "", y = "Millions",
- subtitle = "Regular Time Index") +
- scale_y_continuous(labels = scales::label_dollar()) +
- scale_x_yearmon(n = 12, format = "%Y") +
- scale_color_tq() +
- scale_fill_tq() +
- theme_tq()
Because the ts
object was created with the
-tk_ts()
function, it contained a timetk index that was
-carried with it throughout the forecasting workflow. As a result, we can
-use the timetk_idx
argument, which maps the original
-irregular index (dates) and a generated future index to the regularized
-time series (yearmon). This results in the ability to return an index of
-date and datetime, which is not currently possible with the
-forecast
objects. Notice that the index is returned as
-date
class.
## Warning in .check_tzones(e1, e2): 'tzone' attributes are inconsistent
-## # A tibble: 6 × 7
-## index key price lo.80 lo.95 hi.80 hi.95
-## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
-## 1 2007-01-01 actual 6627 NA NA NA NA
-## 2 2007-02-01 actual 6743 NA NA NA NA
-## 3 2007-03-01 actual 8195 NA NA NA NA
-## 4 2007-04-01 actual 7828 NA NA NA NA
-## 5 2007-05-01 actual 9570 NA NA NA NA
-## 6 2007-06-01 actual 9484 NA NA NA NA
-
-## Warning in .check_tzones(e1, e2): 'tzone' attributes are inconsistent
-## # A tibble: 6 × 7
-## index key price lo.80 lo.95 hi.80 hi.95
-## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
-## 1 2017-07-01 forecast 12117. 11309. 10882. 12924. 13351.
-## 2 2017-08-01 forecast 12697. 11828. 11367. 13566. 14027.
-## 3 2017-09-01 forecast 12203. 11343. 10888. 13063. 13518.
-## 4 2017-10-01 forecast 12723. 11800. 11311. 13647. 14136.
-## 5 2017-11-01 forecast 12559. 11619. 11122. 13499. 13996.
-## 6 2017-12-01 forecast 14499. 13380. 12788. 15618. 16211.
-We can build the same plot with dates in the x-axis now.
-
-sw_sweep(fcast_ets, timetk_idx = TRUE) %>%
- ggplot(aes(x = index, y = price, color = key)) +
- geom_ribbon(aes(ymin = lo.95, ymax = hi.95),
- fill = "#D5DBFF", color = NA, linewidth = 0) +
- geom_ribbon(aes(ymin = lo.80, ymax = hi.80, fill = key),
- fill = "#596DD5", color = NA, linewidth = 0, alpha = 0.8) +
- geom_line(linewidth = 1) +
- labs(title = "US Alcohol Sales, ETS Model Forecast", x = "", y = "Millions",
- subtitle = "Irregular Time Index") +
- scale_y_continuous(labels = scales::dollar) +
- scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
- scale_color_tq() +
- scale_fill_tq() +
- theme_tq()
## Warning in .check_tzones(e1, e2): 'tzone' attributes are inconsistent
-
-In this example, there is not much benefit to returning an irregular -time series. However, when working with frequencies below monthly, the -ability to return irregular index values becomes more apparent.
-glDA;2IbE8F>4bm3uYDoR1oVv4EqCP3uL&{TK4 zLYpnrQ6(fy-RIO=ju?B@1uiCfdL8|f1lJVI@uzMO?wsI=i98wbDd44~B`1<>jCxmS@5+v%a{Swpl9rHI?{F@?x`o1yk#QTDl zLMeBs3 XjxjEj&Wv__ZD=w>rh&kO!P0IxKX)dye!e-xBA%>)NE9`> zyz8+$e6?%z?-@_|QgtdFo!?!+==K$yg98A+>6X3>G_T&$moY>2j_LhHgpbxJ_``4c zB0@0g=nP?YrSxn7IZ;_4{loH`^l3pbHL~0;>GN5jvu_6aRBN0}*mt?WuHc_zBIZ2V z^SNY*M&cKNB3Adlg*qdUo9uFfaKBN%vLI0lBIh$6`=+sR+OHjOWi>H9Vm1tt#!Cgi z9mjN~PsR<|A!IfNw_Ap)JY7qs-1?%YprECAm>oSu;&U!L3-hwR<*A-=5XUJDs9sg( zx7gK}x}iW9tv5yZaDEU%5DFl^qa|$me8%zz*jHj}b=HHrfz;4DSO1Ld)+f|5aZpMb zrz274xVs#jQz|VM&TeJqjb-o_wVpnx*3`})H1)4&f%?#V_U_&1`c---;so{Y(o$L* z)&Cw~yQTdmKZ`r#vn{AbnJmzf7<}5keoAh;*@us%uQneL(zx1X9l>-ZXeL@;SRm{Q zCGcJu)viGTDm)Zph0k%8_N9Cr%aYWR^7|gdVsFde9neEjobEVTB0egq3z~KNMZa$< zeQ dq(_u%^ZSU_?|a%puf2ZxC+%w$VLR{_nC z9tTLPRQbTs8(U!YZ*ESq#*bnKiPyzC{3N)NJ908!aAPwSA->XE?PN7kPs*8Bpq(0y z*XS)%QS8fqc)xM{&5cs*YlUeIJuf{gm)vL638EN=o7O6JrpUo 5XLKd%T$|GN zb8Z&apM~=o*XCtU9QoaXT6Lo0@67q$Zwwc2)172w>|A0lW9DFvbtFX|XELnZrl)cD zay1o(K#17lmM-AoH*oycJ1Fft_9WgiNZKXZ#W^Gfa8xs|!Xumq$`nD$4J{oumGJc+ z>FPR-@2-ynDg4O=>J(0)w_GhSp$U_}e+-s{R-NjxDg*0-or|gMJWZF2CkXT1`X=hL z{M_;EH(+I`PKx9?IL3OE&7v?O0gI)%9B33ZU<|x|tlV6Zal0o&TEyLq>B|jn1kGa# zTIANPy4csTNj`(3{S^;`y@|aB3Y}!0Hg~`!ICg%s5VIYFN0;oGcNf@Su5=iBAkkZ# zapwNpPiMaoRs@35;eE1Ntdup8`GKlerk0W%j5Pk#hg{Z~A_E7lr`^_bYZIhLC3XR= zk(6 r$+NGqa4|Jm9<%EDS|B92bLFz*p%MDtFxmG6Ltf0_ # z#^8ErQ(K(SScXiJ)+oRaZuZ|lm_ghDR(lK?pBwU ;$5kD-caG5Pnf~$`KH5WDTRXP{Y8mKR z^IM}Z2QuGG;i4_>GKtg$T62?I@r6A?GU>958a`o{O=rX$^(;^w9B^NY;Ql40B9O;| zCA_PKHiL{XwQG?yUy!5hMG5j6>4Wee;m2`#W5P0WyfSAA`N^a3 kzykxrD(^2^#NXG#a*AHZL^-Rtl{qwe3Q3s CK$ff4{tniUA>aoW%XN;4t@qD<=Z#1Q?G&=k zTcjg#J8@cT=PpKJ^(kMh;8g$q`TZ)@C1S|EFj%UaBL{fgdC~`X9-9S3tPq`y-ggcI z#ZBVH^YEHm?e%r|v5x!4&A^llI`)0B)sY}h+55+Qr>B`z{4}Em0JajD5%S{!N>mAu z92$)5?EZMZXV 72As`CB?G8Wa-kfPm1uigkttOkDCgpz#k}3Q^M0#a6g42!UeM zF+rkdxEWGqpCBB#H);bq;!`l*tNuA(`C3{&Q-*54h-^TYdzAo>qkI$wcsuwx$E)QD5+2Bl$JNCE zn@D9aNxs;qQWHR=9H4)Ch#CMMJwSfD2w1OlfD$Jgd-I2J{g&LUBS6-<#h14(ptlwk zQl>V0JD_Vy`0zL3q9ajDBmNV3(n!>kHNva %GaRGf>;zsQTO37_i|O014z)IB#}V zp0-^Gd=kjLw!#}jbt#FWmL-O4x1VT)V1VpUHoR2bqt483nSupyP1XZdKGVUD0KD^f zRA2xbrpx=8Haj$>PTNt!rDKf?WWk33uj<1M#ApoPk(2j!?;m !sGgjJdOKD<8D){T24Uy{w9Hb;Rc@9 z!=F^A+LF-yuA> 2S`A(>PHNb#KSu*YVX43B(y;+<44yC<4;Z| zqk+oI!f7r4xJ&m9nsuhamU;&^;!5~>Ij8hYNPn#x3y2m4!Y-Vf>$uHpnGz{uciVMy zdFZRFukH1BgrLg#x?^RK69gPfGj}msqF)~n5%aHjxd9)~TRDqR5FKlh(ljJPK6zzB zg61!=L|&h5bQ&Y>)lE;a+^27Pj~3$LvGtep#=hrWuxS~;&yem6X51|i5f%;(r@=bl zkFXsyN^{#O3M5axa%K139{=Yo`V@cu@CsA5>U$zxnbVX5eDaecoP1?@sE^;)G5q mh0^xF)v0TS;=klz}N2sJfEAt>PQ0O+Avv_7a$x{XM7jcZLNUhte= z^oJ1$4*+F;3YKfGY3QL^Fhw%0^vSd@vNJ21BCQ`y%UIZ}6EA@v1}h=~j_ZS2Ds){A z4n&IGxg~=2EBlOK_E @<*%Jab@o5w9^?%&$v4y9BiaqdB!KF6!c_k&2m(s`X^G@0kpG>TnO}XTx%k#LB_{aLB+jgO@RT{)QI-m z+%G@#=bT6=HnR-qXvT%+IRyFpVtY>T7ODg)f;I>HdYruqkQU1;9!jH+%LjWwpS3eq zNK(fPmIWiui`>1qLIQo}%h2~)KQz@ peCpO|hKmal&WH`j`Z-~QS1rm@as( BW)i=jU?cW=~@=ipH18o`0HTo*k zA$u+7rY+G}QzPl7#ipq*YB?Ps0AGCdDoa~ZWVzL=%9=$E(CKfm5_}v*)QD3WvWhs+ zA?!I$7&J^ASyNt!M@yJQ<3J-Mz}mzKoQY0;vcNC0%fz|rAwH^~AH?cyhy8Y=Dv)qV z*!B=~hA1WsKh7vlwK#P>e{gv4EpiTzG%k1G!46>542*ozLFE9h6 C)ZMu&{h!tjclc z=lz5Ay3Xf!0ME0c<4cTEmsDOEC*JU`0vQLsn`_gzz0fIWmiGa$1L7REYvKOjye=x5 z(V_sW=ah;g-b)0KrD-dtT3nigaY@c?U?r&vAsXLd1F$cEdP{@pyD>*hMa3zcDxK6c zuf~_$GZ(}^$&ts0rKF*2TI+&s`L9}J06kp);^3q2fK7%x0jd(S6$QmwR<3r)8(ZUD zey{W+Jrk2ixZrMZ1Te5!wFDP!i?DGxQD*q18tbU%Bm?%cK%FzMmlqBiKK##QLWA^Q z#PUoVM14Sxx1rSbUM6YOq?91!_j*J}D=m{bB5(jWV+U4XXg}*dTidgpMJC;1{6Gw~ zys9n|{_5r7h0vjClq>(n>`14m`10=DU{dc4AL#zl%!iWEsbXj=9FV2FXJ_3TjDYv) zlqa(0tvgm@Xv%B9tUXEP4NyCGro$3LOF_HUmk()--kk)wCUCD(d?>Z3#~dhc2+!!O z^l9NzD-K_=0*hf$@tvA{)fy*_7+v5!QHn^m8u-%x@%1V(!^o^?j12U3D=-39z89z^ zCnqIbW)G#T;*t_@%zW<&qSHkbi~INu7yK!}RhKXpYfNBg_Qtp5fMrbn!hZ4a1hc3; zTYMH!6p> jkc)jjyvr4^fCFO-^Me!o(v8qsT;MBD61UKg?@wgSEj35$P;fKkwBLP^oU2 z+nIu`f1xZJK&^3+NKe@UcH7vfvC;2Z &0C=XM3ThVbH1<)?`%nqH&L>EiN|Y z$%O^%J|oJ)ImLEX8W8H824M;wvR{{K0p0lFx6FE SxZQ}ss zTA+*g0Oh)X5F?zd8T95&xHdjXU(SOFP2R%>VT~ks&mxM>0Ox4DMtibv4#s@4dpCh! zS4XUXO^YHGxcnTgDLTr@BXdsJ!WtRij1gJ_)(kDlV(qHff<|_&P#UW-O13I$lTzt< z_4YN}&hj IL7(Ax^IzI zWYWX?TClcwHYm`Mc4iAtgq9j~u;ptXnCRP9OA@UDK97!yM{%oQ>35K=6CW3)B~V81 zJ^DF8B~9}cYC4d;9Si e<=i{!Gt6>;P@$B#p#!!uMt#Vh3_3uFfG8`T-pWw7Yo) zc)cSVagZ!NBPHjUh6P%#sLgZ7i0gpsn&18Y7TCgWg!`g0Q)wEHXcc^n71?RwIME@| zds8+IFr&aMi;M;Ra#-KoXp{F!vwQB$Am?c6ZDX oaFf$MUoul`OmE#i{8ly z8l@=~p`c**)LuYR(kOKpaVxxz{M9ZOMJTeevYH>vxU9}Q(GNGrPnAX?$c`OtYV<5O z2nVjzpw7=vZ_1iWgfaM!h*r4`5@`b}<#JF8C~W}>x4ti#@07HjXLA^`iUKz#j7m<* zTm^|_bjPit-(|$%e!u~$^V#Nqcpc8N-F_ PiH<52dBZzWtM#VJ>A3$>JTs=$y zK3YMuts3CvdjK{V_yjB;bCreXHUGg80oA|f_gQ|Q@KzI(2<$CMzRQJkp69D;3tt06 z6OD5jc!%p-?6dsRZlEA19nCgkaTrUOLp;w_uH6*Fw_Tog+tBiQ11Vl{Os{(KJ`3 z%eoJ26lGB9ms|7hRM40P=>BmV#`~$@l(qL!`MZZO@6!l?sRM4{_Blyf!vGv-8WY^X zVs~DIMf7HW&l2!NIsj^J-ivsVR@!cG#S7~Jk3z!IY7i$4E}5_oS2{dl+g)iR(lGJh zj;DYMuVxzP8sxF5!Rfug4pb&f9eAxf$c9sOt=oQSpDGWGp$Jllfbyn@n3#rZy@E;b zu{t|x<26cJs(!)C^_@Pr;rWIM;GDuAmCaPadX5etNM9arhFJX(Vp0C}#%QswX#(m9 z9kkfrUxi|~&UstNtTuMZ9q4xH67x27CVeysEoZg#Z0 wK)WP%P5C~=w0mI8?HX7|G;_J!F4G*2K<%lhM!hd7q5Arcj+(gE z-e_J*p8!{-`B!WgM$SdB&jK+nAAmAGNW~u@7qYOic?i-dp(Gz;u(t*KOtGmVsL!Os ze8aTrs`#t0F#F~24{5uGrqX$MmxCAmorkL0Ziw5C+wy@u4~A>+N<@v{FI99S$sIc@ z9Wxs6I)HzUItQ?!%XU4@Kv62jb7_NaYEBAlx7zfhLXc!Ml8?>Q2-tpb%TQpk1di8- zmZ*T!N>eLWjsa7BTfbzdENLe&3FX)5 z-NfDpF9!QR(u!{eky%yyYirUbT`Rj?5QT%BBpJ?f&|U=WjLAFbp{nT5HPiN=fTah( zzSsDqJs1r07~6JQAHe{3#qZgGZ9J_v#8-hIq9(u^ID&xBPJG|<(G)Rw^dn(okDXgm zE?22fm91-6h{j8ozB+l`!Y&VZniqgaipIc)Bq5AMppbE|Gxop~pCmoK?^uaR4AH7z z+`y=TDuwiR%G@djW`oxs`Sfm3D{D(a&Zo$F8Z1Z SPxYZnO=Z$huB{Toav+H0SO$^VhNnJn@h3Ap{4HJbs3?X?a8mH5y-@S 7Lo{E_por%F;l&g@wlULjak)@ZKb!g*@OKHYeHg^Ag@R zoz=`Y$AqP(=>qkbMkwjSbsipBS8fAVJQv? 6mTtYd8ixD_1-@=h~bwQbE8DuJ~i=G`6$NnZ2?x-xbecBXN>R(`eC zc4k D-lXiiCl(*tebCU EU?*gj^2Z8he}$27i?2|~n2)s1 z1~@M(yrvxf+$9v2&KW;ZstmRf0auQ@6ry(Re_Qe1egL+Tr@nwD*Sj1hmEJY+Ixu7f z?TIs(^938Puwb8H-ubkkuBn?NiHnAU_0P|#vle?;t0HBUG&|gHJ)~*qkhX~eB?-y& z&!h!zsK0C&P| mBlr=4%r?=Zd%B;JjiePKAWxaFk&QlJnX)lOrX==%F2y>$*n_Rheqp` zSn17IqI*+RKY`rB<+-7UKtJ2u4t^)GZQ0Sr|AanC;_03!R3) C*R8WfM0 z%09RK0moanza|n-t*sBWo#lcSMi3eIVGafnh${)7f-=~|_N*B|A{%;xGnc6 SUv z*oNzfAAU}~)x6|U9F5a(=^dtL@P=XsfH_cOcSn)sddmLM yk*6y8QJ3*AFF^L13yelc&@6oj!^9F}F$hY1U)9;f zsC>s2><<#P-#89JDD#2+JSCDA;(`d^+z=ZpA4395jms3a#QLmY>T0ElD8<%u2zW=p zcEz6JQn?J%+^Qsnxs&>Ev+kwR=g*&SY%~OmI*%NqnUdNjMhNBQXy{%}Hc_22do5Ug zTwhMY?n~wC!l!+E`O{NJ!2T&;Hs~H%0+g^h4wxG7Uk6kc*nefRK=w6j1ELmeO37Ac zt8mbNi>q+wMgnUU*yVyquP+`2uw}_82W%b!+{o2;|BxW8mxX5lJ^{Ym1<>#Il{%j+ z-f@hfZIUSLck%MC1)l9*ILRFNeoLQN7MYHT@q;2n3oxK-?k hbbiu!iD0(w~p zW(?dbpwtyIIwuwCkZ)B>lP7oWJvA)%1H4zCT%~$p87foJGn6v3{XoK8oSEu5;eve2 zQ5-NA*?+gSSoo5WDTS;D4iYxW4+$ bv@Fn>XhK%o8VW(spLu zITTR%cz?*> #Cf!{QZA>41@JcbdKM%dvn30K#ZMfT#LECvel8^aAEjJ#fRIi@z0~4jNo0+5Lj) z5UO!xQ;ti3A#fyJjR-MpGbrgc DH~z7TR{TsYoAZZw*WqM zsU6Vlg67U@0SPjh+$cO@d0})8X|B1LSb_^jwebU=$v*@ZIPDuJlwEiaeDTf7$(aLW z^H4=F!e? MGbCuB?^P3rbXFAmI*JEZR+HH0OHf%8_o@A4V$zqMYx&f(bDG=p;rr>I2Uan9z4v z+TtFnU&0h|F%Tu)*D5Gx2xHpru@bpsUVz%k&dLEM!1r%hBJ?9#S@g4Y{QtCl@bd#r zd_oFr{j$eynVTT&Ys8%fGXU_L1G^J|9Yjyh>LqQKfNgmBKsuo9uXQkZOL`p_9DD-P z6-?1#hw-HJz=7;Q`#3NPpV2fozFrT$C7{tzpwOg`Z(;hVw>}Vie!|E1K)l}x*)gM0 z{s5hTNPJRd7B0wPSjaao%t2=OcxzD}40_PeECgi?bsi`Xl-Z)$=#jDSvq0|TJ7a1D zp3{JQi$@=z9vTz`rak|lyE}=VGe9N^aUMeI(suSeYiRPCUL-pb)vWHleDfWBtv)D` z+BBLf*W^zirBP+;9utl~rF-BOcTcUV7M)mzaZmZ~J}xQMlCR#EHE-6=eS_L#*4|;( z(d(o#oicEixb<4Xxc`YRJ z-bG%@+ISkhl)v|*Nq8nqxGu>N=W6Zl z&l90^d8RXbW>9Trjf@H5Ls9e3i}>3tz9#y*xxKTXv~AXIv jRqq{bvxa|8K+Mpj=1i<_9;gi!a2LaBs3zysoROTU=Vo?zYS7 zw&U28zRm7fX)-u8r23F~Zf;I$-utOIqOvm1pfGNEd0CH7UX5;hDMjUJ*p&J~S$f+u zKORfP&@r_o9` I8Mg@ZjkmZfu(Y_4`n&uyWl|=SLwS@>ndEm7Trq`}gk;;fE?p!Cjiw1&DES za{7 B0%W `zuOaTz}S>l;iBlrsS43_{>m*seNUu#co}hKzR)! zefOkVHR@9=j^M`+PC{PfRfy-um_2yNtXv`X>m0Hde}3iGkAcATrDQS%781X|Z_`@V zzSe3IZwLT$_2v(pPL4@_R(ZL|p
yE;jY(p!Hpa)?`;gdje{^dc(_?b5;M>+1#Q} z+@`&itOBQiS%e4*qqdZyt=#Q-bjv*lhY3*9&HGV$Z&evhK=N|7_H^W@)nPHocb>LQ zB62bb)OG59?p~iE<(lH5eP!?KzfPOtcJMUqZDer**ov265qSAe1RzjcbX6q)iS!Jx zx)xj~XD>Q`{mt*kjuksO6RrHc#ZJC$Gd3~q7}`-vtM(I8S!1%GYEpJldmaISNZ4BR zuaiq=@PV>Gdj(xs)+Drn+m-{TFJ?!SSCl20R3_O9rL>(i6tcGRyT-{G!F)gJO1=UA z+`>{Px%@2oyE1&T_s8v|W5@g#&`U)nu2z
yCfmj^C!emGl`6+O_HLmnf^QOsyt2>b+4-s|mW4${7)s_K^90r)IddpWTgP z#V Z7jzzta=4fK #SRX6v6V;DJ2uf) zJ}zT!YJc79 TIZE&zVN;NwgkFSfhPTY*>;HWSOOFQ{1 zNK9%!0oRw(vKmzS6?^eymFR%tklDoh53?YJ+3JZl>ldw!bE*ll8)m;g;b-(~mc^+) zyyAb_`HD*7T4}pr+gfTh6QwSX8D=f?>o;Xj{aL%3RDBI?qqDmG+-6{S{JtW_sj_vE zC;`Hd-{(O459jcIxS?C31L;?26_)n&90Aii(@L$ebIT#86H?d~p(Mu3zpk=!<<~G9 zTtzGC7VGs4V^hI&>?mGxawT#&On)0!jkfwky<_I#^JK9r@ULiPo_ K&cg0&Ps9uAZL!ZTyb;dVJupdbDid+@9s|`Cpgh3Z WD!;~U zqY(o*dTALE$*zQxF}6B6?Wy^RW+-n7nVLY XXh1_Ob7 uDQ=)Lm64}e1eW% J=e*tireCmmXpCP+F%5|IV gWHW?l}Cv{j-+D z*v} 31*v9C=b2_(c1cb|wz9ayab!=YzuxAF?0>7Z6UB0$Jk;&meP`6x)@>Zu z${1QrE9&g(b!)7I)1)WqBaE;`*k;Ke2Pu4MF8;>p?5HM4lL#Hfilh^iw4c# YhlS}h6-#Us$|>3uc1 *g)(-3}&2l&C4y-!3%$R98>G+Gpj< zQch`BG*FL~ilI6IK2r~uB`Mavx9vin7H0<%I18jM#B5D&t>~1l2gEm4IGD#x52MP; ze+Su;6(j+^A=c7O91P9W%a|83u_+W3j9Nx(b9;Bh<%GD`N{dS|ogF 5w*ki2q5S=x$27UNI8EoRIAV3~N1y@HLR@O~|URO $N_^g)lP)YMl zya?R@=V|rfhIuROV6K6FEp#Ot6ON)pPy9x8%GAxgjD>_8Xg-BLtQZ0`F=zgTb+v&N zPps>>GnT6(ES!&&^GO`82UoiEJbyQeTK IGtFSOmvlEuWR$TlztE>JE4MBU0 zQ<&`c*{k0#m;osKQ?5{rewY-Au7)CxO~m7;z6$N>jh;!3#=9Rxy_DKcH`@yoC&;8r z!x2I#DM4ej6f0kuJ3C2#@T($`{G!L1Vglm!p(Le$JB7Z<$~m3N*!MMp7_~H(O~s46 zk$Z%6()I|^P(va9zh9i7uZq>^3lv`L+jo&V!Oae8y~H_8iN3_VGV1%xA>ZvmAb(1l z0^!7>am>sZ>?DpL-`E3Z@N7=bK)XIA>JH5xW2oyGwZm>P+y!*N>^?j;w(1uxMPv2^ zKX)7@>#icJ}^p?8u)|<_F#rIj{+MBxzs|ziu zB~}d`h`9T0Tuey#1;BmR9a^xU`~R5E*j)UE$>o56=GM+|c!_d}W^GN^WqqH4w7Q;{ z#@@|Myqii+XWhobiuL~bd?6A1^D8&1hk_#@WnKlygQOgnB^uNn`Cp}#yu!XTZ!}Yf z1h(dB=3ETcoUwz(tZu^jZ_Ki@3!f1^9HL7_qMlslWDaq!p}$L-GB uSLoJ_yQ2zIqY8ENIVZB}p|J2rVO0hslDrSTq*9bv9 zd^9RMJ1-of7SdeF+A=KA{nFCMamVYv%lcpkzkQY6T)%1no6~pW)^60a^dA>3XlQt{ zJ{0eL&bHJ^NXC057wxvB!s6kv25dzY3lPTf{Ba-^kTTn6iAN2pl4UkM|7jg-;-f)H z(*M4u=dRN$=zp*m(~2ty8_y>Vr^UDkLhZ*i-}%<(rI(~u{h1i9S9mrWS#ER1fw!8w z|66iWG*b~opyxJh1c3z^C@;?io2{&<$mvy5lA;lmpihT#z4UwR8~+1YaM3Xt*6Xbn z1&TVw{@XA3OJ26=qHSdIYYn^fCg1*odhoM5E~%E|(JyedfFy6r}*-+^t6xxFmYPk<(`tY!E}tgY4aWuyUJ^cY zM-5aI6TH7g?LwWP{C)ap35lYWu6*w>VAc!_Q4ZrI<(jA4r1wjUYiO8pCSCv_AyVxn z)N?w!I;)v%2~~=5B~Q^S!%IF-GrWlhP6zd445(3dbsA6Hf5J`}y|43hqm0){VE@{> zeV!tlqCRGlKp#uZ*Jm;o78VB+SPNp+{V4CUoESvtY@gLI%uTPzdu<=kF}v8`w$+!; z_O9Cn+fpwf&>R3J070q_Y&j+&HT%_N>QvAbegn~{`@OvrlT#xN-=Mlx3gDk 9T@NIzeK2njV*M}0^CE*Nrm zHP`4kJ1=GD g#Q+iK&wmMo>s3KAVrGgcoIJ|Hr(o-ApfFkcx{2 zO21O(vb7xf 9;exK;2?%rMuc0vSr<>iEXWL|kAgB!EB zxD ZM>*alk^mZW**^e_hOlGtzJdCF>5pCMMGDs7 zN1XUSkrvN1H9=5Wt#W|m2K3`+c )VD zy+NS@wCEK|mkSz)eYVyzOb5SR&vS8hnA*IUPWXTmN>&s)Cyjl*JQ-h90!*=}WeH%| zi`S=S>mE7~Cnl;!r>{#dfQ|K$mjd;K_ut)^wtP|Vw?2`Z>b3w0%53iAEoq%JLD&+& zrl%tyejT093qsumS!aDd(qOPfpfpSsoO6xT)&x+id};2y#ETeg_K(cv+HSCc@0F~X zhOoIeBP4V0yJF5)n2w`R+uspTp6oC9wH*rVWu8b25Nbd`$$p>rEGen=eT^nC6Mh59 zsQab8jxJ8aygutw>M84sb~{nOgc>BxxTL*H8?gjV`|Oz(uuc#L1@RwZLqh7`dk;{v zfue%X7fIlhKX!byQPq3X-KM8BMrNz|Xmek?$0YzCcA`-Y@%4yUNLCI%cie$zV1NlH z%%rOujVp@pELfXbDdte{57-Tc9bbsM6vER}W!5;Sf>FMem;Z&oXbeM?)+~Z8;1|Ly zpaU8qqv#ZR1^2?D=C@MIH~dP>gmk;RwQm_Tj;*@GPaTNsoqT+0gIlYOeN{f|V^M Efm*yxe}FYeCZChaPqiVQK4=20kZoIA+CrVi0t~P{6i`wwoLo zo3r)B?h88DM5yyF(&l$EWe{(3uCBrXDGTrRp<>zo%}k;{;0)w@PY)m(sFSr+yKUb! z?Ps7LR~HB+tJ6m=dFlgl9Id+UuX=E>VZNkJfFC%n1OhzJ)%jcFs&lO}&=FRA7#2QN zGj(`LdL_$qtYX9gz@ C zyXc+=5AqHld^D_t+A~1kD&|HL^YT)7wUoh6gO?!FnUNYtfML7Mtc=*tHE58O8;93B z18G+FqfpX%tri!e8dMP_DM5c1O7vsz8mIWrrS_$J#aCOrjjud4nEELYzTyK{zn;SZ3B*NI9Sr zfljr=ZiOfxcJ|8{Mb!5W3t<{$gY` !GB9ccyPUY1Kh-c; zB;$D+YCi@Gz@kk=IHx2h2Dr>?wZt14$;m~$B~k>pwP9Sb*PKdRiKDd7bU|ZcYR=rF z4CFE>RNQ0WpXln +Yz7yFmt}mZF0feNRO4dF2)DXJmiDJmc0i ztd*6Gsk4oAswLBD_0kasi(DNQn)sS!;t%9bAR+(|+B5=k5jQvnS9qVb?M1-IEON08 zPoB^#fDKB4l4QW|mvLTN#G(nIKjg8665=d%Jzi%Wyu9YV3Ly|jMI4f)ofSyCtn14| z#hYJrPuB{%yqOx>{A7epR68x$(H>7CrGtd`G)>dlWho~wD?DuyS64@9T<=%oH+Zg$ zT_?zR^ZIOz_{6qwCO;u7{-PHF#UWCCPuz>@jg=%oH25_S2sO^+-43J)*L1zo<(twc znNZ)~LiLY8gPVZHB M{Ha?X=RRrBP%lU0o4Ca`UG4twx!xd5{9&({DMY z1<}C9wD=8_%*`vOJZ*r7!Q`KN%mqikD2UQ^d83{o;~Fzx!n(<4urlDY^=b-YTh`+_ zs3VBN0@@5l`t=j%s3t?elpGoypUWJoVQnwIj3orqJ@iwaU!!*)M(Z$m}L!8As zP`--o-7OJtY#bfWBRbsVB+k)koivq(j|asAjZsY4Y_N1>bytN!`$mwam#lZ8?ocAM z?8J!^gPWh!G~3$LGg@cYbE0}hHkTt`pAx+1js{f}%!~SNbp+@_I*G=`Y=z~+bKG7s z7ds6&Z~oX?Qvoi8D5uC)As$;~Yc62?=C|!Fot@#AOX46#0e*ut Z_5}{Jji#db=zWLT7Eg zw<^KCQ|>E@kM;l*Nw|d*lM;`8wORVjVrx=&42+z2X|`rI-lxZzm dNk#g&s=#ZNE>i3x6RIAx5eg_Z~wG{Yc~wL z1gCjxy_vT_2Jd(^XP#of^Wp3_XRMa9V3Yxnac#U W096DnRw$ZacA=JqL?&upa z=10gla)%e1DqzAwLPClq`>k&~I0#{~v$B3P?&SWG*6or5en>^q(1{c8)#%gSWn{2g znC0qJ_mcEUjRJ3!qAhI=R1+3AW#;G3i;0RV0fW9~AmF={i{JXLqBJ)*2c=lC_~6$D zq|>97-y9287_>T#Ly<0U-p~YrS4`rbc;sMs Q6%D_Z7? z;ueuK>lfY?<%CDJhJX)R4Rs0tb-Vf*olrN+<*m-5xsea)bNWk-B)8qi=VX27-Zo)} z Xbv%u|emao0){feOrZ_J0mmo|Rc zBQG5_)abx=gZ@TemzkTjpIOd9ipSK8bO$(e(zv*}{k3o26n##CS^EBR1dU}m(||z} zc;RoPNC&K }RQn0hrn2I840)*>JCA_D(`0|(HD_xT49LNuGr zb@lbZ!ajHY{9uD7RyqQi%UEU|rgwE(yuv8FBJ!Xbkv>B4%PEE_A4*>h@p4V$AhRO* zSJz)Qjll %rTBM=H9*#8Un55i;ha-6kto%(l z_Q_o;YBjX @tq7uk3t N z)F$y-UPTz5NRIf%8>i?QkFj`9Y^ne)W?*1=R5=hz=s-{6LqZPfq%mx4Yz*2L_}M5n zvk%8!YAz9{a=^l;vx?}jwL_zh@`6OF1Wv!5aucPN48FZ_7xMD*11soEa <>k=$%^)4G;8!0hfJ}iLW^P#|m(cpA$)c}7`kB)8 z2D4))P6>V0;@Z38O2rPJH4%dZyw$RNK)d1d2qkw%QSNZZjMxaJLahc2%dM=Nk2QFl zZa0d+w }B426GqbuvpRZJkA$N!;-^Za6!ce`kGifTjij{Z-^{RT zwj%AkD-?ZxDDLn>Pm*uZQ}VRk1sPHB`q1J8#miHkAHJ#csikNZNC`D&RcA>ATa*4u zZ8fto+~?aAE{BQ}_n38PhgW0K%-$=60u!FxoM0!|nV{EFjTB5FxLx5y4T}-6f{C~> z T-sPV640?}^e z%QbNVKXk~<(;qMqyc;L(vMTqU{BH5vaQu|HuJJ^pBbA#i@~0-uyzrmSzShj3+&Z#8 zt$`um0vX%n9!fS?)GWInbr}CWYnWv9SW$5~*|NIz!y?J%M8_hZnN5qdh6-MhJLg{v z=4ivJQ%>g!c-@~TsbrGJS$UOq=ZRy?yI=OG@3?)}$y)V7dz;9pKYN8|+$9c`g8adK zaD$)s>pHqy7UpEk&TwG4LBxP7ruu8Q`rx-2On(+5(3E1A86JlNSFLPC0$-0dNI_~# zQXA?Dxyyem=5?pV4ZcA!k1@uXn~#$l;`-~VjrWM0Lay6P>Ei6tD{{U=QMRnP=6HAg zuvhDt|1Gnl&rpmkWBAn4Uw6m8*9!Erk;S6#;^_~#m2MGir!%%z4xspBr7F^*#e`EY zz Bgm0LaBo-EV`p>SokZs2Pl QJR7Y{o$NbjDz_Ty3mTL0u_1%WkT$$RvUHL)}^OPTy%P(4zm=_ g$7y0DNz8@y|e)QRntVAx5K;YoBuL65nV{8$<9eme <8MY#$*0E9JrI4D-< }KT2#9I@ZgPf zy&{a4C2|F0PsisUOZAPiLZ_1H6%LI@UNaksx^q4T-G8qkR`d!_q=~1=qY(&R6zDKN zhw>}G@KqR5H0q0%tDCC|UXZH&HqUq9D(|;3T^EK)^x=D;@kBE+4MX^V@I> Aq^<76NMr163-@OWHC!!14qziUtMi1_n>^y~|JzV0q3L#x4&LF4l62I- zU=wFz%judDDbJ-=ElF)PWJ2WMYujn=UB$pX73O#(P*H`3O34KFN4wB;`yP~4h>~CT zsKUr|D#PGMGJcg=%eJQ $@m^PEsv=VPP_Qb zX_*KT17!C8T79%s8x;}`+*c$SIO9~99hs18C(55<37t#J@Oj8-T)sYBpHDn}1b*Mm z?fzz=d;Z0>LPFS0zRTjc#IVM2O!8FE+NYcmw;!DcKD(&KZ6__{DvJ>mu(8{-a^59Z zw$j2ade89zvcJu(Od7(L^N}9XGpl;S< fB*OAU#P|YcfJ4pV?gZxCi(As66G6^ zO7)*BG_#u{MdUv}CWZ+iwe~+hcC0#vB>n&VSbPxKtpEO)+5Z0z7tSDil<4Sg_-}%F zj*hXjVPMFW$jQmwhYm$MzUYnPFfNy$U!>pn;QPz&|3xTyCEcya^>qnN#hKpwp~B;6 zM&|qM#pw2D9# CCQYe+Gm5JMvuO$C`6b zd#`rcQrx_$W9aN1em3aQu5<2JcLi1Ks5XIb?!A-S^({ZI^Q{#?i4=`g$PIQTj(@lN zYzZ57z~$q_zaRQ@zG$fz qZJ(#BIDJm?qQV z&nYKXlJl2i)TtoX5x-hgUELYlL+1oVWmBGS_2gzpQ$am)v7mt49G`SH-#Y%^t=K`{ z3KwlX{Un{#mOFWGH7wEn=PoPmCKdHU?Nt`9aL%bV%T*~N{AjD|k#^?$^Y-)0 {}m2$W*}A@Az6lC>Qu5r*2|K~ zSM3~r 1Rx&&_C#-@Z2X%4BR?xbkO;QO7Qi z^iGl^N(p@!mFN=B{-3LR7?TH|lzbD#7E_J7o*}ZRmy?%UqAOG~_gKxa@xs5jVf#jL zX!2&?x*V{F;?$8j)H`d9N3ZVy8WiCv^Lcpnvj6Ty4b?w0CK0oJkD;oLvw@c$7`>9^ zi8d)}dYP?VGUdK7xtl5GF93!^y)39Fs!yi0ivD~zMs+6{yYi=)U|YDk_U&L~I=16` zTb(3MWyGO9=yh03ix7&6h8hafb4I3D?>!Fxw-As*kOiDSCm`){-&GRa1%afCahgT- zt?>P?gy}fTOE;<(QjX>2F`2a7MW(gfe4tVCZQg$-&Z4^= AP> )rQR#ZgrMU}7r}}J!3mg}?Ktl#9u7Z1xW;o!w+H)EZH|wXpe{K|(MPM7HGOHN4 z4xb3F wK+EPjf8^-Y6fm4{rHOUXCZhkhF{idRUg$ffRS3f* zi+LGgmBs6)Z_5ba=hrDh$;|M7Hz78eAUo^znr-j$qDX0t&*nsX&x`1hbs` FQ%lbn$EJ+E??rEI z__5A3BJ!I~?_#;{JK-J)aS@v#M89a#DZwQ;W;yR*T9n^y28MSKu8Hzd7dew_(-g zq#B?+I+MaEIaIW=zlo#@xzNF^^Nt?p<4Zp)E(snt8-8uT!%EY#cr{mGMf&=$4fjQk zjdTEPd#ZKQ9bt+pvu65PH=``>rE(RS(a7ykqt5TnIpFe%70iAJE6T9OAp`&?-$b*7 z5(=b)I4l; uw#@V7wrCiN{Z!-ycg~AG45yL}KaWZdz{6tsHbhXHoeB^Rk`)d|- z5q+Ry=&wQo>6Srg =x$$d@h@zm>LGu2TOYe vMKoid5VdZmCgwti&*u3^tUou zS&K+76yD_fGE;po&S&)m#41geJSKh!V)tr7lSzV_sg20`z2W5>SJIW-U;pX_Nctp2 zFsK?4by*dS%D8r;yQ?3hIK|M%vt3L+w~efxyGm~QDzg2Ik<~}!?UMtJB;&Ja3A7dU z)~fBM{w?Diodh`Ux0pgJfMPIC2&lg<%kWuJOz$hMho=oc^yK%Tog}k8^rSYu0#em& z*EgAwAOd|UruBHeS+Gj}RldDI+v#V;f*zh|x9uHXt?!N%b9; 8;gx87K+YOmn{E# wl3)SrY_8;6yyYsc%kKp*Bb<^)Rm$m>)8%su}UTWbdo=Qs p=V z&@KioO)+;9tN6n0c=AbavdYp m=Ne2ee0%~_q{--d>aShf*iRoOn9Ft z+v4?#fO9)BMR|F7M1S^r&6u Ik{2I*XpWHOBpQ7kS3Y;mL z484&rX~zHvu&%lDF&IPjQLp3@^;rE7lcCg1N3IM--dha;fS(1RT92MNLJ|Xom~HQK zMpnZj&_guMZ43hgXAU7RLLwG6sQDFx!XdodoHYuddxyn&P?ciEoaW<>hU}3m3vXh7 z#4#N8tl*xde{v(Pznr(-ZSm7x5K?ID_hL6M6%i<2c2Dl0?MuETM;F*}%SktFvGm(^ zefVmXyF$>Nngz}GZ^NAvbszJYu8HGt1+F}i=ok!gias^(hw`&lyxg-Z&TEWs=H>)j zcNAJ`Co-}fFiS8Tn@Ns0wRO4oejg2=X*{yItOQb|lwb{LP&w}lzW~U{nG1#*0P^vk zuh9IC%%`{h3?FC~Dj?O~GmT{PjZow!jemxnH59hIFs9oLOhibsqp^rpe}SHs$R0Gw zzq~x!9?B3h@mEI(>7STKMVVyfAaMh@=@$e$X;?bFK4s)&?KhO`G`3*PL5gdye88Aw z6!-DIwEI;B{jCiNIG(cvEd%!WT9&T>_h|fVO-^EVfL}*>+sioORM4rV`LHV|r;7Bs zB3>mwg`(8P8-r4A ZE;izF{u zQxqoRClV@Hh=irsdb5Z-teg97L}E}bz460y1tmwx%TC-UlK-J@YmHR~n2>s!?aXFU zsxl!iNwbgR(JuNqH;~j$Ej_I=&$)ET%1X1qeE=Y=N|RL{kk=muo0FBGy&+m-GbLHo z&C1E7c&U?0d7X56vcSwXB_O2!c&iTXeyKiml>O*Qk!s)GYj;|+k)sqOE3 ks#=TlYz?2&TIH8+t+(M(oq##y%U6ZVV=M2JE?#xTIlN1FVS{90x4MH+b0{` zeW^`dGD&HUuqnx|#&3;A!MA+CntXs1^XQSDaP8<<)KD*noZXW56iy|oHDo`0R8(Ue zKJ4I$1A;)Y+|IiB01;Zluk>yW=VKGgYv~}C`tc7~LkNWN?C82U%VGQIA`2UmwET8* z$|O1#f; p10(Kgu*)Fo!lbYz^V&cfSoN>_hnX~F(fq~`t z5s>9q^qy!4VzR=LHR`4cRLP|`PQ#FKX276WC6! #^Za(R7IZ#;^%g zte=WzerA3}eLl*A=zj~crh=Dc4Cu@F%}G|8+vmX+_=uDhS@O|3Nb!h!ar2BIOK9I; zIW5GA0? R;?!Zq`+yta z(uw862?zOJ6SO$8ymY=Y)Asx&(&P0cF~Hb0Gd}Bw9MleDPQOc+0PC%(oEq0xxbgX0 z{V{+U4?Ulh_Ocuf6a}Gq!&jWlaEUWV{SVoetg)k7gbw_Dqw2a3s~;s8B;0# vqVV&(9 #QX!Dqt{ z`?EteC&jMwV%$9u$zmTP;Gj+3#2cOO;Cv z0pynKppi}aK-YY;Z{z!lcW#%p#e%hw++!o@e1{z$zn8^%M9!~x{fM3e6!^eZ@(aL+ zV=SZGK^)M==DOy071%<>e4XT6@KqRtowdb_{675W5aQ23fhQ58<7?GOXJ$(9o5! q$#o1uNY?xthLKuXhS~YrONFVISweI)Z$4*+@+cB2d>9%{d2E>n>dfLW! zGDF!u;7bw#Mg=|^9iL=p2tFq)sU(i;8c9D%2nGT^Tq^*&{qlfE)N}BXd<+D@-~gR6 zrEScG!GAsFB7f!dbs4WBrV(UcU?yESb+7HaZFIjQ)m1RnbD=tw%^EKVb `8d=Z}BxSbhW0W6 scs+le(TMC4Z5zayw8WlAqb{`C^*rAq!hJ&jCUGW@;Mxb-NeohrPH%LRy z1dEuW778{hd6d!2a-1cXv!$bprL#C;dn1rS-{nM_-`9(GjEu}Z_=M${>DVHldP|OD z;Vod?n?}BzK^(BQ(a{FbmpLe!qJa&6MFCEYC!_qfzFBBX)WCv>S{q}FZ_En3CtYlh zdpL9injFe0y_WRMJ&LMxQ|?0f23`k#sX;+NM5U(;2lH+qPv>SrIrU1tBd%&CKR3{O zqro>37v`C-mQ@xVq3AZePW0-0s6ozVesFLP)TV;Ll%03O5G;R2f0O3B?pJn!<^|B| zB<_mz`#4ByK##zy5uw@#GD2X gSM@!D!JFR~JU*4!Pm0{Q!`1+BBb#TGMlm9G;Q&2=GUWSi306&-o zr>LSuW;;SSe;jCx9q6j>MxBUf9QiU&1uhss$0v^u9t!nZ-SY+Xh0?5QkO81vfzb`R zJSaY;E3;SQj xv9vZ~$Y{J!HMTvt;q0p{qW3D3C3UX)h!DF{%@`d&m9B%3+Y zT8Pt|NtVTHKaN-|q^XvWKwt;aP0Y&^do _x>_;9c84L_oSrelZ@&gL+61_wyQ(S~`sp*F!4k zygAnw#pO+x(rN@{q9oNN%bRC;pa<%_?wK}W9@Zl62o<3Y12f3*5LVE0WV^L$2|ac) z6N}sQb}_L>w;%7dHoo2+>MaMc4gOwQv>V`D_}qT9?oF<}Y%Hp@{ (M z7BU(N5i#RD#wO$rZZkBD>RTECgOQ^dTXCm?-jee{*{}`mV57CBCA3~(uW-R52TU^Y zb%?)E5qY6>E+h&(hz*UN5{Ukxl3=aVOV6Gg=$N@V`8B;_@1I#afCGy^rOo2AF*qR# zAee#^BkghqBYua>lacDbJ}2WDYOt|*28fl=wiX3kKW%dNr1KtM6G1uXPRa4G;wXcn z;09eA)h5k*TDOh<<~YP(4fWZw_MV?Zns7!YQj8&15V0{0k*h#!> 0 >-pn8(IDB$zPNKMmlvIS(;JckNE){Ir?avR3n&Rh;g6k&{Y{< z3*<{u_@mH>sygY6)P&~GZN62I{8`3ps~hS#kB=vOHu|9_b;pXV*kcY*D`|JSkRS 3T^*wz&C-L-=xyRH8ucx#{ z$3-XTWFVb34LIqB`3Xt9$G8-7FcwSNUHQJusm2e8*p}9V`+pR`qTyX2wpR^o8>QMI zLjnK&C-*ogJ6S*2QTnc=Po+zI7;#tfCLe$*S-e^kg;YQ!4Y`{}T+YGB%5p`#=}~{3 zpX}Ohv}YSER?0~-3=||c%+436_Y_N2rgb|&*r}zo?fn$SwztYuh-y9(#M`=*fd~>0 zxg!LdNZE8y-g~yo_NR;0-WFKdA1m$lwBMlP9eVE$@Za{EtJni(uqbKBWokhX27(@{ z6BHSbPr!rl;!EuOgSC=TNB~140qB5VZCpV5UJD+FPYam1o83=py?`kFP5b(17y()d z3QK;N+PLy_2T3<*cLJmz!xq#Bj^HzTD#kdMaex z0#~P?he=2L_pC-o>zV+KwYR;C?>2jxQHN-STXPZZjLa--QP&(mu5ayPh_V#Ha2+0W z(8gAyFC7Zej7dv7Q)swX7DD~=;GyhJD(G0kZ#9TiC91FWBE{g*|J@MKywUYm15PwF zKV{xXIefqf 3r@b=$tz`5K G-kbH?FEB|En#zx6ITN|~`cY>fB^pJ#Dp3a1`Z?3SGR@(M@#_+b= z3WAPU^%VuJk&}~LlPUoyr6lZNcC-Zd{Fi}ykZJi0JV~G8D&c6XuSac%%l2*{e}=xx z4cU(ZI*i&6tzwo8a|OUpHH4S+<^-xug*?Z{4SrOZ3rugf&N1b&MJjtwbb-s89I9&n zV*+E}Sw}f_O}tJV#}DeGAtP2LNhw(!oRY8B7@EJ4Z1czbq_RP#LQMj7bQCWcc>&e_ zCT#+N2yK?#Az$Jwds9Jr%kWy+g>=ik-R_jLn0$ODsvcxV!TDF*I`j$v#*u^7`S7H0 zYHm?!oJum3P&g=@U_oO9iC8x&>GhWXIIM}4O7BPZ%hAfxPCnc3yyfxX0o%))RnR!a zx|)+zJ_aW+V{4NcG#?l53?~2g-PW)79u8b?aLOM6?*F8(ctu!1(jg9T-c>#ZiMM%4 zUSwbKkGX}ubL812E0~qTm)A*}C@{-!IZ4HNct%ui+MqGa@oXW1AMZIpqgQNC>1&o# z(L8oM5}FnW>b}xgW%Q{d2O!6sra%UP2z?;sywc!1A-mMPNj6n~U&2I1&4T=$5Y`kg z_4^*&FO_P2*P8EaY334tqeoo|vy=hfvos~Mc@oaKV|iF~=PrQafzGOHkf0J gLzb3aF?IHYwyq-u0Nqxt4p2>*`{Eg1UmPzcR%BiAZu$WL%MHdvE z eDKLg9AT=sKECeC}p z;GU(~6BtfXsybjn=q={v;;u4Li+5E;bamITkN3T88qZ`F7k*iY$p=7s*q3#q-)ZxQ z?N(R4^t_VbZ~Z>RK+wCrw-)!T&y>(W-8dE0@vaRTxbB{R;V6E~C=0|CjC52&esUEQ z`uNgC-QKn7{m{i_@G7In;p=uk#pM16zR8X8!?_}xWy_ 9XKvxj(EnvehVC}g8-XLg3`QJn|AlNNH_=KBeVQNV7Xj^_3NZR)X7;=fYt~5 z0S4fepy;JoTW4vf=49u61lZrZ@qIryG;cr$FD`7@TKz}^Vm;|)0NLAGrGs{xml}M) z0goL!&i0riUFBL%F5$z-aYM#?8^h-pCauA68Ay;vd9GBLOP!V#N7>?i0&VhZ$GUd6 zy5lqitDzt-(QhuRbISW|%UN&CM<|ey9rpj>cSqO#C4zE)4c?u@QJi^mQW0+gO){FP z^%bciP|1>8Z6X@Y#014Z1L-QT8%B?)Fpn$`9s=6EGs_n;BdcEF7s%%z_ifF!w3GN4 z$-Ixb80`GijN(hcRYR%ONvA>X{@}VG4k3G~$-K{?uWJ~z>duaL;mT-HFC+vXAAlA^ zX~B8B-R#6CFbQb?p#aQEaeKDvRN(T6!6wU2iiiQu&&Kyanza&n0je^XJyYhj&GO;o zW~W~hAsV_)hU6oJvD4}vv5OwEK6vp>GdF@N)+?PI&g`J{DuJ0I9Ys2~28Jiax+bZi zqh@{D9RFi$leI4i5=)&gc~xBC_ztHUc#;zwcj&dV&}j^b30NE-|Hjq?;qGJ8rRct; zse(1NwNkBx-X4WBiI>7T6w-v6>pFxQMD0$9`u@1>TXx^D(m8DB3|7?JkZNKd?H;=m z+;X&{=ZfndPc#YYybX~Le619IEjwx~-K%d(%>~ab@K4c&G_Dj<`dGStDXZ`8KJ}6H zhB@0E@BVR^np C_Oi9P7wsaT_qxf-ezTdXRVQTe8N(B1=99+*y}#$eRc4ylb#$}gDQG#F z#a9HQUl!%~Md^D-8mz4!Xul9j4lnA;02Zlh37vzA870+lDw!wK>dvHJ=ZVt3sqfV{ zZq#&YqeO~o-ia>o5+J-GE$O+_M(1QKc$xhn3!`QqmJGjpvY6*3<3qe-Yiw%m=UKYf zFVo)5{18#U-(?$ulgGQ1dzNY?Ld$1&*{A;fLsuSJan;Wx7+>NDXKEmhS%Ij}U*7;) z$|c>a2j+r#L6bZye%`LAhOA-|5|7&)#CT_8bYw*zvWu?Mmr&6Ay0HEREMXY2Ynq z-Fym4pNHiEW@hV4oQD8;W(BBB2Zl<^onQS(Nr@&%YdH^{j^ss|v=F__&4f;)Y9ebc zEQOIy3jcP-3Ny~6zso8uP)O1-bux}nqP27MoPYB|CViANc3UFK+`%INU@f$exsBuI zw%^!%Yq+Xouiu7O@x9?&4aE`|%d5}Yo=vR9vF@Y*n&vqnAKKjB; J}Trg zrSDCvt%KT4N>7z&uj6CghFF?QKEt=h{=2D5xxwl=h}}x(&kmmmPs9f5HZUEZFowG? zgjin=*bOb%Z`9JT%02F6J)8JF3A;~vGn{*Qlr9vS1>nJi` @#KmPbB`8PyE(t+RwB^K%DP!Nkayn=yx=@LR4J(Q`1a%Iln^l z!NTUSNTtsdr=n6b@rvRaHGiS7Q9?PwUPKlXO3>$#_c+StIk+L`9E7$gf$OR5feHyG zLU-K@#epxs#OKGb?WHc#fNSr$oO3KYq864T$v#?%_C!_8TG| LA+n1 z7H8Ai?fTwiF>YXjewJ!}3H(;AQz#kRbsI->$6vhw9aCYn#Iqg0D%)fWKz|vx0c-I2 zdzWHUI(O-N4Ny&5pOIV{m5-Ia_f+ZgW!Rj=?lhgWW-FwV=+jwrxDu_HuYV8V+b9FD zcX* >6N!X**C0DUfM)IY<=P}mI-KtdDu%*fjj~+)BidA+yh-k z5)$AAdR&lddfP7YF$|0@k6ORgD=hinc;xsEzVr4i^Gg&+!f>FSq)j;Qj( S4D6SwzY)87gt*Z1YEu3_!g(Z04YP|}7V@=m?c-X2)q 82Wh=$Z> zmLQj+X3DK~+rctm5_h6N@BU1 JU0OEx^7qP$=SH `${hzMUi6i z;K?F9XS(o_eq0#D(92G$l`mHX)K8JHwMPr=?)sZ`B&J=cU7kLh@=ZY5`$;7xNzE}Y z|D0e) 0SH+r! z4wf-it8FfZshXC92Z}B|*qfHtS>iF@*E5LOPCj0lY cZ85~oUBgkD zoz+JfSw@pj#<(?J4zo!6(mZ?Il1caPza3qip$lqnS#Z2(kOq&NVmk*jJre@E6Zdq$ zPTH1u+)wFrv&dcbh@%U+9L)%QMggku@pT9J7CJPhFdheiJk;vM6FJuV{$(b{$Cf5R zegi+hX2Qo{3LklBvwC(lXRhuHf5a6oBFcL@A%6Cus?Tf#-$lUb6b@EKPje#F=bc^P zAy^-~Rv930J{#vRIuii_7&0~!T2;;;HoWt4X-ws3XTG>-r}7Jfjfv#t@(izlxO8eD zH|jZauoSVlSPu9YP&1Ytvdcaw+2R$1!w>uU+1bH_5fm-E-Pb$)L{)kLO=nylP|QPY z+YUo1-~AQ0ka5}HHDmETOVxQM5`Je0KlnUwLy&kLG_c?n2ff%hV=LD%Rj+=|_qll| z%vRu|OfPiO8dSX(g;6aI!RKFul-!kruQHiQc5=#7w>|$n+Q7u!=6 y Iv8S z?IYIJ(%w>GyIvFQxuDy(2PuhQCx0AU<$~&KpJY$C(4_Qt`V(qEBN#3^D4TI>%Zjec z-?Aibl{&uMP6sS!LAm$bkdR5#ONTgvTn&zVutnNp+(;#;laQ-N$IYOH-DhEs!H9!^ zWchN{cjk0G@Vi9BE?h0pV~-NR^3p>GGx#69&D7fP1Y5`;9o0vXE8Te+B{ZdvxPYYx zBf+$j>fi|XO^)+?YU@391j=mn(IBglS>;9n!E=I+ h!1WF`HCSX z7&fPU+L_-iF&LA}az)Pj9;(AQ2E1Qs5<9T{P)iDw)?<4m0?pmd_01i^=8d7#koO-) zY`6(k6pCnN?JplO3kIe$$ANl6CXDZfg2!-hFp-T5Q`Lr`bJWpf; $POFc7vozi>Z3w_)TQt!Ucp@-l=@GT^e z;vDCO1s1 CE3k#skAC_+w!ar11iqPWIIN!sW z_G=4j#6Y=Ao4|gZKX9ToW1Yk>RDBL~#DOmZ3sTo0`Xp)F`#hrattZ~~m@Z|^my2X5 z8n{~fz$_stZR+4YFqcUZZ51Gsbk9xqjc=n_^4KLvM$%pKX&uBj7FMjEtK6m1yyoN+ z+)Rfl2`9IgY&W)r*lktpmF|rPH!3Q {pMU>4#yV^8-jw{3pnIzD+ zDMC|K+t&5frU#v(qSE9f_PMEzFSu@q`Y|b)aVHrMO!S-?XzbpA`Id7jNh$fHU(Vrn zqM|D~t3j=Sl8Gp$L;1ZSZtL%`tiIB(LH#h{!mX6Cw`%Ii`E-O;_;J>yjcR%e$$sz- z(h{TRQ2CIadAOrRlToANERD{0+Kt?X#hzR #qzf&wKs#j)?`|6XqKhJs0 z8lIq>mRp=xXswAR)rPWOB$@|{?WK}?sJoxo4#Vm7;yXl+yBT>X2>*W)MS&Fc%P-en zq@FbcfyjoMB?#71{G=DYMdX28-wS*^@=h`wJ(;=kfZw2BZosSw&_e4f LswvR zLzFaytCyy>*kUe4NPTr&i4PXo?4ER;Kbf+d+A&qOGeuSAYEIhiyq6!$_T)BsPu(a3 zxsPruFCSm8QKP<*Nh3Q);diKs26Va5S1T;SK7 ?NDYl%O`U1;| -nt8 dt`TGXq+j~Ax+|()!&@Lst zEv|ab4h$!5A%8wQxFJuC(c01}%qr>JeaTy*;?9I%PD)E9`9g1y`sM{U2eQrN7Uh21 z8so0LC3b9MH_OduaHrM4$gGZL?9j0VB}S3*&KyTZ-;bS+QbQ>TtM?A{mdyVs=nOMq z@8T&y0`k^=)-%T;1UhDDf!}s3$;r>l`T=31M7{)j;58_Om-;$6Wr#ljFs-}E2Z5Kc zE`4~)lfKaz56KWFh1>{Ek~o2HqV)dk-GkzQE_-ZV7XX^tcE0DjbK5_fPsT*j6C$GG zIwQNKQ?E b_QRw1snI>Rw_S6oufu zKj)@%+e_zC{$o(7moi{DAg6fQlbJb7BiP=?1;B^69b(GZ_^j8CgBZ!DbFr#N#1rVM-nmkOlg)q+?uS}=ch6Ec8fZMgurN*IRXz@D!hf_K+EgIU z93eafM+IC3HBbUuKfPbE9z1MZ!GsIzy32w})~EQuLuq6Ci9?9*A-X8XKm!S#+GQ>5 zDWKFYHNx@BosreTrd&0~!KS6dKsxb+&H)m%iSwxiIy&Jg%6N5`$E4lF`ASYVR$t%} z-X7rX`b%Zzdhs}ilkVOv*MW+N!t;Zh9+W5h4l-{|*br{*=`EIURhZq*mi_=k3)`Dp zMM~s lmPn1K=x*zS8o21^^xfP!`ecD1A zXa#tSuvr{{36gpoMMS{J0~rE^4U02vv=yRE2 xY%Zw&{2vmRw z&Vr}KFodmQ15ys{+HBH@XiT?H+d`+Iv(*9WnUEJ Uas-rQkasm+Te5gaD#EHyb *Dvh zf$U#IWHe0ZH31$0i^Exc3#c^1nNGX?A_#>7>U6(ToFlhy_>`~T)7unClg*%ZAoLh} zo @da&sbC|@T%$rF0f^LpE|50skYWO)EK{#`-C$KPx5 zY!z%vIdEq?o#DdG_L^>?5Vyd-LXf0m!Y^K-oG72!YRdWV!y9nYS~d3yeCF{j(y9Ss z)ws>}T9^d?$U%T+51H8G(3|8$(bn>c8(pyFl1JS5Tv*>97SCSz2s2fQ3$NUU0m2Dk z2o^*w?ZYFAPu&vpI%}SN7EL4yB?)yD=ipE{oQYyJ5Vqn!@OxoWUy;~z;d`o1+158a z@Y$_x{m@%@d>h-=Gw{uehQARKn!vH~D?>xCAe(t3Pid|B9`YB}&ADz7?&Z+|3z05| z+c{~jf1r;msEPU6v3RKAS>K`alYV2h_Jw>p3J Jf(?AMDY(C;HwEy?y z1^5k8Uol?pyY<}*zo=EAGSWT^&RN1J!I>iE+Yr>KS3J&8q^I )Vj+W+J|2pu3t`9&2YO`+|j^~`^q+cE0`cJ?+;PLe+0O$L7j8;$4s;1_-H<% z&mNK-rsL iUVBB_3Cjl01l3PubDqt^dTOHd Ji-NNF)>T(DgE+Sr+ph?bwGcAYlphKUqR 5q^=@C`Jt#UvT2uX!NIO`=#lTcV1{7^t91DjH$ z_P(f85{MBRpO&_c&!Y5xR!iOYydOeyEv(zJWL#24{%Cgi&4Z~W5>x>Rj{ } zPgJc|51Fo-(2nx5x$-hNT;DbG`p+U{97?ZKRiYfmZ8fjia_%>$@ZO{vN|&P=1q|8L zDxdb5MdddRJL8q?;GBfE;sIBV+`VzZx$bb{HU &baQDt)JTjnuw4m!KS0R*swvOt^&Q2$bG`@Yf5lcrrB9 RvA{=JM zD{le4?zy#%aFIFQ7oOk6c^p={wZ?Sx28|8{*WR 473ks0JVm);%FTZ`UrA6 R>@i* zze1AzeUzuzpZ3a$cYu@A EVpgv0DqnQq3&K?{Kq!|FLtUEsrq7 z4!V1-UhsW5xZbPJp=;^rG1_rnL`3ZLHsU-&C6?+^V#}UMBI8dK?K0%Nhcogd4A)my zRY_?vRJVuVBMc@&BjosIF4Ir+gIv(cgTwW)QGi1Np%OH9S72!HZsn4zJE^&|Lch72 z 4RrL?;KF){jH@wmI@l zwl%2n>Jor-rT>wx$e>E5S6A(plbYRLXSq!itk~GX@jaxuNH`nB`Aw};eEG({5=kOA z0 3Nz^4>e?4Lt`?`?8>h;X$aifb{& z+Pgs=eMXX)zy|tp87EQ8fpB%2jDxOF@{H|sp}ir z#w-p!DB;6zP8H&+QsP`+x7GSz{cViKX#Jth(f!t6?WSN7SWWf!a=BKeINS*aIP1 z>IGVQRhUog290o{1V|k*)D0{Cg-Ng=6Wmv`4g5R zhth-DURdh;0l(5RbPT&Slzw;;nAiyH(;=;LutN+S); 0@@*y#)LESptb}}gLj_c z=cq)q0k;&) =?K8)FRr4T5>h9~+b}|oyBPcH) zSAEwK9^4sV+VL3NQGkG)8gS6$xdS(hY}h2tldP`Ifw;17J#|Q)2w_=)dk HE9C8 z12o=Gd_M;0;;fw!11W6eC}G?l8WILxPocoB)eQ6*@*>c* w@VQ&2WvF`+y^luTUw?91 a@ig$^J;z@?q2{e@bn$)R1dLMDv73tOV*qZ6=Mc{%yg70O`btZjaO zixl4b)ERaOQckG1F`8(ip;>DRhR}w>1XE1w`4 ym+)MLFVDU8Ps-?diA5{N=Mnjr!^tonee6iUaUC^Fgmg@d;yRf;5nlA zk@b)qT{`8qlxKgYIshnO5OyHf?%BG$)Ma0k%<>nz3GNy=HQC4ClOi0UibImg1Ssf| z69+KiVE!1B=_u5QPbtdgQ~nYm$3Nz(&dv>75x^*H6NaGs+5eMO*3~UF10zmK*i9s7 z0O@+ZyAo(CYkxa}ZKsL3nRhLwcM2huVj}G9rJv`>U;pQ@D0Pr}{F(d3a>t;;c$S~z zf #)rqHKtQN}hf{H7a=NJ-o$SeC@}+J0 zj&+05rT}$JYvUm)h6vJ}2va&0YGmmV3P`H6FSRryAh+G6oB1(wp6O4k1si)KqdHW8 z6dKjd0%<&z^e$Kh&>yht(0@dEX3Rc43_Tln01uI8+ECPw5~4zwE~3~YRw_6+Cfm6p zlqeq{+lIW?y#_MNW8SIdIs0CNjME*W_0Zy&h7&(qgHFB6N-@!N3`$h{zpMJcoUrbG zTRViS4 D#nHLzmkY0Oug6^Rysmxb0UCAf(&~krqjC1jLI?n-A5oAvI<4hqIXb2F zE-JqwM> ;4jS-T2D;Gp^Z&J4$wyOR6$EN5owEtz;O9;=CtdX5O1{NDa z@^e6EN{k*ZsVkYgpC300I$03Ik{<47YyW7qzwnQr_u1goE!3t$CIeCu(Y*X{LlfYj z;S!TCcM^-#o-ef$0lbG+IM9LhGIg&rb~nNx?pBNh^%wBnN?(afQGXt|3ak>O5P`*L z!}lXkSte`%{zB}plRPnnC1Bs=uE$8V4)j857W#fHKx+1IBtbSvb_D6w;I?lv=-FsS z!)uGAtL>H?k+y7_>bHVrf+gsnV@^9Ixg;GTSWsgCZrKUAC5O3TTJ0|e^+7fh|3jWZ zb8<)q7A3mt`ju7IKux8;Xfpcu94m|m1%;zPQ6mf&d*DXZG|W*hRqpm2@YH9k7se?5 z^g`hy2OSyQ`0WFpm=pkrqiHk<)r6tRsdw3>4M5-l4PiQJ1r`t}S _8!X{(FF`_blAEaEF&m zoWm5DdQoRJLO9UkFSPjGIac%b91@a3(IC`KXvD0Yh9cdG>AB}Nx&guBwMKRN#HI&z z3Lt0kQ&Z3s_wbH@#8=@Gw>DbGg=!FHd^oP+?5Cfdy&`!%x`p!KJ}z*JzHhk=CuDS& z#$UYxRdZaMBx!3IaB?6FKx f!IKEt8aPdvr?rrWUv4bN^&fdzb=iAibk|QvJq70 z%#CCDs=m*29%|cDxIg|&8?IcOqOwJj7Qjhl7S{r~Ke+eV|F%*Z9RB>)NeunPAtZ!! zX8QP}n-^4bRUn9+oHHGt86k%(tIJkT3NN3K)%c#=kp;r=uw3w8hGc}}&QLIL$OQ$~ zGhy|R9EW=GS+fkl%zZ!S+8|!i{%_!;AUm5Jm0LG(D~ |0A&aPMrV|X5Zjx&G zT%;iyn&0xj+7$$b?ndC5X5r ulX9ywf|K!wF=&dkXra{ExY{nW{Sgd|FU{yECEm)8usRpfq{xLaamde z7n^^toypwXg3=3nw+$WS2)i;gfF<B=)5=U&(O|71W_A)4`H|GbR zEZ4?`H70^I)_bI00a^_q93g`Z2k5pea&P_jL|SI6?o CyKYP}7 zm=#9;PIC=8uO$Xin*fbqK%X+F9dDuIrcnNgx<8>8Cg>BrUH7Sp7hF--4VtjOkgAic z-5F}u#vdo39HeTPB<7a~Y&pHq+DUJRKFTAaYx_Prmxp4aK9jal-{D$uW45ETIp^=4 zKaK=Y*R>wh63ThHpKzzKa=jEZQGGoh@>P%?kHqcH@4tmSz~EjwE@E(Rm5tQ< Fo*IMY&GyBi>NKrzg-eVBt!c^) z*WETlPIKFc!^LZ*?r7;0fz(`#1gZDK+oARCQ>(6eozu2}7;ZfHM~d$eCuw|o!mc~x zpO6?6bduX$AOJ}eEeP)p?Ax_%cv`sN4st#BV*Eio1I{KP& zMmQMTJqQQ%01%Lp=2qksXZ^_cH4_ox>xID99a6&2b0&@{{C8~N>@{SQnp8Cge_8DA z4wlbt;I?RYDfjCvT)lze2IB}dAcX_vRl+;vxTcZznT}<*tug+cy!~y>Wq#ab;k*x} z QbfnY%^r?+a}wkjw!jVVJYbfA)7^ZqQUtepD@QTAE@+xeE4&FVhp}9x3Id z=WJNLdSrwS)VD(U)u_ZpgwqGrfj9u1 6+V`do`6K%}~_>zO8SW%iMfceR&JFPmha( zUpJ-gI0DG_mEid|TTCpDL;9g hZPc^m;@*NPT>6RNZ8Y9@K7d~e0fngKfi =D=X2;s>kAntf`eTFEw_gA$2EhyjcrN>)T~KjeUkgPlO=|_BAD{>5WM|(7 zzhlX`Ms)0O2Tzl_^-SeHRi(9tPEFh;?}r;+`~8{-nHV{|zp}r9gLMs8>dJBy6!>XR z)^Viw>&b?k_4Gnp*HPcZJ;B2O^n;YXXu?2I{2Qn8&mKN`BZQA2ze9$UlkX(R{^i5_ zC*-yVpSH7-VZVuV(u##d67hMy90rcNKU9z(fhdJU5S(v?czIK)a-Rze zm;FI@ue$*ll#=TpmG}2H_m?d)9R=G58!TKmmn&CFpoa^hbeoYn`*Z#kP#4SpbL&@A z*S*qgo5pEP(;I(;LkWZfDaisQt {QHDTIcyBIlp VGTC~p}N7k2frC|hCo{pNdK3 jhQxx zi#~odgDONF5N3L%+jqG5o55GlX0Sk%1&9rff5@duv1-19=FyPg7@gQS1NIr5ywGxA z?b(-9&ap?$$7Z2drpxrUa7o#;_^Z0f@_yrEs(C6UrM*UVNY7nVdz$UJ(ns9f_TMRd z;B*NBXEwgx267v!DWTx=Y#cDniKUVJ?gG~agq#;kbeaWL 3nZG6bXr%%!f_pFjy!x94uSvb{(2iIBB%1EZ=Kw5 z`~fl;(BSC@`~|3AQ@+L=@24`f!Xh_l41j^r-2X!Ob-3y3kwJ=Cglr;Go(R&}Qzv;S zornx bL_PhNs z&0kp+mSd4!uXf9!ys=;Yn?daMz4_>E$KY@4*uA>H+wE$!+c%mv 3eb;*a8{mwFco!J)Mz|G7#ql;vFbX;Bw$!n*5=p z1lFckRn2^z6rN!Y DwYBlJTN*CeJoxq!+LI5e$o!*!kK|YmxQrhM(hHTz?X>eg%+wS53?Lyc*e3g2 zD1%0R-#cz+#td@T0IOz32tmzc`m~@t2C|l5>m0ZH9$9%D2YwIAW)_2a2F8%WI$y*d z_VZEQr$K37h9gE4nY?yeUjw6>pqi|Ft{dn$sA?=!$6xe%IxHiEYn*~*v-Y?43@ z?+(>EOx1})UNxsA2NRzyS^kv%l5b0EP<&xJT)%AxDUKPdLzP)UrOBs9SKbpnC}22# zM~MC5&Ml~(hxX4>Z-^}2j6LBN2uLs?%V`kn6x6;=Bz~Z)V0%!INtpJdzCu+z8J*d* zHtlC-YDW8b_^Wn%QAvSg<8=I9`B)%?XcgN_vJSHb7R$X+^V#LWH-lx60C(d%8Od^l ztZQ^j{NGWTNHQDVB}ykB+*dN#b{4V-o})XgX@lI-ZE{J-41zJu$WVdWN@&tTN3)(m zda%HAbkL_1C@_eefV2nq?X1?oGM=BGA0VB=5GDaEFz^aUNe~z?0wri`(RyrA! zxm~%ZDPZ&a_Ws2D&iQZRUgjlYhdT{*)cHka-=+-)^vty*^z$|=#%qS}LSAaPPMr3A zLisAO;^9$V^A2E&QT!0<#ZYhKGuG uq%8DM-oJjUwm~%3FYYfvN&<^N^YX3AS(6{M|P~PV2OC zT?nq_e0VcZ6blLB*8S#z7=qe}@padI0og%%N`v9kXGpIOL=U~tAMcHc(U_$(%72ZP zRJ2j}6c}xls4Nrx;dkP5`plq)i#2N!4ER81aX%K7*P*KtrK+>3F+Dv!yu1V!q$mH) z`+H7|XRBh{af#sZjF!XD>BkkC3d}OXaAbLN@3ii^wJQ#;r+L8>p^gobXJr$fzDTse zL(TDPz5id8P_$m&rgSabPS#CK?k;fhT+I>-zHC5^U+?21akX?(pVZK<%`X`qR8%=s zyx6F>*j1;D8ru1F+5L{n4woCLmHYN?di^@c#Z$;j&43}eExdB^{kfW;NNLGs??lqN zPmzktemZ@u;Q*=HJ6e(po3ZUK0;#ln8(yP}MfP{B4?dYq(_t(fByYiq#+av=wA~dn zUr&1*s%qAD7oJ^k;?y;gzn|yWG;pW1<-{us%}+(aNOVLkg$#MD%I My>I zd>gIesCAQkC7q5usB1c~`c6l7Bx5+E#JE+Od|G5|RM&GS%(fQ+C#~#MbLCpsR-b{; ztwNJ!5`V2}OPS-pu=l>9vK3vhsO~dOn6+E@?w#h5u( |yAeNw z{b_n~O@4LrMF*plnVK-Dj~9_Azp@T0*VcB!dbbBj)VzP4^m=UU`MHg z@BRdSnj(3HQ#Ab;Wn6k?X%+n0^fSZ70+%t&^a^CuEpn z%^X&rjul> Zb6x;V &@ye|;B68Iy1XUj=bHzPQtxPeg9s9d< z`0|M=)kVi+T7viJk7X-f)tO;o8G08q`KFA<|MlqW`q8wPZiC6s! bVOK&?s_|{#)yQe+)I{#57hZIyTl^<4T-d#gixb z=BbrgvXUNYZX+WY^Rn3s|9_cC$}gAnsBbvu`6bOy`a8GOqlA8Y4T9h1rg%jwhAgc+ z9|DK2d%Qg6y3v!u#ok_-?>!t}^+!BLZTKz{owhfFPT&q_KK)~{OStx#^@<6Ygbb&C z%Ci=?n+W YncFrDNFTC_}u$Q zc-?*mr}z!#&i1YvQFrqcv24Rf4qiL%X8002SJj{pWp%gj30WzUW2eKnZA#UrrcAqB z1mZ`YtN#62$X8m*vXP=nH025N Vjd