Produção em metros cúbicos por hectare de um experimento com 4 blocos casualizados e 7 procedências de Eucalyptus grandis.

Limpeza das janelas

gc(reset = TRUE)     
          used  (Mb) gc trigger  (Mb) max used  (Mb)
Ncells 2669631 142.6    5086318 271.7  2669631 142.6
Vcells 5107856  39.0   10146329  77.5  5107856  39.0
gc(reset = TRUE)     
          used  (Mb) gc trigger  (Mb) max used  (Mb)
Ncells 2669167 142.6    5086318 271.7  2669167 142.6
Vcells 5107100  39.0   10146329  77.5  5107100  39.0
graphics.off()      

Principais pacotes usados

Os pacotes estão intalados?

if(sum(as.numeric(!pacotes %in% installed.packages())) != 0){
  instalador <- pacotes[!pacotes %in% installed.packages()]
  for(i in 1:length(instalador)) {
    install.packages(instalador, dependencies = T)
    break()}
  sapply(pacotes, require, character = T) 
} else {
  sapply(pacotes, require, character = T) 
}
Loading required package: readxl
Warning: package ‘readxl’ was built under R version 4.3.3
Loading required package: tidyverse
Warning: package ‘tidyverse’ was built under R version 4.3.3
Warning: package ‘forcats’ was built under R version 4.3.3
── Attaching core tidyverse packages ────────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ──────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
Loading required package: lawstat
Warning: package ‘lawstat’ was built under R version 4.3.3
Loading required package: MASS

Attaching package: ‘MASS’

The following object is masked from ‘package:dplyr’:

    select

Loading required package: agricolae
Loading required package: DescTools
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Loading required package: multcomp
Loading required package: mvtnorm
Loading required package: survival
Loading required package: TH.data

Attaching package: ‘TH.data’

The following object is masked from ‘package:MASS’:

    geyser

Loading required package: emmeans
   readxl tidyverse   lawstat      MASS agricolae DescTools  multcomp   emmeans 
     TRUE      TRUE      TRUE      TRUE      TRUE      TRUE      TRUE      TRUE 

Letura dos dados metodo DBC

Data frame dos dados DBC

str(dados_dbc)
tibble [28 × 3] (S3: tbl_df/tbl/data.frame)
 $ Tratamento: chr [1:28] "P1" "P1" "P1" "P1" ...
 $ blocos    : num [1:28] 1 2 3 4 1 2 3 4 1 2 ...
 $ RESULTADO : num [1:28] 358 380 353 360 284 249 259 242 273 222 ...

Tranformação dos tratamento e blocos para factor metodo DBC

str(dados_dbc)
'data.frame':   28 obs. of  3 variables:
 $ Tratamento: Factor w/ 7 levels "P1","P2","P3",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ blocos    : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
 $ RESULTADO : num  358 380 353 360 284 249 259 242 273 222 ...

Anova dos dados para DBC

Modelo estatístico: y_ij = m + b_j + t_i + e_ij

Hipóteses

H0: mu1 = mu2 =…= muI = mu

Ha: pelo menos duas médias populacionais diferem entre si.

anova(mod_dbc)
Analysis of Variance Table

Response: RESULTADO
           Df Sum Sq Mean Sq F value         Pr(>F)    
blocos      3   2519   839.6   3.754        0.02964 *  
Tratamento  6  53738  8956.3  40.047 0.000000001874 ***
Residuals  18   4026   223.6                           
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Verificando as pressuposições da ANOVA

1 - Homogeneidade de variâncias

2- Normalidade dos resíduos

Obtenção dos resíduos

Resíduos simples.

res 
          1           2           3           4           5           6 
-18.5714286  23.2857143 -13.0000000   8.2857143  11.6785714  -3.4642857 
          7           8           9          10          11          12 
 -2.7500000  -5.4642857  19.9285714 -11.2142857  -6.5000000  -2.2142857 
         13          14          15          16          17          18 
  9.1785714 -12.9642857   1.7500000   2.0357143  -4.3214286  20.5357143 
         19          20          21          22          23          24 
 -9.7500000  -6.4642857  -3.0714286 -15.2142857  25.5000000  -7.2142857 
         25          26          27          28 
-14.8214286  -0.9642857   4.7500000  11.0357143 

Resíduos estudentizados

res_Stud
          1           2           3           4           5           6 
-1.54885428  1.94202498 -1.08419799  0.69102729  0.97399106 -0.28892089 
          7           8           9          10          11          12 
-0.22934958 -0.45572059  1.66203978 -0.93526970 -0.54209900 -0.18467109 
         13          14          15          16          17          18 
 0.76549144 -1.08121943  0.14594973  0.16977826 -0.36040648  1.71267540 
         19          20          21          22          23          24 
-0.81314850 -0.53912043 -0.25615667 -1.26886908  2.12669607 -0.60167032 
         25          26          27          28 
-1.23610486 -0.08042128  0.39614927  0.92037687 

Pressuposição: homogeneidade de variâncias

Hipóteses

H0: as variâncias dos tratamentos são homogêneas;

Ha: as variâncias dos tratamentos NÃO são homogêneas;

grafico pressuposição

graf1
Bin width defaults to 1/30 of the range of the data. Pick better value with
`binwidth`.

Teste de Levene para verificação da homogeneidade de variâncias

anova(lm(abs(res) ~ blocos+Tratamento, data=dados_dbc))
Analysis of Variance Table

Response: abs(res)
           Df Sum Sq Mean Sq F value Pr(>F)
blocos      3 174.50  58.168  1.2591 0.3181
Tratamento  6 300.36  50.059  1.0836 0.4087
Residuals  18 831.55  46.197               

Pressuposição: normalidade

Hipóteses

H0: os resíduos seguem distribuição normal;

Ha: os resíduos NÃO seguem distribuição normal;

Teste Shapiro-Wilk para verificação da normalidade dos erros

shapiro.test(res_Stud)

    Shapiro-Wilk normality test

data:  res_Stud
W = 0.94038, p-value = 0.1131

Conclusão: Os residuos seguem uma distribuição normal.

Teste de médias

Teste LSD de Fisher

Obtendo a diferença mńima significativa do teste LSD de Fisher Metodo simple

Metodo melhorado com test bonferroni

Teste Tukey

Obtendo a diferença mńima significativa do teste Tukey Recurso da biblioteca agricolae

Conclusões

No experimento com delineamento em blocos casualizados (DBC), houve diferenças significativas entre os tratamentos, rejeitando a hipótese nula (Ho).

As variâncias foram consideradas homogêneas, de acordo com o teste de Levene, aceitando a Ho.

Os resíduos seguiram uma distribuição normal, conforme o teste de Shapiro-Wilk, também aceitando a Ho.

Os testes de comparação de médias, realizados com o teste LSD de Fisher, mostraram diferenças estatísticas. O tratamento P1 apresentou a maior produção em comparação com os outros tratamentos. O tratamento P7 também apresentou diferenças, enquanto o P4 foi diferente do P6, mas ambos foram iguais aos tratamentos P2, P5, P3 e P6.

No entanto, o teste LSD de Fisher apresentou limitações ao comparar mais de dois ou três tratamentos, levando à necessidade de ajustes com o teste de Bonferroni. Com este ajuste, P1 e P7 foram os tratamentos com maior produção, enquanto P1, P4, P2, P5, P3 e P6 não apresentaram diferenças estatísticas significativas, sendo considerados iguais em produção.

De maneira semelhante, o teste de Tukey produziu resultados consistentes com o teste LSD de Fisher, com as mesmas modificações feitas pelo teste de Bonferroni

LS0tDQp0aXRsZTogIkFUSVZJREFERTAyIg0KYXV0aG9yOiAiV2lsbGludG9uIEhlcm5hbiBQaW5jaGFvIFBpbmNoYW8iDQpkYXRlOiAiMjAyNC0wOS0xMSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICBkZl9wcmludDogcGFnZWQNCmVkaXRvcl9vcHRpb25zOg0KICBtYXJrZG93bjoNCiAgICB3cmFwOiA3Mg0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQotLS0NCg0KUHJvZHXDp8OjbyBlbSBtZXRyb3MgY8O6Ymljb3MgcG9yIGhlY3RhcmUgZGUgdW0gZXhwZXJpbWVudG8gY29tIDQgYmxvY29zIGNhc3VhbGl6YWRvcyBlIDcgcHJvY2Vkw6puY2lhcyBkZSBFdWNhbHlwdHVzIGdyYW5kaXMuDQoNCj4gTGltcGV6YSBkYXMgamFuZWxhcw0KDQpgYGB7cn0NCm9wdGlvbnMoc2NpcGVuID0gOTk5KQ0Kcm0obGlzdCA9IGxzKCkpIA0KZ2MocmVzZXQgPSBUUlVFKSAgICAgDQpncmFwaGljcy5vZmYoKSAgICAgIA0KYGBgDQoNCj4gUHJpbmNpcGFpcyBwYWNvdGVzIHVzYWRvcw0KDQpgYGB7cn0NCnBhY290ZXMgPC0gYygicmVhZHhsIiwgICAgI0xlciBhcnF1aXZvcyBkbyBFeGNlbA0KICAgICAgICAgICAgICJ0aWR5dmVyc2UiLCAjQ2FycmVnYXIgb3V0cm9zIHBhY290ZXMgZG8gUg0KICAgICAgICAgICAgICJsYXdzdGF0IiwgICAjIFRlc3RlIGRlIGhvbW9nZW5laWRhZGUNCiAgICAgICAgICAgICAiTUFTUyIsICAgICAgI1RyYW5zZm9ybWHDp8OjbyAtIEJveC1Db3gNCiAgICAgICAgICAgICAiYWdyaWNvbGFlIiwgI1N0YXRpc3RpY2FsIFByb2NlZHVyZXMgZm9yIEFncmljdWx0dXJhbCBSZXNlYXJjaA0KICAgICAgICAgICAgICJEZXNjVG9vbHMiLCAjVG9vbHMgZm9yIERlc2NyaXB0aXZlIFN0YXRpc3RpY3MgYW5kIEV4cGxvcmF0b3J5IERhdGFBbmFseXNpcw0KICAgICAgICAgICAgICJtdWx0Y29tcCIsICAjU2ltdWx0YW5lb3VzIEluZmVyZW5jZSBpbiBHZW5lcmFsIFBhcmFtZXRyaWMNCiAgICAgICAgICAgICAiZW1tZWFucyIgICAgI03DqWRpYXMgbWFyZ2luYWlzDQopIA0KYGBgDQoNCj4gT3MgcGFjb3RlcyBlc3TDo28gaW50YWxhZG9zPw0KDQpgYGB7cn0NCmlmKHN1bShhcy5udW1lcmljKCFwYWNvdGVzICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCkpKSAhPSAwKXsNCiAgaW5zdGFsYWRvciA8LSBwYWNvdGVzWyFwYWNvdGVzICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCldDQogIGZvcihpIGluIDE6bGVuZ3RoKGluc3RhbGFkb3IpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcyhpbnN0YWxhZG9yLCBkZXBlbmRlbmNpZXMgPSBUKQ0KICAgIGJyZWFrKCl9DQogIHNhcHBseShwYWNvdGVzLCByZXF1aXJlLCBjaGFyYWN0ZXIgPSBUKSANCn0gZWxzZSB7DQogIHNhcHBseShwYWNvdGVzLCByZXF1aXJlLCBjaGFyYWN0ZXIgPSBUKSANCn0NCmBgYA0KIyMgTGV0dXJhIGRvcyBkYWRvcyBtZXRvZG8gREJDDQoNCmBgYHtyfQ0KZGFkb3NfZGJjIDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL0FzdXMvT25lRHJpdmUvRXNjcml0b3Jpby9SIFBSQVRJQ0EvZGFkby9BVUxBMkRJQy54bHN4Iiwgc2hlZXQgPSAyKQ0KYGBgDQoNCj4gRGF0YSBmcmFtZSBkb3MgZGFkb3MgREJDDQoNCmBgYHtyfQ0Kc3RyKGRhZG9zX2RiYykNCmBgYA0KDQo+IFRyYW5mb3JtYcOnw6NvIGRvcyB0cmF0YW1lbnRvIGUgYmxvY29zIHBhcmEgZmFjdG9yIG1ldG9kbyBEQkMNCg0KYGBge3J9DQpkYWRvc19kYmMgPC0gdHJhbnNmb3JtKGRhZG9zX2RiYywgVHJhdGFtZW50byA9IGFzLmZhY3RvcihUcmF0YW1lbnRvKSwgYmxvY29zID1hcy5mYWN0b3IoYmxvY29zKSkNCnN0cihkYWRvc19kYmMpDQpgYGANCg0KIyBBbm92YSBkb3MgZGFkb3MgcGFyYSBEQkMNCg0KTW9kZWxvIGVzdGF0w61zdGljbzogeV9paiA9IG0gKyBiX2ogKyB0X2kgKyBlX2lqDQoNCkhpcMOzdGVzZXMNCg0KSDA6IG11MSA9IG11MiA9Li4uPSBtdUkgPSBtdQ0KDQpIYTogcGVsbyBtZW5vcyBkdWFzIG3DqWRpYXMgcG9wdWxhY2lvbmFpcyBkaWZlcmVtIGVudHJlIHNpLg0KDQpgYGB7cn0NCm1vZF9kYmMgPC0gbG0oUkVTVUxUQURPIH4gYmxvY29zK1RyYXRhbWVudG8sIGRhdGEgPSBkYWRvc19kYmMpDQphbm92YShtb2RfZGJjKQ0KYGBgDQoNCiMgVmVyaWZpY2FuZG8gYXMgcHJlc3N1cG9zacOnw7VlcyBkYSBBTk9WQQ0KDQojIyAxIC0gSG9tb2dlbmVpZGFkZSBkZSB2YXJpw6JuY2lhcw0KDQojIyAyLSBOb3JtYWxpZGFkZSBkb3MgcmVzw61kdW9zDQoNCk9idGVuw6fDo28gZG9zIHJlc8OtZHVvcw0KDQojIyMgUmVzw61kdW9zIHNpbXBsZXMuDQoNCmBgYHtyfQ0KcmVzIDwtIHJlc2lkdWFscyhtb2RfZGJjKSANCnJlcyANCmBgYA0KDQojIyMgUmVzw61kdW9zIGVzdHVkZW50aXphZG9zDQoNCmBgYHtyfQ0KcmVzX1N0dWQgPC0gcnN0YW5kYXJkKG1vZF9kYmMpIA0KcmVzX1N0dWQNCmBgYA0KDQojIFByZXNzdXBvc2nDp8OjbzogaG9tb2dlbmVpZGFkZSBkZSB2YXJpw6JuY2lhcw0KDQpIaXDDs3Rlc2VzDQoNCkgwOiBhcyB2YXJpw6JuY2lhcyBkb3MgdHJhdGFtZW50b3Mgc8OjbyBob21vZ8OqbmVhczsNCg0KSGE6IGFzIHZhcmnDom5jaWFzIGRvcyB0cmF0YW1lbnRvcyBOw4NPIHPDo28gaG9tb2fDqm5lYXM7DQoNCiMjIGdyYWZpY28gcHJlc3N1cG9zacOnw6NvDQoNCmBgYHtyfQ0KZ3JhZjEgPC0gZ2dwbG90KGRhZG9zX2RiYywgYWVzKHggPSBUcmF0YW1lbnRvLCB5ID0gcmVzX1N0dWQpKSArIA0KICBnZW9tX2RvdHBsb3QoYmluYXhpcyA9ICJ5Iiwgc3RhY2tkaXIgPSAiY2VudGVyIiwgZmlsbCA9ICJibHVlIikgKw0KICB4bGFiKCJUcmF0YW1lbnRvcyIpK3lsYWIoIlJlc8OtZHVvcyBTdHVkZW50aXphZG9zIikrdGhlbWVfYncoKSArDQogIHRoZW1lKA0KICAgIGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShzaXplID0gMSwgY29sb3VyID0gImJsYWNrIiksDQogICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGZpbGwgPSBOQSwgY29sb3VyID0gImJsYWNrIiksDQogICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMTUpLCAgIyBBdW1lbnRhIG8gdGV4dG8gZG8gZWl4byBYDQogICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxNyksICMgQXVtZW50YSBvIHTDrXR1bG8gZG8gZWl4byBYDQogICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDE1KSwgICMgQXVtZW50YSBvIHRleHRvIGRvIGVpeG8gWQ0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMTcpICAjIEF1bWVudGEgbyB0w610dWxvIGRvIGVpeG8gWQ0KICApDQoNCmdyYWYxDQoNCmBgYA0KDQojIyBUZXN0ZSBkZSBMZXZlbmUgcGFyYSB2ZXJpZmljYcOnw6NvIGRhIGhvbW9nZW5laWRhZGUgZGUgdmFyacOibmNpYXMNCg0KYGBge3J9DQphbm92YShsbShhYnMocmVzKSB+IGJsb2NvcytUcmF0YW1lbnRvLCBkYXRhPWRhZG9zX2RiYykpDQpgYGANCg0KIyBQcmVzc3Vwb3Npw6fDo286IG5vcm1hbGlkYWRlDQoNCkhpcMOzdGVzZXMNCg0KSDA6IG9zIHJlc8OtZHVvcyBzZWd1ZW0gZGlzdHJpYnVpw6fDo28gbm9ybWFsOw0KDQpIYTogb3MgcmVzw61kdW9zIE7Dg08gc2VndWVtIGRpc3RyaWJ1acOnw6NvIG5vcm1hbDsNCg0KYGBge3J9DQoNCnFxbm9ybShyZXNfU3R1ZCkNCnFxbGluZShyZXNfU3R1ZCwgY29sPTIpDQoNCmBgYA0KDQoNCg0KIyMgVGVzdGUgU2hhcGlyby1XaWxrIHBhcmEgdmVyaWZpY2HDp8OjbyBkYSBub3JtYWxpZGFkZSBkb3MgZXJyb3MNCg0KYGBge3J9DQpzaGFwaXJvLnRlc3QocmVzX1N0dWQpDQpgYGANCg0KQ29uY2x1c8OjbzogT3MgcmVzaWR1b3Mgc2VndWVtIHVtYSBkaXN0cmlidWnDp8OjbyBub3JtYWwuDQoNCiMgVGVzdGUgZGUgbcOpZGlhcw0KDQojIyBUZXN0ZSBMU0QgZGUgRmlzaGVyDQoNCk9idGVuZG8gYSBkaWZlcmVuw6dhIG3FhGltYSBzaWduaWZpY2F0aXZhIGRvIHRlc3RlIExTRCBkZSBGaXNoZXIgDQpNZXRvZG8gc2ltcGxlDQpgYGB7cn0NCntyfQ0KdGVzdGVfbHNkIDwtIGFncmljb2xhZTo6TFNELnRlc3QobW9kX2RiYywgdHJ0PSJUcmF0YW1lbnRvIiwgYWxwaGEgPSAwLjA1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZSA9IFQpDQp0ZXN0ZV9sc2QkcGFyYW1ldGVycw0KdGVzdGVfbHNkJGdyb3Vwcw0KYGBgDQpNZXRvZG8gbWVsaG9yYWRvIGNvbSB0ZXN0IGJvbmZlcnJvbmkgDQpgYGB7cn0NCnRlc3RlX2xzZGJvbiA8LSBhZ3JpY29sYWU6OkxTRC50ZXN0KG1vZF9kYmMsIHRydD0iVHJhdGFtZW50byIsIGFscGhhID0gMC4wNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUgPSBULCBwLmFkaiA9ICJib25mZXJyb25pIikNCnRlc3RlX2xzZGJvbiRwYXJhbWV0ZXJzDQp0ZXN0ZV9sc2Rib24kZ3JvdXBzDQpgYGANCg0KIyMgVGVzdGUgVHVrZXkNCg0KT2J0ZW5kbyBhIGRpZmVyZW7Dp2EgbcWEaW1hIHNpZ25pZmljYXRpdmEgZG8gdGVzdGUgVHVrZXkgDQpSZWN1cnNvIGRhIGJpYmxpb3RlY2EgYWdyaWNvbGFlDQoNCmBgYHtyfQ0KdGVzdGVfdHVrZXkgPC0gYWdyaWNvbGFlOjpIU0QudGVzdChtb2RfZGJjLCB0cnQ9IlRyYXRhbWVudG8iLCBhbHBoYSA9IDAuMDUsIGNvbnNvbGUgPSBUKQ0KdGVzdGVfdHVrZXkkcGFyYW1ldGVycw0KdGVzdGVfdHVrZXkkZ3JvdXBzDQpgYGANCiMgQ29uY2x1c8O1ZXMNCk5vIGV4cGVyaW1lbnRvIGNvbSBkZWxpbmVhbWVudG8gZW0gYmxvY29zIGNhc3VhbGl6YWRvcyAoREJDKSwgaG91dmUgZGlmZXJlbsOnYXMgc2lnbmlmaWNhdGl2YXMgZW50cmUgb3MgdHJhdGFtZW50b3MsIHJlamVpdGFuZG8gYSBoaXDDs3Rlc2UgbnVsYSAoSG8pLg0KDQpBcyB2YXJpw6JuY2lhcyBmb3JhbSBjb25zaWRlcmFkYXMgaG9tb2fDqm5lYXMsIGRlIGFjb3JkbyBjb20gbyB0ZXN0ZSBkZSBMZXZlbmUsIGFjZWl0YW5kbyBhIEhvLg0KDQpPcyByZXPDrWR1b3Mgc2VndWlyYW0gdW1hIGRpc3RyaWJ1acOnw6NvIG5vcm1hbCwgY29uZm9ybWUgbyB0ZXN0ZSBkZSBTaGFwaXJvLVdpbGssIHRhbWLDqW0gYWNlaXRhbmRvIGEgSG8uDQoNCk9zIHRlc3RlcyBkZSBjb21wYXJhw6fDo28gZGUgbcOpZGlhcywgcmVhbGl6YWRvcyBjb20gbyB0ZXN0ZSBMU0QgZGUgRmlzaGVyLCBtb3N0cmFyYW0gZGlmZXJlbsOnYXMgZXN0YXTDrXN0aWNhcy4gTyB0cmF0YW1lbnRvIFAxIGFwcmVzZW50b3UgYSBtYWlvciBwcm9kdcOnw6NvIGVtIGNvbXBhcmHDp8OjbyBjb20gb3Mgb3V0cm9zIHRyYXRhbWVudG9zLiBPIHRyYXRhbWVudG8gUDcgdGFtYsOpbSBhcHJlc2VudG91IGRpZmVyZW7Dp2FzLCBlbnF1YW50byBvIFA0IGZvaSBkaWZlcmVudGUgZG8gUDYsIG1hcyBhbWJvcyBmb3JhbSBpZ3VhaXMgYW9zIHRyYXRhbWVudG9zIFAyLCBQNSwgUDMgZSBQNi4NCg0KTm8gZW50YW50bywgbyB0ZXN0ZSBMU0QgZGUgRmlzaGVyIGFwcmVzZW50b3UgbGltaXRhw6fDtWVzIGFvIGNvbXBhcmFyIG1haXMgZGUgZG9pcyBvdSB0csOqcyB0cmF0YW1lbnRvcywgbGV2YW5kbyDDoCBuZWNlc3NpZGFkZSBkZSBhanVzdGVzIGNvbSBvIHRlc3RlIGRlIEJvbmZlcnJvbmkuIENvbSBlc3RlIGFqdXN0ZSwgUDEgZSBQNyBmb3JhbSBvcyB0cmF0YW1lbnRvcyBjb20gbWFpb3IgcHJvZHXDp8OjbywgZW5xdWFudG8gUDEsIFA0LCBQMiwgUDUsIFAzIGUgUDYgbsOjbyBhcHJlc2VudGFyYW0gZGlmZXJlbsOnYXMgZXN0YXTDrXN0aWNhcyBzaWduaWZpY2F0aXZhcywgc2VuZG8gY29uc2lkZXJhZG9zIGlndWFpcyBlbSBwcm9kdcOnw6NvLg0KDQpEZSBtYW5laXJhIHNlbWVsaGFudGUsIG8gdGVzdGUgZGUgVHVrZXkgcHJvZHV6aXUgcmVzdWx0YWRvcyBjb25zaXN0ZW50ZXMgY29tIG8gdGVzdGUgTFNEIGRlIEZpc2hlciwgY29tIGFzIG1lc21hcyBtb2RpZmljYcOnw7VlcyBmZWl0YXMgcGVsbyB0ZXN0ZSBkZSBCb25mZXJyb25p