Turisme
Krydstogter
TUXKRH_raw <-
statgl_url("TUXKRH", lang = language) %>%
statgl_fetch(
month = px_all(),
port = px_all(),
time = px_top(3),
.col_code = TRUE
) %>%
as_tibble()
# Skal have ændret time i fetch og sys.time filter tilbage når der kommer nye tal for 2022 også i de næste 2 tabeller
TUXKRH <-
TUXKRH_raw %>%
#filter(time <= Sys.time() %>% year() - 3) %>%
drop_na() %>%
mutate(
month = month %>% fct_inorder(),
port = port %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
) %>%
spread(month, value) %>%
mutate_if(is.integer, ~ replace(., is.na(.), 0))
TUXKRH %>%
select(-time) %>%
rename(" " = 1) %>%
statgl_table(replace_0s = TRUE) %>%
pack_rows(index = TUXKRH[["time"]] %>% table()) %>%
row_spec(1, bold = TRUE) |>
column_spec(2, bold = T)
|
Total
|
April
|
Maj
|
Juni
|
Juli
|
August
|
September
|
2022
|
I alt
|
112.273
|
9
|
261
|
2.393
|
35.317
|
52.251
|
22.042
|
I alt
|
187.710
|
19
|
656
|
9.497
|
50.214
|
99.127
|
28.197
|
Qaqortoq
|
27.732
|
0
|
0
|
1.178
|
8.178
|
13.364
|
5.012
|
Qaqortoq
|
47.025
|
0
|
0
|
490
|
10.861
|
28.753
|
6.921
|
Nanortalik
|
14.486
|
0
|
0
|
0
|
4.360
|
9.964
|
162
|
Nanortalik
|
34.620
|
0
|
0
|
178
|
11.807
|
18.395
|
4.240
|
Nuuk
|
15.560
|
0
|
0
|
87
|
7.971
|
5.522
|
1.980
|
Nuuk
|
31.660
|
0
|
0
|
3.113
|
11.882
|
13.097
|
3.568
|
Ilulissat
|
14.730
|
0
|
0
|
97
|
5.350
|
5.436
|
3.847
|
Ilulissat
|
14.423
|
0
|
0
|
412
|
2.149
|
9.015
|
2.847
|
Sisimiut
|
12.575
|
0
|
9
|
97
|
4.911
|
4.725
|
2.833
|
Sisimiut
|
12.185
|
19
|
12
|
803
|
2.313
|
6.911
|
2.127
|
Kangerlussuaq
|
7.309
|
0
|
0
|
10
|
997
|
3.972
|
2.330
|
Kangerlussuaq
|
7.851
|
0
|
0
|
254
|
1.989
|
4.160
|
1.448
|
Paamiut
|
1.547
|
0
|
0
|
0
|
165
|
1.205
|
177
|
Paamiut
|
13.218
|
0
|
105
|
2.568
|
4.717
|
5.093
|
735
|
Qeqertarsuaq
|
3.154
|
9
|
0
|
0
|
606
|
1.567
|
972
|
Qeqertarsuaq
|
5.881
|
0
|
0
|
99
|
1.174
|
3.886
|
722
|
Ittoqqortoormiit
|
3.255
|
0
|
106
|
128
|
394
|
878
|
1.749
|
2023
|
Ittoqqortoormiit
|
5.343
|
0
|
85
|
193
|
352
|
2.056
|
2.657
|
Uummannaq
|
2.805
|
0
|
0
|
10
|
591
|
1.127
|
1.077
|
Uummannaq
|
2.950
|
0
|
0
|
0
|
253
|
1.590
|
1.107
|
Narsaq
|
2.190
|
0
|
146
|
0
|
168
|
1.051
|
825
|
Narsaq
|
2.305
|
0
|
99
|
682
|
0
|
1.334
|
190
|
Maniitsoq
|
1.925
|
0
|
0
|
0
|
802
|
952
|
171
|
Maniitsoq
|
1.853
|
0
|
0
|
616
|
921
|
316
|
0
|
Tasiilaq
|
877
|
0
|
0
|
0
|
168
|
323
|
386
|
Tasiilaq
|
2.802
|
0
|
256
|
0
|
939
|
1.249
|
358
|
Narsarsuaq
|
1.891
|
0
|
0
|
786
|
266
|
839
|
0
|
Narsarsuaq
|
1.547
|
0
|
0
|
0
|
343
|
1.074
|
130
|
Qaanaaq
|
1.082
|
0
|
0
|
0
|
390
|
371
|
321
|
Qaanaaq
|
1.516
|
0
|
0
|
0
|
208
|
686
|
622
|
Upernavik
|
706
|
0
|
0
|
0
|
0
|
506
|
200
|
Upernavik
|
670
|
0
|
0
|
0
|
0
|
670
|
0
|
Aasiaat
|
193
|
0
|
0
|
0
|
0
|
193
|
0
|
Aasiaat
|
680
|
0
|
0
|
0
|
0
|
340
|
340
|
Qassiarsuk
|
104
|
0
|
0
|
0
|
0
|
104
|
0
|
Qassiarsuk
|
535
|
0
|
99
|
89
|
0
|
162
|
185
|
Qasigiannguit
|
340
|
0
|
0
|
0
|
0
|
340
|
0
|
Se Statistikbankens tabel: TUXKRH
TUXKRL_raw <-
statgl_url("TUXKRP", lang = language) %>%
statgl_fetch(
month = px_all(),
time = px_top(5),
.col_code = TRUE
) %>%
as_tibble()
TUXKRL_raw %>%
mutate(
month = month %>% fct_inorder(),
time = time %>% fct_inorder() %>% fct_rev()
) %>%
drop_na() %>%
arrange(time, month) %>%
spread(time, value) %>%
mutate_if(is.integer, ~ replace(., is.na(.), 0)) %>%
rename(" " = 1) %>%
statgl_table(replace_0s = TRUE) %>%
row_spec(1, bold = TRUE)
|
2023
|
2022
|
2019
|
Total
|
76.477
|
43.999
|
46.633
|
April
|
19
|
9
|
0
|
Maj
|
557
|
252
|
89
|
Juni
|
4.066
|
1.403
|
76
|
Juli
|
21.627
|
12.496
|
7.497
|
August
|
38.469
|
22.012
|
26.236
|
September
|
11.739
|
7.827
|
12.671
|
Oktober
|
0
|
0
|
64
|
Se Statistikbankens tabel: TUXKRP
Flypassagerer
TUXUPAX_raw <-
statgl_url("TUXUPAX", lang = language) %>%
statgl_fetch(
time = px_top(2),
month = px_all(),
airport = px_all(),
.col_code = TRUE
) %>%
as_tibble()
TUXUPAX <-
TUXUPAX_raw %>%
filter(time < Sys.time() %>% year()) %>%
mutate(
month = month %>% fct_inorder(),
airport = airport %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
) %>%
spread(airport, value) %>%
mutate_if(is.integer, ~ replace(., is.na(.), 0))
TUXUPAX %>%
select(-time) %>%
rename(" " = 1) %>%
statgl_table(replace_0s = TRUE) %>%
pack_rows(index = TUXUPAX[["time"]] %>% table()) %>%
row_spec(1, bold = T) |>
column_spec(2, bold = T)
|
I alt
|
Kangerlussuaq
|
Nuuk
|
Narsarsuaq
|
Kulusuk
|
Ilulissat
|
Nerlerit inaat
|
2023
|
I alt
|
96.362
|
75.522
|
6.220
|
5.931
|
4.713
|
3.187
|
789
|
Januar
|
4.090
|
3.694
|
243
|
72
|
39
|
0
|
42
|
Februar
|
3.625
|
3.290
|
271
|
0
|
40
|
0
|
24
|
Marts
|
6.864
|
5.917
|
547
|
79
|
216
|
58
|
47
|
April
|
7.294
|
6.331
|
398
|
220
|
293
|
0
|
52
|
Maj
|
6.654
|
5.653
|
471
|
246
|
211
|
0
|
73
|
Juni
|
10.410
|
7.633
|
795
|
931
|
460
|
532
|
59
|
Juli
|
15.425
|
10.781
|
663
|
1.543
|
1.178
|
1.161
|
99
|
August
|
14.623
|
9.219
|
818
|
1.776
|
1.440
|
1.226
|
144
|
September
|
10.281
|
7.627
|
803
|
918
|
591
|
210
|
132
|
Oktober
|
6.723
|
6.093
|
471
|
0
|
105
|
0
|
54
|
November
|
4.928
|
4.436
|
421
|
0
|
40
|
0
|
31
|
December
|
5.445
|
4.848
|
319
|
146
|
100
|
0
|
32
|
Se Statistikbankens tabel: TUXUPAX
Hotelovernatninger
TUXKAP_raw <-
statgl_url("TUXKAP", lang = language) %>%
statgl_fetch(
unit = c(2),
month = px_all(),
region = px_all(),
time = px_top(2),
.col_code = TRUE
) %>%
as_tibble()
TUXKAP <-
TUXKAP_raw %>%
filter(time <= Sys.time() %>% year() -1) %>%
mutate(
month = month %>% fct_inorder(),
region = region %>% fct_inorder()
) %>%
spread(month, value) %>%
unite(combi, unit, time, sep = ", ")
TUXKAP %>%
select(-combi) %>%
rename(" " = 1) %>%
statgl_table() %>%
pack_rows(index = TUXKAP[["combi"]] %>% table()) %>%
row_spec(1, bold = T) |>
column_spec(2, bold = T)
|
I alt
|
Januar
|
Februar
|
Marts
|
April
|
Maj
|
Juni
|
Juli
|
August
|
September
|
Oktober
|
November
|
December
|
Belægningsprocent, 2022
|
I alt
|
47,8
|
25,0
|
33,6
|
47,7
|
44,1
|
49,7
|
53,4
|
59,4
|
66,3
|
67,3
|
54,0
|
42,0
|
24,9
|
I alt
|
47,5
|
29,6
|
42,2
|
49,2
|
49,0
|
47,0
|
57,4
|
58,4
|
64,4
|
59,0
|
47,5
|
40,3
|
22,6
|
Avannaata Kommunia og Kommune Qeqertalik
|
56,3
|
21,2
|
32,7
|
52,0
|
51,9
|
58,7
|
67,2
|
85,4
|
82,3
|
75,7
|
61,6
|
43,3
|
29,8
|
Avannaata Kommunia og Kommune Qeqertalik
|
52,5
|
26,9
|
45,2
|
48,4
|
53,2
|
55,3
|
66,8
|
83,6
|
82,3
|
62,5
|
44,1
|
34,7
|
17,1
|
Ilulissat (*)
|
56,3
|
19,5
|
30,6
|
54,6
|
51,8
|
61,1
|
65,6
|
89,6
|
80,4
|
72,7
|
61,3
|
38,9
|
32,3
|
Ilulissat (*)
|
55,0
|
27,4
|
49,8
|
53,3
|
56,2
|
57,3
|
69,9
|
86,0
|
85,1
|
64,7
|
46,7
|
34,2
|
16,5
|
Qeqqata Kommunia
|
49,1
|
26,1
|
37,4
|
59,3
|
52,9
|
54,6
|
56,2
|
60,3
|
66,0
|
64,1
|
52,6
|
37,4
|
21,4
|
Belægningsprocent, 2023
|
Qeqqata Kommunia
|
48,6
|
27,8
|
44,7
|
53,8
|
54,3
|
49,9
|
52,5
|
59,0
|
64,2
|
61,4
|
53,4
|
38,3
|
23,7
|
Kommune Kujalleq
|
28,3
|
21,7
|
19,8
|
23,2
|
19,7
|
17,4
|
32,2
|
40,1
|
43,8
|
35,5
|
27,5
|
25,1
|
18,5
|
Kommune Kujalleq
|
32,8
|
33,0
|
35,5
|
40,3
|
25,8
|
24,6
|
37,4
|
44,8
|
44,6
|
34,2
|
20,8
|
25,2
|
21,5
|
Kommuneqarfik Sermersooq Vest
|
54,5
|
32,2
|
46,0
|
54,6
|
48,3
|
61,9
|
57,5
|
45,9
|
64,0
|
88,1
|
70,7
|
58,9
|
26,7
|
Kommuneqarfik Sermersooq Vest
|
53,7
|
36,0
|
47,1
|
56,0
|
56,5
|
55,9
|
64,6
|
41,0
|
59,0
|
72,6
|
68,8
|
60,1
|
27,5
|
Kommuneqarfik Sermersooq Øst
|
35,0
|
17,3
|
13,1
|
34,8
|
34,7
|
33,6
|
39,3
|
56,3
|
72,3
|
53,8
|
21,7
|
18,0
|
21,7
|
Kommuneqarfik Sermersooq Øst
|
37,4
|
12,2
|
20,0
|
35,0
|
42,3
|
33,5
|
56,0
|
64,3
|
69,7
|
54,3
|
19,6
|
18,7
|
21,6
|
Se Statistikbankens tabel: TUXKAP
Slædehunde
TUX01_raw <-
statgl_url("TUX01", lang = language) %>%
statgl_fetch(
district = px_all(),
time = px_top(5),
.col_code = TRUE
) %>%
as_tibble()
TUX01_raw %>%
arrange(desc(time)) %>%
mutate(time = time %>% fct_inorder()) %>%
spread(time, value) %>%
arrange(desc(`2019`)) %>%
rename(" " = 1) %>%
statgl_table() %>%
row_spec(1, bold = TRUE)
|
2022
|
2021
|
2020
|
2019
|
2018
|
I alt
|
13.123
|
13.395
|
13.417
|
13.315
|
14.130
|
Upernavik
|
2.501
|
2.478
|
2.719
|
3.058
|
2.954
|
Ilulissat
|
2.974
|
3.096
|
3.108
|
2.690
|
2.933
|
Uummannaq
|
1.863
|
1.863
|
1.751
|
1.811
|
2.633
|
Sisimiut
|
1.321
|
1.252
|
1.153
|
1.129
|
1.067
|
Qaanaaq
|
983
|
1.163
|
1.163
|
1.071
|
1.053
|
Tasiilaq
|
942
|
1.045
|
924
|
1.028
|
1.012
|
Qasigiannguit
|
806
|
943
|
810
|
809
|
756
|
Aasiaat
|
602
|
417
|
635
|
656
|
656
|
Kangaatsiaq
|
576
|
593
|
625
|
550
|
550
|
Qeqertarsuaq
|
375
|
365
|
349
|
319
|
327
|
Ittoqqortoormiit
|
180
|
180
|
180
|
194
|
189
|
Se Statistikbankens tabel: TUX01
Sidst opdateret: 17. april
2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBUUlVFLA0KCXdhcm5pbmcgPSBGQUxTRQ0KKQ0KDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgic3RhdGdsIikNCmxpYnJhcnkoImthYmxlRXh0cmEiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInlhbWwiKQ0KDQpsYW5ndWFnZSAgPC0gcGFyYW1zJGxhbmcNCm9wdGlvbiAgICA8LSBwYXN0ZTAoIj9sYW5nPSIsIGxhbmd1YWdlLCAiJnNlbGVjdCIpDQpsb2dvICAgICAgPC0gcGFzdGUwKGdldHdkKCksIi9hZGQvbG9nby5naWYiKQ0KdHh0ICAgICAgIDwtIHJlYWRfeWFtbChwYXN0ZTAoZ2V0d2QoKSwgIi9hZGQvdHh0LnltbCIpLCBmaWxlRW5jb2RpbmcgPSAiSVNPLTg4NTktMSIpDQpzb3VyY2UgICAgPC0gdHh0JHNvdXJjZVtsYW5ndWFnZV0gJT4lIHVubGlzdCgpDQpgYGANCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KDQouYWNjb3JkaW9uIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzkxOTkwMDsNCiAgY29sb3I6IHdoaXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDE4cHg7DQogIHdpZHRoOiAxMDAlOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCiAgb3V0bGluZTogbm9uZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjRzOw0KfQ0KDQouYWN0aXZlLCAuYWNjb3JkaW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5NzI0MjsNCn0NCg0KLmFjY29yZGlvbjphZnRlciB7DQogIGNvbnRlbnQ6ICdcMDAyQic7DQogIGNvbG9yOiAjNzc3Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBtYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQouYWN0aXZlOmFmdGVyIHsNCiAgY29udGVudDogIlwyMjEyIjsNCn0NCg0KLnBhbmVsIHsNCiAgcGFkZGluZzogMHB4IDVweCAwcHggNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2Utb3V0Ow0KfQ0KDQpkZXRhaWxzIHsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCmRldGFpbHMgPiBzdW1tYXJ5IHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIHdpZHRoOiAxMDAlOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3Zjk5Ow0KICBib3JkZXI6IHNvbGlkOw0KICBib3JkZXItY29sb3I6IHdoaXRlOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogd2hpdGU7DQp9DQoNCmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTQxYTsNCn0NCg0KDQoudGl0bGUgew0KICBjb2xvcjogIzFiNTQ2MzsNCiAgZm9udC1zaXplOiAzNnB4Ow0KfQ0KDQoNCi5wZXJzb25lciB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA0NDU5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi7DuGtvbm9taSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA3Rjk5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAwLjFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi50dsOmcmfDpWVuZGUgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogI2ZhYTQxYTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouY29udGFpbmVyIHsNCiAgd2lkdGg6IGluaGVyaXQ7DQp9DQoNCg0KDQpgYGANCg0KYGBge3IgeGFyaW5nYW5FeHRyYS1jbGlwYm9hcmQsIGVjaG89RkFMU0V9DQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCmBgYA0KDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVFUkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUkgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IsIGNsYXNzLnNvdXJjZT0na2xpcHB5J30NCg0KVFVYS1JIX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICBwb3J0ICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoMyksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KIyBTa2FsIGhhdmUgw6ZuZHJldCB0aW1lIGkgZmV0Y2ggb2cgc3lzLnRpbWUgZmlsdGVyIHRpbGJhZ2UgbsOlciBkZXIga29tbWVyIG55ZSB0YWwgZm9yIDIwMjIgb2dzw6UgaSBkZSBuw6ZzdGUgMiB0YWJlbGxlcg0KDQpUVVhLUkggPC0gDQogIFRVWEtSSF9yYXcgJT4lIA0KICAjZmlsdGVyKHRpbWUgPD0gU3lzLnRpbWUoKSAlPiUgeWVhcigpIC0gMykgJT4lIA0KICBkcm9wX25hKCkgJT4lDQogIG11dGF0ZSgNCiAgICBtb250aCA9IG1vbnRoICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIHBvcnQgPSBwb3J0ICU+JSBmY3RfcmVvcmRlcih2YWx1ZSwgLmZ1biA9IHN1bSwgLm5hX3JtID0gVFJVRSwgLmRlc2MgPSBUUlVFKQ0KICApICU+JSANCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkNCg0KVFVYS1JIICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBUVVhLUkhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JIIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS9iNGU3ZDRmYi1kOTI3LTQxYTEtYTIzNy0wNWVmOTg1OGEwYzkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KDQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS1JQIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYS1JQfQ0KDQpUVVhLUkxfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhLUlAiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JSANCiAgc3RhdGdsX2ZldGNoKA0KICAgIG1vbnRoICAgICA9IHB4X2FsbCgpLA0KICAgIHRpbWUgICAgICA9IHB4X3RvcCg1KSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQpUVVhLUkxfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgdGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkgJT4lIGZjdF9yZXYoKQ0KICApICU+JSANCiAgZHJvcF9uYSgpICU+JSANCiAgYXJyYW5nZSh0aW1lLCBtb250aCkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpICU+JSANCiAgbXV0YXRlX2lmKGlzLmludGVnZXIsIH4gcmVwbGFjZSguLCBpcy5uYSguKSwgMCkpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlRVWEtSUCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMDdjYjExNDUtM2QwNC00YzAwLWI1OWUtYzA0ODU4NTlhODU5Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMltsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlRVWFVQQVgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhVUEFYfQ0KDQpUVVhVUEFYX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdGltZSAgICAgID0gcHhfdG9wKDIpLA0KICAgIG1vbnRoICAgICA9IHB4X2FsbCgpLA0KICAgIGFpcnBvcnQgICA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWFVQQVggPC0gDQogIFRVWFVQQVhfcmF3ICU+JSANCiAgZmlsdGVyKHRpbWUgPCBTeXMudGltZSgpICU+JSB5ZWFyKCkpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgYWlycG9ydCA9IGFpcnBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAubmFfcm0gPSBUUlVFLCAuZGVzYyA9IFRSVUUpDQogICAgKSAlPiUgDQogIHNwcmVhZChhaXJwb3J0LCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkNCg0KDQpUVVhVUEFYICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBUVVhVUEFYW1sidGltZSJdXSAlPiUgdGFibGUoKSkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVCkgfD4gDQogIGNvbHVtbl9zcGVjKDIsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlRVWFVQQVgiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzBhYjE0ZDdkLTNjZDEtNDZiZC1hNmZiLWVjOGNjYWI4ZDY3YiIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFRVJHN1YjNbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDQ6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS0FQIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYS0FQfQ0KDQpUVVhLQVBfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JSANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXQgICAgICA9IGMoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgcmVnaW9uICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDIpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KVFVYS0FQIDwtIA0KICBUVVhLQVBfcmF3ICU+JSANCiAgZmlsdGVyKHRpbWUgPD0gU3lzLnRpbWUoKSAlPiUgeWVhcigpIC0xKSAlPiUgDQogIG11dGF0ZSgNCiAgICBtb250aCA9IG1vbnRoICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIHJlZ2lvbiA9IHJlZ2lvbiAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgdW5pdCwgdGltZSwgc2VwID0gIiwgIikNCg0KVFVYS0FQICU+JSANCiAgc2VsZWN0KC1jb21iaSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtBUFtbImNvbWJpIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS0FQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS80ODhhYWNmYi03OWU5LTQ1NmQtODg4OS1kODIwNmE0ODRjYmQiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPiANCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA1OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlRVWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYMDF9DQoNClRVWDAxX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JQ0KICBzdGF0Z2xfZmV0Y2goDQogICAgZGlzdHJpY3QgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWDAxX3JhdyAlPiUgDQogIGFycmFuZ2UoZGVzYyh0aW1lKSkgJT4lIA0KICBtdXRhdGUodGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkpICU+JSANCiAgc3ByZWFkKHRpbWUsIHZhbHVlKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhgMjAxOWApKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYMDEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2JmZThmOWRlLWFlMTgtNGY1Mi1iYzdiLWQ0ODA5MTMwMTk0MSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gDQo8c3BhbiBzdHlsZT0nY29sb3I6I0QzRDNEMzsgZm9udC1zaXplOjkwJTsnPiBgciBwYXN0ZSh0eHQkdXBkYXRlW2xhbmd1YWdlXSwgZm9ybWF0KFN5cy5EYXRlKCksICIlZC4gJUIgJVkiKSlgIDwvc3Bhbj4gDQo8L2NlbnRlcj4NCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K