Nationalregnskab
Nationalregnskab
NRX01_raw <-
statgl_url("NRX01", lang = language) %>%
statgl_fetch(
units = "L",
time = px_top(5),
"account name" = px_all(),
.col_code = TRUE
) %>%
as_tibble()
NRX01 <-
NRX01_raw %>%
arrange(desc(time)) %>%
mutate(
time = time %>% fct_inorder(),
`account name` = `account name` %>% str_remove_all("[:digit:]|[:punct:]|\\+") %>% trimws(),
`account name` = `account name` %>% fct_inorder()
) %>%
drop_na() %>%
spread(time, value)
NRX01 %>%
select(-units) %>%
rename(" " = 1) %>%
statgl_table() %>%
pack_rows(index = NRX01[["units"]] %>% table()) %>%
row_spec(c(8, 19), bold = TRUE)
|
2021
|
2020
|
2019
|
2018
|
2017
|
Løbende priser
|
Produktion
|
33.976
|
32.953
|
32.633
|
31.515
|
30.949
|
Produktskatter minus produktsubsidier
|
754
|
761
|
769
|
771
|
638
|
Produktskatter
|
1.024
|
998
|
1.010
|
1.010
|
857
|
Produktsubsidier
|
270
|
238
|
240
|
238
|
220
|
Import af varer og tjenester
|
10.114
|
9.428
|
10.225
|
8.745
|
8.193
|
Import af varer
|
6.664
|
6.276
|
6.903
|
5.717
|
5.310
|
Import af tjenester
|
3.450
|
3.152
|
3.322
|
3.028
|
2.884
|
Tilgang i alt
|
44.844
|
43.143
|
43.627
|
41.032
|
39.780
|
Forbrug i produktionen
|
14.386
|
13.545
|
13.412
|
12.991
|
12.758
|
Forbrugsudgift
|
16.467
|
15.936
|
15.760
|
15.268
|
14.914
|
Privat forbrugsudgift
|
7.289
|
7.116
|
7.005
|
6.944
|
6.928
|
Offentlig forbrugsudgift
|
9.178
|
8.820
|
8.754
|
8.325
|
7.986
|
Individuel forbrugsudgift
|
5.278
|
5.098
|
5.158
|
4.986
|
4.762
|
Kollektiv forbrugsudgift
|
3.900
|
3.722
|
3.596
|
3.339
|
3.224
|
Bruttoinvesteringer
|
6.782
|
6.410
|
6.251
|
4.195
|
4.446
|
Eksport af varer og tjenester
|
7.209
|
7.251
|
8.205
|
8.578
|
7.662
|
Eksport af varer
|
5.417
|
5.697
|
6.008
|
6.433
|
5.574
|
Eksport af tjenester
|
1.792
|
1.554
|
2.197
|
2.145
|
2.088
|
Anvendelse i alt
|
44.844
|
43.143
|
43.627
|
41.032
|
39.780
|
Se Statistikbankens tabel: NRX01
NRX0318_raw <-
statgl_url("NRX0318", lang = language) %>%
statgl_fetch(
units = "L",
industry = paste0("0100", LETTERS[1:11]),
time = px_top(5),
.col_code = TRUE
) %>%
as_tibble()
NRX0318 <-
NRX0318_raw %>%
arrange(desc(time)) %>%
mutate(
time = time %>% fct_inorder(),
industry = industry %>% fct_reorder(value, .fun = sum, .desc = TRUE)
) %>%
spread(time, value) %>%
mutate(industry = industry %>% str_remove("A|B|C|D|E|F|G|H|I|J|K"))
NRX0318 %>%
select(-units) %>%
rename(" " = 1) %>%
statgl_table() %>%
pack_rows(index = NRX0318[["units"]] %>% table())
|
2021
|
2020
|
2019
|
2018
|
2017
|
Løbende priser
|
Offentlige og personlige tjenester
|
9.635
|
9.267
|
9.277
|
8.875
|
8.495
|
Fiskeri og fangst
|
4.850
|
4.801
|
5.039
|
4.868
|
4.860
|
Bygge- og anlægsvirksomhed
|
4.190
|
4.318
|
3.651
|
3.368
|
3.600
|
Finansiering og forretningsservice
|
3.892
|
3.566
|
3.254
|
3.150
|
3.170
|
Transport
|
3.283
|
2.978
|
3.335
|
3.337
|
3.142
|
Handel
|
2.960
|
2.931
|
2.776
|
2.431
|
2.740
|
Industri
|
1.906
|
2.021
|
2.165
|
2.364
|
1.697
|
Post, tele, IT, radio, TV mv.
|
1.251
|
1.229
|
1.262
|
1.263
|
1.305
|
Forsyning og renovation
|
993
|
1.012
|
903
|
930
|
1.039
|
Hoteller og restauranter
|
699
|
565
|
729
|
722
|
703
|
Råstofudvinding
|
316
|
265
|
242
|
208
|
196
|
Se Statistikbankens tabel: NRX0318
NRX10_raw <-
statgl_url("NRX10", lang = language) %>%
statgl_fetch(
units = "K",
account = c("01", "02", "04"),
Aar = px_top(5),
.col_code = TRUE
) %>%
as_tibble() %>%
rename("time" = Aar)
NRX10 <-
NRX10_raw %>%
arrange(desc(time)) %>%
mutate(time = time %>% fct_inorder()) %>%
spread(time, value)
NRX10 %>%
select(-units) %>%
rename(" " = 1) %>%
statgl_table() %>%
pack_rows(index = NRX10[["units"]] %>% table())
|
2021
|
2020
|
2019
|
2018
|
2017
|
2010-priser, kædede værdier
|
BNP, mio. kr.
|
15.740,6
|
15.540,1
|
15.511,0
|
15.083,8
|
14.990,4
|
Pr. indbygger, i 1.000 kr.
|
279,3
|
277,4
|
277,4
|
270,4
|
268,8
|
Årlig vækst i BNP
|
1,3
|
0,2
|
2,8
|
0,6
|
0,1
|
Se Statistikbankens tabel: NRX10
NRX13_raw <-
statgl_url("NRX13", lang = language) %>%
statgl_fetch(
Aar = px_top(5),
Kode = paste0("VBVT", LETTERS[1:11]),
.col_code = TRUE
) %>%
as_tibble() %>%
rename("time" = Aar)
NRX13 <-
NRX13_raw %>%
arrange(desc(time)) %>%
mutate(
time = time %>% fct_inorder(),
Kode = Kode %>% str_remove("A|B|C|D|E|F|G|H|I|J|K") %>% trimws(),
Kode = Kode %>% fct_reorder(value, .fun = mean, .desc = TRUE)
) %>%
spread(time, value)
NRX13 %>%
rename(" " = 1) %>%
statgl_table()
|
2021
|
2020
|
2019
|
2018
|
2017
|
Fiskeri og fangst
|
1,75
|
0,40
|
0,98
|
0,16
|
0,49
|
Offentlige og personlige tjenester
|
0,30
|
-0,68
|
1,38
|
0,78
|
0,74
|
Bygge- og anlægsvirksomhed
|
-1,72
|
0,69
|
1,13
|
-0,39
|
2,07
|
Handel
|
-0,47
|
-0,01
|
0,77
|
0,81
|
-0,11
|
Finansiering og forretningsservice
|
0,48
|
0,34
|
0,02
|
-0,28
|
0,15
|
Råstofudvinding
|
-0,07
|
0,00
|
0,27
|
0,05
|
0,07
|
Forsyning og renovation
|
-0,32
|
0,40
|
-0,02
|
-0,20
|
0,03
|
Transport
|
0,38
|
-1,43
|
0,09
|
0,73
|
-0,13
|
Hoteller og restauranter
|
0,48
|
-0,85
|
-0,27
|
-0,17
|
0,09
|
Post, tele, IT, radio, TV mv.
|
-0,15
|
0,19
|
-0,30
|
-0,29
|
-0,36
|
Industri
|
0,14
|
0,77
|
-0,57
|
0,27
|
-2,68
|
Se Statistikbankens tabel: NRX13
Sidst opdateret: 17. april
2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCnsNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQp9DQoNCnsgIA0KbGFuZ3VhZ2UgIDwtIHBhcmFtcyRsYW5nDQpvcHRpb24gICAgPC0gcGFzdGUwKCI/bGFuZz0iLCBsYW5ndWFnZSwgIiZzZWxlY3QiKQ0KbG9nbyAgICAgIDwtIHBhc3RlMChnZXR3ZCgpLCIvYWRkL2xvZ28uZ2lmIikNCnR4dCAgICAgICA8LSByZWFkX3lhbWwocGFzdGUwKGdldHdkKCksICIvYWRkL3R4dC55bWwiKSwgZmlsZUVuY29kaW5nID0gIklTTy04ODU5LTEiKQ0Kc291cmNlICAgIDwtIHR4dCRzb3VyY2VbbGFuZ3VhZ2VdICU+JSB1bmxpc3QoKQ0KfQ0KDQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCg0KYGBgDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KLmFjY29yZGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5MTk5MDA7DQogIGNvbG9yOiB3aGl0ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBwYWRkaW5nOiAxOHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgdHJhbnNpdGlvbjogMC40czsNCn0NCg0KLmFjdGl2ZSwgLmFjY29yZGlvbjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmOTcyNDI7DQp9DQoNCi5hY2NvcmRpb246YWZ0ZXIgew0KICBjb250ZW50OiAnXDAwMkInOw0KICBjb2xvcjogIzc3NzsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLWxlZnQ6IDVweDsNCn0NCg0KLmFjdGl2ZTphZnRlciB7DQogIGNvbnRlbnQ6ICJcMjIxMiI7DQp9DQoNCi5wYW5lbCB7DQogIHBhZGRpbmc6IDBweCA1cHggMHB4IDVweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIG1heC1oZWlnaHQ6IDA7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsNCn0NCg0KZGV0YWlscyB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQpkZXRhaWxzID4gc3VtbWFyeSB7DQogIHBhZGRpbmc6IDRweCAxMnB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2Y5OTsNCiAgYm9yZGVyOiBzb2xpZDsNCiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6IHdoaXRlOw0KfQ0KDQpkZXRhaWxzW29wZW5dID4gc3VtbWFyeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmYWE0MWE7DQp9DQoNCg0KLnRpdGxlIHsNCiAgY29sb3I6ICMxYjU0NjM7DQogIGZvbnQtc2l6ZTogMzZweDsNCn0NCg0KDQoucGVyc29uZXIgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwNDQ1OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouw7hrb25vbWkgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwN0Y5OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMC4xcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQoudHbDpnJnw6VlbmRlIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICNmYWE0MWE7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLmNvbnRhaW5lciB7DQogIHdpZHRoOiBpbmhlcml0Ow0KfQ0KDQouc2Nyb2xsLTEwMCB7DQogIG1heC1oZWlnaHQ6IDEwMDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsNCn0NCg0KDQpwcmUgew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCn0NCg0KcHJlW2NsYXNzXSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KfQ0KDQpgYGANCg0KPGJyPg0KPGJyPg0KDQo8Y2VudGVyPg0KDQotLS0NCiANCiMgW2ByIHR4dCROUiR0aXRsZVtsYW5ndWFnZV1gXXsudGl0bGV9DQogDQotLS0NCjwvY2VudGVyPg0KDQo8ZGV0YWlscyBvcGVuPiA8c3VtbWFyeT4gYHIgdHh0JE5SJHRpdGxlW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIE5SWDAxfQ0KDQpOUlgwMV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXRzICAgICAgICAgID0gIkwiLA0KICAgIHRpbWUgICAgICAgICAgID0gcHhfdG9wKDUpLA0KICAgICJhY2NvdW50IG5hbWUiID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlICAgICAgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KICANCk5SWDAxIDwtIA0KICBOUlgwMV9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGBhY2NvdW50IG5hbWVgID0gYGFjY291bnQgbmFtZWAgJT4lIHN0cl9yZW1vdmVfYWxsKCJbOmRpZ2l0Ol18WzpwdW5jdDpdfFxcKyIpICU+JSB0cmltd3MoKSwNCiAgICBgYWNjb3VudCBuYW1lYCA9IGBhY2NvdW50IG5hbWVgICU+JSBmY3RfaW5vcmRlcigpDQogICAgKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCiAgDQpOUlgwMSAlPiUgDQogIHNlbGVjdCgtdW5pdHMpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMVtbInVuaXRzIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKGMoOCwgMTkpLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNDQyOWFkN2YtMzcyZi00MGU0LWExMDMtZWViMzQxYzZiZGI1Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiTlJYMDMxOCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDAzMTh9DQoNCk5SWDAzMThfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJOUlgwMzE4IiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyAgICAgPSAiTCIsDQogICAgaW5kdXN0cnkgID0gcGFzdGUwKCIwMTAwIiwgTEVUVEVSU1sxOjExXSksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KTlJYMDMxOCA8LSANCiAgTlJYMDMxOF9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGluZHVzdHJ5ID0gaW5kdXN0cnkgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAuZGVzYyA9IFRSVUUpDQogICAgKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGUoaW5kdXN0cnkgPSBpbmR1c3RyeSAlPiUgc3RyX3JlbW92ZSgiQXxCfEN8RHxFfEZ8R3xIfEl8SnxLIikpDQoNCg0KDQpOUlgwMzE4ICU+JSANCiAgc2VsZWN0KC11bml0cykgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lICANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMzE4W1sidW5pdHMiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiTlJYMDMxOCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOTA3MTg4MzYtYjFjYy00ZWFkLWFkNmEtYTg2OGNiMDdkN2UzIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJOUlgxMCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDEwfQ0KDQpOUlgxMF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDEwIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyA9ICJLIiwNCiAgICBhY2NvdW50ID0gYygiMDEiLCAiMDIiLCAiMDQiKSwNCiAgICBBYXIgPSBweF90b3AoNSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkgJT4lIA0KICByZW5hbWUoInRpbWUiID0gQWFyKQ0KDQpOUlgxMCA8LSANCiAgTlJYMTBfcmF3ICU+JSANCiAgYXJyYW5nZShkZXNjKHRpbWUpKSAlPiUgDQogIG11dGF0ZSh0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpDQoNCk5SWDEwICU+JSANCiAgc2VsZWN0KC11bml0cykgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IE5SWDEwW1sidW5pdHMiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiTlJYMTAiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzU0NTMzNDU0LTYzOTEtNGNjMC05MGExLWU1MTg0NzZmNTUzMSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDQ6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiTlJYMTMiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBOUlgxM30NCg0KTlJYMTNfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJOUlgxMyIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgQWFyICAgICAgID0gcHhfdG9wKDUpLA0KICAgIEtvZGUgICAgICA9IHBhc3RlMCgiVkJWVCIsIExFVFRFUlNbMToxMV0pLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpICU+JSANCiAgICByZW5hbWUoInRpbWUiID0gQWFyKQ0KDQoNCk5SWDEzIDwtDQogIE5SWDEzX3JhdyAlPiUgDQogIGFycmFuZ2UoZGVzYyh0aW1lKSkgJT4lIA0KICBtdXRhdGUoDQogICAgdGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCksDQogICAgS29kZSA9IEtvZGUgJT4lIHN0cl9yZW1vdmUoIkF8QnxDfER8RXxGfEd8SHxJfEp8SyIpICU+JSB0cmltd3MoKSwNCiAgICBLb2RlID0gS29kZSAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBtZWFuLCAuZGVzYyA9IFRSVUUpDQogICkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpDQoNCk5SWDEzICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIk5SWDEzIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8zYzA1Nzc0ZS1kNzM5LTQwZWMtOGQyMS02ZWRmZTljMjhmYTIiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gPHNwYW4gc3R5bGU9J2NvbG9yOiNEM0QzRDM7IGZvbnQtc2l6ZTo5MCU7Jz4gYHIgcGFzdGUodHh0JHVwZGF0ZVtsYW5ndWFnZV0sIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQuICVCICVZIikpYCA8L3NwYW4+IDwvY2VudGVyPg0KDQoNCjxzY3JpcHQ+DQp2YXIgYWNjID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNjb3JkaW9uIik7DQp2YXIgaTsNCg0KZm9yIChpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykgew0KICBhY2NbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIpOw0KICAgIHZhciBwYW5lbCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nOw0KICAgIGlmIChwYW5lbC5zdHlsZS5tYXhIZWlnaHQpIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG51bGw7DQogICAgfSBlbHNlIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IHBhbmVsLnNjcm9sbEhlaWdodCArICJweCI7DQogICAgfSANCiAgfSk7DQp9DQo8L3NjcmlwdD4NCg0KDQo=