aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar keshavbhatt <keshavnrj@gmail.com>2021-05-03 16:51:52 +0530
committerLibravatar keshavbhatt <keshavnrj@gmail.com>2021-05-03 16:51:52 +0530
commit144e905baae34c1e889147e2cdc47fb3e04531d2 (patch)
tree1c7683a9f59ea728491939da8f3820928eb48c4e
parentffb449445c97c0e92f520fc1fdb1baae3d43482e (diff)
downloadwhatsie-144e905baae34c1e889147e2cdc47fb3e04531d2.tar.gz
whatsie-144e905baae34c1e889147e2cdc47fb3e04531d2.zip
added falgs icons.
-rw-r--r--src/SunClock.cpp245
-rw-r--r--src/SunClock.hpp126
-rw-r--r--src/automatictheme.cpp116
-rw-r--r--src/automatictheme.h47
-rw-r--r--src/automatictheme.ui110
-rw-r--r--src/icons.qrc250
-rw-r--r--src/icons/flags/ad.pngbin0 -> 421 bytes
-rw-r--r--src/icons/flags/ae.pngbin0 -> 269 bytes
-rw-r--r--src/icons/flags/af.pngbin0 -> 393 bytes
-rw-r--r--src/icons/flags/ag.pngbin0 -> 602 bytes
-rw-r--r--src/icons/flags/ai.pngbin0 -> 633 bytes
-rw-r--r--src/icons/flags/al.pngbin0 -> 370 bytes
-rw-r--r--src/icons/flags/am.pngbin0 -> 211 bytes
-rw-r--r--src/icons/flags/ao.pngbin0 -> 427 bytes
-rw-r--r--src/icons/flags/aq.pngbin0 -> 494 bytes
-rw-r--r--src/icons/flags/ar.pngbin0 -> 259 bytes
-rw-r--r--src/icons/flags/as.pngbin0 -> 582 bytes
-rw-r--r--src/icons/flags/at.pngbin0 -> 207 bytes
-rw-r--r--src/icons/flags/au.pngbin0 -> 721 bytes
-rw-r--r--src/icons/flags/aw.pngbin0 -> 309 bytes
-rw-r--r--src/icons/flags/ax.pngbin0 -> 343 bytes
-rw-r--r--src/icons/flags/az.pngbin0 -> 339 bytes
-rw-r--r--src/icons/flags/ba.pngbin0 -> 561 bytes
-rw-r--r--src/icons/flags/bb.pngbin0 -> 423 bytes
-rw-r--r--src/icons/flags/bd.pngbin0 -> 357 bytes
-rw-r--r--src/icons/flags/be.pngbin0 -> 245 bytes
-rw-r--r--src/icons/flags/bf.pngbin0 -> 277 bytes
-rw-r--r--src/icons/flags/bg.pngbin0 -> 212 bytes
-rw-r--r--src/icons/flags/bh.pngbin0 -> 387 bytes
-rw-r--r--src/icons/flags/bi.pngbin0 -> 691 bytes
-rw-r--r--src/icons/flags/bj.pngbin0 -> 230 bytes
-rw-r--r--src/icons/flags/bl.pngbin0 -> 484 bytes
-rw-r--r--src/icons/flags/bm.pngbin0 -> 612 bytes
-rw-r--r--src/icons/flags/bn.pngbin0 -> 663 bytes
-rw-r--r--src/icons/flags/bo.pngbin0 -> 211 bytes
-rw-r--r--src/icons/flags/bq.pngbin0 -> 485 bytes
-rw-r--r--src/icons/flags/br.pngbin0 -> 470 bytes
-rw-r--r--src/icons/flags/bs.pngbin0 -> 357 bytes
-rw-r--r--src/icons/flags/bt.pngbin0 -> 448 bytes
-rw-r--r--src/icons/flags/bv.pngbin0 -> 343 bytes
-rw-r--r--src/icons/flags/bw.pngbin0 -> 218 bytes
-rw-r--r--src/icons/flags/by.pngbin0 -> 488 bytes
-rw-r--r--src/icons/flags/bz.pngbin0 -> 437 bytes
-rw-r--r--src/icons/flags/ca.pngbin0 -> 380 bytes
-rw-r--r--src/icons/flags/cc.pngbin0 -> 440 bytes
-rw-r--r--src/icons/flags/cd.pngbin0 -> 557 bytes
-rw-r--r--src/icons/flags/cf.pngbin0 -> 380 bytes
-rw-r--r--src/icons/flags/cg.pngbin0 -> 331 bytes
-rw-r--r--src/icons/flags/ch.pngbin0 -> 336 bytes
-rw-r--r--src/icons/flags/ci.pngbin0 -> 246 bytes
-rw-r--r--src/icons/flags/ck.pngbin0 -> 709 bytes
-rw-r--r--src/icons/flags/cl.pngbin0 -> 348 bytes
-rw-r--r--src/icons/flags/cm.pngbin0 -> 337 bytes
-rw-r--r--src/icons/flags/cn.pngbin0 -> 391 bytes
-rw-r--r--src/icons/flags/co.pngbin0 -> 212 bytes
-rw-r--r--src/icons/flags/cr.pngbin0 -> 234 bytes
-rw-r--r--src/icons/flags/cu.pngbin0 -> 461 bytes
-rw-r--r--src/icons/flags/cv.pngbin0 -> 370 bytes
-rw-r--r--src/icons/flags/cw.pngbin0 -> 326 bytes
-rw-r--r--src/icons/flags/cx.pngbin0 -> 511 bytes
-rw-r--r--src/icons/flags/cy.pngbin0 -> 434 bytes
-rw-r--r--src/icons/flags/cz.pngbin0 -> 410 bytes
-rw-r--r--src/icons/flags/de.pngbin0 -> 211 bytes
-rw-r--r--src/icons/flags/dj.pngbin0 -> 404 bytes
-rw-r--r--src/icons/flags/dk.pngbin0 -> 333 bytes
-rw-r--r--src/icons/flags/dm.pngbin0 -> 502 bytes
-rw-r--r--src/icons/flags/do.pngbin0 -> 382 bytes
-rw-r--r--src/icons/flags/dz.pngbin0 -> 362 bytes
-rw-r--r--src/icons/flags/ec.pngbin0 -> 398 bytes
-rw-r--r--src/icons/flags/ee.pngbin0 -> 211 bytes
-rw-r--r--src/icons/flags/eg.pngbin0 -> 299 bytes
-rw-r--r--src/icons/flags/eh.pngbin0 -> 432 bytes
-rw-r--r--src/icons/flags/er.pngbin0 -> 452 bytes
-rw-r--r--src/icons/flags/es.pngbin0 -> 207 bytes
-rw-r--r--src/icons/flags/et.pngbin0 -> 441 bytes
-rw-r--r--src/icons/flags/fi.pngbin0 -> 272 bytes
-rw-r--r--src/icons/flags/fj.pngbin0 -> 632 bytes
-rw-r--r--src/icons/flags/fk.pngbin0 -> 679 bytes
-rw-r--r--src/icons/flags/fm.pngbin0 -> 346 bytes
-rw-r--r--src/icons/flags/fo.pngbin0 -> 343 bytes
-rw-r--r--src/icons/flags/fr.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/ga.pngbin0 -> 215 bytes
-rw-r--r--src/icons/flags/gb.pngbin0 -> 919 bytes
-rw-r--r--src/icons/flags/gd.pngbin0 -> 667 bytes
-rw-r--r--src/icons/flags/ge.pngbin0 -> 555 bytes
-rw-r--r--src/icons/flags/gf.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/gg.pngbin0 -> 387 bytes
-rw-r--r--src/icons/flags/gh.pngbin0 -> 352 bytes
-rw-r--r--src/icons/flags/gi.pngbin0 -> 427 bytes
-rw-r--r--src/icons/flags/gl.pngbin0 -> 376 bytes
-rw-r--r--src/icons/flags/gm.pngbin0 -> 227 bytes
-rw-r--r--src/icons/flags/gn.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/gp.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/gq.pngbin0 -> 445 bytes
-rw-r--r--src/icons/flags/gr.pngbin0 -> 363 bytes
-rw-r--r--src/icons/flags/gs.pngbin0 -> 998 bytes
-rw-r--r--src/icons/flags/gt.pngbin0 -> 397 bytes
-rw-r--r--src/icons/flags/gu.pngbin0 -> 455 bytes
-rw-r--r--src/icons/flags/gw.pngbin0 -> 333 bytes
-rw-r--r--src/icons/flags/gy.pngbin0 -> 673 bytes
-rw-r--r--src/icons/flags/hk.pngbin0 -> 397 bytes
-rw-r--r--src/icons/flags/hm.pngbin0 -> 721 bytes
-rw-r--r--src/icons/flags/hn.pngbin0 -> 325 bytes
-rw-r--r--src/icons/flags/hr.pngbin0 -> 424 bytes
-rw-r--r--src/icons/flags/ht.pngbin0 -> 333 bytes
-rw-r--r--src/icons/flags/hu.pngbin0 -> 213 bytes
-rw-r--r--src/icons/flags/id.pngbin0 -> 193 bytes
-rw-r--r--src/icons/flags/ie.pngbin0 -> 240 bytes
-rw-r--r--src/icons/flags/il.pngbin0 -> 336 bytes
-rw-r--r--src/icons/flags/im.pngbin0 -> 393 bytes
-rw-r--r--src/icons/flags/in.pngbin0 -> 312 bytes
-rw-r--r--src/icons/flags/io.pngbin0 -> 1237 bytes
-rw-r--r--src/icons/flags/iq.pngbin0 -> 371 bytes
-rw-r--r--src/icons/flags/ir.pngbin0 -> 574 bytes
-rw-r--r--src/icons/flags/is.pngbin0 -> 329 bytes
-rw-r--r--src/icons/flags/it.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/je.pngbin0 -> 463 bytes
-rw-r--r--src/icons/flags/jm.pngbin0 -> 491 bytes
-rw-r--r--src/icons/flags/jo.pngbin0 -> 415 bytes
-rw-r--r--src/icons/flags/jp.pngbin0 -> 377 bytes
-rw-r--r--src/icons/flags/ke.pngbin0 -> 498 bytes
-rw-r--r--src/icons/flags/kg.pngbin0 -> 385 bytes
-rw-r--r--src/icons/flags/kh.pngbin0 -> 311 bytes
-rw-r--r--src/icons/flags/ki.pngbin0 -> 871 bytes
-rw-r--r--src/icons/flags/km.pngbin0 -> 489 bytes
-rw-r--r--src/icons/flags/kn.pngbin0 -> 603 bytes
-rw-r--r--src/icons/flags/kp.pngbin0 -> 377 bytes
-rw-r--r--src/icons/flags/kr.pngbin0 -> 536 bytes
-rw-r--r--src/icons/flags/kw.pngbin0 -> 350 bytes
-rw-r--r--src/icons/flags/ky.pngbin0 -> 707 bytes
-rw-r--r--src/icons/flags/kz.pngbin0 -> 427 bytes
-rw-r--r--src/icons/flags/la.pngbin0 -> 295 bytes
-rw-r--r--src/icons/flags/lb.pngbin0 -> 276 bytes
-rw-r--r--src/icons/flags/lc.pngbin0 -> 336 bytes
-rw-r--r--src/icons/flags/li.pngbin0 -> 309 bytes
-rw-r--r--src/icons/flags/lk.pngbin0 -> 614 bytes
-rw-r--r--src/icons/flags/lr.pngbin0 -> 349 bytes
-rw-r--r--src/icons/flags/ls.pngbin0 -> 277 bytes
-rw-r--r--src/icons/flags/lt.pngbin0 -> 212 bytes
-rw-r--r--src/icons/flags/lu.pngbin0 -> 212 bytes
-rw-r--r--src/icons/flags/lv.pngbin0 -> 207 bytes
-rw-r--r--src/icons/flags/ly.pngbin0 -> 268 bytes
-rw-r--r--src/icons/flags/ma.pngbin0 -> 386 bytes
-rw-r--r--src/icons/flags/mc.pngbin0 -> 217 bytes
-rw-r--r--src/icons/flags/md.pngbin0 -> 364 bytes
-rw-r--r--src/icons/flags/me.pngbin0 -> 390 bytes
-rw-r--r--src/icons/flags/mf.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/mg.pngbin0 -> 231 bytes
-rw-r--r--src/icons/flags/mh.pngbin0 -> 691 bytes
-rw-r--r--src/icons/flags/mk.pngbin0 -> 989 bytes
-rw-r--r--src/icons/flags/ml.pngbin0 -> 245 bytes
-rw-r--r--src/icons/flags/mm.pngbin0 -> 487 bytes
-rw-r--r--src/icons/flags/mn.pngbin0 -> 354 bytes
-rw-r--r--src/icons/flags/mo.pngbin0 -> 450 bytes
-rw-r--r--src/icons/flags/mp.pngbin0 -> 441 bytes
-rw-r--r--src/icons/flags/mq.pngbin0 -> 558 bytes
-rw-r--r--src/icons/flags/mr.pngbin0 -> 431 bytes
-rw-r--r--src/icons/flags/ms.pngbin0 -> 633 bytes
-rw-r--r--src/icons/flags/mt.pngbin0 -> 245 bytes
-rw-r--r--src/icons/flags/mu.pngbin0 -> 220 bytes
-rw-r--r--src/icons/flags/mv.pngbin0 -> 376 bytes
-rw-r--r--src/icons/flags/mw.pngbin0 -> 268 bytes
-rw-r--r--src/icons/flags/mx.pngbin0 -> 375 bytes
-rw-r--r--src/icons/flags/my.pngbin0 -> 395 bytes
-rw-r--r--src/icons/flags/mz.pngbin0 -> 509 bytes
-rw-r--r--src/icons/flags/na.pngbin0 -> 637 bytes
-rw-r--r--src/icons/flags/nc.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/ne.pngbin0 -> 262 bytes
-rw-r--r--src/icons/flags/nf.pngbin0 -> 399 bytes
-rw-r--r--src/icons/flags/ng.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/ni.pngbin0 -> 297 bytes
-rw-r--r--src/icons/flags/nl.pngbin0 -> 211 bytes
-rw-r--r--src/icons/flags/no.pngbin0 -> 343 bytes
-rw-r--r--src/icons/flags/np.pngbin0 -> 609 bytes
-rw-r--r--src/icons/flags/nr.pngbin0 -> 313 bytes
-rw-r--r--src/icons/flags/nu.pngbin0 -> 529 bytes
-rw-r--r--src/icons/flags/nz.pngbin0 -> 628 bytes
-rw-r--r--src/icons/flags/om.pngbin0 -> 301 bytes
-rw-r--r--src/icons/flags/pa.pngbin0 -> 396 bytes
-rw-r--r--src/icons/flags/pe.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/pf.pngbin0 -> 293 bytes
-rw-r--r--src/icons/flags/pg.pngbin0 -> 554 bytes
-rw-r--r--src/icons/flags/ph.pngbin0 -> 459 bytes
-rw-r--r--src/icons/flags/pk.pngbin0 -> 484 bytes
-rw-r--r--src/icons/flags/pl.pngbin0 -> 194 bytes
-rw-r--r--src/icons/flags/pm.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/pn.pngbin0 -> 637 bytes
-rw-r--r--src/icons/flags/pr.pngbin0 -> 539 bytes
-rw-r--r--src/icons/flags/ps.pngbin0 -> 374 bytes
-rw-r--r--src/icons/flags/pt.pngbin0 -> 406 bytes
-rw-r--r--src/icons/flags/pw.pngbin0 -> 372 bytes
-rw-r--r--src/icons/flags/py.pngbin0 -> 308 bytes
-rw-r--r--src/icons/flags/qa.pngbin0 -> 376 bytes
-rw-r--r--src/icons/flags/re.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/ro.pngbin0 -> 246 bytes
-rw-r--r--src/icons/flags/rs.pngbin0 -> 422 bytes
-rw-r--r--src/icons/flags/ru.pngbin0 -> 212 bytes
-rw-r--r--src/icons/flags/rw.pngbin0 -> 315 bytes
-rw-r--r--src/icons/flags/sa.pngbin0 -> 457 bytes
-rw-r--r--src/icons/flags/sb.pngbin0 -> 501 bytes
-rw-r--r--src/icons/flags/sc.pngbin0 -> 675 bytes
-rw-r--r--src/icons/flags/sd.pngbin0 -> 404 bytes
-rw-r--r--src/icons/flags/se.pngbin0 -> 331 bytes
-rw-r--r--src/icons/flags/sg.pngbin0 -> 328 bytes
-rw-r--r--src/icons/flags/sh.pngbin0 -> 919 bytes
-rw-r--r--src/icons/flags/si.pngbin0 -> 323 bytes
-rw-r--r--src/icons/flags/sj.pngbin0 -> 343 bytes
-rw-r--r--src/icons/flags/sk.pngbin0 -> 410 bytes
-rw-r--r--src/icons/flags/sl.pngbin0 -> 217 bytes
-rw-r--r--src/icons/flags/sm.pngbin0 -> 498 bytes
-rw-r--r--src/icons/flags/sn.pngbin0 -> 363 bytes
-rw-r--r--src/icons/flags/so.pngbin0 -> 391 bytes
-rw-r--r--src/icons/flags/sr.pngbin0 -> 312 bytes
-rw-r--r--src/icons/flags/ss.pngbin0 -> 435 bytes
-rw-r--r--src/icons/flags/st.pngbin0 -> 452 bytes
-rw-r--r--src/icons/flags/sv.pngbin0 -> 300 bytes
-rw-r--r--src/icons/flags/sx.pngbin0 -> 474 bytes
-rw-r--r--src/icons/flags/sy.pngbin0 -> 342 bytes
-rw-r--r--src/icons/flags/sz.pngbin0 -> 600 bytes
-rw-r--r--src/icons/flags/tc.pngbin0 -> 641 bytes
-rw-r--r--src/icons/flags/td.pngbin0 -> 246 bytes
-rw-r--r--src/icons/flags/tf.pngbin0 -> 565 bytes
-rw-r--r--src/icons/flags/tg.pngbin0 -> 404 bytes
-rw-r--r--src/icons/flags/th.pngbin0 -> 234 bytes
-rw-r--r--src/icons/flags/tj.pngbin0 -> 311 bytes
-rw-r--r--src/icons/flags/tk.pngbin0 -> 554 bytes
-rw-r--r--src/icons/flags/tl.pngbin0 -> 489 bytes
-rw-r--r--src/icons/flags/tm.pngbin0 -> 534 bytes
-rw-r--r--src/icons/flags/tn.pngbin0 -> 467 bytes
-rw-r--r--src/icons/flags/to.pngbin0 -> 323 bytes
-rw-r--r--src/icons/flags/tr.pngbin0 -> 389 bytes
-rw-r--r--src/icons/flags/tt.pngbin0 -> 636 bytes
-rw-r--r--src/icons/flags/tv.pngbin0 -> 786 bytes
-rw-r--r--src/icons/flags/tw.pngbin0 -> 339 bytes
-rw-r--r--src/icons/flags/tz.pngbin0 -> 466 bytes
-rw-r--r--src/icons/flags/ua.pngbin0 -> 193 bytes
-rw-r--r--src/icons/flags/ug.pngbin0 -> 386 bytes
-rw-r--r--src/icons/flags/um.pngbin0 -> 486 bytes
-rw-r--r--src/icons/flags/us.pngbin0 -> 486 bytes
-rw-r--r--src/icons/flags/uy.pngbin0 -> 392 bytes
-rw-r--r--src/icons/flags/uz.pngbin0 -> 349 bytes
-rw-r--r--src/icons/flags/va.pngbin0 -> 355 bytes
-rw-r--r--src/icons/flags/vc.pngbin0 -> 412 bytes
-rw-r--r--src/icons/flags/ve.pngbin0 -> 345 bytes
-rw-r--r--src/icons/flags/vg.pngbin0 -> 689 bytes
-rw-r--r--src/icons/flags/vi.pngbin0 -> 451 bytes
-rw-r--r--src/icons/flags/vn.pngbin0 -> 385 bytes
-rw-r--r--src/icons/flags/vu.pngbin0 -> 551 bytes
-rw-r--r--src/icons/flags/wf.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/ws.pngbin0 -> 333 bytes
-rw-r--r--src/icons/flags/xx.pngbin0 -> 327 bytes
-rw-r--r--src/icons/flags/ye.pngbin0 -> 211 bytes
-rw-r--r--src/icons/flags/yt.pngbin0 -> 241 bytes
-rw-r--r--src/icons/flags/za.pngbin0 -> 506 bytes
-rw-r--r--src/icons/flags/zm.pngbin0 -> 337 bytes
-rw-r--r--src/icons/flags/zw.pngbin0 -> 512 bytes
256 files changed, 894 insertions, 0 deletions
diff --git a/src/SunClock.cpp b/src/SunClock.cpp
new file mode 100644
index 0000000..ead4d54
--- /dev/null
+++ b/src/SunClock.cpp
@@ -0,0 +1,245 @@
+#include <cmath>
+#include <SunClock.hpp>
+#include <stdexcept>
+
+inline double rad(double degrees) {
+ static const double degToRad = 4.0 * atan(1.0) / 180.0;
+ return degrees * degToRad;
+}
+
+inline double deg(double radians) {
+ static const double radToDeg = 180.0 / (4.0 * atan(1.0));
+ return radians * radToDeg;
+}
+
+Sunclock::Sunclock(double const &latitude_, double const &longitude_, double const &tz_offset_)
+ : latitude(latitude_), longitude(longitude_), tz_offset(tz_offset_) {}
+
+double Sunclock::irradiance() { return irradiance(time(0)); }
+
+double Sunclock::irradiance(time_t when) {
+ when = when + (time_t)(tz_offset * 60 * 60);
+ struct tm *t = gmtime(&when);
+ double _time_of_day = time_of_day(when);
+ double _julian_day = julian_day(t, _time_of_day, tz_offset);
+ double _julian_century = julian_century(_julian_day);
+ double _mean_obliq_ecliptic = mean_obliq_ecliptic(_julian_century);
+ double _mean_long_sun = mean_long_sun(_julian_century);
+ double _mean_anom_sun = mean_anom_sun(_julian_century);
+ double _sun_eq_of_centre = sun_eq_of_centre(_mean_anom_sun, _julian_century);
+ double _sun_true_long = sun_true_long(_mean_long_sun, _sun_eq_of_centre);
+ double _obliq_corr = obliq_corr(_mean_obliq_ecliptic, _julian_century);
+ double _sun_app_long = sun_app_long(_sun_true_long, _julian_century);
+ double _eccent_earth_orbit = eccent_earth_orbit(_julian_century);
+ double _var_y = var_y(_obliq_corr);
+ double _eq_of_time = eq_of_time(_var_y, _mean_long_sun, _eccent_earth_orbit, _mean_anom_sun);
+ double _declination = declination(_obliq_corr, _sun_app_long);
+ double _true_solar_time = true_solar_time(_time_of_day, _eq_of_time);
+ double _hour_angle = hour_angle(_true_solar_time);
+ double _solar_zenith = solar_zenith(_declination, _hour_angle);
+ return std::cos(rad(_solar_zenith));
+}
+
+time_t Sunclock::sunrise() { return sunrise(time(0)); }
+
+time_t Sunclock::sunrise(time_t date) {
+ date = date + (time_t)(tz_offset * 60 * 60);
+ struct tm *t = gmtime(&date);
+ double _time_of_day = time_of_day(date);
+ double _julian_day = julian_day(t, _time_of_day, tz_offset);
+ double _julian_century = julian_century(_julian_day);
+ double _mean_obliq_ecliptic = mean_obliq_ecliptic(_julian_century);
+ double _mean_long_sun = mean_long_sun(_julian_century);
+ double _mean_anom_sun = mean_anom_sun(_julian_century);
+ double _sun_eq_of_centre = sun_eq_of_centre(_mean_anom_sun, _julian_century);
+ double _sun_true_long = sun_true_long(_mean_long_sun, _sun_eq_of_centre);
+ double _obliq_corr = obliq_corr(_mean_obliq_ecliptic, _julian_century);
+ double _sun_app_long = sun_app_long(_sun_true_long, _julian_century);
+ double _eccent_earth_orbit = eccent_earth_orbit(_julian_century);
+ double _var_y = var_y(_obliq_corr);
+ double _eq_of_time = eq_of_time(_var_y, _mean_long_sun, _eccent_earth_orbit, _mean_anom_sun);
+ double _declination = declination(_obliq_corr, _sun_app_long);
+ double _hour_angle_sunrise = hour_angle_sunrise(_declination);
+
+ double noon_decimal_day = (720 - 4 * longitude - _eq_of_time + tz_offset * 60) / 1440;
+ double decimal_day = noon_decimal_day - _hour_angle_sunrise * 4 / 1440;
+ return time_from_decimal_day(date, decimal_day) - (time_t)(tz_offset * 60 * 60);
+}
+
+time_t Sunclock::solar_noon() { return solar_noon(time(0)); }
+
+time_t Sunclock::solar_noon(time_t date) {
+ date = date + (time_t)(tz_offset * 60 * 60);
+ struct tm *t = gmtime(&date);
+ double _time_of_day = time_of_day(date);
+ double _julian_day = julian_day(t, _time_of_day, tz_offset);
+ double _julian_century = julian_century(_julian_day);
+ double _mean_obliq_ecliptic = mean_obliq_ecliptic(_julian_century);
+ double _mean_long_sun = mean_long_sun(_julian_century);
+ double _mean_anom_sun = mean_anom_sun(_julian_century);
+ double _obliq_corr = obliq_corr(_mean_obliq_ecliptic, _julian_century);
+ double _eccent_earth_orbit = eccent_earth_orbit(_julian_century);
+ double _var_y = var_y(_obliq_corr);
+ double _eq_of_time = eq_of_time(_var_y, _mean_long_sun, _eccent_earth_orbit, _mean_anom_sun);
+
+ double decimal_day = (720 - 4 * longitude - _eq_of_time + tz_offset * 60) / 1440;
+ return time_from_decimal_day(date, decimal_day) - (time_t)(tz_offset * 60 * 60);
+}
+
+time_t Sunclock::sunset() { return sunset(time(0)); }
+
+time_t Sunclock::sunset(time_t date) {
+ date = date + (time_t)(tz_offset * 60 * 60);
+ struct tm *t = gmtime(&date);
+ double _time_of_day = time_of_day(date);
+ double _julian_day = julian_day(t, _time_of_day, tz_offset);
+ double _julian_century = julian_century(_julian_day);
+ double _mean_obliq_ecliptic = mean_obliq_ecliptic(_julian_century);
+ double _mean_long_sun = mean_long_sun(_julian_century);
+ double _mean_anom_sun = mean_anom_sun(_julian_century);
+ double _sun_eq_of_centre = sun_eq_of_centre(_mean_anom_sun, _julian_century);
+ double _sun_true_long = sun_true_long(_mean_long_sun, _sun_eq_of_centre);
+ double _obliq_corr = obliq_corr(_mean_obliq_ecliptic, _julian_century);
+ double _sun_app_long = sun_app_long(_sun_true_long, _julian_century);
+ double _eccent_earth_orbit = eccent_earth_orbit(_julian_century);
+ double _var_y = var_y(_obliq_corr);
+ double _eq_of_time = eq_of_time(_var_y, _mean_long_sun, _eccent_earth_orbit, _mean_anom_sun);
+ double _declination = declination(_obliq_corr, _sun_app_long);
+ double _hour_angle_sunrise = hour_angle_sunrise(_declination);
+
+ double noon_decimal_day = (720 - 4 * longitude - _eq_of_time + tz_offset * 60) / 1440;
+ double decimal_day = noon_decimal_day + _hour_angle_sunrise * 4 / 1440;
+ return time_from_decimal_day(date, decimal_day) - (time_t)(tz_offset * 60 * 60);
+}
+
+double Sunclock::time_of_day(time_t date) {
+ struct tm *t = gmtime(&date);
+ return (t->tm_hour + t->tm_min / 60.0 + t->tm_sec / 3600.0) / 24.0;
+}
+
+time_t Sunclock::time_from_decimal_day(time_t date, double decimal_day) {
+ struct std::tm epoch;
+ epoch.tm_isdst = 0;
+ epoch.tm_sec = epoch.tm_min = epoch.tm_hour = epoch.tm_mon = 0;
+ epoch.tm_mday = 1;
+ epoch.tm_year = 70;
+ time_t local_tz_offset = mktime(&epoch);
+
+ struct tm *dt = gmtime(&date);
+ struct tm t = {};
+ t.tm_year = dt->tm_year;
+ t.tm_mon = dt->tm_mon;
+ t.tm_mday = dt->tm_mday;
+ double hours = 24.0 * decimal_day;
+ t.tm_hour = int(hours);
+ double minutes = (hours - t.tm_hour) * 60;
+ t.tm_min = int(minutes);
+ double seconds = (minutes - t.tm_sec) * 60;
+ t.tm_sec = int(seconds) % 60;
+ return mktime(&t) - local_tz_offset;
+}
+
+int Sunclock::days_since_1900(struct tm *t) {
+ int year = t->tm_year;
+ if (year < 0 || year > 199) {
+ throw std::invalid_argument("days_since_1900 - Date must be between 1900 and 2099");
+ }
+ int month = t->tm_mon + 1;
+ int days = t->tm_mday;
+
+ if (month < 3) {
+ month += 12;
+ year--;
+ }
+ int yearDays = (int)(year * 365.25);
+ int monthDays = (int)((month + 1) * 30.61);
+
+ return (yearDays + monthDays + days - 63);
+}
+
+double Sunclock::julian_day(struct tm *t, double const &time_of_day, double const &tz_offset) {
+ return days_since_1900(t) + 2415018.5 + time_of_day - tz_offset / 24;
+}
+
+double Sunclock::julian_century(double _julian_day) { return (_julian_day - 2451545.0) / 36525.0; }
+
+double Sunclock::mean_long_sun(double _julian_century) {
+ return (280.46646 + fmod(_julian_century * (36000.76983 + _julian_century * 0.0003032), 360));
+}
+
+double Sunclock::mean_anom_sun(double _julian_century) {
+ return 357.52911 + _julian_century * (35999.05029 - 0.0001537 * _julian_century);
+}
+
+double Sunclock::sun_eq_of_centre(double _mean_anom_sun, double _julian_century) {
+ return sin(rad(_mean_anom_sun))
+ * (1.914602 - _julian_century * (0.004817 + 0.000014 * _julian_century))
+ + sin(rad(2 * _mean_anom_sun)) * (0.019993 - 0.000101 * _julian_century)
+ + sin(rad(3 * _mean_anom_sun)) * 0.000289;
+}
+
+double Sunclock::sun_true_long(double _mean_long_sun, double _sun_eq_of_centre) {
+ return _mean_long_sun + _sun_eq_of_centre;
+}
+
+double Sunclock::eccent_earth_orbit(double _julian_century) {
+ return 0.016708634 - _julian_century * (0.000042037 + 0.0001537 * _julian_century);
+}
+
+double Sunclock::var_y(double _obliq_corr) {
+ return tan(rad(_obliq_corr / 2)) * tan(rad(_obliq_corr / 2));
+}
+
+double Sunclock::mean_obliq_ecliptic(double _julian_century) {
+ return (23
+ + (26
+ + ((21.448
+ - _julian_century
+ * (46.815 + _julian_century * (0.00059 - _julian_century * 0.001813))))
+ / 60)
+ / 60);
+}
+
+double Sunclock::obliq_corr(double _mean_obliq_ecliptic, double _julian_century) {
+ return _mean_obliq_ecliptic + 0.00256 * cos(deg(125.04 - 1934.136 * _julian_century));
+}
+
+double Sunclock::sun_app_long(double _sun_true_long, double _julian_century) {
+ return (_sun_true_long - 0.00569 - 0.00478 * sin(deg(125.04 - 1934.136 * _julian_century)));
+}
+
+double Sunclock::declination(double _obliq_corr, double _sun_app_long) {
+ return deg(asin(sin(rad(_obliq_corr)) * sin(rad(_sun_app_long))));
+}
+
+double Sunclock::eq_of_time(double _var_y, double _mean_long_sun, double _eccent_earth_orbit,
+ double _mean_anom_sun) {
+ return 4
+ * deg(_var_y * sin(2 * rad(_mean_long_sun))
+ - 2 * _eccent_earth_orbit * sin(rad(_mean_anom_sun))
+ + 4 * _eccent_earth_orbit * _var_y * sin(rad(_mean_anom_sun))
+ * cos(2 * rad(_mean_long_sun))
+ - 0.5 * _var_y * _var_y * sin(4 * rad(_mean_long_sun))
+ - 1.25 * _eccent_earth_orbit * _eccent_earth_orbit * sin(2 * rad(_mean_anom_sun)));
+}
+
+double Sunclock::true_solar_time(double _time_of_day, double _eq_of_time) {
+ return fmod((_time_of_day * 1440 + _eq_of_time + 4 * longitude - 60 * tz_offset), 1440);
+}
+
+double Sunclock::hour_angle(double _true_solar_time) {
+ return (_true_solar_time / 4 < 0 ? _true_solar_time / 4 + 180 : _true_solar_time / 4 - 180);
+}
+
+double Sunclock::hour_angle_sunrise(double _declination) {
+ return deg(acos(cos(rad(90.833)) / (cos(rad(latitude)) * cos(rad(_declination)))
+ - tan(rad(latitude)) * tan(rad(_declination))));
+}
+
+double Sunclock::solar_zenith(double _declination, double _hour_angle) {
+ return deg(acos(sin(rad(latitude)) * sin(rad(_declination))
+ + cos(rad(latitude)) * cos(rad(_declination)) * cos(rad(_hour_angle))));
+}
+
+double Sunclock::solar_elevation(double _solar_zenith) { return 90 - _solar_zenith; }
+
diff --git a/src/SunClock.hpp b/src/SunClock.hpp
new file mode 100644
index 0000000..4cfad57
--- /dev/null
+++ b/src/SunClock.hpp
@@ -0,0 +1,126 @@
+#ifndef DAYLIGHT_SUNCLOCK_HPP
+#define DAYLIGHT_SUNCLOCK_HPP
+
+#include <ctime>
+
+class Sunclock {
+public:
+ Sunclock(double const &latitude_, double const &longitude_, double const &tz_offset_ = 0);
+
+ /**
+ * \overload double Sunclock::irradiance(time_t when)
+ */
+ double irradiance();
+
+ /**
+ * Specifically, we calculate Direct Normal Irradiance
+ * That is we do not consider atmospheric components like cloud cover,
+ * moisture content etc.
+ *
+ * @param when
+ * @return a value representing irradiance (power per unit area)
+ */
+ double irradiance(time_t when);
+
+ /**
+ * \overload time_t Sunclock::sunrise(time_t date)
+ */
+ time_t sunrise();
+
+ /**
+ * Returns sunrise time for given date
+ *
+ * @param date only date is considered
+ * @return sunrise time
+ */
+ time_t sunrise(time_t date);
+
+ /**
+ * \overload time_t Sunclock::solar_noon(time_t date)
+ */
+ time_t solar_noon();
+
+ /**
+ * Returns solar_noon time for given date
+ *
+ * @param date only date is considered
+ * @return solar_noon time
+ */
+ time_t solar_noon(time_t date);
+
+ /**
+ * \overload time_t Sunclock::sunset(time_t date)
+ */
+ time_t sunset();
+
+ /**
+ * Returns sunset time for given date
+ *
+ * @param date only date is considered
+ * @return sunset time
+ */
+ time_t sunset(time_t date);
+
+private:
+ // in decimal degrees, east is positive
+ double const latitude;
+
+ // in decimal degrees, north is positive
+ double const longitude;
+
+ // in hours, east is positive, i.e. IST (+05:30) is 5.5
+ double const tz_offset;
+
+ /**
+ * @param date
+ * @return percentage past midnight, i.e. noon is 0.5
+ */
+ double time_of_day(time_t date);
+
+ static int days_since_1900(struct tm *t);
+
+ /**
+ * @param date
+ * @param decimal_day decimal between 0.0 and 1.0, e.g. noon = 0.5
+ * @return time_t with date and time set accordingly
+ */
+ static time_t time_from_decimal_day(time_t date, double decimal_day);
+
+ /**
+ * Get day count since Monday, January 1, 4713 BC
+ * https://en.wikipedia.org/wiki/Julian_day
+ *
+ * @param t
+ * @param time_of_day percentage past midnight, i.e. noon is 0.5
+ * @param tz_offset in hours, east is positive, i.e. IST (+05:30) is 5.5
+ * @return julian day
+ */
+ static double julian_day(struct tm *t, double const &time_of_day, double const &tz_offset);
+
+ /**
+ * Extract information in a suitable format from a time_t object.
+ */
+ void prepare_time(time_t const &when, struct tm *ptm);
+
+ double julian_century(double _julian_day);
+ double mean_long_sun(double _julian_century);
+ double mean_anom_sun(double _julian_century);
+ double sun_eq_of_centre(double _mean_anom_sun, double _julian_century);
+ double eccent_earth_orbit(double _julian_century);
+ double var_y(double _obliq_corr);
+ double mean_obliq_ecliptic(double _julian_century);
+ double sun_true_long(double _mean_long_sun, double _sun_eq_of_centre);
+ double obliq_corr(double _mean_obliq_ecliptic, double _julian_century);
+ double sun_app_long(double _sun_true_long, double _julian_century);
+ double declination(double _obliq_corr, double _sun_app_long);
+ double eq_of_time(double _var_y, double _mean_long_sun, double _eccent_earth_orbit,
+ double _mean_anom_sun);
+ double true_solar_time(double _time_of_day, double _eq_of_time);
+ double hour_angle(double _true_solar_time);
+ double hour_angle_sunrise(double _declination);
+ double solar_zenith(double _declination, double _hour_angle);
+ double solar_elevation(double _solar_zenith);
+};
+
+#endif
+
diff --git a/src/automatictheme.cpp b/src/automatictheme.cpp
new file mode 100644
index 0000000..b538244
--- /dev/null
+++ b/src/automatictheme.cpp
@@ -0,0 +1,116 @@
+#include "automatictheme.h"
+#include "ui_automatictheme.h"
+
+#include "SunClock.hpp"
+#include <QMessageBox>
+
+AutomaticTheme::AutomaticTheme(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::AutomaticTheme)
+{
+ ui->setupUi(this);
+ ui->refresh->setEnabled(false);
+
+ sunrise.setSecsSinceEpoch(settings.value("sunrise").toLongLong());
+ sunset.setSecsSinceEpoch(settings.value("sunset").toLongLong());
+
+ ui->sunrise->setTime(sunrise.time());
+ ui->sunset->setTime(sunset.time());
+
+ QTimeZone zone = QTimeZone::systemTimeZone();
+ QDateTime dt = QDateTime::currentDateTime();
+
+ if(zone.isValid()){
+ hour_offset = (double)zone.standardTimeOffset(dt)/(double)3600;
+ }else{
+ settings.setValue("automaticTheme",false);
+ QMessageBox::critical(this,"Error","Unable to get system TimeZone information.\n\nAutomatic theme switcher will not work.");
+ return;
+ }
+
+ gPosInfoSrc = QGeoPositionInfoSource::createDefaultSource(this);
+
+ if (gPosInfoSrc) // sudo apt install geoclue-2.0
+ {
+ ui->refresh->setEnabled(true);
+ connect(gPosInfoSrc,&QGeoPositionInfoSource::positionUpdated,[=](const QGeoPositionInfo &update){
+ QGeoCoordinate cor = update.coordinate();
+ if(cor.isValid())
+ {
+ this->lon = cor.longitude();
+ this->lat = cor.latitude();
+ ui->refresh->setEnabled(true);
+ gPosInfoSrc->stopUpdates();
+ }else{
+ ui->refresh->setEnabled(false);
+ }
+ });
+ connect(gPosInfoSrc,&QGeoPositionInfoSource::updateTimeout,[=](){
+ if(!settings.value("sunrise").isValid() || !settings.value("sunset").isValid())
+ {
+ if(ui->refresh->isEnabled())
+ ui->refresh->click();
+ }
+ });
+ gPosInfoSrc->startUpdates();
+ }else{
+ ui->refresh->setEnabled(false);
+ settings.setValue("automaticTheme",false);
+ QMessageBox::critical(this,"Error","Unable to initialize QGeoPositionInfoSource.\n\nAutomatic theme switcher will not work."
+ "\n\nPlease fill the sunset and sunrise time manually.");
+ }
+}
+
+AutomaticTheme::~AutomaticTheme()
+{
+ gPosInfoSrc->disconnect();
+ gPosInfoSrc->deleteLater();
+ delete ui;
+}
+
+void AutomaticTheme::on_refresh_clicked()
+{
+ QGeoCoordinate geoCor = QGeoCoordinate(this->lat,this->lon);
+ if(geoCor.isValid())
+ {
+ Sunclock sun(this->lat, this->lon, this->hour_offset);
+ sunrise.setSecsSinceEpoch(sun.sunrise(QDateTime::currentDateTime().toTime_t()));
+ sunset.setSecsSinceEpoch(sun.sunset(QDateTime::currentDateTime().toTime_t()));
+
+ ui->sunrise->setTime(sunrise.time());
+ ui->sunset->setTime(sunset.time());
+ }else{
+ settings.setValue("automaticTheme",false);
+ QMessageBox::critical(this,"Error","Invalid Geo-Coordinates.\n\nPlease try again.");
+ }
+}
+
+void AutomaticTheme::on_save_clicked()
+{
+ if( sunrise.toSecsSinceEpoch() == sunset.toSecsSinceEpoch() ){
+ settings.setValue("automaticTheme",false);
+ QMessageBox::critical(this,"Error","Invalid settings.\n\nSunrise and Sunset time cannot have similar values.\n\nPlease try again.");
+ //this->close();
+ }else{
+ settings.setValue("sunrise",sunrise.toSecsSinceEpoch());
+ settings.setValue("sunset",sunset.toSecsSinceEpoch());
+ settings.setValue("automaticTheme",true);
+ this->close();
+ }
+}
+
+void AutomaticTheme::on_cancel_clicked()
+{
+ settings.setValue("automaticTheme",false);
+ this->close();
+}
+
+void AutomaticTheme::on_sunrise_timeChanged(const QTime &time)
+{
+ sunrise.setTime(QTime(time.hour(),time.minute(),0));
+}
+
+void AutomaticTheme::on_sunset_timeChanged(const QTime &time)
+{
+ sunset.setTime(QTime(time.hour(),time.minute(),0));
+}
diff --git a/src/automatictheme.h b/src/automatictheme.h
new file mode 100644
index 0000000..55904e5
--- /dev/null
+++ b/src/automatictheme.h
@@ -0,0 +1,47 @@
+#ifndef AUTOMATICTHEME_H
+#define AUTOMATICTHEME_H
+
+#include <QWidget>
+#include <QGeoPositionInfoSource>
+#include <QDebug>
+#include <QTimeZone>
+#include <QSettings>
+
+namespace Ui {
+class AutomaticTheme;
+}
+
+class AutomaticTheme : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit AutomaticTheme(QWidget *parent = nullptr);
+ ~AutomaticTheme();
+
+
+private slots:
+ void on_refresh_clicked();
+
+ void on_save_clicked();
+
+ void on_cancel_clicked();
+
+ void on_sunrise_timeChanged(const QTime &time);
+
+ void on_sunset_timeChanged(const QTime &time);
+
+private:
+ Ui::AutomaticTheme *ui;
+
+ QGeoPositionInfoSource *gPosInfoSrc;
+ QDateTime sunrise, sunset;
+
+ double hour_offset = 0.0;
+ double lon = 0.0;
+ double lat = 0.0;
+
+ QSettings settings;
+};
+
+#endif // AUTOMATICTHEME_H
diff --git a/src/automatictheme.ui b/src/automatictheme.ui
new file mode 100644
index 0000000..0b94d1e
--- /dev/null
+++ b/src/automatictheme.ui
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AutomaticTheme</class>
+ <widget class="QWidget" name="AutomaticTheme">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>466</width>
+ <height>113</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Sunrise</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Sunset</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QTimeEdit" name="sunrise"/>
+ </item>
+ <item row="2" column="1">
+ <widget class="QTimeEdit" name="sunset"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QPushButton" name="refresh">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string> Refresh </string>
+ </property>
+ <property name="icon">
+ <iconset resource="icons.qrc">
+ <normaloff>:/icons/refresh-line.png</normaloff>:/icons/refresh-line.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="cancel">
+ <property name="text">
+ <string>Disable and Close</string>
+ </property>
+ <property name="icon">
+ <iconset resource="icons.qrc">
+ <normaloff>:/icons/arrow-go-back-line.png</normaloff>:/icons/arrow-go-back-line.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="save">
+ <property name="text">
+ <string> Enable and Close</string>
+ </property>
+ <property name="icon">
+ <iconset resource="icons.qrc">
+ <normaloff>:/icons/save-line.png</normaloff>:/icons/save-line.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="icons.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/icons.qrc b/src/icons.qrc
index 7072587..11c5627 100644
--- a/src/icons.qrc
+++ b/src/icons.qrc
@@ -151,5 +151,255 @@
<file>icons/window-2-line.png</file>
<file>icons/shut-down-line.png</file>
<file>icons/app/icon-48.png</file>
+ <file>icons/flags/ad.png</file>
+ <file>icons/flags/ae.png</file>
+ <file>icons/flags/af.png</file>
+ <file>icons/flags/ag.png</file>
+ <file>icons/flags/ai.png</file>
+ <file>icons/flags/al.png</file>
+ <file>icons/flags/am.png</file>
+ <file>icons/flags/ao.png</file>
+ <file>icons/flags/aq.png</file>
+ <file>icons/flags/ar.png</file>
+ <file>icons/flags/as.png</file>
+ <file>icons/flags/at.png</file>
+ <file>icons/flags/au.png</file>
+ <file>icons/flags/aw.png</file>
+ <file>icons/flags/ax.png</file>
+ <file>icons/flags/az.png</file>
+ <file>icons/flags/ba.png</file>
+ <file>icons/flags/bb.png</file>
+ <file>icons/flags/bd.png</file>
+ <file>icons/flags/be.png</file>
+ <file>icons/flags/bf.png</file>
+ <file>icons/flags/bg.png</file>
+ <file>icons/flags/bh.png</file>
+ <file>icons/flags/bi.png</file>
+ <file>icons/flags/bj.png</file>
+ <file>icons/flags/bl.png</file>
+ <file>icons/flags/bm.png</file>
+ <file>icons/flags/bn.png</file>
+ <file>icons/flags/bo.png</file>
+ <file>icons/flags/bq.png</file>
+ <file>icons/flags/br.png</file>
+ <file>icons/flags/bs.png</file>
+ <file>icons/flags/bt.png</file>
+ <file>icons/flags/bv.png</file>
+ <file>icons/flags/bw.png</file>
+ <file>icons/flags/by.png</file>
+ <file>icons/flags/bz.png</file>
+ <file>icons/flags/ca.png</file>
+ <file>icons/flags/cc.png</file>
+ <file>icons/flags/cd.png</file>
+ <file>icons/flags/cf.png</file>
+ <file>icons/flags/cg.png</file>
+ <file>icons/flags/ch.png</file>
+ <file>icons/flags/ci.png</file>
+ <file>icons/flags/ck.png</file>
+ <file>icons/flags/cl.png</file>
+ <file>icons/flags/cm.png</file>
+ <file>icons/flags/cn.png</file>
+ <file>icons/flags/co.png</file>
+ <file>icons/flags/cr.png</file>
+ <file>icons/flags/cu.png</file>
+ <file>icons/flags/cv.png</file>
+ <file>icons/flags/cw.png</file>
+ <file>icons/flags/cx.png</file>
+ <file>icons/flags/cy.png</file>
+ <file>icons/flags/cz.png</file>
+ <file>icons/flags/de.png</file>
+ <file>icons/flags/dj.png</file>
+ <file>icons/flags/dk.png</file>
+ <file>icons/flags/dm.png</file>
+ <file>icons/flags/do.png</file>
+ <file>icons/flags/dz.png</file>
+ <file>icons/flags/ec.png</file>
+ <file>icons/flags/ee.png</file>
+ <file>icons/flags/eg.png</file>
+ <file>icons/flags/eh.png</file>
+ <file>icons/flags/er.png</file>
+ <file>icons/flags/es.png</file>
+ <file>icons/flags/et.png</file>
+ <file>icons/flags/fi.png</file>
+ <file>icons/flags/fj.png</file>
+ <file>icons/flags/fk.png</file>
+ <file>icons/flags/fm.png</file>
+ <file>icons/flags/fo.png</file>
+ <file>icons/flags/fr.png</file>
+ <file>icons/flags/ga.png</file>
+ <file>icons/flags/gb.png</file>
+ <file>icons/flags/gd.png</file>
+ <file>icons/flags/ge.png</file>
+ <file>icons/flags/gf.png</file>
+ <file>icons/flags/gg.png</file>
+ <file>icons/flags/gh.png</file>
+ <file>icons/flags/gi.png</file>
+ <file>icons/flags/gl.png</file>
+ <file>icons/flags/gm.png</file>
+ <file>icons/flags/gn.png</file>
+ <file>icons/flags/gp.png</file>
+ <file>icons/flags/gq.png</file>
+ <file>icons/flags/gr.png</file>
+ <file>icons/flags/gs.png</file>
+ <file>icons/flags/gt.png</file>
+ <file>icons/flags/gu.png</file>
+ <file>icons/flags/gw.png</file>
+ <file>icons/flags/gy.png</file>
+ <file>icons/flags/hk.png</file>
+ <file>icons/flags/hm.png</file>
+ <file>icons/flags/hn.png</file>
+ <file>icons/flags/hr.png</file>
+ <file>icons/flags/ht.png</file>
+ <file>icons/flags/hu.png</file>
+ <file>icons/flags/id.png</file>
+ <file>icons/flags/ie.png</file>
+ <file>icons/flags/il.png</file>
+ <file>icons/flags/im.png</file>
+ <file>icons/flags/in.png</file>
+ <file>icons/flags/io.png</file>
+ <file>icons/flags/iq.png</file>
+ <file>icons/flags/ir.png</file>
+ <file>icons/flags/is.png</file>
+ <file>icons/flags/it.png</file>
+ <file>icons/flags/je.png</file>
+ <file>icons/flags/jm.png</file>
+ <file>icons/flags/jo.png</file>
+ <file>icons/flags/jp.png</file>
+ <file>icons/flags/ke.png</file>
+ <file>icons/flags/kg.png</file>
+ <file>icons/flags/kh.png</file>
+ <file>icons/flags/ki.png</file>
+ <file>icons/flags/km.png</file>
+ <file>icons/flags/kn.png</file>
+ <file>icons/flags/kp.png</file>
+ <file>icons/flags/kr.png</file>
+ <file>icons/flags/kw.png</file>
+ <file>icons/flags/ky.png</file>
+ <file>icons/flags/kz.png</file>
+ <file>icons/flags/la.png</file>
+ <file>icons/flags/lb.png</file>
+ <file>icons/flags/lc.png</file>
+ <file>icons/flags/li.png</file>
+ <file>icons/flags/lk.png</file>
+ <file>icons/flags/lr.png</file>
+ <file>icons/flags/ls.png</file>
+ <file>icons/flags/lt.png</file>
+ <file>icons/flags/lu.png</file>
+ <file>icons/flags/lv.png</file>
+ <file>icons/flags/ly.png</file>
+ <file>icons/flags/ma.png</file>
+ <file>icons/flags/mc.png</file>
+ <file>icons/flags/md.png</file>
+ <file>icons/flags/me.png</file>
+ <file>icons/flags/mf.png</file>
+ <file>icons/flags/mg.png</file>
+ <file>icons/flags/mh.png</file>
+ <file>icons/flags/mk.png</file>
+ <file>icons/flags/ml.png</file>
+ <file>icons/flags/mm.png</file>
+ <file>icons/flags/mn.png</file>
+ <file>icons/flags/mo.png</file>
+ <file>icons/flags/mp.png</file>
+ <file>icons/flags/mq.png</file>
+ <file>icons/flags/mr.png</file>
+ <file>icons/flags/ms.png</file>
+ <file>icons/flags/mt.png</file>
+ <file>icons/flags/mu.png</file>
+ <file>icons/flags/mv.png</file>
+ <file>icons/flags/mw.png</file>
+ <file>icons/flags/mx.png</file>
+ <file>icons/flags/my.png</file>
+ <file>icons/flags/mz.png</file>
+ <file>icons/flags/na.png</file>
+ <file>icons/flags/nc.png</file>
+ <file>icons/flags/ne.png</file>
+ <file>icons/flags/nf.png</file>
+ <file>icons/flags/ng.png</file>
+ <file>icons/flags/ni.png</file>
+ <file>icons/flags/nl.png</file>
+ <file>icons/flags/no.png</file>
+ <file>icons/flags/np.png</file>
+ <file>icons/flags/nr.png</file>
+ <file>icons/flags/nu.png</file>
+ <file>icons/flags/nz.png</file>
+ <file>icons/flags/om.png</file>
+ <file>icons/flags/pa.png</file>
+ <file>icons/flags/pe.png</file>
+ <file>icons/flags/pf.png</file>
+ <file>icons/flags/pg.png</file>
+ <file>icons/flags/ph.png</file>
+ <file>icons/flags/pk.png</file>
+ <file>icons/flags/pl.png</file>
+ <file>icons/flags/pm.png</file>
+ <file>icons/flags/pn.png</file>
+ <file>icons/flags/pr.png</file>
+ <file>icons/flags/ps.png</file>
+ <file>icons/flags/pt.png</file>
+ <file>icons/flags/pw.png</file>
+ <file>icons/flags/py.png</file>
+ <file>icons/flags/qa.png</file>
+ <file>icons/flags/re.png</file>
+ <file>icons/flags/ro.png</file>
+ <file>icons/flags/rs.png</file>
+ <file>icons/flags/ru.png</file>
+ <file>icons/flags/rw.png</file>
+ <file>icons/flags/sa.png</file>
+ <file>icons/flags/sb.png</file>
+ <file>icons/flags/sc.png</file>
+ <file>icons/flags/sd.png</file>
+ <file>icons/flags/se.png</file>
+ <file>icons/flags/sg.png</file>
+ <file>icons/flags/sh.png</file>
+ <file>icons/flags/si.png</file>
+ <file>icons/flags/sj.png</file>
+ <file>icons/flags/sk.png</file>
+ <file>icons/flags/sl.png</file>
+ <file>icons/flags/sm.png</file>
+ <file>icons/flags/sn.png</file>
+ <file>icons/flags/so.png</file>
+ <file>icons/flags/sr.png</file>
+ <file>icons/flags/ss.png</file>
+ <file>icons/flags/st.png</file>
+ <file>icons/flags/sv.png</file>
+ <file>icons/flags/sx.png</file>
+ <file>icons/flags/sy.png</file>
+ <file>icons/flags/sz.png</file>
+ <file>icons/flags/tc.png</file>
+ <file>icons/flags/td.png</file>
+ <file>icons/flags/tf.png</file>
+ <file>icons/flags/tg.png</file>
+ <file>icons/flags/th.png</file>
+ <file>icons/flags/tj.png</file>
+ <file>icons/flags/tk.png</file>
+ <file>icons/flags/tl.png</file>
+ <file>icons/flags/tm.png</file>
+ <file>icons/flags/tn.png</file>
+ <file>icons/flags/to.png</file>
+ <file>icons/flags/tr.png</file>
+ <file>icons/flags/tt.png</file>
+ <file>icons/flags/tv.png</file>
+ <file>icons/flags/tw.png</file>
+ <file>icons/flags/tz.png</file>
+ <file>icons/flags/ua.png</file>
+ <file>icons/flags/ug.png</file>
+ <file>icons/flags/um.png</file>
+ <file>icons/flags/us.png</file>
+ <file>icons/flags/uy.png</file>
+ <file>icons/flags/uz.png</file>
+ <file>icons/flags/va.png</file>
+ <file>icons/flags/vc.png</file>
+ <file>icons/flags/ve.png</file>
+ <file>icons/flags/vg.png</file>
+ <file>icons/flags/vi.png</file>
+ <file>icons/flags/vn.png</file>
+ <file>icons/flags/vu.png</file>
+ <file>icons/flags/wf.png</file>
+ <file>icons/flags/ws.png</file>
+ <file>icons/flags/xx.png</file>
+ <file>icons/flags/ye.png</file>
+ <file>icons/flags/yt.png</file>
+ <file>icons/flags/za.png</file>
+ <file>icons/flags/zm.png</file>
+ <file>icons/flags/zw.png</file>
</qresource>
</RCC>
diff --git a/src/icons/flags/ad.png b/src/icons/flags/ad.png
new file mode 100644
index 0000000..8af6420
--- /dev/null
+++ b/src/icons/flags/ad.png
Binary files differ
diff --git a/src/icons/flags/ae.png b/src/icons/flags/ae.png
new file mode 100644
index 0000000..b8333de
--- /dev/null
+++ b/src/icons/flags/ae.png
Binary files differ
diff --git a/src/icons/flags/af.png b/src/icons/flags/af.png
new file mode 100644
index 0000000..741d0b4
--- /dev/null
+++ b/src/icons/flags/af.png
Binary files differ
diff --git a/src/icons/flags/ag.png b/src/icons/flags/ag.png
new file mode 100644
index 0000000..a8f432b
--- /dev/null
+++ b/src/icons/flags/ag.png
Binary files differ
diff --git a/src/icons/flags/ai.png b/src/icons/flags/ai.png
new file mode 100644
index 0000000..1ff6a3c
--- /dev/null
+++ b/src/icons/flags/ai.png
Binary files differ
diff --git a/src/icons/flags/al.png b/src/icons/flags/al.png
new file mode 100644
index 0000000..8c50f84
--- /dev/null
+++ b/src/icons/flags/al.png
Binary files differ
diff --git a/src/icons/flags/am.png b/src/icons/flags/am.png
new file mode 100644
index 0000000..cc5f496
--- /dev/null
+++ b/src/icons/flags/am.png
Binary files differ
diff --git a/src/icons/flags/ao.png b/src/icons/flags/ao.png
new file mode 100644
index 0000000..ddee931
--- /dev/null
+++ b/src/icons/flags/ao.png
Binary files differ
diff --git a/src/icons/flags/aq.png b/src/icons/flags/aq.png
new file mode 100644
index 0000000..4ad2d80
--- /dev/null
+++ b/src/icons/flags/aq.png
Binary files differ
diff --git a/src/icons/flags/ar.png b/src/icons/flags/ar.png
new file mode 100644
index 0000000..652974c
--- /dev/null
+++ b/src/icons/flags/ar.png
Binary files differ
diff --git a/src/icons/flags/as.png b/src/icons/flags/as.png
new file mode 100644
index 0000000..ced4adc
--- /dev/null
+++ b/src/icons/flags/as.png
Binary files differ
diff --git a/src/icons/flags/at.png b/src/icons/flags/at.png
new file mode 100644
index 0000000..0dffbd4
--- /dev/null
+++ b/src/icons/flags/at.png
Binary files differ
diff --git a/src/icons/flags/au.png b/src/icons/flags/au.png
new file mode 100644
index 0000000..a7dfad0
--- /dev/null
+++ b/src/icons/flags/au.png
Binary files differ
diff --git a/src/icons/flags/aw.png b/src/icons/flags/aw.png
new file mode 100644
index 0000000..e9258f5
--- /dev/null
+++ b/src/icons/flags/aw.png
Binary files differ
diff --git a/src/icons/flags/ax.png b/src/icons/flags/ax.png
new file mode 100644
index 0000000..9004ba1
--- /dev/null
+++ b/src/icons/flags/ax.png
Binary files differ
diff --git a/src/icons/flags/az.png b/src/icons/flags/az.png
new file mode 100644
index 0000000..4e312f7
--- /dev/null
+++ b/src/icons/flags/az.png
Binary files differ
diff --git a/src/icons/flags/ba.png b/src/icons/flags/ba.png
new file mode 100644
index 0000000..673f708
--- /dev/null
+++ b/src/icons/flags/ba.png
Binary files differ
diff --git a/src/icons/flags/bb.png b/src/icons/flags/bb.png
new file mode 100644
index 0000000..e3347ac
--- /dev/null
+++ b/src/icons/flags/bb.png
Binary files differ
diff --git a/src/icons/flags/bd.png b/src/icons/flags/bd.png
new file mode 100644
index 0000000..d372627
--- /dev/null
+++ b/src/icons/flags/bd.png
Binary files differ
diff --git a/src/icons/flags/be.png b/src/icons/flags/be.png
new file mode 100644
index 0000000..e3b7f13
--- /dev/null
+++ b/src/icons/flags/be.png
Binary files differ
diff --git a/src/icons/flags/bf.png b/src/icons/flags/bf.png
new file mode 100644
index 0000000..08898ce
--- /dev/null
+++ b/src/icons/flags/bf.png
Binary files differ
diff --git a/src/icons/flags/bg.png b/src/icons/flags/bg.png
new file mode 100644
index 0000000..ac8bf09
--- /dev/null
+++ b/src/icons/flags/bg.png
Binary files differ
diff --git a/src/icons/flags/bh.png b/src/icons/flags/bh.png
new file mode 100644
index 0000000..3765623
--- /dev/null
+++ b/src/icons/flags/bh.png
Binary files differ
diff --git a/src/icons/flags/bi.png b/src/icons/flags/bi.png
new file mode 100644
index 0000000..29daa8c
--- /dev/null
+++ b/src/icons/flags/bi.png
Binary files differ
diff --git a/src/icons/flags/bj.png b/src/icons/flags/bj.png
new file mode 100644
index 0000000..3f1367b
--- /dev/null
+++ b/src/icons/flags/bj.png
Binary files differ
diff --git a/src/icons/flags/bl.png b/src/icons/flags/bl.png
new file mode 100644
index 0000000..3fbf2ce
--- /dev/null
+++ b/src/icons/flags/bl.png
Binary files differ
diff --git a/src/icons/flags/bm.png b/src/icons/flags/bm.png
new file mode 100644
index 0000000..4305242
--- /dev/null
+++ b/src/icons/flags/bm.png
Binary files differ
diff --git a/src/icons/flags/bn.png b/src/icons/flags/bn.png
new file mode 100644
index 0000000..dba95f2
--- /dev/null
+++ b/src/icons/flags/bn.png
Binary files differ
diff --git a/src/icons/flags/bo.png b/src/icons/flags/bo.png
new file mode 100644
index 0000000..d5cc662
--- /dev/null
+++ b/src/icons/flags/bo.png
Binary files differ
diff --git a/src/icons/flags/bq.png b/src/icons/flags/bq.png
new file mode 100644
index 0000000..e475292
--- /dev/null
+++ b/src/icons/flags/bq.png
Binary files differ
diff --git a/src/icons/flags/br.png b/src/icons/flags/br.png
new file mode 100644
index 0000000..f60f259
--- /dev/null
+++ b/src/icons/flags/br.png
Binary files differ
diff --git a/src/icons/flags/bs.png b/src/icons/flags/bs.png
new file mode 100644
index 0000000..c2b047b
--- /dev/null
+++ b/src/icons/flags/bs.png
Binary files differ
diff --git a/src/icons/flags/bt.png b/src/icons/flags/bt.png
new file mode 100644
index 0000000..16c2b86
--- /dev/null
+++ b/src/icons/flags/bt.png
Binary files differ
diff --git a/src/icons/flags/bv.png b/src/icons/flags/bv.png
new file mode 100644
index 0000000..dfd5f18
--- /dev/null
+++ b/src/icons/flags/bv.png
Binary files differ
diff --git a/src/icons/flags/bw.png b/src/icons/flags/bw.png
new file mode 100644
index 0000000..68aff71
--- /dev/null
+++ b/src/icons/flags/bw.png
Binary files differ
diff --git a/src/icons/flags/by.png b/src/icons/flags/by.png
new file mode 100644
index 0000000..819a3f4
--- /dev/null
+++ b/src/icons/flags/by.png
Binary files differ
diff --git a/src/icons/flags/bz.png b/src/icons/flags/bz.png
new file mode 100644
index 0000000..521428a
--- /dev/null
+++ b/src/icons/flags/bz.png
Binary files differ
diff --git a/src/icons/flags/ca.png b/src/icons/flags/ca.png
new file mode 100644
index 0000000..47962de
--- /dev/null
+++ b/src/icons/flags/ca.png
Binary files differ
diff --git a/src/icons/flags/cc.png b/src/icons/flags/cc.png
new file mode 100644
index 0000000..f1aad6d
--- /dev/null
+++ b/src/icons/flags/cc.png
Binary files differ
diff --git a/src/icons/flags/cd.png b/src/icons/flags/cd.png
new file mode 100644
index 0000000..ab73e82
--- /dev/null
+++ b/src/icons/flags/cd.png
Binary files differ
diff --git a/src/icons/flags/cf.png b/src/icons/flags/cf.png
new file mode 100644
index 0000000..586e393
--- /dev/null
+++ b/src/icons/flags/cf.png
Binary files differ
diff --git a/src/icons/flags/cg.png b/src/icons/flags/cg.png
new file mode 100644
index 0000000..966fcf5
--- /dev/null
+++ b/src/icons/flags/cg.png
Binary files differ
diff --git a/src/icons/flags/ch.png b/src/icons/flags/ch.png
new file mode 100644
index 0000000..022dc15
--- /dev/null
+++ b/src/icons/flags/ch.png
Binary files differ
diff --git a/src/icons/flags/ci.png b/src/icons/flags/ci.png
new file mode 100644
index 0000000..e7ad551
--- /dev/null
+++ b/src/icons/flags/ci.png
Binary files differ
diff --git a/src/icons/flags/ck.png b/src/icons/flags/ck.png
new file mode 100644
index 0000000..51b0403
--- /dev/null
+++ b/src/icons/flags/ck.png
Binary files differ
diff --git a/src/icons/flags/cl.png b/src/icons/flags/cl.png
new file mode 100644
index 0000000..59f4eca
--- /dev/null
+++ b/src/icons/flags/cl.png
Binary files differ
diff --git a/src/icons/flags/cm.png b/src/icons/flags/cm.png
new file mode 100644
index 0000000..86efe43
--- /dev/null
+++ b/src/icons/flags/cm.png
Binary files differ
diff --git a/src/icons/flags/cn.png b/src/icons/flags/cn.png
new file mode 100644
index 0000000..72465e8
--- /dev/null
+++ b/src/icons/flags/cn.png
Binary files differ
diff --git a/src/icons/flags/co.png b/src/icons/flags/co.png
new file mode 100644
index 0000000..2a718f7
--- /dev/null
+++ b/src/icons/flags/co.png
Binary files differ
diff --git a/src/icons/flags/cr.png b/src/icons/flags/cr.png
new file mode 100644
index 0000000..190b9e3
--- /dev/null
+++ b/src/icons/flags/cr.png
Binary files differ
diff --git a/src/icons/flags/cu.png b/src/icons/flags/cu.png
new file mode 100644
index 0000000..1ae8c83
--- /dev/null
+++ b/src/icons/flags/cu.png
Binary files differ
diff --git a/src/icons/flags/cv.png b/src/icons/flags/cv.png
new file mode 100644
index 0000000..67ddc96
--- /dev/null
+++ b/src/icons/flags/cv.png
Binary files differ
diff --git a/src/icons/flags/cw.png b/src/icons/flags/cw.png
new file mode 100644
index 0000000..0f8d7cd
--- /dev/null
+++ b/src/icons/flags/cw.png
Binary files differ
diff --git a/src/icons/flags/cx.png b/src/icons/flags/cx.png
new file mode 100644
index 0000000..d276957
--- /dev/null
+++ b/src/icons/flags/cx.png
Binary files differ
diff --git a/src/icons/flags/cy.png b/src/icons/flags/cy.png
new file mode 100644
index 0000000..0ad13a0
--- /dev/null
+++ b/src/icons/flags/cy.png
Binary files differ
diff --git a/src/icons/flags/cz.png b/src/icons/flags/cz.png
new file mode 100644
index 0000000..065e435
--- /dev/null
+++ b/src/icons/flags/cz.png
Binary files differ
diff --git a/src/icons/flags/de.png b/src/icons/flags/de.png
new file mode 100644
index 0000000..cb4a4a6
--- /dev/null
+++ b/src/icons/flags/de.png
Binary files differ
diff --git a/src/icons/flags/dj.png b/src/icons/flags/dj.png
new file mode 100644
index 0000000..2d375ae
--- /dev/null
+++ b/src/icons/flags/dj.png
Binary files differ
diff --git a/src/icons/flags/dk.png b/src/icons/flags/dk.png
new file mode 100644
index 0000000..8991a70
--- /dev/null
+++ b/src/icons/flags/dk.png
Binary files differ
diff --git a/src/icons/flags/dm.png b/src/icons/flags/dm.png
new file mode 100644
index 0000000..e516689
--- /dev/null
+++ b/src/icons/flags/dm.png
Binary files differ
diff --git a/src/icons/flags/do.png b/src/icons/flags/do.png
new file mode 100644
index 0000000..b4915e0
--- /dev/null
+++ b/src/icons/flags/do.png
Binary files differ
diff --git a/src/icons/flags/dz.png b/src/icons/flags/dz.png
new file mode 100644
index 0000000..875fb19
--- /dev/null
+++ b/src/icons/flags/dz.png
Binary files differ
diff --git a/src/icons/flags/ec.png b/src/icons/flags/ec.png
new file mode 100644
index 0000000..1cb103a
--- /dev/null
+++ b/src/icons/flags/ec.png
Binary files differ
diff --git a/src/icons/flags/ee.png b/src/icons/flags/ee.png
new file mode 100644
index 0000000..8df436b
--- /dev/null
+++ b/src/icons/flags/ee.png
Binary files differ
diff --git a/src/icons/flags/eg.png b/src/icons/flags/eg.png
new file mode 100644
index 0000000..37f1c3c
--- /dev/null
+++ b/src/icons/flags/eg.png
Binary files differ
diff --git a/src/icons/flags/eh.png b/src/icons/flags/eh.png
new file mode 100644
index 0000000..1f35997
--- /dev/null
+++ b/src/icons/flags/eh.png
Binary files differ
diff --git a/src/icons/flags/er.png b/src/icons/flags/er.png
new file mode 100644
index 0000000..2db4660
--- /dev/null
+++ b/src/icons/flags/er.png
Binary files differ
diff --git a/src/icons/flags/es.png b/src/icons/flags/es.png
new file mode 100644
index 0000000..af5a8a1
--- /dev/null
+++ b/src/icons/flags/es.png
Binary files differ
diff --git a/src/icons/flags/et.png b/src/icons/flags/et.png
new file mode 100644
index 0000000..316736f
--- /dev/null
+++ b/src/icons/flags/et.png
Binary files differ
diff --git a/src/icons/flags/fi.png b/src/icons/flags/fi.png
new file mode 100644
index 0000000..f3a06f3
--- /dev/null
+++ b/src/icons/flags/fi.png
Binary files differ
diff --git a/src/icons/flags/fj.png b/src/icons/flags/fj.png
new file mode 100644
index 0000000..4344211
--- /dev/null
+++ b/src/icons/flags/fj.png
Binary files differ
diff --git a/src/icons/flags/fk.png b/src/icons/flags/fk.png
new file mode 100644
index 0000000..308c2c6
--- /dev/null
+++ b/src/icons/flags/fk.png
Binary files differ
diff --git a/src/icons/flags/fm.png b/src/icons/flags/fm.png
new file mode 100644
index 0000000..e58f290
--- /dev/null
+++ b/src/icons/flags/fm.png
Binary files differ
diff --git a/src/icons/flags/fo.png b/src/icons/flags/fo.png
new file mode 100644
index 0000000..91399e8
--- /dev/null
+++ b/src/icons/flags/fo.png
Binary files differ
diff --git a/src/icons/flags/fr.png b/src/icons/flags/fr.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/fr.png
Binary files differ
diff --git a/src/icons/flags/ga.png b/src/icons/flags/ga.png
new file mode 100644
index 0000000..d4f9c7f
--- /dev/null
+++ b/src/icons/flags/ga.png
Binary files differ
diff --git a/src/icons/flags/gb.png b/src/icons/flags/gb.png
new file mode 100644
index 0000000..25e8cdc
--- /dev/null
+++ b/src/icons/flags/gb.png
Binary files differ
diff --git a/src/icons/flags/gd.png b/src/icons/flags/gd.png
new file mode 100644
index 0000000..fc2a081
--- /dev/null
+++ b/src/icons/flags/gd.png
Binary files differ
diff --git a/src/icons/flags/ge.png b/src/icons/flags/ge.png
new file mode 100644
index 0000000..a439f88
--- /dev/null
+++ b/src/icons/flags/ge.png
Binary files differ
diff --git a/src/icons/flags/gf.png b/src/icons/flags/gf.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/gf.png
Binary files differ
diff --git a/src/icons/flags/gg.png b/src/icons/flags/gg.png
new file mode 100644
index 0000000..0248beb
--- /dev/null
+++ b/src/icons/flags/gg.png
Binary files differ
diff --git a/src/icons/flags/gh.png b/src/icons/flags/gh.png
new file mode 100644
index 0000000..d8e7590
--- /dev/null
+++ b/src/icons/flags/gh.png
Binary files differ
diff --git a/src/icons/flags/gi.png b/src/icons/flags/gi.png
new file mode 100644
index 0000000..482b5e0
--- /dev/null
+++ b/src/icons/flags/gi.png
Binary files differ
diff --git a/src/icons/flags/gl.png b/src/icons/flags/gl.png
new file mode 100644
index 0000000..ebb37c0
--- /dev/null
+++ b/src/icons/flags/gl.png
Binary files differ
diff --git a/src/icons/flags/gm.png b/src/icons/flags/gm.png
new file mode 100644
index 0000000..9e7e39e
--- /dev/null
+++ b/src/icons/flags/gm.png
Binary files differ
diff --git a/src/icons/flags/gn.png b/src/icons/flags/gn.png
new file mode 100644
index 0000000..1b1aae8
--- /dev/null
+++ b/src/icons/flags/gn.png
Binary files differ
diff --git a/src/icons/flags/gp.png b/src/icons/flags/gp.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/gp.png
Binary files differ
diff --git a/src/icons/flags/gq.png b/src/icons/flags/gq.png
new file mode 100644
index 0000000..b60d0ca
--- /dev/null
+++ b/src/icons/flags/gq.png
Binary files differ
diff --git a/src/icons/flags/gr.png b/src/icons/flags/gr.png
new file mode 100644
index 0000000..0d5f7a2
--- /dev/null
+++ b/src/icons/flags/gr.png
Binary files differ
diff --git a/src/icons/flags/gs.png b/src/icons/flags/gs.png
new file mode 100644
index 0000000..f5154c7
--- /dev/null
+++ b/src/icons/flags/gs.png
Binary files differ
diff --git a/src/icons/flags/gt.png b/src/icons/flags/gt.png
new file mode 100644
index 0000000..27b75a1
--- /dev/null
+++ b/src/icons/flags/gt.png
Binary files differ
diff --git a/src/icons/flags/gu.png b/src/icons/flags/gu.png
new file mode 100644
index 0000000..02f0e11
--- /dev/null
+++ b/src/icons/flags/gu.png
Binary files differ
diff --git a/src/icons/flags/gw.png b/src/icons/flags/gw.png
new file mode 100644
index 0000000..88e4e4f
--- /dev/null
+++ b/src/icons/flags/gw.png
Binary files differ
diff --git a/src/icons/flags/gy.png b/src/icons/flags/gy.png
new file mode 100644
index 0000000..52efae8
--- /dev/null
+++ b/src/icons/flags/gy.png
Binary files differ
diff --git a/src/icons/flags/hk.png b/src/icons/flags/hk.png
new file mode 100644
index 0000000..9d0b4d2
--- /dev/null
+++ b/src/icons/flags/hk.png
Binary files differ
diff --git a/src/icons/flags/hm.png b/src/icons/flags/hm.png
new file mode 100644
index 0000000..a7dfad0
--- /dev/null
+++ b/src/icons/flags/hm.png
Binary files differ
diff --git a/src/icons/flags/hn.png b/src/icons/flags/hn.png
new file mode 100644
index 0000000..64408d5
--- /dev/null
+++ b/src/icons/flags/hn.png
Binary files differ
diff --git a/src/icons/flags/hr.png b/src/icons/flags/hr.png
new file mode 100644
index 0000000..414e79a
--- /dev/null
+++ b/src/icons/flags/hr.png
Binary files differ
diff --git a/src/icons/flags/ht.png b/src/icons/flags/ht.png
new file mode 100644
index 0000000..811877c
--- /dev/null
+++ b/src/icons/flags/ht.png
Binary files differ
diff --git a/src/icons/flags/hu.png b/src/icons/flags/hu.png
new file mode 100644
index 0000000..77af7f4
--- /dev/null
+++ b/src/icons/flags/hu.png
Binary files differ
diff --git a/src/icons/flags/id.png b/src/icons/flags/id.png
new file mode 100644
index 0000000..d4ef9d1
--- /dev/null
+++ b/src/icons/flags/id.png
Binary files differ
diff --git a/src/icons/flags/ie.png b/src/icons/flags/ie.png
new file mode 100644
index 0000000..9bbef4b
--- /dev/null
+++ b/src/icons/flags/ie.png
Binary files differ
diff --git a/src/icons/flags/il.png b/src/icons/flags/il.png
new file mode 100644
index 0000000..0423993
--- /dev/null
+++ b/src/icons/flags/il.png
Binary files differ
diff --git a/src/icons/flags/im.png b/src/icons/flags/im.png
new file mode 100644
index 0000000..667324a
--- /dev/null
+++ b/src/icons/flags/im.png
Binary files differ
diff --git a/src/icons/flags/in.png b/src/icons/flags/in.png
new file mode 100644
index 0000000..67e8612
--- /dev/null
+++ b/src/icons/flags/in.png
Binary files differ
diff --git a/src/icons/flags/io.png b/src/icons/flags/io.png
new file mode 100644
index 0000000..b940abc
--- /dev/null
+++ b/src/icons/flags/io.png
Binary files differ
diff --git a/src/icons/flags/iq.png b/src/icons/flags/iq.png
new file mode 100644
index 0000000..2738b79
--- /dev/null
+++ b/src/icons/flags/iq.png
Binary files differ
diff --git a/src/icons/flags/ir.png b/src/icons/flags/ir.png
new file mode 100644
index 0000000..9920f93
--- /dev/null
+++ b/src/icons/flags/ir.png
Binary files differ
diff --git a/src/icons/flags/is.png b/src/icons/flags/is.png
new file mode 100644
index 0000000..9d20b92
--- /dev/null
+++ b/src/icons/flags/is.png
Binary files differ
diff --git a/src/icons/flags/it.png b/src/icons/flags/it.png
new file mode 100644
index 0000000..527c158
--- /dev/null
+++ b/src/icons/flags/it.png
Binary files differ
diff --git a/src/icons/flags/je.png b/src/icons/flags/je.png
new file mode 100644
index 0000000..daac54f
--- /dev/null
+++ b/src/icons/flags/je.png
Binary files differ
diff --git a/src/icons/flags/jm.png b/src/icons/flags/jm.png
new file mode 100644
index 0000000..2c42b15
--- /dev/null
+++ b/src/icons/flags/jm.png
Binary files differ
diff --git a/src/icons/flags/jo.png b/src/icons/flags/jo.png
new file mode 100644
index 0000000..6d1871d
--- /dev/null
+++ b/src/icons/flags/jo.png
Binary files differ
diff --git a/src/icons/flags/jp.png b/src/icons/flags/jp.png
new file mode 100644
index 0000000..cbaf7af
--- /dev/null
+++ b/src/icons/flags/jp.png
Binary files differ
diff --git a/src/icons/flags/ke.png b/src/icons/flags/ke.png
new file mode 100644
index 0000000..ab459e1
--- /dev/null
+++ b/src/icons/flags/ke.png
Binary files differ
diff --git a/src/icons/flags/kg.png b/src/icons/flags/kg.png
new file mode 100644
index 0000000..7c0d358
--- /dev/null
+++ b/src/icons/flags/kg.png
Binary files differ
diff --git a/src/icons/flags/kh.png b/src/icons/flags/kh.png
new file mode 100644
index 0000000..a7a22ca
--- /dev/null
+++ b/src/icons/flags/kh.png
Binary files differ
diff --git a/src/icons/flags/ki.png b/src/icons/flags/ki.png
new file mode 100644
index 0000000..7ad658b
--- /dev/null
+++ b/src/icons/flags/ki.png
Binary files differ
diff --git a/src/icons/flags/km.png b/src/icons/flags/km.png
new file mode 100644
index 0000000..ab9650d
--- /dev/null
+++ b/src/icons/flags/km.png
Binary files differ
diff --git a/src/icons/flags/kn.png b/src/icons/flags/kn.png
new file mode 100644
index 0000000..5307bca
--- /dev/null
+++ b/src/icons/flags/kn.png
Binary files differ
diff --git a/src/icons/flags/kp.png b/src/icons/flags/kp.png
new file mode 100644
index 0000000..4409a1d
--- /dev/null
+++ b/src/icons/flags/kp.png
Binary files differ
diff --git a/src/icons/flags/kr.png b/src/icons/flags/kr.png
new file mode 100644
index 0000000..d26badb
--- /dev/null
+++ b/src/icons/flags/kr.png
Binary files differ
diff --git a/src/icons/flags/kw.png b/src/icons/flags/kw.png
new file mode 100644
index 0000000..da1f2a1
--- /dev/null
+++ b/src/icons/flags/kw.png
Binary files differ
diff --git a/src/icons/flags/ky.png b/src/icons/flags/ky.png
new file mode 100644
index 0000000..5f1cc6d
--- /dev/null
+++ b/src/icons/flags/ky.png
Binary files differ
diff --git a/src/icons/flags/kz.png b/src/icons/flags/kz.png
new file mode 100644
index 0000000..71ab9fe
--- /dev/null
+++ b/src/icons/flags/kz.png
Binary files differ
diff --git a/src/icons/flags/la.png b/src/icons/flags/la.png
new file mode 100644
index 0000000..e6aa606
--- /dev/null
+++ b/src/icons/flags/la.png
Binary files differ
diff --git a/src/icons/flags/lb.png b/src/icons/flags/lb.png
new file mode 100644
index 0000000..eaf7d76
--- /dev/null
+++ b/src/icons/flags/lb.png
Binary files differ
diff --git a/src/icons/flags/lc.png b/src/icons/flags/lc.png
new file mode 100644
index 0000000..f725f33
--- /dev/null
+++ b/src/icons/flags/lc.png
Binary files differ
diff --git a/src/icons/flags/li.png b/src/icons/flags/li.png
new file mode 100644
index 0000000..5a0c1db
--- /dev/null
+++ b/src/icons/flags/li.png
Binary files differ
diff --git a/src/icons/flags/lk.png b/src/icons/flags/lk.png
new file mode 100644
index 0000000..99abe5f
--- /dev/null
+++ b/src/icons/flags/lk.png
Binary files differ
diff --git a/src/icons/flags/lr.png b/src/icons/flags/lr.png
new file mode 100644
index 0000000..b3b784d
--- /dev/null
+++ b/src/icons/flags/lr.png
Binary files differ
diff --git a/src/icons/flags/ls.png b/src/icons/flags/ls.png
new file mode 100644
index 0000000..e309e2c
--- /dev/null
+++ b/src/icons/flags/ls.png
Binary files differ
diff --git a/src/icons/flags/lt.png b/src/icons/flags/lt.png
new file mode 100644
index 0000000..807ed07
--- /dev/null
+++ b/src/icons/flags/lt.png
Binary files differ
diff --git a/src/icons/flags/lu.png b/src/icons/flags/lu.png
new file mode 100644
index 0000000..dca6d5b
--- /dev/null
+++ b/src/icons/flags/lu.png
Binary files differ
diff --git a/src/icons/flags/lv.png b/src/icons/flags/lv.png
new file mode 100644
index 0000000..1fa7906
--- /dev/null
+++ b/src/icons/flags/lv.png
Binary files differ
diff --git a/src/icons/flags/ly.png b/src/icons/flags/ly.png
new file mode 100644
index 0000000..924660f
--- /dev/null
+++ b/src/icons/flags/ly.png
Binary files differ
diff --git a/src/icons/flags/ma.png b/src/icons/flags/ma.png
new file mode 100644
index 0000000..60f2430
--- /dev/null
+++ b/src/icons/flags/ma.png
Binary files differ
diff --git a/src/icons/flags/mc.png b/src/icons/flags/mc.png
new file mode 100644
index 0000000..ea9a609
--- /dev/null
+++ b/src/icons/flags/mc.png
Binary files differ
diff --git a/src/icons/flags/md.png b/src/icons/flags/md.png
new file mode 100644
index 0000000..09b1d62
--- /dev/null
+++ b/src/icons/flags/md.png
Binary files differ
diff --git a/src/icons/flags/me.png b/src/icons/flags/me.png
new file mode 100644
index 0000000..3193391
--- /dev/null
+++ b/src/icons/flags/me.png
Binary files differ
diff --git a/src/icons/flags/mf.png b/src/icons/flags/mf.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/mf.png
Binary files differ
diff --git a/src/icons/flags/mg.png b/src/icons/flags/mg.png
new file mode 100644
index 0000000..e042935
--- /dev/null
+++ b/src/icons/flags/mg.png
Binary files differ
diff --git a/src/icons/flags/mh.png b/src/icons/flags/mh.png
new file mode 100644
index 0000000..27b1d55
--- /dev/null
+++ b/src/icons/flags/mh.png
Binary files differ
diff --git a/src/icons/flags/mk.png b/src/icons/flags/mk.png
new file mode 100644
index 0000000..15e15d8
--- /dev/null
+++ b/src/icons/flags/mk.png
Binary files differ
diff --git a/src/icons/flags/ml.png b/src/icons/flags/ml.png
new file mode 100644
index 0000000..fac0e52
--- /dev/null
+++ b/src/icons/flags/ml.png
Binary files differ
diff --git a/src/icons/flags/mm.png b/src/icons/flags/mm.png
new file mode 100644
index 0000000..f3ac436
--- /dev/null
+++ b/src/icons/flags/mm.png
Binary files differ
diff --git a/src/icons/flags/mn.png b/src/icons/flags/mn.png
new file mode 100644
index 0000000..e19cca5
--- /dev/null
+++ b/src/icons/flags/mn.png
Binary files differ
diff --git a/src/icons/flags/mo.png b/src/icons/flags/mo.png
new file mode 100644
index 0000000..612eb42
--- /dev/null
+++ b/src/icons/flags/mo.png
Binary files differ
diff --git a/src/icons/flags/mp.png b/src/icons/flags/mp.png
new file mode 100644
index 0000000..d5d1d1b
--- /dev/null
+++ b/src/icons/flags/mp.png
Binary files differ
diff --git a/src/icons/flags/mq.png b/src/icons/flags/mq.png
new file mode 100644
index 0000000..29a1e08
--- /dev/null
+++ b/src/icons/flags/mq.png
Binary files differ
diff --git a/src/icons/flags/mr.png b/src/icons/flags/mr.png
new file mode 100644
index 0000000..12002ca
--- /dev/null
+++ b/src/icons/flags/mr.png
Binary files differ
diff --git a/src/icons/flags/ms.png b/src/icons/flags/ms.png
new file mode 100644
index 0000000..3bc3bc3
--- /dev/null
+++ b/src/icons/flags/ms.png
Binary files differ
diff --git a/src/icons/flags/mt.png b/src/icons/flags/mt.png
new file mode 100644
index 0000000..0ceb626
--- /dev/null
+++ b/src/icons/flags/mt.png
Binary files differ
diff --git a/src/icons/flags/mu.png b/src/icons/flags/mu.png
new file mode 100644
index 0000000..0ef8350
--- /dev/null
+++ b/src/icons/flags/mu.png
Binary files differ
diff --git a/src/icons/flags/mv.png b/src/icons/flags/mv.png
new file mode 100644
index 0000000..cffced1
--- /dev/null
+++ b/src/icons/flags/mv.png
Binary files differ
diff --git a/src/icons/flags/mw.png b/src/icons/flags/mw.png
new file mode 100644
index 0000000..898308d
--- /dev/null
+++ b/src/icons/flags/mw.png
Binary files differ
diff --git a/src/icons/flags/mx.png b/src/icons/flags/mx.png
new file mode 100644
index 0000000..fd0503f
--- /dev/null
+++ b/src/icons/flags/mx.png
Binary files differ
diff --git a/src/icons/flags/my.png b/src/icons/flags/my.png
new file mode 100644
index 0000000..75281de
--- /dev/null
+++ b/src/icons/flags/my.png
Binary files differ
diff --git a/src/icons/flags/mz.png b/src/icons/flags/mz.png
new file mode 100644
index 0000000..129de8b
--- /dev/null
+++ b/src/icons/flags/mz.png
Binary files differ
diff --git a/src/icons/flags/na.png b/src/icons/flags/na.png
new file mode 100644
index 0000000..6b77f7c
--- /dev/null
+++ b/src/icons/flags/na.png
Binary files differ
diff --git a/src/icons/flags/nc.png b/src/icons/flags/nc.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/nc.png
Binary files differ
diff --git a/src/icons/flags/ne.png b/src/icons/flags/ne.png
new file mode 100644
index 0000000..015016d
--- /dev/null
+++ b/src/icons/flags/ne.png
Binary files differ
diff --git a/src/icons/flags/nf.png b/src/icons/flags/nf.png
new file mode 100644
index 0000000..b1318c4
--- /dev/null
+++ b/src/icons/flags/nf.png
Binary files differ
diff --git a/src/icons/flags/ng.png b/src/icons/flags/ng.png
new file mode 100644
index 0000000..ab0c95c
--- /dev/null
+++ b/src/icons/flags/ng.png
Binary files differ
diff --git a/src/icons/flags/ni.png b/src/icons/flags/ni.png
new file mode 100644
index 0000000..a9cda37
--- /dev/null
+++ b/src/icons/flags/ni.png
Binary files differ
diff --git a/src/icons/flags/nl.png b/src/icons/flags/nl.png
new file mode 100644
index 0000000..150a21b
--- /dev/null
+++ b/src/icons/flags/nl.png
Binary files differ
diff --git a/src/icons/flags/no.png b/src/icons/flags/no.png
new file mode 100644
index 0000000..dfd5f18
--- /dev/null
+++ b/src/icons/flags/no.png
Binary files differ
diff --git a/src/icons/flags/np.png b/src/icons/flags/np.png
new file mode 100644
index 0000000..9d6914a
--- /dev/null
+++ b/src/icons/flags/np.png
Binary files differ
diff --git a/src/icons/flags/nr.png b/src/icons/flags/nr.png
new file mode 100644
index 0000000..e77f554
--- /dev/null
+++ b/src/icons/flags/nr.png
Binary files differ
diff --git a/src/icons/flags/nu.png b/src/icons/flags/nu.png
new file mode 100644
index 0000000..fe61e1d
--- /dev/null
+++ b/src/icons/flags/nu.png
Binary files differ
diff --git a/src/icons/flags/nz.png b/src/icons/flags/nz.png
new file mode 100644
index 0000000..dadd706
--- /dev/null
+++ b/src/icons/flags/nz.png
Binary files differ
diff --git a/src/icons/flags/om.png b/src/icons/flags/om.png
new file mode 100644
index 0000000..92f7c9e
--- /dev/null
+++ b/src/icons/flags/om.png
Binary files differ
diff --git a/src/icons/flags/pa.png b/src/icons/flags/pa.png
new file mode 100644
index 0000000..0af87bb
--- /dev/null
+++ b/src/icons/flags/pa.png
Binary files differ
diff --git a/src/icons/flags/pe.png b/src/icons/flags/pe.png
new file mode 100644
index 0000000..39f0a90
--- /dev/null
+++ b/src/icons/flags/pe.png
Binary files differ
diff --git a/src/icons/flags/pf.png b/src/icons/flags/pf.png
new file mode 100644
index 0000000..968de28
--- /dev/null
+++ b/src/icons/flags/pf.png
Binary files differ
diff --git a/src/icons/flags/pg.png b/src/icons/flags/pg.png
new file mode 100644
index 0000000..80de75a
--- /dev/null
+++ b/src/icons/flags/pg.png
Binary files differ
diff --git a/src/icons/flags/ph.png b/src/icons/flags/ph.png
new file mode 100644
index 0000000..66b8859
--- /dev/null
+++ b/src/icons/flags/ph.png
Binary files differ
diff --git a/src/icons/flags/pk.png b/src/icons/flags/pk.png
new file mode 100644
index 0000000..d4785e5
--- /dev/null
+++ b/src/icons/flags/pk.png
Binary files differ
diff --git a/src/icons/flags/pl.png b/src/icons/flags/pl.png
new file mode 100644
index 0000000..1bc0568
--- /dev/null
+++ b/src/icons/flags/pl.png
Binary files differ
diff --git a/src/icons/flags/pm.png b/src/icons/flags/pm.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/pm.png
Binary files differ
diff --git a/src/icons/flags/pn.png b/src/icons/flags/pn.png
new file mode 100644
index 0000000..e97ffde
--- /dev/null
+++ b/src/icons/flags/pn.png
Binary files differ
diff --git a/src/icons/flags/pr.png b/src/icons/flags/pr.png
new file mode 100644
index 0000000..073c888
--- /dev/null
+++ b/src/icons/flags/pr.png
Binary files differ
diff --git a/src/icons/flags/ps.png b/src/icons/flags/ps.png
new file mode 100644
index 0000000..05067db
--- /dev/null
+++ b/src/icons/flags/ps.png
Binary files differ
diff --git a/src/icons/flags/pt.png b/src/icons/flags/pt.png
new file mode 100644
index 0000000..86e3bac
--- /dev/null
+++ b/src/icons/flags/pt.png
Binary files differ
diff --git a/src/icons/flags/pw.png b/src/icons/flags/pw.png
new file mode 100644
index 0000000..c54d250
--- /dev/null
+++ b/src/icons/flags/pw.png
Binary files differ
diff --git a/src/icons/flags/py.png b/src/icons/flags/py.png
new file mode 100644
index 0000000..6da0be7
--- /dev/null
+++ b/src/icons/flags/py.png
Binary files differ
diff --git a/src/icons/flags/qa.png b/src/icons/flags/qa.png
new file mode 100644
index 0000000..4c1cf0e
--- /dev/null
+++ b/src/icons/flags/qa.png
Binary files differ
diff --git a/src/icons/flags/re.png b/src/icons/flags/re.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/re.png
Binary files differ
diff --git a/src/icons/flags/ro.png b/src/icons/flags/ro.png
new file mode 100644
index 0000000..c24ed26
--- /dev/null
+++ b/src/icons/flags/ro.png
Binary files differ
diff --git a/src/icons/flags/rs.png b/src/icons/flags/rs.png
new file mode 100644
index 0000000..9b396a8
--- /dev/null
+++ b/src/icons/flags/rs.png
Binary files differ
diff --git a/src/icons/flags/ru.png b/src/icons/flags/ru.png
new file mode 100644
index 0000000..a59d482
--- /dev/null
+++ b/src/icons/flags/ru.png
Binary files differ
diff --git a/src/icons/flags/rw.png b/src/icons/flags/rw.png
new file mode 100644
index 0000000..d6489d2
--- /dev/null
+++ b/src/icons/flags/rw.png
Binary files differ
diff --git a/src/icons/flags/sa.png b/src/icons/flags/sa.png
new file mode 100644
index 0000000..472c29f
--- /dev/null
+++ b/src/icons/flags/sa.png
Binary files differ
diff --git a/src/icons/flags/sb.png b/src/icons/flags/sb.png
new file mode 100644
index 0000000..2fcb136
--- /dev/null
+++ b/src/icons/flags/sb.png
Binary files differ
diff --git a/src/icons/flags/sc.png b/src/icons/flags/sc.png
new file mode 100644
index 0000000..c7ca285
--- /dev/null
+++ b/src/icons/flags/sc.png
Binary files differ
diff --git a/src/icons/flags/sd.png b/src/icons/flags/sd.png
new file mode 100644
index 0000000..7c85bc3
--- /dev/null
+++ b/src/icons/flags/sd.png
Binary files differ
diff --git a/src/icons/flags/se.png b/src/icons/flags/se.png
new file mode 100644
index 0000000..236ca88
--- /dev/null
+++ b/src/icons/flags/se.png
Binary files differ
diff --git a/src/icons/flags/sg.png b/src/icons/flags/sg.png
new file mode 100644
index 0000000..49116a0
--- /dev/null
+++ b/src/icons/flags/sg.png
Binary files differ
diff --git a/src/icons/flags/sh.png b/src/icons/flags/sh.png
new file mode 100644
index 0000000..25e8cdc
--- /dev/null
+++ b/src/icons/flags/sh.png
Binary files differ
diff --git a/src/icons/flags/si.png b/src/icons/flags/si.png
new file mode 100644
index 0000000..4f99a02
--- /dev/null
+++ b/src/icons/flags/si.png
Binary files differ
diff --git a/src/icons/flags/sj.png b/src/icons/flags/sj.png
new file mode 100644
index 0000000..dfd5f18
--- /dev/null
+++ b/src/icons/flags/sj.png
Binary files differ
diff --git a/src/icons/flags/sk.png b/src/icons/flags/sk.png
new file mode 100644
index 0000000..e68f87e
--- /dev/null
+++ b/src/icons/flags/sk.png
Binary files differ
diff --git a/src/icons/flags/sl.png b/src/icons/flags/sl.png
new file mode 100644
index 0000000..76f8408
--- /dev/null
+++ b/src/icons/flags/sl.png
Binary files differ
diff --git a/src/icons/flags/sm.png b/src/icons/flags/sm.png
new file mode 100644
index 0000000..7c9ee8a
--- /dev/null
+++ b/src/icons/flags/sm.png
Binary files differ
diff --git a/src/icons/flags/sn.png b/src/icons/flags/sn.png
new file mode 100644
index 0000000..eb14eed
--- /dev/null
+++ b/src/icons/flags/sn.png
Binary files differ
diff --git a/src/icons/flags/so.png b/src/icons/flags/so.png
new file mode 100644
index 0000000..2699e4f
--- /dev/null
+++ b/src/icons/flags/so.png
Binary files differ
diff --git a/src/icons/flags/sr.png b/src/icons/flags/sr.png
new file mode 100644
index 0000000..2bd8d56
--- /dev/null
+++ b/src/icons/flags/sr.png
Binary files differ
diff --git a/src/icons/flags/ss.png b/src/icons/flags/ss.png
new file mode 100644
index 0000000..a5de2d1
--- /dev/null
+++ b/src/icons/flags/ss.png
Binary files differ
diff --git a/src/icons/flags/st.png b/src/icons/flags/st.png
new file mode 100644
index 0000000..7839728
--- /dev/null
+++ b/src/icons/flags/st.png
Binary files differ
diff --git a/src/icons/flags/sv.png b/src/icons/flags/sv.png
new file mode 100644
index 0000000..499636a
--- /dev/null
+++ b/src/icons/flags/sv.png
Binary files differ
diff --git a/src/icons/flags/sx.png b/src/icons/flags/sx.png
new file mode 100644
index 0000000..bd03dc5
--- /dev/null
+++ b/src/icons/flags/sx.png
Binary files differ
diff --git a/src/icons/flags/sy.png b/src/icons/flags/sy.png
new file mode 100644
index 0000000..01a6080
--- /dev/null
+++ b/src/icons/flags/sy.png
Binary files differ
diff --git a/src/icons/flags/sz.png b/src/icons/flags/sz.png
new file mode 100644
index 0000000..8d3865a
--- /dev/null
+++ b/src/icons/flags/sz.png
Binary files differ
diff --git a/src/icons/flags/tc.png b/src/icons/flags/tc.png
new file mode 100644
index 0000000..3f0e40d
--- /dev/null
+++ b/src/icons/flags/tc.png
Binary files differ
diff --git a/src/icons/flags/td.png b/src/icons/flags/td.png
new file mode 100644
index 0000000..c24ed26
--- /dev/null
+++ b/src/icons/flags/td.png
Binary files differ
diff --git a/src/icons/flags/tf.png b/src/icons/flags/tf.png
new file mode 100644
index 0000000..9f441be
--- /dev/null
+++ b/src/icons/flags/tf.png
Binary files differ
diff --git a/src/icons/flags/tg.png b/src/icons/flags/tg.png
new file mode 100644
index 0000000..3a7ed6f
--- /dev/null
+++ b/src/icons/flags/tg.png
Binary files differ
diff --git a/src/icons/flags/th.png b/src/icons/flags/th.png
new file mode 100644
index 0000000..3a93ae5
--- /dev/null
+++ b/src/icons/flags/th.png
Binary files differ
diff --git a/src/icons/flags/tj.png b/src/icons/flags/tj.png
new file mode 100644
index 0000000..f903680
--- /dev/null
+++ b/src/icons/flags/tj.png
Binary files differ
diff --git a/src/icons/flags/tk.png b/src/icons/flags/tk.png
new file mode 100644
index 0000000..4e5ab6c
--- /dev/null
+++ b/src/icons/flags/tk.png
Binary files differ
diff --git a/src/icons/flags/tl.png b/src/icons/flags/tl.png
new file mode 100644
index 0000000..0ab578c
--- /dev/null
+++ b/src/icons/flags/tl.png
Binary files differ
diff --git a/src/icons/flags/tm.png b/src/icons/flags/tm.png
new file mode 100644
index 0000000..380ef65
--- /dev/null
+++ b/src/icons/flags/tm.png
Binary files differ
diff --git a/src/icons/flags/tn.png b/src/icons/flags/tn.png
new file mode 100644
index 0000000..75f6b97
--- /dev/null
+++ b/src/icons/flags/tn.png
Binary files differ
diff --git a/src/icons/flags/to.png b/src/icons/flags/to.png
new file mode 100644
index 0000000..42e8a32
--- /dev/null
+++ b/src/icons/flags/to.png
Binary files differ
diff --git a/src/icons/flags/tr.png b/src/icons/flags/tr.png
new file mode 100644
index 0000000..bf22cd1
--- /dev/null
+++ b/src/icons/flags/tr.png
Binary files differ
diff --git a/src/icons/flags/tt.png b/src/icons/flags/tt.png
new file mode 100644
index 0000000..3fd6ee5
--- /dev/null
+++ b/src/icons/flags/tt.png
Binary files differ
diff --git a/src/icons/flags/tv.png b/src/icons/flags/tv.png
new file mode 100644
index 0000000..d466234
--- /dev/null
+++ b/src/icons/flags/tv.png
Binary files differ
diff --git a/src/icons/flags/tw.png b/src/icons/flags/tw.png
new file mode 100644
index 0000000..af92b09
--- /dev/null
+++ b/src/icons/flags/tw.png
Binary files differ
diff --git a/src/icons/flags/tz.png b/src/icons/flags/tz.png
new file mode 100644
index 0000000..b30fd1e
--- /dev/null
+++ b/src/icons/flags/tz.png
Binary files differ
diff --git a/src/icons/flags/ua.png b/src/icons/flags/ua.png
new file mode 100644
index 0000000..4a8c384
--- /dev/null
+++ b/src/icons/flags/ua.png
Binary files differ
diff --git a/src/icons/flags/ug.png b/src/icons/flags/ug.png
new file mode 100644
index 0000000..8b6c38c
--- /dev/null
+++ b/src/icons/flags/ug.png
Binary files differ
diff --git a/src/icons/flags/um.png b/src/icons/flags/um.png
new file mode 100644
index 0000000..754107f
--- /dev/null
+++ b/src/icons/flags/um.png
Binary files differ
diff --git a/src/icons/flags/us.png b/src/icons/flags/us.png
new file mode 100644
index 0000000..754107f
--- /dev/null
+++ b/src/icons/flags/us.png
Binary files differ
diff --git a/src/icons/flags/uy.png b/src/icons/flags/uy.png
new file mode 100644
index 0000000..bbee01b
--- /dev/null
+++ b/src/icons/flags/uy.png
Binary files differ
diff --git a/src/icons/flags/uz.png b/src/icons/flags/uz.png
new file mode 100644
index 0000000..a038a5a
--- /dev/null
+++ b/src/icons/flags/uz.png
Binary files differ
diff --git a/src/icons/flags/va.png b/src/icons/flags/va.png
new file mode 100644
index 0000000..8d16c46
--- /dev/null
+++ b/src/icons/flags/va.png
Binary files differ
diff --git a/src/icons/flags/vc.png b/src/icons/flags/vc.png
new file mode 100644
index 0000000..4e84e4e
--- /dev/null
+++ b/src/icons/flags/vc.png
Binary files differ
diff --git a/src/icons/flags/ve.png b/src/icons/flags/ve.png
new file mode 100644
index 0000000..b722d5a
--- /dev/null
+++ b/src/icons/flags/ve.png
Binary files differ
diff --git a/src/icons/flags/vg.png b/src/icons/flags/vg.png
new file mode 100644
index 0000000..5cbc2c3
--- /dev/null
+++ b/src/icons/flags/vg.png
Binary files differ
diff --git a/src/icons/flags/vi.png b/src/icons/flags/vi.png
new file mode 100644
index 0000000..cfb08c1
--- /dev/null
+++ b/src/icons/flags/vi.png
Binary files differ
diff --git a/src/icons/flags/vn.png b/src/icons/flags/vn.png
new file mode 100644
index 0000000..31b06d1
--- /dev/null
+++ b/src/icons/flags/vn.png
Binary files differ
diff --git a/src/icons/flags/vu.png b/src/icons/flags/vu.png
new file mode 100644
index 0000000..e541dad
--- /dev/null
+++ b/src/icons/flags/vu.png
Binary files differ
diff --git a/src/icons/flags/wf.png b/src/icons/flags/wf.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/wf.png
Binary files differ
diff --git a/src/icons/flags/ws.png b/src/icons/flags/ws.png
new file mode 100644
index 0000000..b922652
--- /dev/null
+++ b/src/icons/flags/ws.png
Binary files differ
diff --git a/src/icons/flags/xx.png b/src/icons/flags/xx.png
new file mode 100644
index 0000000..57bb938
--- /dev/null
+++ b/src/icons/flags/xx.png
Binary files differ
diff --git a/src/icons/flags/ye.png b/src/icons/flags/ye.png
new file mode 100644
index 0000000..335da96
--- /dev/null
+++ b/src/icons/flags/ye.png
Binary files differ
diff --git a/src/icons/flags/yt.png b/src/icons/flags/yt.png
new file mode 100644
index 0000000..1bd5304
--- /dev/null
+++ b/src/icons/flags/yt.png
Binary files differ
diff --git a/src/icons/flags/za.png b/src/icons/flags/za.png
new file mode 100644
index 0000000..0269b15
--- /dev/null
+++ b/src/icons/flags/za.png
Binary files differ
diff --git a/src/icons/flags/zm.png b/src/icons/flags/zm.png
new file mode 100644
index 0000000..aad2fab
--- /dev/null
+++ b/src/icons/flags/zm.png
Binary files differ
diff --git a/src/icons/flags/zw.png b/src/icons/flags/zw.png
new file mode 100644
index 0000000..432d90e
--- /dev/null
+++ b/src/icons/flags/zw.png
Binary files differ