knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)
library(zoo)
library(tseries)
library(lmtest)
library(sandwich)
library(car)
rm(list=ls())
library(quantmod)
library(ggplot2)
library(dplyr)
1. Úvod a údaje
Cieľom tejto úlohy je analyzovať vzťahy medzi logaritmickými dennými
výnosmi vybraného akciového titulu a výnosmi ďalších finančných aktív.
Konkrétne sa zameriavame na spoločnosť Apple (AAPL) a skúmame, do akej
miery sa jej denné výnosy dajú vysvetliť vývojom na trhu so zlatom
(GLD), energetickým sektorom (XLE) a celkovým trhovým indexom S&P
500 (SPY).
Výber aktív umožňuje porovnať správanie technologickej akcie s
rôznymi časťami finančného trhu — komoditami, sektorovými ETF a širokým
trhovým benchmarkom. Použitím denných logaritmických výnosov eliminujeme
vplyv úrovne cien a získavame časový rad vhodný na ekonometrickú
analýzu. ## Úvod do problému a stanovenie hypotéz Denné výnosy akciových
titulov reagujú na široké spektrum faktorov, ktoré zahŕňajú celkový
trhový sentiment, vývoj v jednotlivých sektoroch aj pohyby
alternatívnych aktív. Technologické spoločnosti, medzi ktoré patrí aj
Apple (AAPL), bývajú typicky veľmi citlivé na zmeny vo výkonnosti celého
trhu, ale ich správanie môže byť ovplyvnené aj špecifickými segmentmi,
ako sú komodity alebo odvetvové ETF. V tejto úlohe preto analyzujeme,
ako sa denné logaritmické výnosy spoločnosti Apple vyvíjajú v závislosti
od výnosov troch ďalších aktív: indexu S&P 500 reprezentovaného ETF
SPY, zlata prostredníctvom ETF GLD a energetického sektora cez ETF XLE.
Cieľom je zistiť, či zmeny v týchto aktívach dokážu štatisticky významne
vysvetliť správanie sa výnosov Apple a či má najväčší vplyv práve
celkový trh, ako by naznačovala ekonomická intuícia.
Naša pracovná hypotéza predpokladá, že všetky tri vysvetľujúce
premenné – výnosy indexu SPY, výnosy zlata (GLD) a výnosy energetického
sektora (XLE) – majú štatisticky významný vplyv na denné logaritmické
výnosy spoločnosti Apple (AAPL). Očakávame pritom, že výnosy trhu
reprezentované ETF SPY budú mať pozitívny vplyv, keďže Apple je súčasťou
indexu S&P 500 a jeho cena spravidla rastie v súlade s celkovým
trhovým sentimentom.
V prípade výnosov zlata predpokladáme, že vplyv môže byť buď mierne
negatívny, alebo veľmi slabý, keďže zlato často funguje ako bezpečné
aktívum a jeho výnosy sa môžu pohybovať opačne než akciové trhy. Pri
energetickom sektore očakávame, že jeho výnosy budú mať kladný vplyv na
výnosy Apple, keďže rast energetického sektora býva spojený s lepším
makroekonomickým prostredím, vyššou ekonomickou aktivitou a celkovo
pozitívnym sentimentom investorov.
Pracovná hypotéza teda tvrdí, že všetky tri koeficienty v regresnom
modeli sú štatisticky významné, pričom odhadovaný koeficient pri SPY by
mal byť kladný, koeficient pri XLE taktiež kladný a koeficient pri GLD
mierne záporný alebo blízko nule. Spoločná nulová hypotéza tvrdí, že
žiadna z vysvetľujúcich premenných nevysvetľuje správanie výnosov Apple,
čo znamená, že všetky koeficienty sú rovné nule; túto hypotézu testujeme
F-testom v rámci lineárneho regresného modelu.
Budeme testovať hypotézu
\(H_0:\) model je správne
špecifikovaný (\(\gamma_2 = \gamma_3 =
0\))
oproti
\(H_1:\) model je nesprávne
špecifikovaný (\(\gamma_2 \ne 0 \quad
\text{alebo} \quad \gamma_3 \ne 0\))
Import údajov
Na začiatok si importujeme údaje. Vybrala som si dáta o cene akcií
spoločnosti Apple a ETF’s, ktoré opisujú vývoj trhu zlata (GLD),
energetického sektora (XLE) a (SPY), ktoré kopíruje trh S&P 500.
Dáta sú za obdobie 1.1.2024-1.1.2025. Údaje sú stiahnuté priamo z
internetu, z databázy YahooFinance. Tieto hodnoty predstavujú vývoj
cien, na ktorom budeme následne analyzovať logaritmické výnosnosti a
vzájomné vzťahy medzi výnosnosťami daných aktív.
tickers <- c("AAPL", "GLD", "XLE", "SPY") # Apple, Gold ETF, Energy ETF, S&P500 ETF
getSymbols(tickers, from = "2024-01-01", to = "2025-01-01")
[1] "AAPL" "GLD" "XLE" "SPY"
data <- merge(Cl(AAPL), Cl(GLD), Cl(XLE), Cl(SPY))
colnames(data) <- tickers
ret <- na.omit(diff(log(data)))
colnames(ret) <- paste0(colnames(ret), "_ret")
ret_df <- na.omit(as.data.frame(ret))
head(ret_df)
Deskriptívna štatistika
V nasledujúcej časti vykonávame deskriptívnu štatistiku denných
logaritmických výnosov štyroch finančných aktív, aby sme získali
základný prehľad o ich rozdelení a volatilite.
AAPL_ret GLD_ret XLE_ret SPY_ret
Min. :-0.049366 Min. :-0.0363355 Min. :-3.276e-02 Min. :-0.030257
1st Qu.:-0.006736 1st Qu.:-0.0042584 1st Qu.:-6.372e-03 1st Qu.:-0.003000
Median : 0.001595 Median : 0.0016010 Median : 1.543e-03 Median : 0.001093
Mean : 0.001193 Mean : 0.0009509 Mean : 4.302e-05 Mean : 0.000857
3rd Qu.: 0.009288 3rd Qu.: 0.0073401 3rd Qu.: 6.793e-03 3rd Qu.: 0.005756
Max. : 0.070131 Max. : 0.0221408 Max. : 3.691e-02 Max. : 0.024561
Apple
Rozpätie výnosov sa pohybuje od –4,94 % po +7,01 %, čo z aktív robí
najvolatilnejšie. Priemerný denný výnos (0,12 %) aj medián (0,16 %) sú
pozitívne a naznačujú mierny rastový trend, zatiaľ čo bežné denné pohyby
(IQR) sa pohybujú do ±1 %.
Gold
Výnosy zlata kolíšu medzi –3,63 % a +2,21 %, čo je menej ako pri
AAPL. Priemer (0,095 %) aj medián (0,16 %) sú mierne pozitívne. Nižší
IQR potvrdzuje stabilnejší charakter zlata ako defenzívneho aktíva.
XLE
Rozpätie od –3,28 % do +3,69 % naznačuje výraznejšiu volatilitu
typickú pre energetický sektor. Priemerný výnos je takmer nulový, čo
odráža neutrálne dlhodobé smerovanie. Medián (0,15 %) je pozitívny, no
variabilita je vyššia ako pri SPY či GLD.
SPY
S&P 500 má najnižšie rozpätie výnosov (–3,02 % až +2,45 %) aj
najmenšie medzikvartilové rozpätie, čo potvrdzuje jeho stabilitu.
Priemerný denný výnos (0,085 %) aj medián (0,11 %) zostávajú pozitívne a
zodpovedajú širokému diverzifikovanému portfóliu.
2. Lineárna regresia v základnom tvare
V tejto časti odhadujeme lineárny regresný model, ktorého cieľom je
vysvetliť denné logaritmické výnosy spoločnosti Apple (AAPL) pomocou
výnosov troch ďalších finančných aktív: zlata (GLD), energetického
sektora (XLE) a indexu S&P 500 reprezentovaného ETF SPY. Ide o
najjednoduchší špecifikačný variant modelu, v ktorom predpokladáme
lineárny vzťah medzi výnosmi Apple a uvedenými vysvetľujúcimi
premennými, pričom koeficienty predstavujú okamžitú citlivosť výnosu
Apple na malé zmeny v jednotlivých aktívach. Odhad slúži ako
východiskový krok pre testovanie stanovených hypotéz aj pre následnú
diagnostiku modelu. Pôvodný regresný model:
\[AAPL\_ret = \beta_0 + \beta_1 \cdot
GLD\_ret + \beta_2 \cdot XLE\_ret + \beta_3 \cdot SPY\_ret +
u\]
modelA <- lm(AAPL_ret ~ GLD_ret + XLE_ret + SPY_ret, data = ret_df)
summary(modelA)
Call:
lm(formula = AAPL_ret ~ GLD_ret + XLE_ret + SPY_ret, data = ret_df)
Residuals:
Min 1Q Median 3Q Max
-0.044288 -0.006673 -0.000362 0.005717 0.066928
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0003073 0.0007477 0.411 0.6814
GLD_ret 0.0028525 0.0818840 0.035 0.9722
XLE_ret -0.1950403 0.0705065 -2.766 0.0061 **
SPY_ret 1.0396059 0.1007431 10.319 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.01173 on 247 degrees of freedom
Multiple R-squared: 0.3122, Adjusted R-squared: 0.3038
F-statistic: 37.37 on 3 and 247 DF, p-value: < 2.2e-16
Výsledky ukazujú, že najvýznamnejším faktorom ovplyvňujúcim denný
výnos Apple je index SPY, ktorý má kladný a vysoko štatisticky významný
koeficient. To znamená, že pohyb celého trhu je kľúčovým determinantnom
správania ceny Apple, čo je v súlade s očakávaniami, keďže Apple tvorí
významnú časť indexu S&P 500. Koeficient pri GLD je veľmi malý a
neštatisticky významný, čo naznačuje, že výnosy zlata nemajú
systematický vplyv na výnosy Apple. Premenná XLE je štatisticky významná
na hladine 1 % a jej koeficient má záporné znamienko, čo naznačuje, že v
analyzovanom období sa výnosy energetického sektora pohybovali často
opačným smerom ako výnosy Apple. Celková štatistická významnosť modelu
je potvrdená F-testom a približne 31 % variability výnosov Apple je
vysvetlených zahrnutými premennými.
3 Autokorelácia rezíduí
Autokorelácia rezíduí predstavuje situáciu, keď sú chyby regresného
modelu vzájomne časovo závislé, teda keď hodnota rezídua v jednom období
súvisí s hodnotami rezíduí v predchádzajúcich obdobiach. V kontexte
časových radov ide o bežný jav, ktorý však porušuje jeden zo základných
predpokladov klasického lineárneho modelu – nezávislosť chýb. Ak sa v
reziduách vyskytuje autokorelovaná štruktúra, môže to viesť k skresleniu
odhadov smerodajných chýb, nesprávnym p-hodnotám a následne k chybným
záverom pri testovaní hypotéz. Z tohto dôvodu je potrebné overiť, či
reziduá z nášho modelu nevykazujú systematickú časovú závislosť.
Detekcia autokorelácie reziduí
V tejto časti sa zameriavame na vizuálnu kontrolu prítomnosti
autokorelácie pomocou grafického porovnania empirických a fitted hodnôt.
Ak medzi týmito dvoma priebehmi vidíme systematické obdobia nad- alebo
podhodnotenia modelu, môže to naznačovať prítomnosť časovej závislosti v
reziduách. Nasledujúca vizualizácia nám umožní identifikovať, či model
zachytáva dynamiku dát dostatočne dobre, alebo či zostáva v reziduách
nejaká štruktúra, ktorá by mala byť ďalej testovaná formálnymi
štatistickými testami.
library(ggplot2)
# pridanie fitted values do dataframe
ret_df$fitted <- fitted(modelA)
# pridanie dátumu (riadky sa pôvodne volajú podľa dátumu)
ret_df$Date <- as.Date(rownames(ret_df))
# scatterplot + fitted line
ggplot(ret_df, aes(x = Date, y = AAPL_ret)) +
geom_point(color = "steelblue", size = 2) + # empirické dáta
geom_line(aes(y = fitted), color = "red", size = 1) + # fitted values (červená)
labs(
title = "AAPL: Empirické dáta (modrá) vs. Fitted hodnoty (červená)",
x = "Dátum",
y = "Log-výnos AAPL"
) +
theme_minimal()

Graf porovnáva empirické denné logaritmické výnosy akcie Apple,
znázornené modrými bodmi, s fitted hodnotami modelu, ktoré sú zobrazené
červenou spojnicou. Modré body vykazujú typickú volatilitu akciových
výnosov, pričom sa pohybujú okolo nulovej osi s občasnými extrémnejšími
pozitívnymi aj negatívnymi odchýlkami. Červená fitted čiara prebieha
uprostred týchto bodov a zachytáva iba základný vzťah medzi výnosmi
Apple a vysvetľujúcimi premennými modelu.
Z grafu je zrejmé, že fitted hodnoty nedokážu reprodukovať náhodné
krátkodobé výkyvy vo výnosoch, pretože model predpokladá lineárnu
štruktúru bez dynamických efektov. Napriek tomu je viditeľné, že fitted
čiara sleduje všeobecný trend a drží sa v strede rozptylu empirických
pozorovaní, čo naznačuje, že model približne vystihuje priemerné
správanie výnosov Apple. Zároveň však rozdiely medzi modrými bodmi a
červenou čiarou poukazujú na vysokú mieru nevysvetlenej variability, čo
je pre denné akciové výnosy bežné.
Graf teda ukazuje, že lineárny model zachytáva základnú citlivosť
AAPL na pohyby na trhu, no významná časť výkyvov zostáva náhodná alebo
spôsobená faktormi, ktoré model neobsahuje.
Uloženie reziduí
Týmto príkazom si z nášho odhadnutého modelu modelA ukladáme reziduá
do novej premennej res, aby sme ich následne mohli analyzovať a
skontrolovať, či neobsahujú autokoreláciu alebo inú systematickú
štruktúru.
AFC Graf
Po vizuálnej kontrole fitted a empirických hodnôt je ďalším krokom
formálna analýza toho, či reziduá vykazujú časovú závislosť.
Autokorelačná funkcia (ACF) umožňuje preskúmať, či je chyba v jednom
období štatisticky prepojená s chybami v predchádzajúcich obdobiach. Ak
by sa v reziduách objavila výrazná autokorelácia, znamenalo by to
porušenie predpokladu nezávislosti chýb, čo by mohlo skresľovať
testovanie hypotéz v rámci regresného modelu. Preto vypočítavame a
zobrazujeme ACF rezíduí pre prvé štyri oneskorenia, aby sme overili, či
sa v chybách nenachádza systematická štruktúra.
acf(res, lag.max = 4, main = "ACF rezíduí")

ACF graf zobrazuje autokorelačné koeficienty rezíduí pre oneskorenia
od 1 do 4. Všetky zobrazené hodnoty ležia v rámci modrých hraníc
štatistickej nevýznamnosti, čo znamená, že žiadne z rezíduí nie sú
výrazne prepojené so svojimi minulými hodnotami. Inými slovami, reziduá
sa správajú ako biely šum a neobsahujú systematickú autokoreláciu. Tento
výsledok je priaznivý, pretože potvrdzuje splnenie predpokladu
nezávislosti chýb v lineárnom regresnom modeli.
Durbin-Watson test
Durbin–Watson test používame na overenie, či sa reziduá modelu
nenaviazali jedno na druhé v čase. Ide o rýchly spôsob, ako zistiť, či
sú chyby v modeli náhodné, alebo či sa v nich objavuje nejaký pravidelný
vzor. Ak by reziduá boli autokorelované, znamenalo by to, že model nie
je úplne správne špecifikovaný. Preto si test overíme aj formálne týmto
príkazom.
# Durbin–Watson test
dwtest(modelA)
Durbin-Watson test
data: modelA
DW = 2.0414, p-value = 0.6275
alternative hypothesis: true autocorrelation is greater than 0
V našom prípade Durbin–Watson štatistika nadobudla hodnotu približne
2.04, čo je veľmi blízko referenčnej hodnote 2 charakteristickej pre
reziduá bez autokorelácie. P-hodnota testu je 0.6275, teda vysoko nad
bežne používajúcimi hladinami významnosti, čo znamená, že nemáme dôvod
zamietnuť nulovú hypotézu o absencii autokorelácie. Test teda
potvrdzuje, že reziduá modelu neobsahujú štatisticky významnu
autokoreláciu prvého rádu, čo je v súlade so závermi z vizuálnej a ACF
analýzy.
Breusch–Godfrey test
Po vizuálnom preskúmaní rezíduí a po vykonaní Durbin–Watson testu
dopĺňame analýzu aj o Breusch–Godfrey test, ktorý poskytuje robustnejšie
overenie, či sa v reziduách nenachádza sériová korelácia zvoleného rádu.
Keďže pracujeme s dennými finančnými časovými radmi, je vhodné overiť
najmä autokoreláciu prvého rádu, ktorá by mohla naznačovať, že model
nezachytil krátkodobú dynamiku vo vývoji výnosov. Breusch–Godfrey test
umožňuje formálne overiť tento predpoklad priamo na reziduách nášho
základného regresného modelu.
# Breusch–Godfrey test (order = 1)
bgtest(modelA, order = 1)
Výsledok testu ukazuje, že hodnota LM štatistiky je veľmi nízka
(0.11285) a sprevádza ju vysoká p-hodnota (0.7369). Takýto výsledok
naznačuje, že reziduá modelu neobsahujú žiadnu štatisticky významnú
autokoreláciu prvého rádu. Nulová hypotéza o absencii sériovej korelácie
preto nie je zamietnutá. Tento záver je v súlade s predchádzajúcimi
zisteniami z ACF grafu aj z Durbin–Watson testu, čo posilňuje dôveru v
to, že model pracuje s náhodnými a nezávislými reziduami. Na základe
toho môžeme konštatovať, že model neporušuje predpoklad nezávislosti
chýb a z tohto hľadiska je štatisticky špecifikovaný korektne.
Riešenie autokorelácie
Po odhade základného lineárneho modelu dopĺňame analýzu o Koyckov
model, ktorý umožňuje zohľadniť oneskorený vplyv závislej premennej na
svoj vlastný budúci vývoj. Do regresie preto pridávame jednu lagovanú
hodnotu výnosu Apple, čím testujeme, či má minulé správanie výnosov
Apple dodatočný vplyv na ich aktuálnu hodnotu. Táto špecifikácia je
vhodná najmä pri časových radoch, kde sa môže predpokladať, že časová
dynamika zohráva úlohu aj po zohľadnení ostatných vysvetľujúcich
premenných.
# Koyckov model (oneskorená závislá premenná)
ret_df <- ret_df %>% mutate(AAPL_ret_lag1 = dplyr::lag(AAPL_ret))
model_koyck <- lm(AAPL_ret ~ GLD_ret + XLE_ret + SPY_ret + AAPL_ret_lag1, data = ret_df)
summary(model_koyck)
Call:
lm(formula = AAPL_ret ~ GLD_ret + XLE_ret + SPY_ret + AAPL_ret_lag1,
data = ret_df)
Residuals:
Min 1Q Median 3Q Max
-0.044366 -0.006669 -0.000399 0.005762 0.067092
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0002801 0.0007547 0.371 0.71088
GLD_ret 0.0033333 0.0828118 0.040 0.96793
XLE_ret -0.1971957 0.0716313 -2.753 0.00635 **
SPY_ret 1.0416997 0.1017896 10.234 < 2e-16 ***
AAPL_ret_lag1 0.0076346 0.0535808 0.142 0.88681
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.01178 on 245 degrees of freedom
(1 observation deleted due to missingness)
Multiple R-squared: 0.3115, Adjusted R-squared: 0.3003
F-statistic: 27.71 on 4 and 245 DF, p-value: < 2.2e-16
Výsledky Koyckovho modelu ukazujú, že zahrnutie oneskorenej premennej
nezmenilo základný charakter modelu. Koeficient pri AAPL_ret_lag1 je
veľmi malý a neštatisticky významný, čo naznačuje, že minulé denné
výnosy Apple v tomto období nemajú dodatočný vysvetľujúci efekt nad
rámec premenných, ktoré už v modeli sú. Naopak, štatisticky významne
pôsobí výnos energetického sektora, ktorý si zachováva záporný vplyv
podobne ako v základnom modeli. Najvýraznejším faktorom zostáva výnos
indexu SPY, ktorý je opäť silne významný s kladným koeficientom, čo
potvrdzuje, že pohyb celého trhu je najdôležitejším determinantom
výnosov Apple.
Z pohľadu celkovej kvality modelu sa R-squared takmer nezmenilo
(približne 31 %), čo znamená, že zahrnutie lagovanej premennej
neprispelo k výraznému zvýšeniu vysvetlenej variability. F-test zostáva
vysoko štatisticky významný, čo potvrdzuje, že model ako celok je
vhodný, avšak pridaná oneskorená premenná nepriniesla dodatočnú
výpovednú hodnotu.
Na základe týchto výsledkov možno konštatovať, že v rámci
analyzovaného obdobia neexistuje významna krátkodobá zotrvačnosť vo
výnosnostiach Apple, a ich dynamika je dostatočne vysvetlená aktuálnymi
hodnotami vysvetľujúcich premenných.
Durbin-Watson pre Koyckov model
Po odhadnutí Koyckovho modelu je vhodné opätovne overiť, či sa po
pridaní oneskorenej premennej nezmenila situácia v reziduách. Keďže
Koyckov model pracuje s dynamickou štruktúrou, je prirodzené
skontrolovať, či tento rozšírený model neviedol k vzniku alebo naopak k
odstráneniu autokorelácie. Na tento účel opäť používame Durbin–Watson
test, ktorý umožňuje rýchlo a priamo vyhodnotiť, či sú reziduá navzájom
časovo závislé.
Durbin-Watson test
data: model_koyck
DW = 2.0484, p-value = 0.6481
alternative hypothesis: true autocorrelation is greater than 0
Hodnota Durbin–Watson štatistiky je 2.0484, čo je takmer totožné s
výsledkom zo základného modelu a zároveň veľmi blízko referenčnej
hodnote 2, ktorá zodpovedá absencii autokorelácie. P-hodnota 0.6481 je
vysoká, takže nemáme dôvod zamietnuť nulovú hypotézu o nezávislosti
rezíduí. Tento výsledok potvrdzuje, že ani po zahrnutí lagovanej
premennej sa v reziduách neobjavila štatisticky významná autokorelácia.
Z hľadiska diagnostiky teda rozšírený model neporušuje predpoklad
nezávislosti chýb a z tohto pohľadu je špecifikovaný korektne.
Newey–West robustné štandardné chyby (pre základný model)
Keďže pri finančných časových radoch sa často vyskytuje
heteroskedasticita alebo slabá forma autokorelácie, je vhodné overiť aj
robustnosť odhadnutých smerodajných chýb. Na tento účel používame
Newey–West štandardné chyby, ktoré korigujú štandardné chyby
koeficientov tak, aby zostali konzistentné aj v prípade, ak reziduá
modelu nie sú úplne homoskedastické alebo nezávislé. Odhad samotných
koeficientov sa nemení, upravujú sa iba ich štandardné chyby a tým aj
výsledné t-štatistiky a p-hodnoty. Týmto krokom získavame stabilnejší
pohľad na štatistickú významnosť jednotlivých premenných.
coeftest(modelA, vcov = NeweyWest(modelA))
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.00030731 0.00068327 0.4498 0.653274
GLD_ret 0.00285249 0.10022043 0.0285 0.977317
XLE_ret -0.19504030 0.06008348 -3.2462 0.001332 **
SPY_ret 1.03960592 0.10109779 10.2832 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Po aplikovaní Newey–West korekcie sa ukazuje, že štruktúra
významnosti v modeli zostáva veľmi podobná ako pri klasických
štandardných chybách. Premenná GLD_ret je aj naďalej neštatisticky
významná, čo potvrdzuje, že výnosy zlata nevysvetľujú výnosy Apple v
analyzovanom období. Premenná XLE_ret si zachováva štatistickú
významnosť na približne rovnakej úrovni a jej koeficient zostáva
záporný, čo poukazuje na negatívny súvis medzi energetickým sektorom a
výnosmi Apple. Najvýraznejším faktorom modelu zostáva SPY_ret, ktorý je
aj po robustnej korekcii vysoko štatisticky významný, s veľmi silným
pozitívnym vplyvom.
Robustné smerodajné chyby teda nemenia celkové závery a potvrdzujú,
že výsledky základného modelu sú stabilné aj po zohľadnení možného
porušenia klasických predpokladov. Model poskytuje konzistentne
interpretovateľné výsledky a identifikované vzťahy medzi premennými sú
robustné voči týmto korekciám.
Záver
Výsledky analýzy ukazujú, že reziduá odhadnutého modelu nevykazujú
žiadnu štatisticky významnú autokoreláciu. Vizualizácia fitted hodnôt v
porovnaní s empirickými dátami neodhalila žiadne pravidelné vzorce,
ktoré by naznačovali časovú závislosť chýb. ACF graf potvrdil, že všetky
hodnoty autokorelácie pri oneskoreniach 1 až 4 sa nachádzajú v rámci
hraníc štatistickej nevýznamnosti, takže reziduá sa správajú ako
náhodný, časovo nezávislý proces.
Tento záver ďalej podporujú oba formálne testy. Durbin–Watson
štatistika bola v oboch modeloch veľmi blízko hodnote 2 a p-hodnoty boli
vysoké, čo znamená, že nemáme dôvod predpokladať pozitívnu autokoreláciu
prvého rádu. Rovnako aj Breusch–Godfrey test poskytol vysokú p-hodnotu,
čím potvrdil absenciu sériovej korelácie. Po rozšírení modelu o
oneskorenú hodnotu závislej premennej sa situácia nezmenila a reziduá
zostali bez autokorelačnej štruktúry.
Z výsledkov teda vyplýva, že model je z hľadiska autokorelácie
štatisticky v poriadku. Reziduá sú nezávislé, nepodobajú sa na
systematický časový vzor a všetky použité diagnostické nástroje vedú k
rovnakému záveru. Model je teda vhodne špecifikovaný, aspoň z hľadiska
tohto predpokladu, a autokorelace nepredstavuje problém v interpretácii
jeho výsledkov.
LS0tCnRpdGxlOiAiRGV2aWF0YSDDumxvaGEiCmF1dGhvcjogJyBNaXJvc2xhdmEgTWVkdmVja8OhICA8YnI+JwpkYXRlOiAiU2VwdGVtYmVyIDIwMjUiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRoZW1lOiB1bml0ZWQKICAgIGhpZ2hsaWdodDogdGFuZ28KICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB0cnVlCiAgICBkZl9wcmludDogcGFnZWQKZWRpdG9yX29wdGlvbnM6CiAgbWFya2Rvd246CiAgICB3cmFwOiA3MgotLS0KYGBge3J9CmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICAgIGVjaG8gPSBUUlVFLAogICAgbWVzc2FnZSA9IEZBTFNFLAogICAgd2FybmluZyA9IEZBTFNFCikKYGBgCgo8c3R5bGU+Ci8qIENlbGtvdsOpIHBvemFkaWUgKi8KYm9keSB7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2YzZThmZiwgI2U5ZDVmZiwgI2VkZTlmZSk7CiAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgY29sb3I6ICMyZTA4NTQ7CiAgbGluZS1oZWlnaHQ6IDEuNzsKICBwYWRkaW5nOiAyNXB4Owp9CgovKiBIbGF2bsOpIG5hZHBpc3kgKi8KaDEsIGgyLCBoMyB7CiAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogIGNvbG9yOiAjNGIwMDgyOyAvKiB0bWF2b2ZpYWxvdsOhICovCiAgdGV4dC1zaGFkb3c6IDBweCAxcHggMnB4ICNlOWQ1ZmY7Cn0KPC9zdHlsZT4KCmBgYHtyfQpsaWJyYXJ5KHpvbykKbGlicmFyeSh0c2VyaWVzKQpsaWJyYXJ5KGxtdGVzdCkKbGlicmFyeShzYW5kd2ljaCkKbGlicmFyeShjYXIpCnJtKGxpc3Q9bHMoKSkKbGlicmFyeShxdWFudG1vZCkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGRwbHlyKQpgYGAKIyAxLiDDmnZvZCBhIMO6ZGFqZSAKQ2llxL5vbSB0ZWp0byDDumxvaHkgamUgYW5hbHl6b3ZhxaUgdnrFpWFoeSBtZWR6aSBsb2dhcml0bWlja8O9bWkgZGVubsO9bWkgdsO9bm9zbWkgdnlicmFuw6lobyBha2Npb3bDqWhvIHRpdHVsdSBhIHbDvW5vc21pIMSPYWzFocOtY2ggZmluYW7EjW7DvWNoIGFrdMOtdi4gS29ua3LDqXRuZSBzYSB6YW1lcmlhdmFtZSBuYSBzcG9sb8SNbm9zxaUgQXBwbGUgKEFBUEwpIGEgc2vDum1hbWUsIGRvIGFrZWogbWllcnkgc2EgamVqIGRlbm7DqSB2w71ub3N5IGRhasO6IHZ5c3ZldGxpxaUgdsO9dm9qb20gbmEgdHJodSBzbyB6bGF0b20gKEdMRCksIGVuZXJnZXRpY2vDvW0gc2VrdG9yb20gKFhMRSkgYSBjZWxrb3bDvW0gdHJob3bDvW0gaW5kZXhvbSBTJlAgNTAwIChTUFkpLgoKVsO9YmVyIGFrdMOtdiB1bW/FvsWIdWplIHBvcm92bmHFpSBzcHLDoXZhbmllIHRlY2hub2xvZ2lja2VqIGFrY2llIHMgcsO0em55bWkgxI1hc8WlYW1pIGZpbmFuxI1uw6lobyB0cmh1IOKAlCBrb21vZGl0YW1pLCBzZWt0b3JvdsO9bWkgRVRGIGEgxaFpcm9rw71tIHRyaG92w71tIGJlbmNobWFya29tLiBQb3XFvml0w61tIGRlbm7DvWNoIGxvZ2FyaXRtaWNrw71jaCB2w71ub3NvdiBlbGltaW51amVtZSB2cGx5diDDunJvdm5lIGNpZW4gYSB6w61za2F2YW1lIMSNYXNvdsO9IHJhZCB2aG9kbsO9IG5hIGVrb25vbWV0cmlja8O6IGFuYWzDvXp1LgojIyDDmnZvZCBkbyBwcm9ibMOpbXUgYSBzdGFub3ZlbmllIGh5cG90w6l6IApEZW5uw6kgdsO9bm9zeSBha2Npb3bDvWNoIHRpdHVsb3YgcmVhZ3Vqw7ogbmEgxaFpcm9rw6kgc3Bla3RydW0gZmFrdG9yb3YsIGt0b3LDqSB6YWjFlcWIYWrDuiBjZWxrb3bDvSB0cmhvdsO9IHNlbnRpbWVudCwgdsO9dm9qIHYgamVkbm90bGl2w71jaCBzZWt0b3JvY2ggYWogcG9oeWJ5IGFsdGVybmF0w612bnljaCBha3TDrXYuIFRlY2hub2xvZ2lja8OpIHNwb2xvxI1ub3N0aSwgbWVkemkga3RvcsOpIHBhdHLDrSBhaiBBcHBsZSAoQUFQTCksIGLDvXZhasO6IHR5cGlja3kgdmXEvm1pIGNpdGxpdsOpIG5hIHptZW55IHZvIHbDvWtvbm5vc3RpIGNlbMOpaG8gdHJodSwgYWxlIGljaCBzcHLDoXZhbmllIG3DtMW+ZSBiecWlIG92cGx5dm5lbsOpIGFqIMWhcGVjaWZpY2vDvW1pIHNlZ21lbnRtaSwgYWtvIHPDuiBrb21vZGl0eSBhbGVibyBvZHZldHZvdsOpIEVURi4gViB0ZWp0byDDumxvaGUgcHJldG8gYW5hbHl6dWplbWUsIGFrbyBzYSBkZW5uw6kgbG9nYXJpdG1pY2vDqSB2w71ub3N5IHNwb2xvxI1ub3N0aSBBcHBsZSB2eXbDrWphasO6IHYgesOhdmlzbG9zdGkgb2QgdsO9bm9zb3YgdHJvY2ggxI9hbMWhw61jaCBha3TDrXY6IGluZGV4dSBTJlAgNTAwIHJlcHJlemVudG92YW7DqWhvIEVURiBTUFksIHpsYXRhIHByb3N0cmVkbsOtY3R2b20gRVRGIEdMRCBhIGVuZXJnZXRpY2vDqWhvIHNla3RvcmEgY2V6IEVURiBYTEUuIENpZcS+b20gamUgemlzdGnFpSwgxI1pIHptZW55IHYgdMO9Y2h0byBha3TDrXZhY2ggZG9rw6HFvnUgxaF0YXRpc3RpY2t5IHbDvXpuYW1uZSB2eXN2ZXRsacWlIHNwcsOhdmFuaWUgc2EgdsO9bm9zb3YgQXBwbGUgYSDEjWkgbcOhIG5hanbDpMSNxaHDrSB2cGx5diBwcsOhdmUgY2Vsa292w70gdHJoLCBha28gYnkgbmF6bmHEjW92YWxhIGVrb25vbWlja8OhIGludHXDrWNpYS4KCk5hxaFhIHByYWNvdm7DoSBoeXBvdMOpemEgcHJlZHBva2xhZMOhLCDFvmUgdsWhZXRreSB0cmkgdnlzdmV0xL51asO6Y2UgcHJlbWVubsOpIOKAkyB2w71ub3N5IGluZGV4dSBTUFksIHbDvW5vc3kgemxhdGEgKEdMRCkgYSB2w71ub3N5IGVuZXJnZXRpY2vDqWhvIHNla3RvcmEgKFhMRSkg4oCTIG1hasO6IMWhdGF0aXN0aWNreSB2w716bmFtbsO9IHZwbHl2IG5hIGRlbm7DqSBsb2dhcml0bWlja8OpIHbDvW5vc3kgc3BvbG/EjW5vc3RpIEFwcGxlIChBQVBMKS4gT8SNYWvDoXZhbWUgcHJpdG9tLCDFvmUgdsO9bm9zeSB0cmh1IHJlcHJlemVudG92YW7DqSBFVEYgU1BZIGJ1ZMO6IG1hxaUgcG96aXTDrXZueSB2cGx5diwga2XEj8W+ZSBBcHBsZSBqZSBzw7rEjWFzxaVvdSBpbmRleHUgUyZQIDUwMCBhIGplaG8gY2VuYSBzcHJhdmlkbGEgcmFzdGllIHYgc8O6bGFkZSBzIGNlbGtvdsO9bSB0cmhvdsO9bSBzZW50aW1lbnRvbS4KClYgcHLDrXBhZGUgdsO9bm9zb3YgemxhdGEgcHJlZHBva2xhZMOhbWUsIMW+ZSB2cGx5diBtw7TFvmUgYnnFpSBidcSPIG1pZXJuZSBuZWdhdMOtdm55LCBhbGVibyB2ZcS+bWkgc2xhYsO9LCBrZcSPxb5lIHpsYXRvIMSNYXN0byBmdW5ndWplIGFrbyBiZXpwZcSNbsOpIGFrdMOtdnVtIGEgamVobyB2w71ub3N5IHNhIG3DtMW+dSBwb2h5Ym92YcWlIG9wYcSNbmUgbmXFviBha2Npb3bDqSB0cmh5LiBQcmkgZW5lcmdldGlja29tIHNla3RvcmUgb8SNYWvDoXZhbWUsIMW+ZSBqZWhvIHbDvW5vc3kgYnVkw7ogbWHFpSBrbGFkbsO9IHZwbHl2IG5hIHbDvW5vc3kgQXBwbGUsIGtlxI/FvmUgcmFzdCBlbmVyZ2V0aWNrw6lobyBzZWt0b3JhIGLDvXZhIHNwb2plbsO9IHMgbGVwxaHDrW0gbWFrcm9la29ub21pY2vDvW0gcHJvc3RyZWTDrW0sIHZ5xaHFoW91IGVrb25vbWlja291IGFrdGl2aXRvdSBhIGNlbGtvdm8gcG96aXTDrXZueW0gc2VudGltZW50b20gaW52ZXN0b3Jvdi4KClByYWNvdm7DoSBoeXBvdMOpemEgdGVkYSB0dnJkw60sIMW+ZSB2xaFldGt5IHRyaSBrb2VmaWNpZW50eSB2IHJlZ3Jlc25vbSBtb2RlbGkgc8O6IMWhdGF0aXN0aWNreSB2w716bmFtbsOpLCBwcmnEjW9tIG9kaGFkb3ZhbsO9IGtvZWZpY2llbnQgcHJpIFNQWSBieSBtYWwgYnnFpSBrbGFkbsO9LCBrb2VmaWNpZW50IHByaSBYTEUgdGFrdGllxb4ga2xhZG7DvSBhIGtvZWZpY2llbnQgcHJpIEdMRCBtaWVybmUgesOhcG9ybsO9IGFsZWJvIGJsw616a28gbnVsZS4gU3BvbG/EjW7DoSBudWxvdsOhIGh5cG90w6l6YSB0dnJkw60sIMW+ZSDFvmlhZG5hIHogdnlzdmV0xL51asO6Y2ljaCBwcmVtZW5uw71jaCBuZXZ5c3ZldMS+dWplIHNwcsOhdmFuaWUgdsO9bm9zb3YgQXBwbGUsIMSNbyB6bmFtZW7DoSwgxb5lIHbFoWV0a3kga29lZmljaWVudHkgc8O6IHJvdm7DqSBudWxlOyB0w7p0byBoeXBvdMOpenUgdGVzdHVqZW1lIEYtdGVzdG9tIHYgcsOhbWNpIGxpbmXDoXJuZWhvIHJlZ3Jlc27DqWhvIG1vZGVsdS4KCkJ1ZGVtZSB0ZXN0b3ZhxaUgaHlwb3TDqXp1IAoKJEhfMDokIG1vZGVsIGplIHNwcsOhdm5lIMWhcGVjaWZpa292YW7DvSAoJFxnYW1tYV8yID0gXGdhbW1hXzMgPSAwJCkKCm9wcm90aQoKJEhfMTokIG1vZGVsIGplIG5lc3Byw6F2bmUgxaFwZWNpZmlrb3ZhbsO9ICgkXGdhbW1hXzIgXG5lIDAgIFxxdWFkIFx0ZXh0e2FsZWJvfSAgXHF1YWQgXGdhbW1hXzMgXG5lIDAkKQoKIyMgSW1wb3J0IMO6ZGFqb3YgICAgICAKTmEgemHEjWlhdG9rIHNpIGltcG9ydHVqZW1lIMO6ZGFqZS4gVnlicmFsYSBzb20gc2kgZMOhdGEgbyBjZW5lIGFrY2nDrSBzcG9sb8SNbm9zdGkgQXBwbGUgYSBFVEYncywga3RvcsOpIG9waXN1asO6IHbDvXZvaiB0cmh1IHpsYXRhIChHTEQpLCBlbmVyZ2V0aWNrw6lobyBzZWt0b3JhIChYTEUpIGEgKFNQWSksIGt0b3LDqSBrb3DDrXJ1amUgdHJoIFMmUCA1MDAuIETDoXRhIHPDuiB6YSBvYmRvYmllIDEuMS4yMDI0LTEuMS4yMDI1LiDDmmRhamUgc8O6IHN0aWFobnV0w6kgcHJpYW1vIHogaW50ZXJuZXR1LCB6IGRhdGFiw6F6eSBZYWhvb0ZpbmFuY2UuIFRpZXRvIGhvZG5vdHkgcHJlZHN0YXZ1asO6IHbDvXZvaiBjaWVuLCBuYSBrdG9yb20gYnVkZW1lIG7DoXNsZWRuZSBhbmFseXpvdmHFpSBsb2dhcml0bWlja8OpIHbDvW5vc25vc3RpIGEgdnrDoWpvbW7DqSB2esWlYWh5IG1lZHppIHbDvW5vc25vc8WlYW1pIGRhbsO9Y2ggYWt0w612LgpgYGB7cn0KdGlja2VycyA8LSBjKCJBQVBMIiwgIkdMRCIsICJYTEUiLCAiU1BZIikgICAjIEFwcGxlLCBHb2xkIEVURiwgRW5lcmd5IEVURiwgUyZQNTAwIEVURgpnZXRTeW1ib2xzKHRpY2tlcnMsIGZyb20gPSAiMjAyNC0wMS0wMSIsIHRvID0gIjIwMjUtMDEtMDEiKQoKZGF0YSA8LSBtZXJnZShDbChBQVBMKSwgQ2woR0xEKSwgQ2woWExFKSwgQ2woU1BZKSkKY29sbmFtZXMoZGF0YSkgPC0gdGlja2VycwoKcmV0IDwtIG5hLm9taXQoZGlmZihsb2coZGF0YSkpKQpjb2xuYW1lcyhyZXQpIDwtIHBhc3RlMChjb2xuYW1lcyhyZXQpLCAiX3JldCIpCgpyZXRfZGYgPC0gbmEub21pdChhcy5kYXRhLmZyYW1lKHJldCkpCmhlYWQocmV0X2RmKQpgYGAKCiMjIERlc2tyaXB0w612bmEgxaF0YXRpc3Rpa2EgCgpWIG5hc2xlZHVqw7pjZWogxI1hc3RpIHZ5a29uw6F2YW1lIGRlc2tyaXB0w612bnUgxaF0YXRpc3Rpa3UgZGVubsO9Y2ggbG9nYXJpdG1pY2vDvWNoIHbDvW5vc292IMWhdHlyb2NoIGZpbmFuxI1uw71jaCBha3TDrXYsIGFieSBzbWUgesOtc2thbGkgesOha2xhZG7DvSBwcmVoxL5hZCBvIGljaCByb3pkZWxlbsOtIGEgdm9sYXRpbGl0ZS4KCmBgYHtyfQpzdW1tYXJ5KHJldF9kZikKYGBgCgojIyMgKkFwcGxlKiAgICAKUm96cMOkdGllIHbDvW5vc292IHNhIHBvaHlidWplIG9kIOKAkzQsOTQgJSBwbyArNywwMSAlLCDEjW8geiBha3TDrXYgcm9iw60gbmFqdm9sYXRpbG5lasWhaWUuIFByaWVtZXJuw70gZGVubsO9IHbDvW5vcyAoMCwxMiAlKSBhaiBtZWRpw6FuICgwLDE2ICUpIHPDuiBwb3ppdMOtdm5lIGEgbmF6bmHEjXVqw7ogbWllcm55IHJhc3RvdsO9IHRyZW5kLCB6YXRpYcS+IMSNbyBiZcW+bsOpIGRlbm7DqSBwb2h5YnkgKElRUikgc2EgcG9oeWJ1asO6IGRvIMKxMSAlLiAgCgojIyMgKkdvbGQqICAgICAKVsO9bm9zeSB6bGF0YSBrb2zDrcWhdSBtZWR6aSDigJMzLDYzICUgYSArMiwyMSAlLCDEjW8gamUgbWVuZWogYWtvIHByaSBBQVBMLiBQcmllbWVyICgwLDA5NSAlKSBhaiBtZWRpw6FuICgwLDE2ICUpIHPDuiBtaWVybmUgcG96aXTDrXZuZS4gTmnFvsWhw60gSVFSIHBvdHZyZHp1amUgc3RhYmlsbmVqxaHDrSBjaGFyYWt0ZXIgemxhdGEgYWtvIGRlZmVuesOtdm5laG8gYWt0w612YS4gICAgIAoKIyMjICpYTEUqICAgICAKUm96cMOkdGllIG9kIOKAkzMsMjggJSBkbyArMyw2OSAlIG5hem5hxI11amUgdsO9cmF6bmVqxaFpdSB2b2xhdGlsaXR1IHR5cGlja8O6IHByZSBlbmVyZ2V0aWNrw70gc2VrdG9yLiBQcmllbWVybsO9IHbDvW5vcyBqZSB0YWttZXIgbnVsb3bDvSwgxI1vIG9kcsOhxb5hIG5ldXRyw6FsbmUgZGxob2RvYsOpIHNtZXJvdmFuaWUuIE1lZGnDoW4gKDAsMTUgJSkgamUgcG96aXTDrXZueSwgbm8gdmFyaWFiaWxpdGEgamUgdnnFocWhaWEgYWtvIHByaSBTUFkgxI1pIEdMRC4gICAKCiMjIyAqU1BZKiAgICAgClMmUCA1MDAgbcOhIG5ham5pxb7FoWllIHJvenDDpHRpZSB2w71ub3NvdiAo4oCTMywwMiAlIGHFviArMiw0NSAlKSBhaiBuYWptZW7FoWllIG1lZHppa3ZhcnRpbG92w6kgcm96cMOkdGllLCDEjW8gcG90dnJkenVqZSBqZWhvIHN0YWJpbGl0dS4gUHJpZW1lcm7DvSBkZW5uw70gdsO9bm9zICgwLDA4NSAlKSBhaiBtZWRpw6FuICgwLDExICUpIHpvc3TDoXZhasO6IHBveml0w612bmUgYSB6b2Rwb3ZlZGFqw7ogxaFpcm9rw6ltdSBkaXZlcnppZmlrb3ZhbsOpbXUgcG9ydGbDs2xpdS4gIAoKIyAyLiBMaW5lw6FybmEgcmVncmVzaWEgdiB6w6FrbGFkbm9tIHR2YXJlCgpWIHRlanRvIMSNYXN0aSBvZGhhZHVqZW1lIGxpbmXDoXJueSByZWdyZXNuw70gbW9kZWwsIGt0b3LDqWhvIGNpZcS+b20gamUgdnlzdmV0bGnFpSBkZW5uw6kgbG9nYXJpdG1pY2vDqSB2w71ub3N5IHNwb2xvxI1ub3N0aSBBcHBsZSAoQUFQTCkgcG9tb2NvdSB2w71ub3NvdiB0cm9jaCDEj2FsxaHDrWNoIGZpbmFuxI1uw71jaCBha3TDrXY6IHpsYXRhIChHTEQpLCBlbmVyZ2V0aWNrw6lobyBzZWt0b3JhIChYTEUpIGEgaW5kZXh1IFMmUCA1MDAgcmVwcmV6ZW50b3ZhbsOpaG8gRVRGIFNQWS4gSWRlIG8gbmFqamVkbm9kdWNoxaHDrSDFoXBlY2lmaWthxI1uw70gdmFyaWFudCBtb2RlbHUsIHYga3Rvcm9tIHByZWRwb2tsYWTDoW1lIGxpbmXDoXJueSB2esWlYWggbWVkemkgdsO9bm9zbWkgQXBwbGUgYSB1dmVkZW7DvW1pIHZ5c3ZldMS+dWrDumNpbWkgcHJlbWVubsO9bWksIHByacSNb20ga29lZmljaWVudHkgcHJlZHN0YXZ1asO6IG9rYW3Fvml0w7ogY2l0bGl2b3PFpSB2w71ub3N1IEFwcGxlIG5hIG1hbMOpIHptZW55IHYgamVkbm90bGl2w71jaCBha3TDrXZhY2guIE9kaGFkIHNsw7rFvmkgYWtvIHbDvWNob2Rpc2tvdsO9IGtyb2sgcHJlIHRlc3RvdmFuaWUgc3Rhbm92ZW7DvWNoIGh5cG90w6l6IGFqIHByZSBuw6FzbGVkbsO6IGRpYWdub3N0aWt1IG1vZGVsdS4gUMO0dm9kbsO9IHJlZ3Jlc27DvSBtb2RlbDoKClxbQUFQTFxfcmV0ID0gXGJldGFfMCArIFxiZXRhXzEgXGNkb3QgR0xEXF9yZXQgKyBcYmV0YV8yIFxjZG90IFhMRVxfcmV0ICsgXGJldGFfMyBcY2RvdCBTUFlcX3JldCArIHVcXQoKYGBge3J9Cm1vZGVsQSA8LSBsbShBQVBMX3JldCB+IEdMRF9yZXQgKyBYTEVfcmV0ICsgU1BZX3JldCwgZGF0YSA9IHJldF9kZikKc3VtbWFyeShtb2RlbEEpCgpgYGAKVsO9c2xlZGt5IHVrYXp1asO6LCDFvmUgbmFqdsO9em5hbW5lasWhw61tIGZha3Rvcm9tIG92cGx5dsWIdWrDumNpbSBkZW5uw70gdsO9bm9zIEFwcGxlIGplIGluZGV4IFNQWSwga3RvcsO9IG3DoSBrbGFkbsO9IGEgdnlzb2tvIMWhdGF0aXN0aWNreSB2w716bmFtbsO9IGtvZWZpY2llbnQuIFRvIHpuYW1lbsOhLCDFvmUgcG9oeWIgY2Vsw6lobyB0cmh1IGplIGvEvsO6xI1vdsO9bSBkZXRlcm1pbmFudG5vbSBzcHLDoXZhbmlhIGNlbnkgQXBwbGUsIMSNbyBqZSB2IHPDumxhZGUgcyBvxI1ha8OhdmFuaWFtaSwga2XEj8W+ZSBBcHBsZSB0dm9yw60gdsO9em5hbW7DuiDEjWFzxaUgaW5kZXh1IFMmUCA1MDAuIEtvZWZpY2llbnQgcHJpIEdMRCBqZSB2ZcS+bWkgbWFsw70gYSBuZcWhdGF0aXN0aWNreSB2w716bmFtbsO9LCDEjW8gbmF6bmHEjXVqZSwgxb5lIHbDvW5vc3kgemxhdGEgbmVtYWrDuiBzeXN0ZW1hdGlja8O9IHZwbHl2IG5hIHbDvW5vc3kgQXBwbGUuIFByZW1lbm7DoSBYTEUgamUgxaF0YXRpc3RpY2t5IHbDvXpuYW1uw6EgbmEgaGxhZGluZSAxICUgYSBqZWoga29lZmljaWVudCBtw6EgesOhcG9ybsOpIHpuYW1pZW5rbywgxI1vIG5hem5hxI11amUsIMW+ZSB2IGFuYWx5em92YW5vbSBvYmRvYsOtIHNhIHbDvW5vc3kgZW5lcmdldGlja8OpaG8gc2VrdG9yYSBwb2h5Ym92YWxpIMSNYXN0byBvcGHEjW7DvW0gc21lcm9tIGFrbyB2w71ub3N5IEFwcGxlLiBDZWxrb3bDoSDFoXRhdGlzdGlja8OhIHbDvXpuYW1ub3PFpSBtb2RlbHUgamUgcG90dnJkZW7DoSBGLXRlc3RvbSBhIHByaWJsacW+bmUgMzEgJSB2YXJpYWJpbGl0eSB2w71ub3NvdiBBcHBsZSBqZSB2eXN2ZXRsZW7DvWNoIHphaHJudXTDvW1pIHByZW1lbm7DvW1pLgoKIyAzIEF1dG9rb3JlbMOhY2lhIHJlesOtZHXDrQoKQXV0b2tvcmVsw6FjaWEgcmV6w61kdcOtIHByZWRzdGF2dWplIHNpdHXDoWNpdSwga2XEjyBzw7ogY2h5YnkgcmVncmVzbsOpaG8gbW9kZWx1IHZ6w6Fqb21uZSDEjWFzb3ZvIHrDoXZpc2zDqSwgdGVkYSBrZcSPIGhvZG5vdGEgcmV6w61kdWEgdiBqZWRub20gb2Jkb2LDrSBzw7p2aXPDrSBzIGhvZG5vdGFtaSByZXrDrWR1w60gdiBwcmVkY2jDoWR6YWrDumNpY2ggb2Jkb2JpYWNoLiBWIGtvbnRleHRlIMSNYXNvdsO9Y2ggcmFkb3YgaWRlIG8gYmXFvm7DvSBqYXYsIGt0b3LDvSB2xaFhayBwb3J1xaF1amUgamVkZW4gem8gesOha2xhZG7DvWNoIHByZWRwb2tsYWRvdiBrbGFzaWNrw6lobyBsaW5lw6FybmVobyBtb2RlbHUg4oCTIG5lesOhdmlzbG9zxaUgY2jDvWIuIEFrIHNhIHYgcmV6aWR1w6FjaCB2eXNreXR1amUgYXV0b2tvcmVsb3ZhbsOhIMWhdHJ1a3TDunJhLCBtw7TFvmUgdG8gdmllc8WlIGsgc2tyZXNsZW5pdSBvZGhhZG92IHNtZXJvZGFqbsO9Y2ggY2jDvWIsIG5lc3Byw6F2bnltIHAtaG9kbm90w6FtIGEgbsOhc2xlZG5lIGsgY2h5Ym7DvW0gesOhdmVyb20gcHJpIHRlc3RvdmFuw60gaHlwb3TDqXouIFogdG9odG8gZMO0dm9kdSBqZSBwb3RyZWJuw6kgb3ZlcmnFpSwgxI1pIHJlemlkdcOhIHogbsOhxaFobyBtb2RlbHUgbmV2eWthenVqw7ogc3lzdGVtYXRpY2vDuiDEjWFzb3bDuiB6w6F2aXNsb3PFpS4KCiMjIERldGVrY2lhIGF1dG9rb3JlbMOhY2llIHJlemlkdcOtIAoKViB0ZWp0byDEjWFzdGkgc2EgemFtZXJpYXZhbWUgbmEgdml6dcOhbG51IGtvbnRyb2x1IHByw610b21ub3N0aSBhdXRva29yZWzDoWNpZSBwb21vY291IGdyYWZpY2vDqWhvIHBvcm92bmFuaWEgZW1waXJpY2vDvWNoIGEgZml0dGVkIGhvZG7DtHQuIEFrIG1lZHppIHTDvW1pdG8gZHZvbWEgcHJpZWJlaG1pIHZpZMOtbWUgc3lzdGVtYXRpY2vDqSBvYmRvYmlhIG5hZC0gYWxlYm8gcG9kaG9kbm90ZW5pYSBtb2RlbHUsIG3DtMW+ZSB0byBuYXpuYcSNb3ZhxaUgcHLDrXRvbW5vc8WlIMSNYXNvdmVqIHrDoXZpc2xvc3RpIHYgcmV6aWR1w6FjaC4gTmFzbGVkdWrDumNhIHZpenVhbGl6w6FjaWEgbsOhbSB1bW/Fvm7DrSBpZGVudGlmaWtvdmHFpSwgxI1pIG1vZGVsIHphY2h5dMOhdmEgZHluYW1pa3UgZMOhdCBkb3N0YXRvxI1uZSBkb2JyZSwgYWxlYm8gxI1pIHpvc3TDoXZhIHYgcmV6aWR1w6FjaCBuZWpha8OhIMWhdHJ1a3TDunJhLCBrdG9yw6EgYnkgbWFsYSBiecWlIMSPYWxlaiB0ZXN0b3ZhbsOhIGZvcm3DoWxueW1pIMWhdGF0aXN0aWNrw71taSB0ZXN0YW1pLgoKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKCiMgcHJpZGFuaWUgZml0dGVkIHZhbHVlcyBkbyBkYXRhZnJhbWUKcmV0X2RmJGZpdHRlZCA8LSBmaXR0ZWQobW9kZWxBKQoKIyBwcmlkYW5pZSBkw6F0dW11IChyaWFka3kgc2EgcMO0dm9kbmUgdm9sYWrDuiBwb2TEvmEgZMOhdHVtdSkKcmV0X2RmJERhdGUgPC0gYXMuRGF0ZShyb3duYW1lcyhyZXRfZGYpKQoKIyBzY2F0dGVycGxvdCArIGZpdHRlZCBsaW5lCmdncGxvdChyZXRfZGYsIGFlcyh4ID0gRGF0ZSwgeSA9IEFBUExfcmV0KSkgKwogIGdlb21fcG9pbnQoY29sb3IgPSAic3RlZWxibHVlIiwgc2l6ZSA9IDIpICsgICAgICAgICAgIyBlbXBpcmlja8OpIGTDoXRhCiAgZ2VvbV9saW5lKGFlcyh5ID0gZml0dGVkKSwgY29sb3IgPSAicmVkIiwgc2l6ZSA9IDEpICsgIyBmaXR0ZWQgdmFsdWVzICjEjWVydmVuw6EpCiAgCiAgbGFicygKICAgIHRpdGxlID0gIkFBUEw6IEVtcGlyaWNrw6kgZMOhdGEgKG1vZHLDoSkgdnMuIEZpdHRlZCBob2Rub3R5ICjEjWVydmVuw6EpIiwKICAgIHggPSAiRMOhdHVtIiwKICAgIHkgPSAiTG9nLXbDvW5vcyBBQVBMIgogICkgKwogIHRoZW1lX21pbmltYWwoKQoKYGBgCgpHcmFmIHBvcm92bsOhdmEgZW1waXJpY2vDqSBkZW5uw6kgbG9nYXJpdG1pY2vDqSB2w71ub3N5IGFrY2llIEFwcGxlLCB6bsOhem9ybmVuw6kgbW9kcsO9bWkgYm9kbWksIHMgZml0dGVkIGhvZG5vdGFtaSBtb2RlbHUsIGt0b3LDqSBzw7ogem9icmF6ZW7DqSDEjWVydmVub3Ugc3Bvam5pY291LiBNb2Ryw6kgYm9keSB2eWthenVqw7ogdHlwaWNrw7ogdm9sYXRpbGl0dSBha2Npb3bDvWNoIHbDvW5vc292LCBwcmnEjW9tIHNhIHBvaHlidWrDuiBva29sbyBudWxvdmVqIG9zaSBzIG9ixI1hc27DvW1pIGV4dHLDqW1uZWrFocOtbWkgcG96aXTDrXZueW1pIGFqIG5lZ2F0w612bnltaSBvZGNow71sa2FtaS4gxIxlcnZlbsOhIGZpdHRlZCDEjWlhcmEgcHJlYmllaGEgdXByb3N0cmVkIHTDvWNodG8gYm9kb3YgYSB6YWNoeXTDoXZhIGliYSB6w6FrbGFkbsO9IHZ6xaVhaCBtZWR6aSB2w71ub3NtaSBBcHBsZSBhIHZ5c3ZldMS+dWrDumNpbWkgcHJlbWVubsO9bWkgbW9kZWx1LgoKWiBncmFmdSBqZSB6cmVqbcOpLCDFvmUgZml0dGVkIGhvZG5vdHkgbmVkb2vDocW+dSByZXByb2R1a292YcWlIG7DoWhvZG7DqSBrcsOhdGtvZG9iw6kgdsO9a3l2eSB2byB2w71ub3NvY2gsIHByZXRvxb5lIG1vZGVsIHByZWRwb2tsYWTDoSBsaW5lw6FybnUgxaF0cnVrdMO6cnUgYmV6IGR5bmFtaWNrw71jaCBlZmVrdG92LiBOYXByaWVrIHRvbXUgamUgdmlkaXRlxL5uw6ksIMW+ZSBmaXR0ZWQgxI1pYXJhIHNsZWR1amUgdsWhZW9iZWNuw70gdHJlbmQgYSBkcsW+w60gc2EgdiBzdHJlZGUgcm96cHR5bHUgZW1waXJpY2vDvWNoIHBvem9yb3ZhbsOtLCDEjW8gbmF6bmHEjXVqZSwgxb5lIG1vZGVsIHByaWJsacW+bmUgdnlzdGlodWplIHByaWVtZXJuw6kgc3Byw6F2YW5pZSB2w71ub3NvdiBBcHBsZS4gWsOhcm92ZcWIIHbFoWFrIHJvemRpZWx5IG1lZHppIG1vZHLDvW1pIGJvZG1pIGEgxI1lcnZlbm91IMSNaWFyb3UgcG91a2F6dWrDuiBuYSB2eXNva8O6IG1pZXJ1IG5ldnlzdmV0bGVuZWogdmFyaWFiaWxpdHksIMSNbyBqZSBwcmUgZGVubsOpIGFrY2lvdsOpIHbDvW5vc3kgYmXFvm7DqS4KCkdyYWYgdGVkYSB1a2F6dWplLCDFvmUgbGluZcOhcm55IG1vZGVsIHphY2h5dMOhdmEgesOha2xhZG7DuiBjaXRsaXZvc8WlIEFBUEwgbmEgcG9oeWJ5IG5hIHRyaHUsIG5vIHbDvXpuYW1uw6EgxI1hc8WlIHbDvWt5dm92IHpvc3TDoXZhIG7DoWhvZG7DoSBhbGVibyBzcMO0c29iZW7DoSBmYWt0b3JtaSwga3RvcsOpIG1vZGVsIG5lb2JzYWh1amUuCgojIyMgVWxvxb5lbmllIHJlemlkdcOtCgpUw71tdG8gcHLDrWthem9tIHNpIHogbsOhxaFobyBvZGhhZG51dMOpaG8gbW9kZWx1IG1vZGVsQSB1a2xhZMOhbWUgcmV6aWR1w6EgZG8gbm92ZWogcHJlbWVubmVqIHJlcywgYWJ5IHNtZSBpY2ggbsOhc2xlZG5lIG1vaGxpIGFuYWx5em92YcWlIGEgc2tvbnRyb2xvdmHFpSwgxI1pIG5lb2JzYWh1asO6IGF1dG9rb3JlbMOhY2l1IGFsZWJvIGluw7ogc3lzdGVtYXRpY2vDuiDFoXRydWt0w7pydS4KYGBge3J9CnJlcyA8LSByZXNpZHVhbHMobW9kZWxBKQpgYGAKCiMjIEFGQyBHcmFmIAoKUG8gdml6dcOhbG5laiBrb250cm9sZSBmaXR0ZWQgYSBlbXBpcmlja8O9Y2ggaG9kbsO0dCBqZSDEj2FsxaHDrW0ga3Jva29tIGZvcm3DoWxuYSBhbmFsw716YSB0b2hvLCDEjWkgcmV6aWR1w6EgdnlrYXp1asO6IMSNYXNvdsO6IHrDoXZpc2xvc8WlLiBBdXRva29yZWxhxI1uw6EgZnVua2NpYSAoQUNGKSB1bW/FvsWIdWplIHByZXNrw7ptYcWlLCDEjWkgamUgY2h5YmEgdiBqZWRub20gb2Jkb2LDrSDFoXRhdGlzdGlja3kgcHJlcG9qZW7DoSBzIGNoeWJhbWkgdiBwcmVkY2jDoWR6YWrDumNpY2ggb2Jkb2JpYWNoLiBBayBieSBzYSB2IHJlemlkdcOhY2ggb2JqYXZpbGEgdsO9cmF6bsOhIGF1dG9rb3JlbMOhY2lhLCB6bmFtZW5hbG8gYnkgdG8gcG9ydcWhZW5pZSBwcmVkcG9rbGFkdSBuZXrDoXZpc2xvc3RpIGNow71iLCDEjW8gYnkgbW9obG8gc2tyZXPEvm92YcWlIHRlc3RvdmFuaWUgaHlwb3TDqXogdiByw6FtY2kgcmVncmVzbsOpaG8gbW9kZWx1LiBQcmV0byB2eXBvxI3DrXRhdmFtZSBhIHpvYnJhenVqZW1lIEFDRiByZXrDrWR1w60gcHJlIHBydsOpIMWhdHlyaSBvbmVza29yZW5pYSwgYWJ5IHNtZSBvdmVyaWxpLCDEjWkgc2EgdiBjaHliw6FjaCBuZW5hY2jDoWR6YSBzeXN0ZW1hdGlja8OhIMWhdHJ1a3TDunJhLgoKYGBge3J9CmFjZihyZXMsIGxhZy5tYXggPSA0LCBtYWluID0gIkFDRiByZXrDrWR1w60iKQoKYGBgCgpBQ0YgZ3JhZiB6b2JyYXp1amUgYXV0b2tvcmVsYcSNbsOpIGtvZWZpY2llbnR5IHJlesOtZHXDrSBwcmUgb25lc2tvcmVuaWEgb2QgMSBkbyA0LiBWxaFldGt5IHpvYnJhemVuw6kgaG9kbm90eSBsZcW+aWEgdiByw6FtY2kgbW9kcsO9Y2ggaHJhbsOtYyDFoXRhdGlzdGlja2VqIG5ldsO9em5hbW5vc3RpLCDEjW8gem5hbWVuw6EsIMW+ZSDFvmlhZG5lIHogcmV6w61kdcOtIG5pZSBzw7ogdsO9cmF6bmUgcHJlcG9qZW7DqSBzbyBzdm9qaW1pIG1pbnVsw71taSBob2Rub3RhbWkuIEluw71taSBzbG92YW1pLCByZXppZHXDoSBzYSBzcHLDoXZhasO6IGFrbyBiaWVseSDFoXVtIGEgbmVvYnNhaHVqw7ogc3lzdGVtYXRpY2vDuiBhdXRva29yZWzDoWNpdS4gVGVudG8gdsO9c2xlZG9rIGplIHByaWF6bml2w70sIHByZXRvxb5lIHBvdHZyZHp1amUgc3BsbmVuaWUgcHJlZHBva2xhZHUgbmV6w6F2aXNsb3N0aSBjaMO9YiB2IGxpbmXDoXJub20gcmVncmVzbm9tIG1vZGVsaS4KCiMjIER1cmJpbi1XYXRzb24gdGVzdCAKCkR1cmJpbuKAk1dhdHNvbiB0ZXN0IHBvdcW+w612YW1lIG5hIG92ZXJlbmllLCDEjWkgc2EgcmV6aWR1w6EgbW9kZWx1IG5lbmF2aWF6YWxpIGplZG5vIG5hIGRydWjDqSB2IMSNYXNlLiBJZGUgbyByw71jaGx5IHNww7Rzb2IsIGFrbyB6aXN0acWlLCDEjWkgc8O6IGNoeWJ5IHYgbW9kZWxpIG7DoWhvZG7DqSwgYWxlYm8gxI1pIHNhIHYgbmljaCBvYmphdnVqZSBuZWpha8O9IHByYXZpZGVsbsO9IHZ6b3IuIEFrIGJ5IHJlemlkdcOhIGJvbGkgYXV0b2tvcmVsb3ZhbsOpLCB6bmFtZW5hbG8gYnkgdG8sIMW+ZSBtb2RlbCBuaWUgamUgw7pwbG5lIHNwcsOhdm5lIMWhcGVjaWZpa292YW7DvS4gUHJldG8gc2kgdGVzdCBvdmVyw61tZSBhaiBmb3Jtw6FsbmUgdMO9bXRvIHByw61rYXpvbS4KCmBgYHtyfQojIER1cmJpbuKAk1dhdHNvbiB0ZXN0CmR3dGVzdChtb2RlbEEpCgpgYGAKClYgbmHFoW9tIHByw61wYWRlIER1cmJpbuKAk1dhdHNvbiDFoXRhdGlzdGlrYSBuYWRvYnVkbGEgaG9kbm90dSBwcmlibGnFvm5lIDIuMDQsIMSNbyBqZSB2ZcS+bWkgYmzDrXprbyByZWZlcmVuxI1uZWogaG9kbm90ZSAyIGNoYXJha3RlcmlzdGlja2VqIHByZSByZXppZHXDoSBiZXogYXV0b2tvcmVsw6FjaWUuIFAtaG9kbm90YSB0ZXN0dSBqZSAwLjYyNzUsIHRlZGEgdnlzb2tvIG5hZCBiZcW+bmUgcG91xb7DrXZhasO6Y2ltaSBobGFkaW5hbWkgdsO9em5hbW5vc3RpLCDEjW8gem5hbWVuw6EsIMW+ZSBuZW3DoW1lIGTDtHZvZCB6YW1pZXRudcWlIG51bG92w7ogaHlwb3TDqXp1IG8gYWJzZW5jaWkgYXV0b2tvcmVsw6FjaWUuIFRlc3QgdGVkYSBwb3R2cmR6dWplLCDFvmUgcmV6aWR1w6EgbW9kZWx1IG5lb2JzYWh1asO6IMWhdGF0aXN0aWNreSB2w716bmFtbnUgYXV0b2tvcmVsw6FjaXUgcHJ2w6lobyByw6FkdSwgxI1vIGplIHYgc8O6bGFkZSBzbyB6w6F2ZXJtaSB6IHZpenXDoWxuZWogYSBBQ0YgYW5hbMO9enkuCgojIyBCcmV1c2No4oCTR29kZnJleSB0ZXN0ClBvIHZpenXDoWxub20gcHJlc2vDum1hbsOtIHJlesOtZHXDrSBhIHBvIHZ5a29uYW7DrSBEdXJiaW7igJNXYXRzb24gdGVzdHUgZG9wxLrFiGFtZSBhbmFsw716dSBhaiBvIEJyZXVzY2jigJNHb2RmcmV5IHRlc3QsIGt0b3LDvSBwb3NreXR1amUgcm9idXN0bmVqxaFpZSBvdmVyZW5pZSwgxI1pIHNhIHYgcmV6aWR1w6FjaCBuZW5hY2jDoWR6YSBzw6lyaW92w6Ega29yZWzDoWNpYSB6dm9sZW7DqWhvIHLDoWR1LiBLZcSPxb5lIHByYWN1amVtZSBzIGRlbm7DvW1pIGZpbmFuxI1uw71taSDEjWFzb3bDvW1pIHJhZG1pLCBqZSB2aG9kbsOpIG92ZXJpxaUgbmFqbcOkIGF1dG9rb3JlbMOhY2l1IHBydsOpaG8gcsOhZHUsIGt0b3LDoSBieSBtb2hsYSBuYXpuYcSNb3ZhxaUsIMW+ZSBtb2RlbCBuZXphY2h5dGlsIGtyw6F0a29kb2LDuiBkeW5hbWlrdSB2byB2w712b2ppIHbDvW5vc292LiBCcmV1c2No4oCTR29kZnJleSB0ZXN0IHVtb8W+xYh1amUgZm9ybcOhbG5lIG92ZXJpxaUgdGVudG8gcHJlZHBva2xhZCBwcmlhbW8gbmEgcmV6aWR1w6FjaCBuw6HFoWhvIHrDoWtsYWRuw6lobyByZWdyZXNuw6lobyBtb2RlbHUuCgpgYGB7cn0KIyBCcmV1c2No4oCTR29kZnJleSB0ZXN0IChvcmRlciA9IDEpCmJndGVzdChtb2RlbEEsIG9yZGVyID0gMSkKCmBgYAoKVsO9c2xlZG9rIHRlc3R1IHVrYXp1amUsIMW+ZSBob2Rub3RhIExNIMWhdGF0aXN0aWt5IGplIHZlxL5taSBuw616a2EgKDAuMTEyODUpIGEgc3ByZXbDoWR6YSBqdSB2eXNva8OhIHAtaG9kbm90YSAoMC43MzY5KS4gVGFrw710byB2w71zbGVkb2sgbmF6bmHEjXVqZSwgxb5lIHJlemlkdcOhIG1vZGVsdSBuZW9ic2FodWrDuiDFvmlhZG51IMWhdGF0aXN0aWNreSB2w716bmFtbsO6IGF1dG9rb3JlbMOhY2l1IHBydsOpaG8gcsOhZHUuIE51bG92w6EgaHlwb3TDqXphIG8gYWJzZW5jaWkgc8OpcmlvdmVqIGtvcmVsw6FjaWUgcHJldG8gbmllIGplIHphbWlldG51dMOhLiBUZW50byB6w6F2ZXIgamUgdiBzw7psYWRlIHMgcHJlZGNow6FkemFqw7pjaW1pIHppc3RlbmlhbWkgeiBBQ0YgZ3JhZnUgYWogeiBEdXJiaW7igJNXYXRzb24gdGVzdHUsIMSNbyBwb3NpbMWIdWplIGTDtHZlcnUgdiB0bywgxb5lIG1vZGVsIHByYWN1amUgcyBuw6Fob2Ruw71taSBhIG5lesOhdmlzbMO9bWkgcmV6aWR1YW1pLiBOYSB6w6FrbGFkZSB0b2hvIG3DtMW+ZW1lIGtvbsWhdGF0b3ZhxaUsIMW+ZSBtb2RlbCBuZXBvcnXFoXVqZSBwcmVkcG9rbGFkIG5lesOhdmlzbG9zdGkgY2jDvWIgYSB6IHRvaHRvIGjEvmFkaXNrYSBqZSDFoXRhdGlzdGlja3kgxaFwZWNpZmlrb3ZhbsO9IGtvcmVrdG5lLgoKIyBSaWXFoWVuaWUgYXV0b2tvcmVsw6FjaWUgCgpQbyBvZGhhZGUgesOha2xhZG7DqWhvIGxpbmXDoXJuZWhvIG1vZGVsdSBkb3DEusWIYW1lIGFuYWzDvXp1IG8gS295Y2tvdiBtb2RlbCwga3RvcsO9IHVtb8W+xYh1amUgem9oxL5hZG5pxaUgb25lc2tvcmVuw70gdnBseXYgesOhdmlzbGVqIHByZW1lbm5laiBuYSBzdm9qIHZsYXN0bsO9IGJ1ZMO6Y2kgdsO9dm9qLiBEbyByZWdyZXNpZSBwcmV0byBwcmlkw6F2YW1lIGplZG51IGxhZ292YW7DuiBob2Rub3R1IHbDvW5vc3UgQXBwbGUsIMSNw61tIHRlc3R1amVtZSwgxI1pIG3DoSBtaW51bMOpIHNwcsOhdmFuaWUgdsO9bm9zb3YgQXBwbGUgZG9kYXRvxI1uw70gdnBseXYgbmEgaWNoIGFrdHXDoWxudSBob2Rub3R1LiBUw6F0byDFoXBlY2lmaWvDoWNpYSBqZSB2aG9kbsOhIG5ham3DpCBwcmkgxI1hc292w71jaCByYWRvY2gsIGtkZSBzYSBtw7TFvmUgcHJlZHBva2xhZGHFpSwgxb5lIMSNYXNvdsOhIGR5bmFtaWthIHpvaHLDoXZhIMO6bG9odSBhaiBwbyB6b2jEvmFkbmVuw60gb3N0YXRuw71jaCB2eXN2ZXTEvnVqw7pjaWNoIHByZW1lbm7DvWNoLgoKYGBge3J9CiMgS295Y2tvdiBtb2RlbCAob25lc2tvcmVuw6EgesOhdmlzbMOhIHByZW1lbm7DoSkKcmV0X2RmIDwtIHJldF9kZiAlPiUgbXV0YXRlKEFBUExfcmV0X2xhZzEgPSBkcGx5cjo6bGFnKEFBUExfcmV0KSkKbW9kZWxfa295Y2sgPC0gbG0oQUFQTF9yZXQgfiBHTERfcmV0ICsgWExFX3JldCArIFNQWV9yZXQgKyBBQVBMX3JldF9sYWcxLCBkYXRhID0gcmV0X2RmKQpzdW1tYXJ5KG1vZGVsX2tveWNrKQoKYGBgCgpWw71zbGVka3kgS295Y2tvdmhvIG1vZGVsdSB1a2F6dWrDuiwgxb5lIHphaHJudXRpZSBvbmVza29yZW5laiBwcmVtZW5uZWogbmV6bWVuaWxvIHrDoWtsYWRuw70gY2hhcmFrdGVyIG1vZGVsdS4gS29lZmljaWVudCBwcmkgQUFQTF9yZXRfbGFnMSBqZSB2ZcS+bWkgbWFsw70gYSBuZcWhdGF0aXN0aWNreSB2w716bmFtbsO9LCDEjW8gbmF6bmHEjXVqZSwgxb5lIG1pbnVsw6kgZGVubsOpIHbDvW5vc3kgQXBwbGUgdiB0b210byBvYmRvYsOtIG5lbWFqw7ogZG9kYXRvxI1uw70gdnlzdmV0xL51asO6Y2kgZWZla3QgbmFkIHLDoW1lYyBwcmVtZW5uw71jaCwga3RvcsOpIHXFviB2IG1vZGVsaSBzw7ouIE5hb3BhaywgxaF0YXRpc3RpY2t5IHbDvXpuYW1uZSBww7Rzb2LDrSB2w71ub3MgZW5lcmdldGlja8OpaG8gc2VrdG9yYSwga3RvcsO9IHNpIHphY2hvdsOhdmEgesOhcG9ybsO9IHZwbHl2IHBvZG9ibmUgYWtvIHYgesOha2xhZG5vbSBtb2RlbGkuIE5hanbDvXJhem5lasWhw61tIGZha3Rvcm9tIHpvc3TDoXZhIHbDvW5vcyBpbmRleHUgU1BZLCBrdG9yw70gamUgb3DDpMWlIHNpbG5lIHbDvXpuYW1uw70gcyBrbGFkbsO9bSBrb2VmaWNpZW50b20sIMSNbyBwb3R2cmR6dWplLCDFvmUgcG9oeWIgY2Vsw6lobyB0cmh1IGplIG5hamTDtGxlxb5pdGVqxaHDrW0gZGV0ZXJtaW5hbnRvbSB2w71ub3NvdiBBcHBsZS4KClogcG9oxL5hZHUgY2Vsa292ZWoga3ZhbGl0eSBtb2RlbHUgc2EgUi1zcXVhcmVkIHRha21lciBuZXptZW5pbG8gKHByaWJsacW+bmUgMzEgJSksIMSNbyB6bmFtZW7DoSwgxb5lIHphaHJudXRpZSBsYWdvdmFuZWogcHJlbWVubmVqIG5lcHJpc3BlbG8gayB2w71yYXpuw6ltdSB6dsO9xaFlbml1IHZ5c3ZldGxlbmVqIHZhcmlhYmlsaXR5LiBGLXRlc3Qgem9zdMOhdmEgdnlzb2tvIMWhdGF0aXN0aWNreSB2w716bmFtbsO9LCDEjW8gcG90dnJkenVqZSwgxb5lIG1vZGVsIGFrbyBjZWxvayBqZSB2aG9kbsO9LCBhdsWhYWsgcHJpZGFuw6Egb25lc2tvcmVuw6EgcHJlbWVubsOhIG5lcHJpbmllc2xhIGRvZGF0b8SNbsO6IHbDvXBvdmVkbsO6IGhvZG5vdHUuCgpOYSB6w6FrbGFkZSB0w71jaHRvIHbDvXNsZWRrb3YgbW/Fvm5vIGtvbsWhdGF0b3ZhxaUsIMW+ZSB2IHLDoW1jaSBhbmFseXpvdmFuw6lobyBvYmRvYmlhIG5lZXhpc3R1amUgdsO9em5hbW5hIGtyw6F0a29kb2LDoSB6b3RydmHEjW5vc8WlIHZvIHbDvW5vc25vc3RpYWNoIEFwcGxlLCBhIGljaCBkeW5hbWlrYSBqZSBkb3N0YXRvxI1uZSB2eXN2ZXRsZW7DoSBha3R1w6FsbnltaSBob2Rub3RhbWkgdnlzdmV0xL51asO6Y2ljaCBwcmVtZW5uw71jaC4KCiMjIER1cmJpbi1XYXRzb24gcHJlIEtveWNrb3YgbW9kZWwgCgpQbyBvZGhhZG51dMOtIEtveWNrb3ZobyBtb2RlbHUgamUgdmhvZG7DqSBvcMOkdG92bmUgb3ZlcmnFpSwgxI1pIHNhIHBvIHByaWRhbsOtIG9uZXNrb3JlbmVqIHByZW1lbm5laiBuZXptZW5pbGEgc2l0dcOhY2lhIHYgcmV6aWR1w6FjaC4gS2XEj8W+ZSBLb3lja292IG1vZGVsIHByYWN1amUgcyBkeW5hbWlja291IMWhdHJ1a3TDunJvdSwgamUgcHJpcm9kemVuw6kgc2tvbnRyb2xvdmHFpSwgxI1pIHRlbnRvIHJvesWhw61yZW7DvSBtb2RlbCBuZXZpZWRvbCBrIHZ6bmlrdSBhbGVibyBuYW9wYWsgayBvZHN0csOhbmVuaXUgYXV0b2tvcmVsw6FjaWUuIE5hIHRlbnRvIMO6xI1lbCBvcMOkxaUgcG91xb7DrXZhbWUgRHVyYmlu4oCTV2F0c29uIHRlc3QsIGt0b3LDvSB1bW/FvsWIdWplIHLDvWNobG8gYSBwcmlhbW8gdnlob2Rub3RpxaUsIMSNaSBzw7ogcmV6aWR1w6EgbmF2esOham9tIMSNYXNvdm8gesOhdmlzbMOpLgoKYGBge3J9CmR3dGVzdChtb2RlbF9rb3ljaykKYGBgCgpIb2Rub3RhIER1cmJpbuKAk1dhdHNvbiDFoXRhdGlzdGlreSBqZSAyLjA0ODQsIMSNbyBqZSB0YWttZXIgdG90b8W+bsOpIHMgdsO9c2xlZGtvbSB6byB6w6FrbGFkbsOpaG8gbW9kZWx1IGEgesOhcm92ZcWIIHZlxL5taSBibMOtemtvIHJlZmVyZW7EjW5laiBob2Rub3RlIDIsIGt0b3LDoSB6b2Rwb3ZlZMOhIGFic2VuY2lpIGF1dG9rb3JlbMOhY2llLiBQLWhvZG5vdGEgMC42NDgxIGplIHZ5c29rw6EsIHRha8W+ZSBuZW3DoW1lIGTDtHZvZCB6YW1pZXRudcWlIG51bG92w7ogaHlwb3TDqXp1IG8gbmV6w6F2aXNsb3N0aSByZXrDrWR1w60uIFRlbnRvIHbDvXNsZWRvayBwb3R2cmR6dWplLCDFvmUgYW5pIHBvIHphaHJudXTDrSBsYWdvdmFuZWogcHJlbWVubmVqIHNhIHYgcmV6aWR1w6FjaCBuZW9iamF2aWxhIMWhdGF0aXN0aWNreSB2w716bmFtbsOhIGF1dG9rb3JlbMOhY2lhLiBaIGjEvmFkaXNrYSBkaWFnbm9zdGlreSB0ZWRhIHJvesWhw61yZW7DvSBtb2RlbCBuZXBvcnXFoXVqZSBwcmVkcG9rbGFkIG5lesOhdmlzbG9zdGkgY2jDvWIgYSB6IHRvaHRvIHBvaMS+YWR1IGplIMWhcGVjaWZpa292YW7DvSBrb3Jla3RuZS4KCiMjIE5ld2V54oCTV2VzdCByb2J1c3Ruw6kgxaF0YW5kYXJkbsOpIGNoeWJ5IChwcmUgesOha2xhZG7DvSBtb2RlbCkKCktlxI/FvmUgcHJpIGZpbmFuxI1uw71jaCDEjWFzb3bDvWNoIHJhZG9jaCBzYSDEjWFzdG8gdnlza3l0dWplIGhldGVyb3NrZWRhc3RpY2l0YSBhbGVibyBzbGFiw6EgZm9ybWEgYXV0b2tvcmVsw6FjaWUsIGplIHZob2Ruw6kgb3ZlcmnFpSBhaiByb2J1c3Rub3PFpSBvZGhhZG51dMO9Y2ggc21lcm9kYWpuw71jaCBjaMO9Yi4gTmEgdGVudG8gw7rEjWVsIHBvdcW+w612YW1lIE5ld2V54oCTV2VzdCDFoXRhbmRhcmRuw6kgY2h5YnksIGt0b3LDqSBrb3JpZ3Vqw7ogxaF0YW5kYXJkbsOpIGNoeWJ5IGtvZWZpY2llbnRvdiB0YWssIGFieSB6b3N0YWxpIGtvbnppc3RlbnRuw6kgYWogdiBwcsOtcGFkZSwgYWsgcmV6aWR1w6EgbW9kZWx1IG5pZSBzw7ogw7pwbG5lIGhvbW9za2VkYXN0aWNrw6kgYWxlYm8gbmV6w6F2aXNsw6kuIE9kaGFkIHNhbW90bsO9Y2gga29lZmljaWVudG92IHNhIG5lbWVuw60sIHVwcmF2dWrDuiBzYSBpYmEgaWNoIMWhdGFuZGFyZG7DqSBjaHlieSBhIHTDvW0gYWogdsO9c2xlZG7DqSB0LcWhdGF0aXN0aWt5IGEgcC1ob2Rub3R5LiBUw71tdG8ga3Jva29tIHrDrXNrYXZhbWUgc3RhYmlsbmVqxaHDrSBwb2jEvmFkIG5hIMWhdGF0aXN0aWNrw7ogdsO9em5hbW5vc8WlIGplZG5vdGxpdsO9Y2ggcHJlbWVubsO9Y2guCgpgYGB7cn0KY29lZnRlc3QobW9kZWxBLCB2Y292ID0gTmV3ZXlXZXN0KG1vZGVsQSkpCgpgYGAKClBvIGFwbGlrb3ZhbsOtIE5ld2V54oCTV2VzdCBrb3Jla2NpZSBzYSB1a2F6dWplLCDFvmUgxaF0cnVrdMO6cmEgdsO9em5hbW5vc3RpIHYgbW9kZWxpIHpvc3TDoXZhIHZlxL5taSBwb2RvYm7DoSBha28gcHJpIGtsYXNpY2vDvWNoIMWhdGFuZGFyZG7DvWNoIGNoeWLDoWNoLiBQcmVtZW5uw6EgR0xEX3JldCBqZSBhaiBuYcSPYWxlaiBuZcWhdGF0aXN0aWNreSB2w716bmFtbsOhLCDEjW8gcG90dnJkenVqZSwgxb5lIHbDvW5vc3kgemxhdGEgbmV2eXN2ZXTEvnVqw7ogdsO9bm9zeSBBcHBsZSB2IGFuYWx5em92YW5vbSBvYmRvYsOtLiBQcmVtZW5uw6EgWExFX3JldCBzaSB6YWNob3bDoXZhIMWhdGF0aXN0aWNrw7ogdsO9em5hbW5vc8WlIG5hIHByaWJsacW+bmUgcm92bmFrZWogw7pyb3ZuaSBhIGplaiBrb2VmaWNpZW50IHpvc3TDoXZhIHrDoXBvcm7DvSwgxI1vIHBvdWthenVqZSBuYSBuZWdhdMOtdm55IHPDunZpcyBtZWR6aSBlbmVyZ2V0aWNrw71tIHNla3Rvcm9tIGEgdsO9bm9zbWkgQXBwbGUuIE5hanbDvXJhem5lasWhw61tIGZha3Rvcm9tIG1vZGVsdSB6b3N0w6F2YSBTUFlfcmV0LCBrdG9yw70gamUgYWogcG8gcm9idXN0bmVqIGtvcmVrY2lpIHZ5c29rbyDFoXRhdGlzdGlja3kgdsO9em5hbW7DvSwgcyB2ZcS+bWkgc2lsbsO9bSBwb3ppdMOtdm55bSB2cGx5dm9tLgoKUm9idXN0bsOpIHNtZXJvZGFqbsOpIGNoeWJ5IHRlZGEgbmVtZW5pYSBjZWxrb3bDqSB6w6F2ZXJ5IGEgcG90dnJkenVqw7osIMW+ZSB2w71zbGVka3kgesOha2xhZG7DqWhvIG1vZGVsdSBzw7ogc3RhYmlsbsOpIGFqIHBvIHpvaMS+YWRuZW7DrSBtb8W+bsOpaG8gcG9ydcWhZW5pYSBrbGFzaWNrw71jaCBwcmVkcG9rbGFkb3YuIE1vZGVsIHBvc2t5dHVqZSBrb256aXN0ZW50bmUgaW50ZXJwcmV0b3ZhdGXEvm7DqSB2w71zbGVka3kgYSBpZGVudGlmaWtvdmFuw6kgdnrFpWFoeSBtZWR6aSBwcmVtZW5uw71taSBzw7ogcm9idXN0bsOpIHZvxI1pIHTDvW10byBrb3Jla2Npw6FtLgoKIyBaw6F2ZXIgClbDvXNsZWRreSBhbmFsw716eSB1a2F6dWrDuiwgxb5lIHJlemlkdcOhIG9kaGFkbnV0w6lobyBtb2RlbHUgbmV2eWthenVqw7ogxb5pYWRudSDFoXRhdGlzdGlja3kgdsO9em5hbW7DuiBhdXRva29yZWzDoWNpdS4gVml6dWFsaXrDoWNpYSBmaXR0ZWQgaG9kbsO0dCB2IHBvcm92bmFuw60gcyBlbXBpcmlja8O9bWkgZMOhdGFtaSBuZW9kaGFsaWxhIMW+aWFkbmUgcHJhdmlkZWxuw6kgdnpvcmNlLCBrdG9yw6kgYnkgbmF6bmHEjW92YWxpIMSNYXNvdsO6IHrDoXZpc2xvc8WlIGNow71iLiBBQ0YgZ3JhZiBwb3R2cmRpbCwgxb5lIHbFoWV0a3kgaG9kbm90eSBhdXRva29yZWzDoWNpZSBwcmkgb25lc2tvcmVuaWFjaCAxIGHFviA0IHNhIG5hY2jDoWR6YWrDuiB2IHLDoW1jaSBocmFuw61jIMWhdGF0aXN0aWNrZWogbmV2w716bmFtbm9zdGksIHRha8W+ZSByZXppZHXDoSBzYSBzcHLDoXZhasO6IGFrbyBuw6Fob2Ruw70sIMSNYXNvdm8gbmV6w6F2aXNsw70gcHJvY2VzLgoKVGVudG8gesOhdmVyIMSPYWxlaiBwb2Rwb3J1asO6IG9iYSBmb3Jtw6FsbmUgdGVzdHkuIER1cmJpbuKAk1dhdHNvbiDFoXRhdGlzdGlrYSBib2xhIHYgb2JvY2ggbW9kZWxvY2ggdmXEvm1pIGJsw616a28gaG9kbm90ZSAyIGEgcC1ob2Rub3R5IGJvbGkgdnlzb2vDqSwgxI1vIHpuYW1lbsOhLCDFvmUgbmVtw6FtZSBkw7R2b2QgcHJlZHBva2xhZGHFpSBwb3ppdMOtdm51IGF1dG9rb3JlbMOhY2l1IHBydsOpaG8gcsOhZHUuIFJvdm5ha28gYWogQnJldXNjaOKAk0dvZGZyZXkgdGVzdCBwb3NreXRvbCB2eXNva8O6IHAtaG9kbm90dSwgxI3DrW0gcG90dnJkaWwgYWJzZW5jaXUgc8OpcmlvdmVqIGtvcmVsw6FjaWUuIFBvIHJvesWhw61yZW7DrSBtb2RlbHUgbyBvbmVza29yZW7DuiBob2Rub3R1IHrDoXZpc2xlaiBwcmVtZW5uZWogc2Egc2l0dcOhY2lhIG5lem1lbmlsYSBhIHJlemlkdcOhIHpvc3RhbGkgYmV6IGF1dG9rb3JlbGHEjW5laiDFoXRydWt0w7pyeS4KClogdsO9c2xlZGtvdiB0ZWRhIHZ5cGzDvXZhLCDFvmUgbW9kZWwgamUgeiBoxL5hZGlza2EgYXV0b2tvcmVsw6FjaWUgxaF0YXRpc3RpY2t5IHYgcG9yaWFka3UuIFJlemlkdcOhIHPDuiBuZXrDoXZpc2zDqSwgbmVwb2RvYmFqw7ogc2EgbmEgc3lzdGVtYXRpY2vDvSDEjWFzb3bDvSB2em9yIGEgdsWhZXRreSBwb3XFvml0w6kgZGlhZ25vc3RpY2vDqSBuw6FzdHJvamUgdmVkw7ogayByb3ZuYWvDqW11IHrDoXZlcnUuIE1vZGVsIGplIHRlZGEgdmhvZG5lIMWhcGVjaWZpa292YW7DvSwgYXNwb8WIIHogaMS+YWRpc2thIHRvaHRvIHByZWRwb2tsYWR1LCBhIGF1dG9rb3JlbGFjZSBuZXByZWRzdGF2dWplIHByb2Jsw6ltIHYgaW50ZXJwcmV0w6FjaWkgamVobyB2w71zbGVka292Lgo=