1 - Dados brutos



Leitura 1 - 15/04/2026



library(dplyr)
# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 1"                                                                        #aqui
file_leitura
[1] "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 1"
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
dados_leitura
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
print(dados_leitura)
          DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
1   2026-04-14 23:56:27.846    105.0392           5 0.3307019 445.1082 2.187245 2.771877 291.1186
2   2026-04-14 23:56:28.930    105.0392           5 0.3311638 445.1326 2.187225 2.772407 291.1577
3   2026-04-14 23:56:29.726    105.0392           5 0.3311643 445.1506 2.187210 2.772798 291.1865
4   2026-04-14 23:56:30.055    105.0392           5 0.3303446 445.1580 2.187204 2.772959 291.1983
5   2026-04-14 23:56:31.223    105.0393           5 0.3274368 445.1843 2.186775 2.773531 291.2404
6   2026-04-14 23:56:32.032    105.0393           5 0.3274374 445.2026 2.186478 2.773928 291.2696
7   2026-04-14 23:56:32.704    105.0393           5 0.3240288 445.2177 2.186231 2.774257 291.2939
8   2026-04-14 23:56:33.530    105.0393           5 0.3198461 445.2406 2.185943 2.775186 291.2430
9   2026-04-14 23:56:34.648    105.0393           5 0.3141843 445.2374 2.185552 2.776444 291.1742
10  2026-04-14 23:56:35.460    105.0393           5 0.3141915 445.2351 2.185269 2.777358 291.1243
11  2026-04-14 23:56:35.803    105.0393           5 0.3178068 445.2341 2.185149 2.777744 291.1032
12  2026-04-14 23:56:36.993    105.0393           5 0.3303398 445.2308 2.185843 2.779082 291.0302
13  2026-04-14 23:56:37.782    105.0393           5 0.3303471 445.2286 2.186305 2.779971 290.9816
14  2026-04-14 23:56:38.430    105.0393           5 0.3296730 445.2267 2.186684 2.780700 290.9418
15  2026-04-14 23:56:39.233    105.0393           5 0.3288297 445.2175 2.187128 2.780738 290.9736
16  2026-04-14 23:56:40.325    105.0394           5 0.3276816 445.2146 2.187732 2.780789 291.0169
17  2026-04-14 23:56:41.131    105.0394           5 0.3276800 445.2124 2.188179 2.780827 291.0489
18  2026-04-14 23:56:41.480    105.0394           5 0.3253675 445.2115 2.188372 2.780843 291.0627
19  2026-04-14 23:56:42.671    105.0394           5 0.3174759 445.2082 2.187548 2.780899 291.1098
20  2026-04-14 23:56:43.457    105.0394           5 0.3174743 445.2061 2.187004 2.780936 291.1410
21  2026-04-14 23:56:44.127    105.0394           5 0.3213143 445.2043 2.186540 2.780967 291.1676
22  2026-04-14 23:56:44.934    105.0394           5 0.3259558 445.2137 2.186023 2.782451 291.1624
23  2026-04-14 23:56:46.033    105.0394           5 0.3322833 445.2775 2.185317 2.784471 291.1554
24  2026-04-14 23:56:46.851    105.0394           5 0.3322917 445.3249 2.184794 2.785973 291.1501
25  2026-04-14 23:56:47.191    105.0394           5 0.3303134 445.3446 2.184575 2.786599 291.1479
26  2026-04-14 23:56:48.361    105.0394           5 0.3235311 445.4125 2.185189 2.788747 291.1403
27  2026-04-14 23:56:49.128    105.0395           5 0.3235388 445.4571 2.185591 2.790157 291.1354
28  2026-04-14 23:56:49.783    105.0395           5 0.3249684 445.4952 2.185935 2.791362 291.1312
29  2026-04-14 23:56:50.575    105.0395           5 0.3266814 445.5240 2.186289 2.790688 291.1241
30  2026-04-14 23:56:51.654    105.0395           5 0.3290173 445.4566 2.186772 2.789772 291.1144
31  2026-04-14 23:56:52.464    105.0395           5 0.3290138 445.4059 2.187135 2.789083 291.1072
32  2026-04-14 23:56:52.812    105.0395           5 0.3268673 445.3841 2.187291 2.788787 291.1040
33  2026-04-14 23:56:53.996    105.0395           5 0.3195706 445.3101 2.186906 2.787783 291.0933
34  2026-04-14 23:56:54.786    105.0395           5 0.3195673 445.2607 2.186648 2.787111 291.0862
35  2026-04-14 23:56:55.448    105.0395           5 0.3206885 445.2193 2.186432 2.786549 291.0803
36  2026-04-14 23:56:56.249    105.0395           5 0.3220452 445.1758 2.186195 2.786689 291.1181
37  2026-04-14 23:56:57.341    105.0396           5 0.3238976 445.1978 2.185870 2.786879 291.1696
38  2026-04-14 23:56:58.132    105.0396           5 0.3238963 445.2137 2.185635 2.787016 291.2069
39  2026-04-14 23:56:58.480    105.0396           5 0.3273677 445.2207 2.185532 2.787076 291.2234
40  2026-04-14 23:56:59.683    105.0396           5 0.3393581 445.2448 2.185464 2.787285 291.2802
41  2026-04-14 23:57:00.494    105.0396           5 0.3393569 445.2611 2.185419 2.787426 291.3185
42  2026-04-14 23:57:01.142    105.0396           5 0.3395438 445.2742 2.185383 2.787538 291.3490
43  2026-04-14 23:57:01.934    105.0396           5 0.3397781 445.2965 2.185362 2.788485 291.3557
44  2026-04-14 23:57:03.048    105.0396           5 0.3401074 445.2491 2.185332 2.789820 291.3652
45  2026-04-14 23:57:03.842    105.0396           5 0.3401119 445.2152 2.185311 2.790773 291.3719
46  2026-04-14 23:57:04.193    105.0396           5 0.3336633 445.2002 2.185302 2.791193 291.3748
47  2026-04-14 23:57:05.359    105.0396           5 0.3121612 445.1505 2.185949 2.792592 291.3845
48  2026-04-14 23:57:06.151    105.0397           5 0.3121652 445.1168 2.186387 2.793540 291.3912
49  2026-04-14 23:57:06.802    105.0397           5 0.3167730 445.0890 2.186748 2.794322 291.3968
50  2026-04-14 23:57:07.582    105.0397           5 0.3222805 445.0489 2.187155 2.794393 291.4160
51  2026-04-14 23:57:08.687    105.0397           5 0.3300833 445.0755 2.187732 2.794491 291.4433
52  2026-04-14 23:57:09.484    105.0397           5 0.3300828 445.0948 2.188148 2.794562 291.4629
53  2026-04-14 23:57:09.815    105.0397           5 0.3296166 445.1027 2.188320 2.794591 291.4710
54  2026-04-14 23:57:10.936    105.0397           5 0.3280329 445.1298 2.188369 2.794690 291.4986
55  2026-04-14 23:57:11.710    105.0397           5 0.3280323 445.1485 2.188402 2.794759 291.5177
56  2026-04-14 23:57:12.365    105.0397           5 0.3282535 445.1643 2.188430 2.794817 291.5338
57  2026-04-14 23:57:13.132    105.0397           5 0.3285180 445.1854 2.188472 2.795206 291.4963
58  2026-04-14 23:57:14.217    105.0397           5 0.3288913 445.1702 2.188532 2.795756 291.4434
59  2026-04-14 23:57:15.032    105.0398           5 0.3288955 445.1588 2.188577 2.796169 291.4036
60  2026-04-14 23:57:15.375    105.0398           5 0.3272631 445.1540 2.188596 2.796343 291.3869
61  2026-04-14 23:57:16.552    105.0398           5 0.3216612 445.1376 2.188087 2.796940 291.3293
62  2026-04-14 23:57:17.332    105.0398           5 0.3216652 445.1267 2.187749 2.797335 291.2913
63  2026-04-14 23:57:17.996    105.0398           5 0.3240257 445.1174 2.187461 2.797672 291.2588
64  2026-04-14 23:57:18.795    105.0398           5 0.3268604 445.1138 2.187143 2.799017 291.2688
65  2026-04-14 23:57:19.858    105.0398           5 0.3306365 445.0597 2.186719 2.800809 291.2820
66  2026-04-14 23:57:20.638    105.0398           5 0.3306424 445.0200 2.186407 2.802126 291.2917
67  2026-04-14 23:57:20.976    105.0398           5 0.3317374 445.0028 2.186272 2.802696 291.2959
68  2026-04-14 23:57:22.161    105.0398           5 0.3355765 444.9426 2.186034 2.804695 291.3107
69  2026-04-14 23:57:22.960    105.0398           5 0.3355828 444.9020 2.185874 2.806043 291.3206
70  2026-04-14 23:57:23.622    105.0399           5 0.3335320 444.8683 2.185741 2.807159 291.3288
71  2026-04-14 23:57:24.394    105.0399           5 0.3311317 444.8137 2.185531 2.806550 291.3143
72  2026-04-14 23:57:25.450    105.0399           5 0.3278491 444.8360 2.185243 2.805715 291.2944
73  2026-04-14 23:57:26.260    105.0399           5 0.3278468 444.8531 2.185023 2.805074 291.2792
74  2026-04-14 23:57:26.594    105.0399           5 0.3272120 444.8601 2.184932 2.804810 291.2729
75  2026-04-14 23:57:27.762    105.0399           5 0.3249855 444.8847 2.184399 2.803886 291.2509
76  2026-04-14 23:57:28.563    105.0399           5 0.3249832 444.9016 2.184033 2.803252 291.2358
77  2026-04-14 23:57:29.233    105.0399           5 0.3255223 444.9157 2.183727 2.802722 291.2232
78  2026-04-14 23:57:30.020    105.0399           5 0.3261669 444.9514 2.183436 2.804473 291.2541
79  2026-04-14 23:57:31.095    105.0399           5 0.3270465 445.0006 2.183037 2.806861 291.2963
80  2026-04-14 23:57:31.888    105.0400           5 0.3270540 445.0369 2.182744 2.808623 291.3274
81  2026-04-14 23:57:32.247    105.0400           5 0.3254171 445.0533 2.182611 2.809420 291.3414
82  2026-04-14 23:57:33.394    105.0400           5 0.3201915 445.1058 2.181914 2.811967 291.3863
83  2026-04-14 23:57:34.187    105.0400           5 0.3201988 445.1421 2.181431 2.813731 291.4174
84  2026-04-14 23:57:34.841    105.0400           5 0.3224833 445.1720 2.181034 2.815182 291.4431
85  2026-04-14 23:57:35.611    105.0400           5 0.3251696 445.1902 2.180504 2.814772 291.4780
86  2026-04-14 23:57:36.720    105.0400           5 0.3290304 445.2778 2.179743 2.814180 291.5282
87  2026-04-14 23:57:37.499    105.0400           5 0.3290268 445.3394 2.179208 2.813764 291.5635
88  2026-04-14 23:57:37.832    105.0400           5 0.3270611 445.3658 2.178978 2.813585 291.5786
89  2026-04-14 23:57:39.003    105.0400           5 0.3201698 445.4584 2.178614 2.812960 291.6315
90  2026-04-14 23:57:39.786    105.0400           5 0.3201662 445.5203 2.178370 2.812542 291.6669
91  2026-04-14 23:57:40.441    105.0401           5 0.3219085 445.5722 2.178166 2.812191 291.6967
92  2026-04-14 23:57:41.240    105.0401           5 0.3240335 445.6363 2.177921 2.811881 291.6896
93  2026-04-14 23:57:42.322    105.0401           5 0.3269075 445.5708 2.177589 2.811465 291.6801
94  2026-04-14 23:57:43.102    105.0401           5 0.3269060 445.5235 2.177349 2.811164 291.6731
95  2026-04-14 23:57:43.437    105.0401           5 0.3277184 445.5032 2.177246 2.811036 291.6702
96  2026-04-14 23:57:44.582    105.0401           5 0.3305060 445.4338 2.177449 2.810595 291.6601
97  2026-04-14 23:57:45.377    105.0401           5 0.3305045 445.3857 2.177589 2.810289 291.6531
98  2026-04-14 23:57:46.039    105.0401           5 0.3285428 445.3456 2.177705 2.810034 291.6472
99  2026-04-14 23:57:46.816    105.0401           5 0.3262405 445.3015 2.177853 2.810108 291.6195
100 2026-04-14 23:57:47.917    105.0401           5 0.3229858 445.3017 2.178062 2.810211 291.5804
101 2026-04-14 23:57:48.744    105.0401           5 0.3229878 445.3019 2.178220 2.810288 291.5510
102 2026-04-14 23:57:49.073    105.0402           5 0.3222705 445.3020 2.178282 2.810319 291.5393
103 2026-04-14 23:57:50.244    105.0402           5 0.3197175 445.3023 2.178280 2.810428 291.4976
104 2026-04-14 23:57:51.049    105.0402           5 0.3197194 445.3024 2.178278 2.810503 291.4690
105 2026-04-14 23:57:51.697    105.0402           5 0.3222249 445.3026 2.178276 2.810564 291.4461
106 2026-04-14 23:57:52.476    105.0402           5 0.3252410 445.2969 2.178254 2.809901 291.4311
107 2026-04-14 23:57:53.594    105.0402           5 0.3295603 445.3135 2.178221 2.808952 291.4097
108 2026-04-14 23:57:54.394    105.0402           5 0.3295577 445.3255 2.178197 2.808272 291.3943
109 2026-04-14 23:57:54.734    105.0402           5 0.3276243 445.3306 2.178187 2.807983 291.3877
110 2026-04-14 23:57:55.901    105.0402           5 0.3209939 445.3479 2.177642 2.806992 291.3652
111 2026-04-14 23:57:56.707    105.0402           5 0.3209914 445.3599 2.177265 2.806307 291.3498
 [ reached 'max' / getOption("max.print") -- omitted 104673 rows ]
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
print(dados_leitura)
          DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
1   2026-04-14 23:56:27.846    105.0392           5 0.3307019 445.1082 2.187245 2.771877 291.1186
2   2026-04-14 23:56:28.930    105.0392           5 0.3311638 445.1326 2.187225 2.772407 291.1577
3   2026-04-14 23:56:29.726    105.0392           5 0.3311643 445.1506 2.187210 2.772798 291.1865
4   2026-04-14 23:56:30.055    105.0392           5 0.3303446 445.1580 2.187204 2.772959 291.1983
5   2026-04-14 23:56:31.223    105.0393           5 0.3274368 445.1843 2.186775 2.773531 291.2404
6   2026-04-14 23:56:32.032    105.0393           5 0.3274374 445.2026 2.186478 2.773928 291.2696
7   2026-04-14 23:56:32.704    105.0393           5 0.3240288 445.2177 2.186231 2.774257 291.2939
8   2026-04-14 23:56:33.530    105.0393           5 0.3198461 445.2406 2.185943 2.775186 291.2430
9   2026-04-14 23:56:34.648    105.0393           5 0.3141843 445.2374 2.185552 2.776444 291.1742
10  2026-04-14 23:56:35.460    105.0393           5 0.3141915 445.2351 2.185269 2.777358 291.1243
11  2026-04-14 23:56:35.803    105.0393           5 0.3178068 445.2341 2.185149 2.777744 291.1032
12  2026-04-14 23:56:36.993    105.0393           5 0.3303398 445.2308 2.185843 2.779082 291.0302
13  2026-04-14 23:56:37.782    105.0393           5 0.3303471 445.2286 2.186305 2.779971 290.9816
14  2026-04-14 23:56:38.430    105.0393           5 0.3296730 445.2267 2.186684 2.780700 290.9418
15  2026-04-14 23:56:39.233    105.0393           5 0.3288297 445.2175 2.187128 2.780738 290.9736
16  2026-04-14 23:56:40.325    105.0394           5 0.3276816 445.2146 2.187732 2.780789 291.0169
17  2026-04-14 23:56:41.131    105.0394           5 0.3276800 445.2124 2.188179 2.780827 291.0489
18  2026-04-14 23:56:41.480    105.0394           5 0.3253675 445.2115 2.188372 2.780843 291.0627
19  2026-04-14 23:56:42.671    105.0394           5 0.3174759 445.2082 2.187548 2.780899 291.1098
20  2026-04-14 23:56:43.457    105.0394           5 0.3174743 445.2061 2.187004 2.780936 291.1410
21  2026-04-14 23:56:44.127    105.0394           5 0.3213143 445.2043 2.186540 2.780967 291.1676
22  2026-04-14 23:56:44.934    105.0394           5 0.3259558 445.2137 2.186023 2.782451 291.1624
23  2026-04-14 23:56:46.033    105.0394           5 0.3322833 445.2775 2.185317 2.784471 291.1554
24  2026-04-14 23:56:46.851    105.0394           5 0.3322917 445.3249 2.184794 2.785973 291.1501
25  2026-04-14 23:56:47.191    105.0394           5 0.3303134 445.3446 2.184575 2.786599 291.1479
26  2026-04-14 23:56:48.361    105.0394           5 0.3235311 445.4125 2.185189 2.788747 291.1403
27  2026-04-14 23:56:49.128    105.0395           5 0.3235388 445.4571 2.185591 2.790157 291.1354
28  2026-04-14 23:56:49.783    105.0395           5 0.3249684 445.4952 2.185935 2.791362 291.1312
29  2026-04-14 23:56:50.575    105.0395           5 0.3266814 445.5240 2.186289 2.790688 291.1241
30  2026-04-14 23:56:51.654    105.0395           5 0.3290173 445.4566 2.186772 2.789772 291.1144
31  2026-04-14 23:56:52.464    105.0395           5 0.3290138 445.4059 2.187135 2.789083 291.1072
32  2026-04-14 23:56:52.812    105.0395           5 0.3268673 445.3841 2.187291 2.788787 291.1040
33  2026-04-14 23:56:53.996    105.0395           5 0.3195706 445.3101 2.186906 2.787783 291.0933
34  2026-04-14 23:56:54.786    105.0395           5 0.3195673 445.2607 2.186648 2.787111 291.0862
35  2026-04-14 23:56:55.448    105.0395           5 0.3206885 445.2193 2.186432 2.786549 291.0803
36  2026-04-14 23:56:56.249    105.0395           5 0.3220452 445.1758 2.186195 2.786689 291.1181
37  2026-04-14 23:56:57.341    105.0396           5 0.3238976 445.1978 2.185870 2.786879 291.1696
38  2026-04-14 23:56:58.132    105.0396           5 0.3238963 445.2137 2.185635 2.787016 291.2069
39  2026-04-14 23:56:58.480    105.0396           5 0.3273677 445.2207 2.185532 2.787076 291.2234
40  2026-04-14 23:56:59.683    105.0396           5 0.3393581 445.2448 2.185464 2.787285 291.2802
41  2026-04-14 23:57:00.494    105.0396           5 0.3393569 445.2611 2.185419 2.787426 291.3185
42  2026-04-14 23:57:01.142    105.0396           5 0.3395438 445.2742 2.185383 2.787538 291.3490
43  2026-04-14 23:57:01.934    105.0396           5 0.3397781 445.2965 2.185362 2.788485 291.3557
44  2026-04-14 23:57:03.048    105.0396           5 0.3401074 445.2491 2.185332 2.789820 291.3652
45  2026-04-14 23:57:03.842    105.0396           5 0.3401119 445.2152 2.185311 2.790773 291.3719
46  2026-04-14 23:57:04.193    105.0396           5 0.3336633 445.2002 2.185302 2.791193 291.3748
47  2026-04-14 23:57:05.359    105.0396           5 0.3121612 445.1505 2.185949 2.792592 291.3845
48  2026-04-14 23:57:06.151    105.0397           5 0.3121652 445.1168 2.186387 2.793540 291.3912
49  2026-04-14 23:57:06.802    105.0397           5 0.3167730 445.0890 2.186748 2.794322 291.3968
50  2026-04-14 23:57:07.582    105.0397           5 0.3222805 445.0489 2.187155 2.794393 291.4160
51  2026-04-14 23:57:08.687    105.0397           5 0.3300833 445.0755 2.187732 2.794491 291.4433
52  2026-04-14 23:57:09.484    105.0397           5 0.3300828 445.0948 2.188148 2.794562 291.4629
53  2026-04-14 23:57:09.815    105.0397           5 0.3296166 445.1027 2.188320 2.794591 291.4710
54  2026-04-14 23:57:10.936    105.0397           5 0.3280329 445.1298 2.188369 2.794690 291.4986
55  2026-04-14 23:57:11.710    105.0397           5 0.3280323 445.1485 2.188402 2.794759 291.5177
56  2026-04-14 23:57:12.365    105.0397           5 0.3282535 445.1643 2.188430 2.794817 291.5338
57  2026-04-14 23:57:13.132    105.0397           5 0.3285180 445.1854 2.188472 2.795206 291.4963
58  2026-04-14 23:57:14.217    105.0397           5 0.3288913 445.1702 2.188532 2.795756 291.4434
59  2026-04-14 23:57:15.032    105.0398           5 0.3288955 445.1588 2.188577 2.796169 291.4036
60  2026-04-14 23:57:15.375    105.0398           5 0.3272631 445.1540 2.188596 2.796343 291.3869
61  2026-04-14 23:57:16.552    105.0398           5 0.3216612 445.1376 2.188087 2.796940 291.3293
62  2026-04-14 23:57:17.332    105.0398           5 0.3216652 445.1267 2.187749 2.797335 291.2913
63  2026-04-14 23:57:17.996    105.0398           5 0.3240257 445.1174 2.187461 2.797672 291.2588
64  2026-04-14 23:57:18.795    105.0398           5 0.3268604 445.1138 2.187143 2.799017 291.2688
65  2026-04-14 23:57:19.858    105.0398           5 0.3306365 445.0597 2.186719 2.800809 291.2820
66  2026-04-14 23:57:20.638    105.0398           5 0.3306424 445.0200 2.186407 2.802126 291.2917
67  2026-04-14 23:57:20.976    105.0398           5 0.3317374 445.0028 2.186272 2.802696 291.2959
68  2026-04-14 23:57:22.161    105.0398           5 0.3355765 444.9426 2.186034 2.804695 291.3107
69  2026-04-14 23:57:22.960    105.0398           5 0.3355828 444.9020 2.185874 2.806043 291.3206
70  2026-04-14 23:57:23.622    105.0399           5 0.3335320 444.8683 2.185741 2.807159 291.3288
71  2026-04-14 23:57:24.394    105.0399           5 0.3311317 444.8137 2.185531 2.806550 291.3143
72  2026-04-14 23:57:25.450    105.0399           5 0.3278491 444.8360 2.185243 2.805715 291.2944
73  2026-04-14 23:57:26.260    105.0399           5 0.3278468 444.8531 2.185023 2.805074 291.2792
74  2026-04-14 23:57:26.594    105.0399           5 0.3272120 444.8601 2.184932 2.804810 291.2729
75  2026-04-14 23:57:27.762    105.0399           5 0.3249855 444.8847 2.184399 2.803886 291.2509
76  2026-04-14 23:57:28.563    105.0399           5 0.3249832 444.9016 2.184033 2.803252 291.2358
77  2026-04-14 23:57:29.233    105.0399           5 0.3255223 444.9157 2.183727 2.802722 291.2232
78  2026-04-14 23:57:30.020    105.0399           5 0.3261669 444.9514 2.183436 2.804473 291.2541
79  2026-04-14 23:57:31.095    105.0399           5 0.3270465 445.0006 2.183037 2.806861 291.2963
80  2026-04-14 23:57:31.888    105.0400           5 0.3270540 445.0369 2.182744 2.808623 291.3274
81  2026-04-14 23:57:32.247    105.0400           5 0.3254171 445.0533 2.182611 2.809420 291.3414
82  2026-04-14 23:57:33.394    105.0400           5 0.3201915 445.1058 2.181914 2.811967 291.3863
83  2026-04-14 23:57:34.187    105.0400           5 0.3201988 445.1421 2.181431 2.813731 291.4174
84  2026-04-14 23:57:34.841    105.0400           5 0.3224833 445.1720 2.181034 2.815182 291.4431
85  2026-04-14 23:57:35.611    105.0400           5 0.3251696 445.1902 2.180504 2.814772 291.4780
86  2026-04-14 23:57:36.720    105.0400           5 0.3290304 445.2778 2.179743 2.814180 291.5282
87  2026-04-14 23:57:37.499    105.0400           5 0.3290268 445.3394 2.179208 2.813764 291.5635
88  2026-04-14 23:57:37.832    105.0400           5 0.3270611 445.3658 2.178978 2.813585 291.5786
89  2026-04-14 23:57:39.003    105.0400           5 0.3201698 445.4584 2.178614 2.812960 291.6315
90  2026-04-14 23:57:39.786    105.0400           5 0.3201662 445.5203 2.178370 2.812542 291.6669
91  2026-04-14 23:57:40.441    105.0401           5 0.3219085 445.5722 2.178166 2.812191 291.6967
92  2026-04-14 23:57:41.240    105.0401           5 0.3240335 445.6363 2.177921 2.811881 291.6896
93  2026-04-14 23:57:42.322    105.0401           5 0.3269075 445.5708 2.177589 2.811465 291.6801
94  2026-04-14 23:57:43.102    105.0401           5 0.3269060 445.5235 2.177349 2.811164 291.6731
95  2026-04-14 23:57:43.437    105.0401           5 0.3277184 445.5032 2.177246 2.811036 291.6702
96  2026-04-14 23:57:44.582    105.0401           5 0.3305060 445.4338 2.177449 2.810595 291.6601
97  2026-04-14 23:57:45.377    105.0401           5 0.3305045 445.3857 2.177589 2.810289 291.6531
98  2026-04-14 23:57:46.039    105.0401           5 0.3285428 445.3456 2.177705 2.810034 291.6472
99  2026-04-14 23:57:46.816    105.0401           5 0.3262405 445.3015 2.177853 2.810108 291.6195
100 2026-04-14 23:57:47.917    105.0401           5 0.3229858 445.3017 2.178062 2.810211 291.5804
               datetime
1   2026-04-14 23:56:27
2   2026-04-14 23:56:28
3   2026-04-14 23:56:29
4   2026-04-14 23:56:30
5   2026-04-14 23:56:31
6   2026-04-14 23:56:32
7   2026-04-14 23:56:32
8   2026-04-14 23:56:33
9   2026-04-14 23:56:34
10  2026-04-14 23:56:35
11  2026-04-14 23:56:35
12  2026-04-14 23:56:36
13  2026-04-14 23:56:37
14  2026-04-14 23:56:38
15  2026-04-14 23:56:39
16  2026-04-14 23:56:40
17  2026-04-14 23:56:41
18  2026-04-14 23:56:41
19  2026-04-14 23:56:42
20  2026-04-14 23:56:43
21  2026-04-14 23:56:44
22  2026-04-14 23:56:44
23  2026-04-14 23:56:46
24  2026-04-14 23:56:46
25  2026-04-14 23:56:47
26  2026-04-14 23:56:48
27  2026-04-14 23:56:49
28  2026-04-14 23:56:49
29  2026-04-14 23:56:50
30  2026-04-14 23:56:51
31  2026-04-14 23:56:52
32  2026-04-14 23:56:52
33  2026-04-14 23:56:53
34  2026-04-14 23:56:54
35  2026-04-14 23:56:55
36  2026-04-14 23:56:56
37  2026-04-14 23:56:57
38  2026-04-14 23:56:58
39  2026-04-14 23:56:58
40  2026-04-14 23:56:59
41  2026-04-14 23:57:00
42  2026-04-14 23:57:01
43  2026-04-14 23:57:01
44  2026-04-14 23:57:03
45  2026-04-14 23:57:03
46  2026-04-14 23:57:04
47  2026-04-14 23:57:05
48  2026-04-14 23:57:06
49  2026-04-14 23:57:06
50  2026-04-14 23:57:07
51  2026-04-14 23:57:08
52  2026-04-14 23:57:09
53  2026-04-14 23:57:09
54  2026-04-14 23:57:10
55  2026-04-14 23:57:11
56  2026-04-14 23:57:12
57  2026-04-14 23:57:13
58  2026-04-14 23:57:14
59  2026-04-14 23:57:15
60  2026-04-14 23:57:15
61  2026-04-14 23:57:16
62  2026-04-14 23:57:17
63  2026-04-14 23:57:17
64  2026-04-14 23:57:18
65  2026-04-14 23:57:19
66  2026-04-14 23:57:20
67  2026-04-14 23:57:20
68  2026-04-14 23:57:22
69  2026-04-14 23:57:22
70  2026-04-14 23:57:23
71  2026-04-14 23:57:24
72  2026-04-14 23:57:25
73  2026-04-14 23:57:26
74  2026-04-14 23:57:26
75  2026-04-14 23:57:27
76  2026-04-14 23:57:28
77  2026-04-14 23:57:29
78  2026-04-14 23:57:30
79  2026-04-14 23:57:31
80  2026-04-14 23:57:31
81  2026-04-14 23:57:32
82  2026-04-14 23:57:33
83  2026-04-14 23:57:34
84  2026-04-14 23:57:34
85  2026-04-14 23:57:35
86  2026-04-14 23:57:36
87  2026-04-14 23:57:37
88  2026-04-14 23:57:37
89  2026-04-14 23:57:39
90  2026-04-14 23:57:39
91  2026-04-14 23:57:40
92  2026-04-14 23:57:41
93  2026-04-14 23:57:42
94  2026-04-14 23:57:43
95  2026-04-14 23:57:43
96  2026-04-14 23:57:44
97  2026-04-14 23:57:45
98  2026-04-14 23:57:46
99  2026-04-14 23:57:46
100 2026-04-14 23:57:47
 [ reached 'max' / getOption("max.print") -- omitted 104684 rows ]
#Filtrar por horario
filtrados_leitura1 = dados_leitura %>% filter(
    (datetime >= as.POSIXct("2026-04-15 09:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-04-15 12:56:00", tz = "America/Sao_Paulo")))                                      #aqui
print(filtrados_leitura1)                                                                                           #aqui
          DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
1   2026-04-15 09:00:00.302    105.4167           6 0.3217566 475.4381 2.280470 2.825441 195.4304
2   2026-04-15 09:00:01.078    105.4167           6 0.3217608 475.3730 2.280697 2.825593 195.3620
3   2026-04-15 09:00:01.736    105.4167           6 0.3195317 475.3179 2.280889 2.825721 195.3041
4   2026-04-15 09:00:02.496    105.4167           6 0.3169542 475.2595 2.281130 2.826495 195.2260
5   2026-04-15 09:00:03.558    105.4167           6 0.3133611 475.2594 2.281465 2.827570 195.1171
6   2026-04-15 09:00:04.345    105.4167           6 0.3133704 475.2594 2.281714 2.828369 195.0363
7   2026-04-15 09:00:04.683    105.4167           6 0.3163665 475.2594 2.281821 2.828711 195.0017
8   2026-04-15 09:00:05.855    105.4167           6 0.3267952 475.2593 2.282153 2.829900 194.8815
9   2026-04-15 09:00:06.638    105.4167           6 0.3268047 475.2593 2.282375 2.830693 194.8012
10  2026-04-15 09:00:07.306    105.4168           6 0.3245602 475.2592 2.282565 2.831372 194.7326
11  2026-04-15 09:00:08.102    105.4168           6 0.3218943 475.2683 2.282823 2.833236 194.6877
12  2026-04-15 09:00:09.191    105.4168           6 0.3182472 475.3510 2.283175 2.835785 194.6263
13  2026-04-15 09:00:10.003    105.4168           6 0.3182620 475.4126 2.283438 2.837686 194.5805
14  2026-04-15 09:00:10.339    105.4168           6 0.3219371 475.4381 2.283547 2.838473 194.5616
15  2026-04-15 09:00:11.484    105.4168           6 0.3344616 475.5250 2.283404 2.841153 194.4972
16  2026-04-15 09:00:12.275    105.4168           6 0.3344765 475.5850 2.283307 2.843003 194.4527
17  2026-04-15 09:00:12.905    105.4168           6 0.3313269 475.6329 2.283229 2.844481 194.4171
18  2026-04-15 09:00:13.663    105.4168           6 0.3275226 475.6561 2.283015 2.842264 194.3717
19  2026-04-15 09:00:14.736    105.4168           6 0.3221250 475.5939 2.282713 2.839123 194.3074
20  2026-04-15 09:00:15.542    105.4168           6 0.3221126 475.5473 2.282487 2.836768 194.2591
21  2026-04-15 09:00:15.877    105.4169           6 0.3220253 475.5279 2.282392 2.835788 194.2391
22  2026-04-15 09:00:17.006    105.4169           6 0.3217311 475.4625 2.282175 2.832484 194.1714
23  2026-04-15 09:00:17.786    105.4169           6 0.3217190 475.4174 2.282025 2.830204 194.1247
24  2026-04-15 09:00:18.463    105.4169           6 0.3217235 475.3783 2.281894 2.828224 194.0841
25  2026-04-15 09:00:19.252    105.4169           6 0.3217555 475.3670 2.281862 2.829918 194.0130
26  2026-04-15 09:00:20.348    105.4169           6 0.3218000 475.3506 2.281818 2.832276 193.9139
27  2026-04-15 09:00:21.148    105.4169           6 0.3218147 475.3386 2.281785 2.833993 193.8417
28  2026-04-15 09:00:21.484    105.4169           6 0.3210942 475.3335 2.281771 2.834718 193.8113
29  2026-04-15 09:00:22.618    105.4169           6 0.3186720 475.3166 2.281904 2.837154 193.7089
30  2026-04-15 09:00:23.407    105.4169           6 0.3186864 475.3047 2.281997 2.838852 193.6375
31  2026-04-15 09:00:24.073    105.4169           6 0.3204466 475.2948 2.282075 2.840284 193.5774
32  2026-04-15 09:00:24.865    105.4170           6 0.3225230 475.2633 2.282099 2.839704 193.4995
33  2026-04-15 09:00:25.977    105.4170           6 0.3254452 475.2857 2.282133 2.838885 193.3899
34  2026-04-15 09:00:26.799    105.4170           6 0.3254459 475.3022 2.282159 2.838281 193.3089
35  2026-04-15 09:00:27.134    105.4170           6 0.3260386 475.3089 2.282169 2.838034 193.2759
36  2026-04-15 09:00:28.275    105.4170           6 0.3280555 475.3318 2.281707 2.837196 193.1636
37  2026-04-15 09:00:29.055    105.4170           6 0.3280562 475.3475 2.281390 2.836621 193.0867
38  2026-04-15 09:00:29.732    105.4170           6 0.3258087 475.3611 2.281116 2.836124 193.0200
39  2026-04-15 09:00:30.536    105.4170           6 0.3231423 475.3862 2.280822 2.836582 192.9404
40  2026-04-15 09:00:31.627    105.4170           6 0.3195235 475.3268 2.280422 2.837205 192.8322
41  2026-04-15 09:00:32.434    105.4170           6 0.3195304 475.2828 2.280126 2.837667 192.7522
42  2026-04-15 09:00:32.789    105.4170           6 0.3208175 475.2635 2.279997 2.837869 192.7171
43  2026-04-15 09:00:33.940    105.4171           6 0.3250023 475.2008 2.280125 2.838527 192.6032
44  2026-04-15 09:00:34.723    105.4171           6 0.3250091 475.1581 2.280212 2.838974 192.5256
45  2026-04-15 09:00:35.394    105.4171           6 0.3225517 475.1215 2.280287 2.839357 192.4591
46  2026-04-15 09:00:36.188    105.4171           6 0.3196402 475.0813 2.280387 2.840173 192.4195
47  2026-04-15 09:00:37.279    105.4171           6 0.3156483 475.0436 2.280523 2.841290 192.3653
48  2026-04-15 09:00:38.086    105.4171           6 0.3156554 475.0156 2.280624 2.842118 192.3251
49  2026-04-15 09:00:38.421    105.4171           6 0.3175190 475.0040 2.280666 2.842460 192.3085
50  2026-04-15 09:00:39.588    105.4171           6 0.3240304 474.9635 2.280355 2.843656 192.2505
51  2026-04-15 09:00:40.388    105.4171           6 0.3240376 474.9358 2.280142 2.844477 192.2107
52  2026-04-15 09:00:41.049    105.4171           6 0.3262776 474.9129 2.279966 2.845154 192.1779
53  2026-04-15 09:00:41.828    105.4172           6 0.3289183 474.8826 2.279747 2.845566 192.1513
54  2026-04-15 09:00:42.900    105.4172           6 0.3325535 475.0085 2.279446 2.846129 192.1147
55  2026-04-15 09:00:43.703    105.4172           6 0.3325584 475.1028 2.279220 2.846550 192.0873
56  2026-04-15 09:00:44.042    105.4172           6 0.3318019 475.1427 2.279124 2.846729 192.0757
57  2026-04-15 09:00:45.171    105.4172           6 0.3292918 475.2752 2.279084 2.847321 192.0371
58  2026-04-15 09:00:45.947    105.4172           6 0.3292965 475.3665 2.279057 2.847729 192.0106
59  2026-04-15 09:00:46.615    105.4172           6 0.3282012 475.4449 2.279033 2.848079 191.9878
60  2026-04-15 09:00:47.401    105.4172           6 0.3269103 475.5268 2.278969 2.847290 191.8855
61  2026-04-15 09:00:48.486    105.4172           6 0.3251256 475.5403 2.278882 2.846201 191.7441
62  2026-04-15 09:00:49.283    105.4172           6 0.3251263 475.5502 2.278817 2.845400 191.6401
63  2026-04-15 09:00:49.640    105.4172           6 0.3249834 475.5546 2.278788 2.845043 191.5937
64  2026-04-15 09:00:50.778    105.4173           6 0.3245265 475.5688 2.278674 2.843901 191.4454
65  2026-04-15 09:00:51.556    105.4173           6 0.3245272 475.5785 2.278595 2.843120 191.3439
66  2026-04-15 09:00:52.239    105.4173           6 0.3251683 475.5870 2.278527 2.842435 191.2550
67  2026-04-15 09:00:53.056    105.4173           6 0.3259399 475.6120 2.278496 2.843343 191.2997
68  2026-04-15 09:00:54.150    105.4173           6 0.3269699 475.4796 2.278456 2.844560 191.3594
69  2026-04-15 09:00:54.943    105.4173           6 0.3269725 475.3836 2.278426 2.845443 191.4027
70  2026-04-15 09:00:55.293    105.4173           6 0.3279528 475.3410 2.278413 2.845834 191.4219
71  2026-04-15 09:00:56.443    105.4173           6 0.3311620 475.2018 2.278235 2.847113 191.4846
72  2026-04-15 09:00:57.227    105.4173           6 0.3311646 475.1067 2.278114 2.847987 191.5275
73  2026-04-15 09:00:57.898    105.4173           6 0.3304053 475.0256 2.278010 2.848734 191.5641
74  2026-04-15 09:00:58.684    105.4173           6 0.3295179 474.9205 2.277854 2.848465 191.4119
75  2026-04-15 09:00:59.763    105.4174           6 0.3283001 475.0149 2.277640 2.848088 191.2028
76  2026-04-15 09:01:00.558    105.4174           6 0.3283074 475.0844 2.277482 2.847811 191.0491
77  2026-04-15 09:01:00.904    105.4174           6 0.3281871 475.1147 2.277413 2.847690 190.9819
78  2026-04-15 09:01:02.032    105.4174           6 0.3277963 475.2134 2.277550 2.847297 190.7636
79  2026-04-15 09:01:02.811    105.4174           6 0.3278034 475.2814 2.277645 2.847025 190.6129
80  2026-04-15 09:01:03.486    105.4174           6 0.3278312 475.3404 2.277727 2.846790 190.4823
81  2026-04-15 09:01:04.289    105.4174           6 0.3278566 475.4105 2.277824 2.846490 190.4655
82  2026-04-15 09:01:05.351    105.4174           6 0.3278895 475.4179 2.277953 2.846094 190.4432
83  2026-04-15 09:01:06.128    105.4174           6 0.3278886 475.4232 2.278046 2.845805 190.4269
84  2026-04-15 09:01:06.479    105.4174           6 0.3277621 475.4257 2.278089 2.845675 190.4196
85  2026-04-15 09:01:07.631    105.4174           6 0.3273458 475.4336 2.277986 2.845247 190.3954
86  2026-04-15 09:01:08.421    105.4175           6 0.3273449 475.4391 2.277915 2.844953 190.3789
87  2026-04-15 09:01:09.072    105.4175           6 0.3272608 475.4435 2.277857 2.844711 190.3652
88  2026-04-15 09:01:09.871    105.4175           6 0.3271679 475.4571 2.277814 2.845352 190.2699
89  2026-04-15 09:01:10.963    105.4175           6 0.3270403 475.3797 2.277755 2.846230 190.1397
90  2026-04-15 09:01:11.767    105.4175           6 0.3270494 475.3227 2.277711 2.846878 190.0437
91  2026-04-15 09:01:12.107    105.4175           6 0.3266513 475.2987 2.277693 2.847150 190.0033
92  2026-04-15 09:01:13.256    105.4175           6 0.3253007 475.2172 2.277547 2.848075 189.8661
93  2026-04-15 09:01:14.035    105.4175           6 0.3253094 475.1621 2.277449 2.848701 189.7733
94  2026-04-15 09:01:14.713    105.4175           6 0.3262921 475.1140 2.277363 2.849248 189.6923
95  2026-04-15 09:01:15.517    105.4175           6 0.3274407 475.0428 2.277211 2.848235 189.6731
96  2026-04-15 09:01:16.578    105.4176           6 0.3289569 475.0191 2.277012 2.846896 189.6478
97  2026-04-15 09:01:17.388    105.4176           6 0.3289512 475.0011 2.276859 2.845874 189.6284
98  2026-04-15 09:01:17.732    105.4176           6 0.3271508 474.9934 2.276795 2.845441 189.6202
99  2026-04-15 09:01:18.871    105.4176           6 0.3211726 474.9680 2.276685 2.844004 189.5929
100 2026-04-15 09:01:19.655    105.4176           6 0.3211673 474.9506 2.276609 2.843014 189.5741
               datetime
1   2026-04-15 09:00:00
2   2026-04-15 09:00:01
3   2026-04-15 09:00:01
4   2026-04-15 09:00:02
5   2026-04-15 09:00:03
6   2026-04-15 09:00:04
7   2026-04-15 09:00:04
8   2026-04-15 09:00:05
9   2026-04-15 09:00:06
10  2026-04-15 09:00:07
11  2026-04-15 09:00:08
12  2026-04-15 09:00:09
13  2026-04-15 09:00:10
14  2026-04-15 09:00:10
15  2026-04-15 09:00:11
16  2026-04-15 09:00:12
17  2026-04-15 09:00:12
18  2026-04-15 09:00:13
19  2026-04-15 09:00:14
20  2026-04-15 09:00:15
21  2026-04-15 09:00:15
22  2026-04-15 09:00:17
23  2026-04-15 09:00:17
24  2026-04-15 09:00:18
25  2026-04-15 09:00:19
26  2026-04-15 09:00:20
27  2026-04-15 09:00:21
28  2026-04-15 09:00:21
29  2026-04-15 09:00:22
30  2026-04-15 09:00:23
31  2026-04-15 09:00:24
32  2026-04-15 09:00:24
33  2026-04-15 09:00:25
34  2026-04-15 09:00:26
35  2026-04-15 09:00:27
36  2026-04-15 09:00:28
37  2026-04-15 09:00:29
38  2026-04-15 09:00:29
39  2026-04-15 09:00:30
40  2026-04-15 09:00:31
41  2026-04-15 09:00:32
42  2026-04-15 09:00:32
43  2026-04-15 09:00:33
44  2026-04-15 09:00:34
45  2026-04-15 09:00:35
46  2026-04-15 09:00:36
47  2026-04-15 09:00:37
48  2026-04-15 09:00:38
49  2026-04-15 09:00:38
50  2026-04-15 09:00:39
51  2026-04-15 09:00:40
52  2026-04-15 09:00:41
53  2026-04-15 09:00:41
54  2026-04-15 09:00:42
55  2026-04-15 09:00:43
56  2026-04-15 09:00:44
57  2026-04-15 09:00:45
58  2026-04-15 09:00:45
59  2026-04-15 09:00:46
60  2026-04-15 09:00:47
61  2026-04-15 09:00:48
62  2026-04-15 09:00:49
63  2026-04-15 09:00:49
64  2026-04-15 09:00:50
65  2026-04-15 09:00:51
66  2026-04-15 09:00:52
67  2026-04-15 09:00:53
68  2026-04-15 09:00:54
69  2026-04-15 09:00:54
70  2026-04-15 09:00:55
71  2026-04-15 09:00:56
72  2026-04-15 09:00:57
73  2026-04-15 09:00:57
74  2026-04-15 09:00:58
75  2026-04-15 09:00:59
76  2026-04-15 09:01:00
77  2026-04-15 09:01:00
78  2026-04-15 09:01:02
79  2026-04-15 09:01:02
80  2026-04-15 09:01:03
81  2026-04-15 09:01:04
82  2026-04-15 09:01:05
83  2026-04-15 09:01:06
84  2026-04-15 09:01:06
85  2026-04-15 09:01:07
86  2026-04-15 09:01:08
87  2026-04-15 09:01:09
88  2026-04-15 09:01:09
89  2026-04-15 09:01:10
90  2026-04-15 09:01:11
91  2026-04-15 09:01:12
92  2026-04-15 09:01:13
93  2026-04-15 09:01:14
94  2026-04-15 09:01:14
95  2026-04-15 09:01:15
96  2026-04-15 09:01:16
97  2026-04-15 09:01:17
98  2026-04-15 09:01:17
99  2026-04-15 09:01:18
100 2026-04-15 09:01:19
 [ reached 'max' / getOption("max.print") -- omitted 17186 rows ]
range(filtrados_leitura1$datetime)                                                                                  #aqui
[1] "2026-04-15 09:00:00 -03" "2026-04-15 12:55:59 -03"
# Carregar ID da leitura
ID.leitura1=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 1/ID leitura1.csv")                                                      #aqui
str(ID.leitura1)                                                                                                    #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : num  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Date                : chr  "15/04/2026" "15/04/2026" "15/04/2026" "15/04/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "09:09" "09:16" "09:23" "09:30" ...
 $ End.reading         : chr  "09:12" "09:19" "09:26" "09:33" ...
 $ External.temperature: num  22.9 22.5 22.1 22.8 22.4 22.8 21.5 21.3 21.7 20.6 ...
 $ Internal.temperature: num  25.5 24.6 25.1 25.3 23.8 24.8 25.1 25.1 25 25.5 ...
print(ID.leitura1)                                                                                                  #aqui
   Bottle                                            Tratamento Abreviacao Bloco Rep Leitura       Date Solo.Seco
1       1                                Controle - Apenas água        CON     1   1       1 15/04/2026    246.61
2       2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1   1       1 15/04/2026    246.39
3       3            Fezes ovinas tratadas com oleo de girassol        FOG     1   1       1 15/04/2026    246.21
4       4                                        Água ozonizada        AO3     1   1       1 15/04/2026    246.31
5       5                             Adubo nitrogenado (ureia)       NMIN     1   1       1 15/04/2026    246.29
6       6                                Controle - Apenas água        CON     2   2       1 15/04/2026    246.26
7       7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2   2       1 15/04/2026    246.14
8       8            Fezes ovinas tratadas com oleo de girassol        FOG     2   2       1 15/04/2026    246.21
9       9                                        Água ozonizada        AO3     2   2       1 15/04/2026    246.14
10     10                                     Adubo nitrogenado       NMIN     2   2       1 15/04/2026    246.35
11     11                                Controle - Apenas água        CON     3   3       1 15/04/2026    246.26
12     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3   3       1 15/04/2026    246.30
13     13            Fezes ovinas tratadas com oleo de girassol        FOG     3   3       1 15/04/2026    246.38
14     14                                        Água ozonizada        AO3     3   3       1 15/04/2026    246.37
15     15                                     Adubo nitrogenado       NMIN     3   3       1 15/04/2026    246.15
16     16                                Controle - Apenas água        CON     4   4       1 15/04/2026    246.50
17     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4   4       1 15/04/2026    246.36
18     18            Fezes ovinas tratadas com oleo de girassol        FOG     4   4       1 15/04/2026    246.30
19     19                                        Água ozonizada        AO3     4   4       1 15/04/2026    246.25
20     20                                     Adubo nitrogenado       NMIN     4   4       1 15/04/2026    246.34
21     21                                Controle - Apenas água        CON     5   5       1 15/04/2026    246.23
22     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5   5       1 15/04/2026    246.18
23     23            Fezes ovinas tratadas com oleo de girassol        FOG     5   5       1 15/04/2026    246.21
24     24                                        Água ozonizada        AO3     5   5       1 15/04/2026    246.31
25     25                                     Adubo nitrogenado       NMIN     5   5       1 15/04/2026    246.35
26     26                                Controle - Apenas água        CON     6   6       1 15/04/2026    246.25
27     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6   6       1 15/04/2026    246.25
28     28            Fezes ovinas tratadas com oleo de girassol        FOG     6   6       1 15/04/2026    246.36
29     29                                        Água ozonizada        AO3     6   6       1 15/04/2026    246.23
30     30                                     Adubo nitrogenado       NMIN     6   6       1 15/04/2026    246.35
   Beginning.reading End.reading External.temperature Internal.temperature
1              09:09       09:12                 22.9                 25.5
2              09:16       09:19                 22.5                 24.6
3              09:23       09:26                 22.1                 25.1
4              09:30       09:33                 22.8                 25.3
5              09:51       09:54                 22.4                 23.8
6              09:44       09:47                 22.8                 24.8
7              09:58       10:01                 21.5                 25.1
8              10:05       10:08                 21.3                 25.1
9              10:12       10:15                 21.7                 25.0
10             10:19       10:22                 20.6                 25.5
11             10:26       10:29                 22.3                 25.3
12             10:33       10:36                 22.1                 25.1
13             10:40       10:43                 21.4                 25.0
14             10:47       10:50                 21.3                 25.3
15             10:54       10:57                 21.5                 25.6
16             11:01       11:04                 21.3                 25.1
17             11:08       11:11                 21.6                 25.1
18             11:15       11:18                 21.5                 25.0
19             11:22       11:25                 21.6                 25.3
20             11:50       11:53                 21.3                 24.8
21             11:36       11:39                 20.7                 25.3
22             11:43       11:46                 21.9                 25.1
23             11:57       12:00                 22.3                 25.1
24             12:04       12:07                 21.7                 25.3
25             12:11       12:14                 22.3                 25.3
26             12:18       12:21                 21.7                 25.2
27             12:25       12:28                 20.9                 25.2
28             12:32       12:35                 21.1                 25.0
29             12:53       12:56                 20.9                 24.4
30             12:46       12:49                 21.5                 24.8


Leitura 2 - 16/04/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 2"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura2 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-04-16 08:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-04-16 14:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura2)                                                                                           #aqui
range(filtrados_leitura2$datetime)                                                                                  #aqui
[1] "2026-04-16 08:00:00 -03" "2026-04-16 13:59:59 -03"
# Carregar ID da leitura
ID.leitura2=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 2/ID leitura2.csv")                                                      #aqui
str(ID.leitura2)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : num  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  2 2 2 2 2 2 2 2 2 2 ...
 $ Date                : chr  "16/04/2026" "16/04/2026" "16/04/2026" "16/04/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "08:49" "08:56" "09:03" "09:10" ...
 $ End.reading         : chr  "08:52" "08:59" "09:06" "09:13" ...
 $ External.temperature: num  24.1 24.1 24.4 24.3 24.3 24.3 23.8 22.1 21.8 22.6 ...
 $ Internal.temperature: num  24.9 25.3 25.2 25.3 25.5 25.3 25.5 25.2 25.3 25.3 ...
head(ID.leitura2)                                                                                                  #aqui


Leitura 3 - 17/04/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 3"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura3 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-04-17 09:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-04-17 13:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura3)                                                                                            #aqui
range(filtrados_leitura3$datetime)                                                                                  #aqui
[1] "2026-04-17 09:00:01 -03" "2026-04-17 12:59:59 -03"
# Carregar ID da leitura
ID.leitura3=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 3/ID leitura3.csv")                                                      #aqui
str(ID.leitura3)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : num  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Date                : chr  "17/04/2026" "17/04/2026" "17/04/2026" "17/04/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "09:09" "09:16" "09:23" "09:30" ...
 $ End.reading         : chr  "09:12" "09:19" "09:26" "09:33" ...
 $ External.temperature: num  22.8 21.8 21.8 21.9 22 20.8 21.1 21.9 20.8 21.3 ...
 $ Internal.temperature: num  25.1 24.9 25 25.3 25.3 25.2 25.6 25.5 25.3 25.3 ...
head(ID.leitura3)                                                                                                  #aqui


Leitura 4 - 19/04/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 4"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura4 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-04-19 09:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-04-19 14:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura4)                                                                                            #aqui
range(filtrados_leitura4$datetime)                                                                                  #aqui
[1] "2026-04-19 09:00:00 -03" "2026-04-19 13:59:59 -03"
# Carregar ID da leitura
ID.leitura4=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 4/ID leitura4.csv")                                                      #aqui
str(ID.leitura4)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  4 4 4 4 4 4 4 4 4 4 ...
 $ Date                : chr  "19/04/2026" "19/04/2026" "19/04/2026" "19/04/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "09:31" "09:38" "09:45" "09:52" ...
 $ End.reading         : chr  "09:34" "09:41" "09:48" "09:55" ...
 $ External.temperature: num  23.1 21.5 22.3 21.9 20.9 21.9 20.9 21.9 22.5 20.5 ...
 $ Internal.temperature: num  25.2 25 25.5 25.3 25.1 25.3 25.2 25.2 25.3 25.3 ...
head(ID.leitura4)                                                                                                  #aqui


Leitura 5 - 22/04/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 5"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura5 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-04-22 08:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-04-22 12:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura5)                                                                                            #aqui
range(filtrados_leitura5$datetime)                                                                                  #aqui
[1] "2026-04-22 08:00:00 -03" "2026-04-22 11:59:59 -03"
# Carregar ID da leitura
ID.leitura5=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 5/ID leitura5.csv")                                                      #aqui
str(ID.leitura5)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  5 5 5 5 5 5 5 5 5 5 ...
 $ Date                : chr  "22/04/2026" "22/04/2026" "22/04/2026" "22/04/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "08:22" "08:29" "08:36" "08:43" ...
 $ End.reading         : chr  "08:25" "08:32" "08:39" "08:46" ...
 $ External.temperature: num  22.8 20.6 21.3 21 20.8 21.5 20.1 20.8 20.6 20.8 ...
 $ Internal.temperature: num  25 25.2 25.3 25.2 25.2 25.4 25.1 25.3 25.1 25.5 ...
head(ID.leitura5)                                                                                                  #aqui


Leitura 6 - 27/04/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 6"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura6 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-04-27 09:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-04-27 13:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura6)                                                                                            #aqui
range(filtrados_leitura6$datetime)                                                                                  #aqui
[1] "2026-04-27 09:00:00 -03" "2026-04-27 12:59:59 -03"
# Carregar ID da leitura
ID.leitura6=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 6/ID leitura6.csv")                                                      #aqui
str(ID.leitura6)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : num  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  6 6 6 6 6 6 6 6 6 6 ...
 $ Date                : chr  "27/04/2026" "27/04/2026" "27/04/2026" "27/04/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "09:06" "09:13" "09:20" "09:27" ...
 $ End.reading         : chr  "09:09" "09:16" "09:23" "09:30" ...
 $ External.temperature: num  23.1 22.4 23.1 22.3 20.7 20.9 20.5 20.9 20.1 21.9 ...
 $ Internal.temperature: num  25.3 25.3 25.5 25.5 25.3 25.5 25.4 25.2 25.2 25.1 ...
head(ID.leitura6)                                                                                                  #aqui


Leitura 7 - 05/05/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 7"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura7 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-05-05 10:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-05-05 14:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura7)                                                                                            #aqui
range(filtrados_leitura7$datetime)                                                                                  #aqui
[1] "2026-05-05 10:00:00 -03" "2026-05-05 13:59:59 -03"
# Carregar ID da leitura
ID.leitura7=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 7/ID leitura7.csv")                                                      #aqui
str(ID.leitura7)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : num  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  7 7 7 7 7 7 7 7 7 7 ...
 $ Date                : chr  "05/05/2026" "05/05/2026" "05/05/2026" "05/05/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "10:12" "10:19" "10:25" "10:33" ...
 $ End.reading         : chr  "10:15" "10:22" "10:28" "10:36" ...
 $ External.temperature: num  23.6 22.4 22.4 22.6 20.9 22.1 22.3 20.7 21.8 21.6 ...
 $ Internal.temperature: num  25.1 25.1 25.2 25.3 25.3 25.5 25.4 25.3 25.5 25.3 ...
head(ID.leitura7)                                                                                                  #aqui


Leitura 8 - 18/05/2026



# Caminho dos arquivos .dat
file_leitura = "C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 8"                                                                        #aqui
# Obter a lista de arquivos .dat
file_list_leitura = list.files(file_leitura, pattern = ".dat", full.names = TRUE)
# Ler os dados de todos os arquivos
data_list_leitura = lapply(file_list_leitura, read.table, header = TRUE, sep = "",fill = TRUE)
# Juntar os dados
dados_leitura = do.call(rbind, data_list_leitura)
# Excluir colunas desnecessarias
dados_leitura = subset(dados_leitura, select = c("DATE","TIME","JULIAN_DAYS","MPVPosition","N2O_dry","CO2_dry","CH4_dry","H2O","NH3"))
#Criar datetime
dados_leitura = dados_leitura %>% mutate(datetime = as.POSIXct(paste(DATE, TIME),
  format = "%Y-%m-%d %H:%M:%OS", tz = "America/Sao_Paulo"))
#Filtrar por horario
filtrados_leitura8 = dados_leitura %>% filter(                                                                      #aqui
    (datetime >= as.POSIXct("2026-05-18 08:00:00", tz = "America/Sao_Paulo") &                                      #aqui
     datetime <= as.POSIXct("2026-05-18 13:00:00", tz = "America/Sao_Paulo")))                                      #aqui
head(filtrados_leitura8)                                                                                            #aqui
range(filtrados_leitura8$datetime)                                                                                  #aqui
[1] "2026-05-18 08:00:00 -03" "2026-05-18 12:59:59 -03"
# Carregar ID da leitura
ID.leitura8=read.csv("C:/Users/Samsung/OneDrive/Documentos/2 - Material de trabalho/5 - Atividades Didáticas/5.5 - Orientação/Mestrado/Isabelle/Data/Leitura 8/ID leitura8.csv")                                                      #aqui
str(ID.leitura8)                                                                                                   #aqui
'data.frame':   30 obs. of  12 variables:
 $ Bottle              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento          : chr  "Controle - Apenas água" "Fezes ovinas tratadas com oleo de girassol ozonizado " "Fezes ovinas tratadas com oleo de girassol" "Água ozonizada" ...
 $ Abreviacao          : chr  "CON" "FOGO3" "FOG" "AO3" ...
 $ Bloco               : int  1 1 1 1 1 2 2 2 2 2 ...
 $ Rep                 : num  1 1 1 1 1 2 2 2 2 2 ...
 $ Leitura             : int  8 8 8 8 8 8 8 8 8 8 ...
 $ Date                : chr  "18/05/2026" "18/05/2026" "18/05/2026" "18/05/2026" ...
 $ Solo.Seco           : num  247 246 246 246 246 ...
 $ Beginning.reading   : chr  "09:00" "09:07" "09:14" "09:21" ...
 $ End.reading         : chr  "09:03" "09:10" "09:17" "09:24" ...
 $ External.temperature: num  23.5 22.3 21.6 22.5 23.6 22.4 22.8 22.1 22.5 21.7 ...
 $ Internal.temperature: num  24.9 24.8 25.1 25 25.1 25.3 25.3 25.1 25.1 25.1 ...
head(ID.leitura8)                                                                                                  #aqui


2 - Identificar leituras dos frascos e background



Leitura 1 - 15/04/2026



library(data.table)
########################### PREPARAR DADOS ###########################
dados1 = as.data.table(filtrados_leitura1)
id = as.data.table(ID.leitura1)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       1 15/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       1 15/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       1 15/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       1 15/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       1 15/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       1 15/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       1 15/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       1 15/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       1 15/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       1 15/04/2026
11:     11                                Controle - Apenas água        CON     3     3       1 15/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       1 15/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       1 15/04/2026
14:     14                                        Água ozonizada        AO3     3     3       1 15/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       1 15/04/2026
16:     16                                Controle - Apenas água        CON     4     4       1 15/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       1 15/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       1 15/04/2026
19:     19                                        Água ozonizada        AO3     4     4       1 15/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       1 15/04/2026
21:     21                                Controle - Apenas água        CON     5     5       1 15/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       1 15/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       1 15/04/2026
24:     24                                        Água ozonizada        AO3     5     5       1 15/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       1 15/04/2026
26:     26                                Controle - Apenas água        CON     6     6       1 15/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       1 15/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       1 15/04/2026
29:     29                                        Água ozonizada        AO3     6     6       1 15/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       1 15/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:09       09:12                 22.9                 25.5 2026-04-15 09:09:00
 2:    246.39             09:16       09:19                 22.5                 24.6 2026-04-15 09:16:00
 3:    246.21             09:23       09:26                 22.1                 25.1 2026-04-15 09:23:00
 4:    246.31             09:30       09:33                 22.8                 25.3 2026-04-15 09:30:00
 5:    246.29             09:51       09:54                 22.4                 23.8 2026-04-15 09:51:00
 6:    246.26             09:44       09:47                 22.8                 24.8 2026-04-15 09:44:00
 7:    246.14             09:58       10:01                 21.5                 25.1 2026-04-15 09:58:00
 8:    246.21             10:05       10:08                 21.3                 25.1 2026-04-15 10:05:00
 9:    246.14             10:12       10:15                 21.7                 25.0 2026-04-15 10:12:00
10:    246.35             10:19       10:22                 20.6                 25.5 2026-04-15 10:19:00
11:    246.26             10:26       10:29                 22.3                 25.3 2026-04-15 10:26:00
12:    246.30             10:33       10:36                 22.1                 25.1 2026-04-15 10:33:00
13:    246.38             10:40       10:43                 21.4                 25.0 2026-04-15 10:40:00
14:    246.37             10:47       10:50                 21.3                 25.3 2026-04-15 10:47:00
15:    246.15             10:54       10:57                 21.5                 25.6 2026-04-15 10:54:00
16:    246.50             11:01       11:04                 21.3                 25.1 2026-04-15 11:01:00
17:    246.36             11:08       11:11                 21.6                 25.1 2026-04-15 11:08:00
18:    246.30             11:15       11:18                 21.5                 25.0 2026-04-15 11:15:00
19:    246.25             11:22       11:25                 21.6                 25.3 2026-04-15 11:22:00
20:    246.34             11:50       11:53                 21.3                 24.8 2026-04-15 11:50:00
21:    246.23             11:36       11:39                 20.7                 25.3 2026-04-15 11:36:00
22:    246.18             11:43       11:46                 21.9                 25.1 2026-04-15 11:43:00
23:    246.21             11:57       12:00                 22.3                 25.1 2026-04-15 11:57:00
24:    246.31             12:04       12:07                 21.7                 25.3 2026-04-15 12:04:00
25:    246.35             12:11       12:14                 22.3                 25.3 2026-04-15 12:11:00
26:    246.25             12:18       12:21                 21.7                 25.2 2026-04-15 12:18:00
27:    246.25             12:25       12:28                 20.9                 25.2 2026-04-15 12:25:00
28:    246.36             12:32       12:35                 21.1                 25.0 2026-04-15 12:32:00
29:    246.23             12:53       12:56                 20.9                 24.4 2026-04-15 12:53:00
30:    246.35             12:46       12:49                 21.5                 24.8 2026-04-15 12:46:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       1 15/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       1 15/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       1 15/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       1 15/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       1 15/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       1 15/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       1 15/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       1 15/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       1 15/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       1 15/04/2026
11:     11                                Controle - Apenas água        CON     3     3       1 15/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       1 15/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       1 15/04/2026
14:     14                                        Água ozonizada        AO3     3     3       1 15/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       1 15/04/2026
16:     16                                Controle - Apenas água        CON     4     4       1 15/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       1 15/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       1 15/04/2026
19:     19                                        Água ozonizada        AO3     4     4       1 15/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       1 15/04/2026
21:     21                                Controle - Apenas água        CON     5     5       1 15/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       1 15/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       1 15/04/2026
24:     24                                        Água ozonizada        AO3     5     5       1 15/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       1 15/04/2026
26:     26                                Controle - Apenas água        CON     6     6       1 15/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       1 15/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       1 15/04/2026
29:     29                                        Água ozonizada        AO3     6     6       1 15/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       1 15/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:09       09:12                 22.9                 25.5 2026-04-15 09:09:00
 2:    246.39             09:16       09:19                 22.5                 24.6 2026-04-15 09:16:00
 3:    246.21             09:23       09:26                 22.1                 25.1 2026-04-15 09:23:00
 4:    246.31             09:30       09:33                 22.8                 25.3 2026-04-15 09:30:00
 5:    246.29             09:51       09:54                 22.4                 23.8 2026-04-15 09:51:00
 6:    246.26             09:44       09:47                 22.8                 24.8 2026-04-15 09:44:00
 7:    246.14             09:58       10:01                 21.5                 25.1 2026-04-15 09:58:00
 8:    246.21             10:05       10:08                 21.3                 25.1 2026-04-15 10:05:00
 9:    246.14             10:12       10:15                 21.7                 25.0 2026-04-15 10:12:00
10:    246.35             10:19       10:22                 20.6                 25.5 2026-04-15 10:19:00
11:    246.26             10:26       10:29                 22.3                 25.3 2026-04-15 10:26:00
12:    246.30             10:33       10:36                 22.1                 25.1 2026-04-15 10:33:00
13:    246.38             10:40       10:43                 21.4                 25.0 2026-04-15 10:40:00
14:    246.37             10:47       10:50                 21.3                 25.3 2026-04-15 10:47:00
15:    246.15             10:54       10:57                 21.5                 25.6 2026-04-15 10:54:00
16:    246.50             11:01       11:04                 21.3                 25.1 2026-04-15 11:01:00
17:    246.36             11:08       11:11                 21.6                 25.1 2026-04-15 11:08:00
18:    246.30             11:15       11:18                 21.5                 25.0 2026-04-15 11:15:00
19:    246.25             11:22       11:25                 21.6                 25.3 2026-04-15 11:22:00
20:    246.34             11:50       11:53                 21.3                 24.8 2026-04-15 11:50:00
21:    246.23             11:36       11:39                 20.7                 25.3 2026-04-15 11:36:00
22:    246.18             11:43       11:46                 21.9                 25.1 2026-04-15 11:43:00
23:    246.21             11:57       12:00                 22.3                 25.1 2026-04-15 11:57:00
24:    246.31             12:04       12:07                 21.7                 25.3 2026-04-15 12:04:00
25:    246.35             12:11       12:14                 22.3                 25.3 2026-04-15 12:11:00
26:    246.25             12:18       12:21                 21.7                 25.2 2026-04-15 12:18:00
27:    246.25             12:25       12:28                 20.9                 25.2 2026-04-15 12:25:00
28:    246.36             12:32       12:35                 21.1                 25.0 2026-04-15 12:32:00
29:    246.23             12:53       12:56                 20.9                 24.4 2026-04-15 12:53:00
30:    246.35             12:46       12:49                 21.5                 24.8 2026-04-15 12:46:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-04-15 09:12:00
 2: 2026-04-15 09:19:00
 3: 2026-04-15 09:26:00
 4: 2026-04-15 09:33:00
 5: 2026-04-15 09:54:00
 6: 2026-04-15 09:47:00
 7: 2026-04-15 10:01:00
 8: 2026-04-15 10:08:00
 9: 2026-04-15 10:15:00
10: 2026-04-15 10:22:00
11: 2026-04-15 10:29:00
12: 2026-04-15 10:36:00
13: 2026-04-15 10:43:00
14: 2026-04-15 10:50:00
15: 2026-04-15 10:57:00
16: 2026-04-15 11:04:00
17: 2026-04-15 11:11:00
18: 2026-04-15 11:18:00
19: 2026-04-15 11:25:00
20: 2026-04-15 11:53:00
21: 2026-04-15 11:39:00
22: 2026-04-15 11:46:00
23: 2026-04-15 12:00:00
24: 2026-04-15 12:07:00
25: 2026-04-15 12:14:00
26: 2026-04-15 12:21:00
27: 2026-04-15 12:28:00
28: 2026-04-15 12:35:00
29: 2026-04-15 12:56:00
30: 2026-04-15 12:49:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura1 = copy(dados1)
leitura1[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-15 09:00:00.302    105.4167           6 0.3217566 475.4381 2.280470 2.825441 195.4304
    2: 2026-04-15 09:00:01.078    105.4167           6 0.3217608 475.3730 2.280697 2.825593 195.3620
    3: 2026-04-15 09:00:01.736    105.4167           6 0.3195317 475.3179 2.280889 2.825721 195.3041
    4: 2026-04-15 09:00:02.496    105.4167           6 0.3169542 475.2595 2.281130 2.826495 195.2260
    5: 2026-04-15 09:00:03.558    105.4167           6 0.3133611 475.2594 2.281465 2.827570 195.1171
   ---                                                                                              
17282: 2026-04-15 12:55:56.891    105.5805           1 0.3281264 568.5016 2.942714 4.671953 202.7369
17283: 2026-04-15 12:55:57.677    105.5805           1 0.3305572 568.6779 2.942535 4.684007 203.1691
17284: 2026-04-15 12:55:58.753    105.5805           1 0.3338910 569.1185 2.942289 4.700526 203.7612
17285: 2026-04-15 12:55:59.581    105.5806           1 0.3339351 569.4571 2.942101 4.713218 204.2159
17286: 2026-04-15 12:55:59.910    105.5806           1 0.3339171 569.5919 2.942026 4.718269 204.3968
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-15 09:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-15 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-15 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-15 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-15 09:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
17282: 2026-04-15 12:55:56     NA       <NA>    NA    NA      NA        NA                   NA
17283: 2026-04-15 12:55:57     NA       <NA>    NA    NA      NA        NA                   NA
17284: 2026-04-15 12:55:58     NA       <NA>    NA    NA      NA        NA                   NA
17285: 2026-04-15 12:55:59     NA       <NA>    NA    NA      NA        NA                   NA
17286: 2026-04-15 12:55:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura1[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-15 09:00:00.302    105.4167           6 0.3217566 475.4381 2.280470 2.825441 195.4304
    2: 2026-04-15 09:00:01.078    105.4167           6 0.3217608 475.3730 2.280697 2.825593 195.3620
    3: 2026-04-15 09:00:01.736    105.4167           6 0.3195317 475.3179 2.280889 2.825721 195.3041
    4: 2026-04-15 09:00:02.496    105.4167           6 0.3169542 475.2595 2.281130 2.826495 195.2260
    5: 2026-04-15 09:00:03.558    105.4167           6 0.3133611 475.2594 2.281465 2.827570 195.1171
   ---                                                                                              
17282: 2026-04-15 12:55:56.891    105.5805           1 0.3281264 568.5016 2.942714 4.671953 202.7369
17283: 2026-04-15 12:55:57.677    105.5805           1 0.3305572 568.6779 2.942535 4.684007 203.1691
17284: 2026-04-15 12:55:58.753    105.5805           1 0.3338910 569.1185 2.942289 4.700526 203.7612
17285: 2026-04-15 12:55:59.581    105.5806           1 0.3339351 569.4571 2.942101 4.713218 204.2159
17286: 2026-04-15 12:55:59.910    105.5806           1 0.3339171 569.5919 2.942026 4.718269 204.3968
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-15 09:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-15 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-15 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-15 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-15 09:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
17282: 2026-04-15 12:55:56     29        AO3     6     6       1    246.23                 24.4
17283: 2026-04-15 12:55:57     29        AO3     6     6       1    246.23                 24.4
17284: 2026-04-15 12:55:58     29        AO3     6     6       1    246.23                 24.4
17285: 2026-04-15 12:55:59     29        AO3     6     6       1    246.23                 24.4
17286: 2026-04-15 12:55:59     29        AO3     6     6       1    246.23                 24.4
# Manter apenas as leituras válidas dos frascos
leitura1 = leitura1[MPVPosition == 1 & !is.na(Bottle)]
View(leitura1)


Leitura 2 - 16/04/2026



########################### PREPARAR DADOS ###########################
dados2 = as.data.table(filtrados_leitura2)
id = as.data.table(ID.leitura2)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       2 16/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       2 16/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       2 16/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       2 16/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       2 16/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       2 16/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       2 16/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       2 16/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       2 16/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       2 16/04/2026
11:     11                                Controle - Apenas água        CON     3     3       2 16/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       2 16/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       2 16/04/2026
14:     14                                        Água ozonizada        AO3     3     3       2 16/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       2 16/04/2026
16:     16                                Controle - Apenas água        CON     4     4       2 16/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       2 16/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       2 16/04/2026
19:     19                                        Água ozonizada        AO3     4     4       2 16/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       2 16/04/2026
21:     21                                Controle - Apenas água        CON     5     5       2 16/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       2 16/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       2 16/04/2026
24:     24                                        Água ozonizada        AO3     5     5       2 16/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       2 16/04/2026
26:     26                                Controle - Apenas água        CON     6     6       2 16/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       2 16/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       2 16/04/2026
29:     29                                        Água ozonizada        AO3     6     6       2 16/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       2 16/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             08:49       08:52                 24.1                 24.9 2026-04-16 08:49:00
 2:    246.39             08:56       08:59                 24.1                 25.3 2026-04-16 08:56:00
 3:    246.21             09:03       09:06                 24.4                 25.2 2026-04-16 09:03:00
 4:    246.31             09:10       09:13                 24.3                 25.3 2026-04-16 09:10:00
 5:    246.29             09:17       09:20                 24.3                 25.5 2026-04-16 09:17:00
 6:    246.26             09:24       09:27                 24.3                 25.3 2026-04-16 09:24:00
 7:    246.14             09:31       09:34                 23.8                 25.5 2026-04-16 09:31:00
 8:    246.21             09:38       09:41                 22.1                 25.2 2026-04-16 09:38:00
 9:    246.14             09:45       09:48                 21.8                 25.3 2026-04-16 09:45:00
10:    246.35             09:52       09:55                 22.6                 25.3 2026-04-16 09:52:00
11:    246.26             09:59       10:02                 21.9                 25.3 2026-04-16 09:59:00
12:    246.30             10:06       10:09                 21.0                 25.3 2026-04-16 10:06:00
13:    246.38             10:13       10:16                 22.5                 25.3 2026-04-16 10:13:00
14:    246.37             10:20       10:23                 21.0                 25.2 2026-04-16 10:20:00
15:    246.15             10:27       10:30                 21.4                 25.3 2026-04-16 10:27:00
16:    246.50             10:34       10:37                 21.3                 25.3 2026-04-16 10:34:00
17:    246.36             10:41       10:44                 21.8                 25.3 2026-04-16 10:41:00
18:    246.30             10:48       10:51                 22.5                 25.3 2026-04-16 10:48:00
19:    246.25             10:55       10:58                 22.1                 25.2 2026-04-16 10:55:00
20:    246.34             11:02       11:05                 21.9                 25.8 2026-04-16 11:02:00
21:    246.23             11:23       11:26                 22.5                 25.7 2026-04-16 11:23:00
22:    246.18             12:32       12:35                 23.4                 24.9 2026-04-16 12:32:00
23:    246.21             12:39       12:42                 22.8                 24.8 2026-04-16 12:39:00
24:    246.31             12:46       12:49                 22.6                 25.1 2026-04-16 12:46:00
25:    246.35             12:53       12:56                 20.3                 24.9 2026-04-16 12:53:00
26:    246.25             13:00       13:03                 22.7                 24.8 2026-04-16 13:00:00
27:    246.25             13:07       13:10                 20.6                 24.6 2026-04-16 13:07:00
28:    246.36             13:14       13:17                 22.1                 25.3 2026-04-16 13:14:00
29:    246.23             13:21       13:24                 22.8                 25.1 2026-04-16 13:21:00
30:    246.35             13:28       13:31                 21.3                 25.2 2026-04-16 13:28:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       2 16/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       2 16/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       2 16/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       2 16/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       2 16/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       2 16/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       2 16/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       2 16/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       2 16/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       2 16/04/2026
11:     11                                Controle - Apenas água        CON     3     3       2 16/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       2 16/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       2 16/04/2026
14:     14                                        Água ozonizada        AO3     3     3       2 16/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       2 16/04/2026
16:     16                                Controle - Apenas água        CON     4     4       2 16/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       2 16/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       2 16/04/2026
19:     19                                        Água ozonizada        AO3     4     4       2 16/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       2 16/04/2026
21:     21                                Controle - Apenas água        CON     5     5       2 16/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       2 16/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       2 16/04/2026
24:     24                                        Água ozonizada        AO3     5     5       2 16/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       2 16/04/2026
26:     26                                Controle - Apenas água        CON     6     6       2 16/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       2 16/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       2 16/04/2026
29:     29                                        Água ozonizada        AO3     6     6       2 16/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       2 16/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             08:49       08:52                 24.1                 24.9 2026-04-16 08:49:00
 2:    246.39             08:56       08:59                 24.1                 25.3 2026-04-16 08:56:00
 3:    246.21             09:03       09:06                 24.4                 25.2 2026-04-16 09:03:00
 4:    246.31             09:10       09:13                 24.3                 25.3 2026-04-16 09:10:00
 5:    246.29             09:17       09:20                 24.3                 25.5 2026-04-16 09:17:00
 6:    246.26             09:24       09:27                 24.3                 25.3 2026-04-16 09:24:00
 7:    246.14             09:31       09:34                 23.8                 25.5 2026-04-16 09:31:00
 8:    246.21             09:38       09:41                 22.1                 25.2 2026-04-16 09:38:00
 9:    246.14             09:45       09:48                 21.8                 25.3 2026-04-16 09:45:00
10:    246.35             09:52       09:55                 22.6                 25.3 2026-04-16 09:52:00
11:    246.26             09:59       10:02                 21.9                 25.3 2026-04-16 09:59:00
12:    246.30             10:06       10:09                 21.0                 25.3 2026-04-16 10:06:00
13:    246.38             10:13       10:16                 22.5                 25.3 2026-04-16 10:13:00
14:    246.37             10:20       10:23                 21.0                 25.2 2026-04-16 10:20:00
15:    246.15             10:27       10:30                 21.4                 25.3 2026-04-16 10:27:00
16:    246.50             10:34       10:37                 21.3                 25.3 2026-04-16 10:34:00
17:    246.36             10:41       10:44                 21.8                 25.3 2026-04-16 10:41:00
18:    246.30             10:48       10:51                 22.5                 25.3 2026-04-16 10:48:00
19:    246.25             10:55       10:58                 22.1                 25.2 2026-04-16 10:55:00
20:    246.34             11:02       11:05                 21.9                 25.8 2026-04-16 11:02:00
21:    246.23             11:23       11:26                 22.5                 25.7 2026-04-16 11:23:00
22:    246.18             12:32       12:35                 23.4                 24.9 2026-04-16 12:32:00
23:    246.21             12:39       12:42                 22.8                 24.8 2026-04-16 12:39:00
24:    246.31             12:46       12:49                 22.6                 25.1 2026-04-16 12:46:00
25:    246.35             12:53       12:56                 20.3                 24.9 2026-04-16 12:53:00
26:    246.25             13:00       13:03                 22.7                 24.8 2026-04-16 13:00:00
27:    246.25             13:07       13:10                 20.6                 24.6 2026-04-16 13:07:00
28:    246.36             13:14       13:17                 22.1                 25.3 2026-04-16 13:14:00
29:    246.23             13:21       13:24                 22.8                 25.1 2026-04-16 13:21:00
30:    246.35             13:28       13:31                 21.3                 25.2 2026-04-16 13:28:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-04-16 08:52:00
 2: 2026-04-16 08:59:00
 3: 2026-04-16 09:06:00
 4: 2026-04-16 09:13:00
 5: 2026-04-16 09:20:00
 6: 2026-04-16 09:27:00
 7: 2026-04-16 09:34:00
 8: 2026-04-16 09:41:00
 9: 2026-04-16 09:48:00
10: 2026-04-16 09:55:00
11: 2026-04-16 10:02:00
12: 2026-04-16 10:09:00
13: 2026-04-16 10:16:00
14: 2026-04-16 10:23:00
15: 2026-04-16 10:30:00
16: 2026-04-16 10:37:00
17: 2026-04-16 10:44:00
18: 2026-04-16 10:51:00
19: 2026-04-16 10:58:00
20: 2026-04-16 11:05:00
21: 2026-04-16 11:26:00
22: 2026-04-16 12:35:00
23: 2026-04-16 12:42:00
24: 2026-04-16 12:49:00
25: 2026-04-16 12:56:00
26: 2026-04-16 13:03:00
27: 2026-04-16 13:10:00
28: 2026-04-16 13:17:00
29: 2026-04-16 13:24:00
30: 2026-04-16 13:31:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura2 = copy(dados2)
leitura2[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-16 08:00:00.319     106.375           2 0.3453462 519.8073 2.843718 1.980916 174.8344
    2: 2026-04-16 08:00:00.990     106.375           2 0.3408664 519.7384 2.843515 1.981191 174.8154
    3: 2026-04-16 08:00:01.782     106.375           2 0.3355795 519.6579 2.843278 1.981595 174.7870
    4: 2026-04-16 08:00:02.869     106.375           2 0.3283175 519.6893 2.842953 1.982147 174.7481
    5: 2026-04-16 08:00:03.670     106.375           2 0.3283217 519.7123 2.842713 1.982553 174.7195
   ---                                                                                              
23326: 2026-04-16 13:59:56.207     106.625           2 0.3313497 473.5128 2.751786 1.478828 134.6767
23327: 2026-04-16 13:59:56.976     106.625           2 0.3313584 473.4986 2.751614 1.480540 134.7796
23328: 2026-04-16 13:59:57.631     106.625           2 0.3310794 473.4865 2.751467 1.481998 134.8673
23329: 2026-04-16 13:59:58.388     106.625           2 0.3307511 473.4638 2.751260 1.482631 134.9263
23330: 2026-04-16 13:59:59.447     106.625           2 0.3302906 473.3283 2.750971 1.483521 135.0090
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-16 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-16 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-16 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-16 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-16 08:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
23326: 2026-04-16 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
23327: 2026-04-16 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
23328: 2026-04-16 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
23329: 2026-04-16 13:59:58     NA       <NA>    NA    NA      NA        NA                   NA
23330: 2026-04-16 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura2[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-16 08:00:00.319     106.375           2 0.3453462 519.8073 2.843718 1.980916 174.8344
    2: 2026-04-16 08:00:00.990     106.375           2 0.3408664 519.7384 2.843515 1.981191 174.8154
    3: 2026-04-16 08:00:01.782     106.375           2 0.3355795 519.6579 2.843278 1.981595 174.7870
    4: 2026-04-16 08:00:02.869     106.375           2 0.3283175 519.6893 2.842953 1.982147 174.7481
    5: 2026-04-16 08:00:03.670     106.375           2 0.3283217 519.7123 2.842713 1.982553 174.7195
   ---                                                                                              
23326: 2026-04-16 13:59:56.207     106.625           2 0.3313497 473.5128 2.751786 1.478828 134.6767
23327: 2026-04-16 13:59:56.976     106.625           2 0.3313584 473.4986 2.751614 1.480540 134.7796
23328: 2026-04-16 13:59:57.631     106.625           2 0.3310794 473.4865 2.751467 1.481998 134.8673
23329: 2026-04-16 13:59:58.388     106.625           2 0.3307511 473.4638 2.751260 1.482631 134.9263
23330: 2026-04-16 13:59:59.447     106.625           2 0.3302906 473.3283 2.750971 1.483521 135.0090
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-16 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-16 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-16 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-16 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-16 08:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
23326: 2026-04-16 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
23327: 2026-04-16 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
23328: 2026-04-16 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
23329: 2026-04-16 13:59:58     NA       <NA>    NA    NA      NA        NA                   NA
23330: 2026-04-16 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura2 = leitura2[MPVPosition == 1 & !is.na(Bottle)]
View(leitura2)                                                                                               


Leitura 3 - 17/04/2026



########################### PREPARAR DADOS ###########################
dados3 = as.data.table(filtrados_leitura3)
id = as.data.table(ID.leitura3)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       3 17/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       3 17/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       3 17/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       3 17/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       3 17/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       3 17/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       3 17/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       3 17/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       3 17/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       3 17/04/2026
11:     11                                Controle - Apenas água        CON     3     3       3 17/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       3 17/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       3 17/04/2026
14:     14                                        Água ozonizada        AO3     3     3       3 17/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       3 17/04/2026
16:     16                                Controle - Apenas água        CON     4     4       3 17/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       3 17/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       3 17/04/2026
19:     19                                        Água ozonizada        AO3     4     4       3 17/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       3 17/04/2026
21:     21                                Controle - Apenas água        CON     5     5       3 17/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       3 17/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       3 17/04/2026
24:     24                                        Água ozonizada        AO3     5     5       3 17/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       3 17/04/2026
26:     26                                Controle - Apenas água        CON     6     6       3 17/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       3 17/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       3 17/04/2026
29:     29                                        Água ozonizada        AO3     6     6       3 17/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       3 17/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:09       09:12                 22.8                 25.1 2026-04-17 09:09:00
 2:    246.39             09:16       09:19                 21.8                 24.9 2026-04-17 09:16:00
 3:    246.21             09:23       09:26                 21.8                 25.0 2026-04-17 09:23:00
 4:    246.31             09:30       09:33                 21.9                 25.3 2026-04-17 09:30:00
 5:    246.29             09:37       09:40                 22.0                 25.3 2026-04-17 09:37:00
 6:    246.26             09:44       09:47                 20.8                 25.2 2026-04-17 09:44:00
 7:    246.14             09:51       09:54                 21.1                 25.6 2026-04-17 09:51:00
 8:    246.21             09:58       10:01                 21.9                 25.5 2026-04-17 09:58:00
 9:    246.14             10:05       10:08                 20.8                 25.3 2026-04-17 10:05:00
10:    246.35             10:12       10:15                 21.3                 25.3 2026-04-17 10:12:00
11:    246.26             10:19       10:22                 21.2                 25.3 2026-04-17 10:19:00
12:    246.30             10:26       10:29                 20.6                 25.6 2026-04-17 10:26:00
13:    246.38             10:33       10:36                 21.0                 25.3 2026-04-17 10:33:00
14:    246.37             10:40       10:43                 20.7                 25.3 2026-04-17 10:40:00
15:    246.15             10:47       10:50                 20.9                 25.1 2026-04-17 10:47:00
16:    246.50             10:54       10:57                 20.8                 24.9 2026-04-17 10:54:00
17:    246.36             11:01       11:04                 18.5                 25.4 2026-04-17 11:01:00
18:    246.30             11:08       11:11                 19.0                 25.3 2026-04-17 11:08:00
19:    246.25             11:15       11:18                 20.7                 25.1 2026-04-17 11:15:00
20:    246.34             11:22       11:25                 19.8                 25.1 2026-04-17 11:22:00
21:    246.23             11:29       11:32                 20.3                 25.1 2026-04-17 11:29:00
22:    246.18             11:36       11:39                 20.6                 25.4 2026-04-17 11:36:00
23:    246.21             11:43       11:46                 20.0                 25.1 2026-04-17 11:43:00
24:    246.31             11:50       11:53                 20.5                 25.0 2026-04-17 11:50:00
25:    246.35             11:57       12:00                 19.8                 25.1 2026-04-17 11:57:00
26:    246.25             12:04       12:07                 19.6                 25.3 2026-04-17 12:04:00
27:    246.25             12:11       12:14                 20.6                 25.2 2026-04-17 12:11:00
28:    246.36             12:18       12:21                 19.9                 25.3 2026-04-17 12:18:00
29:    246.23             12:25       12:28                 19.2                 24.9 2026-04-17 12:25:00
30:    246.35             12:32       12:35                 18.9                 24.9 2026-04-17 12:32:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       3 17/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       3 17/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       3 17/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       3 17/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       3 17/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       3 17/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       3 17/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       3 17/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       3 17/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       3 17/04/2026
11:     11                                Controle - Apenas água        CON     3     3       3 17/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       3 17/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       3 17/04/2026
14:     14                                        Água ozonizada        AO3     3     3       3 17/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       3 17/04/2026
16:     16                                Controle - Apenas água        CON     4     4       3 17/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       3 17/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       3 17/04/2026
19:     19                                        Água ozonizada        AO3     4     4       3 17/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       3 17/04/2026
21:     21                                Controle - Apenas água        CON     5     5       3 17/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       3 17/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       3 17/04/2026
24:     24                                        Água ozonizada        AO3     5     5       3 17/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       3 17/04/2026
26:     26                                Controle - Apenas água        CON     6     6       3 17/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       3 17/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       3 17/04/2026
29:     29                                        Água ozonizada        AO3     6     6       3 17/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       3 17/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:09       09:12                 22.8                 25.1 2026-04-17 09:09:00
 2:    246.39             09:16       09:19                 21.8                 24.9 2026-04-17 09:16:00
 3:    246.21             09:23       09:26                 21.8                 25.0 2026-04-17 09:23:00
 4:    246.31             09:30       09:33                 21.9                 25.3 2026-04-17 09:30:00
 5:    246.29             09:37       09:40                 22.0                 25.3 2026-04-17 09:37:00
 6:    246.26             09:44       09:47                 20.8                 25.2 2026-04-17 09:44:00
 7:    246.14             09:51       09:54                 21.1                 25.6 2026-04-17 09:51:00
 8:    246.21             09:58       10:01                 21.9                 25.5 2026-04-17 09:58:00
 9:    246.14             10:05       10:08                 20.8                 25.3 2026-04-17 10:05:00
10:    246.35             10:12       10:15                 21.3                 25.3 2026-04-17 10:12:00
11:    246.26             10:19       10:22                 21.2                 25.3 2026-04-17 10:19:00
12:    246.30             10:26       10:29                 20.6                 25.6 2026-04-17 10:26:00
13:    246.38             10:33       10:36                 21.0                 25.3 2026-04-17 10:33:00
14:    246.37             10:40       10:43                 20.7                 25.3 2026-04-17 10:40:00
15:    246.15             10:47       10:50                 20.9                 25.1 2026-04-17 10:47:00
16:    246.50             10:54       10:57                 20.8                 24.9 2026-04-17 10:54:00
17:    246.36             11:01       11:04                 18.5                 25.4 2026-04-17 11:01:00
18:    246.30             11:08       11:11                 19.0                 25.3 2026-04-17 11:08:00
19:    246.25             11:15       11:18                 20.7                 25.1 2026-04-17 11:15:00
20:    246.34             11:22       11:25                 19.8                 25.1 2026-04-17 11:22:00
21:    246.23             11:29       11:32                 20.3                 25.1 2026-04-17 11:29:00
22:    246.18             11:36       11:39                 20.6                 25.4 2026-04-17 11:36:00
23:    246.21             11:43       11:46                 20.0                 25.1 2026-04-17 11:43:00
24:    246.31             11:50       11:53                 20.5                 25.0 2026-04-17 11:50:00
25:    246.35             11:57       12:00                 19.8                 25.1 2026-04-17 11:57:00
26:    246.25             12:04       12:07                 19.6                 25.3 2026-04-17 12:04:00
27:    246.25             12:11       12:14                 20.6                 25.2 2026-04-17 12:11:00
28:    246.36             12:18       12:21                 19.9                 25.3 2026-04-17 12:18:00
29:    246.23             12:25       12:28                 19.2                 24.9 2026-04-17 12:25:00
30:    246.35             12:32       12:35                 18.9                 24.9 2026-04-17 12:32:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-04-17 09:12:00
 2: 2026-04-17 09:19:00
 3: 2026-04-17 09:26:00
 4: 2026-04-17 09:33:00
 5: 2026-04-17 09:40:00
 6: 2026-04-17 09:47:00
 7: 2026-04-17 09:54:00
 8: 2026-04-17 10:01:00
 9: 2026-04-17 10:08:00
10: 2026-04-17 10:15:00
11: 2026-04-17 10:22:00
12: 2026-04-17 10:29:00
13: 2026-04-17 10:36:00
14: 2026-04-17 10:43:00
15: 2026-04-17 10:50:00
16: 2026-04-17 10:57:00
17: 2026-04-17 11:04:00
18: 2026-04-17 11:11:00
19: 2026-04-17 11:18:00
20: 2026-04-17 11:25:00
21: 2026-04-17 11:32:00
22: 2026-04-17 11:39:00
23: 2026-04-17 11:46:00
24: 2026-04-17 11:53:00
25: 2026-04-17 12:00:00
26: 2026-04-17 12:07:00
27: 2026-04-17 12:14:00
28: 2026-04-17 12:21:00
29: 2026-04-17 12:28:00
30: 2026-04-17 12:35:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura3 = copy(dados3)
leitura3[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O       NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>     <num>
    1: 2026-04-17 09:00:01.065    107.4167           2 0.3422074 567.7332 3.080015 1.930018 187.99025
    2: 2026-04-17 09:00:01.825    107.4167           2 0.3422014 567.5623 3.080052 1.929129 187.96281
    3: 2026-04-17 09:00:02.450    107.4167           2 0.3410180 567.4215 3.080083 1.928398 187.94019
    4: 2026-04-17 09:00:03.190    107.4167           2 0.3396211 567.2517 3.080105 1.927198 187.81842
    5: 2026-04-17 09:00:04.282    107.4167           2 0.3375602 567.0791 3.080139 1.925427 187.63873
   ---                                                                                               
18167: 2026-04-17 12:59:56.684    107.5833           2 0.3364050 459.2750 2.172541 1.357984  84.98730
18168: 2026-04-17 12:59:57.448    107.5833           2 0.3364013 459.2459 2.172491 1.357547  84.98544
18169: 2026-04-17 12:59:58.125    107.5833           2 0.3344320 459.2201 2.172447 1.357160  84.98376
18170: 2026-04-17 12:59:58.907    107.5833           2 0.3321558 459.1934 2.172407 1.357096  85.01648
18171: 2026-04-17 12:59:59.974    107.5833           2 0.3290474 459.2013 2.172352 1.357008  85.06117
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-17 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-17 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-17 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-17 09:00:03     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-17 09:00:04     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
18167: 2026-04-17 12:59:56     NA       <NA>    NA    NA      NA        NA                   NA
18168: 2026-04-17 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
18169: 2026-04-17 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
18170: 2026-04-17 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
18171: 2026-04-17 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura3[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O       NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>     <num>
    1: 2026-04-17 09:00:01.065    107.4167           2 0.3422074 567.7332 3.080015 1.930018 187.99025
    2: 2026-04-17 09:00:01.825    107.4167           2 0.3422014 567.5623 3.080052 1.929129 187.96281
    3: 2026-04-17 09:00:02.450    107.4167           2 0.3410180 567.4215 3.080083 1.928398 187.94019
    4: 2026-04-17 09:00:03.190    107.4167           2 0.3396211 567.2517 3.080105 1.927198 187.81842
    5: 2026-04-17 09:00:04.282    107.4167           2 0.3375602 567.0791 3.080139 1.925427 187.63873
   ---                                                                                               
18167: 2026-04-17 12:59:56.684    107.5833           2 0.3364050 459.2750 2.172541 1.357984  84.98730
18168: 2026-04-17 12:59:57.448    107.5833           2 0.3364013 459.2459 2.172491 1.357547  84.98544
18169: 2026-04-17 12:59:58.125    107.5833           2 0.3344320 459.2201 2.172447 1.357160  84.98376
18170: 2026-04-17 12:59:58.907    107.5833           2 0.3321558 459.1934 2.172407 1.357096  85.01648
18171: 2026-04-17 12:59:59.974    107.5833           2 0.3290474 459.2013 2.172352 1.357008  85.06117
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-17 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-17 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-17 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-17 09:00:03     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-17 09:00:04     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
18167: 2026-04-17 12:59:56     NA       <NA>    NA    NA      NA        NA                   NA
18168: 2026-04-17 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
18169: 2026-04-17 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
18170: 2026-04-17 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
18171: 2026-04-17 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura3 = leitura3[MPVPosition == 1 & !is.na(Bottle)]
View(leitura3)


Leitura 4 - 19/04/2026



########################### PREPARAR DADOS ###########################
dados4 = as.data.table(filtrados_leitura4)
id = as.data.table(ID.leitura4)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <int>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       4 19/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       4 19/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       4 19/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       4 19/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       4 19/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       4 19/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       4 19/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       4 19/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       4 19/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       4 19/04/2026
11:     11                                Controle - Apenas água        CON     3     3       4 19/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       4 19/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       4 19/04/2026
14:     14                                        Água ozonizada        AO3     3     3       4 19/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       4 19/04/2026
16:     16                                Controle - Apenas água        CON     4     4       4 19/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       4 19/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       4 19/04/2026
19:     19                                        Água ozonizada        AO3     4     4       4 19/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       4 19/04/2026
21:     21                                Controle - Apenas água        CON     5     5       4 19/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       4 19/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       4 19/04/2026
24:     24                                        Água ozonizada        AO3     5     5       4 19/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       4 19/04/2026
26:     26                                Controle - Apenas água        CON     6     6       4 19/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       4 19/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       4 19/04/2026
29:     29                                        Água ozonizada        AO3     6     6       4 19/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       4 19/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:31       09:34                 23.1                 25.2 2026-04-19 09:31:00
 2:    246.39             09:38       09:41                 21.5                 25.0 2026-04-19 09:38:00
 3:    246.21             09:45       09:48                 22.3                 25.5 2026-04-19 09:45:00
 4:    246.31             09:52       09:55                 21.9                 25.3 2026-04-19 09:52:00
 5:    246.29             09:59       10:02                 20.9                 25.1 2026-04-19 09:59:00
 6:    246.26             10:06       10:09                 21.9                 25.3 2026-04-19 10:06:00
 7:    246.14             10:13       10:16                 20.9                 25.2 2026-04-19 10:13:00
 8:    246.21             10:20       10:23                 21.9                 25.2 2026-04-19 10:20:00
 9:    246.14             10:27       10:30                 22.5                 25.3 2026-04-19 10:27:00
10:    246.35             10:34       10:37                 20.5                 25.3 2026-04-19 10:34:00
11:    246.26             10:41       10:44                 21.8                 24.9 2026-04-19 10:41:00
12:    246.30             10:48       10:51                 20.4                 25.1 2026-04-19 10:48:00
13:    246.38             10:55       10:58                 19.6                 25.3 2026-04-19 10:55:00
14:    246.37             11:02       11:05                 20.8                 25.1 2026-04-19 11:02:00
15:    246.15             11:09       11:12                 20.7                 25.3 2026-04-19 11:09:00
16:    246.50             11:16       11:19                 20.3                 25.2 2026-04-19 11:16:00
17:    246.36             11:23       11:26                 20.6                 25.2 2026-04-19 11:23:00
18:    246.30             12:05       12:08                 22.5                 24.1 2026-04-19 12:05:00
19:    246.25             12:12       12:15                 20.6                 25.3 2026-04-19 12:12:00
20:    246.34             12:19       12:22                 19.1                 25.0 2026-04-19 12:19:00
21:    246.23             12:26       12:29                 19.4                 25.1 2026-04-19 12:26:00
22:    246.18             12:33       12:36                 20.0                 25.1 2026-04-19 12:33:00
23:    246.21             12:40       12:43                 19.9                 24.9 2026-04-19 12:40:00
24:    246.31             13:01       13:04                 19.9                 24.6 2026-04-19 13:01:00
25:    246.35             12:54       12:57                 22.6                 25.1 2026-04-19 12:54:00
26:    246.25             13:15       13:18                 21.7                 25.1 2026-04-19 13:15:00
27:    246.25             13:22       13:25                 20.5                 25.3 2026-04-19 13:22:00
28:    246.36             13:29       13:32                 20.1                 24.9 2026-04-19 13:29:00
29:    246.23             13:36       13:39                 20.0                 24.8 2026-04-19 13:36:00
30:    246.35             13:43       13:46                 19.6                 25.2 2026-04-19 13:43:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <int>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       4 19/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       4 19/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       4 19/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       4 19/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       4 19/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       4 19/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       4 19/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       4 19/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       4 19/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       4 19/04/2026
11:     11                                Controle - Apenas água        CON     3     3       4 19/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       4 19/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       4 19/04/2026
14:     14                                        Água ozonizada        AO3     3     3       4 19/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       4 19/04/2026
16:     16                                Controle - Apenas água        CON     4     4       4 19/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       4 19/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       4 19/04/2026
19:     19                                        Água ozonizada        AO3     4     4       4 19/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       4 19/04/2026
21:     21                                Controle - Apenas água        CON     5     5       4 19/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       4 19/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       4 19/04/2026
24:     24                                        Água ozonizada        AO3     5     5       4 19/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       4 19/04/2026
26:     26                                Controle - Apenas água        CON     6     6       4 19/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       4 19/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       4 19/04/2026
29:     29                                        Água ozonizada        AO3     6     6       4 19/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       4 19/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:31       09:34                 23.1                 25.2 2026-04-19 09:31:00
 2:    246.39             09:38       09:41                 21.5                 25.0 2026-04-19 09:38:00
 3:    246.21             09:45       09:48                 22.3                 25.5 2026-04-19 09:45:00
 4:    246.31             09:52       09:55                 21.9                 25.3 2026-04-19 09:52:00
 5:    246.29             09:59       10:02                 20.9                 25.1 2026-04-19 09:59:00
 6:    246.26             10:06       10:09                 21.9                 25.3 2026-04-19 10:06:00
 7:    246.14             10:13       10:16                 20.9                 25.2 2026-04-19 10:13:00
 8:    246.21             10:20       10:23                 21.9                 25.2 2026-04-19 10:20:00
 9:    246.14             10:27       10:30                 22.5                 25.3 2026-04-19 10:27:00
10:    246.35             10:34       10:37                 20.5                 25.3 2026-04-19 10:34:00
11:    246.26             10:41       10:44                 21.8                 24.9 2026-04-19 10:41:00
12:    246.30             10:48       10:51                 20.4                 25.1 2026-04-19 10:48:00
13:    246.38             10:55       10:58                 19.6                 25.3 2026-04-19 10:55:00
14:    246.37             11:02       11:05                 20.8                 25.1 2026-04-19 11:02:00
15:    246.15             11:09       11:12                 20.7                 25.3 2026-04-19 11:09:00
16:    246.50             11:16       11:19                 20.3                 25.2 2026-04-19 11:16:00
17:    246.36             11:23       11:26                 20.6                 25.2 2026-04-19 11:23:00
18:    246.30             12:05       12:08                 22.5                 24.1 2026-04-19 12:05:00
19:    246.25             12:12       12:15                 20.6                 25.3 2026-04-19 12:12:00
20:    246.34             12:19       12:22                 19.1                 25.0 2026-04-19 12:19:00
21:    246.23             12:26       12:29                 19.4                 25.1 2026-04-19 12:26:00
22:    246.18             12:33       12:36                 20.0                 25.1 2026-04-19 12:33:00
23:    246.21             12:40       12:43                 19.9                 24.9 2026-04-19 12:40:00
24:    246.31             13:01       13:04                 19.9                 24.6 2026-04-19 13:01:00
25:    246.35             12:54       12:57                 22.6                 25.1 2026-04-19 12:54:00
26:    246.25             13:15       13:18                 21.7                 25.1 2026-04-19 13:15:00
27:    246.25             13:22       13:25                 20.5                 25.3 2026-04-19 13:22:00
28:    246.36             13:29       13:32                 20.1                 24.9 2026-04-19 13:29:00
29:    246.23             13:36       13:39                 20.0                 24.8 2026-04-19 13:36:00
30:    246.35             13:43       13:46                 19.6                 25.2 2026-04-19 13:43:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-04-19 09:34:00
 2: 2026-04-19 09:41:00
 3: 2026-04-19 09:48:00
 4: 2026-04-19 09:55:00
 5: 2026-04-19 10:02:00
 6: 2026-04-19 10:09:00
 7: 2026-04-19 10:16:00
 8: 2026-04-19 10:23:00
 9: 2026-04-19 10:30:00
10: 2026-04-19 10:37:00
11: 2026-04-19 10:44:00
12: 2026-04-19 10:51:00
13: 2026-04-19 10:58:00
14: 2026-04-19 11:05:00
15: 2026-04-19 11:12:00
16: 2026-04-19 11:19:00
17: 2026-04-19 11:26:00
18: 2026-04-19 12:08:00
19: 2026-04-19 12:15:00
20: 2026-04-19 12:22:00
21: 2026-04-19 12:29:00
22: 2026-04-19 12:36:00
23: 2026-04-19 12:43:00
24: 2026-04-19 13:04:00
25: 2026-04-19 12:57:00
26: 2026-04-19 13:18:00
27: 2026-04-19 13:25:00
28: 2026-04-19 13:32:00
29: 2026-04-19 13:39:00
30: 2026-04-19 13:46:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura4 = copy(dados4)
leitura4[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-19 09:00:00.414    109.4167           2 0.3251889 515.2003 3.100977 1.942901 209.1246
    2: 2026-04-19 09:00:01.065    109.4167           2 0.3298713 515.1399 3.100505 1.942570 209.1125
    3: 2026-04-19 09:00:01.825    109.4167           2 0.3353444 515.0749 3.099976 1.942788 209.2270
    4: 2026-04-19 09:00:02.881    109.4167           2 0.3429575 515.1224 3.099241 1.943086 209.3864
    5: 2026-04-19 09:00:03.687    109.4167           2 0.3429540 515.1585 3.098681 1.943314 209.5077
   ---                                                                                              
22258: 2026-04-19 13:59:56.516    109.6250           1 0.3363921 455.7402 2.814126 1.588747 235.1718
22259: 2026-04-19 13:59:57.160    109.6250           1 0.3338485 455.7401 2.814224 1.588953 235.2667
22260: 2026-04-19 13:59:57.924    109.6250           1 0.3308305 455.7482 2.814379 1.590230 235.4322
22261: 2026-04-19 13:59:59.000    109.6250           1 0.3265808 455.8966 2.814597 1.592024 235.6652
22262: 2026-04-19 13:59:59.799    109.6250           1 0.3265830 456.0068 2.814758 1.593357 235.8382
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-19 09:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-19 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-19 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-19 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-19 09:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
22258: 2026-04-19 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
22259: 2026-04-19 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
22260: 2026-04-19 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
22261: 2026-04-19 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
22262: 2026-04-19 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura4[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-19 09:00:00.414    109.4167           2 0.3251889 515.2003 3.100977 1.942901 209.1246
    2: 2026-04-19 09:00:01.065    109.4167           2 0.3298713 515.1399 3.100505 1.942570 209.1125
    3: 2026-04-19 09:00:01.825    109.4167           2 0.3353444 515.0749 3.099976 1.942788 209.2270
    4: 2026-04-19 09:00:02.881    109.4167           2 0.3429575 515.1224 3.099241 1.943086 209.3864
    5: 2026-04-19 09:00:03.687    109.4167           2 0.3429540 515.1585 3.098681 1.943314 209.5077
   ---                                                                                              
22258: 2026-04-19 13:59:56.516    109.6250           1 0.3363921 455.7402 2.814126 1.588747 235.1718
22259: 2026-04-19 13:59:57.160    109.6250           1 0.3338485 455.7401 2.814224 1.588953 235.2667
22260: 2026-04-19 13:59:57.924    109.6250           1 0.3308305 455.7482 2.814379 1.590230 235.4322
22261: 2026-04-19 13:59:59.000    109.6250           1 0.3265808 455.8966 2.814597 1.592024 235.6652
22262: 2026-04-19 13:59:59.799    109.6250           1 0.3265830 456.0068 2.814758 1.593357 235.8382
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-19 09:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-19 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-19 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-19 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-19 09:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
22258: 2026-04-19 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
22259: 2026-04-19 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
22260: 2026-04-19 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
22261: 2026-04-19 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
22262: 2026-04-19 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura4 = leitura4[MPVPosition == 1 & !is.na(Bottle)]
View(leitura4)


Leitura 5 - 22/04/2026



########################### PREPARAR DADOS ###########################
dados5 = as.data.table(filtrados_leitura5)
id = as.data.table(ID.leitura5)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <int>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       5 22/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       5 22/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       5 22/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       5 22/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       5 22/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       5 22/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       5 22/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       5 22/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       5 22/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       5 22/04/2026
11:     11                                Controle - Apenas água        CON     3     3       5 22/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       5 22/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       5 22/04/2026
14:     14                                        Água ozonizada        AO3     3     3       5 22/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       5 22/04/2026
16:     16                                Controle - Apenas água        CON     4     4       5 22/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       5 22/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       5 22/04/2026
19:     19                                        Água ozonizada        AO3     4     4       5 22/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       5 22/04/2026
21:     21                                Controle - Apenas água        CON     5     5       5 22/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       5 22/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       5 22/04/2026
24:     24                                        Água ozonizada        AO3     5     5       5 22/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       5 22/04/2026
26:     26                                Controle - Apenas água        CON     6     6       5 22/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       5 22/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       5 22/04/2026
29:     29                                        Água ozonizada        AO3     6     6       5 22/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       5 22/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             08:22       08:25                 22.8                 25.0 2026-04-22 08:22:00
 2:    246.39             08:29       08:32                 20.6                 25.2 2026-04-22 08:29:00
 3:    246.21             08:36       08:39                 21.3                 25.3 2026-04-22 08:36:00
 4:    246.31             08:43       08:46                 21.0                 25.2 2026-04-22 08:43:00
 5:    246.29             08:50       08:53                 20.8                 25.2 2026-04-22 08:50:00
 6:    246.26             08:57       09:00                 21.5                 25.4 2026-04-22 08:57:00
 7:    246.14             09:04       09:07                 20.1                 25.1 2026-04-22 09:04:00
 8:    246.21             09:11       09:14                 20.8                 25.3 2026-04-22 09:11:00
 9:    246.14             09:18       09:21                 20.6                 25.1 2026-04-22 09:18:00
10:    246.35             09:25       09:28                 20.8                 25.5 2026-04-22 09:25:00
11:    246.26             09:32       09:35                 21.4                 25.4 2026-04-22 09:32:00
12:    246.30             09:39       09:42                 20.5                 25.5 2026-04-22 09:39:00
13:    246.38             09:46       09:49                 21.2                 25.5 2026-04-22 09:46:00
14:    246.37             09:53       09:56                 21.6                 25.5 2026-04-22 09:53:00
15:    246.15             10:00       10:03                 21.1                 25.2 2026-04-22 10:00:00
16:    246.50             10:07       10:10                 20.6                 25.2 2026-04-22 10:07:00
17:    246.36             10:14       10:17                 20.8                 25.2 2026-04-22 10:14:00
18:    246.30             10:21       10:24                 20.3                 25.5 2026-04-22 10:21:00
19:    246.25             10:28       10:31                 21.5                 25.3 2026-04-22 10:28:00
20:    246.34             10:35       10:38                 21.1                 25.1 2026-04-22 10:35:00
21:    246.23             10:42       10:45                 20.6                 25.1 2026-04-22 10:42:00
22:    246.18             10:49       10:52                 21.3                 25.3 2026-04-22 10:49:00
23:    246.21             10:56       10:59                 21.2                 25.5 2026-04-22 10:56:00
24:    246.31             11:03       11:06                 20.8                 25.2 2026-04-22 11:03:00
25:    246.35             11:10       11:13                 21.5                 25.3 2026-04-22 11:10:00
26:    246.25             11:17       11:20                 20.9                 25.4 2026-04-22 11:17:00
27:    246.25             11:24       11:27                 21.6                 25.1 2026-04-22 11:24:00
28:    246.36             11:45       11:48                 19.8                 24.6 2026-04-22 11:45:00
29:    246.23             11:38       11:41                 21.9                 25.6 2026-04-22 11:38:00
30:    246.35             11:52       11:55                 19.5                 25.2 2026-04-22 11:52:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <int>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       5 22/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       5 22/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       5 22/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       5 22/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       5 22/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       5 22/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       5 22/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       5 22/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       5 22/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       5 22/04/2026
11:     11                                Controle - Apenas água        CON     3     3       5 22/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       5 22/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       5 22/04/2026
14:     14                                        Água ozonizada        AO3     3     3       5 22/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       5 22/04/2026
16:     16                                Controle - Apenas água        CON     4     4       5 22/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       5 22/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       5 22/04/2026
19:     19                                        Água ozonizada        AO3     4     4       5 22/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       5 22/04/2026
21:     21                                Controle - Apenas água        CON     5     5       5 22/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       5 22/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       5 22/04/2026
24:     24                                        Água ozonizada        AO3     5     5       5 22/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       5 22/04/2026
26:     26                                Controle - Apenas água        CON     6     6       5 22/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       5 22/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       5 22/04/2026
29:     29                                        Água ozonizada        AO3     6     6       5 22/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       5 22/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             08:22       08:25                 22.8                 25.0 2026-04-22 08:22:00
 2:    246.39             08:29       08:32                 20.6                 25.2 2026-04-22 08:29:00
 3:    246.21             08:36       08:39                 21.3                 25.3 2026-04-22 08:36:00
 4:    246.31             08:43       08:46                 21.0                 25.2 2026-04-22 08:43:00
 5:    246.29             08:50       08:53                 20.8                 25.2 2026-04-22 08:50:00
 6:    246.26             08:57       09:00                 21.5                 25.4 2026-04-22 08:57:00
 7:    246.14             09:04       09:07                 20.1                 25.1 2026-04-22 09:04:00
 8:    246.21             09:11       09:14                 20.8                 25.3 2026-04-22 09:11:00
 9:    246.14             09:18       09:21                 20.6                 25.1 2026-04-22 09:18:00
10:    246.35             09:25       09:28                 20.8                 25.5 2026-04-22 09:25:00
11:    246.26             09:32       09:35                 21.4                 25.4 2026-04-22 09:32:00
12:    246.30             09:39       09:42                 20.5                 25.5 2026-04-22 09:39:00
13:    246.38             09:46       09:49                 21.2                 25.5 2026-04-22 09:46:00
14:    246.37             09:53       09:56                 21.6                 25.5 2026-04-22 09:53:00
15:    246.15             10:00       10:03                 21.1                 25.2 2026-04-22 10:00:00
16:    246.50             10:07       10:10                 20.6                 25.2 2026-04-22 10:07:00
17:    246.36             10:14       10:17                 20.8                 25.2 2026-04-22 10:14:00
18:    246.30             10:21       10:24                 20.3                 25.5 2026-04-22 10:21:00
19:    246.25             10:28       10:31                 21.5                 25.3 2026-04-22 10:28:00
20:    246.34             10:35       10:38                 21.1                 25.1 2026-04-22 10:35:00
21:    246.23             10:42       10:45                 20.6                 25.1 2026-04-22 10:42:00
22:    246.18             10:49       10:52                 21.3                 25.3 2026-04-22 10:49:00
23:    246.21             10:56       10:59                 21.2                 25.5 2026-04-22 10:56:00
24:    246.31             11:03       11:06                 20.8                 25.2 2026-04-22 11:03:00
25:    246.35             11:10       11:13                 21.5                 25.3 2026-04-22 11:10:00
26:    246.25             11:17       11:20                 20.9                 25.4 2026-04-22 11:17:00
27:    246.25             11:24       11:27                 21.6                 25.1 2026-04-22 11:24:00
28:    246.36             11:45       11:48                 19.8                 24.6 2026-04-22 11:45:00
29:    246.23             11:38       11:41                 21.9                 25.6 2026-04-22 11:38:00
30:    246.35             11:52       11:55                 19.5                 25.2 2026-04-22 11:52:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-04-22 08:25:00
 2: 2026-04-22 08:32:00
 3: 2026-04-22 08:39:00
 4: 2026-04-22 08:46:00
 5: 2026-04-22 08:53:00
 6: 2026-04-22 09:00:00
 7: 2026-04-22 09:07:00
 8: 2026-04-22 09:14:00
 9: 2026-04-22 09:21:00
10: 2026-04-22 09:28:00
11: 2026-04-22 09:35:00
12: 2026-04-22 09:42:00
13: 2026-04-22 09:49:00
14: 2026-04-22 09:56:00
15: 2026-04-22 10:03:00
16: 2026-04-22 10:10:00
17: 2026-04-22 10:17:00
18: 2026-04-22 10:24:00
19: 2026-04-22 10:31:00
20: 2026-04-22 10:38:00
21: 2026-04-22 10:45:00
22: 2026-04-22 10:52:00
23: 2026-04-22 10:59:00
24: 2026-04-22 11:06:00
25: 2026-04-22 11:13:00
26: 2026-04-22 11:20:00
27: 2026-04-22 11:27:00
28: 2026-04-22 11:48:00
29: 2026-04-22 11:41:00
30: 2026-04-22 11:55:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura5 = copy(dados5)
leitura5[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-22 08:00:00.259    112.3750           2 0.3418550 489.4310 2.514914 1.739537 170.4868
    2: 2026-04-22 08:00:01.322    112.3750           2 0.3383274 489.8048 2.515608 1.740927 170.4470
    3: 2026-04-22 08:00:02.138    112.3750           2 0.3383381 490.0915 2.516139 1.741994 170.4166
    4: 2026-04-22 08:00:02.476    112.3750           2 0.3366002 490.2103 2.516360 1.742436 170.4039
    5: 2026-04-22 08:00:03.631    112.3750           2 0.3306664 490.6158 2.516621 1.743944 170.3608
   ---                                                                                              
17963: 2026-04-22 11:59:56.857    112.5416           1 0.3283243 485.9612 2.407098 2.780741 133.8801
17964: 2026-04-22 11:59:57.194    112.5416           1 0.3286898 485.9406 2.407094 2.780189 133.8402
17965: 2026-04-22 11:59:58.361    112.5416           1 0.3299555 485.8689 2.406784 2.778276 133.7019
17966: 2026-04-22 11:59:59.138    112.5417           1 0.3299510 485.8212 2.406578 2.777002 133.6098
17967: 2026-04-22 11:59:59.785    112.5417           1 0.3270313 485.7815 2.406406 2.775942 133.5331
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-22 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-22 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-22 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-22 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-22 08:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
17963: 2026-04-22 11:59:56     NA       <NA>    NA    NA      NA        NA                   NA
17964: 2026-04-22 11:59:57     NA       <NA>    NA    NA      NA        NA                   NA
17965: 2026-04-22 11:59:58     NA       <NA>    NA    NA      NA        NA                   NA
17966: 2026-04-22 11:59:59     NA       <NA>    NA    NA      NA        NA                   NA
17967: 2026-04-22 11:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura5[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-22 08:00:00.259    112.3750           2 0.3418550 489.4310 2.514914 1.739537 170.4868
    2: 2026-04-22 08:00:01.322    112.3750           2 0.3383274 489.8048 2.515608 1.740927 170.4470
    3: 2026-04-22 08:00:02.138    112.3750           2 0.3383381 490.0915 2.516139 1.741994 170.4166
    4: 2026-04-22 08:00:02.476    112.3750           2 0.3366002 490.2103 2.516360 1.742436 170.4039
    5: 2026-04-22 08:00:03.631    112.3750           2 0.3306664 490.6158 2.516621 1.743944 170.3608
   ---                                                                                              
17963: 2026-04-22 11:59:56.857    112.5416           1 0.3283243 485.9612 2.407098 2.780741 133.8801
17964: 2026-04-22 11:59:57.194    112.5416           1 0.3286898 485.9406 2.407094 2.780189 133.8402
17965: 2026-04-22 11:59:58.361    112.5416           1 0.3299555 485.8689 2.406784 2.778276 133.7019
17966: 2026-04-22 11:59:59.138    112.5417           1 0.3299510 485.8212 2.406578 2.777002 133.6098
17967: 2026-04-22 11:59:59.785    112.5417           1 0.3270313 485.7815 2.406406 2.775942 133.5331
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-22 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-22 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-22 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-22 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-22 08:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
17963: 2026-04-22 11:59:56     NA       <NA>    NA    NA      NA        NA                   NA
17964: 2026-04-22 11:59:57     NA       <NA>    NA    NA      NA        NA                   NA
17965: 2026-04-22 11:59:58     NA       <NA>    NA    NA      NA        NA                   NA
17966: 2026-04-22 11:59:59     NA       <NA>    NA    NA      NA        NA                   NA
17967: 2026-04-22 11:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura5 = leitura5[MPVPosition == 1 & !is.na(Bottle)]
View(leitura5)


Leitura 6 - 27/04/2026



########################### PREPARAR DADOS ###########################
dados6 = as.data.table(filtrados_leitura6)
id = as.data.table(ID.leitura6)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       6 27/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       6 27/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       6 27/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       6 27/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       6 27/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       6 27/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       6 27/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       6 27/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       6 27/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       6 27/04/2026
11:     11                                Controle - Apenas água        CON     3     3       6 27/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       6 27/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       6 27/04/2026
14:     14                                        Água ozonizada        AO3     3     3       6 27/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       6 27/04/2026
16:     16                                Controle - Apenas água        CON     4     4       6 27/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       6 27/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       6 27/04/2026
19:     19                                        Água ozonizada        AO3     4     4       6 27/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       6 27/04/2026
21:     21                                Controle - Apenas água        CON     5     5       6 27/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       6 27/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       6 27/04/2026
24:     24                                        Água ozonizada        AO3     5     5       6 27/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       6 27/04/2026
26:     26                                Controle - Apenas água        CON     6     6       6 27/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       6 27/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       6 27/04/2026
29:     29                                        Água ozonizada        AO3     6     6       6 27/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       6 27/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:06       09:09                 23.1                 25.3 2026-04-27 09:06:00
 2:    246.39             09:13       09:16                 22.4                 25.3 2026-04-27 09:13:00
 3:    246.21             09:20       09:23                 23.1                 25.5 2026-04-27 09:20:00
 4:    246.31             09:27       09:30                 22.3                 25.5 2026-04-27 09:27:00
 5:    246.29             09:34       09:37                 20.7                 25.3 2026-04-27 09:34:00
 6:    246.26             09:41       09:44                 20.9                 25.5 2026-04-27 09:41:00
 7:    246.14             09:48       09:51                 20.5                 25.4 2026-04-27 09:48:00
 8:    246.21             09:55       09:58                 20.9                 25.2 2026-04-27 09:55:00
 9:    246.14             10:02       10:05                 20.1                 25.2 2026-04-27 10:02:00
10:    246.35             10:09       10:12                 21.9                 25.1 2026-04-27 10:09:00
11:    246.26             10:16       10:19                 20.0                 25.1 2026-04-27 10:16:00
12:    246.30             10:23       10:26                 20.7                 25.6 2026-04-27 10:23:00
13:    246.38             10:30       10:33                 21.2                 25.5 2026-04-27 10:30:00
14:    246.37             10:37       10:40                 20.9                 25.4 2026-04-27 10:37:00
15:    246.15             10:44       10:47                 19.5                 24.9 2026-04-27 10:44:00
16:    246.50             10:51       10:54                 19.2                 24.9 2026-04-27 10:51:00
17:    246.36             10:58       11:01                 19.7                 24.9 2026-04-27 10:58:00
18:    246.30             11:05       11:08                 20.0                 25.3 2026-04-27 11:05:00
19:    246.25             11:12       11:15                 20.1                 25.1 2026-04-27 11:12:00
20:    246.34             11:19       11:22                 20.1                 25.1 2026-04-27 11:19:00
21:    246.23             11:26       11:29                 20.0                 25.0 2026-04-27 11:26:00
22:    246.18             11:33       11:36                 20.4                 25.3 2026-04-27 11:33:00
23:    246.21             11:40       11:43                 19.9                 25.5 2026-04-27 11:40:00
24:    246.31             11:47       11:50                 19.9                 25.1 2026-04-27 11:47:00
25:    246.35             11:54       11:57                 20.0                 25.0 2026-04-27 11:54:00
26:    246.25             12:01       12:04                 19.8                 24.9 2026-04-27 12:01:00
27:    246.25             12:08       12:11                 20.1                 24.9 2026-04-27 12:08:00
28:    246.36             12:15       12:18                 20.4                 24.9 2026-04-27 12:15:00
29:    246.23             12:22       12:25                 20.0                 25.1 2026-04-27 12:22:00
30:    246.35             12:29       12:32                 20.0                 25.4 2026-04-27 12:29:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       6 27/04/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       6 27/04/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       6 27/04/2026
 4:      4                                        Água ozonizada        AO3     1     1       6 27/04/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       6 27/04/2026
 6:      6                                Controle - Apenas água        CON     2     2       6 27/04/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       6 27/04/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       6 27/04/2026
 9:      9                                        Água ozonizada        AO3     2     2       6 27/04/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       6 27/04/2026
11:     11                                Controle - Apenas água        CON     3     3       6 27/04/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       6 27/04/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       6 27/04/2026
14:     14                                        Água ozonizada        AO3     3     3       6 27/04/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       6 27/04/2026
16:     16                                Controle - Apenas água        CON     4     4       6 27/04/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       6 27/04/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       6 27/04/2026
19:     19                                        Água ozonizada        AO3     4     4       6 27/04/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       6 27/04/2026
21:     21                                Controle - Apenas água        CON     5     5       6 27/04/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       6 27/04/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       6 27/04/2026
24:     24                                        Água ozonizada        AO3     5     5       6 27/04/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       6 27/04/2026
26:     26                                Controle - Apenas água        CON     6     6       6 27/04/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       6 27/04/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       6 27/04/2026
29:     29                                        Água ozonizada        AO3     6     6       6 27/04/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       6 27/04/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:06       09:09                 23.1                 25.3 2026-04-27 09:06:00
 2:    246.39             09:13       09:16                 22.4                 25.3 2026-04-27 09:13:00
 3:    246.21             09:20       09:23                 23.1                 25.5 2026-04-27 09:20:00
 4:    246.31             09:27       09:30                 22.3                 25.5 2026-04-27 09:27:00
 5:    246.29             09:34       09:37                 20.7                 25.3 2026-04-27 09:34:00
 6:    246.26             09:41       09:44                 20.9                 25.5 2026-04-27 09:41:00
 7:    246.14             09:48       09:51                 20.5                 25.4 2026-04-27 09:48:00
 8:    246.21             09:55       09:58                 20.9                 25.2 2026-04-27 09:55:00
 9:    246.14             10:02       10:05                 20.1                 25.2 2026-04-27 10:02:00
10:    246.35             10:09       10:12                 21.9                 25.1 2026-04-27 10:09:00
11:    246.26             10:16       10:19                 20.0                 25.1 2026-04-27 10:16:00
12:    246.30             10:23       10:26                 20.7                 25.6 2026-04-27 10:23:00
13:    246.38             10:30       10:33                 21.2                 25.5 2026-04-27 10:30:00
14:    246.37             10:37       10:40                 20.9                 25.4 2026-04-27 10:37:00
15:    246.15             10:44       10:47                 19.5                 24.9 2026-04-27 10:44:00
16:    246.50             10:51       10:54                 19.2                 24.9 2026-04-27 10:51:00
17:    246.36             10:58       11:01                 19.7                 24.9 2026-04-27 10:58:00
18:    246.30             11:05       11:08                 20.0                 25.3 2026-04-27 11:05:00
19:    246.25             11:12       11:15                 20.1                 25.1 2026-04-27 11:12:00
20:    246.34             11:19       11:22                 20.1                 25.1 2026-04-27 11:19:00
21:    246.23             11:26       11:29                 20.0                 25.0 2026-04-27 11:26:00
22:    246.18             11:33       11:36                 20.4                 25.3 2026-04-27 11:33:00
23:    246.21             11:40       11:43                 19.9                 25.5 2026-04-27 11:40:00
24:    246.31             11:47       11:50                 19.9                 25.1 2026-04-27 11:47:00
25:    246.35             11:54       11:57                 20.0                 25.0 2026-04-27 11:54:00
26:    246.25             12:01       12:04                 19.8                 24.9 2026-04-27 12:01:00
27:    246.25             12:08       12:11                 20.1                 24.9 2026-04-27 12:08:00
28:    246.36             12:15       12:18                 20.4                 24.9 2026-04-27 12:15:00
29:    246.23             12:22       12:25                 20.0                 25.1 2026-04-27 12:22:00
30:    246.35             12:29       12:32                 20.0                 25.4 2026-04-27 12:29:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-04-27 09:09:00
 2: 2026-04-27 09:16:00
 3: 2026-04-27 09:23:00
 4: 2026-04-27 09:30:00
 5: 2026-04-27 09:37:00
 6: 2026-04-27 09:44:00
 7: 2026-04-27 09:51:00
 8: 2026-04-27 09:58:00
 9: 2026-04-27 10:05:00
10: 2026-04-27 10:12:00
11: 2026-04-27 10:19:00
12: 2026-04-27 10:26:00
13: 2026-04-27 10:33:00
14: 2026-04-27 10:40:00
15: 2026-04-27 10:47:00
16: 2026-04-27 10:54:00
17: 2026-04-27 11:01:00
18: 2026-04-27 11:08:00
19: 2026-04-27 11:15:00
20: 2026-04-27 11:22:00
21: 2026-04-27 11:29:00
22: 2026-04-27 11:36:00
23: 2026-04-27 11:43:00
24: 2026-04-27 11:50:00
25: 2026-04-27 11:57:00
26: 2026-04-27 12:04:00
27: 2026-04-27 12:11:00
28: 2026-04-27 12:18:00
29: 2026-04-27 12:25:00
30: 2026-04-27 12:32:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura6 = copy(dados6)
leitura6[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-27 09:00:00.727    117.4167     1.00000 0.3496643 563.8459 2.881716 2.092712 912.0522
    2: 2026-04-27 09:00:01.492    117.4167     1.00000 0.3497405 564.1107 2.881741 2.092165 910.4254
    3: 2026-04-27 09:00:02.153    117.4167     1.00000 0.3467633 564.3399 2.881763 2.091692 909.0180
    4: 2026-04-27 09:00:02.938    117.4167     1.00000 0.3432238 564.6146 2.881798 2.091357 907.3144
    5: 2026-04-27 09:00:04.029    117.4167     1.00000 0.3383082 564.6062 2.881847 2.090904 904.9498
   ---                                                                                              
18038: 2026-04-27 12:59:57.095    117.5833     1.88862 0.3333136 444.0541 2.100215 1.763829 197.4754
18039: 2026-04-27 12:59:57.437    117.5833     2.00000 0.3299605 444.0880 2.100372 1.763344 197.4533
18040: 2026-04-27 12:59:58.573    117.5833     2.00000 0.3188556 444.2002 2.099961 1.761736 197.3798
18041: 2026-04-27 12:59:59.361    117.5833     2.00000 0.3188512 444.2780 2.099676 1.760621 197.3289
18042: 2026-04-27 12:59:59.993    117.5833     2.00000 0.3221046 444.3404 2.099447 1.759727 197.2881
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-27 09:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-27 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-27 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-27 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-27 09:00:04     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
18038: 2026-04-27 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
18039: 2026-04-27 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
18040: 2026-04-27 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
18041: 2026-04-27 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
18042: 2026-04-27 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura6[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-04-27 09:00:00.727    117.4167     1.00000 0.3496643 563.8459 2.881716 2.092712 912.0522
    2: 2026-04-27 09:00:01.492    117.4167     1.00000 0.3497405 564.1107 2.881741 2.092165 910.4254
    3: 2026-04-27 09:00:02.153    117.4167     1.00000 0.3467633 564.3399 2.881763 2.091692 909.0180
    4: 2026-04-27 09:00:02.938    117.4167     1.00000 0.3432238 564.6146 2.881798 2.091357 907.3144
    5: 2026-04-27 09:00:04.029    117.4167     1.00000 0.3383082 564.6062 2.881847 2.090904 904.9498
   ---                                                                                              
18038: 2026-04-27 12:59:57.095    117.5833     1.88862 0.3333136 444.0541 2.100215 1.763829 197.4754
18039: 2026-04-27 12:59:57.437    117.5833     2.00000 0.3299605 444.0880 2.100372 1.763344 197.4533
18040: 2026-04-27 12:59:58.573    117.5833     2.00000 0.3188556 444.2002 2.099961 1.761736 197.3798
18041: 2026-04-27 12:59:59.361    117.5833     2.00000 0.3188512 444.2780 2.099676 1.760621 197.3289
18042: 2026-04-27 12:59:59.993    117.5833     2.00000 0.3221046 444.3404 2.099447 1.759727 197.2881
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-04-27 09:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-04-27 09:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-04-27 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-04-27 09:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-04-27 09:00:04     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
18038: 2026-04-27 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
18039: 2026-04-27 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
18040: 2026-04-27 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
18041: 2026-04-27 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
18042: 2026-04-27 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura6 = leitura6[MPVPosition == 1 & !is.na(Bottle)]
View(leitura6)


Leitura 7 - 05/05/2026



########################### PREPARAR DADOS ###########################
dados7 = as.data.table(filtrados_leitura7)
id = as.data.table(ID.leitura7)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       7 05/05/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       7 05/05/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       7 05/05/2026
 4:      4                                        Água ozonizada        AO3     1     1       7 05/05/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       7 05/05/2026
 6:      6                                Controle - Apenas água        CON     2     2       7 05/05/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       7 05/05/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       7 05/05/2026
 9:      9                                        Água ozonizada        AO3     2     2       7 05/05/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       7 05/05/2026
11:     11                                Controle - Apenas água        CON     3     3       7 05/05/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       7 05/05/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       7 05/05/2026
14:     14                                        Água ozonizada        AO3     3     3       7 05/05/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       7 05/05/2026
16:     16                                Controle - Apenas água        CON     4     4       7 05/05/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       7 05/05/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       7 05/05/2026
19:     19                                        Água ozonizada        AO3     4     4       7 05/05/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       7 05/05/2026
21:     21                                Controle - Apenas água        CON     5     5       7 05/05/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       7 05/05/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       7 05/05/2026
24:     24                                        Água ozonizada        AO3     5     5       7 05/05/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       7 05/05/2026
26:     26                                Controle - Apenas água        CON     6     6       7 05/05/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       7 05/05/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       7 05/05/2026
29:     29                                        Água ozonizada        AO3     6     6       7 05/05/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       7 05/05/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             10:12       10:15                 23.6                 25.1 2026-05-05 10:12:00
 2:    246.39             10:19       10:22                 22.4                 25.1 2026-05-05 10:19:00
 3:    246.21             10:25       10:28                 22.4                 25.2 2026-05-05 10:25:00
 4:    246.31             10:33       10:36                 22.6                 25.3 2026-05-05 10:33:00
 5:    246.29             10:40       10:43                 20.9                 25.3 2026-05-05 10:40:00
 6:    246.26             10:47       10:50                 22.1                 25.5 2026-05-05 10:47:00
 7:    246.14             10:54       10:57                 22.3                 25.4 2026-05-05 10:54:00
 8:    246.21             11:01       11:04                 20.7                 25.3 2026-05-05 11:01:00
 9:    246.14             11:08       11:11                 21.8                 25.5 2026-05-05 11:08:00
10:    246.35             11:15       11:18                 21.6                 25.3 2026-05-05 11:15:00
11:    246.26             11:22       11:25                 21.9                 25.6 2026-05-05 11:22:00
12:    246.30             11:43       11:46                 23.1                 25.0 2026-05-05 11:43:00
13:    246.38             11:36       11:39                 22.9                 25.5 2026-05-05 11:36:00
14:    246.37             11:50       11:53                 21.1                 25.3 2026-05-05 11:50:00
15:    246.15             11:57       12:00                 21.2                 25.3 2026-05-05 11:57:00
16:    246.50             12:04       12:07                 22.2                 25.3 2026-05-05 12:04:00
17:    246.36             12:11       12:14                 21.9                 25.2 2026-05-05 12:11:00
18:    246.30             12:18       12:21                 22.5                 25.1 2026-05-05 12:18:00
19:    246.25             12:25       12:28                 21.1                 25.3 2026-05-05 12:25:00
20:    246.34             12:32       12:35                 20.6                 25.2 2026-05-05 12:32:00
21:    246.23             12:39       12:42                 21.0                 25.1 2026-05-05 12:39:00
22:    246.18             12:46       12:49                 20.7                 25.3 2026-05-05 12:46:00
23:    246.21             12:53       12:56                 20.7                 25.4 2026-05-05 12:53:00
24:    246.31             13:00       13:03                 20.8                 25.1 2026-05-05 13:00:00
25:    246.35             13:07       13:10                 21.0                 25.3 2026-05-05 13:07:00
26:    246.25             13:14       13:17                 20.3                 24.9 2026-05-05 13:14:00
27:    246.25             13:21       13:24                 20.5                 24.8 2026-05-05 13:21:00
28:    246.36             13:27       13:30                 19.5                 25.0 2026-05-05 13:27:00
29:    246.23             13:34       13:37                 19.9                 25.1 2026-05-05 13:34:00
30:    246.35             13:41       13:44                 20.0                 24.8 2026-05-05 13:41:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       7 05/05/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       7 05/05/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       7 05/05/2026
 4:      4                                        Água ozonizada        AO3     1     1       7 05/05/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       7 05/05/2026
 6:      6                                Controle - Apenas água        CON     2     2       7 05/05/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       7 05/05/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       7 05/05/2026
 9:      9                                        Água ozonizada        AO3     2     2       7 05/05/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       7 05/05/2026
11:     11                                Controle - Apenas água        CON     3     3       7 05/05/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       7 05/05/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       7 05/05/2026
14:     14                                        Água ozonizada        AO3     3     3       7 05/05/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       7 05/05/2026
16:     16                                Controle - Apenas água        CON     4     4       7 05/05/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       7 05/05/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       7 05/05/2026
19:     19                                        Água ozonizada        AO3     4     4       7 05/05/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       7 05/05/2026
21:     21                                Controle - Apenas água        CON     5     5       7 05/05/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       7 05/05/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       7 05/05/2026
24:     24                                        Água ozonizada        AO3     5     5       7 05/05/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       7 05/05/2026
26:     26                                Controle - Apenas água        CON     6     6       7 05/05/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       7 05/05/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       7 05/05/2026
29:     29                                        Água ozonizada        AO3     6     6       7 05/05/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       7 05/05/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             10:12       10:15                 23.6                 25.1 2026-05-05 10:12:00
 2:    246.39             10:19       10:22                 22.4                 25.1 2026-05-05 10:19:00
 3:    246.21             10:25       10:28                 22.4                 25.2 2026-05-05 10:25:00
 4:    246.31             10:33       10:36                 22.6                 25.3 2026-05-05 10:33:00
 5:    246.29             10:40       10:43                 20.9                 25.3 2026-05-05 10:40:00
 6:    246.26             10:47       10:50                 22.1                 25.5 2026-05-05 10:47:00
 7:    246.14             10:54       10:57                 22.3                 25.4 2026-05-05 10:54:00
 8:    246.21             11:01       11:04                 20.7                 25.3 2026-05-05 11:01:00
 9:    246.14             11:08       11:11                 21.8                 25.5 2026-05-05 11:08:00
10:    246.35             11:15       11:18                 21.6                 25.3 2026-05-05 11:15:00
11:    246.26             11:22       11:25                 21.9                 25.6 2026-05-05 11:22:00
12:    246.30             11:43       11:46                 23.1                 25.0 2026-05-05 11:43:00
13:    246.38             11:36       11:39                 22.9                 25.5 2026-05-05 11:36:00
14:    246.37             11:50       11:53                 21.1                 25.3 2026-05-05 11:50:00
15:    246.15             11:57       12:00                 21.2                 25.3 2026-05-05 11:57:00
16:    246.50             12:04       12:07                 22.2                 25.3 2026-05-05 12:04:00
17:    246.36             12:11       12:14                 21.9                 25.2 2026-05-05 12:11:00
18:    246.30             12:18       12:21                 22.5                 25.1 2026-05-05 12:18:00
19:    246.25             12:25       12:28                 21.1                 25.3 2026-05-05 12:25:00
20:    246.34             12:32       12:35                 20.6                 25.2 2026-05-05 12:32:00
21:    246.23             12:39       12:42                 21.0                 25.1 2026-05-05 12:39:00
22:    246.18             12:46       12:49                 20.7                 25.3 2026-05-05 12:46:00
23:    246.21             12:53       12:56                 20.7                 25.4 2026-05-05 12:53:00
24:    246.31             13:00       13:03                 20.8                 25.1 2026-05-05 13:00:00
25:    246.35             13:07       13:10                 21.0                 25.3 2026-05-05 13:07:00
26:    246.25             13:14       13:17                 20.3                 24.9 2026-05-05 13:14:00
27:    246.25             13:21       13:24                 20.5                 24.8 2026-05-05 13:21:00
28:    246.36             13:27       13:30                 19.5                 25.0 2026-05-05 13:27:00
29:    246.23             13:34       13:37                 19.9                 25.1 2026-05-05 13:34:00
30:    246.35             13:41       13:44                 20.0                 24.8 2026-05-05 13:41:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-05-05 10:15:00
 2: 2026-05-05 10:22:00
 3: 2026-05-05 10:28:00
 4: 2026-05-05 10:36:00
 5: 2026-05-05 10:43:00
 6: 2026-05-05 10:50:00
 7: 2026-05-05 10:57:00
 8: 2026-05-05 11:04:00
 9: 2026-05-05 11:11:00
10: 2026-05-05 11:18:00
11: 2026-05-05 11:25:00
12: 2026-05-05 11:46:00
13: 2026-05-05 11:39:00
14: 2026-05-05 11:53:00
15: 2026-05-05 12:00:00
16: 2026-05-05 12:07:00
17: 2026-05-05 12:14:00
18: 2026-05-05 12:21:00
19: 2026-05-05 12:28:00
20: 2026-05-05 12:35:00
21: 2026-05-05 12:42:00
22: 2026-05-05 12:49:00
23: 2026-05-05 12:56:00
24: 2026-05-05 13:03:00
25: 2026-05-05 13:10:00
26: 2026-05-05 13:17:00
27: 2026-05-05 13:24:00
28: 2026-05-05 13:30:00
29: 2026-05-05 13:37:00
30: 2026-05-05 13:44:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura7 = copy(dados7)
leitura7[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O       NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>     <num>
    1: 2026-05-05 10:00:00.236    125.4583           1 0.3331141 500.3166 2.552657 2.091699 162.98052
    2: 2026-05-05 10:00:00.579    125.4583           1 0.3327318 499.9666 2.552479 2.091127 162.95755
    3: 2026-05-05 10:00:01.704    125.4584           1 0.3314818 498.8224 2.552563 2.089258 162.88243
    4: 2026-05-05 10:00:02.496    125.4584           1 0.3314693 498.0179 2.552623 2.087945 162.82962
    5: 2026-05-05 10:00:03.148    125.4584           1 0.3316185 497.3538 2.552672 2.086860 162.78602
   ---                                                                                               
17672: 2026-05-05 13:59:56.174    125.6250           2 0.3236655 438.3252 2.012625 1.533754  79.76837
17673: 2026-05-05 13:59:57.309    125.6250           2 0.3219233 438.3822 2.013018 1.533108  79.82989
17674: 2026-05-05 13:59:58.084    125.6250           2 0.3219186 438.4211 2.013286 1.532668  79.87185
17675: 2026-05-05 13:59:58.742    125.6250           2 0.3228059 438.4542 2.013514 1.532293  79.90753
17676: 2026-05-05 13:59:59.496    125.6250           2 0.3238297 438.4951 2.013785 1.532259  79.84567
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-05-05 10:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-05-05 10:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-05-05 10:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-05-05 10:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-05-05 10:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
17672: 2026-05-05 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
17673: 2026-05-05 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
17674: 2026-05-05 13:59:58     NA       <NA>    NA    NA      NA        NA                   NA
17675: 2026-05-05 13:59:58     NA       <NA>    NA    NA      NA        NA                   NA
17676: 2026-05-05 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura7[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O       NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>     <num>
    1: 2026-05-05 10:00:00.236    125.4583           1 0.3331141 500.3166 2.552657 2.091699 162.98052
    2: 2026-05-05 10:00:00.579    125.4583           1 0.3327318 499.9666 2.552479 2.091127 162.95755
    3: 2026-05-05 10:00:01.704    125.4584           1 0.3314818 498.8224 2.552563 2.089258 162.88243
    4: 2026-05-05 10:00:02.496    125.4584           1 0.3314693 498.0179 2.552623 2.087945 162.82962
    5: 2026-05-05 10:00:03.148    125.4584           1 0.3316185 497.3538 2.552672 2.086860 162.78602
   ---                                                                                               
17672: 2026-05-05 13:59:56.174    125.6250           2 0.3236655 438.3252 2.012625 1.533754  79.76837
17673: 2026-05-05 13:59:57.309    125.6250           2 0.3219233 438.3822 2.013018 1.533108  79.82989
17674: 2026-05-05 13:59:58.084    125.6250           2 0.3219186 438.4211 2.013286 1.532668  79.87185
17675: 2026-05-05 13:59:58.742    125.6250           2 0.3228059 438.4542 2.013514 1.532293  79.90753
17676: 2026-05-05 13:59:59.496    125.6250           2 0.3238297 438.4951 2.013785 1.532259  79.84567
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-05-05 10:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-05-05 10:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-05-05 10:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-05-05 10:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-05-05 10:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
17672: 2026-05-05 13:59:56     NA       <NA>    NA    NA      NA        NA                   NA
17673: 2026-05-05 13:59:57     NA       <NA>    NA    NA      NA        NA                   NA
17674: 2026-05-05 13:59:58     NA       <NA>    NA    NA      NA        NA                   NA
17675: 2026-05-05 13:59:58     NA       <NA>    NA    NA      NA        NA                   NA
17676: 2026-05-05 13:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura7 = leitura7[MPVPosition == 1 & !is.na(Bottle)]
View(leitura7)


Leitura 8 - 18/05/2026



########################### PREPARAR DADOS ###########################
dados8 = as.data.table(filtrados_leitura8)
id = as.data.table(ID.leitura8)

# Criar início e fim das leituras
id[, start := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), Beginning.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       8 18/05/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       8 18/05/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       8 18/05/2026
 4:      4                                        Água ozonizada        AO3     1     1       8 18/05/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       8 18/05/2026
 6:      6                                Controle - Apenas água        CON     2     2       8 18/05/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       8 18/05/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       8 18/05/2026
 9:      9                                        Água ozonizada        AO3     2     2       8 18/05/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       8 18/05/2026
11:     11                                Controle - Apenas água        CON     3     3       8 18/05/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       8 18/05/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       8 18/05/2026
14:     14                                        Água ozonizada        AO3     3     3       8 18/05/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       8 18/05/2026
16:     16                                Controle - Apenas água        CON     4     4       8 18/05/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       8 18/05/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       8 18/05/2026
19:     19                                        Água ozonizada        AO3     4     4       8 18/05/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       8 18/05/2026
21:     21                                Controle - Apenas água        CON     5     5       8 18/05/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       8 18/05/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       8 18/05/2026
24:     24                                        Água ozonizada        AO3     5     5       8 18/05/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       8 18/05/2026
26:     26                                Controle - Apenas água        CON     6     6       8 18/05/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       8 18/05/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       8 18/05/2026
29:     29                                        Água ozonizada        AO3     6     6       8 18/05/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       8 18/05/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:00       09:03                 23.5                 24.9 2026-05-18 09:00:00
 2:    246.39             09:07       09:10                 22.3                 24.8 2026-05-18 09:07:00
 3:    246.21             09:14       09:17                 21.6                 25.1 2026-05-18 09:14:00
 4:    246.31             09:21       09:24                 22.5                 25.0 2026-05-18 09:21:00
 5:    246.29             09:28       09:31                 23.6                 25.1 2026-05-18 09:28:00
 6:    246.26             09:35       09:38                 22.4                 25.3 2026-05-18 09:35:00
 7:    246.14             09:42       09:45                 22.8                 25.3 2026-05-18 09:42:00
 8:    246.21             09:49       09:52                 22.1                 25.1 2026-05-18 09:49:00
 9:    246.14             09:56       09:59                 22.5                 25.1 2026-05-18 09:56:00
10:    246.35             10:03       10:06                 21.7                 25.1 2026-05-18 10:03:00
11:    246.26             10:10       10:13                 22.3                 25.3 2026-05-18 10:10:00
12:    246.30             10:17       10:20                 22.4                 25.5 2026-05-18 10:17:00
13:    246.38             10:24       10:27                 21.8                 25.5 2026-05-18 10:24:00
14:    246.37             10:31       10:34                 21.6                 25.3 2026-05-18 10:31:00
15:    246.15             10:38       10:41                 21.1                 25.5 2026-05-18 10:38:00
16:    246.50             10:45       10:48                 21.1                 25.1 2026-05-18 10:45:00
17:    246.36             10:52       10:55                 21.8                 25.0 2026-05-18 10:52:00
18:    246.30             10:59       11:02                 21.8                 25.1 2026-05-18 10:59:00
19:    246.25             11:06       11:09                 21.4                 25.2 2026-05-18 11:06:00
20:    246.34             11:13       11:16                 21.5                 25.4 2026-05-18 11:13:00
21:    246.23             11:20       11:23                 21.6                 25.5 2026-05-18 11:20:00
22:    246.18             11:27       11:30                 21.3                 25.2 2026-05-18 11:27:00
23:    246.21             11:34       11:37                 21.9                 25.1 2026-05-18 11:34:00
24:    246.31             11:41       11:44                 21.5                 25.4 2026-05-18 11:41:00
25:    246.35             11:48       11:51                 22.1                 25.1 2026-05-18 11:48:00
26:    246.25             11:55       11:58                 22.1                 25.0 2026-05-18 11:55:00
27:    246.25             12:02       12:05                 21.0                 24.9 2026-05-18 12:02:00
28:    246.36             12:09       12:12                 21.5                 25.0 2026-05-18 12:09:00
29:    246.23             12:16       12:19                 21.6                 25.5 2026-05-18 12:16:00
30:    246.35             12:23       12:26                 21.1                 25.0 2026-05-18 12:23:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
id[, end := as.POSIXct(paste(as.Date(Date, format = "%d/%m/%Y"), End.reading),
  format = "%Y-%m-%d %H:%M",tz = "America/Sao_Paulo")]
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
     <int>                                                <char>     <char> <int> <num>   <int>     <char>
 1:      1                                Controle - Apenas água        CON     1     1       8 18/05/2026
 2:      2 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     1     1       8 18/05/2026
 3:      3            Fezes ovinas tratadas com oleo de girassol        FOG     1     1       8 18/05/2026
 4:      4                                        Água ozonizada        AO3     1     1       8 18/05/2026
 5:      5                             Adubo nitrogenado (ureia)       NMIN     1     1       8 18/05/2026
 6:      6                                Controle - Apenas água        CON     2     2       8 18/05/2026
 7:      7 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     2     2       8 18/05/2026
 8:      8            Fezes ovinas tratadas com oleo de girassol        FOG     2     2       8 18/05/2026
 9:      9                                        Água ozonizada        AO3     2     2       8 18/05/2026
10:     10                                     Adubo nitrogenado       NMIN     2     2       8 18/05/2026
11:     11                                Controle - Apenas água        CON     3     3       8 18/05/2026
12:     12 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     3     3       8 18/05/2026
13:     13            Fezes ovinas tratadas com oleo de girassol        FOG     3     3       8 18/05/2026
14:     14                                        Água ozonizada        AO3     3     3       8 18/05/2026
15:     15                                     Adubo nitrogenado       NMIN     3     3       8 18/05/2026
16:     16                                Controle - Apenas água        CON     4     4       8 18/05/2026
17:     17 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     4     4       8 18/05/2026
18:     18            Fezes ovinas tratadas com oleo de girassol        FOG     4     4       8 18/05/2026
19:     19                                        Água ozonizada        AO3     4     4       8 18/05/2026
20:     20                                     Adubo nitrogenado       NMIN     4     4       8 18/05/2026
21:     21                                Controle - Apenas água        CON     5     5       8 18/05/2026
22:     22 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     5     5       8 18/05/2026
23:     23            Fezes ovinas tratadas com oleo de girassol        FOG     5     5       8 18/05/2026
24:     24                                        Água ozonizada        AO3     5     5       8 18/05/2026
25:     25                                     Adubo nitrogenado       NMIN     5     5       8 18/05/2026
26:     26                                Controle - Apenas água        CON     6     6       8 18/05/2026
27:     27 Fezes ovinas tratadas com oleo de girassol ozonizado       FOGO3     6     6       8 18/05/2026
28:     28            Fezes ovinas tratadas com oleo de girassol        FOG     6     6       8 18/05/2026
29:     29                                        Água ozonizada        AO3     6     6       8 18/05/2026
30:     30                                     Adubo nitrogenado       NMIN     6     6       8 18/05/2026
    Bottle                                            Tratamento Abreviacao Bloco   Rep Leitura       Date
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
        <num>            <char>      <char>                <num>                <num>              <POSc>
 1:    246.61             09:00       09:03                 23.5                 24.9 2026-05-18 09:00:00
 2:    246.39             09:07       09:10                 22.3                 24.8 2026-05-18 09:07:00
 3:    246.21             09:14       09:17                 21.6                 25.1 2026-05-18 09:14:00
 4:    246.31             09:21       09:24                 22.5                 25.0 2026-05-18 09:21:00
 5:    246.29             09:28       09:31                 23.6                 25.1 2026-05-18 09:28:00
 6:    246.26             09:35       09:38                 22.4                 25.3 2026-05-18 09:35:00
 7:    246.14             09:42       09:45                 22.8                 25.3 2026-05-18 09:42:00
 8:    246.21             09:49       09:52                 22.1                 25.1 2026-05-18 09:49:00
 9:    246.14             09:56       09:59                 22.5                 25.1 2026-05-18 09:56:00
10:    246.35             10:03       10:06                 21.7                 25.1 2026-05-18 10:03:00
11:    246.26             10:10       10:13                 22.3                 25.3 2026-05-18 10:10:00
12:    246.30             10:17       10:20                 22.4                 25.5 2026-05-18 10:17:00
13:    246.38             10:24       10:27                 21.8                 25.5 2026-05-18 10:24:00
14:    246.37             10:31       10:34                 21.6                 25.3 2026-05-18 10:31:00
15:    246.15             10:38       10:41                 21.1                 25.5 2026-05-18 10:38:00
16:    246.50             10:45       10:48                 21.1                 25.1 2026-05-18 10:45:00
17:    246.36             10:52       10:55                 21.8                 25.0 2026-05-18 10:52:00
18:    246.30             10:59       11:02                 21.8                 25.1 2026-05-18 10:59:00
19:    246.25             11:06       11:09                 21.4                 25.2 2026-05-18 11:06:00
20:    246.34             11:13       11:16                 21.5                 25.4 2026-05-18 11:13:00
21:    246.23             11:20       11:23                 21.6                 25.5 2026-05-18 11:20:00
22:    246.18             11:27       11:30                 21.3                 25.2 2026-05-18 11:27:00
23:    246.21             11:34       11:37                 21.9                 25.1 2026-05-18 11:34:00
24:    246.31             11:41       11:44                 21.5                 25.4 2026-05-18 11:41:00
25:    246.35             11:48       11:51                 22.1                 25.1 2026-05-18 11:48:00
26:    246.25             11:55       11:58                 22.1                 25.0 2026-05-18 11:55:00
27:    246.25             12:02       12:05                 21.0                 24.9 2026-05-18 12:02:00
28:    246.36             12:09       12:12                 21.5                 25.0 2026-05-18 12:09:00
29:    246.23             12:16       12:19                 21.6                 25.5 2026-05-18 12:16:00
30:    246.35             12:23       12:26                 21.1                 25.0 2026-05-18 12:23:00
    Solo.Seco Beginning.reading End.reading External.temperature Internal.temperature               start
                    end
                 <POSc>
 1: 2026-05-18 09:03:00
 2: 2026-05-18 09:10:00
 3: 2026-05-18 09:17:00
 4: 2026-05-18 09:24:00
 5: 2026-05-18 09:31:00
 6: 2026-05-18 09:38:00
 7: 2026-05-18 09:45:00
 8: 2026-05-18 09:52:00
 9: 2026-05-18 09:59:00
10: 2026-05-18 10:06:00
11: 2026-05-18 10:13:00
12: 2026-05-18 10:20:00
13: 2026-05-18 10:27:00
14: 2026-05-18 10:34:00
15: 2026-05-18 10:41:00
16: 2026-05-18 10:48:00
17: 2026-05-18 10:55:00
18: 2026-05-18 11:02:00
19: 2026-05-18 11:09:00
20: 2026-05-18 11:16:00
21: 2026-05-18 11:23:00
22: 2026-05-18 11:30:00
23: 2026-05-18 11:37:00
24: 2026-05-18 11:44:00
25: 2026-05-18 11:51:00
26: 2026-05-18 11:58:00
27: 2026-05-18 12:05:00
28: 2026-05-18 12:12:00
29: 2026-05-18 12:19:00
30: 2026-05-18 12:26:00
                    end
########################### MPV 1 - LEITURA DOS FRASCOS ###########################
leitura8 = copy(dados8)
leitura8[, c(
  "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") := .(
  NA_integer_, NA_character_, NA_integer_, NA_integer_,NA_integer_, NA_real_, NA_real_)]
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-05-18 08:00:00.234    138.3750           1 0.3363889 498.0335 2.522241 1.941849 154.5771
    2: 2026-05-18 08:00:01.026    138.3750           1 0.3363787 498.0620 2.521272 1.940609 154.6118
    3: 2026-05-18 08:00:01.676    138.3750           1 0.3360332 498.0854 2.520478 1.939592 154.6402
    4: 2026-05-18 08:00:02.437    138.3750           1 0.3356440 498.1288 2.519605 1.940208 154.5930
    5: 2026-05-18 08:00:03.490    138.3750           1 0.3351059 498.0852 2.518400 1.941061 154.5279
   ---                                                                                              
22691: 2026-05-18 12:59:56.377    138.5833           1 0.3371623 501.9600 2.175345 2.466752 154.2754
22692: 2026-05-18 12:59:57.453    138.5833           1 0.3383252 502.0502 2.175419 2.466417 154.3238
22693: 2026-05-18 12:59:58.226    138.5833           1 0.3383222 502.1149 2.175473 2.466176 154.3586
22694: 2026-05-18 12:59:58.573    138.5833           1 0.3369384 502.1441 2.175497 2.466067 154.3742
22695: 2026-05-18 12:59:59.707    138.5833           1 0.3324290 502.2390 2.175433 2.465713 154.4252
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-05-18 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-05-18 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-05-18 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-05-18 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-05-18 08:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
22691: 2026-05-18 12:59:56     NA       <NA>    NA    NA      NA        NA                   NA
22692: 2026-05-18 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
22693: 2026-05-18 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
22694: 2026-05-18 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
22695: 2026-05-18 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
leitura8[MPVPosition == 1,c(
    "Bottle", "Abreviacao", "Bloco", "Rep","Leitura", "Solo.Seco", "Internal.temperature") :=
    id[.SD,.(Bottle, Abreviacao, Bloco, Rep,Leitura, Solo.Seco, Internal.temperature),
       on = .(start <= datetime, end > datetime),mult = "first"]]
Index: <MPVPosition>
             DATE         TIME JULIAN_DAYS MPVPosition   N2O_dry  CO2_dry  CH4_dry      H2O      NH3
           <char>       <char>       <num>       <num>     <num>    <num>    <num>    <num>    <num>
    1: 2026-05-18 08:00:00.234    138.3750           1 0.3363889 498.0335 2.522241 1.941849 154.5771
    2: 2026-05-18 08:00:01.026    138.3750           1 0.3363787 498.0620 2.521272 1.940609 154.6118
    3: 2026-05-18 08:00:01.676    138.3750           1 0.3360332 498.0854 2.520478 1.939592 154.6402
    4: 2026-05-18 08:00:02.437    138.3750           1 0.3356440 498.1288 2.519605 1.940208 154.5930
    5: 2026-05-18 08:00:03.490    138.3750           1 0.3351059 498.0852 2.518400 1.941061 154.5279
   ---                                                                                              
22691: 2026-05-18 12:59:56.377    138.5833           1 0.3371623 501.9600 2.175345 2.466752 154.2754
22692: 2026-05-18 12:59:57.453    138.5833           1 0.3383252 502.0502 2.175419 2.466417 154.3238
22693: 2026-05-18 12:59:58.226    138.5833           1 0.3383222 502.1149 2.175473 2.466176 154.3586
22694: 2026-05-18 12:59:58.573    138.5833           1 0.3369384 502.1441 2.175497 2.466067 154.3742
22695: 2026-05-18 12:59:59.707    138.5833           1 0.3324290 502.2390 2.175433 2.465713 154.4252
                  datetime Bottle Abreviacao Bloco   Rep Leitura Solo.Seco Internal.temperature
                    <POSc>  <int>     <char> <int> <int>   <int>     <num>                <num>
    1: 2026-05-18 08:00:00     NA       <NA>    NA    NA      NA        NA                   NA
    2: 2026-05-18 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    3: 2026-05-18 08:00:01     NA       <NA>    NA    NA      NA        NA                   NA
    4: 2026-05-18 08:00:02     NA       <NA>    NA    NA      NA        NA                   NA
    5: 2026-05-18 08:00:03     NA       <NA>    NA    NA      NA        NA                   NA
   ---                                                                                         
22691: 2026-05-18 12:59:56     NA       <NA>    NA    NA      NA        NA                   NA
22692: 2026-05-18 12:59:57     NA       <NA>    NA    NA      NA        NA                   NA
22693: 2026-05-18 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
22694: 2026-05-18 12:59:58     NA       <NA>    NA    NA      NA        NA                   NA
22695: 2026-05-18 12:59:59     NA       <NA>    NA    NA      NA        NA                   NA
# Manter apenas as leituras válidas dos frascos
leitura8 = leitura8[MPVPosition == 1 & !is.na(Bottle)]
View(leitura8)


Backgorunds



########################### FUNÇÃO PARA EXTRAIR O BACKGROUND ###########################
criar_background = function(dados, leitura) {
  # Identificar o início real da leitura de cada frasco
  mapa = leitura[, .(
    inicio_leitura = min(datetime),
    Abreviacao = data.table::first(Abreviacao),
    Bloco = data.table::first(Bloco),
    Rep = data.table::first(Rep),
    Leitura = data.table::first(Leitura),
    Solo.Seco = data.table::first(Solo.Seco),
    Internal.temperature = data.table::first(Internal.temperature)), by = Bottle]

  # Definir os 4 minutos anteriores à leitura
  mapa[, background_start := inicio_leitura - 240]
  # Manter apenas dados do MPVPosition 2
  bg_raw = dados[MPVPosition == 2]
  # Extrair separadamente o background de cada frasco
  background = data.table::rbindlist(
    lapply(seq_len(nrow(mapa)), function(i) {
      m = mapa[i]
      bg = data.table::copy(
        bg_raw[datetime >= m$background_start & datetime <  m$inicio_leitura])
      if (nrow(bg) == 0) return(NULL)
      bg[, `:=`(
        Bottle = m$Bottle,
        Abreviacao = m$Abreviacao,
        Bloco = m$Bloco,
        Rep = m$Rep,
        Leitura = m$Leitura,
        Solo.Seco = m$Solo.Seco,
        Internal.temperature = m$Internal.temperature,
        inicio_leitura = m$inicio_leitura,
        # Tempo desde o início dos 4 min de background
        t_background = as.numeric(
          difftime(datetime,m$background_start,units = "secs")))]
      bg}),use.names = TRUE,fill = TRUE)
  return(background)}

########################### CRIAR OS 8 BACKGROUNDS ###########################

background1 = criar_background(dados1, leitura1)
background2 = criar_background(dados2, leitura2)
background3 = criar_background(dados3, leitura3)
background4 = criar_background(dados4, leitura4)
background5 = criar_background(dados5, leitura5)
background6 = criar_background(dados6, leitura6)
background7 = criar_background(dados7, leitura7)
background8 = criar_background(dados8, leitura8)


Juntar as 8 leituras e backgrounds



########################### Leituras ###########################
Leituras_completas = dplyr::bind_rows(
  leitura1,leitura2,leitura3,leitura4,leitura5,leitura6,leitura7,leitura8)
View(Leituras_completas)

dim(Leituras_completas)
[1] 46905    17
table(Leituras_completas$Leitura)

   1    2    3    4    5    6    7    8 
5048 6296 5105 5845 5370 6545 6299 6397 
str(Leituras_completas)
Classes ‘data.table’ and 'data.frame':  46905 obs. of  17 variables:
 $ DATE                : chr  "2026-04-15" "2026-04-15" "2026-04-15" "2026-04-15" ...
 $ TIME                : chr  "09:09:52.979" "09:09:53.765" "09:09:54.828" "09:09:55.624" ...
 $ JULIAN_DAYS         : num  105 105 105 105 105 ...
 $ MPVPosition         : num  1 1 1 1 1 1 1 1 1 1 ...
 $ N2O_dry             : num  0.339 0.351 0.368 0.368 0.399 ...
 $ CO2_dry             : num  783 783 817 843 854 ...
 $ CH4_dry             : num  2.85 2.86 2.87 2.88 2.89 ...
 $ H2O                 : num  2.09 2.15 2.22 2.28 2.31 ...
 $ NH3                 : num  173 175 179 182 183 ...
 $ datetime            : POSIXct, format: "2026-04-15 09:09:52" "2026-04-15 09:09:53" "2026-04-15 09:09:54" "2026-04-15 09:09:55" ...
 $ Bottle              : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Abreviacao          : chr  "CON" "CON" "CON" "CON" ...
 $ Bloco               : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Rep                 : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Leitura             : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Solo.Seco           : num  247 247 247 247 247 ...
 $ Internal.temperature: num  25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 ...
 - attr(*, ".internal.selfref")=<externalptr> 
########################### backgrounds ###########################
background_completo = dplyr::bind_rows(
  background1,background2,background3,background4,background5,background6,background7,background8)
View(background_completo)

dim(background_completo)
[1] 71118    19
table(background_completo$Leitura)

   1    2    3    4    5    6    7    8 
8707 8909 9001 9011 8829 8940 8739 8982 
str(background_completo)
Classes ‘data.table’ and 'data.frame':  71118 obs. of  19 variables:
 $ DATE                : chr  "2026-04-15" "2026-04-15" "2026-04-15" "2026-04-15" ...
 $ TIME                : chr  "09:05:53.203" "09:05:53.529" "09:05:54.671" "09:05:55.453" ...
 $ JULIAN_DAYS         : num  105 105 105 105 105 ...
 $ MPVPosition         : num  2 2 2 2 2 2 2 2 2 2 ...
 $ N2O_dry             : num  0.332 0.333 0.338 0.338 0.335 ...
 $ CO2_dry             : num  771 771 770 770 769 ...
 $ CH4_dry             : num  2.85 2.85 2.85 2.85 2.85 ...
 $ H2O                 : num  2.01 2.01 2.01 2.01 2.01 ...
 $ NH3                 : num  173 173 173 172 172 ...
 $ datetime            : POSIXct, format: "2026-04-15 09:05:53" "2026-04-15 09:05:53" "2026-04-15 09:05:54" "2026-04-15 09:05:55" ...
 $ Bottle              : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Abreviacao          : chr  "CON" "CON" "CON" "CON" ...
 $ Bloco               : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Rep                 : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Leitura             : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Solo.Seco           : num  247 247 247 247 247 ...
 $ Internal.temperature: num  25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 ...
 $ inicio_leitura      : POSIXct, format: "2026-04-15 09:09:52" "2026-04-15 09:09:52" "2026-04-15 09:09:52" "2026-04-15 09:09:52" ...
 $ t_background        : num  0.224 0.55 1.692 2.474 3.126 ...
 - attr(*, ".internal.selfref")=<externalptr> 


3 - Controle de qualidade e definição da janela de leitura



Leituras



dados_proc = Leituras_completas %>% 
  dplyr::mutate(BottleID = paste(Leitura,Bottle,Abreviacao,Bloco,Rep,sep = "_")) %>%
  dplyr::group_by(BottleID) %>%
  dplyr::arrange(datetime, .by_group = TRUE) %>%
  dplyr::mutate(t_sec = as.numeric(difftime(datetime, min(datetime), units = "secs"))) %>%
  dplyr::ungroup()
head(dados_proc)

########################### PREPARAR DADOS ###########################
dados_diagnostico = dados_proc %>% dplyr::filter(t_sec <= 120) %>%
  dplyr::select(BottleID, t_sec,CO2_dry, N2O_dry, CH4_dry, H2O, NH3) %>%
  tidyr::pivot_longer(cols = c(CO2_dry, N2O_dry, CH4_dry, H2O, NH3),
    names_to = "Gas",values_to = "Concentracao") %>%
  dplyr::mutate(Gas = dplyr::recode(Gas,
      "CH4_dry"="CH4 (ppm)","CO2_dry"="CO2 (ppm)","N2O_dry"="N2O (ppm)","H2O"="H2O (%)","NH3"= "NH3 (ppb)"))

########################### FIGURA S2 - PERFIL DAS LEITURAS ###########################
fig_S2 = ggplot(dados_diagnostico, aes(x = t_sec, y = Concentracao, group = BottleID)) +
  geom_line(alpha = 0.35) +
  geom_vline(xintercept = c(15, 45), linetype = "dashed") +
  facet_wrap(~ Gas, scales = "free_y", ncol = 3) +
  labs(x = "Reading time (s)",y = "Concentration") + theme_bw() +
  scale_x_continuous(breaks = seq(0, 120, by = 15))+
  theme(strip.text = element_text(hjust = 0.5, face = "bold"),panel.spacing = unit(1, "lines"))
fig_S2

ggsave("Figure S2.png",fig_S2, width = 10, height = 6, dpi = 300, bg = "white")


########################### AVALIAR JANELAS CANDIDATAS ###########################
gases_qc = c("CO2_dry", "N2O_dry", "CH4_dry")
janelas = data.frame(Janela = c("15-35", "15-45", "15-60","20-40", "20-50", "20-60"),
  inicio = c(15, 15, 15, 20, 20, 20), fim = c(35, 45, 60, 40, 50, 60))

avaliacao_janelas = dplyr::bind_rows(lapply(seq_len(nrow(janelas)), function(i) {
    ini = janelas$inicio[i]
    fim = janelas$fim[i]
    dplyr::bind_rows(lapply(gases_qc, function(g) {dados_proc %>%
          dplyr::filter(t_sec >= ini, t_sec <= fim) %>%
          dplyr::group_by(BottleID) %>%
          dplyr::summarise(media = mean(.data[[g]], na.rm = TRUE),sd = sd(.data[[g]], na.rm = TRUE),
            slope = cov(t_sec,.data[[g]],use = "complete.obs") / var(t_sec, na.rm = TRUE),.groups = "drop") %>%
          dplyr::mutate(Gas = g,Janela = janelas$Janela[i],
            # Coeficiente de variação dentro da janela
            CV = (sd / abs(media)) * 100,
            # Mudança estimada da concentração ao longo da janela
            Drift = abs(slope) * (fim - ini) / abs(media) * 100)}))}))

########################### ESTABILIDADE DAS JANELAS ###########################
tab_S2 = avaliacao_janelas %>% dplyr::group_by(Gas, Janela) %>%
  dplyr::summarise(CV_mediano = median(CV, na.rm = TRUE), CV_P90 = quantile(CV, 0.90, na.rm = TRUE),
    Drift_mediano = median(Drift, na.rm = TRUE),
    Drift_P90 = quantile(Drift, 0.90, na.rm = TRUE),.groups = "drop") %>%
  dplyr::mutate(Janela = factor(Janela, levels = janelas$Janela)) %>%
  dplyr::arrange(Gas, Janela)
print(tab_S2)
# A tibble: 18 × 6
   Gas     Janela CV_mediano CV_P90 Drift_mediano Drift_P90
   <chr>   <fct>       <dbl>  <dbl>         <dbl>     <dbl>
 1 CH4_dry 15-35      0.0267 0.0439        0.0482     0.109
 2 CH4_dry 15-45      0.0301 0.0496        0.0449     0.118
 3 CH4_dry 15-60      0.0351 0.0544        0.0509     0.120
 4 CH4_dry 20-40      0.0258 0.0437        0.0456     0.112
 5 CH4_dry 20-50      0.0293 0.0521        0.0449     0.120
 6 CH4_dry 20-60      0.0339 0.0538        0.0457     0.133
 7 CO2_dry 15-35      0.131  0.328         0.440      1.09 
 8 CO2_dry 15-45      0.228  0.558         0.761      1.88 
 9 CO2_dry 15-60      0.391  0.928         1.30       3.19 
10 CO2_dry 20-40      0.151  0.366         0.506      1.24 
11 CO2_dry 20-50      0.256  0.612         0.863      2.08 
12 CO2_dry 20-60      0.358  0.875         1.22       3.04 
13 N2O_dry 15-35      1.27   1.84          1.07       3.24 
14 N2O_dry 15-45      1.34   1.80          1.12       2.67 
15 N2O_dry 15-60      1.37   1.83          1.20       2.81 
16 N2O_dry 20-40      1.26   1.88          1.24       3.24 
17 N2O_dry 20-50      1.31   1.85          1.10       2.82 
18 N2O_dry 20-60      1.35   1.83          1.33       2.86 
########################### FIGURA S3 - COMPARAÇÃO DAS JANELAS ###########################
dados_fig_S3 = tab_S2 %>%
  dplyr::select(Gas, Janela, CV_P90, Drift_P90) %>%
  tidyr::pivot_longer(cols = c(CV_P90, Drift_P90),names_to = "Metrica",values_to = "Valor") %>%
  dplyr::mutate(
    Gas = dplyr::recode(Gas,"CH4_dry"="CH4 (ppm)","CO2_dry"="CO2 (ppm)","N2O_dry"="N2O (ppm)"),
    Metrica = dplyr::recode(Metrica,"CV_P90" = "CV P90 (%)","Drift_P90" = "Drift P90 (%)"))

fig_S3 = ggplot(dados_fig_S3,aes(x = Janela, y = Valor, group = Gas)) +
  geom_line() + geom_point(size = 2) +
  facet_grid(Metrica ~ Gas, scales = "free_y") + 
  labs(x = "Reading window (s)",y = "Value (%)") + theme_bw() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),strip.text = element_text(face = "bold", hjust = 0.5))
fig_S3

ggsave("Figure S3.png",fig_S3, width = 10, height = 6, dpi = 400, bg = "white")


########################### JANELA FINAL: 15-45 s ###########################
dados_estaveis = dados_proc %>% dplyr::filter(t_sec >= 15, t_sec <= 45)

########################### CONCENTRAÇÕES MÉDIAS ###########################
medias_leituras = dados_estaveis %>% dplyr::group_by(
    Leitura, Bottle, Abreviacao, Bloco, Rep) %>%
  dplyr::summarise(
    Temperatura = mean(Internal.temperature, na.rm = TRUE),
    Peso.solo = mean(Solo.Seco, na.rm = TRUE),
    N2O = mean(N2O_dry, na.rm = TRUE),
    CO2 = mean(CO2_dry, na.rm = TRUE),
    CH4 = mean(CH4_dry, na.rm = TRUE),
    # Mantido apenas como controle de qualidade
    H2O_QC = mean(H2O, na.rm = TRUE),
    n_obs = dplyr::n(),.groups = "drop")
View(medias_leituras)


Background



########################### PREPARAR DADOS ###########################
background_proc = background_completo %>% dplyr::mutate(
    BottleID = paste(Leitura, Bottle, Abreviacao, Bloco, Rep,sep = "_"))
head(background_proc)


########################### PREPARAR DADOS PARA DIAGNÓSTICO ###########################
background_diagnostico = background_proc %>% dplyr::filter(
    t_background >= 0,t_background <= 240) %>%
  dplyr::select(BottleID,t_background,CO2_dry,N2O_dry,CH4_dry,H2O) %>%
  tidyr::pivot_longer(cols = c(CO2_dry, N2O_dry, CH4_dry, H2O),names_to = "Gas",values_to = "Concentracao") %>%
  dplyr::mutate(
    Gas = dplyr::recode(Gas,"CH4_dry"="CH4 (ppm)","CO2_dry"="CO2 (ppm)","N2O_dry"="N2O (ppm)","H2O"="H2O (%)"))

########################### FIGURA S4 - PERFIL DO BACKGROUND ###########################
fig_S4 = ggplot(background_diagnostico,aes(x = t_background,y = Concentracao,group = BottleID)) +
  geom_line(alpha = 0.30) +
  geom_vline(xintercept = c(60, 90),linetype = "dashed") +
  facet_wrap(~ Gas,scales = "free_y",ncol = 2) +
  scale_x_continuous(breaks = seq(0, 240, by = 30)) +
  labs(x = "Background measurement time (s)",y = "Concentration") +
  theme_bw()+theme(strip.text = element_text(hjust = 0.5,face = "bold"),panel.spacing = grid::unit(1, "lines"))
fig_S4

ggsave("Figure S4.png",fig_S4,width = 9,height = 7,dpi = 300,bg = "white")


########################### AVALIAR JANELAS DO BACKGROUND ###########################
gases_bg = c("CO2_dry","N2O_dry","CH4_dry")

janelas_bg = data.frame(Janela = c("20-50","30-60","30-90","60-90","60-120","180-240"),
  inicio = c(20,30,30,60,60,180),fim = c(50,60,90,90,120,240))

avaliacao_bg = dplyr::bind_rows(
  lapply(seq_len(nrow(janelas_bg)), function(i) {
    ini = janelas_bg$inicio[i]
    fim = janelas_bg$fim[i]
    dplyr::bind_rows(lapply(gases_bg, function(g) {
        background_proc %>%
          dplyr::filter(t_background >= ini,t_background <= fim) %>%
          dplyr::group_by(BottleID) %>%
          dplyr::summarise(media = mean(.data[[g]],na.rm = TRUE),
            sd = sd(.data[[g]],na.rm = TRUE),
            slope = cov(t_background,.data[[g]],
                        use = "complete.obs") /var(t_background,na.rm = TRUE),.groups = "drop") %>%
          dplyr::mutate(Gas = g,
            Janela = janelas_bg$Janela[i],
            # Coeficiente de variação dentro da janela
            CV = (sd / abs(media)) * 100,
            # Mudança relativa estimada ao longo da janela
            Drift = abs(slope) * (fim - ini) / abs(media) * 100)}))}))

########################### RESUMO DAS JANELAS ###########################
resumo_bg = avaliacao_bg %>%
  dplyr::group_by(Gas,Janela) %>%
  dplyr::summarise(CV_mediano = median(CV,na.rm = TRUE),
    CV_P90 = quantile(CV,0.90,na.rm = TRUE),
    Drift_mediano = median(Drift,na.rm = TRUE),
    Drift_P90 = quantile(Drift,0.90,na.rm = TRUE),.groups = "drop") %>%
  dplyr::mutate(Janela = factor(Janela,levels = janelas_bg$Janela)) %>%
  dplyr::arrange(Gas,Janela)
print(resumo_bg)
# A tibble: 18 × 6
   Gas     Janela  CV_mediano CV_P90 Drift_mediano Drift_P90
   <chr>   <fct>        <dbl>  <dbl>         <dbl>     <dbl>
 1 CH4_dry 20-50       0.0686  0.193         0.149     0.492
 2 CH4_dry 30-60       0.0594  0.211         0.144     0.582
 3 CH4_dry 30-90       0.0954  0.340         0.194     1.06 
 4 CH4_dry 60-90       0.0560  0.193         0.120     0.598
 5 CH4_dry 60-120      0.0836  0.310         0.167     0.834
 6 CH4_dry 180-240     0.110   0.402         0.229     1.20 
 7 CO2_dry 20-50       0.628   2.79          1.02      5.76 
 8 CO2_dry 30-60       0.550   3.18          1.00      6.29 
 9 CO2_dry 30-90       0.883   3.88          1.14      6.81 
10 CO2_dry 60-90       0.565   2.75          0.998     5.13 
11 CO2_dry 60-120      0.768   3.30          0.982     5.06 
12 CO2_dry 180-240     1.01    5.06          1.10      8.57 
13 N2O_dry 20-50       1.61    2.24          1.77      4.43 
14 N2O_dry 30-60       1.46    1.92          1.33      3.01 
15 N2O_dry 30-90       1.52    1.88          1.12      2.84 
16 N2O_dry 60-90       1.43    1.91          1.19      3.11 
17 N2O_dry 60-120      1.48    1.83          0.915     2.45 
18 N2O_dry 180-240     1.51    1.85          0.903     2.54 
########################### FIGURA S5 - COMPARAÇÃO DAS JANELAS ###########################
dados_fig_S5 = resumo_bg %>% dplyr::select(
  Gas,Janela,CV_P90,Drift_P90) %>%
  tidyr::pivot_longer(cols = c(CV_P90,Drift_P90),
    names_to = "Metrica",values_to = "Valor") %>%
  dplyr::mutate(Gas = dplyr::recode(
      Gas,"CH4_dry" = "CH4 (ppm)","CO2_dry" = "CO2 (ppm)","N2O_dry" = "N2O (ppm)"),
    Metrica = dplyr::recode(Metrica,"CV_P90" = "CV P90 (%)","Drift_P90" = "Drift P90 (%)"))

fig_S5 = ggplot(dados_fig_S5,aes(x = Janela,y = Valor,group = Gas)) +
  geom_line() +
  geom_point(size = 2) +
  facet_grid(Metrica ~ Gas,scales = "free_y") +
  labs(x = "Background window (s)",y = "Value (%)") +
  theme_bw() + theme(axis.text.x = element_text(angle = 45,hjust = 1),
    strip.text = element_text(face = "bold",hjust = 0.5))
fig_S5

ggsave("Figure S5.png",fig_S5,width = 10,height = 6,dpi = 400,bg = "white")


########################### BACKGROUND FINAL: 60-90 s ###########################
background_estavel = background_proc %>%
  dplyr::filter(t_background >= 60,t_background <= 90)

########################### CONCENTRAÇÕES MÉDIAS DO BACKGROUND ###########################
medias_background = background_estavel %>%
  dplyr::group_by(Leitura,Bottle) %>%
  dplyr::summarise(
    CO2_bg = mean(CO2_dry,na.rm = TRUE),
    N2O_bg = mean(N2O_dry,na.rm = TRUE),
    CH4_bg = mean(CH4_dry,na.rm = TRUE),
    # Mantido apenas como controle de qualidade
    H2O_bg = mean(H2O,na.rm = TRUE),
    n_obs_bg = dplyr::n(),.groups = "drop")
nrow(medias_background)
[1] 239
View(medias_background)


4 - Calcular emissão e normalizar por g de solo seco



########################### JUNTAR LEITURA E BACKGROUND ###########################
dados_fluxo = medias_leituras %>%
  dplyr::left_join(medias_background,by = c("Leitura", "Bottle"))

# Conferir se todos os frascos receberam background
nrow(dados_fluxo)
[1] 240
colSums(is.na(dados_fluxo[, c("CO2_bg","N2O_bg","CH4_bg")]))
CO2_bg N2O_bg CH4_bg 
     1      1      1 
View(dados_fluxo)


########################### CONSTANTES ###########################
R = 0.082057        # L atm mol-1 K-1
P = 0.927           # atm - estimada para altitude de 633 m
Vh = 0.700          # L - volume do headspace
tempo = 4           # min - período de fechamento do frasco
MM.CH4 = 16.04      # g mol-1
MM.N2O = 44.013     # g mol-1
MM.CO2 = 44.0095    # g mol-1

########################### CORRIGIR PELO BACKGROUND ###########################
dados_fluxo = dados_fluxo %>% dplyr::mutate(
    # Temperatura do headspace em Kelvin
    T_K = Temperatura + 273.15,
    # Diferença entre concentração do frasco e ar ambiente
    Delta_CH4 = CH4 - CH4_bg,
    Delta_N2O = N2O - N2O_bg,
    Delta_CO2 = CO2 - CO2_bg)

########################### MASSA ACUMULADA EM 4 MIN ###########################
dados_fluxo = dados_fluxo %>% dplyr::mutate(
    # Massa acumulada no headspace durante os 4 min (µg)
    CH4_ug_4min = Delta_CH4 * Vh * MM.CH4 * P / (R * T_K),
    N2O_ug_4min = Delta_N2O * Vh * MM.N2O * P / (R * T_K),
    CO2_ug_4min = Delta_CO2 * Vh * MM.CO2 * P / (R * T_K))

########################### NORMALIZAR POR SOLO SECO E TEMPO ###########################
dados_fluxo = dados_fluxo %>% dplyr::mutate(
    # µg de gás g-1 de solo seco h-1
    Emissao_CH4_ug_g_h = CH4_ug_4min * (60 / tempo) / Peso.solo,
    Emissao_N2O_ug_g_h = N2O_ug_4min * (60 / tempo) / Peso.solo,
    Emissao_CO2_ug_g_h = CO2_ug_4min * (60 / tempo) / Peso.solo)
View(dados_fluxo)


5 - Calcular emissões acumuladas



########################### IDENTIFICAR OS DIAS ###########################
dias_leitura = c(1, 2, 3, 5, 8, 13, 21, 34)
dados_acumulo = dados_fluxo %>%
  dplyr::mutate(Dia = dias_leitura[Leitura]) %>%
  dplyr::arrange(Bottle,Dia)
View(dados_acumulo)


########################### CALCULAR EMISSÕES ACUMULADAS ###########################
emissoes_acumuladas = dados_acumulo %>%
  dplyr::group_by(Bottle,Abreviacao,Bloco,Rep) %>%
  dplyr::arrange(Dia, .by_group = TRUE) %>%
  dplyr::summarise(
    CH4_acumulado_ug_g =sum((
      Emissao_CH4_ug_g_h+dplyr::lead(Emissao_CH4_ug_g_h))/2*(dplyr::lead(Dia)-Dia)*24,na.rm = TRUE),
    N2O_acumulado_ug_g =sum((
      Emissao_N2O_ug_g_h+dplyr::lead(Emissao_N2O_ug_g_h))/2*(dplyr::lead(Dia)-Dia)*24,na.rm = TRUE),
    CO2_acumulado_ug_g =sum((
      Emissao_CO2_ug_g_h+dplyr::lead(Emissao_CO2_ug_g_h))/2*(dplyr::lead(Dia)-Dia)*24,na.rm = TRUE),.groups = "drop")
View(emissoes_acumuladas)


5 - Análise estatística



6.1 - Dinâmica temporal das emissões



6.1.1 - MODELOS CANDIDATOS



dados_acumulo$Abreviacao=as.factor(dados_acumulo$Abreviacao)
dados_acumulo$Dia=as.factor(dados_acumulo$Dia)
dados_acumulo$Bloco=as.factor(dados_acumulo$Bloco)
str(dados_acumulo)
tibble [240 × 28] (S3: tbl_df/tbl/data.frame)
 $ Leitura           : int [1:240] 1 2 3 4 5 6 7 8 1 2 ...
 $ Bottle            : int [1:240] 1 1 1 1 1 1 1 1 2 2 ...
 $ Abreviacao        : Factor w/ 5 levels "AO3","CON","FOG",..: 2 2 2 2 2 2 2 2 4 4 ...
 $ Bloco             : Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Rep               : int [1:240] 1 1 1 1 1 1 1 1 1 1 ...
 $ Temperatura       : num [1:240] 25.5 24.9 25.1 25.2 25 25.3 25.1 24.9 24.6 25.3 ...
 $ Peso.solo         : num [1:240] 247 247 247 247 247 ...
 $ N2O               : num [1:240] 0.514 0.336 0.348 0.35 0.398 ...
 $ CO2               : num [1:240] 977 825 899 715 1525 ...
 $ CH4               : num [1:240] 2.9 2.7 3.1 3.25 2.94 ...
 $ H2O_QC            : num [1:240] 3.26 3.28 3.14 3.21 3.13 ...
 $ n_obs             : int [1:240] 37 38 38 38 38 38 37 38 37 38 ...
 $ CO2_bg            : num [1:240] 779 604 645 544 521 ...
 $ N2O_bg            : num [1:240] 0.329 0.332 0.332 0.334 0.332 ...
 $ CH4_bg            : num [1:240] 2.84 2.66 3.12 3.25 2.57 ...
 $ H2O_bg            : num [1:240] 2.04 2.04 1.86 2.17 1.79 ...
 $ n_obs_bg          : int [1:240] 37 38 38 37 38 38 37 38 37 37 ...
 $ T_K               : num [1:240] 299 298 298 298 298 ...
 $ Delta_CH4         : num [1:240] 0.06337 0.03605 -0.01267 -0.00668 0.36543 ...
 $ Delta_N2O         : num [1:240] 0.1854 0.0049 0.016 0.0161 0.0661 ...
 $ Delta_CO2         : num [1:240] 198 221 254 171 1004 ...
 $ CH4_ug_4min       : num [1:240] 0.02692 0.01534 -0.00539 -0.00284 0.15547 ...
 $ N2O_ug_4min       : num [1:240] 0.21606 0.00572 0.01864 0.01878 0.07717 ...
 $ CO2_ug_4min       : num [1:240] 230 258 297 199 1172 ...
 $ Emissao_CH4_ug_g_h: num [1:240] 0.001637 0.000933 -0.000328 -0.000173 0.009456 ...
 $ Emissao_N2O_ug_g_h: num [1:240] 0.013142 0.000348 0.001134 0.001142 0.004694 ...
 $ Emissao_CO2_ug_g_h: num [1:240] 14 15.7 18 12.1 71.3 ...
 $ Dia               : Factor w/ 8 levels "1","2","3","5",..: 1 2 3 4 5 6 7 8 1 2 ...
########################### CO2 ###########################
library(lme4)
library(lmerTest)
# Sem bloco e sem efeito aleatório
mod1 = lm(Emissao_CO2_ug_g_h ~ Abreviacao * Dia,data = dados_acumulo)
# Com bloco
mod2 = lm(Emissao_CO2_ug_g_h ~ Abreviacao * Dia + Bloco,data = dados_acumulo)
# Com Bottle como efeito aleatório
mod3 = lmer(Emissao_CO2_ug_g_h ~ Abreviacao * Dia + (1 | Bottle),data = dados_acumulo,REML = FALSE)
# Com bloco + Bottle
mod4 = lmer(Emissao_CO2_ug_g_h~Abreviacao* Dia + Bloco + (1|Bottle), data = dados_acumulo,REML = FALSE)

########################### COMPARAR MODELOS ###########################
AIC(mod1, mod2, mod3, mod4)
BIC(mod1, mod2, mod3, mod4)
VarCorr(mod3)
 Groups   Name        Std.Dev.
 Bottle   (Intercept)  1.6032 
 Residual             49.8551 
VarCorr(mod4)
 Groups   Name        Std.Dev.
 Bottle   (Intercept)  0.000  
 Residual             48.978  
isSingular(mod3)
[1] FALSE
isSingular(mod4)
[1] TRUE
# Resultado: mod1 é mais simples, com menor AIC e BIC, mod2 e mod3 piorou AIC/BIC e mod4 é singular.

########################### MODELO FINAL - CO2 ###########################
mod_CO2 = mod1


########################### CH4 ###########################
# Sem bloco e sem efeito aleatório
mod1 = lm(Emissao_CH4_ug_g_h ~ Abreviacao * Dia,data = dados_acumulo)
# Com bloco
mod2 = lm(Emissao_CH4_ug_g_h ~ Abreviacao * Dia + Bloco,data = dados_acumulo)
# Com Bottle como efeito aleatório
mod3 = lmer(Emissao_CH4_ug_g_h ~ Abreviacao * Dia + (1 | Bottle),data = dados_acumulo,REML = FALSE)
# Com bloco + Bottle
mod4 = lmer(Emissao_CH4_ug_g_h~Abreviacao * Dia + Bloco + (1|Bottle), data = dados_acumulo, REML = FALSE)

########################### COMPARAR MODELOS ###########################
AIC(mod1, mod2, mod3, mod4)
BIC(mod1, mod2, mod3, mod4)
VarCorr(mod3)
 Groups   Name        Std.Dev.  
 Bottle   (Intercept) 0.00043979
 Residual             0.00157671
VarCorr(mod4)
 Groups   Name        Std.Dev.  
 Bottle   (Intercept) 0.00027098
 Residual             0.00157683
isSingular(mod3)
[1] FALSE
isSingular(mod4)
[1] FALSE
# Resultado: Mesma coisa para metano

########################### MODELO FINAL - CH4 ###########################
mod_CH4 = mod1


########################### N2O ###########################
# Sem bloco e sem efeito aleatório
mod1 = lm(Emissao_N2O_ug_g_h ~ Abreviacao * Dia,data = dados_acumulo)
# Com bloco
mod2 = lm(Emissao_N2O_ug_g_h ~ Abreviacao * Dia + Bloco, data = dados_acumulo)
# Com Bottle como efeito aleatório
mod3 = lmer(Emissao_N2O_ug_g_h ~ Abreviacao * Dia + (1 | Bottle),data = dados_acumulo,REML = FALSE)
# Com bloco + Bottle
mod4 = lmer(Emissao_N2O_ug_g_h~Abreviacao * Dia + Bloco + (1|Bottle), data = dados_acumulo,REML = FALSE)

########################### COMPARAR MODELOS ###########################
AIC(mod1, mod2, mod3, mod4)
BIC(mod1, mod2, mod3, mod4)
VarCorr(mod3)
 Groups   Name        Std.Dev.
 Bottle   (Intercept) 0.000000
 Residual             0.023622
VarCorr(mod4)
 Groups   Name        Std.Dev.
 Bottle   (Intercept) 0.00000 
 Residual             0.02333 
isSingular(mod3)
[1] TRUE
isSingular(mod4)
[1] TRUE
# Resultado: Mesma coisa para N2O

########################### MODELO FINAL - N2O ###########################
mod_N2O = mod1


6.1.2 - Pressupostos



shapiro.test(resid(mod_N2O_sqrt))

    Shapiro-Wilk normality test

data:  resid(mod_N2O_sqrt)
W = 0.8537, p-value = 1.581e-13


6.1.3 - ANOVA, TUKEY E MÉDIAS



library(dplyr)
library(emmeans)
library(multcomp)

mapa_vars = data.frame(original = c("Emissao_CO2_ug_g_h","Emissao_N2O_ug_g_h","Emissao_CH4_ug_g_h"),
  modelo = c("CO2_log","N2O_log","CH4_log"))

resultados = list()
for(i in 1:nrow(mapa_vars)){
  var_orig = mapa_vars$original[i]
  var_mod = mapa_vars$modelo[i]
  cat("\n\n################ Variável:", var_orig, "################\n")
  # Modelo
  formula_mod = as.formula(paste0(var_mod, " ~ Abreviacao * Dia"))
  mod = lm(formula_mod, data = dados_acumulo)
  # ANOVA
  cat("\nANOVA:\n")
  print(anova(mod))
  # Médias estimadas
  em = emmeans(mod, ~ Abreviacao | Dia)
  # Tukey
  cat("\nTeste de Tukey:\n")
  print(pairs(em, adjust = "tukey"))
  # Letras
  grupos = multcomp::cld(em,alpha = 0.05,Letters = letters,sort = TRUE,decreasing = FALSE)
  letras = data.frame(Dia = grupos$Dia,Abreviacao = grupos$Abreviacao,letra = trimws(grupos$.group))
  # Média e SE dos dados originais
  medias = dados_acumulo %>%
    group_by(Dia, Abreviacao) %>%
    summarise(media = mean(.data[[var_orig]], na.rm = TRUE),
      se = sd(.data[[var_orig]], na.rm = TRUE)/sqrt(sum(!is.na(.data[[var_orig]]))),.groups = "drop")
  # Tabela
  tabela = medias %>%
    left_join(letras, by = c("Dia", "Abreviacao")) %>%
    dplyr::mutate(variavel = var_orig) %>%
    dplyr::select(variavel,Dia,Tratamento = Abreviacao,media,se,letra)
  resultados[[var_orig]] = tabela}


################ Variável: Emissao_CO2_ug_g_h ################

ANOVA:
Analysis of Variance Table

Response: CO2_log
                Df  Sum Sq Mean Sq F value    Pr(>F)    
Abreviacao       4  66.242 16.5605 16.8172 7.339e-12 ***
Dia              7  41.273  5.8961  5.9875 2.497e-06 ***
Abreviacao:Dia  28  44.622  1.5937  1.6184   0.03196 *  
Residuals      195 192.023  0.9847                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Teste de Tukey:
Dia = 1:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     0.10777 0.601 195   0.179  0.9998
 AO3 - FOG    -1.34922 0.573 195  -2.355  0.1324
 AO3 - FOGO3  -1.83462 0.573 195  -3.202  0.0136
 AO3 - NMIN   -1.08931 0.601 195  -1.813  0.3691
 CON - FOG    -1.45699 0.601 195  -2.425  0.1131
 CON - FOGO3  -1.94239 0.601 195  -3.233  0.0124
 CON - NMIN   -1.19709 0.628 195  -1.907  0.3169
 FOG - FOGO3  -0.48540 0.573 195  -0.847  0.9154
 FOG - NMIN    0.25990 0.601 195   0.433  0.9927
 FOGO3 - NMIN  0.74530 0.601 195   1.240  0.7278

Dia = 2:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     1.75391 0.628 195   2.795  0.0448
 AO3 - FOG    -0.64332 0.601 195  -1.071  0.8214
 AO3 - FOGO3  -0.75401 0.601 195  -1.255  0.7191
 AO3 - NMIN    1.03098 0.628 195   1.643  0.4721
 CON - FOG    -2.39722 0.601 195  -3.989  0.0009
 CON - FOGO3  -2.50792 0.601 195  -4.174  0.0004
 CON - NMIN   -0.72293 0.628 195  -1.152  0.7786
 FOG - FOGO3  -0.11069 0.573 195  -0.193  0.9997
 FOG - NMIN    1.67430 0.601 195   2.786  0.0458
 FOGO3 - NMIN  1.78499 0.601 195   2.971  0.0274

Dia = 3:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     0.22282 0.573 195   0.389  0.9951
 AO3 - FOG    -0.73062 0.573 195  -1.275  0.7067
 AO3 - FOGO3  -0.77101 0.573 195  -1.346  0.6630
 AO3 - NMIN    0.70287 0.573 195   1.227  0.7358
 CON - FOG    -0.95344 0.573 195  -1.664  0.4586
 CON - FOGO3  -0.99384 0.573 195  -1.735  0.4152
 CON - NMIN    0.48004 0.573 195   0.838  0.9185
 FOG - FOGO3  -0.04040 0.573 195  -0.071  1.0000
 FOG - NMIN    1.43349 0.573 195   2.502  0.0944
 FOGO3 - NMIN  1.47388 0.573 195   2.573  0.0795

Dia = 5:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.22394 0.573 195  -0.391  0.9950
 AO3 - FOG    -2.07300 0.573 195  -3.618  0.0034
 AO3 - FOGO3  -1.52107 0.573 195  -2.655  0.0647
 AO3 - NMIN   -0.37645 0.573 195  -0.657  0.9651
 CON - FOG    -1.84905 0.573 195  -3.227  0.0126
 CON - FOGO3  -1.29712 0.573 195  -2.264  0.1612
 CON - NMIN   -0.15250 0.573 195  -0.266  0.9989
 FOG - FOGO3   0.55193 0.573 195   0.963  0.8712
 FOG - NMIN    1.69655 0.573 195   2.961  0.0281
 FOGO3 - NMIN  1.14462 0.573 195   1.998  0.2709

Dia = 8:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.35972 0.573 195  -0.628  0.9704
 AO3 - FOG    -1.30739 0.573 195  -2.282  0.1552
 AO3 - FOGO3  -1.01146 0.573 195  -1.765  0.3968
 AO3 - NMIN    0.77192 0.573 195   1.347  0.6620
 CON - FOG    -0.94767 0.573 195  -1.654  0.4649
 CON - FOGO3  -0.65174 0.573 195  -1.138  0.7864
 CON - NMIN    1.13163 0.573 195   1.975  0.2820
 FOG - FOGO3   0.29593 0.573 195   0.517  0.9856
 FOG - NMIN    2.07930 0.573 195   3.629  0.0033
 FOGO3 - NMIN  1.78337 0.573 195   3.113  0.0180

Dia = 13:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.59104 0.573 195  -1.032  0.8404
 AO3 - FOG    -1.48831 0.573 195  -2.598  0.0747
 AO3 - FOGO3  -1.88480 0.573 195  -3.290  0.0103
 AO3 - NMIN    0.00799 0.573 195   0.014  1.0000
 CON - FOG    -0.89727 0.573 195  -1.566  0.5209
 CON - FOGO3  -1.29376 0.573 195  -2.258  0.1632
 CON - NMIN    0.59903 0.573 195   1.046  0.8338
 FOG - FOGO3  -0.39649 0.573 195  -0.692  0.9580
 FOG - NMIN    1.49630 0.573 195   2.612  0.0721
 FOGO3 - NMIN  1.89279 0.573 195   3.304  0.0099

Dia = 21:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.58997 0.573 195  -1.030  0.8413
 AO3 - FOG    -0.63761 0.573 195  -1.113  0.7996
 AO3 - FOGO3  -0.29794 0.573 195  -0.520  0.9853
 AO3 - NMIN   -0.22032 0.573 195  -0.385  0.9953
 CON - FOG    -0.04765 0.573 195  -0.083  1.0000
 CON - FOGO3   0.29203 0.573 195   0.510  0.9863
 CON - NMIN    0.36965 0.573 195   0.645  0.9674
 FOG - FOGO3   0.33968 0.573 195   0.593  0.9760
 FOG - NMIN    0.41730 0.573 195   0.728  0.9497
 FOGO3 - NMIN  0.07762 0.573 195   0.135  0.9999

Dia = 34:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.40111 0.573 195  -0.700  0.9563
 AO3 - FOG    -0.33973 0.573 195  -0.593  0.9760
 AO3 - FOGO3   0.24100 0.573 195   0.421  0.9934
 AO3 - NMIN    0.19394 0.573 195   0.339  0.9972
 CON - FOG     0.06138 0.573 195   0.107  1.0000
 CON - FOGO3   0.64211 0.573 195   1.121  0.7954
 CON - NMIN    0.59505 0.573 195   1.039  0.8371
 FOG - FOGO3   0.58073 0.573 195   1.014  0.8489
 FOG - NMIN    0.53367 0.573 195   0.931  0.8844
 FOGO3 - NMIN -0.04706 0.573 195  -0.082  1.0000

P value adjustment: tukey method for comparing a family of 5 estimates 


################ Variável: Emissao_N2O_ug_g_h ################

ANOVA:
Analysis of Variance Table

Response: N2O_log
                Df Sum Sq Mean Sq F value    Pr(>F)    
Abreviacao       4 233.90  58.475 28.9778 < 2.2e-16 ***
Dia              7 103.50  14.786  7.3272 1.018e-07 ***
Abreviacao:Dia  28 109.84   3.923  1.9440  0.005229 ** 
Residuals      177 357.17   2.018                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Teste de Tukey:
Dia = 1:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON      0.3662 0.898 177   0.408  0.9942
 AO3 - FOG     -3.6643 0.860 177  -4.260  0.0003
 AO3 - FOGO3   -3.9642 0.860 177  -4.609  0.0001
 AO3 - NMIN     0.3986 0.860 177   0.463  0.9905
 CON - FOG     -4.0305 0.860 177  -4.686  0.0001
 CON - FOGO3   -4.3304 0.860 177  -5.034  <.0001
 CON - NMIN     0.0323 0.860 177   0.038  1.0000
 FOG - FOGO3   -0.2999 0.820 177  -0.366  0.9962
 FOG - NMIN     4.0629 0.820 177   4.954  <.0001
 FOGO3 - NMIN   4.3628 0.820 177   5.320  <.0001

Dia = 2:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON      0.5192 0.917 177   0.566  0.9797
 AO3 - FOG     -3.4800 0.820 177  -4.243  0.0003
 AO3 - FOGO3   -3.5311 0.820 177  -4.305  0.0003
 AO3 - NMIN    -0.7659 0.820 177  -0.934  0.8834
 CON - FOG     -3.9992 0.917 177  -4.361  0.0002
 CON - FOGO3   -4.0503 0.917 177  -4.417  0.0002
 CON - NMIN    -1.2851 0.917 177  -1.401  0.6275
 FOG - FOGO3   -0.0510 0.820 177  -0.062  1.0000
 FOG - NMIN     2.7142 0.820 177   3.309  0.0099
 FOGO3 - NMIN   2.7652 0.820 177   3.372  0.0081

Dia = 3:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON      0.9303 0.860 177   1.082  0.8158
 AO3 - FOG     -1.9187 0.820 177  -2.339  0.1374
 AO3 - FOGO3   -2.0753 0.820 177  -2.530  0.0886
 AO3 - NMIN     0.5678 0.820 177   0.692  0.9579
 CON - FOG     -2.8490 0.860 177  -3.312  0.0098
 CON - FOGO3   -3.0056 0.860 177  -3.494  0.0054
 CON - NMIN    -0.3625 0.860 177  -0.421  0.9934
 FOG - FOGO3   -0.1566 0.820 177  -0.191  0.9997
 FOG - NMIN     2.4865 0.820 177   3.032  0.0231
 FOGO3 - NMIN   2.6431 0.820 177   3.223  0.0130

Dia = 5:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     -0.0615 0.860 177  -0.072  1.0000
 AO3 - FOG     -2.9233 0.860 177  -3.398  0.0074
 AO3 - FOGO3   -2.3778 0.860 177  -2.764  0.0489
 AO3 - NMIN    -1.2598 0.860 177  -1.465  0.5868
 CON - FOG     -2.8618 0.820 177  -3.489  0.0055
 CON - FOGO3   -2.3163 0.820 177  -2.824  0.0416
 CON - NMIN    -1.1983 0.820 177  -1.461  0.5891
 FOG - FOGO3    0.5455 0.820 177   0.665  0.9636
 FOG - NMIN     1.6635 0.820 177   2.028  0.2568
 FOGO3 - NMIN   1.1180 0.820 177   1.363  0.6520

Dia = 8:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     -0.9330 0.898 177  -1.038  0.8372
 AO3 - FOG     -2.2370 0.860 177  -2.601  0.0746
 AO3 - FOGO3   -1.9814 0.860 177  -2.303  0.1486
 AO3 - NMIN     0.0589 0.860 177   0.069  1.0000
 CON - FOG     -1.3041 0.860 177  -1.516  0.5535
 CON - FOGO3   -1.0484 0.860 177  -1.219  0.7405
 CON - NMIN     0.9919 0.860 177   1.153  0.7778
 FOG - FOGO3    0.2557 0.820 177   0.312  0.9979
 FOG - NMIN     2.2960 0.820 177   2.799  0.0445
 FOGO3 - NMIN   2.0403 0.820 177   2.488  0.0980

Dia = 13:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON      0.7667 0.917 177   0.836  0.9190
 AO3 - FOG     -1.2410 0.917 177  -1.353  0.6582
 AO3 - FOGO3   -1.8289 0.917 177  -1.995  0.2729
 AO3 - NMIN     0.1997 0.917 177   0.218  0.9995
 CON - FOG     -2.0078 0.820 177  -2.448  0.1076
 CON - FOGO3   -2.5956 0.820 177  -3.165  0.0155
 CON - NMIN    -0.5671 0.820 177  -0.691  0.9581
 FOG - FOGO3   -0.5879 0.820 177  -0.717  0.9524
 FOG - NMIN     1.4407 0.820 177   1.757  0.4023
 FOGO3 - NMIN   2.0286 0.820 177   2.473  0.1014

Dia = 21:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON      1.3721 1.004 177   1.366  0.6502
 AO3 - FOG      0.1655 0.917 177   0.180  0.9998
 AO3 - FOGO3    0.0761 0.953 177   0.080  1.0000
 AO3 - NMIN     0.2218 0.953 177   0.233  0.9993
 CON - FOG     -1.2066 0.917 177  -1.316  0.6817
 CON - FOGO3   -1.2960 0.953 177  -1.360  0.6540
 CON - NMIN    -1.1503 0.953 177  -1.207  0.7473
 FOG - FOGO3   -0.0894 0.860 177  -0.104  1.0000
 FOG - NMIN     0.0563 0.860 177   0.065  1.0000
 FOGO3 - NMIN   0.1457 0.898 177   0.162  0.9998

Dia = 34:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON      1.0212 0.898 177   1.137  0.7868
 AO3 - FOG      0.3697 0.898 177   0.412  0.9939
 AO3 - FOGO3    1.0500 0.953 177   1.102  0.8054
 AO3 - NMIN     0.2401 0.953 177   0.252  0.9991
 CON - FOG     -0.6515 0.898 177  -0.725  0.9504
 CON - FOGO3    0.0288 0.953 177   0.030  1.0000
 CON - NMIN    -0.7811 0.953 177  -0.820  0.9243
 FOG - FOGO3    0.6803 0.953 177   0.714  0.9531
 FOG - NMIN    -0.1296 0.953 177  -0.136  0.9999
 FOGO3 - NMIN  -0.8099 1.004 177  -0.806  0.9284

P value adjustment: tukey method for comparing a family of 5 estimates 


################ Variável: Emissao_CH4_ug_g_h ################

ANOVA:
Analysis of Variance Table

Response: CH4_log
                Df  Sum Sq Mean Sq F value  Pr(>F)  
Abreviacao       4   5.471 1.36765  1.1008 0.35817  
Dia              7  19.267 2.75244  2.2154 0.03562 *
Abreviacao:Dia  28  17.719 0.63282  0.5093 0.98098  
Residuals      160 198.790 1.24244                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Teste de Tukey:
Dia = 1:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.55098 0.788 160  -0.699  0.9564
 AO3 - FOG     0.31602 0.788 160   0.401  0.9945
 AO3 - FOGO3   0.01807 0.748 160   0.024  1.0000
 AO3 - NMIN    0.40016 0.788 160   0.508  0.9865
 CON - FOG     0.86701 0.788 160   1.100  0.8063
 CON - FOGO3   0.56906 0.748 160   0.761  0.9413
 CON - NMIN    0.95114 0.788 160   1.207  0.7475
 FOG - FOGO3  -0.29795 0.748 160  -0.398  0.9946
 FOG - NMIN    0.08414 0.788 160   0.107  1.0000
 FOGO3 - NMIN  0.38208 0.748 160   0.511  0.9862

Dia = 2:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.36635 0.720 160  -0.509  0.9864
 AO3 - FOG     0.29709 0.748 160   0.397  0.9947
 AO3 - FOGO3   0.43487 0.851 160   0.511  0.9862
 AO3 - NMIN   -0.48493 0.851 160  -0.570  0.9793
 CON - FOG     0.66344 0.675 160   0.983  0.8626
 CON - FOGO3   0.80122 0.788 160   1.017  0.8474
 CON - NMIN   -0.11857 0.788 160  -0.150  0.9999
 FOG - FOGO3   0.13778 0.814 160   0.169  0.9998
 FOG - NMIN   -0.78202 0.814 160  -0.961  0.8723
 FOGO3 - NMIN -0.91980 0.910 160  -1.011  0.8502

Dia = 3:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     0.89527 0.851 160   1.052  0.8307
 AO3 - FOG     1.42058 0.748 160   1.900  0.3216
 AO3 - FOGO3   0.15645 0.748 160   0.209  0.9996
 AO3 - NMIN    0.22097 0.748 160   0.296  0.9983
 CON - FOG     0.52532 0.814 160   0.645  0.9673
 CON - FOGO3  -0.73882 0.814 160  -0.908  0.8936
 CON - NMIN   -0.67429 0.814 160  -0.828  0.9215
 FOG - FOGO3  -1.26414 0.705 160  -1.793  0.3811
 FOG - NMIN   -1.19961 0.705 160  -1.702  0.4359
 FOGO3 - NMIN  0.06453 0.705 160   0.092  1.0000

Dia = 5:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     0.30578 0.748 160   0.409  0.9941
 AO3 - FOG     0.51855 0.788 160   0.658  0.9649
 AO3 - FOGO3   0.82480 0.788 160   1.046  0.8332
 AO3 - NMIN    1.03794 0.851 160   1.219  0.7402
 CON - FOG     0.21277 0.748 160   0.285  0.9986
 CON - FOGO3   0.51902 0.748 160   0.694  0.9575
 CON - NMIN    0.73216 0.814 160   0.899  0.8967
 FOG - FOGO3   0.30625 0.788 160   0.389  0.9951
 FOG - NMIN    0.51939 0.851 160   0.610  0.9733
 FOGO3 - NMIN  0.21314 0.851 160   0.250  0.9991

Dia = 8:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON     0.00773 0.675 160   0.011  1.0000
 AO3 - FOG     0.17113 0.675 160   0.254  0.9991
 AO3 - FOGO3  -0.35976 0.675 160  -0.533  0.9838
 AO3 - NMIN    0.74259 0.705 160   1.053  0.8299
 CON - FOG     0.16340 0.644 160   0.254  0.9991
 CON - FOGO3  -0.36749 0.644 160  -0.571  0.9791
 CON - NMIN    0.73486 0.675 160   1.089  0.8121
 FOG - FOGO3  -0.53089 0.644 160  -0.825  0.9226
 FOG - NMIN    0.57146 0.675 160   0.847  0.9155
 FOGO3 - NMIN  1.10235 0.675 160   1.633  0.4785

Dia = 13:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.62317 0.644 160  -0.968  0.8690
 AO3 - FOG    -0.39443 0.644 160  -0.613  0.9729
 AO3 - FOGO3  -0.91340 0.644 160  -1.419  0.6161
 AO3 - NMIN   -0.22055 0.644 160  -0.343  0.9970
 CON - FOG     0.22874 0.644 160   0.355  0.9966
 CON - FOGO3  -0.29023 0.644 160  -0.451  0.9914
 CON - NMIN    0.40262 0.644 160   0.626  0.9708
 FOG - FOGO3  -0.51897 0.644 160  -0.806  0.9283
 FOG - NMIN    0.17388 0.644 160   0.270  0.9988
 FOGO3 - NMIN  0.69285 0.644 160   1.077  0.8183

Dia = 21:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.57005 0.644 160  -0.886  0.9018
 AO3 - FOG    -0.18962 0.644 160  -0.295  0.9983
 AO3 - FOGO3   0.01785 0.675 160   0.026  1.0000
 AO3 - NMIN   -0.12504 0.644 160  -0.194  0.9997
 CON - FOG     0.38044 0.644 160   0.591  0.9762
 CON - FOGO3   0.58790 0.675 160   0.871  0.9071
 CON - NMIN    0.44501 0.644 160   0.692  0.9581
 FOG - FOGO3   0.20746 0.675 160   0.307  0.9980
 FOG - NMIN    0.06458 0.644 160   0.100  1.0000
 FOGO3 - NMIN -0.14289 0.675 160  -0.212  0.9995

Dia = 34:
 contrast     estimate    SE  df t.ratio p.value
 AO3 - CON    -0.35422 0.644 160  -0.550  0.9818
 AO3 - FOG     0.16856 0.675 160   0.250  0.9991
 AO3 - FOGO3   0.32753 0.644 160   0.509  0.9864
 AO3 - NMIN    0.23794 0.644 160   0.370  0.9960
 CON - FOG     0.52278 0.675 160   0.775  0.9376
 CON - FOGO3   0.68175 0.644 160   1.059  0.8269
 CON - NMIN    0.59216 0.644 160   0.920  0.8888
 FOG - FOGO3   0.15897 0.675 160   0.236  0.9993
 FOG - NMIN    0.06938 0.675 160   0.103  1.0000
 FOGO3 - NMIN -0.08959 0.644 160  -0.139  0.9999

P value adjustment: tukey method for comparing a family of 5 estimates 
# Tabela final
resultado_final = do.call(rbind, resultados)
rownames(resultado_final) = NULL
View(resultado_final)


6.1.4 - GRÁFICOS TEMPORAIS



########################### GRÁFICO CO2 ###########################
library(ggplot2)
library(emmeans)

# Dias em que houve diferença entre tratamentos pelo Tukey
dias_sig_CO2 = pairs(emmeans(mod_CO2_log, ~ Abreviacao | Dia),adjust = "tukey") %>%
  as.data.frame()%>%
  group_by(Dia) %>%
  summarise(significativo = any(p.value < 0.05),.groups = "drop")
# Preparar dados
dados_CO2 = resultado_final %>%
  filter(variavel == "Emissao_CO2_ug_g_h") %>%
  left_join(dias_sig_CO2, by = "Dia") %>%
  mutate(Dia = as.numeric(as.character(Dia)),
    Tratamento = factor(Tratamento,levels = c("CON", "AO3", "FOG", "FOGO3", "NMIN")),
    # Deslocamento horizontal de cada tratamento
    deslocamento = case_when(
      Tratamento == "CON"   ~ -0.50,
      Tratamento == "AO3"   ~ -0.25,
      Tratamento == "FOG"   ~  0.00,
      Tratamento == "FOGO3" ~  0.25,
      Tratamento == "NMIN"  ~  0.50),
    x_plot = Dia + deslocamento,
    # Letras somente quando o Tukey detectou diferença no dia
    letra_plot = ifelse(significativo, letra, ""),
    # Maior afastamento vertical das letras
    y_letra = media + se + 5)

anova(mod_CO2_log)
Analysis of Variance Table

Response: CO2_log
                Df  Sum Sq Mean Sq F value    Pr(>F)    
Abreviacao       4  66.242 16.5605 16.8172 7.339e-12 ***
Dia              7  41.273  5.8961  5.9875 2.497e-06 ***
Abreviacao:Dia  28  44.622  1.5937  1.6184   0.03196 *  
Residuals      195 192.023  0.9847                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# PLOT
CO2=ggplot(dados_CO2,aes(x = x_plot,y = media,color = Tratamento,group = Tratamento)) +
  geom_line(linewidth = 0.8) +
  geom_errorbar(aes(ymin = media - se,ymax = media + se),width = 0.12,linewidth = 0.6) +
  geom_point(size = 2.7) +
  geom_text(aes(y = y_letra,label = letra_plot),size = 4,fontface = "bold",show.legend = FALSE) +
  annotate("label",x = 26.5,y = 250,label = "Treatment: P < 0.01\nDay: P < 0.01\nTreatment × Day: P = 0.03",
    hjust = 0,vjust = 0.8,size = 3.5,label.size = 0.5,label.padding=unit(0.25,"lines"),fill= "white",color="black") +
  scale_color_manual(values = c("CON"="red4","AO3"="#2474A6","FOG"="#D89B00","FOGO3"="#8C6515","NMIN"="black"),
    breaks = c("CON", "AO3", "FOG", "FOGO3", "NMIN")) +
  scale_x_continuous(breaks = c(1, 2, 3, 5, 8, 13, 21, 34),labels = c(1, 2, 3, 5, 8, 13, 21, 34)) +
  scale_y_continuous(limits = c(0, 260),breaks = seq(0, 250, by = 50),expand = expansion(mult = c(0, 0.03)))+
  labs(x = "Days after treatment application",y = expression(CO[2]~emission~(mu*g~g^{-1}~h^{-1})),color = "Treatment:")+
  theme_classic(base_size = 12) +
  theme(axis.title = element_text(face = "bold"),
    legend.position = c(0.34, 0.90),
        legend.direction = "horizontal",
    legend.background = element_rect(fill = "white", color = "black", linewidth = 0.5),
    legend.box.background = element_rect(fill = "white", color = "black", linewidth = 0.5),
    legend.text = element_text(size = 7),
  legend.title = element_text(size = 8, face = "bold"))
CO2


########################### GRÁFICO CH4 ###########################

# Dias em que houve diferença entre tratamentos pelo Tukey
dias_sig_CH4 = pairs(emmeans(mod_CH4_log, ~ Abreviacao | Dia),adjust = "tukey") %>%
  as.data.frame()%>%
  group_by(Dia) %>%
  summarise(significativo = any(p.value < 0.05),.groups = "drop")
# Preparar dados
dados_CH4 = resultado_final %>%
  filter(variavel == "Emissao_CH4_ug_g_h") %>%
  left_join(dias_sig_CH4, by = "Dia") %>%
  mutate(Dia = as.numeric(as.character(Dia)),
    Tratamento = factor(Tratamento,levels = c("CON", "AO3", "FOG", "FOGO3", "NMIN")),
    # Deslocamento horizontal de cada tratamento
    deslocamento = case_when(
      Tratamento == "CON"   ~ -0.50,
      Tratamento == "AO3"   ~ -0.25,
      Tratamento == "FOG"   ~  0.00,
      Tratamento == "FOGO3" ~  0.25,
      Tratamento == "NMIN"  ~  0.50),
    x_plot = Dia + deslocamento,
    # Letras somente quando o Tukey detectou diferença no dia
    letra_plot = ifelse(significativo, letra, ""),
    # Maior afastamento vertical das letras
    y_letra = media + se + 0.0005)

anova(mod_CH4_log)
Analysis of Variance Table

Response: CH4_log
                Df  Sum Sq Mean Sq F value  Pr(>F)  
Abreviacao       4   5.471 1.36765  1.1008 0.35817  
Dia              7  19.267 2.75244  2.2154 0.03562 *
Abreviacao:Dia  28  17.719 0.63282  0.5093 0.98098  
Residuals      160 198.790 1.24244                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# PLOT
CH4=ggplot(dados_CH4,aes(x = x_plot,y = media,color = Tratamento,group = Tratamento)) +
  geom_line(linewidth = 0.8) +
  geom_errorbar(aes(ymin = media - se,ymax = media + se),width = 0.12,linewidth = 0.6) +
  geom_point(size = 2.7) +
  geom_text(aes(y = y_letra,label = letra_plot),size = 4,fontface = "bold",show.legend = FALSE) +
  annotate("label",x = 26,y = 0.009,label = "Treatment: P = 0.358\nDay: P < 0.036\nTreatment × Day: P = 0.980",
    hjust = 0,vjust = 1,size = 3.5,label.size = 0.5,label.padding=unit(0.25,"lines"),fill= "white",color="black") +
  scale_color_manual(values = c("CON"="red4","AO3"="#2474A6","FOG"="#D89B00","FOGO3"="#8C6515","NMIN"="black"),
    breaks = c("CON", "AO3", "FOG", "FOGO3", "NMIN")) +
  scale_x_continuous(breaks = c(1, 2, 3, 5, 8, 13, 21, 34),labels = c(1, 2, 3, 5, 8, 13, 21, 34)) +
  scale_y_continuous(limits = c(-0.001, 0.009),breaks = seq(-0.001, 0.009, by = 0.001),expand = expansion(mult = c(0, 0.03)))+
  labs(x = "Days after treatment application",y = expression(CH [4]~emission~(mu*g~g^{-1}~h^{-1})),color = "Treatment:")+
  theme_classic(base_size = 12) +
  theme(axis.title = element_text(face = "bold", size = 12),
    legend.position = c(0.34, 0.90),
        legend.direction = "horizontal",
    legend.background = element_rect(fill = "white", color = "black", linewidth = 0.5),
    legend.box.background = element_rect(fill = "white", color = "black", linewidth = 0.5),
    legend.text = element_text(size = 7),
  legend.title = element_text(size = 8, face = "bold"))
CH4


########################### GRÁFICO N2O ###########################

# Dias em que houve diferença entre tratamentos pelo Tukey
dias_sig_N2O = pairs(emmeans(mod_N2O_log, ~ Abreviacao | Dia),adjust = "tukey") %>%
  as.data.frame()%>%
  group_by(Dia) %>%
  summarise(significativo = any(p.value < 0.05),.groups = "drop")
# Preparar dados
dados_N2O = resultado_final %>%
  filter(variavel == "Emissao_N2O_ug_g_h") %>%
  left_join(dias_sig_N2O, by = "Dia") %>%
  mutate(Dia = as.numeric(as.character(Dia)),
    Tratamento = factor(Tratamento,levels = c("CON", "AO3", "FOG", "FOGO3", "NMIN")),
    # Deslocamento horizontal de cada tratamento
    deslocamento = case_when(
      Tratamento == "CON"   ~ -0.50,
      Tratamento == "AO3"   ~ -0.25,
      Tratamento == "FOG"   ~  0.00,
      Tratamento == "FOGO3" ~  0.25,
      Tratamento == "NMIN"  ~  0.50),
    x_plot = Dia + deslocamento,
    # Letras somente quando o Tukey detectou diferença no dia
    letra_plot = ifelse(significativo, letra, ""),
    # Maior afastamento vertical das letras
    y_letra = media + se + 0.007)

anova(mod_N2O_log)
Analysis of Variance Table

Response: N2O_log
                Df Sum Sq Mean Sq F value    Pr(>F)    
Abreviacao       4 233.90  58.475 28.9778 < 2.2e-16 ***
Dia              7 103.50  14.786  7.3272 1.018e-07 ***
Abreviacao:Dia  28 109.84   3.923  1.9440  0.005229 ** 
Residuals      177 357.17   2.018                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# PLOT
N2O=ggplot(dados_N2O,aes(x = x_plot,y = media,color = Tratamento,group = Tratamento)) +
  geom_line(linewidth = 0.8) +
  geom_errorbar(aes(ymin = media - se,ymax = media + se),width = 0.12,linewidth = 0.6) +
  geom_point(size = 2.7) +
  geom_text(aes(y = y_letra,label = letra_plot),size = 4,fontface = "bold",show.legend = FALSE) +
  annotate("label",x = 26.5,y = 0.18,label = "Treatment: P < 0.01\nDay: P < 0.01\nTreatment × Day: P < 0.01",
    hjust = 0,vjust = 1,size = 3.5,label.size = 0.5,label.padding=unit(0.25,"lines"),fill= "white",color="black") +
  scale_color_manual(values = c("CON"="red4","AO3"="#2474A6","FOG"="#D89B00","FOGO3"="#8C6515","NMIN"="black"),
    breaks = c("CON", "AO3", "FOG", "FOGO3", "NMIN")) +
  scale_x_continuous(breaks = c(1, 2, 3, 5, 8, 13, 21, 34),labels = c(1, 2, 3, 5, 8, 13, 21, 34)) +
  scale_y_continuous(limits = c(-0.006, 0.18),breaks=seq(-0.006, 0.18, by = 0.03),expand = expansion(mult = c(0, 0.03)))+
  labs(x = "Days after treatment application",y = expression(N[2]*O~emission~(mu*g~g^{-1}~h^{-1})),color = "Treatment:")+
  theme_classic(base_size = 12) +
  theme(axis.title = element_text(face = "bold"),
        legend.position = c(0.34, 0.90),
        legend.direction = "horizontal",
    legend.background = element_rect(fill = "white", color = "black", linewidth = 0.5),
    legend.box.background = element_rect(fill = "white", color = "black", linewidth = 0.5),
    legend.text = element_text(size = 7),
  legend.title = element_text(size = 8, face = "bold"))
N2O


########################### JUNTAR GRÁFICOS ###########################
library(patchwork)
Figura_gases = (CH4 / CO2 / N2O) + plot_annotation(tag_levels = "A")
Figura_gases
ggsave("Figura 1 - gases no tempo.png",Figura_gases, width = 8, height = 9, dpi = 300, bg = "white")



6.2 - Emissões acumuladas



6.2.1 - ANOVA, TUKEY E MÉDIAS



# Identificar os valores outliers
boxplot(emissoes_acumuladas$CO2_acumulado_ug_g)

out_CO2 = boxplot.stats(emissoes_acumuladas$CO2_acumulado_ug_g)$out
# Mostrar as linhas correspondentes
emissoes_acumuladas %>%
  filter(CO2_acumulado_ug_g %in% out_CO2) %>%
  dplyr::select(Bottle, Abreviacao, Bloco, Rep, CO2_acumulado_ug_g)
emissoes_acumuladas_filtrada = emissoes_acumuladas %>%
  filter(!Bottle %in% c(1, 2,7, 23))

# Ordem dos tratamentos
emissoes_acumuladas_filtrada$Abreviacao = factor(emissoes_acumuladas_filtrada$Abreviacao,
  levels = c("CON", "AO3", "FOG", "FOGO3", "NMIN"))
# Variáveis
variaveis = c("CH4_acumulado_ug_g","CO2_acumulado_ug_g","N2O_acumulado_ug_g")

resultados = list()
for(var in variaveis){
  cat("\n\n################ Variável:", var, "################\n")
  # Modelo
  formula_mod = reformulate("Abreviacao", response = var)
  mod = aov(formula_mod, data = emissoes_acumuladas_filtrada)
  # ANOVA
  cat("\nANOVA:\n")
  print(summary(mod))
  # Médias
  em = emmeans(mod, ~ Abreviacao)
  # Tukey
  cat("\nTeste de Tukey:\n")
  tukey = pairs(em, adjust = "tukey")
  print(tukey)
  # Letras
  grupos = multcomp::cld(em,alpha = 0.05,Letters = letters,sort = FALSE)
  # Se nenhum contraste for significativo, retirar letras
  if(!any(as.data.frame(tukey)$p.value < 0.05)){
    grupos$.group = ""}

  # Tabela
  tabela = data.frame(variavel = var,Tratamento = grupos$Abreviacao,
    media = grupos$emmean,se = grupos$SE,letra = trimws(grupos$.group),row.names = NULL)
  cat("\nMédias, SE e letras:\n")
  print(tabela)
  resultados[[var]] = tabela}


################ Variável: CH4_acumulado_ug_g ################

ANOVA:
            Df Sum Sq Mean Sq F value Pr(>F)
Abreviacao   4  0.372 0.09308   0.474  0.755
Residuals   21  4.127 0.19652               

Teste de Tukey:
 contrast     estimate    SE df t.ratio p.value
 CON - AO3     -0.2049 0.268 21  -0.763  0.9383
 CON - FOG     -0.1725 0.280 21  -0.615  0.9710
 CON - FOGO3    0.1453 0.297 21   0.489  0.9876
 CON - NMIN    -0.0927 0.268 21  -0.345  0.9967
 AO3 - FOG      0.0324 0.268 21   0.121  0.9999
 AO3 - FOGO3    0.3502 0.286 21   1.224  0.7381
 AO3 - NMIN     0.1122 0.256 21   0.439  0.9917
 FOG - FOGO3    0.3178 0.297 21   1.069  0.8203
 FOG - NMIN     0.0798 0.268 21   0.297  0.9982
 FOGO3 - NMIN  -0.2379 0.286 21  -0.831  0.9178

P value adjustment: tukey method for comparing a family of 5 estimates 

Médias, SE e letras:
            variavel Tratamento     media        se letra
1 CH4_acumulado_ug_g        CON 0.4008404 0.1982533      
2 CH4_acumulado_ug_g        AO3 0.6057440 0.1809797      
3 CH4_acumulado_ug_g        FOG 0.5733354 0.1982533      
4 CH4_acumulado_ug_g      FOGO3 0.2555668 0.2216539      
5 CH4_acumulado_ug_g       NMIN 0.4934985 0.1809797      


################ Variável: CO2_acumulado_ug_g ################

ANOVA:
            Df    Sum Sq   Mean Sq F value   Pr(>F)    
Abreviacao   4 1.023e+09 255636705   7.484 0.000654 ***
Residuals   21 7.174e+08  34159591                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Teste de Tukey:
 contrast     estimate   SE df t.ratio p.value
 CON - AO3       -1510 3539 21  -0.427  0.9926
 CON - FOG      -16770 3696 21  -4.537  0.0015
 CON - FOGO3     -7848 3921 21  -2.002  0.2993
 CON - NMIN       -932 3539 21  -0.263  0.9989
 AO3 - FOG      -15260 3539 21  -4.312  0.0026
 AO3 - FOGO3     -6338 3773 21  -1.680  0.4666
 AO3 - NMIN        579 3374 21   0.171  0.9998
 FOG - FOGO3      8922 3921 21   2.276  0.1920
 FOG - NMIN      15839 3539 21   4.475  0.0018
 FOGO3 - NMIN     6916 3773 21   1.833  0.3819

P value adjustment: tukey method for comparing a family of 5 estimates 

Médias, SE e letras:
            variavel Tratamento     media       se letra
1 CO2_acumulado_ug_g        CON  8272.865 2613.794     a
2 CO2_acumulado_ug_g        AO3  9782.940 2386.056     a
3 CO2_acumulado_ug_g        FOG 25043.262 2613.794     b
4 CO2_acumulado_ug_g      FOGO3 16120.890 2922.310    ab
5 CO2_acumulado_ug_g       NMIN  9204.418 2386.056     a


################ Variável: N2O_acumulado_ug_g ################

ANOVA:
            Df Sum Sq Mean Sq F value Pr(>F)  
Abreviacao   4  151.2   37.81   3.955 0.0152 *
Residuals   21  200.7    9.56                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Teste de Tukey:
 contrast     estimate   SE df t.ratio p.value
 CON - AO3      -1.998 1.87 21  -1.067  0.8209
 CON - FOG      -5.289 1.96 21  -2.705  0.0870
 CON - FOGO3    -6.323 2.07 21  -3.049  0.0432
 CON - NMIN     -0.614 1.87 21  -0.328  0.9973
 AO3 - FOG      -3.291 1.87 21  -1.758  0.4227
 AO3 - FOGO3    -4.325 2.00 21  -2.167  0.2305
 AO3 - NMIN      1.384 1.79 21   0.776  0.9349
 FOG - FOGO3    -1.034 2.07 21  -0.499  0.9866
 FOG - NMIN      4.675 1.87 21   2.497  0.1293
 FOGO3 - NMIN    5.709 2.00 21   2.861  0.0637

P value adjustment: tukey method for comparing a family of 5 estimates 

Médias, SE e letras:
            variavel Tratamento     media       se letra
1 N2O_acumulado_ug_g        CON 0.4423697 1.382676     a
2 N2O_acumulado_ug_g        AO3 2.4403995 1.262204    ab
3 N2O_acumulado_ug_g        FOG 5.7310269 1.382676    ab
4 N2O_acumulado_ug_g      FOGO3 6.7651676 1.545878     b
5 N2O_acumulado_ug_g       NMIN 1.0559925 1.262204    ab
# Tabela final
resultado_acumulado = do.call(rbind, resultados)
rownames(resultado_acumulado) = NULL
View(resultado_acumulado)


6.2.2 - GRÁFICOS DAS EMISSÕES ACUMULADAS



########################### GRÁFICO ###########################
rotulos_facet = as_labeller(c("CH4_acumulado_ug_g" = "'(A)'~CH[4]","CO2_acumulado_ug_g" = "'(B)'~CO[2]",
    "N2O_acumulado_ug_g" = "'(C)'~N[2]*O"),default = label_parsed)

p_anova_plot = data.frame(variavel = c("CH4_acumulado_ug_g","CO2_acumulado_ug_g","N2O_acumulado_ug_g"),
  Tratamento = c("NMIN", "NMIN", "NMIN"),label = c("italic(P) == 0.755","italic(P) < 0.01","italic(P) == 0.015"))

p_acumulado = ggplot(resultado_acumulado,aes(x = Tratamento, y = media, fill = Tratamento)) +
  geom_col(width = 0.70,color = "black",linewidth = 0.5) +
  geom_errorbar(aes(ymin = media - se,ymax = media + se),width = 0.15,linewidth = 0.6) +
  geom_text(aes(y = media + se,label = letra),vjust = -0.6,size = 4,fontface = "bold") +
  geom_text(data = p_anova_plot,aes(x = Tratamento,y = Inf,label = label),
    inherit.aes = FALSE,parse = TRUE,hjust = 1,vjust = 2,size = 4) +
  scale_fill_manual(values = c(
    "CON" = "red4","AO3" = "#2474A6","FOG" = "#D89B00","FOGO3" = "#8C6515","NMIN" = "black")) +
  facet_wrap(~ variavel,scales = "free_y",labeller = rotulos_facet) +
  scale_y_continuous(expand = expansion(mult = c(0.05, 0.18))) +
  labs(x = NULL,y = expression("Cumulative emission "~(mu*g~g^{-1}))) +
  theme_classic(base_size = 12) +
  theme(legend.position = "none",
        axis.text.x = element_text(angle = 45,hjust = 1,color = "black"),
        strip.background = element_blank(),
        strip.text = element_text(face = "bold",size = 12))
p_acumulado
ggsave("Figura 2 - gases acumulados.png",p_acumulado, width = 8, height = 5, dpi = 300, bg = "white")



6.2.3 - CONTRASTE FEZES vs NMIN



variaveis = c("CH4_acumulado_ug_g","CO2_acumulado_ug_g","N2O_acumulado_ug_g")

resultados_contraste = list()
for(var in variaveis){
  cat("\n\n################ Variável:", var, "################\n")
  # Modelo
  formula_mod = as.formula(paste(var, "~ Abreviacao"))
  mod = aov(formula_mod,data = emissoes_acumuladas_filtrada)
  # Médias
  em = emmeans::emmeans(mod,~ Abreviacao)
  # Contraste: média FOG + FOGO3 versus NMIN
  cont = emmeans::contrast(em,method = list(Fezes_vs_NMIN = c(0, 0, 0.5, 0.5, -1)))
  cat("\nFOG + FOGO3 vs NMIN:\n")
  print(summary(cont, infer = TRUE))

  resultados_contraste[[var]] = as.data.frame(cont)}


################ Variável: CH4_acumulado_ug_g ################

FOG + FOGO3 vs NMIN:
 contrast      estimate    SE df lower.CL upper.CL t.ratio p.value
 Fezes_vs_NMIN   -0.079 0.234 21   -0.566    0.408  -0.337  0.7391

Confidence level used: 0.95 


################ Variável: CO2_acumulado_ug_g ################

FOG + FOGO3 vs NMIN:
 contrast      estimate   SE df lower.CL upper.CL t.ratio p.value
 Fezes_vs_NMIN    11378 3088 21     4956    17800   3.684  0.0014

Confidence level used: 0.95 


################ Variável: N2O_acumulado_ug_g ################

FOG + FOGO3 vs NMIN:
 contrast      estimate   SE df lower.CL upper.CL t.ratio p.value
 Fezes_vs_NMIN     5.19 1.63 21     1.79     8.59   3.178  0.0045

Confidence level used: 0.95 
resultado_contraste = do.call(rbind,resultados_contraste)
rownames(resultado_contraste) = NULL
View(resultado_contraste)
LS0tDQp0aXRsZTogIkxpbXBlemEgZSBjYWxjdWxvIGRvcyBkYWRvcyBkbyBtaWNyb2Nvc21vIG5vIHBpY2Fycm8gLSBJc2FiZWxsZSINCmF1dGhvcjogIlZhZ25lciBPdmFuaSINCmRhdGU6ICIxOC8wOC8yMDI2Ig0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogMg0KICAgIHRoZW1lOiB1bml0ZWQNCi0tLQ0KDQoqKioNCioqKg0KIyAqKjEgLSBEYWRvcyBicnV0b3MqKg0KKioqDQoqKioNCiMjIF8qKkxlaXR1cmEgMSAtIDE1LzA0LzIwMjYqKl8NCioqKg0KKioqDQpgYGB7cn0NCmxpYnJhcnkoZHBseXIpDQojIENhbWluaG8gZG9zIGFycXVpdm9zIC5kYXQNCmZpbGVfbGVpdHVyYSA9ICJDOi9Vc2Vycy9TYW1zdW5nL09uZURyaXZlL0RvY3VtZW50b3MvMiAtIE1hdGVyaWFsIGRlIHRyYWJhbGhvLzUgLSBBdGl2aWRhZGVzIERpZMOhdGljYXMvNS41IC0gT3JpZW50YcOnw6NvL01lc3RyYWRvL0lzYWJlbGxlL0RhdGEvTGVpdHVyYSAxIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpmaWxlX2xlaXR1cmENCiMgT2J0ZXIgYSBsaXN0YSBkZSBhcnF1aXZvcyAuZGF0DQpmaWxlX2xpc3RfbGVpdHVyYSA9IGxpc3QuZmlsZXMoZmlsZV9sZWl0dXJhLCBwYXR0ZXJuID0gIi5kYXQiLCBmdWxsLm5hbWVzID0gVFJVRSkNCiMgTGVyIG9zIGRhZG9zIGRlIHRvZG9zIG9zIGFycXVpdm9zDQpkYXRhX2xpc3RfbGVpdHVyYSA9IGxhcHBseShmaWxlX2xpc3RfbGVpdHVyYSwgcmVhZC50YWJsZSwgaGVhZGVyID0gVFJVRSwgc2VwID0gIiIsZmlsbCA9IFRSVUUpDQojIEp1bnRhciBvcyBkYWRvcw0KZGFkb3NfbGVpdHVyYSA9IGRvLmNhbGwocmJpbmQsIGRhdGFfbGlzdF9sZWl0dXJhKQ0KZGFkb3NfbGVpdHVyYQ0KIyBFeGNsdWlyIGNvbHVuYXMgZGVzbmVjZXNzYXJpYXMNCmRhZG9zX2xlaXR1cmEgPSBzdWJzZXQoZGFkb3NfbGVpdHVyYSwgc2VsZWN0ID0gYygiREFURSIsIlRJTUUiLCJKVUxJQU5fREFZUyIsIk1QVlBvc2l0aW9uIiwiTjJPX2RyeSIsIkNPMl9kcnkiLCJDSDRfZHJ5IiwiSDJPIiwiTkgzIikpDQpwcmludChkYWRvc19sZWl0dXJhKQ0KI0NyaWFyIGRhdGV0aW1lDQpkYWRvc19sZWl0dXJhID0gZGFkb3NfbGVpdHVyYSAlPiUgbXV0YXRlKGRhdGV0aW1lID0gYXMuUE9TSVhjdChwYXN0ZShEQVRFLCBUSU1FKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNOiVPUyIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpDQpwcmludChkYWRvc19sZWl0dXJhKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhMSA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlcigNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNC0xNSAwOTowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNC0xNSAxMjo1NjowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnByaW50KGZpbHRyYWRvc19sZWl0dXJhMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhMSRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KDQojIENhcnJlZ2FyIElEIGRhIGxlaXR1cmENCklELmxlaXR1cmExPXJlYWQuY3N2KCJDOi9Vc2Vycy9TYW1zdW5nL09uZURyaXZlL0RvY3VtZW50b3MvMiAtIE1hdGVyaWFsIGRlIHRyYWJhbGhvLzUgLSBBdGl2aWRhZGVzIERpZMOhdGljYXMvNS41IC0gT3JpZW50YcOnw6NvL01lc3RyYWRvL0lzYWJlbGxlL0RhdGEvTGVpdHVyYSAxL0lEIGxlaXR1cmExLmNzdiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnN0cihJRC5sZWl0dXJhMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnByaW50KElELmxlaXR1cmExKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmBgYA0KKioqDQoqKioNCiMjIF8qKkxlaXR1cmEgMiAtIDE2LzA0LzIwMjYqKl8NCioqKg0KKioqDQpgYGB7cn0NCiMgQ2FtaW5obyBkb3MgYXJxdWl2b3MgLmRhdA0KZmlsZV9sZWl0dXJhID0gIkM6L1VzZXJzL1NhbXN1bmcvT25lRHJpdmUvRG9jdW1lbnRvcy8yIC0gTWF0ZXJpYWwgZGUgdHJhYmFsaG8vNSAtIEF0aXZpZGFkZXMgRGlkw6F0aWNhcy81LjUgLSBPcmllbnRhw6fDo28vTWVzdHJhZG8vSXNhYmVsbGUvRGF0YS9MZWl0dXJhIDIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiMgT2J0ZXIgYSBsaXN0YSBkZSBhcnF1aXZvcyAuZGF0DQpmaWxlX2xpc3RfbGVpdHVyYSA9IGxpc3QuZmlsZXMoZmlsZV9sZWl0dXJhLCBwYXR0ZXJuID0gIi5kYXQiLCBmdWxsLm5hbWVzID0gVFJVRSkNCiMgTGVyIG9zIGRhZG9zIGRlIHRvZG9zIG9zIGFycXVpdm9zDQpkYXRhX2xpc3RfbGVpdHVyYSA9IGxhcHBseShmaWxlX2xpc3RfbGVpdHVyYSwgcmVhZC50YWJsZSwgaGVhZGVyID0gVFJVRSwgc2VwID0gIiIsZmlsbCA9IFRSVUUpDQojIEp1bnRhciBvcyBkYWRvcw0KZGFkb3NfbGVpdHVyYSA9IGRvLmNhbGwocmJpbmQsIGRhdGFfbGlzdF9sZWl0dXJhKQ0KIyBFeGNsdWlyIGNvbHVuYXMgZGVzbmVjZXNzYXJpYXMNCmRhZG9zX2xlaXR1cmEgPSBzdWJzZXQoZGFkb3NfbGVpdHVyYSwgc2VsZWN0ID0gYygiREFURSIsIlRJTUUiLCJKVUxJQU5fREFZUyIsIk1QVlBvc2l0aW9uIiwiTjJPX2RyeSIsIkNPMl9kcnkiLCJDSDRfZHJ5IiwiSDJPIiwiTkgzIikpDQojQ3JpYXIgZGF0ZXRpbWUNCmRhZG9zX2xlaXR1cmEgPSBkYWRvc19sZWl0dXJhICU+JSBtdXRhdGUoZGF0ZXRpbWUgPSBhcy5QT1NJWGN0KHBhc3RlKERBVEUsIFRJTUUpLA0KICBmb3JtYXQgPSAiJVktJW0tJWQgJUg6JU06JU9TIiwgdHogPSAiQW1lcmljYS9TYW9fUGF1bG8iKSkNCiNGaWx0cmFyIHBvciBob3JhcmlvDQpmaWx0cmFkb3NfbGVpdHVyYTIgPSBkYWRvc19sZWl0dXJhICU+JSBmaWx0ZXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQogICAgKGRhdGV0aW1lID49IGFzLlBPU0lYY3QoIjIwMjYtMDQtMTYgMDg6MDA6MDAiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpICYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQogICAgIGRhdGV0aW1lIDw9IGFzLlBPU0lYY3QoIjIwMjYtMDQtMTYgMTQ6MDA6MDAiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpoZWFkKGZpbHRyYWRvc19sZWl0dXJhMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhMiRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhMj1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgMi9JRCBsZWl0dXJhMi5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSAzIC0gMTcvMDQvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyBDYW1pbmhvIGRvcyBhcnF1aXZvcyAuZGF0DQpmaWxlX2xlaXR1cmEgPSAiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgMyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KIyBPYnRlciBhIGxpc3RhIGRlIGFycXVpdm9zIC5kYXQNCmZpbGVfbGlzdF9sZWl0dXJhID0gbGlzdC5maWxlcyhmaWxlX2xlaXR1cmEsIHBhdHRlcm4gPSAiLmRhdCIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KIyBMZXIgb3MgZGFkb3MgZGUgdG9kb3Mgb3MgYXJxdWl2b3MNCmRhdGFfbGlzdF9sZWl0dXJhID0gbGFwcGx5KGZpbGVfbGlzdF9sZWl0dXJhLCByZWFkLnRhYmxlLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiIixmaWxsID0gVFJVRSkNCiMgSnVudGFyIG9zIGRhZG9zDQpkYWRvc19sZWl0dXJhID0gZG8uY2FsbChyYmluZCwgZGF0YV9saXN0X2xlaXR1cmEpDQojIEV4Y2x1aXIgY29sdW5hcyBkZXNuZWNlc3Nhcmlhcw0KZGFkb3NfbGVpdHVyYSA9IHN1YnNldChkYWRvc19sZWl0dXJhLCBzZWxlY3QgPSBjKCJEQVRFIiwiVElNRSIsIkpVTElBTl9EQVlTIiwiTVBWUG9zaXRpb24iLCJOMk9fZHJ5IiwiQ08yX2RyeSIsIkNINF9kcnkiLCJIMk8iLCJOSDMiKSkNCiNDcmlhciBkYXRldGltZQ0KZGFkb3NfbGVpdHVyYSA9IGRhZG9zX2xlaXR1cmEgJT4lIG11dGF0ZShkYXRldGltZSA9IGFzLlBPU0lYY3QocGFzdGUoREFURSwgVElNRSksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolT1MiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhMyA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNC0xNyAwOTowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNC0xNyAxMzowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoZmlsdHJhZG9zX2xlaXR1cmEzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhMyRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhMz1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgMy9JRCBsZWl0dXJhMy5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSA0IC0gMTkvMDQvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyBDYW1pbmhvIGRvcyBhcnF1aXZvcyAuZGF0DQpmaWxlX2xlaXR1cmEgPSAiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KIyBPYnRlciBhIGxpc3RhIGRlIGFycXVpdm9zIC5kYXQNCmZpbGVfbGlzdF9sZWl0dXJhID0gbGlzdC5maWxlcyhmaWxlX2xlaXR1cmEsIHBhdHRlcm4gPSAiLmRhdCIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KIyBMZXIgb3MgZGFkb3MgZGUgdG9kb3Mgb3MgYXJxdWl2b3MNCmRhdGFfbGlzdF9sZWl0dXJhID0gbGFwcGx5KGZpbGVfbGlzdF9sZWl0dXJhLCByZWFkLnRhYmxlLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiIixmaWxsID0gVFJVRSkNCiMgSnVudGFyIG9zIGRhZG9zDQpkYWRvc19sZWl0dXJhID0gZG8uY2FsbChyYmluZCwgZGF0YV9saXN0X2xlaXR1cmEpDQojIEV4Y2x1aXIgY29sdW5hcyBkZXNuZWNlc3Nhcmlhcw0KZGFkb3NfbGVpdHVyYSA9IHN1YnNldChkYWRvc19sZWl0dXJhLCBzZWxlY3QgPSBjKCJEQVRFIiwiVElNRSIsIkpVTElBTl9EQVlTIiwiTVBWUG9zaXRpb24iLCJOMk9fZHJ5IiwiQ08yX2RyeSIsIkNINF9kcnkiLCJIMk8iLCJOSDMiKSkNCiNDcmlhciBkYXRldGltZQ0KZGFkb3NfbGVpdHVyYSA9IGRhZG9zX2xlaXR1cmEgJT4lIG11dGF0ZShkYXRldGltZSA9IGFzLlBPU0lYY3QocGFzdGUoREFURSwgVElNRSksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolT1MiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhNCA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNC0xOSAwOTowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNC0xOSAxNDowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoZmlsdHJhZG9zX2xlaXR1cmE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhNCRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhND1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNC9JRCBsZWl0dXJhNC5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSA1IC0gMjIvMDQvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyBDYW1pbmhvIGRvcyBhcnF1aXZvcyAuZGF0DQpmaWxlX2xlaXR1cmEgPSAiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KIyBPYnRlciBhIGxpc3RhIGRlIGFycXVpdm9zIC5kYXQNCmZpbGVfbGlzdF9sZWl0dXJhID0gbGlzdC5maWxlcyhmaWxlX2xlaXR1cmEsIHBhdHRlcm4gPSAiLmRhdCIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KIyBMZXIgb3MgZGFkb3MgZGUgdG9kb3Mgb3MgYXJxdWl2b3MNCmRhdGFfbGlzdF9sZWl0dXJhID0gbGFwcGx5KGZpbGVfbGlzdF9sZWl0dXJhLCByZWFkLnRhYmxlLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiIixmaWxsID0gVFJVRSkNCiMgSnVudGFyIG9zIGRhZG9zDQpkYWRvc19sZWl0dXJhID0gZG8uY2FsbChyYmluZCwgZGF0YV9saXN0X2xlaXR1cmEpDQojIEV4Y2x1aXIgY29sdW5hcyBkZXNuZWNlc3Nhcmlhcw0KZGFkb3NfbGVpdHVyYSA9IHN1YnNldChkYWRvc19sZWl0dXJhLCBzZWxlY3QgPSBjKCJEQVRFIiwiVElNRSIsIkpVTElBTl9EQVlTIiwiTVBWUG9zaXRpb24iLCJOMk9fZHJ5IiwiQ08yX2RyeSIsIkNINF9kcnkiLCJIMk8iLCJOSDMiKSkNCiNDcmlhciBkYXRldGltZQ0KZGFkb3NfbGVpdHVyYSA9IGRhZG9zX2xlaXR1cmEgJT4lIG11dGF0ZShkYXRldGltZSA9IGFzLlBPU0lYY3QocGFzdGUoREFURSwgVElNRSksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolT1MiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhNSA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNC0yMiAwODowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNC0yMiAxMjowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoZmlsdHJhZG9zX2xlaXR1cmE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhNSRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhNT1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNS9JRCBsZWl0dXJhNS5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSA2IC0gMjcvMDQvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyBDYW1pbmhvIGRvcyBhcnF1aXZvcyAuZGF0DQpmaWxlX2xlaXR1cmEgPSAiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KIyBPYnRlciBhIGxpc3RhIGRlIGFycXVpdm9zIC5kYXQNCmZpbGVfbGlzdF9sZWl0dXJhID0gbGlzdC5maWxlcyhmaWxlX2xlaXR1cmEsIHBhdHRlcm4gPSAiLmRhdCIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KIyBMZXIgb3MgZGFkb3MgZGUgdG9kb3Mgb3MgYXJxdWl2b3MNCmRhdGFfbGlzdF9sZWl0dXJhID0gbGFwcGx5KGZpbGVfbGlzdF9sZWl0dXJhLCByZWFkLnRhYmxlLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiIixmaWxsID0gVFJVRSkNCiMgSnVudGFyIG9zIGRhZG9zDQpkYWRvc19sZWl0dXJhID0gZG8uY2FsbChyYmluZCwgZGF0YV9saXN0X2xlaXR1cmEpDQojIEV4Y2x1aXIgY29sdW5hcyBkZXNuZWNlc3Nhcmlhcw0KZGFkb3NfbGVpdHVyYSA9IHN1YnNldChkYWRvc19sZWl0dXJhLCBzZWxlY3QgPSBjKCJEQVRFIiwiVElNRSIsIkpVTElBTl9EQVlTIiwiTVBWUG9zaXRpb24iLCJOMk9fZHJ5IiwiQ08yX2RyeSIsIkNINF9kcnkiLCJIMk8iLCJOSDMiKSkNCiNDcmlhciBkYXRldGltZQ0KZGFkb3NfbGVpdHVyYSA9IGRhZG9zX2xlaXR1cmEgJT4lIG11dGF0ZShkYXRldGltZSA9IGFzLlBPU0lYY3QocGFzdGUoREFURSwgVElNRSksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolT1MiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhNiA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNC0yNyAwOTowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNC0yNyAxMzowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoZmlsdHJhZG9zX2xlaXR1cmE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhNiRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhNj1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNi9JRCBsZWl0dXJhNi5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSA3IC0gMDUvMDUvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyBDYW1pbmhvIGRvcyBhcnF1aXZvcyAuZGF0DQpmaWxlX2xlaXR1cmEgPSAiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KIyBPYnRlciBhIGxpc3RhIGRlIGFycXVpdm9zIC5kYXQNCmZpbGVfbGlzdF9sZWl0dXJhID0gbGlzdC5maWxlcyhmaWxlX2xlaXR1cmEsIHBhdHRlcm4gPSAiLmRhdCIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KIyBMZXIgb3MgZGFkb3MgZGUgdG9kb3Mgb3MgYXJxdWl2b3MNCmRhdGFfbGlzdF9sZWl0dXJhID0gbGFwcGx5KGZpbGVfbGlzdF9sZWl0dXJhLCByZWFkLnRhYmxlLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiIixmaWxsID0gVFJVRSkNCiMgSnVudGFyIG9zIGRhZG9zDQpkYWRvc19sZWl0dXJhID0gZG8uY2FsbChyYmluZCwgZGF0YV9saXN0X2xlaXR1cmEpDQojIEV4Y2x1aXIgY29sdW5hcyBkZXNuZWNlc3Nhcmlhcw0KZGFkb3NfbGVpdHVyYSA9IHN1YnNldChkYWRvc19sZWl0dXJhLCBzZWxlY3QgPSBjKCJEQVRFIiwiVElNRSIsIkpVTElBTl9EQVlTIiwiTVBWUG9zaXRpb24iLCJOMk9fZHJ5IiwiQ08yX2RyeSIsIkNINF9kcnkiLCJIMk8iLCJOSDMiKSkNCiNDcmlhciBkYXRldGltZQ0KZGFkb3NfbGVpdHVyYSA9IGRhZG9zX2xlaXR1cmEgJT4lIG11dGF0ZShkYXRldGltZSA9IGFzLlBPU0lYY3QocGFzdGUoREFURSwgVElNRSksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolT1MiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhNyA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNS0wNSAxMDowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNS0wNSAxNDowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoZmlsdHJhZG9zX2xlaXR1cmE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhNyRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhNz1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgNy9JRCBsZWl0dXJhNy5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSA4IC0gMTgvMDUvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyBDYW1pbmhvIGRvcyBhcnF1aXZvcyAuZGF0DQpmaWxlX2xlaXR1cmEgPSAiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgOCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KIyBPYnRlciBhIGxpc3RhIGRlIGFycXVpdm9zIC5kYXQNCmZpbGVfbGlzdF9sZWl0dXJhID0gbGlzdC5maWxlcyhmaWxlX2xlaXR1cmEsIHBhdHRlcm4gPSAiLmRhdCIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KIyBMZXIgb3MgZGFkb3MgZGUgdG9kb3Mgb3MgYXJxdWl2b3MNCmRhdGFfbGlzdF9sZWl0dXJhID0gbGFwcGx5KGZpbGVfbGlzdF9sZWl0dXJhLCByZWFkLnRhYmxlLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiIixmaWxsID0gVFJVRSkNCiMgSnVudGFyIG9zIGRhZG9zDQpkYWRvc19sZWl0dXJhID0gZG8uY2FsbChyYmluZCwgZGF0YV9saXN0X2xlaXR1cmEpDQojIEV4Y2x1aXIgY29sdW5hcyBkZXNuZWNlc3Nhcmlhcw0KZGFkb3NfbGVpdHVyYSA9IHN1YnNldChkYWRvc19sZWl0dXJhLCBzZWxlY3QgPSBjKCJEQVRFIiwiVElNRSIsIkpVTElBTl9EQVlTIiwiTVBWUG9zaXRpb24iLCJOMk9fZHJ5IiwiQ08yX2RyeSIsIkNINF9kcnkiLCJIMk8iLCJOSDMiKSkNCiNDcmlhciBkYXRldGltZQ0KZGFkb3NfbGVpdHVyYSA9IGRhZG9zX2xlaXR1cmEgJT4lIG11dGF0ZShkYXRldGltZSA9IGFzLlBPU0lYY3QocGFzdGUoREFURSwgVElNRSksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolT1MiLCB0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpKQ0KI0ZpbHRyYXIgcG9yIGhvcmFyaW8NCmZpbHRyYWRvc19sZWl0dXJhOCA9IGRhZG9zX2xlaXR1cmEgJT4lIGZpbHRlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAoZGF0ZXRpbWUgPj0gYXMuUE9TSVhjdCgiMjAyNi0wNS0xOCAwODowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCiAgICAgZGF0ZXRpbWUgPD0gYXMuUE9TSVhjdCgiMjAyNi0wNS0xOCAxMzowMDowMCIsIHR6ID0gIkFtZXJpY2EvU2FvX1BhdWxvIikpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoZmlsdHJhZG9zX2xlaXR1cmE4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCnJhbmdlKGZpbHRyYWRvc19sZWl0dXJhOCRkYXRldGltZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCg0KIyBDYXJyZWdhciBJRCBkYSBsZWl0dXJhDQpJRC5sZWl0dXJhOD1yZWFkLmNzdigiQzovVXNlcnMvU2Ftc3VuZy9PbmVEcml2ZS9Eb2N1bWVudG9zLzIgLSBNYXRlcmlhbCBkZSB0cmFiYWxoby81IC0gQXRpdmlkYWRlcyBEaWTDoXRpY2FzLzUuNSAtIE9yaWVudGHDp8Ojby9NZXN0cmFkby9Jc2FiZWxsZS9EYXRhL0xlaXR1cmEgOC9JRCBsZWl0dXJhOC5jc3YiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcXVpDQpzdHIoSUQubGVpdHVyYTgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FxdWkNCmhlYWQoSUQubGVpdHVyYTgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXF1aQ0KYGBgDQoNCioqKg0KKioqDQojICoqMiAtIElkZW50aWZpY2FyIGxlaXR1cmFzIGRvcyBmcmFzY29zIGUgYmFja2dyb3VuZCoqDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSAxIC0gMTUvMDQvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFBSRVBBUkFSIERBRE9TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGFkb3MxID0gYXMuZGF0YS50YWJsZShmaWx0cmFkb3NfbGVpdHVyYTEpDQppZCA9IGFzLmRhdGEudGFibGUoSUQubGVpdHVyYTEpDQoNCiMgQ3JpYXIgaW7DrWNpbyBlIGZpbSBkYXMgbGVpdHVyYXMNCmlkWywgc3RhcnQgOj0gYXMuUE9TSVhjdChwYXN0ZShhcy5EYXRlKERhdGUsIGZvcm1hdCA9ICIlZC8lbS8lWSIpLCBCZWdpbm5pbmcucmVhZGluZyksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTSIsdHogPSAiQW1lcmljYS9TYW9fUGF1bG8iKV0NCg0KaWRbLCBlbmQgOj0gYXMuUE9TSVhjdChwYXN0ZShhcy5EYXRlKERhdGUsIGZvcm1hdCA9ICIlZC8lbS8lWSIpLCBFbmQucmVhZGluZyksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTSIsdHogPSAiQW1lcmljYS9TYW9fUGF1bG8iKV0NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1QViAxIC0gTEVJVFVSQSBET1MgRlJBU0NPUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxlaXR1cmExID0gY29weShkYWRvczEpDQpsZWl0dXJhMVssIGMoDQogICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9IC4oDQogIE5BX2ludGVnZXJfLCBOQV9jaGFyYWN0ZXJfLCBOQV9pbnRlZ2VyXywgTkFfaW50ZWdlcl8sTkFfaW50ZWdlcl8sIE5BX3JlYWxfLCBOQV9yZWFsXyldDQoNCmxlaXR1cmExW01QVlBvc2l0aW9uID09IDEsYygNCiAgICAiQm90dGxlIiwgIkFicmV2aWFjYW8iLCAiQmxvY28iLCAiUmVwIiwiTGVpdHVyYSIsICJTb2xvLlNlY28iLCAiSW50ZXJuYWwudGVtcGVyYXR1cmUiKSA6PQ0KICAgIGlkWy5TRCwuKEJvdHRsZSwgQWJyZXZpYWNhbywgQmxvY28sIFJlcCxMZWl0dXJhLCBTb2xvLlNlY28sIEludGVybmFsLnRlbXBlcmF0dXJlKSwNCiAgICAgICBvbiA9IC4oc3RhcnQgPD0gZGF0ZXRpbWUsIGVuZCA+IGRhdGV0aW1lKSxtdWx0ID0gImZpcnN0Il1dDQoNCiMgTWFudGVyIGFwZW5hcyBhcyBsZWl0dXJhcyB2w6FsaWRhcyBkb3MgZnJhc2Nvcw0KbGVpdHVyYTEgPSBsZWl0dXJhMVtNUFZQb3NpdGlvbiA9PSAxICYgIWlzLm5hKEJvdHRsZSldDQpWaWV3KGxlaXR1cmExKQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqTGVpdHVyYSAyIC0gMTYvMDQvMjAyNioqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFBSRVBBUkFSIERBRE9TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGFkb3MyID0gYXMuZGF0YS50YWJsZShmaWx0cmFkb3NfbGVpdHVyYTIpDQppZCA9IGFzLmRhdGEudGFibGUoSUQubGVpdHVyYTIpDQoNCiMgQ3JpYXIgaW7DrWNpbyBlIGZpbSBkYXMgbGVpdHVyYXMNCmlkWywgc3RhcnQgOj0gYXMuUE9TSVhjdChwYXN0ZShhcy5EYXRlKERhdGUsIGZvcm1hdCA9ICIlZC8lbS8lWSIpLCBCZWdpbm5pbmcucmVhZGluZyksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTSIsdHogPSAiQW1lcmljYS9TYW9fUGF1bG8iKV0NCg0KaWRbLCBlbmQgOj0gYXMuUE9TSVhjdChwYXN0ZShhcy5EYXRlKERhdGUsIGZvcm1hdCA9ICIlZC8lbS8lWSIpLCBFbmQucmVhZGluZyksDQogIGZvcm1hdCA9ICIlWS0lbS0lZCAlSDolTSIsdHogPSAiQW1lcmljYS9TYW9fUGF1bG8iKV0NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1QViAxIC0gTEVJVFVSQSBET1MgRlJBU0NPUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxlaXR1cmEyID0gY29weShkYWRvczIpDQpsZWl0dXJhMlssIGMoDQogICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9IC4oDQogIE5BX2ludGVnZXJfLCBOQV9jaGFyYWN0ZXJfLCBOQV9pbnRlZ2VyXywgTkFfaW50ZWdlcl8sTkFfaW50ZWdlcl8sIE5BX3JlYWxfLCBOQV9yZWFsXyldDQoNCmxlaXR1cmEyW01QVlBvc2l0aW9uID09IDEsYygNCiAgICAiQm90dGxlIiwgIkFicmV2aWFjYW8iLCAiQmxvY28iLCAiUmVwIiwiTGVpdHVyYSIsICJTb2xvLlNlY28iLCAiSW50ZXJuYWwudGVtcGVyYXR1cmUiKSA6PQ0KICAgIGlkWy5TRCwuKEJvdHRsZSwgQWJyZXZpYWNhbywgQmxvY28sIFJlcCxMZWl0dXJhLCBTb2xvLlNlY28sIEludGVybmFsLnRlbXBlcmF0dXJlKSwNCiAgICAgICBvbiA9IC4oc3RhcnQgPD0gZGF0ZXRpbWUsIGVuZCA+IGRhdGV0aW1lKSxtdWx0ID0gImZpcnN0Il1dDQoNCiMgTWFudGVyIGFwZW5hcyBhcyBsZWl0dXJhcyB2w6FsaWRhcyBkb3MgZnJhc2Nvcw0KbGVpdHVyYTIgPSBsZWl0dXJhMltNUFZQb3NpdGlvbiA9PSAxICYgIWlzLm5hKEJvdHRsZSldDQpWaWV3KGxlaXR1cmEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpgYGANCioqKg0KKioqDQojIyBfKipMZWl0dXJhIDMgLSAxNy8wNC8yMDI2KipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvczMgPSBhcy5kYXRhLnRhYmxlKGZpbHRyYWRvc19sZWl0dXJhMykNCmlkID0gYXMuZGF0YS50YWJsZShJRC5sZWl0dXJhMykNCg0KIyBDcmlhciBpbsOtY2lvIGUgZmltIGRhcyBsZWl0dXJhcw0KaWRbLCBzdGFydCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEJlZ2lubmluZy5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQppZFssIGVuZCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEVuZC5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTVBWIDEgLSBMRUlUVVJBIERPUyBGUkFTQ09TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGVpdHVyYTMgPSBjb3B5KGRhZG9zMykNCmxlaXR1cmEzWywgYygNCiAgIkJvdHRsZSIsICJBYnJldmlhY2FvIiwgIkJsb2NvIiwgIlJlcCIsIkxlaXR1cmEiLCAiU29sby5TZWNvIiwgIkludGVybmFsLnRlbXBlcmF0dXJlIikgOj0gLigNCiAgTkFfaW50ZWdlcl8sIE5BX2NoYXJhY3Rlcl8sIE5BX2ludGVnZXJfLCBOQV9pbnRlZ2VyXyxOQV9pbnRlZ2VyXywgTkFfcmVhbF8sIE5BX3JlYWxfKV0NCg0KbGVpdHVyYTNbTVBWUG9zaXRpb24gPT0gMSxjKA0KICAgICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9DQogICAgaWRbLlNELC4oQm90dGxlLCBBYnJldmlhY2FvLCBCbG9jbywgUmVwLExlaXR1cmEsIFNvbG8uU2VjbywgSW50ZXJuYWwudGVtcGVyYXR1cmUpLA0KICAgICAgIG9uID0gLihzdGFydCA8PSBkYXRldGltZSwgZW5kID4gZGF0ZXRpbWUpLG11bHQgPSAiZmlyc3QiXV0NCg0KIyBNYW50ZXIgYXBlbmFzIGFzIGxlaXR1cmFzIHbDoWxpZGFzIGRvcyBmcmFzY29zDQpsZWl0dXJhMyA9IGxlaXR1cmEzW01QVlBvc2l0aW9uID09IDEgJiAhaXMubmEoQm90dGxlKV0NClZpZXcobGVpdHVyYTMpDQpgYGANCioqKg0KKioqDQojIyBfKipMZWl0dXJhIDQgLSAxOS8wNC8yMDI2KipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvczQgPSBhcy5kYXRhLnRhYmxlKGZpbHRyYWRvc19sZWl0dXJhNCkNCmlkID0gYXMuZGF0YS50YWJsZShJRC5sZWl0dXJhNCkNCg0KIyBDcmlhciBpbsOtY2lvIGUgZmltIGRhcyBsZWl0dXJhcw0KaWRbLCBzdGFydCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEJlZ2lubmluZy5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQppZFssIGVuZCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEVuZC5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTVBWIDEgLSBMRUlUVVJBIERPUyBGUkFTQ09TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGVpdHVyYTQgPSBjb3B5KGRhZG9zNCkNCmxlaXR1cmE0WywgYygNCiAgIkJvdHRsZSIsICJBYnJldmlhY2FvIiwgIkJsb2NvIiwgIlJlcCIsIkxlaXR1cmEiLCAiU29sby5TZWNvIiwgIkludGVybmFsLnRlbXBlcmF0dXJlIikgOj0gLigNCiAgTkFfaW50ZWdlcl8sIE5BX2NoYXJhY3Rlcl8sIE5BX2ludGVnZXJfLCBOQV9pbnRlZ2VyXyxOQV9pbnRlZ2VyXywgTkFfcmVhbF8sIE5BX3JlYWxfKV0NCg0KbGVpdHVyYTRbTVBWUG9zaXRpb24gPT0gMSxjKA0KICAgICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9DQogICAgaWRbLlNELC4oQm90dGxlLCBBYnJldmlhY2FvLCBCbG9jbywgUmVwLExlaXR1cmEsIFNvbG8uU2VjbywgSW50ZXJuYWwudGVtcGVyYXR1cmUpLA0KICAgICAgIG9uID0gLihzdGFydCA8PSBkYXRldGltZSwgZW5kID4gZGF0ZXRpbWUpLG11bHQgPSAiZmlyc3QiXV0NCg0KIyBNYW50ZXIgYXBlbmFzIGFzIGxlaXR1cmFzIHbDoWxpZGFzIGRvcyBmcmFzY29zDQpsZWl0dXJhNCA9IGxlaXR1cmE0W01QVlBvc2l0aW9uID09IDEgJiAhaXMubmEoQm90dGxlKV0NClZpZXcobGVpdHVyYTQpDQpgYGANCioqKg0KKioqDQojIyBfKipMZWl0dXJhIDUgLSAyMi8wNC8yMDI2KipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvczUgPSBhcy5kYXRhLnRhYmxlKGZpbHRyYWRvc19sZWl0dXJhNSkNCmlkID0gYXMuZGF0YS50YWJsZShJRC5sZWl0dXJhNSkNCg0KIyBDcmlhciBpbsOtY2lvIGUgZmltIGRhcyBsZWl0dXJhcw0KaWRbLCBzdGFydCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEJlZ2lubmluZy5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQppZFssIGVuZCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEVuZC5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTVBWIDEgLSBMRUlUVVJBIERPUyBGUkFTQ09TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGVpdHVyYTUgPSBjb3B5KGRhZG9zNSkNCmxlaXR1cmE1WywgYygNCiAgIkJvdHRsZSIsICJBYnJldmlhY2FvIiwgIkJsb2NvIiwgIlJlcCIsIkxlaXR1cmEiLCAiU29sby5TZWNvIiwgIkludGVybmFsLnRlbXBlcmF0dXJlIikgOj0gLigNCiAgTkFfaW50ZWdlcl8sIE5BX2NoYXJhY3Rlcl8sIE5BX2ludGVnZXJfLCBOQV9pbnRlZ2VyXyxOQV9pbnRlZ2VyXywgTkFfcmVhbF8sIE5BX3JlYWxfKV0NCg0KbGVpdHVyYTVbTVBWUG9zaXRpb24gPT0gMSxjKA0KICAgICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9DQogICAgaWRbLlNELC4oQm90dGxlLCBBYnJldmlhY2FvLCBCbG9jbywgUmVwLExlaXR1cmEsIFNvbG8uU2VjbywgSW50ZXJuYWwudGVtcGVyYXR1cmUpLA0KICAgICAgIG9uID0gLihzdGFydCA8PSBkYXRldGltZSwgZW5kID4gZGF0ZXRpbWUpLG11bHQgPSAiZmlyc3QiXV0NCg0KIyBNYW50ZXIgYXBlbmFzIGFzIGxlaXR1cmFzIHbDoWxpZGFzIGRvcyBmcmFzY29zDQpsZWl0dXJhNSA9IGxlaXR1cmE1W01QVlBvc2l0aW9uID09IDEgJiAhaXMubmEoQm90dGxlKV0NClZpZXcobGVpdHVyYTUpDQpgYGANCioqKg0KKioqDQojIyBfKipMZWl0dXJhIDYgLSAyNy8wNC8yMDI2KipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvczYgPSBhcy5kYXRhLnRhYmxlKGZpbHRyYWRvc19sZWl0dXJhNikNCmlkID0gYXMuZGF0YS50YWJsZShJRC5sZWl0dXJhNikNCg0KIyBDcmlhciBpbsOtY2lvIGUgZmltIGRhcyBsZWl0dXJhcw0KaWRbLCBzdGFydCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEJlZ2lubmluZy5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQppZFssIGVuZCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEVuZC5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTVBWIDEgLSBMRUlUVVJBIERPUyBGUkFTQ09TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGVpdHVyYTYgPSBjb3B5KGRhZG9zNikNCmxlaXR1cmE2WywgYygNCiAgIkJvdHRsZSIsICJBYnJldmlhY2FvIiwgIkJsb2NvIiwgIlJlcCIsIkxlaXR1cmEiLCAiU29sby5TZWNvIiwgIkludGVybmFsLnRlbXBlcmF0dXJlIikgOj0gLigNCiAgTkFfaW50ZWdlcl8sIE5BX2NoYXJhY3Rlcl8sIE5BX2ludGVnZXJfLCBOQV9pbnRlZ2VyXyxOQV9pbnRlZ2VyXywgTkFfcmVhbF8sIE5BX3JlYWxfKV0NCg0KbGVpdHVyYTZbTVBWUG9zaXRpb24gPT0gMSxjKA0KICAgICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9DQogICAgaWRbLlNELC4oQm90dGxlLCBBYnJldmlhY2FvLCBCbG9jbywgUmVwLExlaXR1cmEsIFNvbG8uU2VjbywgSW50ZXJuYWwudGVtcGVyYXR1cmUpLA0KICAgICAgIG9uID0gLihzdGFydCA8PSBkYXRldGltZSwgZW5kID4gZGF0ZXRpbWUpLG11bHQgPSAiZmlyc3QiXV0NCg0KIyBNYW50ZXIgYXBlbmFzIGFzIGxlaXR1cmFzIHbDoWxpZGFzIGRvcyBmcmFzY29zDQpsZWl0dXJhNiA9IGxlaXR1cmE2W01QVlBvc2l0aW9uID09IDEgJiAhaXMubmEoQm90dGxlKV0NClZpZXcobGVpdHVyYTYpDQpgYGANCioqKg0KKioqDQojIyBfKipMZWl0dXJhIDcgLSAwNS8wNS8yMDI2KipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvczcgPSBhcy5kYXRhLnRhYmxlKGZpbHRyYWRvc19sZWl0dXJhNykNCmlkID0gYXMuZGF0YS50YWJsZShJRC5sZWl0dXJhNykNCg0KIyBDcmlhciBpbsOtY2lvIGUgZmltIGRhcyBsZWl0dXJhcw0KaWRbLCBzdGFydCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEJlZ2lubmluZy5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQppZFssIGVuZCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEVuZC5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTVBWIDEgLSBMRUlUVVJBIERPUyBGUkFTQ09TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGVpdHVyYTcgPSBjb3B5KGRhZG9zNykNCmxlaXR1cmE3WywgYygNCiAgIkJvdHRsZSIsICJBYnJldmlhY2FvIiwgIkJsb2NvIiwgIlJlcCIsIkxlaXR1cmEiLCAiU29sby5TZWNvIiwgIkludGVybmFsLnRlbXBlcmF0dXJlIikgOj0gLigNCiAgTkFfaW50ZWdlcl8sIE5BX2NoYXJhY3Rlcl8sIE5BX2ludGVnZXJfLCBOQV9pbnRlZ2VyXyxOQV9pbnRlZ2VyXywgTkFfcmVhbF8sIE5BX3JlYWxfKV0NCg0KbGVpdHVyYTdbTVBWUG9zaXRpb24gPT0gMSxjKA0KICAgICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9DQogICAgaWRbLlNELC4oQm90dGxlLCBBYnJldmlhY2FvLCBCbG9jbywgUmVwLExlaXR1cmEsIFNvbG8uU2VjbywgSW50ZXJuYWwudGVtcGVyYXR1cmUpLA0KICAgICAgIG9uID0gLihzdGFydCA8PSBkYXRldGltZSwgZW5kID4gZGF0ZXRpbWUpLG11bHQgPSAiZmlyc3QiXV0NCg0KIyBNYW50ZXIgYXBlbmFzIGFzIGxlaXR1cmFzIHbDoWxpZGFzIGRvcyBmcmFzY29zDQpsZWl0dXJhNyA9IGxlaXR1cmE3W01QVlBvc2l0aW9uID09IDEgJiAhaXMubmEoQm90dGxlKV0NClZpZXcobGVpdHVyYTcpDQpgYGANCioqKg0KKioqDQojIyBfKipMZWl0dXJhIDggLSAxOC8wNS8yMDI2KipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvczggPSBhcy5kYXRhLnRhYmxlKGZpbHRyYWRvc19sZWl0dXJhOCkNCmlkID0gYXMuZGF0YS50YWJsZShJRC5sZWl0dXJhOCkNCg0KIyBDcmlhciBpbsOtY2lvIGUgZmltIGRhcyBsZWl0dXJhcw0KaWRbLCBzdGFydCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEJlZ2lubmluZy5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQppZFssIGVuZCA6PSBhcy5QT1NJWGN0KHBhc3RlKGFzLkRhdGUoRGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksIEVuZC5yZWFkaW5nKSwNCiAgZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNIix0eiA9ICJBbWVyaWNhL1Nhb19QYXVsbyIpXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTVBWIDEgLSBMRUlUVVJBIERPUyBGUkFTQ09TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGVpdHVyYTggPSBjb3B5KGRhZG9zOCkNCmxlaXR1cmE4WywgYygNCiAgIkJvdHRsZSIsICJBYnJldmlhY2FvIiwgIkJsb2NvIiwgIlJlcCIsIkxlaXR1cmEiLCAiU29sby5TZWNvIiwgIkludGVybmFsLnRlbXBlcmF0dXJlIikgOj0gLigNCiAgTkFfaW50ZWdlcl8sIE5BX2NoYXJhY3Rlcl8sIE5BX2ludGVnZXJfLCBOQV9pbnRlZ2VyXyxOQV9pbnRlZ2VyXywgTkFfcmVhbF8sIE5BX3JlYWxfKV0NCg0KbGVpdHVyYThbTVBWUG9zaXRpb24gPT0gMSxjKA0KICAgICJCb3R0bGUiLCAiQWJyZXZpYWNhbyIsICJCbG9jbyIsICJSZXAiLCJMZWl0dXJhIiwgIlNvbG8uU2VjbyIsICJJbnRlcm5hbC50ZW1wZXJhdHVyZSIpIDo9DQogICAgaWRbLlNELC4oQm90dGxlLCBBYnJldmlhY2FvLCBCbG9jbywgUmVwLExlaXR1cmEsIFNvbG8uU2VjbywgSW50ZXJuYWwudGVtcGVyYXR1cmUpLA0KICAgICAgIG9uID0gLihzdGFydCA8PSBkYXRldGltZSwgZW5kID4gZGF0ZXRpbWUpLG11bHQgPSAiZmlyc3QiXV0NCg0KIyBNYW50ZXIgYXBlbmFzIGFzIGxlaXR1cmFzIHbDoWxpZGFzIGRvcyBmcmFzY29zDQpsZWl0dXJhOCA9IGxlaXR1cmE4W01QVlBvc2l0aW9uID09IDEgJiAhaXMubmEoQm90dGxlKV0NClZpZXcobGVpdHVyYTgpDQpgYGANCioqKg0KKioqDQojIyBfKipCYWNrZ29ydW5kcyoqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEZVTsOHw4NPIFBBUkEgRVhUUkFJUiBPIEJBQ0tHUk9VTkQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpjcmlhcl9iYWNrZ3JvdW5kID0gZnVuY3Rpb24oZGFkb3MsIGxlaXR1cmEpIHsNCiAgIyBJZGVudGlmaWNhciBvIGluw61jaW8gcmVhbCBkYSBsZWl0dXJhIGRlIGNhZGEgZnJhc2NvDQogIG1hcGEgPSBsZWl0dXJhWywgLigNCiAgICBpbmljaW9fbGVpdHVyYSA9IG1pbihkYXRldGltZSksDQogICAgQWJyZXZpYWNhbyA9IGRhdGEudGFibGU6OmZpcnN0KEFicmV2aWFjYW8pLA0KICAgIEJsb2NvID0gZGF0YS50YWJsZTo6Zmlyc3QoQmxvY28pLA0KICAgIFJlcCA9IGRhdGEudGFibGU6OmZpcnN0KFJlcCksDQogICAgTGVpdHVyYSA9IGRhdGEudGFibGU6OmZpcnN0KExlaXR1cmEpLA0KICAgIFNvbG8uU2VjbyA9IGRhdGEudGFibGU6OmZpcnN0KFNvbG8uU2VjbyksDQogICAgSW50ZXJuYWwudGVtcGVyYXR1cmUgPSBkYXRhLnRhYmxlOjpmaXJzdChJbnRlcm5hbC50ZW1wZXJhdHVyZSkpLCBieSA9IEJvdHRsZV0NCg0KICAjIERlZmluaXIgb3MgNCBtaW51dG9zIGFudGVyaW9yZXMgw6AgbGVpdHVyYQ0KICBtYXBhWywgYmFja2dyb3VuZF9zdGFydCA6PSBpbmljaW9fbGVpdHVyYSAtIDI0MF0NCiAgIyBNYW50ZXIgYXBlbmFzIGRhZG9zIGRvIE1QVlBvc2l0aW9uIDINCiAgYmdfcmF3ID0gZGFkb3NbTVBWUG9zaXRpb24gPT0gMl0NCiAgIyBFeHRyYWlyIHNlcGFyYWRhbWVudGUgbyBiYWNrZ3JvdW5kIGRlIGNhZGEgZnJhc2NvDQogIGJhY2tncm91bmQgPSBkYXRhLnRhYmxlOjpyYmluZGxpc3QoDQogICAgbGFwcGx5KHNlcV9sZW4obnJvdyhtYXBhKSksIGZ1bmN0aW9uKGkpIHsNCiAgICAgIG0gPSBtYXBhW2ldDQogICAgICBiZyA9IGRhdGEudGFibGU6OmNvcHkoDQogICAgICAgIGJnX3Jhd1tkYXRldGltZSA+PSBtJGJhY2tncm91bmRfc3RhcnQgJiBkYXRldGltZSA8ICBtJGluaWNpb19sZWl0dXJhXSkNCiAgICAgIGlmIChucm93KGJnKSA9PSAwKSByZXR1cm4oTlVMTCkNCiAgICAgIGJnWywgYDo9YCgNCiAgICAgICAgQm90dGxlID0gbSRCb3R0bGUsDQogICAgICAgIEFicmV2aWFjYW8gPSBtJEFicmV2aWFjYW8sDQogICAgICAgIEJsb2NvID0gbSRCbG9jbywNCiAgICAgICAgUmVwID0gbSRSZXAsDQogICAgICAgIExlaXR1cmEgPSBtJExlaXR1cmEsDQogICAgICAgIFNvbG8uU2VjbyA9IG0kU29sby5TZWNvLA0KICAgICAgICBJbnRlcm5hbC50ZW1wZXJhdHVyZSA9IG0kSW50ZXJuYWwudGVtcGVyYXR1cmUsDQogICAgICAgIGluaWNpb19sZWl0dXJhID0gbSRpbmljaW9fbGVpdHVyYSwNCiAgICAgICAgIyBUZW1wbyBkZXNkZSBvIGluw61jaW8gZG9zIDQgbWluIGRlIGJhY2tncm91bmQNCiAgICAgICAgdF9iYWNrZ3JvdW5kID0gYXMubnVtZXJpYygNCiAgICAgICAgICBkaWZmdGltZShkYXRldGltZSxtJGJhY2tncm91bmRfc3RhcnQsdW5pdHMgPSAic2VjcyIpKSldDQogICAgICBiZ30pLHVzZS5uYW1lcyA9IFRSVUUsZmlsbCA9IFRSVUUpDQogIHJldHVybihiYWNrZ3JvdW5kKX0NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENSSUFSIE9TIDggQkFDS0dST1VORFMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmJhY2tncm91bmQxID0gY3JpYXJfYmFja2dyb3VuZChkYWRvczEsIGxlaXR1cmExKQ0KYmFja2dyb3VuZDIgPSBjcmlhcl9iYWNrZ3JvdW5kKGRhZG9zMiwgbGVpdHVyYTIpDQpiYWNrZ3JvdW5kMyA9IGNyaWFyX2JhY2tncm91bmQoZGFkb3MzLCBsZWl0dXJhMykNCmJhY2tncm91bmQ0ID0gY3JpYXJfYmFja2dyb3VuZChkYWRvczQsIGxlaXR1cmE0KQ0KYmFja2dyb3VuZDUgPSBjcmlhcl9iYWNrZ3JvdW5kKGRhZG9zNSwgbGVpdHVyYTUpDQpiYWNrZ3JvdW5kNiA9IGNyaWFyX2JhY2tncm91bmQoZGFkb3M2LCBsZWl0dXJhNikNCmJhY2tncm91bmQ3ID0gY3JpYXJfYmFja2dyb3VuZChkYWRvczcsIGxlaXR1cmE3KQ0KYmFja2dyb3VuZDggPSBjcmlhcl9iYWNrZ3JvdW5kKGRhZG9zOCwgbGVpdHVyYTgpDQoNCmBgYA0KKioqDQoqKioNCiMjIF8qKkp1bnRhciBhcyA4IGxlaXR1cmFzIGUgYmFja2dyb3VuZHMqKl8NCioqKg0KKioqDQpgYGB7cn0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMZWl0dXJhcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkxlaXR1cmFzX2NvbXBsZXRhcyA9IGRwbHlyOjpiaW5kX3Jvd3MoDQogIGxlaXR1cmExLGxlaXR1cmEyLGxlaXR1cmEzLGxlaXR1cmE0LGxlaXR1cmE1LGxlaXR1cmE2LGxlaXR1cmE3LGxlaXR1cmE4KQ0KVmlldyhMZWl0dXJhc19jb21wbGV0YXMpDQoNCmRpbShMZWl0dXJhc19jb21wbGV0YXMpDQp0YWJsZShMZWl0dXJhc19jb21wbGV0YXMkTGVpdHVyYSkNCnN0cihMZWl0dXJhc19jb21wbGV0YXMpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBiYWNrZ3JvdW5kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmJhY2tncm91bmRfY29tcGxldG8gPSBkcGx5cjo6YmluZF9yb3dzKA0KICBiYWNrZ3JvdW5kMSxiYWNrZ3JvdW5kMixiYWNrZ3JvdW5kMyxiYWNrZ3JvdW5kNCxiYWNrZ3JvdW5kNSxiYWNrZ3JvdW5kNixiYWNrZ3JvdW5kNyxiYWNrZ3JvdW5kOCkNClZpZXcoYmFja2dyb3VuZF9jb21wbGV0bykNCg0KZGltKGJhY2tncm91bmRfY29tcGxldG8pDQp0YWJsZShiYWNrZ3JvdW5kX2NvbXBsZXRvJExlaXR1cmEpDQpzdHIoYmFja2dyb3VuZF9jb21wbGV0bykNCmBgYA0KKioqDQoqKioNCiMgKiozIC0gQ29udHJvbGUgZGUgcXVhbGlkYWRlIGUgZGVmaW5pw6fDo28gZGEgamFuZWxhIGRlIGxlaXR1cmEqKg0KKioqDQoqKioNCiMjIF8qKkxlaXR1cmFzKipfDQoqKioNCioqKg0KYGBge3J9DQpkYWRvc19wcm9jID0gTGVpdHVyYXNfY29tcGxldGFzICU+JSANCiAgZHBseXI6Om11dGF0ZShCb3R0bGVJRCA9IHBhc3RlKExlaXR1cmEsQm90dGxlLEFicmV2aWFjYW8sQmxvY28sUmVwLHNlcCA9ICJfIikpICU+JQ0KICBkcGx5cjo6Z3JvdXBfYnkoQm90dGxlSUQpICU+JQ0KICBkcGx5cjo6YXJyYW5nZShkYXRldGltZSwgLmJ5X2dyb3VwID0gVFJVRSkgJT4lDQogIGRwbHlyOjptdXRhdGUodF9zZWMgPSBhcy5udW1lcmljKGRpZmZ0aW1lKGRhdGV0aW1lLCBtaW4oZGF0ZXRpbWUpLCB1bml0cyA9ICJzZWNzIikpKSAlPiUNCiAgZHBseXI6OnVuZ3JvdXAoKQ0KaGVhZChkYWRvc19wcm9jKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUFJFUEFSQVIgREFET1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvc19kaWFnbm9zdGljbyA9IGRhZG9zX3Byb2MgJT4lIGRwbHlyOjpmaWx0ZXIodF9zZWMgPD0gMTIwKSAlPiUNCiAgZHBseXI6OnNlbGVjdChCb3R0bGVJRCwgdF9zZWMsQ08yX2RyeSwgTjJPX2RyeSwgQ0g0X2RyeSwgSDJPLCBOSDMpICU+JQ0KICB0aWR5cjo6cGl2b3RfbG9uZ2VyKGNvbHMgPSBjKENPMl9kcnksIE4yT19kcnksIENINF9kcnksIEgyTywgTkgzKSwNCiAgICBuYW1lc190byA9ICJHYXMiLHZhbHVlc190byA9ICJDb25jZW50cmFjYW8iKSAlPiUNCiAgZHBseXI6Om11dGF0ZShHYXMgPSBkcGx5cjo6cmVjb2RlKEdhcywNCiAgICAgICJDSDRfZHJ5Ij0iQ0g0IChwcG0pIiwiQ08yX2RyeSI9IkNPMiAocHBtKSIsIk4yT19kcnkiPSJOMk8gKHBwbSkiLCJIMk8iPSJIMk8gKCUpIiwiTkgzIj0gIk5IMyAocHBiKSIpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRklHVVJBIFMyIC0gUEVSRklMIERBUyBMRUlUVVJBUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmZpZ19TMiA9IGdncGxvdChkYWRvc19kaWFnbm9zdGljbywgYWVzKHggPSB0X3NlYywgeSA9IENvbmNlbnRyYWNhbywgZ3JvdXAgPSBCb3R0bGVJRCkpICsNCiAgZ2VvbV9saW5lKGFscGhhID0gMC4zNSkgKw0KICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBjKDE1LCA0NSksIGxpbmV0eXBlID0gImRhc2hlZCIpICsNCiAgZmFjZXRfd3JhcCh+IEdhcywgc2NhbGVzID0gImZyZWVfeSIsIG5jb2wgPSAzKSArDQogIGxhYnMoeCA9ICJSZWFkaW5nIHRpbWUgKHMpIix5ID0gIkNvbmNlbnRyYXRpb24iKSArIHRoZW1lX2J3KCkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEyMCwgYnkgPSAxNSkpKw0KICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSxwYW5lbC5zcGFjaW5nID0gdW5pdCgxLCAibGluZXMiKSkNCmZpZ19TMg0KDQpnZ3NhdmUoIkZpZ3VyZSBTMi5wbmciLGZpZ19TMiwgd2lkdGggPSAxMCwgaGVpZ2h0ID0gNiwgZHBpID0gMzAwLCBiZyA9ICJ3aGl0ZSIpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBBVkFMSUFSIEpBTkVMQVMgQ0FORElEQVRBUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmdhc2VzX3FjID0gYygiQ08yX2RyeSIsICJOMk9fZHJ5IiwgIkNINF9kcnkiKQ0KamFuZWxhcyA9IGRhdGEuZnJhbWUoSmFuZWxhID0gYygiMTUtMzUiLCAiMTUtNDUiLCAiMTUtNjAiLCIyMC00MCIsICIyMC01MCIsICIyMC02MCIpLA0KICBpbmljaW8gPSBjKDE1LCAxNSwgMTUsIDIwLCAyMCwgMjApLCBmaW0gPSBjKDM1LCA0NSwgNjAsIDQwLCA1MCwgNjApKQ0KDQphdmFsaWFjYW9famFuZWxhcyA9IGRwbHlyOjpiaW5kX3Jvd3MobGFwcGx5KHNlcV9sZW4obnJvdyhqYW5lbGFzKSksIGZ1bmN0aW9uKGkpIHsNCiAgICBpbmkgPSBqYW5lbGFzJGluaWNpb1tpXQ0KICAgIGZpbSA9IGphbmVsYXMkZmltW2ldDQogICAgZHBseXI6OmJpbmRfcm93cyhsYXBwbHkoZ2FzZXNfcWMsIGZ1bmN0aW9uKGcpIHtkYWRvc19wcm9jICU+JQ0KICAgICAgICAgIGRwbHlyOjpmaWx0ZXIodF9zZWMgPj0gaW5pLCB0X3NlYyA8PSBmaW0pICU+JQ0KICAgICAgICAgIGRwbHlyOjpncm91cF9ieShCb3R0bGVJRCkgJT4lDQogICAgICAgICAgZHBseXI6OnN1bW1hcmlzZShtZWRpYSA9IG1lYW4oLmRhdGFbW2ddXSwgbmEucm0gPSBUUlVFKSxzZCA9IHNkKC5kYXRhW1tnXV0sIG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICBzbG9wZSA9IGNvdih0X3NlYywuZGF0YVtbZ11dLHVzZSA9ICJjb21wbGV0ZS5vYnMiKSAvIHZhcih0X3NlYywgbmEucm0gPSBUUlVFKSwuZ3JvdXBzID0gImRyb3AiKSAlPiUNCiAgICAgICAgICBkcGx5cjo6bXV0YXRlKEdhcyA9IGcsSmFuZWxhID0gamFuZWxhcyRKYW5lbGFbaV0sDQogICAgICAgICAgICAjIENvZWZpY2llbnRlIGRlIHZhcmlhw6fDo28gZGVudHJvIGRhIGphbmVsYQ0KICAgICAgICAgICAgQ1YgPSAoc2QgLyBhYnMobWVkaWEpKSAqIDEwMCwNCiAgICAgICAgICAgICMgTXVkYW7Dp2EgZXN0aW1hZGEgZGEgY29uY2VudHJhw6fDo28gYW8gbG9uZ28gZGEgamFuZWxhDQogICAgICAgICAgICBEcmlmdCA9IGFicyhzbG9wZSkgKiAoZmltIC0gaW5pKSAvIGFicyhtZWRpYSkgKiAxMDApfSkpfSkpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBFU1RBQklMSURBREUgREFTIEpBTkVMQVMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQp0YWJfUzIgPSBhdmFsaWFjYW9famFuZWxhcyAlPiUgZHBseXI6Omdyb3VwX2J5KEdhcywgSmFuZWxhKSAlPiUNCiAgZHBseXI6OnN1bW1hcmlzZShDVl9tZWRpYW5vID0gbWVkaWFuKENWLCBuYS5ybSA9IFRSVUUpLCBDVl9QOTAgPSBxdWFudGlsZShDViwgMC45MCwgbmEucm0gPSBUUlVFKSwNCiAgICBEcmlmdF9tZWRpYW5vID0gbWVkaWFuKERyaWZ0LCBuYS5ybSA9IFRSVUUpLA0KICAgIERyaWZ0X1A5MCA9IHF1YW50aWxlKERyaWZ0LCAwLjkwLCBuYS5ybSA9IFRSVUUpLC5ncm91cHMgPSAiZHJvcCIpICU+JQ0KICBkcGx5cjo6bXV0YXRlKEphbmVsYSA9IGZhY3RvcihKYW5lbGEsIGxldmVscyA9IGphbmVsYXMkSmFuZWxhKSkgJT4lDQogIGRwbHlyOjphcnJhbmdlKEdhcywgSmFuZWxhKQ0KcHJpbnQodGFiX1MyKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRklHVVJBIFMzIC0gQ09NUEFSQcOHw4NPIERBUyBKQU5FTEFTICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGFkb3NfZmlnX1MzID0gdGFiX1MyICU+JQ0KICBkcGx5cjo6c2VsZWN0KEdhcywgSmFuZWxhLCBDVl9QOTAsIERyaWZ0X1A5MCkgJT4lDQogIHRpZHlyOjpwaXZvdF9sb25nZXIoY29scyA9IGMoQ1ZfUDkwLCBEcmlmdF9QOTApLG5hbWVzX3RvID0gIk1ldHJpY2EiLHZhbHVlc190byA9ICJWYWxvciIpICU+JQ0KICBkcGx5cjo6bXV0YXRlKA0KICAgIEdhcyA9IGRwbHlyOjpyZWNvZGUoR2FzLCJDSDRfZHJ5Ij0iQ0g0IChwcG0pIiwiQ08yX2RyeSI9IkNPMiAocHBtKSIsIk4yT19kcnkiPSJOMk8gKHBwbSkiKSwNCiAgICBNZXRyaWNhID0gZHBseXI6OnJlY29kZShNZXRyaWNhLCJDVl9QOTAiID0gIkNWIFA5MCAoJSkiLCJEcmlmdF9QOTAiID0gIkRyaWZ0IFA5MCAoJSkiKSkNCg0KZmlnX1MzID0gZ2dwbG90KGRhZG9zX2ZpZ19TMyxhZXMoeCA9IEphbmVsYSwgeSA9IFZhbG9yLCBncm91cCA9IEdhcykpICsNCiAgZ2VvbV9saW5lKCkgKyBnZW9tX3BvaW50KHNpemUgPSAyKSArDQogIGZhY2V0X2dyaWQoTWV0cmljYSB+IEdhcywgc2NhbGVzID0gImZyZWVfeSIpICsgDQogIGxhYnMoeCA9ICJSZWFkaW5nIHdpbmRvdyAocykiLHkgPSAiVmFsdWUgKCUpIikgKyB0aGVtZV9idygpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSxzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIGhqdXN0ID0gMC41KSkNCmZpZ19TMw0KDQpnZ3NhdmUoIkZpZ3VyZSBTMy5wbmciLGZpZ19TMywgd2lkdGggPSAxMCwgaGVpZ2h0ID0gNiwgZHBpID0gNDAwLCBiZyA9ICJ3aGl0ZSIpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBKQU5FTEEgRklOQUw6IDE1LTQ1IHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvc19lc3RhdmVpcyA9IGRhZG9zX3Byb2MgJT4lIGRwbHlyOjpmaWx0ZXIodF9zZWMgPj0gMTUsIHRfc2VjIDw9IDQ1KQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ09OQ0VOVFJBw4fDlUVTIE3DiURJQVMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWRpYXNfbGVpdHVyYXMgPSBkYWRvc19lc3RhdmVpcyAlPiUgZHBseXI6Omdyb3VwX2J5KA0KICAgIExlaXR1cmEsIEJvdHRsZSwgQWJyZXZpYWNhbywgQmxvY28sIFJlcCkgJT4lDQogIGRwbHlyOjpzdW1tYXJpc2UoDQogICAgVGVtcGVyYXR1cmEgPSBtZWFuKEludGVybmFsLnRlbXBlcmF0dXJlLCBuYS5ybSA9IFRSVUUpLA0KICAgIFBlc28uc29sbyA9IG1lYW4oU29sby5TZWNvLCBuYS5ybSA9IFRSVUUpLA0KICAgIE4yTyA9IG1lYW4oTjJPX2RyeSwgbmEucm0gPSBUUlVFKSwNCiAgICBDTzIgPSBtZWFuKENPMl9kcnksIG5hLnJtID0gVFJVRSksDQogICAgQ0g0ID0gbWVhbihDSDRfZHJ5LCBuYS5ybSA9IFRSVUUpLA0KICAgICMgTWFudGlkbyBhcGVuYXMgY29tbyBjb250cm9sZSBkZSBxdWFsaWRhZGUNCiAgICBIMk9fUUMgPSBtZWFuKEgyTywgbmEucm0gPSBUUlVFKSwNCiAgICBuX29icyA9IGRwbHlyOjpuKCksLmdyb3VwcyA9ICJkcm9wIikNClZpZXcobWVkaWFzX2xlaXR1cmFzKQ0KYGBgDQoqKioNCioqKg0KIyMgXyoqQmFja2dyb3VuZCoqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFBSRVBBUkFSIERBRE9TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KYmFja2dyb3VuZF9wcm9jID0gYmFja2dyb3VuZF9jb21wbGV0byAlPiUgZHBseXI6Om11dGF0ZSgNCiAgICBCb3R0bGVJRCA9IHBhc3RlKExlaXR1cmEsIEJvdHRsZSwgQWJyZXZpYWNhbywgQmxvY28sIFJlcCxzZXAgPSAiXyIpKQ0KaGVhZChiYWNrZ3JvdW5kX3Byb2MpDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFBSRVBBUkFSIERBRE9TIFBBUkEgRElBR07Dk1NUSUNPICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KYmFja2dyb3VuZF9kaWFnbm9zdGljbyA9IGJhY2tncm91bmRfcHJvYyAlPiUgZHBseXI6OmZpbHRlcigNCiAgICB0X2JhY2tncm91bmQgPj0gMCx0X2JhY2tncm91bmQgPD0gMjQwKSAlPiUNCiAgZHBseXI6OnNlbGVjdChCb3R0bGVJRCx0X2JhY2tncm91bmQsQ08yX2RyeSxOMk9fZHJ5LENINF9kcnksSDJPKSAlPiUNCiAgdGlkeXI6OnBpdm90X2xvbmdlcihjb2xzID0gYyhDTzJfZHJ5LCBOMk9fZHJ5LCBDSDRfZHJ5LCBIMk8pLG5hbWVzX3RvID0gIkdhcyIsdmFsdWVzX3RvID0gIkNvbmNlbnRyYWNhbyIpICU+JQ0KICBkcGx5cjo6bXV0YXRlKA0KICAgIEdhcyA9IGRwbHlyOjpyZWNvZGUoR2FzLCJDSDRfZHJ5Ij0iQ0g0IChwcG0pIiwiQ08yX2RyeSI9IkNPMiAocHBtKSIsIk4yT19kcnkiPSJOMk8gKHBwbSkiLCJIMk8iPSJIMk8gKCUpIikpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGSUdVUkEgUzQgLSBQRVJGSUwgRE8gQkFDS0dST1VORCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmZpZ19TNCA9IGdncGxvdChiYWNrZ3JvdW5kX2RpYWdub3N0aWNvLGFlcyh4ID0gdF9iYWNrZ3JvdW5kLHkgPSBDb25jZW50cmFjYW8sZ3JvdXAgPSBCb3R0bGVJRCkpICsNCiAgZ2VvbV9saW5lKGFscGhhID0gMC4zMCkgKw0KICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBjKDYwLCA5MCksbGluZXR5cGUgPSAiZGFzaGVkIikgKw0KICBmYWNldF93cmFwKH4gR2FzLHNjYWxlcyA9ICJmcmVlX3kiLG5jb2wgPSAyKSArDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjQwLCBieSA9IDMwKSkgKw0KICBsYWJzKHggPSAiQmFja2dyb3VuZCBtZWFzdXJlbWVudCB0aW1lIChzKSIseSA9ICJDb25jZW50cmF0aW9uIikgKw0KICB0aGVtZV9idygpK3RoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsZmFjZSA9ICJib2xkIikscGFuZWwuc3BhY2luZyA9IGdyaWQ6OnVuaXQoMSwgImxpbmVzIikpDQpmaWdfUzQNCg0KZ2dzYXZlKCJGaWd1cmUgUzQucG5nIixmaWdfUzQsd2lkdGggPSA5LGhlaWdodCA9IDcsZHBpID0gMzAwLGJnID0gIndoaXRlIikNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEFWQUxJQVIgSkFORUxBUyBETyBCQUNLR1JPVU5EICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZ2FzZXNfYmcgPSBjKCJDTzJfZHJ5IiwiTjJPX2RyeSIsIkNINF9kcnkiKQ0KDQpqYW5lbGFzX2JnID0gZGF0YS5mcmFtZShKYW5lbGEgPSBjKCIyMC01MCIsIjMwLTYwIiwiMzAtOTAiLCI2MC05MCIsIjYwLTEyMCIsIjE4MC0yNDAiKSwNCiAgaW5pY2lvID0gYygyMCwzMCwzMCw2MCw2MCwxODApLGZpbSA9IGMoNTAsNjAsOTAsOTAsMTIwLDI0MCkpDQoNCmF2YWxpYWNhb19iZyA9IGRwbHlyOjpiaW5kX3Jvd3MoDQogIGxhcHBseShzZXFfbGVuKG5yb3coamFuZWxhc19iZykpLCBmdW5jdGlvbihpKSB7DQogICAgaW5pID0gamFuZWxhc19iZyRpbmljaW9baV0NCiAgICBmaW0gPSBqYW5lbGFzX2JnJGZpbVtpXQ0KICAgIGRwbHlyOjpiaW5kX3Jvd3MobGFwcGx5KGdhc2VzX2JnLCBmdW5jdGlvbihnKSB7DQogICAgICAgIGJhY2tncm91bmRfcHJvYyAlPiUNCiAgICAgICAgICBkcGx5cjo6ZmlsdGVyKHRfYmFja2dyb3VuZCA+PSBpbmksdF9iYWNrZ3JvdW5kIDw9IGZpbSkgJT4lDQogICAgICAgICAgZHBseXI6Omdyb3VwX2J5KEJvdHRsZUlEKSAlPiUNCiAgICAgICAgICBkcGx5cjo6c3VtbWFyaXNlKG1lZGlhID0gbWVhbiguZGF0YVtbZ11dLG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICBzZCA9IHNkKC5kYXRhW1tnXV0sbmEucm0gPSBUUlVFKSwNCiAgICAgICAgICAgIHNsb3BlID0gY292KHRfYmFja2dyb3VuZCwuZGF0YVtbZ11dLA0KICAgICAgICAgICAgICAgICAgICAgICAgdXNlID0gImNvbXBsZXRlLm9icyIpIC92YXIodF9iYWNrZ3JvdW5kLG5hLnJtID0gVFJVRSksLmdyb3VwcyA9ICJkcm9wIikgJT4lDQogICAgICAgICAgZHBseXI6Om11dGF0ZShHYXMgPSBnLA0KICAgICAgICAgICAgSmFuZWxhID0gamFuZWxhc19iZyRKYW5lbGFbaV0sDQogICAgICAgICAgICAjIENvZWZpY2llbnRlIGRlIHZhcmlhw6fDo28gZGVudHJvIGRhIGphbmVsYQ0KICAgICAgICAgICAgQ1YgPSAoc2QgLyBhYnMobWVkaWEpKSAqIDEwMCwNCiAgICAgICAgICAgICMgTXVkYW7Dp2EgcmVsYXRpdmEgZXN0aW1hZGEgYW8gbG9uZ28gZGEgamFuZWxhDQogICAgICAgICAgICBEcmlmdCA9IGFicyhzbG9wZSkgKiAoZmltIC0gaW5pKSAvIGFicyhtZWRpYSkgKiAxMDApfSkpfSkpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBSRVNVTU8gREFTIEpBTkVMQVMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bW9fYmcgPSBhdmFsaWFjYW9fYmcgJT4lDQogIGRwbHlyOjpncm91cF9ieShHYXMsSmFuZWxhKSAlPiUNCiAgZHBseXI6OnN1bW1hcmlzZShDVl9tZWRpYW5vID0gbWVkaWFuKENWLG5hLnJtID0gVFJVRSksDQogICAgQ1ZfUDkwID0gcXVhbnRpbGUoQ1YsMC45MCxuYS5ybSA9IFRSVUUpLA0KICAgIERyaWZ0X21lZGlhbm8gPSBtZWRpYW4oRHJpZnQsbmEucm0gPSBUUlVFKSwNCiAgICBEcmlmdF9QOTAgPSBxdWFudGlsZShEcmlmdCwwLjkwLG5hLnJtID0gVFJVRSksLmdyb3VwcyA9ICJkcm9wIikgJT4lDQogIGRwbHlyOjptdXRhdGUoSmFuZWxhID0gZmFjdG9yKEphbmVsYSxsZXZlbHMgPSBqYW5lbGFzX2JnJEphbmVsYSkpICU+JQ0KICBkcGx5cjo6YXJyYW5nZShHYXMsSmFuZWxhKQ0KcHJpbnQocmVzdW1vX2JnKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGSUdVUkEgUzUgLSBDT01QQVJBw4fDg08gREFTIEpBTkVMQVMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvc19maWdfUzUgPSByZXN1bW9fYmcgJT4lIGRwbHlyOjpzZWxlY3QoDQogIEdhcyxKYW5lbGEsQ1ZfUDkwLERyaWZ0X1A5MCkgJT4lDQogIHRpZHlyOjpwaXZvdF9sb25nZXIoY29scyA9IGMoQ1ZfUDkwLERyaWZ0X1A5MCksDQogICAgbmFtZXNfdG8gPSAiTWV0cmljYSIsdmFsdWVzX3RvID0gIlZhbG9yIikgJT4lDQogIGRwbHlyOjptdXRhdGUoR2FzID0gZHBseXI6OnJlY29kZSgNCiAgICAgIEdhcywiQ0g0X2RyeSIgPSAiQ0g0IChwcG0pIiwiQ08yX2RyeSIgPSAiQ08yIChwcG0pIiwiTjJPX2RyeSIgPSAiTjJPIChwcG0pIiksDQogICAgTWV0cmljYSA9IGRwbHlyOjpyZWNvZGUoTWV0cmljYSwiQ1ZfUDkwIiA9ICJDViBQOTAgKCUpIiwiRHJpZnRfUDkwIiA9ICJEcmlmdCBQOTAgKCUpIikpDQoNCmZpZ19TNSA9IGdncGxvdChkYWRvc19maWdfUzUsYWVzKHggPSBKYW5lbGEseSA9IFZhbG9yLGdyb3VwID0gR2FzKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsNCiAgZmFjZXRfZ3JpZChNZXRyaWNhIH4gR2FzLHNjYWxlcyA9ICJmcmVlX3kiKSArDQogIGxhYnMoeCA9ICJCYWNrZ3JvdW5kIHdpbmRvdyAocykiLHkgPSAiVmFsdWUgKCUpIikgKw0KICB0aGVtZV9idygpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSxoanVzdCA9IDEpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIixoanVzdCA9IDAuNSkpDQpmaWdfUzUNCg0KZ2dzYXZlKCJGaWd1cmUgUzUucG5nIixmaWdfUzUsd2lkdGggPSAxMCxoZWlnaHQgPSA2LGRwaSA9IDQwMCxiZyA9ICJ3aGl0ZSIpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBCQUNLR1JPVU5EIEZJTkFMOiA2MC05MCBzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KYmFja2dyb3VuZF9lc3RhdmVsID0gYmFja2dyb3VuZF9wcm9jICU+JQ0KICBkcGx5cjo6ZmlsdGVyKHRfYmFja2dyb3VuZCA+PSA2MCx0X2JhY2tncm91bmQgPD0gOTApDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDT05DRU5UUkHDh8OVRVMgTcOJRElBUyBETyBCQUNLR1JPVU5EICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVkaWFzX2JhY2tncm91bmQgPSBiYWNrZ3JvdW5kX2VzdGF2ZWwgJT4lDQogIGRwbHlyOjpncm91cF9ieShMZWl0dXJhLEJvdHRsZSkgJT4lDQogIGRwbHlyOjpzdW1tYXJpc2UoDQogICAgQ08yX2JnID0gbWVhbihDTzJfZHJ5LG5hLnJtID0gVFJVRSksDQogICAgTjJPX2JnID0gbWVhbihOMk9fZHJ5LG5hLnJtID0gVFJVRSksDQogICAgQ0g0X2JnID0gbWVhbihDSDRfZHJ5LG5hLnJtID0gVFJVRSksDQogICAgIyBNYW50aWRvIGFwZW5hcyBjb21vIGNvbnRyb2xlIGRlIHF1YWxpZGFkZQ0KICAgIEgyT19iZyA9IG1lYW4oSDJPLG5hLnJtID0gVFJVRSksDQogICAgbl9vYnNfYmcgPSBkcGx5cjo6bigpLC5ncm91cHMgPSAiZHJvcCIpDQpucm93KG1lZGlhc19iYWNrZ3JvdW5kKQ0KVmlldyhtZWRpYXNfYmFja2dyb3VuZCkNCmBgYA0KDQoqKioNCioqKg0KIyAqKjQgLSBDYWxjdWxhciBlbWlzc8OjbyBlIG5vcm1hbGl6YXIgcG9yIGcgZGUgc29sbyBzZWNvKioNCioqKg0KKioqDQpgYGB7cn0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBKVU5UQVIgTEVJVFVSQSBFIEJBQ0tHUk9VTkQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpkYWRvc19mbHV4byA9IG1lZGlhc19sZWl0dXJhcyAlPiUNCiAgZHBseXI6OmxlZnRfam9pbihtZWRpYXNfYmFja2dyb3VuZCxieSA9IGMoIkxlaXR1cmEiLCAiQm90dGxlIikpDQoNCiMgQ29uZmVyaXIgc2UgdG9kb3Mgb3MgZnJhc2NvcyByZWNlYmVyYW0gYmFja2dyb3VuZA0KbnJvdyhkYWRvc19mbHV4bykNCmNvbFN1bXMoaXMubmEoZGFkb3NfZmx1eG9bLCBjKCJDTzJfYmciLCJOMk9fYmciLCJDSDRfYmciKV0pKQ0KVmlldyhkYWRvc19mbHV4bykNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ09OU1RBTlRFUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNClIgPSAwLjA4MjA1NyAgICAgICAgIyBMIGF0bSBtb2wtMSBLLTENClAgPSAwLjkyNyAgICAgICAgICAgIyBhdG0gLSBlc3RpbWFkYSBwYXJhIGFsdGl0dWRlIGRlIDYzMyBtDQpWaCA9IDAuNzAwICAgICAgICAgICMgTCAtIHZvbHVtZSBkbyBoZWFkc3BhY2UNCnRlbXBvID0gNCAgICAgICAgICAgIyBtaW4gLSBwZXLDrW9kbyBkZSBmZWNoYW1lbnRvIGRvIGZyYXNjbw0KTU0uQ0g0ID0gMTYuMDQgICAgICAjIGcgbW9sLTENCk1NLk4yTyA9IDQ0LjAxMyAgICAgIyBnIG1vbC0xDQpNTS5DTzIgPSA0NC4wMDk1ICAgICMgZyBtb2wtMQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ09SUklHSVIgUEVMTyBCQUNLR1JPVU5EICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGFkb3NfZmx1eG8gPSBkYWRvc19mbHV4byAlPiUgZHBseXI6Om11dGF0ZSgNCiAgICAjIFRlbXBlcmF0dXJhIGRvIGhlYWRzcGFjZSBlbSBLZWx2aW4NCiAgICBUX0sgPSBUZW1wZXJhdHVyYSArIDI3My4xNSwNCiAgICAjIERpZmVyZW7Dp2EgZW50cmUgY29uY2VudHJhw6fDo28gZG8gZnJhc2NvIGUgYXIgYW1iaWVudGUNCiAgICBEZWx0YV9DSDQgPSBDSDQgLSBDSDRfYmcsDQogICAgRGVsdGFfTjJPID0gTjJPIC0gTjJPX2JnLA0KICAgIERlbHRhX0NPMiA9IENPMiAtIENPMl9iZykNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1BU1NBIEFDVU1VTEFEQSBFTSA0IE1JTiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmRhZG9zX2ZsdXhvID0gZGFkb3NfZmx1eG8gJT4lIGRwbHlyOjptdXRhdGUoDQogICAgIyBNYXNzYSBhY3VtdWxhZGEgbm8gaGVhZHNwYWNlIGR1cmFudGUgb3MgNCBtaW4gKMK1ZykNCiAgICBDSDRfdWdfNG1pbiA9IERlbHRhX0NINCAqIFZoICogTU0uQ0g0ICogUCAvIChSICogVF9LKSwNCiAgICBOMk9fdWdfNG1pbiA9IERlbHRhX04yTyAqIFZoICogTU0uTjJPICogUCAvIChSICogVF9LKSwNCiAgICBDTzJfdWdfNG1pbiA9IERlbHRhX0NPMiAqIFZoICogTU0uQ08yICogUCAvIChSICogVF9LKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE5PUk1BTElaQVIgUE9SIFNPTE8gU0VDTyBFIFRFTVBPICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGFkb3NfZmx1eG8gPSBkYWRvc19mbHV4byAlPiUgZHBseXI6Om11dGF0ZSgNCiAgICAjIMK1ZyBkZSBnw6FzIGctMSBkZSBzb2xvIHNlY28gaC0xDQogICAgRW1pc3Nhb19DSDRfdWdfZ19oID0gQ0g0X3VnXzRtaW4gKiAoNjAgLyB0ZW1wbykgLyBQZXNvLnNvbG8sDQogICAgRW1pc3Nhb19OMk9fdWdfZ19oID0gTjJPX3VnXzRtaW4gKiAoNjAgLyB0ZW1wbykgLyBQZXNvLnNvbG8sDQogICAgRW1pc3Nhb19DTzJfdWdfZ19oID0gQ08yX3VnXzRtaW4gKiAoNjAgLyB0ZW1wbykgLyBQZXNvLnNvbG8pDQpWaWV3KGRhZG9zX2ZsdXhvKQ0KYGBgDQoqKioNCioqKg0KIyAqKjUgLSBDYWxjdWxhciBlbWlzc8O1ZXMgYWN1bXVsYWRhcyoqDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgSURFTlRJRklDQVIgT1MgRElBUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmRpYXNfbGVpdHVyYSA9IGMoMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCkNCmRhZG9zX2FjdW11bG8gPSBkYWRvc19mbHV4byAlPiUNCiAgZHBseXI6Om11dGF0ZShEaWEgPSBkaWFzX2xlaXR1cmFbTGVpdHVyYV0pICU+JQ0KICBkcGx5cjo6YXJyYW5nZShCb3R0bGUsRGlhKQ0KVmlldyhkYWRvc19hY3VtdWxvKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDQUxDVUxBUiBFTUlTU8OVRVMgQUNVTVVMQURBUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVtaXNzb2VzX2FjdW11bGFkYXMgPSBkYWRvc19hY3VtdWxvICU+JQ0KICBkcGx5cjo6Z3JvdXBfYnkoQm90dGxlLEFicmV2aWFjYW8sQmxvY28sUmVwKSAlPiUNCiAgZHBseXI6OmFycmFuZ2UoRGlhLCAuYnlfZ3JvdXAgPSBUUlVFKSAlPiUNCiAgZHBseXI6OnN1bW1hcmlzZSgNCiAgICBDSDRfYWN1bXVsYWRvX3VnX2cgPXN1bSgoDQogICAgICBFbWlzc2FvX0NINF91Z19nX2grZHBseXI6OmxlYWQoRW1pc3Nhb19DSDRfdWdfZ19oKSkvMiooZHBseXI6OmxlYWQoRGlhKS1EaWEpKjI0LG5hLnJtID0gVFJVRSksDQogICAgTjJPX2FjdW11bGFkb191Z19nID1zdW0oKA0KICAgICAgRW1pc3Nhb19OMk9fdWdfZ19oK2RwbHlyOjpsZWFkKEVtaXNzYW9fTjJPX3VnX2dfaCkpLzIqKGRwbHlyOjpsZWFkKERpYSktRGlhKSoyNCxuYS5ybSA9IFRSVUUpLA0KICAgIENPMl9hY3VtdWxhZG9fdWdfZyA9c3VtKCgNCiAgICAgIEVtaXNzYW9fQ08yX3VnX2dfaCtkcGx5cjo6bGVhZChFbWlzc2FvX0NPMl91Z19nX2gpKS8yKihkcGx5cjo6bGVhZChEaWEpLURpYSkqMjQsbmEucm0gPSBUUlVFKSwuZ3JvdXBzID0gImRyb3AiKQ0KVmlldyhlbWlzc29lc19hY3VtdWxhZGFzKQ0KYGBgDQoNCioqKg0KKioqDQojICoqNSAtIEFuw6FsaXNlIGVzdGF0w61zdGljYSoqIA0KKioqDQoqKioNCiMjIF8qKjYuMSAtIERpbsOibWljYSB0ZW1wb3JhbCBkYXMgZW1pc3PDtWVzKipfDQoqKioNCioqKg0KIyMjIF8qKjYuMS4xIC0gTU9ERUxPUyBDQU5ESURBVE9TKipfDQoqKioNCioqKg0KYGBge3J9DQpkYWRvc19hY3VtdWxvJEFicmV2aWFjYW89YXMuZmFjdG9yKGRhZG9zX2FjdW11bG8kQWJyZXZpYWNhbykNCmRhZG9zX2FjdW11bG8kRGlhPWFzLmZhY3RvcihkYWRvc19hY3VtdWxvJERpYSkNCmRhZG9zX2FjdW11bG8kQmxvY289YXMuZmFjdG9yKGRhZG9zX2FjdW11bG8kQmxvY28pDQpzdHIoZGFkb3NfYWN1bXVsbykNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENPMiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxpYnJhcnkobG1lNCkNCmxpYnJhcnkobG1lclRlc3QpDQojIFNlbSBibG9jbyBlIHNlbSBlZmVpdG8gYWxlYXTDs3Jpbw0KbW9kMSA9IGxtKEVtaXNzYW9fQ08yX3VnX2dfaCB+IEFicmV2aWFjYW8gKiBEaWEsZGF0YSA9IGRhZG9zX2FjdW11bG8pDQojIENvbSBibG9jbw0KbW9kMiA9IGxtKEVtaXNzYW9fQ08yX3VnX2dfaCB+IEFicmV2aWFjYW8gKiBEaWEgKyBCbG9jbyxkYXRhID0gZGFkb3NfYWN1bXVsbykNCiMgQ29tIEJvdHRsZSBjb21vIGVmZWl0byBhbGVhdMOzcmlvDQptb2QzID0gbG1lcihFbWlzc2FvX0NPMl91Z19nX2ggfiBBYnJldmlhY2FvICogRGlhICsgKDEgfCBCb3R0bGUpLGRhdGEgPSBkYWRvc19hY3VtdWxvLFJFTUwgPSBGQUxTRSkNCiMgQ29tIGJsb2NvICsgQm90dGxlDQptb2Q0ID0gbG1lcihFbWlzc2FvX0NPMl91Z19nX2h+QWJyZXZpYWNhbyogRGlhICsgQmxvY28gKyAoMXxCb3R0bGUpLCBkYXRhID0gZGFkb3NfYWN1bXVsbyxSRU1MID0gRkFMU0UpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDT01QQVJBUiBNT0RFTE9TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQUlDKG1vZDEsIG1vZDIsIG1vZDMsIG1vZDQpDQpCSUMobW9kMSwgbW9kMiwgbW9kMywgbW9kNCkNClZhckNvcnIobW9kMykNClZhckNvcnIobW9kNCkNCmlzU2luZ3VsYXIobW9kMykNCmlzU2luZ3VsYXIobW9kNCkNCiMgUmVzdWx0YWRvOiBtb2QxIMOpIG1haXMgc2ltcGxlcywgY29tIG1lbm9yIEFJQyBlIEJJQywgbW9kMiBlIG1vZDMgcGlvcm91IEFJQy9CSUMgZSBtb2Q0IMOpIHNpbmd1bGFyLg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTU9ERUxPIEZJTkFMIC0gQ08yICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbW9kX0NPMiA9IG1vZDENCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ0g0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBTZW0gYmxvY28gZSBzZW0gZWZlaXRvIGFsZWF0w7NyaW8NCm1vZDEgPSBsbShFbWlzc2FvX0NINF91Z19nX2ggfiBBYnJldmlhY2FvICogRGlhLGRhdGEgPSBkYWRvc19hY3VtdWxvKQ0KIyBDb20gYmxvY28NCm1vZDIgPSBsbShFbWlzc2FvX0NINF91Z19nX2ggfiBBYnJldmlhY2FvICogRGlhICsgQmxvY28sZGF0YSA9IGRhZG9zX2FjdW11bG8pDQojIENvbSBCb3R0bGUgY29tbyBlZmVpdG8gYWxlYXTDs3Jpbw0KbW9kMyA9IGxtZXIoRW1pc3Nhb19DSDRfdWdfZ19oIH4gQWJyZXZpYWNhbyAqIERpYSArICgxIHwgQm90dGxlKSxkYXRhID0gZGFkb3NfYWN1bXVsbyxSRU1MID0gRkFMU0UpDQojIENvbSBibG9jbyArIEJvdHRsZQ0KbW9kNCA9IGxtZXIoRW1pc3Nhb19DSDRfdWdfZ19ofkFicmV2aWFjYW8gKiBEaWEgKyBCbG9jbyArICgxfEJvdHRsZSksIGRhdGEgPSBkYWRvc19hY3VtdWxvLCBSRU1MID0gRkFMU0UpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDT01QQVJBUiBNT0RFTE9TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQUlDKG1vZDEsIG1vZDIsIG1vZDMsIG1vZDQpDQpCSUMobW9kMSwgbW9kMiwgbW9kMywgbW9kNCkNClZhckNvcnIobW9kMykNClZhckNvcnIobW9kNCkNCmlzU2luZ3VsYXIobW9kMykNCmlzU2luZ3VsYXIobW9kNCkNCiMgUmVzdWx0YWRvOiBNZXNtYSBjb2lzYSBwYXJhIG1ldGFubw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTU9ERUxPIEZJTkFMIC0gQ0g0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbW9kX0NINCA9IG1vZDENCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTjJPICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBTZW0gYmxvY28gZSBzZW0gZWZlaXRvIGFsZWF0w7NyaW8NCm1vZDEgPSBsbShFbWlzc2FvX04yT191Z19nX2ggfiBBYnJldmlhY2FvICogRGlhLGRhdGEgPSBkYWRvc19hY3VtdWxvKQ0KIyBDb20gYmxvY28NCm1vZDIgPSBsbShFbWlzc2FvX04yT191Z19nX2ggfiBBYnJldmlhY2FvICogRGlhICsgQmxvY28sIGRhdGEgPSBkYWRvc19hY3VtdWxvKQ0KIyBDb20gQm90dGxlIGNvbW8gZWZlaXRvIGFsZWF0w7NyaW8NCm1vZDMgPSBsbWVyKEVtaXNzYW9fTjJPX3VnX2dfaCB+IEFicmV2aWFjYW8gKiBEaWEgKyAoMSB8IEJvdHRsZSksZGF0YSA9IGRhZG9zX2FjdW11bG8sUkVNTCA9IEZBTFNFKQ0KIyBDb20gYmxvY28gKyBCb3R0bGUNCm1vZDQgPSBsbWVyKEVtaXNzYW9fTjJPX3VnX2dfaH5BYnJldmlhY2FvICogRGlhICsgQmxvY28gKyAoMXxCb3R0bGUpLCBkYXRhID0gZGFkb3NfYWN1bXVsbyxSRU1MID0gRkFMU0UpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDT01QQVJBUiBNT0RFTE9TICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQUlDKG1vZDEsIG1vZDIsIG1vZDMsIG1vZDQpDQpCSUMobW9kMSwgbW9kMiwgbW9kMywgbW9kNCkNClZhckNvcnIobW9kMykNClZhckNvcnIobW9kNCkNCmlzU2luZ3VsYXIobW9kMykNCmlzU2luZ3VsYXIobW9kNCkNCiMgUmVzdWx0YWRvOiBNZXNtYSBjb2lzYSBwYXJhIE4yTw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTU9ERUxPIEZJTkFMIC0gTjJPICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbW9kX04yTyA9IG1vZDENCmBgYA0KKioqDQoqKioNCiMjIyBfKio2LjEuMiAtIFByZXNzdXBvc3RvcyoqXw0KKioqDQoqKioNCmBgYHtyfQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENPMiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgR3LDoWZpY28gZGUgcmVzw61kdW9zDQpwbG90KGZpdHRlZChtb2RfQ08yKSwgcmVzaWQobW9kX0NPMikseGxhYiA9ICJGaXR0ZWQgdmFsdWVzIix5bGFiID0gIlJlc2lkdWFscyIpDQojIE5vcm1hbGlkYWRlIGRvcyByZXPDrWR1b3MNCnFxbm9ybShyZXNpZChtb2RfQ08yKSkNCnNoYXBpcm8udGVzdChyZXNpZChtb2RfQ08yKSkNCiNSQUlaIFFVQURSQURBIA0KZGFkb3NfYWN1bXVsbyRDTzJfc3FydCA9IHNxcnQoZGFkb3NfYWN1bXVsbyRFbWlzc2FvX0NPMl91Z19nX2gpDQptb2RfQ08yX3NxcnQgPSBsbShDTzJfc3FydCB+IEFicmV2aWFjYW8gKiBEaWEsZGF0YSA9IGRhZG9zX2FjdW11bG8pDQpxcW5vcm0ocmVzaWQobW9kX0NPMl9zcXJ0KSkNCnNoYXBpcm8udGVzdChyZXNpZChtb2RfQ08yX3NxcnQpKQ0KI0xPRw0KZGFkb3NfYWN1bXVsbyRDTzJfbG9nID0gbG9nKGRhZG9zX2FjdW11bG8kRW1pc3Nhb19DTzJfdWdfZ19oKQ0KbW9kX0NPMl9sb2cgPSBsbShDTzJfbG9nIH4gQWJyZXZpYWNhbyAqIERpYSxkYXRhID0gZGFkb3NfYWN1bXVsbykNCnFxbm9ybShyZXNpZChtb2RfQ08yX2xvZykpDQpzaGFwaXJvLnRlc3QocmVzaWQobW9kX0NPMl9sb2cpKQ0KI1Jlc3VsdGFkbzogTE9HIGZ1bmNpb25vdQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ0g0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBHcsOhZmljbyBkZSByZXPDrWR1b3MNCnBsb3QoZml0dGVkKG1vZF9DSDQpLCByZXNpZChtb2RfQ0g0KSx4bGFiID0gIkZpdHRlZCB2YWx1ZXMiLHlsYWIgPSAiUmVzaWR1YWxzIikNCiMgTm9ybWFsaWRhZGUgZG9zIHJlc8OtZHVvcw0KcXFub3JtKHJlc2lkKG1vZF9DSDQpKQ0Kc2hhcGlyby50ZXN0KHJlc2lkKG1vZF9DSDQpKQ0KI1JBSVogUVVBRFJBREEgDQpkYWRvc19hY3VtdWxvJENINF9zcXJ0ID0gc3FydChkYWRvc19hY3VtdWxvJEVtaXNzYW9fQ0g0X3VnX2dfaCkNCm1vZF9DSDRfc3FydCA9IGxtKENINF9zcXJ0IH4gQWJyZXZpYWNhbyAqIERpYSxkYXRhID0gZGFkb3NfYWN1bXVsbykNCnFxbm9ybShyZXNpZChtb2RfQ0g0X3NxcnQpKQ0Kc2hhcGlyby50ZXN0KHJlc2lkKG1vZF9DSDRfc3FydCkpDQojTE9HDQpkYWRvc19hY3VtdWxvJENINF9sb2cgPSBsb2coZGFkb3NfYWN1bXVsbyRFbWlzc2FvX0NINF91Z19nX2gpDQptb2RfQ0g0X2xvZyA9IGxtKENINF9sb2cgfiBBYnJldmlhY2FvICogRGlhLGRhdGEgPSBkYWRvc19hY3VtdWxvKQ0KcXFub3JtKHJlc2lkKG1vZF9DSDRfbG9nKSkNCnNoYXBpcm8udGVzdChyZXNpZChtb2RfQ0g0X2xvZykpDQojUmVzdWx0YWRvOiBMT0cgZnVuY2lvbm91DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBOMk8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIEdyw6FmaWNvIGRlIHJlc8OtZHVvcw0KcGxvdChmaXR0ZWQobW9kX04yTyksIHJlc2lkKG1vZF9OMk8pLHhsYWIgPSAiRml0dGVkIHZhbHVlcyIseWxhYiA9ICJSZXNpZHVhbHMiKQ0KIyBOb3JtYWxpZGFkZSBkb3MgcmVzw61kdW9zDQpxcW5vcm0ocmVzaWQobW9kX04yTykpDQpzaGFwaXJvLnRlc3QocmVzaWQobW9kX04yTykpDQojUkFJWiBRVUFEUkFEQSANCmRhZG9zX2FjdW11bG8kTjJPX3NxcnQgPSBzcXJ0KGRhZG9zX2FjdW11bG8kRW1pc3Nhb19OMk9fdWdfZ19oKQ0KbW9kX04yT19zcXJ0ID0gbG0oTjJPX3NxcnQgfiBBYnJldmlhY2FvICogRGlhLGRhdGEgPSBkYWRvc19hY3VtdWxvKQ0KcXFub3JtKHJlc2lkKG1vZF9OMk9fc3FydCkpDQpzaGFwaXJvLnRlc3QocmVzaWQobW9kX04yT19zcXJ0KSkNCiNMT0cNCmRhZG9zX2FjdW11bG8kTjJPX2xvZyA9IGxvZyhkYWRvc19hY3VtdWxvJEVtaXNzYW9fTjJPX3VnX2dfaCkNCm1vZF9OMk9fbG9nID0gbG0oTjJPX2xvZyB+IEFicmV2aWFjYW8gKiBEaWEsZGF0YSA9IGRhZG9zX2FjdW11bG8pDQpxcW5vcm0ocmVzaWQobW9kX04yT19sb2cpKQ0Kc2hhcGlyby50ZXN0KHJlc2lkKG1vZF9OMk9fbG9nKSkNCiNSZXN1bHRhZG86IExPRyBmdW5jaW9ub3UNCg0KVmlldyhkYWRvc19hY3VtdWxvKQ0KYGBgDQoqKioNCioqKg0KIyMjIF8qKjYuMS4zIC0gQU5PVkEsIFRVS0VZIEUgTcOJRElBUyoqXw0KKioqDQoqKioNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZW1tZWFucykNCmxpYnJhcnkobXVsdGNvbXApDQoNCm1hcGFfdmFycyA9IGRhdGEuZnJhbWUob3JpZ2luYWwgPSBjKCJFbWlzc2FvX0NPMl91Z19nX2giLCJFbWlzc2FvX04yT191Z19nX2giLCJFbWlzc2FvX0NINF91Z19nX2giKSwNCiAgbW9kZWxvID0gYygiQ08yX2xvZyIsIk4yT19sb2ciLCJDSDRfbG9nIikpDQoNCnJlc3VsdGFkb3MgPSBsaXN0KCkNCmZvcihpIGluIDE6bnJvdyhtYXBhX3ZhcnMpKXsNCiAgdmFyX29yaWcgPSBtYXBhX3ZhcnMkb3JpZ2luYWxbaV0NCiAgdmFyX21vZCA9IG1hcGFfdmFycyRtb2RlbG9baV0NCiAgY2F0KCJcblxuIyMjIyMjIyMjIyMjIyMjIyBWYXJpw6F2ZWw6IiwgdmFyX29yaWcsICIjIyMjIyMjIyMjIyMjIyMjXG4iKQ0KICAjIE1vZGVsbw0KICBmb3JtdWxhX21vZCA9IGFzLmZvcm11bGEocGFzdGUwKHZhcl9tb2QsICIgfiBBYnJldmlhY2FvICogRGlhIikpDQogIG1vZCA9IGxtKGZvcm11bGFfbW9kLCBkYXRhID0gZGFkb3NfYWN1bXVsbykNCiAgIyBBTk9WQQ0KICBjYXQoIlxuQU5PVkE6XG4iKQ0KICBwcmludChhbm92YShtb2QpKQ0KICAjIE3DqWRpYXMgZXN0aW1hZGFzDQogIGVtID0gZW1tZWFucyhtb2QsIH4gQWJyZXZpYWNhbyB8IERpYSkNCiAgIyBUdWtleQ0KICBjYXQoIlxuVGVzdGUgZGUgVHVrZXk6XG4iKQ0KICBwcmludChwYWlycyhlbSwgYWRqdXN0ID0gInR1a2V5IikpDQogICMgTGV0cmFzDQogIGdydXBvcyA9IG11bHRjb21wOjpjbGQoZW0sYWxwaGEgPSAwLjA1LExldHRlcnMgPSBsZXR0ZXJzLHNvcnQgPSBUUlVFLGRlY3JlYXNpbmcgPSBGQUxTRSkNCiAgbGV0cmFzID0gZGF0YS5mcmFtZShEaWEgPSBncnVwb3MkRGlhLEFicmV2aWFjYW8gPSBncnVwb3MkQWJyZXZpYWNhbyxsZXRyYSA9IHRyaW13cyhncnVwb3MkLmdyb3VwKSkNCiAgIyBNw6lkaWEgZSBTRSBkb3MgZGFkb3Mgb3JpZ2luYWlzDQogIG1lZGlhcyA9IGRhZG9zX2FjdW11bG8gJT4lDQogICAgZ3JvdXBfYnkoRGlhLCBBYnJldmlhY2FvKSAlPiUNCiAgICBzdW1tYXJpc2UobWVkaWEgPSBtZWFuKC5kYXRhW1t2YXJfb3JpZ11dLCBuYS5ybSA9IFRSVUUpLA0KICAgICAgc2UgPSBzZCguZGF0YVtbdmFyX29yaWddXSwgbmEucm0gPSBUUlVFKS9zcXJ0KHN1bSghaXMubmEoLmRhdGFbW3Zhcl9vcmlnXV0pKSksLmdyb3VwcyA9ICJkcm9wIikNCiAgIyBUYWJlbGENCiAgdGFiZWxhID0gbWVkaWFzICU+JQ0KICAgIGxlZnRfam9pbihsZXRyYXMsIGJ5ID0gYygiRGlhIiwgIkFicmV2aWFjYW8iKSkgJT4lDQogICAgZHBseXI6Om11dGF0ZSh2YXJpYXZlbCA9IHZhcl9vcmlnKSAlPiUNCiAgICBkcGx5cjo6c2VsZWN0KHZhcmlhdmVsLERpYSxUcmF0YW1lbnRvID0gQWJyZXZpYWNhbyxtZWRpYSxzZSxsZXRyYSkNCiAgcmVzdWx0YWRvc1tbdmFyX29yaWddXSA9IHRhYmVsYX0NCg0KIyBUYWJlbGEgZmluYWwNCnJlc3VsdGFkb19maW5hbCA9IGRvLmNhbGwocmJpbmQsIHJlc3VsdGFkb3MpDQpyb3duYW1lcyhyZXN1bHRhZG9fZmluYWwpID0gTlVMTA0KVmlldyhyZXN1bHRhZG9fZmluYWwpDQpgYGANCioqKg0KKioqDQojIyMgXyoqNi4xLjQgLSBHUsOBRklDT1MgVEVNUE9SQUlTKipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgR1LDgUZJQ08gQ08yICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShlbW1lYW5zKQ0KDQojIERpYXMgZW0gcXVlIGhvdXZlIGRpZmVyZW7Dp2EgZW50cmUgdHJhdGFtZW50b3MgcGVsbyBUdWtleQ0KZGlhc19zaWdfQ08yID0gcGFpcnMoZW1tZWFucyhtb2RfQ08yX2xvZywgfiBBYnJldmlhY2FvIHwgRGlhKSxhZGp1c3QgPSAidHVrZXkiKSAlPiUNCiAgYXMuZGF0YS5mcmFtZSgpJT4lDQogIGdyb3VwX2J5KERpYSkgJT4lDQogIHN1bW1hcmlzZShzaWduaWZpY2F0aXZvID0gYW55KHAudmFsdWUgPCAwLjA1KSwuZ3JvdXBzID0gImRyb3AiKQ0KIyBQcmVwYXJhciBkYWRvcw0KZGFkb3NfQ08yID0gcmVzdWx0YWRvX2ZpbmFsICU+JQ0KICBmaWx0ZXIodmFyaWF2ZWwgPT0gIkVtaXNzYW9fQ08yX3VnX2dfaCIpICU+JQ0KICBsZWZ0X2pvaW4oZGlhc19zaWdfQ08yLCBieSA9ICJEaWEiKSAlPiUNCiAgbXV0YXRlKERpYSA9IGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKERpYSkpLA0KICAgIFRyYXRhbWVudG8gPSBmYWN0b3IoVHJhdGFtZW50byxsZXZlbHMgPSBjKCJDT04iLCAiQU8zIiwgIkZPRyIsICJGT0dPMyIsICJOTUlOIikpLA0KICAgICMgRGVzbG9jYW1lbnRvIGhvcml6b250YWwgZGUgY2FkYSB0cmF0YW1lbnRvDQogICAgZGVzbG9jYW1lbnRvID0gY2FzZV93aGVuKA0KICAgICAgVHJhdGFtZW50byA9PSAiQ09OIiAgIH4gLTAuNTAsDQogICAgICBUcmF0YW1lbnRvID09ICJBTzMiICAgfiAtMC4yNSwNCiAgICAgIFRyYXRhbWVudG8gPT0gIkZPRyIgICB+ICAwLjAwLA0KICAgICAgVHJhdGFtZW50byA9PSAiRk9HTzMiIH4gIDAuMjUsDQogICAgICBUcmF0YW1lbnRvID09ICJOTUlOIiAgfiAgMC41MCksDQogICAgeF9wbG90ID0gRGlhICsgZGVzbG9jYW1lbnRvLA0KICAgICMgTGV0cmFzIHNvbWVudGUgcXVhbmRvIG8gVHVrZXkgZGV0ZWN0b3UgZGlmZXJlbsOnYSBubyBkaWENCiAgICBsZXRyYV9wbG90ID0gaWZlbHNlKHNpZ25pZmljYXRpdm8sIGxldHJhLCAiIiksDQogICAgIyBNYWlvciBhZmFzdGFtZW50byB2ZXJ0aWNhbCBkYXMgbGV0cmFzDQogICAgeV9sZXRyYSA9IG1lZGlhICsgc2UgKyA1KQ0KDQphbm92YShtb2RfQ08yX2xvZykNCg0KIyBQTE9UDQpDTzI9Z2dwbG90KGRhZG9zX0NPMixhZXMoeCA9IHhfcGxvdCx5ID0gbWVkaWEsY29sb3IgPSBUcmF0YW1lbnRvLGdyb3VwID0gVHJhdGFtZW50bykpICsNCiAgZ2VvbV9saW5lKGxpbmV3aWR0aCA9IDAuOCkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbWVkaWEgLSBzZSx5bWF4ID0gbWVkaWEgKyBzZSksd2lkdGggPSAwLjEyLGxpbmV3aWR0aCA9IDAuNikgKw0KICBnZW9tX3BvaW50KHNpemUgPSAyLjcpICsNCiAgZ2VvbV90ZXh0KGFlcyh5ID0geV9sZXRyYSxsYWJlbCA9IGxldHJhX3Bsb3QpLHNpemUgPSA0LGZvbnRmYWNlID0gImJvbGQiLHNob3cubGVnZW5kID0gRkFMU0UpICsNCiAgYW5ub3RhdGUoImxhYmVsIix4ID0gMjYuNSx5ID0gMjUwLGxhYmVsID0gIlRyZWF0bWVudDogUCA8IDAuMDFcbkRheTogUCA8IDAuMDFcblRyZWF0bWVudCDDlyBEYXk6IFAgPSAwLjAzIiwNCiAgICBoanVzdCA9IDAsdmp1c3QgPSAwLjgsc2l6ZSA9IDMuNSxsYWJlbC5zaXplID0gMC41LGxhYmVsLnBhZGRpbmc9dW5pdCgwLjI1LCJsaW5lcyIpLGZpbGw9ICJ3aGl0ZSIsY29sb3I9ImJsYWNrIikgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiQ09OIj0icmVkNCIsIkFPMyI9IiMyNDc0QTYiLCJGT0ciPSIjRDg5QjAwIiwiRk9HTzMiPSIjOEM2NTE1IiwiTk1JTiI9ImJsYWNrIiksDQogICAgYnJlYWtzID0gYygiQ09OIiwgIkFPMyIsICJGT0ciLCAiRk9HTzMiLCAiTk1JTiIpKSArDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQpLGxhYmVscyA9IGMoMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMjYwKSxicmVha3MgPSBzZXEoMCwgMjUwLCBieSA9IDUwKSxleHBhbmQgPSBleHBhbnNpb24obXVsdCA9IGMoMCwgMC4wMykpKSsNCiAgbGFicyh4ID0gIkRheXMgYWZ0ZXIgdHJlYXRtZW50IGFwcGxpY2F0aW9uIix5ID0gZXhwcmVzc2lvbihDT1syXX5lbWlzc2lvbn4obXUqZ35nXnstMX1+aF57LTF9KSksY29sb3IgPSAiVHJlYXRtZW50OiIpKw0KICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDEyKSArDQogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gYygwLjM0LCAwLjkwKSwNCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwNCiAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIndoaXRlIiwgY29sb3IgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjUpLA0KICAgIGxlZ2VuZC5ib3guYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIndoaXRlIiwgY29sb3IgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjUpLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA3KSwNCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSA4LCBmYWNlID0gImJvbGQiKSkNCkNPMg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgR1LDgUZJQ08gQ0g0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIERpYXMgZW0gcXVlIGhvdXZlIGRpZmVyZW7Dp2EgZW50cmUgdHJhdGFtZW50b3MgcGVsbyBUdWtleQ0KZGlhc19zaWdfQ0g0ID0gcGFpcnMoZW1tZWFucyhtb2RfQ0g0X2xvZywgfiBBYnJldmlhY2FvIHwgRGlhKSxhZGp1c3QgPSAidHVrZXkiKSAlPiUNCiAgYXMuZGF0YS5mcmFtZSgpJT4lDQogIGdyb3VwX2J5KERpYSkgJT4lDQogIHN1bW1hcmlzZShzaWduaWZpY2F0aXZvID0gYW55KHAudmFsdWUgPCAwLjA1KSwuZ3JvdXBzID0gImRyb3AiKQ0KIyBQcmVwYXJhciBkYWRvcw0KZGFkb3NfQ0g0ID0gcmVzdWx0YWRvX2ZpbmFsICU+JQ0KICBmaWx0ZXIodmFyaWF2ZWwgPT0gIkVtaXNzYW9fQ0g0X3VnX2dfaCIpICU+JQ0KICBsZWZ0X2pvaW4oZGlhc19zaWdfQ0g0LCBieSA9ICJEaWEiKSAlPiUNCiAgbXV0YXRlKERpYSA9IGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKERpYSkpLA0KICAgIFRyYXRhbWVudG8gPSBmYWN0b3IoVHJhdGFtZW50byxsZXZlbHMgPSBjKCJDT04iLCAiQU8zIiwgIkZPRyIsICJGT0dPMyIsICJOTUlOIikpLA0KICAgICMgRGVzbG9jYW1lbnRvIGhvcml6b250YWwgZGUgY2FkYSB0cmF0YW1lbnRvDQogICAgZGVzbG9jYW1lbnRvID0gY2FzZV93aGVuKA0KICAgICAgVHJhdGFtZW50byA9PSAiQ09OIiAgIH4gLTAuNTAsDQogICAgICBUcmF0YW1lbnRvID09ICJBTzMiICAgfiAtMC4yNSwNCiAgICAgIFRyYXRhbWVudG8gPT0gIkZPRyIgICB+ICAwLjAwLA0KICAgICAgVHJhdGFtZW50byA9PSAiRk9HTzMiIH4gIDAuMjUsDQogICAgICBUcmF0YW1lbnRvID09ICJOTUlOIiAgfiAgMC41MCksDQogICAgeF9wbG90ID0gRGlhICsgZGVzbG9jYW1lbnRvLA0KICAgICMgTGV0cmFzIHNvbWVudGUgcXVhbmRvIG8gVHVrZXkgZGV0ZWN0b3UgZGlmZXJlbsOnYSBubyBkaWENCiAgICBsZXRyYV9wbG90ID0gaWZlbHNlKHNpZ25pZmljYXRpdm8sIGxldHJhLCAiIiksDQogICAgIyBNYWlvciBhZmFzdGFtZW50byB2ZXJ0aWNhbCBkYXMgbGV0cmFzDQogICAgeV9sZXRyYSA9IG1lZGlhICsgc2UgKyAwLjAwMDUpDQoNCmFub3ZhKG1vZF9DSDRfbG9nKQ0KDQojIFBMT1QNCkNIND1nZ3Bsb3QoZGFkb3NfQ0g0LGFlcyh4ID0geF9wbG90LHkgPSBtZWRpYSxjb2xvciA9IFRyYXRhbWVudG8sZ3JvdXAgPSBUcmF0YW1lbnRvKSkgKw0KICBnZW9tX2xpbmUobGluZXdpZHRoID0gMC44KSArDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBtZWRpYSAtIHNlLHltYXggPSBtZWRpYSArIHNlKSx3aWR0aCA9IDAuMTIsbGluZXdpZHRoID0gMC42KSArDQogIGdlb21fcG9pbnQoc2l6ZSA9IDIuNykgKw0KICBnZW9tX3RleHQoYWVzKHkgPSB5X2xldHJhLGxhYmVsID0gbGV0cmFfcGxvdCksc2l6ZSA9IDQsZm9udGZhY2UgPSAiYm9sZCIsc2hvdy5sZWdlbmQgPSBGQUxTRSkgKw0KICBhbm5vdGF0ZSgibGFiZWwiLHggPSAyNix5ID0gMC4wMDksbGFiZWwgPSAiVHJlYXRtZW50OiBQID0gMC4zNThcbkRheTogUCA8IDAuMDM2XG5UcmVhdG1lbnQgw5cgRGF5OiBQID0gMC45ODAiLA0KICAgIGhqdXN0ID0gMCx2anVzdCA9IDEsc2l6ZSA9IDMuNSxsYWJlbC5zaXplID0gMC41LGxhYmVsLnBhZGRpbmc9dW5pdCgwLjI1LCJsaW5lcyIpLGZpbGw9ICJ3aGl0ZSIsY29sb3I9ImJsYWNrIikgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiQ09OIj0icmVkNCIsIkFPMyI9IiMyNDc0QTYiLCJGT0ciPSIjRDg5QjAwIiwiRk9HTzMiPSIjOEM2NTE1IiwiTk1JTiI9ImJsYWNrIiksDQogICAgYnJlYWtzID0gYygiQ09OIiwgIkFPMyIsICJGT0ciLCAiRk9HTzMiLCAiTk1JTiIpKSArDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQpLGxhYmVscyA9IGMoMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoLTAuMDAxLCAwLjAwOSksYnJlYWtzID0gc2VxKC0wLjAwMSwgMC4wMDksIGJ5ID0gMC4wMDEpLGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLCAwLjAzKSkpKw0KICBsYWJzKHggPSAiRGF5cyBhZnRlciB0cmVhdG1lbnQgYXBwbGljYXRpb24iLHkgPSBleHByZXNzaW9uKENIIFs0XX5lbWlzc2lvbn4obXUqZ35nXnstMX1+aF57LTF9KSksY29sb3IgPSAiVHJlYXRtZW50OiIpKw0KICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDEyKSArDQogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwgc2l6ZSA9IDEyKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzQsIDAuOTApLA0KICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiLA0KICAgIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAid2hpdGUiLCBjb2xvciA9ICJibGFjayIsIGxpbmV3aWR0aCA9IDAuNSksDQogICAgbGVnZW5kLmJveC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAid2hpdGUiLCBjb2xvciA9ICJibGFjayIsIGxpbmV3aWR0aCA9IDAuNSksDQogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDcpLA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgsIGZhY2UgPSAiYm9sZCIpKQ0KQ0g0DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHUsOBRklDTyBOMk8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMgRGlhcyBlbSBxdWUgaG91dmUgZGlmZXJlbsOnYSBlbnRyZSB0cmF0YW1lbnRvcyBwZWxvIFR1a2V5DQpkaWFzX3NpZ19OMk8gPSBwYWlycyhlbW1lYW5zKG1vZF9OMk9fbG9nLCB+IEFicmV2aWFjYW8gfCBEaWEpLGFkanVzdCA9ICJ0dWtleSIpICU+JQ0KICBhcy5kYXRhLmZyYW1lKCklPiUNCiAgZ3JvdXBfYnkoRGlhKSAlPiUNCiAgc3VtbWFyaXNlKHNpZ25pZmljYXRpdm8gPSBhbnkocC52YWx1ZSA8IDAuMDUpLC5ncm91cHMgPSAiZHJvcCIpDQojIFByZXBhcmFyIGRhZG9zDQpkYWRvc19OMk8gPSByZXN1bHRhZG9fZmluYWwgJT4lDQogIGZpbHRlcih2YXJpYXZlbCA9PSAiRW1pc3Nhb19OMk9fdWdfZ19oIikgJT4lDQogIGxlZnRfam9pbihkaWFzX3NpZ19OMk8sIGJ5ID0gIkRpYSIpICU+JQ0KICBtdXRhdGUoRGlhID0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoRGlhKSksDQogICAgVHJhdGFtZW50byA9IGZhY3RvcihUcmF0YW1lbnRvLGxldmVscyA9IGMoIkNPTiIsICJBTzMiLCAiRk9HIiwgIkZPR08zIiwgIk5NSU4iKSksDQogICAgIyBEZXNsb2NhbWVudG8gaG9yaXpvbnRhbCBkZSBjYWRhIHRyYXRhbWVudG8NCiAgICBkZXNsb2NhbWVudG8gPSBjYXNlX3doZW4oDQogICAgICBUcmF0YW1lbnRvID09ICJDT04iICAgfiAtMC41MCwNCiAgICAgIFRyYXRhbWVudG8gPT0gIkFPMyIgICB+IC0wLjI1LA0KICAgICAgVHJhdGFtZW50byA9PSAiRk9HIiAgIH4gIDAuMDAsDQogICAgICBUcmF0YW1lbnRvID09ICJGT0dPMyIgfiAgMC4yNSwNCiAgICAgIFRyYXRhbWVudG8gPT0gIk5NSU4iICB+ICAwLjUwKSwNCiAgICB4X3Bsb3QgPSBEaWEgKyBkZXNsb2NhbWVudG8sDQogICAgIyBMZXRyYXMgc29tZW50ZSBxdWFuZG8gbyBUdWtleSBkZXRlY3RvdSBkaWZlcmVuw6dhIG5vIGRpYQ0KICAgIGxldHJhX3Bsb3QgPSBpZmVsc2Uoc2lnbmlmaWNhdGl2bywgbGV0cmEsICIiKSwNCiAgICAjIE1haW9yIGFmYXN0YW1lbnRvIHZlcnRpY2FsIGRhcyBsZXRyYXMNCiAgICB5X2xldHJhID0gbWVkaWEgKyBzZSArIDAuMDA3KQ0KDQphbm92YShtb2RfTjJPX2xvZykNCg0KIyBQTE9UDQpOMk89Z2dwbG90KGRhZG9zX04yTyxhZXMoeCA9IHhfcGxvdCx5ID0gbWVkaWEsY29sb3IgPSBUcmF0YW1lbnRvLGdyb3VwID0gVHJhdGFtZW50bykpICsNCiAgZ2VvbV9saW5lKGxpbmV3aWR0aCA9IDAuOCkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbWVkaWEgLSBzZSx5bWF4ID0gbWVkaWEgKyBzZSksd2lkdGggPSAwLjEyLGxpbmV3aWR0aCA9IDAuNikgKw0KICBnZW9tX3BvaW50KHNpemUgPSAyLjcpICsNCiAgZ2VvbV90ZXh0KGFlcyh5ID0geV9sZXRyYSxsYWJlbCA9IGxldHJhX3Bsb3QpLHNpemUgPSA0LGZvbnRmYWNlID0gImJvbGQiLHNob3cubGVnZW5kID0gRkFMU0UpICsNCiAgYW5ub3RhdGUoImxhYmVsIix4ID0gMjYuNSx5ID0gMC4xOCxsYWJlbCA9ICJUcmVhdG1lbnQ6IFAgPCAwLjAxXG5EYXk6IFAgPCAwLjAxXG5UcmVhdG1lbnQgw5cgRGF5OiBQIDwgMC4wMSIsDQogICAgaGp1c3QgPSAwLHZqdXN0ID0gMSxzaXplID0gMy41LGxhYmVsLnNpemUgPSAwLjUsbGFiZWwucGFkZGluZz11bml0KDAuMjUsImxpbmVzIiksZmlsbD0gIndoaXRlIixjb2xvcj0iYmxhY2siKSArDQogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJDT04iPSJyZWQ0IiwiQU8zIj0iIzI0NzRBNiIsIkZPRyI9IiNEODlCMDAiLCJGT0dPMyI9IiM4QzY1MTUiLCJOTUlOIj0iYmxhY2siKSwNCiAgICBicmVha3MgPSBjKCJDT04iLCAiQU8zIiwgIkZPRyIsICJGT0dPMyIsICJOTUlOIikpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCksbGFiZWxzID0gYygxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0KSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygtMC4wMDYsIDAuMTgpLGJyZWFrcz1zZXEoLTAuMDA2LCAwLjE4LCBieSA9IDAuMDMpLGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLCAwLjAzKSkpKw0KICBsYWJzKHggPSAiRGF5cyBhZnRlciB0cmVhdG1lbnQgYXBwbGljYXRpb24iLHkgPSBleHByZXNzaW9uKE5bMl0qT35lbWlzc2lvbn4obXUqZ35nXnstMX1+aF57LTF9KSksY29sb3IgPSAiVHJlYXRtZW50OiIpKw0KICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDEyKSArDQogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiksDQogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zNCwgMC45MCksDQogICAgICAgIGxlZ2VuZC5kaXJlY3Rpb24gPSAiaG9yaXpvbnRhbCIsDQogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImJsYWNrIiwgbGluZXdpZHRoID0gMC41KSwNCiAgICBsZWdlbmQuYm94LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImJsYWNrIiwgbGluZXdpZHRoID0gMC41KSwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNyksDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gOCwgZmFjZSA9ICJib2xkIikpDQpOMk8NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEpVTlRBUiBHUsOBRklDT1MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsaWJyYXJ5KHBhdGNod29yaykNCkZpZ3VyYV9nYXNlcyA9IChDSDQgLyBDTzIgLyBOMk8pICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHMgPSAiQSIpDQpGaWd1cmFfZ2FzZXMNCmdnc2F2ZSgiRmlndXJhIDEgLSBnYXNlcyBubyB0ZW1wby5wbmciLEZpZ3VyYV9nYXNlcywgd2lkdGggPSA4LCBoZWlnaHQgPSA5LCBkcGkgPSAzMDAsIGJnID0gIndoaXRlIikNCmBgYA0KDQoqKioNCioqKg0KIyMgXyoqNi4yIC0gRW1pc3PDtWVzIGFjdW11bGFkYXMqKl8NCioqKg0KKioqDQojIyMgXyoqNi4yLjEgLSBBTk9WQSwgVFVLRVkgRSBNw4lESUFTKipfDQoqKioNCioqKg0KYGBge3J9DQojIElkZW50aWZpY2FyIG9zIHZhbG9yZXMgb3V0bGllcnMNCmJveHBsb3QoZW1pc3NvZXNfYWN1bXVsYWRhcyRDTzJfYWN1bXVsYWRvX3VnX2cpDQpvdXRfQ08yID0gYm94cGxvdC5zdGF0cyhlbWlzc29lc19hY3VtdWxhZGFzJENPMl9hY3VtdWxhZG9fdWdfZykkb3V0DQojIE1vc3RyYXIgYXMgbGluaGFzIGNvcnJlc3BvbmRlbnRlcw0KZW1pc3NvZXNfYWN1bXVsYWRhcyAlPiUNCiAgZmlsdGVyKENPMl9hY3VtdWxhZG9fdWdfZyAlaW4lIG91dF9DTzIpICU+JQ0KICBkcGx5cjo6c2VsZWN0KEJvdHRsZSwgQWJyZXZpYWNhbywgQmxvY28sIFJlcCwgQ08yX2FjdW11bGFkb191Z19nKQ0KZW1pc3NvZXNfYWN1bXVsYWRhc19maWx0cmFkYSA9IGVtaXNzb2VzX2FjdW11bGFkYXMgJT4lDQogIGZpbHRlcighQm90dGxlICVpbiUgYygxLCAyLDcsIDIzKSkNCg0KIyBPcmRlbSBkb3MgdHJhdGFtZW50b3MNCmVtaXNzb2VzX2FjdW11bGFkYXNfZmlsdHJhZGEkQWJyZXZpYWNhbyA9IGZhY3RvcihlbWlzc29lc19hY3VtdWxhZGFzX2ZpbHRyYWRhJEFicmV2aWFjYW8sDQogIGxldmVscyA9IGMoIkNPTiIsICJBTzMiLCAiRk9HIiwgIkZPR08zIiwgIk5NSU4iKSkNCiMgVmFyacOhdmVpcw0KdmFyaWF2ZWlzID0gYygiQ0g0X2FjdW11bGFkb191Z19nIiwiQ08yX2FjdW11bGFkb191Z19nIiwiTjJPX2FjdW11bGFkb191Z19nIikNCg0KcmVzdWx0YWRvcyA9IGxpc3QoKQ0KZm9yKHZhciBpbiB2YXJpYXZlaXMpew0KICBjYXQoIlxuXG4jIyMjIyMjIyMjIyMjIyMjIFZhcmnDoXZlbDoiLCB2YXIsICIjIyMjIyMjIyMjIyMjIyMjXG4iKQ0KICAjIE1vZGVsbw0KICBmb3JtdWxhX21vZCA9IHJlZm9ybXVsYXRlKCJBYnJldmlhY2FvIiwgcmVzcG9uc2UgPSB2YXIpDQogIG1vZCA9IGFvdihmb3JtdWxhX21vZCwgZGF0YSA9IGVtaXNzb2VzX2FjdW11bGFkYXNfZmlsdHJhZGEpDQogICMgQU5PVkENCiAgY2F0KCJcbkFOT1ZBOlxuIikNCiAgcHJpbnQoc3VtbWFyeShtb2QpKQ0KICAjIE3DqWRpYXMNCiAgZW0gPSBlbW1lYW5zKG1vZCwgfiBBYnJldmlhY2FvKQ0KICAjIFR1a2V5DQogIGNhdCgiXG5UZXN0ZSBkZSBUdWtleTpcbiIpDQogIHR1a2V5ID0gcGFpcnMoZW0sIGFkanVzdCA9ICJ0dWtleSIpDQogIHByaW50KHR1a2V5KQ0KICAjIExldHJhcw0KICBncnVwb3MgPSBtdWx0Y29tcDo6Y2xkKGVtLGFscGhhID0gMC4wNSxMZXR0ZXJzID0gbGV0dGVycyxzb3J0ID0gRkFMU0UpDQogICMgU2UgbmVuaHVtIGNvbnRyYXN0ZSBmb3Igc2lnbmlmaWNhdGl2bywgcmV0aXJhciBsZXRyYXMNCiAgaWYoIWFueShhcy5kYXRhLmZyYW1lKHR1a2V5KSRwLnZhbHVlIDwgMC4wNSkpew0KICAgIGdydXBvcyQuZ3JvdXAgPSAiIn0NCg0KICAjIFRhYmVsYQ0KICB0YWJlbGEgPSBkYXRhLmZyYW1lKHZhcmlhdmVsID0gdmFyLFRyYXRhbWVudG8gPSBncnVwb3MkQWJyZXZpYWNhbywNCiAgICBtZWRpYSA9IGdydXBvcyRlbW1lYW4sc2UgPSBncnVwb3MkU0UsbGV0cmEgPSB0cmltd3MoZ3J1cG9zJC5ncm91cCkscm93Lm5hbWVzID0gTlVMTCkNCiAgY2F0KCJcbk3DqWRpYXMsIFNFIGUgbGV0cmFzOlxuIikNCiAgcHJpbnQodGFiZWxhKQ0KICByZXN1bHRhZG9zW1t2YXJdXSA9IHRhYmVsYX0NCg0KIyBUYWJlbGEgZmluYWwNCnJlc3VsdGFkb19hY3VtdWxhZG8gPSBkby5jYWxsKHJiaW5kLCByZXN1bHRhZG9zKQ0Kcm93bmFtZXMocmVzdWx0YWRvX2FjdW11bGFkbykgPSBOVUxMDQpWaWV3KHJlc3VsdGFkb19hY3VtdWxhZG8pDQpgYGANCioqKg0KKioqDQojIyMgXyoqNi4yLjIgLSBHUsOBRklDT1MgREFTIEVNSVNTw5VFUyBBQ1VNVUxBREFTKipfDQoqKioNCioqKg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgR1LDgUZJQ08gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyb3R1bG9zX2ZhY2V0ID0gYXNfbGFiZWxsZXIoYygiQ0g0X2FjdW11bGFkb191Z19nIiA9ICInKEEpJ35DSFs0XSIsIkNPMl9hY3VtdWxhZG9fdWdfZyIgPSAiJyhCKSd+Q09bMl0iLA0KICAgICJOMk9fYWN1bXVsYWRvX3VnX2ciID0gIicoQyknfk5bMl0qTyIpLGRlZmF1bHQgPSBsYWJlbF9wYXJzZWQpDQoNCnBfYW5vdmFfcGxvdCA9IGRhdGEuZnJhbWUodmFyaWF2ZWwgPSBjKCJDSDRfYWN1bXVsYWRvX3VnX2ciLCJDTzJfYWN1bXVsYWRvX3VnX2ciLCJOMk9fYWN1bXVsYWRvX3VnX2ciKSwNCiAgVHJhdGFtZW50byA9IGMoIk5NSU4iLCAiTk1JTiIsICJOTUlOIiksbGFiZWwgPSBjKCJpdGFsaWMoUCkgPT0gMC43NTUiLCJpdGFsaWMoUCkgPCAwLjAxIiwiaXRhbGljKFApID09IDAuMDE1IikpDQoNCnBfYWN1bXVsYWRvID0gZ2dwbG90KHJlc3VsdGFkb19hY3VtdWxhZG8sYWVzKHggPSBUcmF0YW1lbnRvLCB5ID0gbWVkaWEsIGZpbGwgPSBUcmF0YW1lbnRvKSkgKw0KICBnZW9tX2NvbCh3aWR0aCA9IDAuNzAsY29sb3IgPSAiYmxhY2siLGxpbmV3aWR0aCA9IDAuNSkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbWVkaWEgLSBzZSx5bWF4ID0gbWVkaWEgKyBzZSksd2lkdGggPSAwLjE1LGxpbmV3aWR0aCA9IDAuNikgKw0KICBnZW9tX3RleHQoYWVzKHkgPSBtZWRpYSArIHNlLGxhYmVsID0gbGV0cmEpLHZqdXN0ID0gLTAuNixzaXplID0gNCxmb250ZmFjZSA9ICJib2xkIikgKw0KICBnZW9tX3RleHQoZGF0YSA9IHBfYW5vdmFfcGxvdCxhZXMoeCA9IFRyYXRhbWVudG8seSA9IEluZixsYWJlbCA9IGxhYmVsKSwNCiAgICBpbmhlcml0LmFlcyA9IEZBTFNFLHBhcnNlID0gVFJVRSxoanVzdCA9IDEsdmp1c3QgPSAyLHNpemUgPSA0KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoDQogICAgIkNPTiIgPSAicmVkNCIsIkFPMyIgPSAiIzI0NzRBNiIsIkZPRyIgPSAiI0Q4OUIwMCIsIkZPR08zIiA9ICIjOEM2NTE1IiwiTk1JTiIgPSAiYmxhY2siKSkgKw0KICBmYWNldF93cmFwKH4gdmFyaWF2ZWwsc2NhbGVzID0gImZyZWVfeSIsbGFiZWxsZXIgPSByb3R1bG9zX2ZhY2V0KSArDQogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBleHBhbnNpb24obXVsdCA9IGMoMC4wNSwgMC4xOCkpKSArDQogIGxhYnMoeCA9IE5VTEwseSA9IGV4cHJlc3Npb24oIkN1bXVsYXRpdmUgZW1pc3Npb24gIn4obXUqZ35nXnstMX0pKSkgKw0KICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDEyKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSxoanVzdCA9IDEsY29sb3IgPSAiYmxhY2siKSwNCiAgICAgICAgc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLHNpemUgPSAxMikpDQpwX2FjdW11bGFkbw0KZ2dzYXZlKCJGaWd1cmEgMiAtIGdhc2VzIGFjdW11bGFkb3MucG5nIixwX2FjdW11bGFkbywgd2lkdGggPSA4LCBoZWlnaHQgPSA1LCBkcGkgPSAzMDAsIGJnID0gIndoaXRlIikNCmBgYA0KDQoqKioNCioqKg0KIyMjIF8qKjYuMi4zIC0gQ09OVFJBU1RFIEZFWkVTIHZzIE5NSU4qKl8NCioqKg0KKioqDQpgYGB7cn0NCnZhcmlhdmVpcyA9IGMoIkNINF9hY3VtdWxhZG9fdWdfZyIsIkNPMl9hY3VtdWxhZG9fdWdfZyIsIk4yT19hY3VtdWxhZG9fdWdfZyIpDQoNCnJlc3VsdGFkb3NfY29udHJhc3RlID0gbGlzdCgpDQpmb3IodmFyIGluIHZhcmlhdmVpcyl7DQogIGNhdCgiXG5cbiMjIyMjIyMjIyMjIyMjIyMgVmFyacOhdmVsOiIsIHZhciwgIiMjIyMjIyMjIyMjIyMjIyNcbiIpDQogICMgTW9kZWxvDQogIGZvcm11bGFfbW9kID0gYXMuZm9ybXVsYShwYXN0ZSh2YXIsICJ+IEFicmV2aWFjYW8iKSkNCiAgbW9kID0gYW92KGZvcm11bGFfbW9kLGRhdGEgPSBlbWlzc29lc19hY3VtdWxhZGFzX2ZpbHRyYWRhKQ0KICAjIE3DqWRpYXMNCiAgZW0gPSBlbW1lYW5zOjplbW1lYW5zKG1vZCx+IEFicmV2aWFjYW8pDQogICMgQ29udHJhc3RlOiBtw6lkaWEgRk9HICsgRk9HTzMgdmVyc3VzIE5NSU4NCiAgY29udCA9IGVtbWVhbnM6OmNvbnRyYXN0KGVtLG1ldGhvZCA9IGxpc3QoRmV6ZXNfdnNfTk1JTiA9IGMoMCwgMCwgMC41LCAwLjUsIC0xKSkpDQogIGNhdCgiXG5GT0cgKyBGT0dPMyB2cyBOTUlOOlxuIikNCiAgcHJpbnQoc3VtbWFyeShjb250LCBpbmZlciA9IFRSVUUpKQ0KDQogIHJlc3VsdGFkb3NfY29udHJhc3RlW1t2YXJdXSA9IGFzLmRhdGEuZnJhbWUoY29udCl9DQoNCnJlc3VsdGFkb19jb250cmFzdGUgPSBkby5jYWxsKHJiaW5kLHJlc3VsdGFkb3NfY29udHJhc3RlKQ0Kcm93bmFtZXMocmVzdWx0YWRvX2NvbnRyYXN0ZSkgPSBOVUxMDQpWaWV3KHJlc3VsdGFkb19jb250cmFzdGUpDQpgYGANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=