Ilinniartitaaneq


Innuttaasut ilinniarsimassusaat


UDXISCPROF_raw <- 
  statgl_url("UDXISCPROF", lang = language) |> 
  statgl_fetch(
    Fsted         = px_all(),
    ISCED11_level = px_all(),
    Aar           = px_top(),
    .col_code     = T
  ) |> 
  as_tibble()

UDXISCPROF <- 
  UDXISCPROF_raw |> 
  select(-Aar) |> 
  mutate(ISCED11_level = ISCED11_level |> fct_inorder()) |> 
  spread(Fsted, value)

UDXISCPROF |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1, bold = T)
Kalaallit Nunaanni Kalaallit Nunaata avataani
Katillugit 36.905 5.947
Atuarfik tunngaviliivik, 10.klasse tikillugu 21.586 2.741
Ilinniarnertuunngorniarneq 2.083 298
Inuussutissarsiornermik ilinniarneq 7.871 962
Angusanik qaffassaaneq 1.409 32
Ingerlariaqqiffiusumik ilinniarneq naatsoq 1.051 306
Bachelorinngorniarneq 247 121
Professionsbachelorinngorniarneq 2.199 651
Kandidatinngorniarneq 443 788
Ilisimatuunngorniarneq 16 48


Se Statistikbankens tabel: UDXISCPROF

UDXUMG3_raw <- 
  statgl_url("UDXUMG3", lang = language) |> 
  statgl_fetch(
    registrering = px_all(),
    HFU          = px_all(),
    aar          = px_top(),
    .col_code    = T
  ) |> 
  as_tibble()

UDXUMG3 <- 
  UDXUMG3_raw |> 
  mutate(HFU = HFU |> fct_inorder() |>  fct_rev()) |>
  select(aar, registrering, HFU, value) |> 
  spread(HFU, value)

UDXUMG3 |> 
  select(-1) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
Katillugit Ilinniakkamik naammassinnissimanngitsut Ingerlariaqqiffiusumik ilinniakkamik naammassinnissimasut Inuussutissarsiornermik ilinniakkamik naammassinnissimasut Ilinniarnertuunngorniarnermik naammassinnissimasut
Efterskoli 266 266 0 0 0
Ilinnianngitsut imaluunniit suliffeqanngitsut 2.235 2.038 8 54 135
Ilinniarnertuunngorniarneq 948 926 0 8 14
Ingerlariaqqiffiusumik ilinniarneq 386 49 33 21 283
Inuussutissarsiornermik ilinniarneq 440 360 8 11 61
Katillugit 7.323 5.850 112 379 982
Suliffeqarneq 3.048 2.211 63 285 489


Se Statistikbankens tabel: UDXUMG3

Tunngaviusumik atuarfik


UDXESG_raw <- 
  statgl_url("UDXESG", lang = language) |> 
  statgl_fetch(
    unit       = "andel",
    sex        = px_all(),
    efterskole = px_all(),
    status     = px_all(),
    skoleaar   = px_all(),
    .col_code  = T
  ) |> 
  as_tibble()


UDXESG <- 
  UDXESG_raw |> 
  filter(skoleaar == max(skoleaar)) |> 
  mutate(efterskole = efterskole |> fct_inorder() |> fct_rev(),
         sex = sex |> fct_inorder() |> fct_rev()) |> 
  unite(combi, unit, skoleaar, sep = "-")

UDXESG |> 
  select(-combi) |> 
  spread(efterskole, value) |> 
  select(sex, status, 3:6) |> 
  arrange(sex, desc(status)) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1:3, bold = T) |> 
  column_spec(3, bold = T) |> 
  add_footnote(UDXESG[[1]][1], notation = "symbol")
status Katillugit Qallunaat efterskolii Maniitsumi Efterskoli Efterskole Villads Villadsen
Katillugit Unitsitsisut 37 25 72 51
Katillugit Naammassinnissimasut 63 75 28 49
Katillugit Aallartittut nutaat katillugit 100 100 100 100
Niviarsiaqqat Unitsitsisut 40 31 79 43
Niviarsiaqqat Naammassinnissimasut 60 69 21 57
Niviarsiaqqat Aallartittut nutaat katillugit 100 100 100 100
Nukappiaqqat Unitsitsisut 34 20 67 62
Nukappiaqqat Naammassinnissimasut 66 80 33 38
Nukappiaqqat Aallartittut nutaat katillugit 100 100 100 100
* procentinngorlugu-2023/2024


Se Statistikbankens tabel: UDXESG

UDXTKK_raw <- 
  statgl_url("UDXTKK", lang = language) |> 
  statgl_fetch(
    subject      = px_all(),
    grade        = px_all(),
    municipality = px_all(),
    unit         = "B",
    time         = px_top(),
    .col_code    = T
  ) |> 
  as_tibble()

UDXTKK <- 
  UDXTKK_raw |> 
  unite(combi, unit, time, sep = " ") |>
  mutate(municipality = municipality |> fct_inorder()) |> 
  spread(subject, value)

UDXTKK |> 
  select(-3) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(c(1, 7), bold = T) |> 
  pack_rows(index = table(UDXTKK[[3]]))
municipality Kalaallisut Matematikki Qallunaatut Tuluttut
Inerniliillaqqissuseq (eqqortut pct.-inngorlugit) 2024
  1. klassi
Katillugit 45 49 41 NA
  1. klassi
Kommune Kujalleq 38 43 30 NA
  1. klassi
Kommuneqarfik Sermersooq 43 44 48 NA
  1. klassi
Qeqqata Kommunia 59 63 51 NA
  1. klassi
Kommune Qeqertalik 51 51 36 NA
  1. klassi
Avannaata Kommunia 48 49 41 NA
  1. klassi
Katillugit 56 40 42 84
  1. klassi
Kommune Kujalleq 49 34 36 53
  1. klassi
Kommuneqarfik Sermersooq 48 41 48 88
  1. klassi
Qeqqata Kommunia 64 40 42 88
  1. klassi
Kommune Qeqertalik 66 34 45 78
  1. klassi
Avannaata Kommunia 59 39 40 84

Se Statistikbankens tabel: UDXTKK
Inuusuttunut ilinniarfiit aamma ingerlariaqqiffiusumik ilinniakkat


UDXISC11A_raw <- 
  statgl_url("UDXISC11A", lang = language) |> 
  statgl_fetch(
    Isced     = px_all(),
    skoleomr  = px_all(),
    startaar  = px_top(1),
    .col_code = T
  ) |> 
  as_tibble()

UDXISC11A <- 
  UDXISC11A_raw |> 
  mutate(startaar = startaar |> fct_inorder(),
         skoleomr = skoleomr |> fct_inorder()) |> 
  spread(skoleomr, value)

UDXISC11A |> 
  select(-startaar) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  pack_rows(index = table(UDXISC11A[[2]]))
Kalaallit Nunaanni Atuarfiit Danmarkimi atuarfiit Nunani allani atuarfiit
2024
Angusanik qaffassaanerit 123 2 1
Bachelorinngorniarneq 101 48 2
Ilinniarnertuunngorniarneq 471 39 2
Ingerlariaqqiffiusumik ilinniarneq naatsoq 70 26 0
Inuussutissarsiornermik ilinniarneq 601 73 0
Kandidatinngorniarneq 28 21 2
Professionsbachelorinngorniarneq 135 80 0


Se Statistikbankens tabel: UDXISC11A

UDXISC11L_raw <- 
  statgl_url("UDXISC11L", lang = language) |> 
  statgl_fetch(
    aar       = 2,
    isced     = px_all(),
    status    = px_all(),
    startaar  = px_top(3),
    .col_code = T
  ) |> 
  as_tibble()

UDXISC11L <- 
  UDXISC11L_raw |> 
  filter(value > 0) |> 
  mutate(status = status |> fct_inorder()) |> 
  spread(status, value) |> 
  unite(combi, aar, startaar, sep = " ")

UDXISC11L |> 
  select(-1) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  add_footnote(UDXISC11L[[1]][1], notation = "symbol")
Suli ingerlatsisut Naammassinnissimasut Unitsitsisut Aallartittut nutaat katillugit
Bachelorinngorniarneq 57 1 73 131
Ilinniarnertuunngorniarneq 200 6 153 359
Ingerlariaqqiffiusumik ilinniarneq naatsoq 8 51 50 109
Inuussutissarsiornermik ilinniarneq, nalinginnaasoq 135 68 265 468
Inuussutissarsiornermik ilinniarneq, naatsoq 8 135 98 241
Kandidatinngorniarneq 20 12 12 44
Professionsbachelorinngorniarneq 104 13 94 211
* Ukiut marluk 2022


Se Statistikbankens tabel: UDXISC11L

Ilinniagaqarnerup ingerlanera


UDXTRFA1_raw <- 
  statgl_url("UDXTRFA1", lang = language) |> 
  statgl_fetch(
    aar       = 0,
    isced     = px_all(),
    status    = px_all(),
    dim_aar   = px_top(),
    .col_code = T
  ) |> 
  as_tibble()

UDXTRFA1 <- 
  UDXTRFA1_raw |> 
  unite(combi, aar, dim_aar, sep = " ") |> 
  mutate(isced = isced |> fct_inorder(),
         status = status |> fct_inorder())

UDXTRFA1 |> 
  select(-1) |> 
  spread(isced, value) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  add_footnote(UDXTRFA1[[1]][1], notation = "symbol")
Ilinniarnertuunngorniarneq Inuussutissarsiornermik ilinniarneq Nalunaarsorsimanngitsut
Suli ingerlatsisut 69 6 0
Naammassisimasut 0 0 0
Unitsitsisut 11 0 0
Aallartitsisimanngitsut 0 0 621
* Toqqaannartumik 2024


Se Statistikbankens tabel: UDXTRFA1


Sidst opdateret: 22. juni 2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVUQkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWElTQ1BST0YiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBVRFhJU0NQUk9GfQ0KDQpVRFhJU0NQUk9GX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYSVNDUFJPRiIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBGc3RlZCAgICAgICAgID0gcHhfYWxsKCksDQogICAgSVNDRUQxMV9sZXZlbCA9IHB4X2FsbCgpLA0KICAgIEFhciAgICAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICAgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhJU0NQUk9GIDwtIA0KICBVRFhJU0NQUk9GX3JhdyB8PiANCiAgc2VsZWN0KC1BYXIpIHw+IA0KICBtdXRhdGUoSVNDRUQxMV9sZXZlbCA9IElTQ0VEMTFfbGV2ZWwgfD4gZmN0X2lub3JkZXIoKSkgfD4gDQogIHNwcmVhZChGc3RlZCwgdmFsdWUpDQoNClVEWElTQ1BST0YgfD4gDQogIHJlbmFtZSgiICIgPSAxKSB8PiANCiAgc3RhdGdsX3RhYmxlKCkgfD4gDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWElTQ1BST0YiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzE3NmVhYTQxLTBiMDAtNGNjNC1iOGEzLTA4MmY5NWM0OWUwMiIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVURYVU1HMyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFVEWFVNRzN9DQoNClVEWFVNRzNfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJVRFhVTUczIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHJlZ2lzdHJlcmluZyA9IHB4X2FsbCgpLA0KICAgIEhGVSAgICAgICAgICA9IHB4X2FsbCgpLA0KICAgIGFhciAgICAgICAgICA9IHB4X3RvcCgpLA0KICAgIC5jb2xfY29kZSAgICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KVURYVU1HMyA8LSANCiAgVURYVU1HM19yYXcgfD4gDQogIG11dGF0ZShIRlUgPSBIRlUgfD4gZmN0X2lub3JkZXIoKSB8PiAgZmN0X3JldigpKSB8Pg0KICBzZWxlY3QoYWFyLCByZWdpc3RyZXJpbmcsIEhGVSwgdmFsdWUpIHw+IA0KICBzcHJlYWQoSEZVLCB2YWx1ZSkNCg0KVURYVU1HMyB8PiANCiAgc2VsZWN0KC0xKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFQpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhVTUczIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8xNTAyMDM4Ni1kODIzLTRlMzEtYmZiNC0xNTBlYjkxZDA4NWEiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViMltsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWEVTRyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFVEWEVTR30NCg0KVURYRVNHX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYRVNHIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXQgICAgICAgPSAiYW5kZWwiLA0KICAgIHNleCAgICAgICAgPSBweF9hbGwoKSwNCiAgICBlZnRlcnNrb2xlID0gcHhfYWxsKCksDQogICAgc3RhdHVzICAgICA9IHB4X2FsbCgpLA0KICAgIHNrb2xlYWFyICAgPSBweF9hbGwoKSwNCiAgICAuY29sX2NvZGUgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQoNClVEWEVTRyA8LSANCiAgVURYRVNHX3JhdyB8PiANCiAgZmlsdGVyKHNrb2xlYWFyID09IG1heChza29sZWFhcikpIHw+IA0KICBtdXRhdGUoZWZ0ZXJza29sZSA9IGVmdGVyc2tvbGUgfD4gZmN0X2lub3JkZXIoKSB8PiBmY3RfcmV2KCksDQogICAgICAgICBzZXggPSBzZXggfD4gZmN0X2lub3JkZXIoKSB8PiBmY3RfcmV2KCkpIHw+IA0KICB1bml0ZShjb21iaSwgdW5pdCwgc2tvbGVhYXIsIHNlcCA9ICItIikNCg0KVURYRVNHIHw+IA0KICBzZWxlY3QoLWNvbWJpKSB8PiANCiAgc3ByZWFkKGVmdGVyc2tvbGUsIHZhbHVlKSB8PiANCiAgc2VsZWN0KHNleCwgc3RhdHVzLCAzOjYpIHw+IA0KICBhcnJhbmdlKHNleCwgZGVzYyhzdGF0dXMpKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgcm93X3NwZWMoMTozLCBib2xkID0gVCkgfD4gDQogIGNvbHVtbl9zcGVjKDMsIGJvbGQgPSBUKSB8PiANCiAgYWRkX2Zvb3Rub3RlKFVEWEVTR1tbMV1dWzFdLCBub3RhdGlvbiA9ICJzeW1ib2wiKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWEVTRyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNjNmYTFmMjAtNzkzMi00YzdhLTg2ZTMtYmY2ZmY1OWRiN2QzIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2Pg0KDQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA0OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWFRLSyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQpgYGB7ciBVRFhUS0t9DQoNClVEWFRLS19yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWFRLSyIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBzdWJqZWN0ICAgICAgPSBweF9hbGwoKSwNCiAgICBncmFkZSAgICAgICAgPSBweF9hbGwoKSwNCiAgICBtdW5pY2lwYWxpdHkgPSBweF9hbGwoKSwNCiAgICB1bml0ICAgICAgICAgPSAiQiIsDQogICAgdGltZSAgICAgICAgID0gcHhfdG9wKCksDQogICAgLmNvbF9jb2RlICAgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhUS0sgPC0gDQogIFVEWFRLS19yYXcgfD4gDQogIHVuaXRlKGNvbWJpLCB1bml0LCB0aW1lLCBzZXAgPSAiICIpIHw+DQogIG11dGF0ZShtdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHkgfD4gZmN0X2lub3JkZXIoKSkgfD4gDQogIHNwcmVhZChzdWJqZWN0LCB2YWx1ZSkNCg0KVURYVEtLIHw+IA0KICBzZWxlY3QoLTMpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICByb3dfc3BlYyhjKDEsIDcpLCBib2xkID0gVCkgfD4gDQogIHBhY2tfcm93cyhpbmRleCA9IHRhYmxlKFVEWFRLS1tbM11dKSkNCg0KDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhUS0siKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzBiM2NlNWQzLTdlOTctNDQzZi05ODFmLWY3ZDEyM2ZjZmI0MCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KDQo8L2RldGFpbHM+DQoNCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA1OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWElTQzExQSIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQpgYGB7ciBVRFhJU0MxMUF9DQoNClVEWElTQzExQV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWElTQzExQSIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBJc2NlZCAgICAgPSBweF9hbGwoKSwNCiAgICBza29sZW9tciAgPSBweF9hbGwoKSwNCiAgICBzdGFydGFhciAgPSBweF90b3AoMSksDQogICAgLmNvbF9jb2RlID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhJU0MxMUEgPC0gDQogIFVEWElTQzExQV9yYXcgfD4gDQogIG11dGF0ZShzdGFydGFhciA9IHN0YXJ0YWFyIHw+IGZjdF9pbm9yZGVyKCksDQogICAgICAgICBza29sZW9tciA9IHNrb2xlb21yIHw+IGZjdF9pbm9yZGVyKCkpIHw+IA0KICBzcHJlYWQoc2tvbGVvbXIsIHZhbHVlKQ0KDQpVRFhJU0MxMUEgfD4gDQogIHNlbGVjdCgtc3RhcnRhYXIpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICBwYWNrX3Jvd3MoaW5kZXggPSB0YWJsZShVRFhJU0MxMUFbWzJdXSkpDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhJU0MxMUEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzE3ZTY5NTI2LTg4ODUtNGE0NS05MzZlLTMzYzYwZGNiYThiNCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJVRFhJU0MxMUwiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IgVURYSVNDMTFMfQ0KDQpVRFhJU0MxMUxfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJVRFhJU0MxMUwiLCBsYW5nID0gbGFuZ3VhZ2UpIHw+IA0KICBzdGF0Z2xfZmV0Y2goDQogICAgYWFyICAgICAgID0gMiwNCiAgICBpc2NlZCAgICAgPSBweF9hbGwoKSwNCiAgICBzdGF0dXMgICAgPSBweF9hbGwoKSwNCiAgICBzdGFydGFhciAgPSBweF90b3AoMyksDQogICAgLmNvbF9jb2RlID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhJU0MxMUwgPC0gDQogIFVEWElTQzExTF9yYXcgfD4gDQogIGZpbHRlcih2YWx1ZSA+IDApIHw+IA0KICBtdXRhdGUoc3RhdHVzID0gc3RhdHVzIHw+IGZjdF9pbm9yZGVyKCkpIHw+IA0KICBzcHJlYWQoc3RhdHVzLCB2YWx1ZSkgfD4gDQogIHVuaXRlKGNvbWJpLCBhYXIsIHN0YXJ0YWFyLCBzZXAgPSAiICIpDQoNClVEWElTQzExTCB8PiANCiAgc2VsZWN0KC0xKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgYWRkX2Zvb3Rub3RlKFVEWElTQzExTFtbMV1dWzFdLCBub3RhdGlvbiA9ICJzeW1ib2wiKQ0KDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhJU0MxMUwiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2U0YjA3NmU4LWY3MDItNDZkOC1iZmVjLWJlZGQ1NjIxYzVkYSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KPC9kZXRhaWxzPg0KDQoNCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA3OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWFRSRkExIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIFVEWFRSRkExfQ0KDQpVRFhUUkZBMV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWFRSRkExIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIGFhciAgICAgICA9IDAsDQogICAgaXNjZWQgICAgID0gcHhfYWxsKCksDQogICAgc3RhdHVzICAgID0gcHhfYWxsKCksDQogICAgZGltX2FhciAgID0gcHhfdG9wKCksDQogICAgLmNvbF9jb2RlID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhUUkZBMSA8LSANCiAgVURYVFJGQTFfcmF3IHw+IA0KICB1bml0ZShjb21iaSwgYWFyLCBkaW1fYWFyLCBzZXAgPSAiICIpIHw+IA0KICBtdXRhdGUoaXNjZWQgPSBpc2NlZCB8PiBmY3RfaW5vcmRlcigpLA0KICAgICAgICAgc3RhdHVzID0gc3RhdHVzIHw+IGZjdF9pbm9yZGVyKCkpDQoNClVEWFRSRkExIHw+IA0KICBzZWxlY3QoLTEpIHw+IA0KICBzcHJlYWQoaXNjZWQsIHZhbHVlKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgYWRkX2Zvb3Rub3RlKFVEWFRSRkExW1sxXV1bMV0sIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWFRSRkExIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS83ZWExNTZkZC01OWIxLTQxZTYtOWExMS05NGZmYzkxNTM4ZDIiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCjwvZGV0YWlscz4NCg0KDQoNCg0KPGhyIHN0eWxlPSJib3JkZXI6MXB4IHJpZGdlIGxpZ2h0Z3JheSI+IDwvaHI+DQo8Y2VudGVyPiA8c3BhbiBzdHlsZT0nY29sb3I6I0QzRDNEMzsgZm9udC1zaXplOjkwJTsnPiBgciBwYXN0ZSh0eHQkdXBkYXRlW2xhbmd1YWdlXSwgZm9ybWF0KFN5cy5EYXRlKCksICIlZC4gJUIgJVkiKSlgIDwvc3Bhbj4gPC9jZW50ZXI+DQoNCg0KDQoNCjxzY3JpcHQ+DQp2YXIgYWNjID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNjb3JkaW9uIik7DQp2YXIgaTsNCg0KZm9yIChpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykgew0KICBhY2NbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIpOw0KICAgIHZhciBwYW5lbCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nOw0KICAgIGlmIChwYW5lbC5zdHlsZS5tYXhIZWlnaHQpIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG51bGw7DQogICAgfSBlbHNlIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IHBhbmVsLnNjcm9sbEhlaWdodCArICJweCI7DQogICAgfSANCiAgfSk7DQp9DQo8L3NjcmlwdD4NCg0KDQoNCg0KDQoNCg==