From c3bcc1190d81c47bf8a6d78aaad8a7a8fd7f0137 Mon Sep 17 00:00:00 2001 From: Ian Renton Date: Sun, 26 Jul 2026 07:47:38 +0100 Subject: [PATCH] Structure changes to match other projects and minor logging improvements --- .idea/spothole.iml | 2 +- README.md | 24 +++++++++--------- alertproviders/http_alert_provider.py | 4 ++- core/lookup_helper.py | 12 ++++++++- core/sig_utils.py | 4 ++- server/handlers/quietstaticfilehandler.py | 16 ------------ server/webserver.py | 9 ++++--- solarconditionsproviders/giroionosonde.py | 5 +++- .../http_solar_conditions_provider.py | 4 ++- solarconditionsproviders/kc2gprop.py | 4 ++- spotproviders/hema.py | 4 ++- spotproviders/http_spot_provider.py | 3 +++ spotproviders/sota.py | 4 ++- {webassets => static}/apidocs/openapi.yml | 0 {webassets => static}/audio/ping.mp3 | Bin {webassets => static}/css/style.css | 0 {webassets => static}/favicon.ico | Bin {webassets => static}/img/banner.png | Bin {webassets => static}/img/flags/1.png | Bin {webassets => static}/img/flags/10.png | Bin {webassets => static}/img/flags/100.png | Bin {webassets => static}/img/flags/101.png | Bin {webassets => static}/img/flags/102.png | Bin {webassets => static}/img/flags/103.png | Bin {webassets => static}/img/flags/104.png | Bin {webassets => static}/img/flags/105.png | Bin {webassets => static}/img/flags/106.png | Bin {webassets => static}/img/flags/107.png | Bin {webassets => static}/img/flags/108.png | Bin {webassets => static}/img/flags/109.png | Bin {webassets => static}/img/flags/11.png | Bin {webassets => static}/img/flags/110.png | Bin {webassets => static}/img/flags/111.png | Bin {webassets => static}/img/flags/112.png | Bin {webassets => static}/img/flags/113.png | Bin {webassets => static}/img/flags/114.png | Bin {webassets => static}/img/flags/115.png | Bin {webassets => static}/img/flags/116.png | Bin {webassets => static}/img/flags/117.png | Bin {webassets => static}/img/flags/118.png | Bin {webassets => static}/img/flags/119.png | Bin {webassets => static}/img/flags/12.png | Bin {webassets => static}/img/flags/120.png | Bin {webassets => static}/img/flags/122.png | Bin {webassets => static}/img/flags/123.png | Bin {webassets => static}/img/flags/124.png | Bin {webassets => static}/img/flags/125.png | Bin {webassets => static}/img/flags/126.png | Bin {webassets => static}/img/flags/127.png | Bin {webassets => static}/img/flags/128.png | Bin {webassets => static}/img/flags/129.png | Bin {webassets => static}/img/flags/13.png | Bin {webassets => static}/img/flags/130.png | Bin {webassets => static}/img/flags/131.png | Bin {webassets => static}/img/flags/132.png | Bin {webassets => static}/img/flags/133.png | Bin {webassets => static}/img/flags/134.png | Bin {webassets => static}/img/flags/135.png | Bin {webassets => static}/img/flags/136.png | Bin {webassets => static}/img/flags/137.png | Bin {webassets => static}/img/flags/138.png | Bin {webassets => static}/img/flags/139.png | Bin {webassets => static}/img/flags/14.png | Bin {webassets => static}/img/flags/140.png | Bin {webassets => static}/img/flags/141.png | Bin {webassets => static}/img/flags/142.png | Bin {webassets => static}/img/flags/143.png | Bin {webassets => static}/img/flags/144.png | Bin {webassets => static}/img/flags/145.png | Bin {webassets => static}/img/flags/146.png | Bin {webassets => static}/img/flags/147.png | Bin {webassets => static}/img/flags/148.png | Bin {webassets => static}/img/flags/149.png | Bin {webassets => static}/img/flags/15.png | Bin {webassets => static}/img/flags/150.png | Bin {webassets => static}/img/flags/151.png | Bin {webassets => static}/img/flags/152.png | Bin {webassets => static}/img/flags/153.png | Bin {webassets => static}/img/flags/154.png | Bin {webassets => static}/img/flags/155.png | Bin {webassets => static}/img/flags/157.png | Bin {webassets => static}/img/flags/158.png | Bin {webassets => static}/img/flags/159.png | Bin {webassets => static}/img/flags/16.png | Bin {webassets => static}/img/flags/160.png | Bin {webassets => static}/img/flags/161.png | Bin {webassets => static}/img/flags/162.png | Bin {webassets => static}/img/flags/163.png | Bin {webassets => static}/img/flags/164.png | Bin {webassets => static}/img/flags/165.png | Bin {webassets => static}/img/flags/166.png | Bin {webassets => static}/img/flags/167.png | Bin {webassets => static}/img/flags/168.png | Bin {webassets => static}/img/flags/169.png | Bin {webassets => static}/img/flags/17.png | Bin {webassets => static}/img/flags/170.png | Bin {webassets => static}/img/flags/171.png | Bin {webassets => static}/img/flags/172.png | Bin {webassets => static}/img/flags/173.png | Bin {webassets => static}/img/flags/174.png | Bin {webassets => static}/img/flags/175.png | Bin {webassets => static}/img/flags/176.png | Bin {webassets => static}/img/flags/177.png | Bin {webassets => static}/img/flags/178.png | Bin {webassets => static}/img/flags/179.png | Bin {webassets => static}/img/flags/18.png | Bin {webassets => static}/img/flags/180.png | Bin {webassets => static}/img/flags/181.png | Bin {webassets => static}/img/flags/182.png | Bin {webassets => static}/img/flags/183.png | Bin {webassets => static}/img/flags/184.png | Bin {webassets => static}/img/flags/185.png | Bin {webassets => static}/img/flags/186.png | Bin {webassets => static}/img/flags/187.png | Bin {webassets => static}/img/flags/188.png | Bin {webassets => static}/img/flags/189.png | Bin {webassets => static}/img/flags/19.png | Bin {webassets => static}/img/flags/190.png | Bin {webassets => static}/img/flags/191.png | Bin {webassets => static}/img/flags/192.png | Bin {webassets => static}/img/flags/193.png | Bin {webassets => static}/img/flags/194.png | Bin {webassets => static}/img/flags/195.png | Bin {webassets => static}/img/flags/196.png | Bin {webassets => static}/img/flags/197.png | Bin {webassets => static}/img/flags/198.png | Bin {webassets => static}/img/flags/199.png | Bin {webassets => static}/img/flags/2.png | Bin {webassets => static}/img/flags/20.png | Bin {webassets => static}/img/flags/200.png | Bin {webassets => static}/img/flags/201.png | Bin {webassets => static}/img/flags/202.png | Bin {webassets => static}/img/flags/203.png | Bin {webassets => static}/img/flags/204.png | Bin {webassets => static}/img/flags/205.png | Bin {webassets => static}/img/flags/206.png | Bin {webassets => static}/img/flags/207.png | Bin {webassets => static}/img/flags/208.png | Bin {webassets => static}/img/flags/209.png | Bin {webassets => static}/img/flags/21.png | Bin {webassets => static}/img/flags/210.png | Bin {webassets => static}/img/flags/211.png | Bin {webassets => static}/img/flags/212.png | Bin {webassets => static}/img/flags/213.png | Bin {webassets => static}/img/flags/214.png | Bin {webassets => static}/img/flags/215.png | Bin {webassets => static}/img/flags/216.png | Bin {webassets => static}/img/flags/217.png | Bin {webassets => static}/img/flags/218.png | Bin {webassets => static}/img/flags/219.png | Bin {webassets => static}/img/flags/22.png | Bin {webassets => static}/img/flags/220.png | Bin {webassets => static}/img/flags/221.png | Bin {webassets => static}/img/flags/222.png | Bin {webassets => static}/img/flags/223.png | Bin {webassets => static}/img/flags/224.png | Bin {webassets => static}/img/flags/225.png | Bin {webassets => static}/img/flags/226.png | Bin {webassets => static}/img/flags/227.png | Bin {webassets => static}/img/flags/228.png | Bin {webassets => static}/img/flags/229.png | Bin {webassets => static}/img/flags/23.png | Bin {webassets => static}/img/flags/230.png | Bin {webassets => static}/img/flags/231.png | Bin {webassets => static}/img/flags/232.png | Bin {webassets => static}/img/flags/233.png | Bin {webassets => static}/img/flags/234.png | Bin {webassets => static}/img/flags/235.png | Bin {webassets => static}/img/flags/236.png | Bin {webassets => static}/img/flags/237.png | Bin {webassets => static}/img/flags/238.png | Bin {webassets => static}/img/flags/239.png | Bin {webassets => static}/img/flags/24.png | Bin {webassets => static}/img/flags/240.png | Bin {webassets => static}/img/flags/241.png | Bin {webassets => static}/img/flags/242.png | Bin {webassets => static}/img/flags/243.png | Bin {webassets => static}/img/flags/244.png | Bin {webassets => static}/img/flags/245.png | Bin {webassets => static}/img/flags/246.png | Bin {webassets => static}/img/flags/247.png | Bin {webassets => static}/img/flags/248.png | Bin {webassets => static}/img/flags/249.png | Bin {webassets => static}/img/flags/25.png | Bin {webassets => static}/img/flags/250.png | Bin {webassets => static}/img/flags/251.png | Bin {webassets => static}/img/flags/252.png | Bin {webassets => static}/img/flags/253.png | Bin {webassets => static}/img/flags/254.png | Bin {webassets => static}/img/flags/255.png | Bin {webassets => static}/img/flags/256.png | Bin {webassets => static}/img/flags/257.png | Bin {webassets => static}/img/flags/258.png | Bin {webassets => static}/img/flags/259.png | Bin {webassets => static}/img/flags/26.png | Bin {webassets => static}/img/flags/260.png | Bin {webassets => static}/img/flags/261.png | Bin {webassets => static}/img/flags/262.png | Bin {webassets => static}/img/flags/263.png | Bin {webassets => static}/img/flags/264.png | Bin {webassets => static}/img/flags/265.png | Bin {webassets => static}/img/flags/266.png | Bin {webassets => static}/img/flags/267.png | Bin {webassets => static}/img/flags/268.png | Bin {webassets => static}/img/flags/269.png | Bin {webassets => static}/img/flags/27.png | Bin {webassets => static}/img/flags/270.png | Bin {webassets => static}/img/flags/271.png | Bin {webassets => static}/img/flags/272.png | Bin {webassets => static}/img/flags/273.png | Bin {webassets => static}/img/flags/274.png | Bin {webassets => static}/img/flags/275.png | Bin {webassets => static}/img/flags/276.png | Bin {webassets => static}/img/flags/277.png | Bin {webassets => static}/img/flags/278.png | Bin {webassets => static}/img/flags/279.png | Bin {webassets => static}/img/flags/28.png | Bin {webassets => static}/img/flags/280.png | Bin {webassets => static}/img/flags/281.png | Bin {webassets => static}/img/flags/282.png | Bin {webassets => static}/img/flags/283.png | Bin {webassets => static}/img/flags/284.png | Bin {webassets => static}/img/flags/285.png | Bin {webassets => static}/img/flags/286.png | Bin {webassets => static}/img/flags/287.png | Bin {webassets => static}/img/flags/288.png | Bin {webassets => static}/img/flags/289.png | Bin {webassets => static}/img/flags/29.png | Bin {webassets => static}/img/flags/291.png | Bin {webassets => static}/img/flags/292.png | Bin {webassets => static}/img/flags/293.png | Bin {webassets => static}/img/flags/294.png | Bin {webassets => static}/img/flags/295.png | Bin {webassets => static}/img/flags/296.png | Bin {webassets => static}/img/flags/297.png | Bin {webassets => static}/img/flags/298.png | Bin {webassets => static}/img/flags/299.png | Bin {webassets => static}/img/flags/3.png | Bin {webassets => static}/img/flags/30.png | Bin {webassets => static}/img/flags/301.png | Bin {webassets => static}/img/flags/302.png | Bin {webassets => static}/img/flags/303.png | Bin {webassets => static}/img/flags/304.png | Bin {webassets => static}/img/flags/305.png | Bin {webassets => static}/img/flags/306.png | Bin {webassets => static}/img/flags/307.png | Bin {webassets => static}/img/flags/308.png | Bin {webassets => static}/img/flags/309.png | Bin {webassets => static}/img/flags/31.png | Bin {webassets => static}/img/flags/312.png | Bin {webassets => static}/img/flags/315.png | Bin {webassets => static}/img/flags/318.png | Bin {webassets => static}/img/flags/32.png | Bin {webassets => static}/img/flags/321.png | Bin {webassets => static}/img/flags/324.png | Bin {webassets => static}/img/flags/327.png | Bin {webassets => static}/img/flags/33.png | Bin {webassets => static}/img/flags/330.png | Bin {webassets => static}/img/flags/333.png | Bin {webassets => static}/img/flags/336.png | Bin {webassets => static}/img/flags/339.png | Bin {webassets => static}/img/flags/34.png | Bin {webassets => static}/img/flags/342.png | Bin {webassets => static}/img/flags/344.png | Bin {webassets => static}/img/flags/345.png | Bin {webassets => static}/img/flags/348.png | Bin {webassets => static}/img/flags/35.png | Bin {webassets => static}/img/flags/354.png | Bin {webassets => static}/img/flags/36.png | Bin {webassets => static}/img/flags/363.png | Bin {webassets => static}/img/flags/369.png | Bin {webassets => static}/img/flags/37.png | Bin {webassets => static}/img/flags/370.png | Bin {webassets => static}/img/flags/372.png | Bin {webassets => static}/img/flags/375.png | Bin {webassets => static}/img/flags/376.png | Bin {webassets => static}/img/flags/378.png | Bin {webassets => static}/img/flags/379.png | Bin {webassets => static}/img/flags/38.png | Bin {webassets => static}/img/flags/381.png | Bin {webassets => static}/img/flags/382.png | Bin {webassets => static}/img/flags/384.png | Bin {webassets => static}/img/flags/386.png | Bin {webassets => static}/img/flags/387.png | Bin {webassets => static}/img/flags/39.png | Bin {webassets => static}/img/flags/390.png | Bin {webassets => static}/img/flags/391.png | Bin {webassets => static}/img/flags/4.png | Bin {webassets => static}/img/flags/40.png | Bin {webassets => static}/img/flags/400.png | Bin {webassets => static}/img/flags/401.png | Bin {webassets => static}/img/flags/402.png | Bin {webassets => static}/img/flags/404.png | Bin {webassets => static}/img/flags/406.png | Bin {webassets => static}/img/flags/408.png | Bin {webassets => static}/img/flags/409.png | Bin {webassets => static}/img/flags/41.png | Bin {webassets => static}/img/flags/410.png | Bin {webassets => static}/img/flags/411.png | Bin {webassets => static}/img/flags/412.png | Bin {webassets => static}/img/flags/414.png | Bin {webassets => static}/img/flags/416.png | Bin {webassets => static}/img/flags/42.png | Bin {webassets => static}/img/flags/420.png | Bin {webassets => static}/img/flags/422.png | Bin {webassets => static}/img/flags/424.png | Bin {webassets => static}/img/flags/428.png | Bin {webassets => static}/img/flags/43.png | Bin {webassets => static}/img/flags/430.png | Bin {webassets => static}/img/flags/432.png | Bin {webassets => static}/img/flags/434.png | Bin {webassets => static}/img/flags/436.png | Bin {webassets => static}/img/flags/438.png | Bin {webassets => static}/img/flags/44.png | Bin {webassets => static}/img/flags/440.png | Bin {webassets => static}/img/flags/442.png | Bin {webassets => static}/img/flags/444.png | Bin {webassets => static}/img/flags/446.png | Bin {webassets => static}/img/flags/45.png | Bin {webassets => static}/img/flags/450.png | Bin {webassets => static}/img/flags/452.png | Bin {webassets => static}/img/flags/453.png | Bin {webassets => static}/img/flags/454.png | Bin {webassets => static}/img/flags/456.png | Bin {webassets => static}/img/flags/458.png | Bin {webassets => static}/img/flags/46.png | Bin {webassets => static}/img/flags/460.png | Bin {webassets => static}/img/flags/462.png | Bin {webassets => static}/img/flags/464.png | Bin {webassets => static}/img/flags/466.png | Bin {webassets => static}/img/flags/468.png | Bin {webassets => static}/img/flags/47.png | Bin {webassets => static}/img/flags/470.png | Bin {webassets => static}/img/flags/474.png | Bin {webassets => static}/img/flags/478.png | Bin {webassets => static}/img/flags/48.png | Bin {webassets => static}/img/flags/480.png | Bin {webassets => static}/img/flags/482.png | Bin {webassets => static}/img/flags/483.png | Bin {webassets => static}/img/flags/488.png | Bin {webassets => static}/img/flags/489.png | Bin {webassets => static}/img/flags/49.png | Bin {webassets => static}/img/flags/490.png | Bin {webassets => static}/img/flags/492.png | Bin {webassets => static}/img/flags/493.png | Bin {webassets => static}/img/flags/497.png | Bin {webassets => static}/img/flags/499.png | Bin {webassets => static}/img/flags/5.png | Bin {webassets => static}/img/flags/50.png | Bin {webassets => static}/img/flags/501.png | Bin {webassets => static}/img/flags/502.png | Bin {webassets => static}/img/flags/503.png | Bin {webassets => static}/img/flags/504.png | Bin {webassets => static}/img/flags/505.png | Bin {webassets => static}/img/flags/506.png | Bin {webassets => static}/img/flags/507.png | Bin {webassets => static}/img/flags/508.png | Bin {webassets => static}/img/flags/509.png | Bin {webassets => static}/img/flags/51.png | Bin {webassets => static}/img/flags/510.png | Bin {webassets => static}/img/flags/511.png | Bin {webassets => static}/img/flags/512.png | Bin {webassets => static}/img/flags/513.png | Bin {webassets => static}/img/flags/514.png | Bin {webassets => static}/img/flags/515.png | Bin {webassets => static}/img/flags/516.png | Bin {webassets => static}/img/flags/517.png | Bin {webassets => static}/img/flags/518.png | Bin {webassets => static}/img/flags/519.png | Bin {webassets => static}/img/flags/52.png | Bin {webassets => static}/img/flags/520.png | Bin {webassets => static}/img/flags/521.png | Bin {webassets => static}/img/flags/522.png | Bin {webassets => static}/img/flags/53.png | Bin {webassets => static}/img/flags/54.png | Bin {webassets => static}/img/flags/55.png | Bin {webassets => static}/img/flags/56.png | Bin {webassets => static}/img/flags/57.png | Bin {webassets => static}/img/flags/58.png | Bin {webassets => static}/img/flags/59.png | Bin {webassets => static}/img/flags/6.png | Bin {webassets => static}/img/flags/60.png | Bin {webassets => static}/img/flags/61.png | Bin {webassets => static}/img/flags/62.png | Bin {webassets => static}/img/flags/63.png | Bin {webassets => static}/img/flags/64.png | Bin {webassets => static}/img/flags/65.png | Bin {webassets => static}/img/flags/66.png | Bin {webassets => static}/img/flags/67.png | Bin {webassets => static}/img/flags/68.png | Bin {webassets => static}/img/flags/69.png | Bin {webassets => static}/img/flags/7.png | Bin {webassets => static}/img/flags/70.png | Bin {webassets => static}/img/flags/71.png | Bin {webassets => static}/img/flags/72.png | Bin {webassets => static}/img/flags/74.png | Bin {webassets => static}/img/flags/75.png | Bin {webassets => static}/img/flags/76.png | Bin {webassets => static}/img/flags/77.png | Bin {webassets => static}/img/flags/78.png | Bin {webassets => static}/img/flags/79.png | Bin {webassets => static}/img/flags/8.png | Bin {webassets => static}/img/flags/80.png | Bin {webassets => static}/img/flags/81.png | Bin {webassets => static}/img/flags/82.png | Bin {webassets => static}/img/flags/84.png | Bin {webassets => static}/img/flags/85.png | Bin {webassets => static}/img/flags/86.png | Bin {webassets => static}/img/flags/88.png | Bin {webassets => static}/img/flags/89.png | Bin {webassets => static}/img/flags/9.png | Bin {webassets => static}/img/flags/90.png | Bin {webassets => static}/img/flags/91.png | Bin {webassets => static}/img/flags/93.png | Bin {webassets => static}/img/flags/94.png | Bin {webassets => static}/img/flags/95.png | Bin {webassets => static}/img/flags/96.png | Bin {webassets => static}/img/flags/97.png | Bin {webassets => static}/img/flags/98.png | Bin {webassets => static}/img/flags/99.png | Bin {webassets => static}/img/flags/999.png | Bin {webassets => static}/img/flags/generate.py | 0 {webassets => static}/img/icon-16.png | Bin {webassets => static}/img/icon-192-pwa.png | Bin {webassets => static}/img/icon-192.png | Bin {webassets => static}/img/icon-32.png | Bin {webassets => static}/img/icon-512-pwa.png | Bin {webassets => static}/img/icon-512.png | Bin {webassets => static}/img/logo.png | Bin {webassets => static}/js/add-spot.js | 0 {webassets => static}/js/alerts.js | 0 {webassets => static}/js/bands.js | 0 {webassets => static}/js/common.js | 0 {webassets => static}/js/conditions.js | 0 {webassets => static}/js/geo.js | 0 {webassets => static}/js/map.js | 0 {webassets => static}/js/spots.js | 0 {webassets => static}/js/spotsbandsandmap.js | 0 {webassets => static}/js/status.js | 0 {webassets => static}/js/ui-ham.js | 0 {webassets => static}/js/utils.js | 0 {webassets => static}/service-worker.js | 0 .../vendor/css/bootstrap-5.3.8.min.css | 0 .../vendor/css/fontawesome-6.7.2.min.css | 0 .../vendor/css/images/layers-2x.png | Bin .../vendor/css/images/layers.png | Bin .../vendor/css/images/marker-icon-2x.png | Bin .../vendor/css/images/marker-icon.png | Bin .../vendor/css/images/marker-shadow.png | Bin .../vendor/css/leaflet-1.9.4.min.css | 0 .../css/leaflet-extra-markers-1.2.2.min.css | 0 .../vendor/css/solid-6.7.2.min.css | 0 .../vendor/img/markers_default.png | Bin .../vendor/img/markers_default@2x.png | Bin .../vendor/img/markers_shadow.png | Bin .../vendor/img/markers_shadow@2x.png | Bin .../vendor/js/bootstrap-5.3.8.bundle.min.js | 0 .../vendor/js/chart-4.4.9.umd.min.js | 0 .../vendor/js/jquery-3.7.1.min.js | 0 .../vendor/js/leaflet-1.9.4.min.js | 0 .../vendor/js/leaflet-cqzones.js | 0 .../js/leaflet-extra-markers-1.2.2.min.js | 0 .../js/leaflet-geodesic-2.7.2.umd.min.js | 0 .../vendor/js/leaflet-ituzones.js | 0 .../vendor/js/leaflet-maidenhead.js | 0 .../vendor/js/leaflet-providers-2.0.0.js | 0 .../vendor/js/leaflet-terminator-1.1.0.min.js | 0 .../vendor/js/leaflet-vectorgrid-1.3.0.js | 0 .../js/leaflet-workedallbritainireland.js | 0 .../vendor/js/moment-2.29.4.min.js | 0 .../vendor/js/oms-leaflet-0.2.7.min.js | 0 .../vendor/js/text-image-0.7.0.js | 0 .../vendor/js/tinycolor2-1.6.0.min.js | 0 .../vendor/webfonts/fa-solid-900.ttf | Bin .../vendor/webfonts/fa-solid-900.woff2 | Bin templates/add_spot.html | 2 +- templates/alerts.html | 2 +- templates/bands.html | 4 +-- templates/base.html | 10 ++++---- templates/conditions.html | 2 +- templates/map.html | 4 +-- templates/spots.html | 4 +-- templates/status.html | 2 +- 483 files changed, 70 insertions(+), 55 deletions(-) delete mode 100644 server/handlers/quietstaticfilehandler.py rename {webassets => static}/apidocs/openapi.yml (100%) rename {webassets => static}/audio/ping.mp3 (100%) rename {webassets => static}/css/style.css (100%) rename {webassets => static}/favicon.ico (100%) rename {webassets => static}/img/banner.png (100%) rename {webassets => static}/img/flags/1.png (100%) rename {webassets => static}/img/flags/10.png (100%) rename {webassets => static}/img/flags/100.png (100%) rename {webassets => static}/img/flags/101.png (100%) rename {webassets => static}/img/flags/102.png (100%) rename {webassets => static}/img/flags/103.png (100%) rename {webassets => static}/img/flags/104.png (100%) rename {webassets => static}/img/flags/105.png (100%) rename {webassets => static}/img/flags/106.png (100%) rename {webassets => static}/img/flags/107.png (100%) rename {webassets => static}/img/flags/108.png (100%) rename {webassets => static}/img/flags/109.png (100%) rename {webassets => static}/img/flags/11.png (100%) rename {webassets => static}/img/flags/110.png (100%) rename {webassets => static}/img/flags/111.png (100%) rename {webassets => static}/img/flags/112.png (100%) rename {webassets => static}/img/flags/113.png (100%) rename {webassets => static}/img/flags/114.png (100%) rename {webassets => static}/img/flags/115.png (100%) rename {webassets => static}/img/flags/116.png (100%) rename {webassets => static}/img/flags/117.png (100%) rename {webassets => static}/img/flags/118.png (100%) rename {webassets => static}/img/flags/119.png (100%) rename {webassets => static}/img/flags/12.png (100%) rename {webassets => static}/img/flags/120.png (100%) rename {webassets => static}/img/flags/122.png (100%) rename {webassets => static}/img/flags/123.png (100%) rename {webassets => static}/img/flags/124.png (100%) rename {webassets => static}/img/flags/125.png (100%) rename {webassets => static}/img/flags/126.png (100%) rename {webassets => static}/img/flags/127.png (100%) rename {webassets => static}/img/flags/128.png (100%) rename {webassets => static}/img/flags/129.png (100%) rename {webassets => static}/img/flags/13.png (100%) rename {webassets => static}/img/flags/130.png (100%) rename {webassets => static}/img/flags/131.png (100%) rename {webassets => static}/img/flags/132.png (100%) rename {webassets => static}/img/flags/133.png (100%) rename {webassets => static}/img/flags/134.png (100%) rename {webassets => static}/img/flags/135.png (100%) rename {webassets => static}/img/flags/136.png (100%) rename {webassets => static}/img/flags/137.png (100%) rename {webassets => static}/img/flags/138.png (100%) rename {webassets => static}/img/flags/139.png (100%) rename {webassets => static}/img/flags/14.png (100%) rename {webassets => static}/img/flags/140.png (100%) rename {webassets => static}/img/flags/141.png (100%) rename {webassets => static}/img/flags/142.png (100%) rename {webassets => static}/img/flags/143.png (100%) rename {webassets => static}/img/flags/144.png (100%) rename {webassets => static}/img/flags/145.png (100%) rename {webassets => static}/img/flags/146.png (100%) rename {webassets => static}/img/flags/147.png (100%) rename {webassets => static}/img/flags/148.png (100%) rename {webassets => static}/img/flags/149.png (100%) rename {webassets => static}/img/flags/15.png (100%) rename {webassets => static}/img/flags/150.png (100%) rename {webassets => static}/img/flags/151.png (100%) rename {webassets => static}/img/flags/152.png (100%) rename {webassets => static}/img/flags/153.png (100%) rename {webassets => static}/img/flags/154.png (100%) rename {webassets => static}/img/flags/155.png (100%) rename {webassets => static}/img/flags/157.png (100%) rename {webassets => static}/img/flags/158.png (100%) rename {webassets => static}/img/flags/159.png (100%) rename {webassets => static}/img/flags/16.png (100%) rename {webassets => static}/img/flags/160.png (100%) rename {webassets => static}/img/flags/161.png (100%) rename {webassets => static}/img/flags/162.png (100%) rename {webassets => static}/img/flags/163.png (100%) rename {webassets => static}/img/flags/164.png (100%) rename {webassets => static}/img/flags/165.png (100%) rename {webassets => static}/img/flags/166.png (100%) rename {webassets => static}/img/flags/167.png (100%) rename {webassets => static}/img/flags/168.png (100%) rename {webassets => static}/img/flags/169.png (100%) rename {webassets => static}/img/flags/17.png (100%) rename {webassets => static}/img/flags/170.png (100%) rename {webassets => static}/img/flags/171.png (100%) rename {webassets => static}/img/flags/172.png (100%) rename {webassets => static}/img/flags/173.png (100%) rename {webassets => static}/img/flags/174.png (100%) rename {webassets => static}/img/flags/175.png (100%) rename {webassets => static}/img/flags/176.png (100%) rename {webassets => static}/img/flags/177.png (100%) rename {webassets => static}/img/flags/178.png (100%) rename {webassets => static}/img/flags/179.png (100%) rename {webassets => static}/img/flags/18.png (100%) rename {webassets => static}/img/flags/180.png (100%) rename {webassets => static}/img/flags/181.png (100%) rename {webassets => static}/img/flags/182.png (100%) rename {webassets => static}/img/flags/183.png (100%) rename {webassets => static}/img/flags/184.png (100%) rename {webassets => static}/img/flags/185.png (100%) rename {webassets => static}/img/flags/186.png (100%) rename {webassets => static}/img/flags/187.png (100%) rename {webassets => static}/img/flags/188.png (100%) rename {webassets => static}/img/flags/189.png (100%) rename {webassets => static}/img/flags/19.png (100%) rename {webassets => static}/img/flags/190.png (100%) rename {webassets => static}/img/flags/191.png (100%) rename {webassets => static}/img/flags/192.png (100%) rename {webassets => static}/img/flags/193.png (100%) rename {webassets => static}/img/flags/194.png (100%) rename {webassets => static}/img/flags/195.png (100%) rename {webassets => static}/img/flags/196.png (100%) rename {webassets => static}/img/flags/197.png (100%) rename {webassets => static}/img/flags/198.png (100%) rename {webassets => static}/img/flags/199.png (100%) rename {webassets => static}/img/flags/2.png (100%) rename {webassets => static}/img/flags/20.png (100%) rename {webassets => static}/img/flags/200.png (100%) rename {webassets => static}/img/flags/201.png (100%) rename {webassets => static}/img/flags/202.png (100%) rename {webassets => static}/img/flags/203.png (100%) rename {webassets => static}/img/flags/204.png (100%) rename {webassets => static}/img/flags/205.png (100%) rename {webassets => static}/img/flags/206.png (100%) rename {webassets => static}/img/flags/207.png (100%) rename {webassets => static}/img/flags/208.png (100%) rename {webassets => static}/img/flags/209.png (100%) rename {webassets => static}/img/flags/21.png (100%) rename {webassets => static}/img/flags/210.png (100%) rename {webassets => static}/img/flags/211.png (100%) rename {webassets => static}/img/flags/212.png (100%) rename {webassets => static}/img/flags/213.png (100%) rename {webassets => static}/img/flags/214.png (100%) rename {webassets => static}/img/flags/215.png (100%) rename {webassets => static}/img/flags/216.png (100%) rename {webassets => static}/img/flags/217.png (100%) rename {webassets => static}/img/flags/218.png (100%) rename {webassets => static}/img/flags/219.png (100%) rename {webassets => static}/img/flags/22.png (100%) rename {webassets => static}/img/flags/220.png (100%) rename {webassets => static}/img/flags/221.png (100%) rename {webassets => static}/img/flags/222.png (100%) rename {webassets => static}/img/flags/223.png (100%) rename {webassets => static}/img/flags/224.png (100%) rename {webassets => static}/img/flags/225.png (100%) rename {webassets => static}/img/flags/226.png (100%) rename {webassets => static}/img/flags/227.png (100%) rename {webassets => static}/img/flags/228.png (100%) rename {webassets => static}/img/flags/229.png (100%) rename {webassets => static}/img/flags/23.png (100%) rename {webassets => static}/img/flags/230.png (100%) rename {webassets => static}/img/flags/231.png (100%) rename {webassets => static}/img/flags/232.png (100%) rename {webassets => static}/img/flags/233.png (100%) rename {webassets => static}/img/flags/234.png (100%) rename {webassets => static}/img/flags/235.png (100%) rename {webassets => static}/img/flags/236.png (100%) rename {webassets => static}/img/flags/237.png (100%) rename {webassets => static}/img/flags/238.png (100%) rename {webassets => static}/img/flags/239.png (100%) rename {webassets => static}/img/flags/24.png (100%) rename {webassets => static}/img/flags/240.png (100%) rename {webassets => static}/img/flags/241.png (100%) rename {webassets => static}/img/flags/242.png (100%) rename {webassets => static}/img/flags/243.png (100%) rename {webassets => static}/img/flags/244.png (100%) rename {webassets => static}/img/flags/245.png (100%) rename {webassets => static}/img/flags/246.png (100%) rename {webassets => static}/img/flags/247.png (100%) rename {webassets => static}/img/flags/248.png (100%) rename {webassets => static}/img/flags/249.png (100%) rename {webassets => static}/img/flags/25.png (100%) rename {webassets => static}/img/flags/250.png (100%) rename {webassets => static}/img/flags/251.png (100%) rename {webassets => static}/img/flags/252.png (100%) rename {webassets => static}/img/flags/253.png (100%) rename {webassets => static}/img/flags/254.png (100%) rename {webassets => static}/img/flags/255.png (100%) rename {webassets => static}/img/flags/256.png (100%) rename {webassets => static}/img/flags/257.png (100%) rename {webassets => static}/img/flags/258.png (100%) rename {webassets => static}/img/flags/259.png (100%) rename {webassets => static}/img/flags/26.png (100%) rename {webassets => static}/img/flags/260.png (100%) rename {webassets => static}/img/flags/261.png (100%) rename {webassets => static}/img/flags/262.png (100%) rename {webassets => static}/img/flags/263.png (100%) rename {webassets => static}/img/flags/264.png (100%) rename {webassets => static}/img/flags/265.png (100%) rename {webassets => static}/img/flags/266.png (100%) rename {webassets => static}/img/flags/267.png (100%) rename {webassets => static}/img/flags/268.png (100%) rename {webassets => static}/img/flags/269.png (100%) rename {webassets => static}/img/flags/27.png (100%) rename {webassets => static}/img/flags/270.png (100%) rename {webassets => static}/img/flags/271.png (100%) rename {webassets => static}/img/flags/272.png (100%) rename {webassets => static}/img/flags/273.png (100%) rename {webassets => static}/img/flags/274.png (100%) rename {webassets => static}/img/flags/275.png (100%) rename {webassets => static}/img/flags/276.png (100%) rename {webassets => static}/img/flags/277.png (100%) rename {webassets => static}/img/flags/278.png (100%) rename {webassets => static}/img/flags/279.png (100%) rename {webassets => static}/img/flags/28.png (100%) rename {webassets => static}/img/flags/280.png (100%) rename {webassets => static}/img/flags/281.png (100%) rename {webassets => static}/img/flags/282.png (100%) rename {webassets => static}/img/flags/283.png (100%) rename {webassets => static}/img/flags/284.png (100%) rename {webassets => static}/img/flags/285.png (100%) rename {webassets => static}/img/flags/286.png (100%) rename {webassets => static}/img/flags/287.png (100%) rename {webassets => static}/img/flags/288.png (100%) rename {webassets => static}/img/flags/289.png (100%) rename {webassets => static}/img/flags/29.png (100%) rename {webassets => static}/img/flags/291.png (100%) rename {webassets => static}/img/flags/292.png (100%) rename {webassets => static}/img/flags/293.png (100%) rename {webassets => static}/img/flags/294.png (100%) rename {webassets => static}/img/flags/295.png (100%) rename {webassets => static}/img/flags/296.png (100%) rename {webassets => static}/img/flags/297.png (100%) rename {webassets => static}/img/flags/298.png (100%) rename {webassets => static}/img/flags/299.png (100%) rename {webassets => static}/img/flags/3.png (100%) rename {webassets => static}/img/flags/30.png (100%) rename {webassets => static}/img/flags/301.png (100%) rename {webassets => static}/img/flags/302.png (100%) rename {webassets => static}/img/flags/303.png (100%) rename {webassets => static}/img/flags/304.png (100%) rename {webassets => static}/img/flags/305.png (100%) rename {webassets => static}/img/flags/306.png (100%) rename {webassets => static}/img/flags/307.png (100%) rename {webassets => static}/img/flags/308.png (100%) rename {webassets => static}/img/flags/309.png (100%) rename {webassets => static}/img/flags/31.png (100%) rename {webassets => static}/img/flags/312.png (100%) rename {webassets => static}/img/flags/315.png (100%) rename {webassets => static}/img/flags/318.png (100%) rename {webassets => static}/img/flags/32.png (100%) rename {webassets => static}/img/flags/321.png (100%) rename {webassets => static}/img/flags/324.png (100%) rename {webassets => static}/img/flags/327.png (100%) rename {webassets => static}/img/flags/33.png (100%) rename {webassets => static}/img/flags/330.png (100%) rename {webassets => static}/img/flags/333.png (100%) rename {webassets => static}/img/flags/336.png (100%) rename {webassets => static}/img/flags/339.png (100%) rename {webassets => static}/img/flags/34.png (100%) rename {webassets => static}/img/flags/342.png (100%) rename {webassets => static}/img/flags/344.png (100%) rename {webassets => static}/img/flags/345.png (100%) rename {webassets => static}/img/flags/348.png (100%) rename {webassets => static}/img/flags/35.png (100%) rename {webassets => static}/img/flags/354.png (100%) rename {webassets => static}/img/flags/36.png (100%) rename {webassets => static}/img/flags/363.png (100%) rename {webassets => static}/img/flags/369.png (100%) rename {webassets => static}/img/flags/37.png (100%) rename {webassets => static}/img/flags/370.png (100%) rename {webassets => static}/img/flags/372.png (100%) rename {webassets => static}/img/flags/375.png (100%) rename {webassets => static}/img/flags/376.png (100%) rename {webassets => static}/img/flags/378.png (100%) rename {webassets => static}/img/flags/379.png (100%) rename {webassets => static}/img/flags/38.png (100%) rename {webassets => static}/img/flags/381.png (100%) rename {webassets => static}/img/flags/382.png (100%) rename {webassets => static}/img/flags/384.png (100%) rename {webassets => static}/img/flags/386.png (100%) rename {webassets => static}/img/flags/387.png (100%) rename {webassets => static}/img/flags/39.png (100%) rename {webassets => static}/img/flags/390.png (100%) rename {webassets => static}/img/flags/391.png (100%) rename {webassets => static}/img/flags/4.png (100%) rename {webassets => static}/img/flags/40.png (100%) rename {webassets => static}/img/flags/400.png (100%) rename {webassets => static}/img/flags/401.png (100%) rename {webassets => static}/img/flags/402.png (100%) rename {webassets => static}/img/flags/404.png (100%) rename {webassets => static}/img/flags/406.png (100%) rename {webassets => static}/img/flags/408.png (100%) rename {webassets => static}/img/flags/409.png (100%) rename {webassets => static}/img/flags/41.png (100%) rename {webassets => static}/img/flags/410.png (100%) rename {webassets => static}/img/flags/411.png (100%) rename {webassets => static}/img/flags/412.png (100%) rename {webassets => static}/img/flags/414.png (100%) rename {webassets => static}/img/flags/416.png (100%) rename {webassets => static}/img/flags/42.png (100%) rename {webassets => static}/img/flags/420.png (100%) rename {webassets => static}/img/flags/422.png (100%) rename {webassets => static}/img/flags/424.png (100%) rename {webassets => static}/img/flags/428.png (100%) rename {webassets => static}/img/flags/43.png (100%) rename {webassets => static}/img/flags/430.png (100%) rename {webassets => static}/img/flags/432.png (100%) rename {webassets => static}/img/flags/434.png (100%) rename {webassets => static}/img/flags/436.png (100%) rename {webassets => static}/img/flags/438.png (100%) rename {webassets => static}/img/flags/44.png (100%) rename {webassets => static}/img/flags/440.png (100%) rename {webassets => static}/img/flags/442.png (100%) rename {webassets => static}/img/flags/444.png (100%) rename {webassets => static}/img/flags/446.png (100%) rename {webassets => static}/img/flags/45.png (100%) rename {webassets => static}/img/flags/450.png (100%) rename {webassets => static}/img/flags/452.png (100%) rename {webassets => static}/img/flags/453.png (100%) rename {webassets => static}/img/flags/454.png (100%) rename {webassets => static}/img/flags/456.png (100%) rename {webassets => static}/img/flags/458.png (100%) rename {webassets => static}/img/flags/46.png (100%) rename {webassets => static}/img/flags/460.png (100%) rename {webassets => static}/img/flags/462.png (100%) rename {webassets => static}/img/flags/464.png (100%) rename {webassets => static}/img/flags/466.png (100%) rename {webassets => static}/img/flags/468.png (100%) rename {webassets => static}/img/flags/47.png (100%) rename {webassets => static}/img/flags/470.png (100%) rename {webassets => static}/img/flags/474.png (100%) rename {webassets => static}/img/flags/478.png (100%) rename {webassets => static}/img/flags/48.png (100%) rename {webassets => static}/img/flags/480.png (100%) rename {webassets => static}/img/flags/482.png (100%) rename {webassets => static}/img/flags/483.png (100%) rename {webassets => static}/img/flags/488.png (100%) rename {webassets => static}/img/flags/489.png (100%) rename {webassets => static}/img/flags/49.png (100%) rename {webassets => static}/img/flags/490.png (100%) rename {webassets => static}/img/flags/492.png (100%) rename {webassets => static}/img/flags/493.png (100%) rename {webassets => static}/img/flags/497.png (100%) rename {webassets => static}/img/flags/499.png (100%) rename {webassets => static}/img/flags/5.png (100%) rename {webassets => static}/img/flags/50.png (100%) rename {webassets => static}/img/flags/501.png (100%) rename {webassets => static}/img/flags/502.png (100%) rename {webassets => static}/img/flags/503.png (100%) rename {webassets => static}/img/flags/504.png (100%) rename {webassets => static}/img/flags/505.png (100%) rename {webassets => static}/img/flags/506.png (100%) rename {webassets => static}/img/flags/507.png (100%) rename {webassets => static}/img/flags/508.png (100%) rename {webassets => static}/img/flags/509.png (100%) rename {webassets => static}/img/flags/51.png (100%) rename {webassets => static}/img/flags/510.png (100%) rename {webassets => static}/img/flags/511.png (100%) rename {webassets => static}/img/flags/512.png (100%) rename {webassets => static}/img/flags/513.png (100%) rename {webassets => static}/img/flags/514.png (100%) rename {webassets => static}/img/flags/515.png (100%) rename {webassets => static}/img/flags/516.png (100%) rename {webassets => static}/img/flags/517.png (100%) rename {webassets => static}/img/flags/518.png (100%) rename {webassets => static}/img/flags/519.png (100%) rename {webassets => static}/img/flags/52.png (100%) rename {webassets => static}/img/flags/520.png (100%) rename {webassets => static}/img/flags/521.png (100%) rename {webassets => static}/img/flags/522.png (100%) rename {webassets => static}/img/flags/53.png (100%) rename {webassets => static}/img/flags/54.png (100%) rename {webassets => static}/img/flags/55.png (100%) rename {webassets => static}/img/flags/56.png (100%) rename {webassets => static}/img/flags/57.png (100%) rename {webassets => static}/img/flags/58.png (100%) rename {webassets => static}/img/flags/59.png (100%) rename {webassets => static}/img/flags/6.png (100%) rename {webassets => static}/img/flags/60.png (100%) rename {webassets => static}/img/flags/61.png (100%) rename {webassets => static}/img/flags/62.png (100%) rename {webassets => static}/img/flags/63.png (100%) rename {webassets => static}/img/flags/64.png (100%) rename {webassets => static}/img/flags/65.png (100%) rename {webassets => static}/img/flags/66.png (100%) rename {webassets => static}/img/flags/67.png (100%) rename {webassets => static}/img/flags/68.png (100%) rename {webassets => static}/img/flags/69.png (100%) rename {webassets => static}/img/flags/7.png (100%) rename {webassets => static}/img/flags/70.png (100%) rename {webassets => static}/img/flags/71.png (100%) rename {webassets => static}/img/flags/72.png (100%) rename {webassets => static}/img/flags/74.png (100%) rename {webassets => static}/img/flags/75.png (100%) rename {webassets => static}/img/flags/76.png (100%) rename {webassets => static}/img/flags/77.png (100%) rename {webassets => static}/img/flags/78.png (100%) rename {webassets => static}/img/flags/79.png (100%) rename {webassets => static}/img/flags/8.png (100%) rename {webassets => static}/img/flags/80.png (100%) rename {webassets => static}/img/flags/81.png (100%) rename {webassets => static}/img/flags/82.png (100%) rename {webassets => static}/img/flags/84.png (100%) rename {webassets => static}/img/flags/85.png (100%) rename {webassets => static}/img/flags/86.png (100%) rename {webassets => static}/img/flags/88.png (100%) rename {webassets => static}/img/flags/89.png (100%) rename {webassets => static}/img/flags/9.png (100%) rename {webassets => static}/img/flags/90.png (100%) rename {webassets => static}/img/flags/91.png (100%) rename {webassets => static}/img/flags/93.png (100%) rename {webassets => static}/img/flags/94.png (100%) rename {webassets => static}/img/flags/95.png (100%) rename {webassets => static}/img/flags/96.png (100%) rename {webassets => static}/img/flags/97.png (100%) rename {webassets => static}/img/flags/98.png (100%) rename {webassets => static}/img/flags/99.png (100%) rename {webassets => static}/img/flags/999.png (100%) rename {webassets => static}/img/flags/generate.py (100%) rename {webassets => static}/img/icon-16.png (100%) rename {webassets => static}/img/icon-192-pwa.png (100%) rename {webassets => static}/img/icon-192.png (100%) rename {webassets => static}/img/icon-32.png (100%) rename {webassets => static}/img/icon-512-pwa.png (100%) rename {webassets => static}/img/icon-512.png (100%) rename {webassets => static}/img/logo.png (100%) rename {webassets => static}/js/add-spot.js (100%) rename {webassets => static}/js/alerts.js (100%) rename {webassets => static}/js/bands.js (100%) rename {webassets => static}/js/common.js (100%) rename {webassets => static}/js/conditions.js (100%) rename {webassets => static}/js/geo.js (100%) rename {webassets => static}/js/map.js (100%) rename {webassets => static}/js/spots.js (100%) rename {webassets => static}/js/spotsbandsandmap.js (100%) rename {webassets => static}/js/status.js (100%) rename {webassets => static}/js/ui-ham.js (100%) rename {webassets => static}/js/utils.js (100%) rename {webassets => static}/service-worker.js (100%) rename {webassets => static}/vendor/css/bootstrap-5.3.8.min.css (100%) rename {webassets => static}/vendor/css/fontawesome-6.7.2.min.css (100%) rename {webassets => static}/vendor/css/images/layers-2x.png (100%) rename {webassets => static}/vendor/css/images/layers.png (100%) rename {webassets => static}/vendor/css/images/marker-icon-2x.png (100%) rename {webassets => static}/vendor/css/images/marker-icon.png (100%) rename {webassets => static}/vendor/css/images/marker-shadow.png (100%) rename {webassets => static}/vendor/css/leaflet-1.9.4.min.css (100%) rename {webassets => static}/vendor/css/leaflet-extra-markers-1.2.2.min.css (100%) rename {webassets => static}/vendor/css/solid-6.7.2.min.css (100%) rename {webassets => static}/vendor/img/markers_default.png (100%) rename {webassets => static}/vendor/img/markers_default@2x.png (100%) rename {webassets => static}/vendor/img/markers_shadow.png (100%) rename {webassets => static}/vendor/img/markers_shadow@2x.png (100%) rename {webassets => static}/vendor/js/bootstrap-5.3.8.bundle.min.js (100%) rename {webassets => static}/vendor/js/chart-4.4.9.umd.min.js (100%) rename {webassets => static}/vendor/js/jquery-3.7.1.min.js (100%) rename {webassets => static}/vendor/js/leaflet-1.9.4.min.js (100%) rename {webassets => static}/vendor/js/leaflet-cqzones.js (100%) rename {webassets => static}/vendor/js/leaflet-extra-markers-1.2.2.min.js (100%) rename {webassets => static}/vendor/js/leaflet-geodesic-2.7.2.umd.min.js (100%) rename {webassets => static}/vendor/js/leaflet-ituzones.js (100%) rename {webassets => static}/vendor/js/leaflet-maidenhead.js (100%) rename {webassets => static}/vendor/js/leaflet-providers-2.0.0.js (100%) rename {webassets => static}/vendor/js/leaflet-terminator-1.1.0.min.js (100%) rename {webassets => static}/vendor/js/leaflet-vectorgrid-1.3.0.js (100%) rename {webassets => static}/vendor/js/leaflet-workedallbritainireland.js (100%) rename {webassets => static}/vendor/js/moment-2.29.4.min.js (100%) rename {webassets => static}/vendor/js/oms-leaflet-0.2.7.min.js (100%) rename {webassets => static}/vendor/js/text-image-0.7.0.js (100%) rename {webassets => static}/vendor/js/tinycolor2-1.6.0.min.js (100%) rename {webassets => static}/vendor/webfonts/fa-solid-900.ttf (100%) rename {webassets => static}/vendor/webfonts/fa-solid-900.woff2 (100%) diff --git a/.idea/spothole.iml b/.idea/spothole.iml index 347b546..f16c839 100644 --- a/.idea/spothole.iml +++ b/.idea/spothole.iml @@ -4,7 +4,7 @@ - + diff --git a/README.md b/README.md index 15c9c2d..6945ec6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ![Spothole](/webassets/img/logo.png) +# ![Spothole](/static/img/logo.png) Spothole is a utility to aggregate "spots" from amateur radio DX clusters and xOTA spotting sites, and provide an open JSON API as well as a website to browse the data. @@ -89,7 +89,7 @@ callsign and park data. Various approaches exist to writing your own client, but in general: -* Refer to the API docs. These are built on an OpenAPI definition file (`/webassets/apidocs/openapi.yml`), which you can +* Refer to the API docs. These are built on an OpenAPI definition file (`/static/apidocs/openapi.yml`), which you can automatically use to generate a client skeleton using various software. * Call the main "spots" or "alerts" API endpoints to get the data you want. For example, your app could call `https://spothole.app/api/v1/spots` once every few minutes. Apply filters if necessary. @@ -346,9 +346,9 @@ server { alias /var/www/html/.well-known/; } - # Load static assets directly from the Spothole webassets directory + # Load static assets directly from the Spothole static directory location /static/ { - alias /home/spothole/spothole/webassets/; + alias /home/spothole/spothole/static/; expires 1h; add_header Cache-Control "public, max-age=3600, must-revalidate"; } @@ -452,12 +452,12 @@ To navigate your way around the source code, this list may help. *HTML/JS/CSS front-end code* -* `/webassets` - Root for static files served by the web server. These are all served from a path starting `/static/`. -* `/webassets/apidocs` - Contains the OpenAPI spec (`openapi.yml`) -* `/webassets/css` - CSS files used by the web front-end -* `/webassets/img` - image files used by the web front-end -* `/webassets/js` - JavaScript used by the web front-end -* `/webassets/vendor` - Third-party libraries (CSS, JS, fonts and images) +* `/static` - Root for static files served by the web server. These are all served from a path starting `/static/`. +* `/static/apidocs` - Contains the OpenAPI spec (`openapi.yml`) +* `/static/css` - CSS files used by the web front-end +* `/static/img` - image files used by the web front-end +* `/static/js` - JavaScript used by the web front-end +* `/static/vendor` - Third-party libraries (CSS, JS, fonts and images) *Miscellaneous* @@ -509,14 +509,14 @@ my knowledge, created by HA8TKS for his CQ and ITU zone layers for Leaflet. `/da maps of conference centres. The project contains a set of flag icons generated using the "Noto Color Emoji" font on a Debian system, in the -`/webassets/img/flags/` directory. +`/static/img/flags/` directory. The software uses a number of Python libraries as listed in `requirements.txt`, and a number of JavaScript libraries. This project would not have been possible without these libraries, so many thanks to their developers. ### Third Party Libraries -A number of third-party libraries are self-hosted in the `/webassets/vendor/` directory. These files are subject to +A number of third-party libraries are self-hosted in the `/static/vendor/` directory. These files are subject to their own licences and are not covered by the overall licence declared in the `LICENSE` file. Particular thanks go to country-files.com for providing country lookup data for amateur radio, to K0SWE diff --git a/alertproviders/http_alert_provider.py b/alertproviders/http_alert_provider.py index 3e8dcf6..df79177 100644 --- a/alertproviders/http_alert_provider.py +++ b/alertproviders/http_alert_provider.py @@ -4,7 +4,7 @@ from threading import Thread, Event import pytz import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from alertproviders.alert_provider import AlertProvider from core.constants import HTTP_HEADERS @@ -59,6 +59,8 @@ class HTTPAlertProvider(AlertProvider): except ConnectionError: logging.warning(f"Connection error when accessing {self.name} alerts API.") + except ReadTimeout: + logging.warning(f"Read timeout when accessing {self.name} alerts API.") except Exception: self.status = "Error" logging.exception("Exception in HTTP JSON Alert Provider (" + self.name + ")") diff --git a/core/lookup_helper.py b/core/lookup_helper.py index a2a4fd8..e9c9641 100644 --- a/core/lookup_helper.py +++ b/core/lookup_helper.py @@ -11,7 +11,7 @@ from pyhamtools import LookupLib, Callinfo, callinfo from pyhamtools.exceptions import APIKeyMissingError from pyhamtools.frequency import freq_to_band from pyhamtools.locator import latlong_to_locator -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from requests_cache import CachedSession from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE @@ -156,6 +156,8 @@ class LookupHelper: except ConnectionError: logging.warning(f"Connection error when downloading Clublog cty.xml.") + except ReadTimeout: + logging.warning(f"Read timeout when downloading Clublog cty.xml.") except Exception as e: logging.error("Exception when downloading Clublog cty.xml", e) return False @@ -180,6 +182,8 @@ class LookupHelper: except ConnectionError: logging.warning(f"Connection error when downloading dxcc.json.") + except ReadTimeout: + logging.warning(f"Read timeout when downloading dxcc.json.") except Exception as e: logging.error("Exception when downloading dxcc.json", e) return False @@ -537,6 +541,9 @@ class LookupHelper: except ConnectionError: logging.warning(f"Connection error when looking up callsign %s using QRZ", lookup_call) continue + except ReadTimeout: + logging.warning(f"Read timeout when looking up callsign %s using QRZ.", lookup_call) + continue except Exception: logging.error("Exception when looking up callsign %s using QRZ", lookup_call, exc_info=True) continue @@ -601,6 +608,9 @@ class LookupHelper: except ConnectionError: logging.warning(f"Connection error when looking up callsign %s using HamQTH", lookup_call) continue + except ReadTimeout: + logging.warning(f"Read timeout when looking up callsign %s using HamQTH", lookup_call) + continue except Exception: logging.error("Exception when looking up callsign %s using HamQTH", lookup_call, exc_info=True) continue diff --git a/core/sig_utils.py b/core/sig_utils.py index 253c841..8f0fa98 100644 --- a/core/sig_utils.py +++ b/core/sig_utils.py @@ -2,7 +2,7 @@ import csv import logging from pyhamtools.locator import latlong_to_locator, locator_to_latlong -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE from core.constants import SIGS, HTTP_HEADERS @@ -271,6 +271,8 @@ def populate_sig_ref_info(sig_ref): except ConnectionError: logging.warning("Connection error when looking up sig_ref info for " + sig + " ref " + ref_id) + except ReadTimeout: + logging.warning(f"Read timeout when looking up sig_ref info for " + sig + " ref " + ref_id) except Exception: logging.error("Exception when looking up sig_ref info for " + sig + " ref " + ref_id, exc_info=True) return sig_ref diff --git a/server/handlers/quietstaticfilehandler.py b/server/handlers/quietstaticfilehandler.py deleted file mode 100644 index 4ba2d4d..0000000 --- a/server/handlers/quietstaticfilehandler.py +++ /dev/null @@ -1,16 +0,0 @@ -import logging - -from tornado.web import StaticFileHandler, HTTPError - - -class QuietStaticFileHandler(StaticFileHandler): - """Minor override of logging in StaticFileHandler to log HTTP errors at debug level instead of their usual - warning level. Without this, attacks on Spothole which try to do path traversal attacks would log exceptions - from inside Tornado, and the server logs would contain a lot of this type of content. This effectively changes - the log level of these exceptions to DEBUG so they are only logged if DEBUG level logging is enabled.""" - - def log_exception(self, typ, value, tb): - if isinstance(value, HTTPError): - logging.debug(value) - return - super().log_exception(typ, value, tb) \ No newline at end of file diff --git a/server/webserver.py b/server/webserver.py index 21228cd..f55bf21 100644 --- a/server/webserver.py +++ b/server/webserver.py @@ -18,7 +18,6 @@ from server.handlers.api.status import APIStatusHandler from server.handlers.manifesthandler import ManifestHandler from server.handlers.metrics import PrometheusMetricsHandler from server.handlers.pagetemplate import PageTemplateHandler -from server.handlers.quietstaticfilehandler import QuietStaticFileHandler _HERE = os.path.dirname(__file__ or "") @@ -101,12 +100,16 @@ class WebServer: if ALLOW_SPOTTING: ui_routes += [(r"/add-spot", PageTemplateHandler, {"template_name": "add_spot", **handler_opts})] - # API docs, Prometheus metrics, webapp manifest and static assets are always available regardless of API-only mode. + # API docs, Prometheus metrics, webapp manifest and static assets are always available regardless of API-only + # mode. misc_routes = [ (r"/apidocs", PageTemplateHandler, {"template_name": "apidocs", **handler_opts}), (r"/metrics", PrometheusMetricsHandler), (r"/manifest.webmanifest", ManifestHandler), - (r"/static/(.*)", QuietStaticFileHandler, {"path": os.path.join(_HERE, "../webassets")}) + # If e.g. nginx is configured as a reverse proxy with a hard-coded path to static files, as per the README, + # this will never have to handle anything, but having it here allows Spothole to work without nginx for + # testing. + (r"/static/(.*)", StaticFileHandler, {"path": os.path.join(_HERE, "../static")}) ] app = tornado.web.Application(api_routes + ui_routes + misc_routes, diff --git a/solarconditionsproviders/giroionosonde.py b/solarconditionsproviders/giroionosonde.py index 56a7ebe..03d7b02 100644 --- a/solarconditionsproviders/giroionosonde.py +++ b/solarconditionsproviders/giroionosonde.py @@ -5,7 +5,7 @@ from threading import Thread, Event import pytz import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from core.constants import HTTP_HEADERS from solarconditionsproviders.ionosonde_utils import compute_band_states @@ -134,6 +134,9 @@ class GIROIonosonde(SolarConditionsProvider): logging.warning(f"HTTP {http_response.status_code} when calling Giro ionosonde API.") return None, None, None return self._parse_all(http_response.text) + except ReadTimeout: + logging.warning(f"Read timeout when accessing Giro ionosonde API.") + return None, None, None except ConnectionError: logging.warning("Connection error when accessing Giro ionosonde API.") return None, None, None diff --git a/solarconditionsproviders/http_solar_conditions_provider.py b/solarconditionsproviders/http_solar_conditions_provider.py index b08d7b9..ddd3be9 100644 --- a/solarconditionsproviders/http_solar_conditions_provider.py +++ b/solarconditionsproviders/http_solar_conditions_provider.py @@ -4,7 +4,7 @@ from threading import Thread, Event import pytz import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from core.constants import HTTP_HEADERS from solarconditionsproviders.solar_conditions_provider import SolarConditionsProvider @@ -54,6 +54,8 @@ class HTTPSolarConditionsProvider(SolarConditionsProvider): except ConnectionError: logging.warning(f"Connection error when accessing {self.name} solar conditions API.") + except ReadTimeout: + logging.warning(f"Read timeout when accessing {self.name} solar conditions API.") except Exception: self.status = "Error" logging.exception("Exception in HTTP Solar Conditions Provider (" + self.name + ")") diff --git a/solarconditionsproviders/kc2gprop.py b/solarconditionsproviders/kc2gprop.py index 5fa581b..1d879a1 100644 --- a/solarconditionsproviders/kc2gprop.py +++ b/solarconditionsproviders/kc2gprop.py @@ -4,7 +4,7 @@ from threading import Thread, Event import pytz import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from core.constants import HTTP_HEADERS from solarconditionsproviders.ionosonde_utils import compute_band_states @@ -118,6 +118,8 @@ class KC2GProp(SolarConditionsProvider): except ConnectionError: logging.warning("Connection error when accessing KC2G ionosonde API.") + except ReadTimeout: + logging.warning(f"Read timeout when accessing KC2G ionosonde API.") except Exception: self.status = "Error" logging.exception("Exception in KC2G ionosonde data provider") diff --git a/spotproviders/hema.py b/spotproviders/hema.py index 07f593e..62d8d61 100644 --- a/spotproviders/hema.py +++ b/spotproviders/hema.py @@ -4,7 +4,7 @@ from datetime import datetime import pytz import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from core.constants import HTTP_HEADERS from data.sig_ref import SIGRef @@ -68,6 +68,8 @@ class HEMA(HTTPSpotProvider): # Add to our list. Don't worry about de-duping, removing old spots etc. at this point; other # code will do that for us. new_spots.append(spot) + except ReadTimeout: + logging.warning(f"Read timeout when accessing HEMA spots API.") except ConnectionError: logging.warning("Connection error when accessing HEMA spots API.") return new_spots diff --git a/spotproviders/http_spot_provider.py b/spotproviders/http_spot_provider.py index 17b748c..c851bb0 100644 --- a/spotproviders/http_spot_provider.py +++ b/spotproviders/http_spot_provider.py @@ -4,6 +4,7 @@ from threading import Thread, Event import pytz import requests +from requests import ReadTimeout from requests.exceptions import ConnectionError from core.constants import HTTP_HEADERS @@ -59,6 +60,8 @@ class HTTPSpotProvider(SpotProvider): except ConnectionError: logging.warning(f"Connection error when accessing {self.name} spots API.") + except ReadTimeout: + logging.warning(f"Read timeout when accessing {self.name} spots API.") except Exception: self.status = "Error" logging.exception("Exception in HTTP JSON Spot Provider (" + self.name + ")") diff --git a/spotproviders/sota.py b/spotproviders/sota.py index fa0fc80..750753b 100644 --- a/spotproviders/sota.py +++ b/spotproviders/sota.py @@ -2,7 +2,7 @@ import logging from datetime import datetime import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, ReadTimeout from core.constants import HTTP_HEADERS from data.sig_ref import SIGRef @@ -60,4 +60,6 @@ class SOTA(HTTPSpotProvider): new_spots.append(spot) except ConnectionError: logging.warning("Connection error when accessing SOTA spots API") + except ReadTimeout: + logging.warning(f"Read timeout when accessing SOTA spots API.") return new_spots diff --git a/webassets/apidocs/openapi.yml b/static/apidocs/openapi.yml similarity index 100% rename from webassets/apidocs/openapi.yml rename to static/apidocs/openapi.yml diff --git a/webassets/audio/ping.mp3 b/static/audio/ping.mp3 similarity index 100% rename from webassets/audio/ping.mp3 rename to static/audio/ping.mp3 diff --git a/webassets/css/style.css b/static/css/style.css similarity index 100% rename from webassets/css/style.css rename to static/css/style.css diff --git a/webassets/favicon.ico b/static/favicon.ico similarity index 100% rename from webassets/favicon.ico rename to static/favicon.ico diff --git a/webassets/img/banner.png b/static/img/banner.png similarity index 100% rename from webassets/img/banner.png rename to static/img/banner.png diff --git a/webassets/img/flags/1.png b/static/img/flags/1.png similarity index 100% rename from webassets/img/flags/1.png rename to static/img/flags/1.png diff --git a/webassets/img/flags/10.png b/static/img/flags/10.png similarity index 100% rename from webassets/img/flags/10.png rename to static/img/flags/10.png diff --git a/webassets/img/flags/100.png b/static/img/flags/100.png similarity index 100% rename from webassets/img/flags/100.png rename to static/img/flags/100.png diff --git a/webassets/img/flags/101.png b/static/img/flags/101.png similarity index 100% rename from webassets/img/flags/101.png rename to static/img/flags/101.png diff --git a/webassets/img/flags/102.png b/static/img/flags/102.png similarity index 100% rename from webassets/img/flags/102.png rename to static/img/flags/102.png diff --git a/webassets/img/flags/103.png b/static/img/flags/103.png similarity index 100% rename from webassets/img/flags/103.png rename to static/img/flags/103.png diff --git a/webassets/img/flags/104.png b/static/img/flags/104.png similarity index 100% rename from webassets/img/flags/104.png rename to static/img/flags/104.png diff --git a/webassets/img/flags/105.png b/static/img/flags/105.png similarity index 100% rename from webassets/img/flags/105.png rename to static/img/flags/105.png diff --git a/webassets/img/flags/106.png b/static/img/flags/106.png similarity index 100% rename from webassets/img/flags/106.png rename to static/img/flags/106.png diff --git a/webassets/img/flags/107.png b/static/img/flags/107.png similarity index 100% rename from webassets/img/flags/107.png rename to static/img/flags/107.png diff --git a/webassets/img/flags/108.png b/static/img/flags/108.png similarity index 100% rename from webassets/img/flags/108.png rename to static/img/flags/108.png diff --git a/webassets/img/flags/109.png b/static/img/flags/109.png similarity index 100% rename from webassets/img/flags/109.png rename to static/img/flags/109.png diff --git a/webassets/img/flags/11.png b/static/img/flags/11.png similarity index 100% rename from webassets/img/flags/11.png rename to static/img/flags/11.png diff --git a/webassets/img/flags/110.png b/static/img/flags/110.png similarity index 100% rename from webassets/img/flags/110.png rename to static/img/flags/110.png diff --git a/webassets/img/flags/111.png b/static/img/flags/111.png similarity index 100% rename from webassets/img/flags/111.png rename to static/img/flags/111.png diff --git a/webassets/img/flags/112.png b/static/img/flags/112.png similarity index 100% rename from webassets/img/flags/112.png rename to static/img/flags/112.png diff --git a/webassets/img/flags/113.png b/static/img/flags/113.png similarity index 100% rename from webassets/img/flags/113.png rename to static/img/flags/113.png diff --git a/webassets/img/flags/114.png b/static/img/flags/114.png similarity index 100% rename from webassets/img/flags/114.png rename to static/img/flags/114.png diff --git a/webassets/img/flags/115.png b/static/img/flags/115.png similarity index 100% rename from webassets/img/flags/115.png rename to static/img/flags/115.png diff --git a/webassets/img/flags/116.png b/static/img/flags/116.png similarity index 100% rename from webassets/img/flags/116.png rename to static/img/flags/116.png diff --git a/webassets/img/flags/117.png b/static/img/flags/117.png similarity index 100% rename from webassets/img/flags/117.png rename to static/img/flags/117.png diff --git a/webassets/img/flags/118.png b/static/img/flags/118.png similarity index 100% rename from webassets/img/flags/118.png rename to static/img/flags/118.png diff --git a/webassets/img/flags/119.png b/static/img/flags/119.png similarity index 100% rename from webassets/img/flags/119.png rename to static/img/flags/119.png diff --git a/webassets/img/flags/12.png b/static/img/flags/12.png similarity index 100% rename from webassets/img/flags/12.png rename to static/img/flags/12.png diff --git a/webassets/img/flags/120.png b/static/img/flags/120.png similarity index 100% rename from webassets/img/flags/120.png rename to static/img/flags/120.png diff --git a/webassets/img/flags/122.png b/static/img/flags/122.png similarity index 100% rename from webassets/img/flags/122.png rename to static/img/flags/122.png diff --git a/webassets/img/flags/123.png b/static/img/flags/123.png similarity index 100% rename from webassets/img/flags/123.png rename to static/img/flags/123.png diff --git a/webassets/img/flags/124.png b/static/img/flags/124.png similarity index 100% rename from webassets/img/flags/124.png rename to static/img/flags/124.png diff --git a/webassets/img/flags/125.png b/static/img/flags/125.png similarity index 100% rename from webassets/img/flags/125.png rename to static/img/flags/125.png diff --git a/webassets/img/flags/126.png b/static/img/flags/126.png similarity index 100% rename from webassets/img/flags/126.png rename to static/img/flags/126.png diff --git a/webassets/img/flags/127.png b/static/img/flags/127.png similarity index 100% rename from webassets/img/flags/127.png rename to static/img/flags/127.png diff --git a/webassets/img/flags/128.png b/static/img/flags/128.png similarity index 100% rename from webassets/img/flags/128.png rename to static/img/flags/128.png diff --git a/webassets/img/flags/129.png b/static/img/flags/129.png similarity index 100% rename from webassets/img/flags/129.png rename to static/img/flags/129.png diff --git a/webassets/img/flags/13.png b/static/img/flags/13.png similarity index 100% rename from webassets/img/flags/13.png rename to static/img/flags/13.png diff --git a/webassets/img/flags/130.png b/static/img/flags/130.png similarity index 100% rename from webassets/img/flags/130.png rename to static/img/flags/130.png diff --git a/webassets/img/flags/131.png b/static/img/flags/131.png similarity index 100% rename from webassets/img/flags/131.png rename to static/img/flags/131.png diff --git a/webassets/img/flags/132.png b/static/img/flags/132.png similarity index 100% rename from webassets/img/flags/132.png rename to static/img/flags/132.png diff --git a/webassets/img/flags/133.png b/static/img/flags/133.png similarity index 100% rename from webassets/img/flags/133.png rename to static/img/flags/133.png diff --git a/webassets/img/flags/134.png b/static/img/flags/134.png similarity index 100% rename from webassets/img/flags/134.png rename to static/img/flags/134.png diff --git a/webassets/img/flags/135.png b/static/img/flags/135.png similarity index 100% rename from webassets/img/flags/135.png rename to static/img/flags/135.png diff --git a/webassets/img/flags/136.png b/static/img/flags/136.png similarity index 100% rename from webassets/img/flags/136.png rename to static/img/flags/136.png diff --git a/webassets/img/flags/137.png b/static/img/flags/137.png similarity index 100% rename from webassets/img/flags/137.png rename to static/img/flags/137.png diff --git a/webassets/img/flags/138.png b/static/img/flags/138.png similarity index 100% rename from webassets/img/flags/138.png rename to static/img/flags/138.png diff --git a/webassets/img/flags/139.png b/static/img/flags/139.png similarity index 100% rename from webassets/img/flags/139.png rename to static/img/flags/139.png diff --git a/webassets/img/flags/14.png b/static/img/flags/14.png similarity index 100% rename from webassets/img/flags/14.png rename to static/img/flags/14.png diff --git a/webassets/img/flags/140.png b/static/img/flags/140.png similarity index 100% rename from webassets/img/flags/140.png rename to static/img/flags/140.png diff --git a/webassets/img/flags/141.png b/static/img/flags/141.png similarity index 100% rename from webassets/img/flags/141.png rename to static/img/flags/141.png diff --git a/webassets/img/flags/142.png b/static/img/flags/142.png similarity index 100% rename from webassets/img/flags/142.png rename to static/img/flags/142.png diff --git a/webassets/img/flags/143.png b/static/img/flags/143.png similarity index 100% rename from webassets/img/flags/143.png rename to static/img/flags/143.png diff --git a/webassets/img/flags/144.png b/static/img/flags/144.png similarity index 100% rename from webassets/img/flags/144.png rename to static/img/flags/144.png diff --git a/webassets/img/flags/145.png b/static/img/flags/145.png similarity index 100% rename from webassets/img/flags/145.png rename to static/img/flags/145.png diff --git a/webassets/img/flags/146.png b/static/img/flags/146.png similarity index 100% rename from webassets/img/flags/146.png rename to static/img/flags/146.png diff --git a/webassets/img/flags/147.png b/static/img/flags/147.png similarity index 100% rename from webassets/img/flags/147.png rename to static/img/flags/147.png diff --git a/webassets/img/flags/148.png b/static/img/flags/148.png similarity index 100% rename from webassets/img/flags/148.png rename to static/img/flags/148.png diff --git a/webassets/img/flags/149.png b/static/img/flags/149.png similarity index 100% rename from webassets/img/flags/149.png rename to static/img/flags/149.png diff --git a/webassets/img/flags/15.png b/static/img/flags/15.png similarity index 100% rename from webassets/img/flags/15.png rename to static/img/flags/15.png diff --git a/webassets/img/flags/150.png b/static/img/flags/150.png similarity index 100% rename from webassets/img/flags/150.png rename to static/img/flags/150.png diff --git a/webassets/img/flags/151.png b/static/img/flags/151.png similarity index 100% rename from webassets/img/flags/151.png rename to static/img/flags/151.png diff --git a/webassets/img/flags/152.png b/static/img/flags/152.png similarity index 100% rename from webassets/img/flags/152.png rename to static/img/flags/152.png diff --git a/webassets/img/flags/153.png b/static/img/flags/153.png similarity index 100% rename from webassets/img/flags/153.png rename to static/img/flags/153.png diff --git a/webassets/img/flags/154.png b/static/img/flags/154.png similarity index 100% rename from webassets/img/flags/154.png rename to static/img/flags/154.png diff --git a/webassets/img/flags/155.png b/static/img/flags/155.png similarity index 100% rename from webassets/img/flags/155.png rename to static/img/flags/155.png diff --git a/webassets/img/flags/157.png b/static/img/flags/157.png similarity index 100% rename from webassets/img/flags/157.png rename to static/img/flags/157.png diff --git a/webassets/img/flags/158.png b/static/img/flags/158.png similarity index 100% rename from webassets/img/flags/158.png rename to static/img/flags/158.png diff --git a/webassets/img/flags/159.png b/static/img/flags/159.png similarity index 100% rename from webassets/img/flags/159.png rename to static/img/flags/159.png diff --git a/webassets/img/flags/16.png b/static/img/flags/16.png similarity index 100% rename from webassets/img/flags/16.png rename to static/img/flags/16.png diff --git a/webassets/img/flags/160.png b/static/img/flags/160.png similarity index 100% rename from webassets/img/flags/160.png rename to static/img/flags/160.png diff --git a/webassets/img/flags/161.png b/static/img/flags/161.png similarity index 100% rename from webassets/img/flags/161.png rename to static/img/flags/161.png diff --git a/webassets/img/flags/162.png b/static/img/flags/162.png similarity index 100% rename from webassets/img/flags/162.png rename to static/img/flags/162.png diff --git a/webassets/img/flags/163.png b/static/img/flags/163.png similarity index 100% rename from webassets/img/flags/163.png rename to static/img/flags/163.png diff --git a/webassets/img/flags/164.png b/static/img/flags/164.png similarity index 100% rename from webassets/img/flags/164.png rename to static/img/flags/164.png diff --git a/webassets/img/flags/165.png b/static/img/flags/165.png similarity index 100% rename from webassets/img/flags/165.png rename to static/img/flags/165.png diff --git a/webassets/img/flags/166.png b/static/img/flags/166.png similarity index 100% rename from webassets/img/flags/166.png rename to static/img/flags/166.png diff --git a/webassets/img/flags/167.png b/static/img/flags/167.png similarity index 100% rename from webassets/img/flags/167.png rename to static/img/flags/167.png diff --git a/webassets/img/flags/168.png b/static/img/flags/168.png similarity index 100% rename from webassets/img/flags/168.png rename to static/img/flags/168.png diff --git a/webassets/img/flags/169.png b/static/img/flags/169.png similarity index 100% rename from webassets/img/flags/169.png rename to static/img/flags/169.png diff --git a/webassets/img/flags/17.png b/static/img/flags/17.png similarity index 100% rename from webassets/img/flags/17.png rename to static/img/flags/17.png diff --git a/webassets/img/flags/170.png b/static/img/flags/170.png similarity index 100% rename from webassets/img/flags/170.png rename to static/img/flags/170.png diff --git a/webassets/img/flags/171.png b/static/img/flags/171.png similarity index 100% rename from webassets/img/flags/171.png rename to static/img/flags/171.png diff --git a/webassets/img/flags/172.png b/static/img/flags/172.png similarity index 100% rename from webassets/img/flags/172.png rename to static/img/flags/172.png diff --git a/webassets/img/flags/173.png b/static/img/flags/173.png similarity index 100% rename from webassets/img/flags/173.png rename to static/img/flags/173.png diff --git a/webassets/img/flags/174.png b/static/img/flags/174.png similarity index 100% rename from webassets/img/flags/174.png rename to static/img/flags/174.png diff --git a/webassets/img/flags/175.png b/static/img/flags/175.png similarity index 100% rename from webassets/img/flags/175.png rename to static/img/flags/175.png diff --git a/webassets/img/flags/176.png b/static/img/flags/176.png similarity index 100% rename from webassets/img/flags/176.png rename to static/img/flags/176.png diff --git a/webassets/img/flags/177.png b/static/img/flags/177.png similarity index 100% rename from webassets/img/flags/177.png rename to static/img/flags/177.png diff --git a/webassets/img/flags/178.png b/static/img/flags/178.png similarity index 100% rename from webassets/img/flags/178.png rename to static/img/flags/178.png diff --git a/webassets/img/flags/179.png b/static/img/flags/179.png similarity index 100% rename from webassets/img/flags/179.png rename to static/img/flags/179.png diff --git a/webassets/img/flags/18.png b/static/img/flags/18.png similarity index 100% rename from webassets/img/flags/18.png rename to static/img/flags/18.png diff --git a/webassets/img/flags/180.png b/static/img/flags/180.png similarity index 100% rename from webassets/img/flags/180.png rename to static/img/flags/180.png diff --git a/webassets/img/flags/181.png b/static/img/flags/181.png similarity index 100% rename from webassets/img/flags/181.png rename to static/img/flags/181.png diff --git a/webassets/img/flags/182.png b/static/img/flags/182.png similarity index 100% rename from webassets/img/flags/182.png rename to static/img/flags/182.png diff --git a/webassets/img/flags/183.png b/static/img/flags/183.png similarity index 100% rename from webassets/img/flags/183.png rename to static/img/flags/183.png diff --git a/webassets/img/flags/184.png b/static/img/flags/184.png similarity index 100% rename from webassets/img/flags/184.png rename to static/img/flags/184.png diff --git a/webassets/img/flags/185.png b/static/img/flags/185.png similarity index 100% rename from webassets/img/flags/185.png rename to static/img/flags/185.png diff --git a/webassets/img/flags/186.png b/static/img/flags/186.png similarity index 100% rename from webassets/img/flags/186.png rename to static/img/flags/186.png diff --git a/webassets/img/flags/187.png b/static/img/flags/187.png similarity index 100% rename from webassets/img/flags/187.png rename to static/img/flags/187.png diff --git a/webassets/img/flags/188.png b/static/img/flags/188.png similarity index 100% rename from webassets/img/flags/188.png rename to static/img/flags/188.png diff --git a/webassets/img/flags/189.png b/static/img/flags/189.png similarity index 100% rename from webassets/img/flags/189.png rename to static/img/flags/189.png diff --git a/webassets/img/flags/19.png b/static/img/flags/19.png similarity index 100% rename from webassets/img/flags/19.png rename to static/img/flags/19.png diff --git a/webassets/img/flags/190.png b/static/img/flags/190.png similarity index 100% rename from webassets/img/flags/190.png rename to static/img/flags/190.png diff --git a/webassets/img/flags/191.png b/static/img/flags/191.png similarity index 100% rename from webassets/img/flags/191.png rename to static/img/flags/191.png diff --git a/webassets/img/flags/192.png b/static/img/flags/192.png similarity index 100% rename from webassets/img/flags/192.png rename to static/img/flags/192.png diff --git a/webassets/img/flags/193.png b/static/img/flags/193.png similarity index 100% rename from webassets/img/flags/193.png rename to static/img/flags/193.png diff --git a/webassets/img/flags/194.png b/static/img/flags/194.png similarity index 100% rename from webassets/img/flags/194.png rename to static/img/flags/194.png diff --git a/webassets/img/flags/195.png b/static/img/flags/195.png similarity index 100% rename from webassets/img/flags/195.png rename to static/img/flags/195.png diff --git a/webassets/img/flags/196.png b/static/img/flags/196.png similarity index 100% rename from webassets/img/flags/196.png rename to static/img/flags/196.png diff --git a/webassets/img/flags/197.png b/static/img/flags/197.png similarity index 100% rename from webassets/img/flags/197.png rename to static/img/flags/197.png diff --git a/webassets/img/flags/198.png b/static/img/flags/198.png similarity index 100% rename from webassets/img/flags/198.png rename to static/img/flags/198.png diff --git a/webassets/img/flags/199.png b/static/img/flags/199.png similarity index 100% rename from webassets/img/flags/199.png rename to static/img/flags/199.png diff --git a/webassets/img/flags/2.png b/static/img/flags/2.png similarity index 100% rename from webassets/img/flags/2.png rename to static/img/flags/2.png diff --git a/webassets/img/flags/20.png b/static/img/flags/20.png similarity index 100% rename from webassets/img/flags/20.png rename to static/img/flags/20.png diff --git a/webassets/img/flags/200.png b/static/img/flags/200.png similarity index 100% rename from webassets/img/flags/200.png rename to static/img/flags/200.png diff --git a/webassets/img/flags/201.png b/static/img/flags/201.png similarity index 100% rename from webassets/img/flags/201.png rename to static/img/flags/201.png diff --git a/webassets/img/flags/202.png b/static/img/flags/202.png similarity index 100% rename from webassets/img/flags/202.png rename to static/img/flags/202.png diff --git a/webassets/img/flags/203.png b/static/img/flags/203.png similarity index 100% rename from webassets/img/flags/203.png rename to static/img/flags/203.png diff --git a/webassets/img/flags/204.png b/static/img/flags/204.png similarity index 100% rename from webassets/img/flags/204.png rename to static/img/flags/204.png diff --git a/webassets/img/flags/205.png b/static/img/flags/205.png similarity index 100% rename from webassets/img/flags/205.png rename to static/img/flags/205.png diff --git a/webassets/img/flags/206.png b/static/img/flags/206.png similarity index 100% rename from webassets/img/flags/206.png rename to static/img/flags/206.png diff --git a/webassets/img/flags/207.png b/static/img/flags/207.png similarity index 100% rename from webassets/img/flags/207.png rename to static/img/flags/207.png diff --git a/webassets/img/flags/208.png b/static/img/flags/208.png similarity index 100% rename from webassets/img/flags/208.png rename to static/img/flags/208.png diff --git a/webassets/img/flags/209.png b/static/img/flags/209.png similarity index 100% rename from webassets/img/flags/209.png rename to static/img/flags/209.png diff --git a/webassets/img/flags/21.png b/static/img/flags/21.png similarity index 100% rename from webassets/img/flags/21.png rename to static/img/flags/21.png diff --git a/webassets/img/flags/210.png b/static/img/flags/210.png similarity index 100% rename from webassets/img/flags/210.png rename to static/img/flags/210.png diff --git a/webassets/img/flags/211.png b/static/img/flags/211.png similarity index 100% rename from webassets/img/flags/211.png rename to static/img/flags/211.png diff --git a/webassets/img/flags/212.png b/static/img/flags/212.png similarity index 100% rename from webassets/img/flags/212.png rename to static/img/flags/212.png diff --git a/webassets/img/flags/213.png b/static/img/flags/213.png similarity index 100% rename from webassets/img/flags/213.png rename to static/img/flags/213.png diff --git a/webassets/img/flags/214.png b/static/img/flags/214.png similarity index 100% rename from webassets/img/flags/214.png rename to static/img/flags/214.png diff --git a/webassets/img/flags/215.png b/static/img/flags/215.png similarity index 100% rename from webassets/img/flags/215.png rename to static/img/flags/215.png diff --git a/webassets/img/flags/216.png b/static/img/flags/216.png similarity index 100% rename from webassets/img/flags/216.png rename to static/img/flags/216.png diff --git a/webassets/img/flags/217.png b/static/img/flags/217.png similarity index 100% rename from webassets/img/flags/217.png rename to static/img/flags/217.png diff --git a/webassets/img/flags/218.png b/static/img/flags/218.png similarity index 100% rename from webassets/img/flags/218.png rename to static/img/flags/218.png diff --git a/webassets/img/flags/219.png b/static/img/flags/219.png similarity index 100% rename from webassets/img/flags/219.png rename to static/img/flags/219.png diff --git a/webassets/img/flags/22.png b/static/img/flags/22.png similarity index 100% rename from webassets/img/flags/22.png rename to static/img/flags/22.png diff --git a/webassets/img/flags/220.png b/static/img/flags/220.png similarity index 100% rename from webassets/img/flags/220.png rename to static/img/flags/220.png diff --git a/webassets/img/flags/221.png b/static/img/flags/221.png similarity index 100% rename from webassets/img/flags/221.png rename to static/img/flags/221.png diff --git a/webassets/img/flags/222.png b/static/img/flags/222.png similarity index 100% rename from webassets/img/flags/222.png rename to static/img/flags/222.png diff --git a/webassets/img/flags/223.png b/static/img/flags/223.png similarity index 100% rename from webassets/img/flags/223.png rename to static/img/flags/223.png diff --git a/webassets/img/flags/224.png b/static/img/flags/224.png similarity index 100% rename from webassets/img/flags/224.png rename to static/img/flags/224.png diff --git a/webassets/img/flags/225.png b/static/img/flags/225.png similarity index 100% rename from webassets/img/flags/225.png rename to static/img/flags/225.png diff --git a/webassets/img/flags/226.png b/static/img/flags/226.png similarity index 100% rename from webassets/img/flags/226.png rename to static/img/flags/226.png diff --git a/webassets/img/flags/227.png b/static/img/flags/227.png similarity index 100% rename from webassets/img/flags/227.png rename to static/img/flags/227.png diff --git a/webassets/img/flags/228.png b/static/img/flags/228.png similarity index 100% rename from webassets/img/flags/228.png rename to static/img/flags/228.png diff --git a/webassets/img/flags/229.png b/static/img/flags/229.png similarity index 100% rename from webassets/img/flags/229.png rename to static/img/flags/229.png diff --git a/webassets/img/flags/23.png b/static/img/flags/23.png similarity index 100% rename from webassets/img/flags/23.png rename to static/img/flags/23.png diff --git a/webassets/img/flags/230.png b/static/img/flags/230.png similarity index 100% rename from webassets/img/flags/230.png rename to static/img/flags/230.png diff --git a/webassets/img/flags/231.png b/static/img/flags/231.png similarity index 100% rename from webassets/img/flags/231.png rename to static/img/flags/231.png diff --git a/webassets/img/flags/232.png b/static/img/flags/232.png similarity index 100% rename from webassets/img/flags/232.png rename to static/img/flags/232.png diff --git a/webassets/img/flags/233.png b/static/img/flags/233.png similarity index 100% rename from webassets/img/flags/233.png rename to static/img/flags/233.png diff --git a/webassets/img/flags/234.png b/static/img/flags/234.png similarity index 100% rename from webassets/img/flags/234.png rename to static/img/flags/234.png diff --git a/webassets/img/flags/235.png b/static/img/flags/235.png similarity index 100% rename from webassets/img/flags/235.png rename to static/img/flags/235.png diff --git a/webassets/img/flags/236.png b/static/img/flags/236.png similarity index 100% rename from webassets/img/flags/236.png rename to static/img/flags/236.png diff --git a/webassets/img/flags/237.png b/static/img/flags/237.png similarity index 100% rename from webassets/img/flags/237.png rename to static/img/flags/237.png diff --git a/webassets/img/flags/238.png b/static/img/flags/238.png similarity index 100% rename from webassets/img/flags/238.png rename to static/img/flags/238.png diff --git a/webassets/img/flags/239.png b/static/img/flags/239.png similarity index 100% rename from webassets/img/flags/239.png rename to static/img/flags/239.png diff --git a/webassets/img/flags/24.png b/static/img/flags/24.png similarity index 100% rename from webassets/img/flags/24.png rename to static/img/flags/24.png diff --git a/webassets/img/flags/240.png b/static/img/flags/240.png similarity index 100% rename from webassets/img/flags/240.png rename to static/img/flags/240.png diff --git a/webassets/img/flags/241.png b/static/img/flags/241.png similarity index 100% rename from webassets/img/flags/241.png rename to static/img/flags/241.png diff --git a/webassets/img/flags/242.png b/static/img/flags/242.png similarity index 100% rename from webassets/img/flags/242.png rename to static/img/flags/242.png diff --git a/webassets/img/flags/243.png b/static/img/flags/243.png similarity index 100% rename from webassets/img/flags/243.png rename to static/img/flags/243.png diff --git a/webassets/img/flags/244.png b/static/img/flags/244.png similarity index 100% rename from webassets/img/flags/244.png rename to static/img/flags/244.png diff --git a/webassets/img/flags/245.png b/static/img/flags/245.png similarity index 100% rename from webassets/img/flags/245.png rename to static/img/flags/245.png diff --git a/webassets/img/flags/246.png b/static/img/flags/246.png similarity index 100% rename from webassets/img/flags/246.png rename to static/img/flags/246.png diff --git a/webassets/img/flags/247.png b/static/img/flags/247.png similarity index 100% rename from webassets/img/flags/247.png rename to static/img/flags/247.png diff --git a/webassets/img/flags/248.png b/static/img/flags/248.png similarity index 100% rename from webassets/img/flags/248.png rename to static/img/flags/248.png diff --git a/webassets/img/flags/249.png b/static/img/flags/249.png similarity index 100% rename from webassets/img/flags/249.png rename to static/img/flags/249.png diff --git a/webassets/img/flags/25.png b/static/img/flags/25.png similarity index 100% rename from webassets/img/flags/25.png rename to static/img/flags/25.png diff --git a/webassets/img/flags/250.png b/static/img/flags/250.png similarity index 100% rename from webassets/img/flags/250.png rename to static/img/flags/250.png diff --git a/webassets/img/flags/251.png b/static/img/flags/251.png similarity index 100% rename from webassets/img/flags/251.png rename to static/img/flags/251.png diff --git a/webassets/img/flags/252.png b/static/img/flags/252.png similarity index 100% rename from webassets/img/flags/252.png rename to static/img/flags/252.png diff --git a/webassets/img/flags/253.png b/static/img/flags/253.png similarity index 100% rename from webassets/img/flags/253.png rename to static/img/flags/253.png diff --git a/webassets/img/flags/254.png b/static/img/flags/254.png similarity index 100% rename from webassets/img/flags/254.png rename to static/img/flags/254.png diff --git a/webassets/img/flags/255.png b/static/img/flags/255.png similarity index 100% rename from webassets/img/flags/255.png rename to static/img/flags/255.png diff --git a/webassets/img/flags/256.png b/static/img/flags/256.png similarity index 100% rename from webassets/img/flags/256.png rename to static/img/flags/256.png diff --git a/webassets/img/flags/257.png b/static/img/flags/257.png similarity index 100% rename from webassets/img/flags/257.png rename to static/img/flags/257.png diff --git a/webassets/img/flags/258.png b/static/img/flags/258.png similarity index 100% rename from webassets/img/flags/258.png rename to static/img/flags/258.png diff --git a/webassets/img/flags/259.png b/static/img/flags/259.png similarity index 100% rename from webassets/img/flags/259.png rename to static/img/flags/259.png diff --git a/webassets/img/flags/26.png b/static/img/flags/26.png similarity index 100% rename from webassets/img/flags/26.png rename to static/img/flags/26.png diff --git a/webassets/img/flags/260.png b/static/img/flags/260.png similarity index 100% rename from webassets/img/flags/260.png rename to static/img/flags/260.png diff --git a/webassets/img/flags/261.png b/static/img/flags/261.png similarity index 100% rename from webassets/img/flags/261.png rename to static/img/flags/261.png diff --git a/webassets/img/flags/262.png b/static/img/flags/262.png similarity index 100% rename from webassets/img/flags/262.png rename to static/img/flags/262.png diff --git a/webassets/img/flags/263.png b/static/img/flags/263.png similarity index 100% rename from webassets/img/flags/263.png rename to static/img/flags/263.png diff --git a/webassets/img/flags/264.png b/static/img/flags/264.png similarity index 100% rename from webassets/img/flags/264.png rename to static/img/flags/264.png diff --git a/webassets/img/flags/265.png b/static/img/flags/265.png similarity index 100% rename from webassets/img/flags/265.png rename to static/img/flags/265.png diff --git a/webassets/img/flags/266.png b/static/img/flags/266.png similarity index 100% rename from webassets/img/flags/266.png rename to static/img/flags/266.png diff --git a/webassets/img/flags/267.png b/static/img/flags/267.png similarity index 100% rename from webassets/img/flags/267.png rename to static/img/flags/267.png diff --git a/webassets/img/flags/268.png b/static/img/flags/268.png similarity index 100% rename from webassets/img/flags/268.png rename to static/img/flags/268.png diff --git a/webassets/img/flags/269.png b/static/img/flags/269.png similarity index 100% rename from webassets/img/flags/269.png rename to static/img/flags/269.png diff --git a/webassets/img/flags/27.png b/static/img/flags/27.png similarity index 100% rename from webassets/img/flags/27.png rename to static/img/flags/27.png diff --git a/webassets/img/flags/270.png b/static/img/flags/270.png similarity index 100% rename from webassets/img/flags/270.png rename to static/img/flags/270.png diff --git a/webassets/img/flags/271.png b/static/img/flags/271.png similarity index 100% rename from webassets/img/flags/271.png rename to static/img/flags/271.png diff --git a/webassets/img/flags/272.png b/static/img/flags/272.png similarity index 100% rename from webassets/img/flags/272.png rename to static/img/flags/272.png diff --git a/webassets/img/flags/273.png b/static/img/flags/273.png similarity index 100% rename from webassets/img/flags/273.png rename to static/img/flags/273.png diff --git a/webassets/img/flags/274.png b/static/img/flags/274.png similarity index 100% rename from webassets/img/flags/274.png rename to static/img/flags/274.png diff --git a/webassets/img/flags/275.png b/static/img/flags/275.png similarity index 100% rename from webassets/img/flags/275.png rename to static/img/flags/275.png diff --git a/webassets/img/flags/276.png b/static/img/flags/276.png similarity index 100% rename from webassets/img/flags/276.png rename to static/img/flags/276.png diff --git a/webassets/img/flags/277.png b/static/img/flags/277.png similarity index 100% rename from webassets/img/flags/277.png rename to static/img/flags/277.png diff --git a/webassets/img/flags/278.png b/static/img/flags/278.png similarity index 100% rename from webassets/img/flags/278.png rename to static/img/flags/278.png diff --git a/webassets/img/flags/279.png b/static/img/flags/279.png similarity index 100% rename from webassets/img/flags/279.png rename to static/img/flags/279.png diff --git a/webassets/img/flags/28.png b/static/img/flags/28.png similarity index 100% rename from webassets/img/flags/28.png rename to static/img/flags/28.png diff --git a/webassets/img/flags/280.png b/static/img/flags/280.png similarity index 100% rename from webassets/img/flags/280.png rename to static/img/flags/280.png diff --git a/webassets/img/flags/281.png b/static/img/flags/281.png similarity index 100% rename from webassets/img/flags/281.png rename to static/img/flags/281.png diff --git a/webassets/img/flags/282.png b/static/img/flags/282.png similarity index 100% rename from webassets/img/flags/282.png rename to static/img/flags/282.png diff --git a/webassets/img/flags/283.png b/static/img/flags/283.png similarity index 100% rename from webassets/img/flags/283.png rename to static/img/flags/283.png diff --git a/webassets/img/flags/284.png b/static/img/flags/284.png similarity index 100% rename from webassets/img/flags/284.png rename to static/img/flags/284.png diff --git a/webassets/img/flags/285.png b/static/img/flags/285.png similarity index 100% rename from webassets/img/flags/285.png rename to static/img/flags/285.png diff --git a/webassets/img/flags/286.png b/static/img/flags/286.png similarity index 100% rename from webassets/img/flags/286.png rename to static/img/flags/286.png diff --git a/webassets/img/flags/287.png b/static/img/flags/287.png similarity index 100% rename from webassets/img/flags/287.png rename to static/img/flags/287.png diff --git a/webassets/img/flags/288.png b/static/img/flags/288.png similarity index 100% rename from webassets/img/flags/288.png rename to static/img/flags/288.png diff --git a/webassets/img/flags/289.png b/static/img/flags/289.png similarity index 100% rename from webassets/img/flags/289.png rename to static/img/flags/289.png diff --git a/webassets/img/flags/29.png b/static/img/flags/29.png similarity index 100% rename from webassets/img/flags/29.png rename to static/img/flags/29.png diff --git a/webassets/img/flags/291.png b/static/img/flags/291.png similarity index 100% rename from webassets/img/flags/291.png rename to static/img/flags/291.png diff --git a/webassets/img/flags/292.png b/static/img/flags/292.png similarity index 100% rename from webassets/img/flags/292.png rename to static/img/flags/292.png diff --git a/webassets/img/flags/293.png b/static/img/flags/293.png similarity index 100% rename from webassets/img/flags/293.png rename to static/img/flags/293.png diff --git a/webassets/img/flags/294.png b/static/img/flags/294.png similarity index 100% rename from webassets/img/flags/294.png rename to static/img/flags/294.png diff --git a/webassets/img/flags/295.png b/static/img/flags/295.png similarity index 100% rename from webassets/img/flags/295.png rename to static/img/flags/295.png diff --git a/webassets/img/flags/296.png b/static/img/flags/296.png similarity index 100% rename from webassets/img/flags/296.png rename to static/img/flags/296.png diff --git a/webassets/img/flags/297.png b/static/img/flags/297.png similarity index 100% rename from webassets/img/flags/297.png rename to static/img/flags/297.png diff --git a/webassets/img/flags/298.png b/static/img/flags/298.png similarity index 100% rename from webassets/img/flags/298.png rename to static/img/flags/298.png diff --git a/webassets/img/flags/299.png b/static/img/flags/299.png similarity index 100% rename from webassets/img/flags/299.png rename to static/img/flags/299.png diff --git a/webassets/img/flags/3.png b/static/img/flags/3.png similarity index 100% rename from webassets/img/flags/3.png rename to static/img/flags/3.png diff --git a/webassets/img/flags/30.png b/static/img/flags/30.png similarity index 100% rename from webassets/img/flags/30.png rename to static/img/flags/30.png diff --git a/webassets/img/flags/301.png b/static/img/flags/301.png similarity index 100% rename from webassets/img/flags/301.png rename to static/img/flags/301.png diff --git a/webassets/img/flags/302.png b/static/img/flags/302.png similarity index 100% rename from webassets/img/flags/302.png rename to static/img/flags/302.png diff --git a/webassets/img/flags/303.png b/static/img/flags/303.png similarity index 100% rename from webassets/img/flags/303.png rename to static/img/flags/303.png diff --git a/webassets/img/flags/304.png b/static/img/flags/304.png similarity index 100% rename from webassets/img/flags/304.png rename to static/img/flags/304.png diff --git a/webassets/img/flags/305.png b/static/img/flags/305.png similarity index 100% rename from webassets/img/flags/305.png rename to static/img/flags/305.png diff --git a/webassets/img/flags/306.png b/static/img/flags/306.png similarity index 100% rename from webassets/img/flags/306.png rename to static/img/flags/306.png diff --git a/webassets/img/flags/307.png b/static/img/flags/307.png similarity index 100% rename from webassets/img/flags/307.png rename to static/img/flags/307.png diff --git a/webassets/img/flags/308.png b/static/img/flags/308.png similarity index 100% rename from webassets/img/flags/308.png rename to static/img/flags/308.png diff --git a/webassets/img/flags/309.png b/static/img/flags/309.png similarity index 100% rename from webassets/img/flags/309.png rename to static/img/flags/309.png diff --git a/webassets/img/flags/31.png b/static/img/flags/31.png similarity index 100% rename from webassets/img/flags/31.png rename to static/img/flags/31.png diff --git a/webassets/img/flags/312.png b/static/img/flags/312.png similarity index 100% rename from webassets/img/flags/312.png rename to static/img/flags/312.png diff --git a/webassets/img/flags/315.png b/static/img/flags/315.png similarity index 100% rename from webassets/img/flags/315.png rename to static/img/flags/315.png diff --git a/webassets/img/flags/318.png b/static/img/flags/318.png similarity index 100% rename from webassets/img/flags/318.png rename to static/img/flags/318.png diff --git a/webassets/img/flags/32.png b/static/img/flags/32.png similarity index 100% rename from webassets/img/flags/32.png rename to static/img/flags/32.png diff --git a/webassets/img/flags/321.png b/static/img/flags/321.png similarity index 100% rename from webassets/img/flags/321.png rename to static/img/flags/321.png diff --git a/webassets/img/flags/324.png b/static/img/flags/324.png similarity index 100% rename from webassets/img/flags/324.png rename to static/img/flags/324.png diff --git a/webassets/img/flags/327.png b/static/img/flags/327.png similarity index 100% rename from webassets/img/flags/327.png rename to static/img/flags/327.png diff --git a/webassets/img/flags/33.png b/static/img/flags/33.png similarity index 100% rename from webassets/img/flags/33.png rename to static/img/flags/33.png diff --git a/webassets/img/flags/330.png b/static/img/flags/330.png similarity index 100% rename from webassets/img/flags/330.png rename to static/img/flags/330.png diff --git a/webassets/img/flags/333.png b/static/img/flags/333.png similarity index 100% rename from webassets/img/flags/333.png rename to static/img/flags/333.png diff --git a/webassets/img/flags/336.png b/static/img/flags/336.png similarity index 100% rename from webassets/img/flags/336.png rename to static/img/flags/336.png diff --git a/webassets/img/flags/339.png b/static/img/flags/339.png similarity index 100% rename from webassets/img/flags/339.png rename to static/img/flags/339.png diff --git a/webassets/img/flags/34.png b/static/img/flags/34.png similarity index 100% rename from webassets/img/flags/34.png rename to static/img/flags/34.png diff --git a/webassets/img/flags/342.png b/static/img/flags/342.png similarity index 100% rename from webassets/img/flags/342.png rename to static/img/flags/342.png diff --git a/webassets/img/flags/344.png b/static/img/flags/344.png similarity index 100% rename from webassets/img/flags/344.png rename to static/img/flags/344.png diff --git a/webassets/img/flags/345.png b/static/img/flags/345.png similarity index 100% rename from webassets/img/flags/345.png rename to static/img/flags/345.png diff --git a/webassets/img/flags/348.png b/static/img/flags/348.png similarity index 100% rename from webassets/img/flags/348.png rename to static/img/flags/348.png diff --git a/webassets/img/flags/35.png b/static/img/flags/35.png similarity index 100% rename from webassets/img/flags/35.png rename to static/img/flags/35.png diff --git a/webassets/img/flags/354.png b/static/img/flags/354.png similarity index 100% rename from webassets/img/flags/354.png rename to static/img/flags/354.png diff --git a/webassets/img/flags/36.png b/static/img/flags/36.png similarity index 100% rename from webassets/img/flags/36.png rename to static/img/flags/36.png diff --git a/webassets/img/flags/363.png b/static/img/flags/363.png similarity index 100% rename from webassets/img/flags/363.png rename to static/img/flags/363.png diff --git a/webassets/img/flags/369.png b/static/img/flags/369.png similarity index 100% rename from webassets/img/flags/369.png rename to static/img/flags/369.png diff --git a/webassets/img/flags/37.png b/static/img/flags/37.png similarity index 100% rename from webassets/img/flags/37.png rename to static/img/flags/37.png diff --git a/webassets/img/flags/370.png b/static/img/flags/370.png similarity index 100% rename from webassets/img/flags/370.png rename to static/img/flags/370.png diff --git a/webassets/img/flags/372.png b/static/img/flags/372.png similarity index 100% rename from webassets/img/flags/372.png rename to static/img/flags/372.png diff --git a/webassets/img/flags/375.png b/static/img/flags/375.png similarity index 100% rename from webassets/img/flags/375.png rename to static/img/flags/375.png diff --git a/webassets/img/flags/376.png b/static/img/flags/376.png similarity index 100% rename from webassets/img/flags/376.png rename to static/img/flags/376.png diff --git a/webassets/img/flags/378.png b/static/img/flags/378.png similarity index 100% rename from webassets/img/flags/378.png rename to static/img/flags/378.png diff --git a/webassets/img/flags/379.png b/static/img/flags/379.png similarity index 100% rename from webassets/img/flags/379.png rename to static/img/flags/379.png diff --git a/webassets/img/flags/38.png b/static/img/flags/38.png similarity index 100% rename from webassets/img/flags/38.png rename to static/img/flags/38.png diff --git a/webassets/img/flags/381.png b/static/img/flags/381.png similarity index 100% rename from webassets/img/flags/381.png rename to static/img/flags/381.png diff --git a/webassets/img/flags/382.png b/static/img/flags/382.png similarity index 100% rename from webassets/img/flags/382.png rename to static/img/flags/382.png diff --git a/webassets/img/flags/384.png b/static/img/flags/384.png similarity index 100% rename from webassets/img/flags/384.png rename to static/img/flags/384.png diff --git a/webassets/img/flags/386.png b/static/img/flags/386.png similarity index 100% rename from webassets/img/flags/386.png rename to static/img/flags/386.png diff --git a/webassets/img/flags/387.png b/static/img/flags/387.png similarity index 100% rename from webassets/img/flags/387.png rename to static/img/flags/387.png diff --git a/webassets/img/flags/39.png b/static/img/flags/39.png similarity index 100% rename from webassets/img/flags/39.png rename to static/img/flags/39.png diff --git a/webassets/img/flags/390.png b/static/img/flags/390.png similarity index 100% rename from webassets/img/flags/390.png rename to static/img/flags/390.png diff --git a/webassets/img/flags/391.png b/static/img/flags/391.png similarity index 100% rename from webassets/img/flags/391.png rename to static/img/flags/391.png diff --git a/webassets/img/flags/4.png b/static/img/flags/4.png similarity index 100% rename from webassets/img/flags/4.png rename to static/img/flags/4.png diff --git a/webassets/img/flags/40.png b/static/img/flags/40.png similarity index 100% rename from webassets/img/flags/40.png rename to static/img/flags/40.png diff --git a/webassets/img/flags/400.png b/static/img/flags/400.png similarity index 100% rename from webassets/img/flags/400.png rename to static/img/flags/400.png diff --git a/webassets/img/flags/401.png b/static/img/flags/401.png similarity index 100% rename from webassets/img/flags/401.png rename to static/img/flags/401.png diff --git a/webassets/img/flags/402.png b/static/img/flags/402.png similarity index 100% rename from webassets/img/flags/402.png rename to static/img/flags/402.png diff --git a/webassets/img/flags/404.png b/static/img/flags/404.png similarity index 100% rename from webassets/img/flags/404.png rename to static/img/flags/404.png diff --git a/webassets/img/flags/406.png b/static/img/flags/406.png similarity index 100% rename from webassets/img/flags/406.png rename to static/img/flags/406.png diff --git a/webassets/img/flags/408.png b/static/img/flags/408.png similarity index 100% rename from webassets/img/flags/408.png rename to static/img/flags/408.png diff --git a/webassets/img/flags/409.png b/static/img/flags/409.png similarity index 100% rename from webassets/img/flags/409.png rename to static/img/flags/409.png diff --git a/webassets/img/flags/41.png b/static/img/flags/41.png similarity index 100% rename from webassets/img/flags/41.png rename to static/img/flags/41.png diff --git a/webassets/img/flags/410.png b/static/img/flags/410.png similarity index 100% rename from webassets/img/flags/410.png rename to static/img/flags/410.png diff --git a/webassets/img/flags/411.png b/static/img/flags/411.png similarity index 100% rename from webassets/img/flags/411.png rename to static/img/flags/411.png diff --git a/webassets/img/flags/412.png b/static/img/flags/412.png similarity index 100% rename from webassets/img/flags/412.png rename to static/img/flags/412.png diff --git a/webassets/img/flags/414.png b/static/img/flags/414.png similarity index 100% rename from webassets/img/flags/414.png rename to static/img/flags/414.png diff --git a/webassets/img/flags/416.png b/static/img/flags/416.png similarity index 100% rename from webassets/img/flags/416.png rename to static/img/flags/416.png diff --git a/webassets/img/flags/42.png b/static/img/flags/42.png similarity index 100% rename from webassets/img/flags/42.png rename to static/img/flags/42.png diff --git a/webassets/img/flags/420.png b/static/img/flags/420.png similarity index 100% rename from webassets/img/flags/420.png rename to static/img/flags/420.png diff --git a/webassets/img/flags/422.png b/static/img/flags/422.png similarity index 100% rename from webassets/img/flags/422.png rename to static/img/flags/422.png diff --git a/webassets/img/flags/424.png b/static/img/flags/424.png similarity index 100% rename from webassets/img/flags/424.png rename to static/img/flags/424.png diff --git a/webassets/img/flags/428.png b/static/img/flags/428.png similarity index 100% rename from webassets/img/flags/428.png rename to static/img/flags/428.png diff --git a/webassets/img/flags/43.png b/static/img/flags/43.png similarity index 100% rename from webassets/img/flags/43.png rename to static/img/flags/43.png diff --git a/webassets/img/flags/430.png b/static/img/flags/430.png similarity index 100% rename from webassets/img/flags/430.png rename to static/img/flags/430.png diff --git a/webassets/img/flags/432.png b/static/img/flags/432.png similarity index 100% rename from webassets/img/flags/432.png rename to static/img/flags/432.png diff --git a/webassets/img/flags/434.png b/static/img/flags/434.png similarity index 100% rename from webassets/img/flags/434.png rename to static/img/flags/434.png diff --git a/webassets/img/flags/436.png b/static/img/flags/436.png similarity index 100% rename from webassets/img/flags/436.png rename to static/img/flags/436.png diff --git a/webassets/img/flags/438.png b/static/img/flags/438.png similarity index 100% rename from webassets/img/flags/438.png rename to static/img/flags/438.png diff --git a/webassets/img/flags/44.png b/static/img/flags/44.png similarity index 100% rename from webassets/img/flags/44.png rename to static/img/flags/44.png diff --git a/webassets/img/flags/440.png b/static/img/flags/440.png similarity index 100% rename from webassets/img/flags/440.png rename to static/img/flags/440.png diff --git a/webassets/img/flags/442.png b/static/img/flags/442.png similarity index 100% rename from webassets/img/flags/442.png rename to static/img/flags/442.png diff --git a/webassets/img/flags/444.png b/static/img/flags/444.png similarity index 100% rename from webassets/img/flags/444.png rename to static/img/flags/444.png diff --git a/webassets/img/flags/446.png b/static/img/flags/446.png similarity index 100% rename from webassets/img/flags/446.png rename to static/img/flags/446.png diff --git a/webassets/img/flags/45.png b/static/img/flags/45.png similarity index 100% rename from webassets/img/flags/45.png rename to static/img/flags/45.png diff --git a/webassets/img/flags/450.png b/static/img/flags/450.png similarity index 100% rename from webassets/img/flags/450.png rename to static/img/flags/450.png diff --git a/webassets/img/flags/452.png b/static/img/flags/452.png similarity index 100% rename from webassets/img/flags/452.png rename to static/img/flags/452.png diff --git a/webassets/img/flags/453.png b/static/img/flags/453.png similarity index 100% rename from webassets/img/flags/453.png rename to static/img/flags/453.png diff --git a/webassets/img/flags/454.png b/static/img/flags/454.png similarity index 100% rename from webassets/img/flags/454.png rename to static/img/flags/454.png diff --git a/webassets/img/flags/456.png b/static/img/flags/456.png similarity index 100% rename from webassets/img/flags/456.png rename to static/img/flags/456.png diff --git a/webassets/img/flags/458.png b/static/img/flags/458.png similarity index 100% rename from webassets/img/flags/458.png rename to static/img/flags/458.png diff --git a/webassets/img/flags/46.png b/static/img/flags/46.png similarity index 100% rename from webassets/img/flags/46.png rename to static/img/flags/46.png diff --git a/webassets/img/flags/460.png b/static/img/flags/460.png similarity index 100% rename from webassets/img/flags/460.png rename to static/img/flags/460.png diff --git a/webassets/img/flags/462.png b/static/img/flags/462.png similarity index 100% rename from webassets/img/flags/462.png rename to static/img/flags/462.png diff --git a/webassets/img/flags/464.png b/static/img/flags/464.png similarity index 100% rename from webassets/img/flags/464.png rename to static/img/flags/464.png diff --git a/webassets/img/flags/466.png b/static/img/flags/466.png similarity index 100% rename from webassets/img/flags/466.png rename to static/img/flags/466.png diff --git a/webassets/img/flags/468.png b/static/img/flags/468.png similarity index 100% rename from webassets/img/flags/468.png rename to static/img/flags/468.png diff --git a/webassets/img/flags/47.png b/static/img/flags/47.png similarity index 100% rename from webassets/img/flags/47.png rename to static/img/flags/47.png diff --git a/webassets/img/flags/470.png b/static/img/flags/470.png similarity index 100% rename from webassets/img/flags/470.png rename to static/img/flags/470.png diff --git a/webassets/img/flags/474.png b/static/img/flags/474.png similarity index 100% rename from webassets/img/flags/474.png rename to static/img/flags/474.png diff --git a/webassets/img/flags/478.png b/static/img/flags/478.png similarity index 100% rename from webassets/img/flags/478.png rename to static/img/flags/478.png diff --git a/webassets/img/flags/48.png b/static/img/flags/48.png similarity index 100% rename from webassets/img/flags/48.png rename to static/img/flags/48.png diff --git a/webassets/img/flags/480.png b/static/img/flags/480.png similarity index 100% rename from webassets/img/flags/480.png rename to static/img/flags/480.png diff --git a/webassets/img/flags/482.png b/static/img/flags/482.png similarity index 100% rename from webassets/img/flags/482.png rename to static/img/flags/482.png diff --git a/webassets/img/flags/483.png b/static/img/flags/483.png similarity index 100% rename from webassets/img/flags/483.png rename to static/img/flags/483.png diff --git a/webassets/img/flags/488.png b/static/img/flags/488.png similarity index 100% rename from webassets/img/flags/488.png rename to static/img/flags/488.png diff --git a/webassets/img/flags/489.png b/static/img/flags/489.png similarity index 100% rename from webassets/img/flags/489.png rename to static/img/flags/489.png diff --git a/webassets/img/flags/49.png b/static/img/flags/49.png similarity index 100% rename from webassets/img/flags/49.png rename to static/img/flags/49.png diff --git a/webassets/img/flags/490.png b/static/img/flags/490.png similarity index 100% rename from webassets/img/flags/490.png rename to static/img/flags/490.png diff --git a/webassets/img/flags/492.png b/static/img/flags/492.png similarity index 100% rename from webassets/img/flags/492.png rename to static/img/flags/492.png diff --git a/webassets/img/flags/493.png b/static/img/flags/493.png similarity index 100% rename from webassets/img/flags/493.png rename to static/img/flags/493.png diff --git a/webassets/img/flags/497.png b/static/img/flags/497.png similarity index 100% rename from webassets/img/flags/497.png rename to static/img/flags/497.png diff --git a/webassets/img/flags/499.png b/static/img/flags/499.png similarity index 100% rename from webassets/img/flags/499.png rename to static/img/flags/499.png diff --git a/webassets/img/flags/5.png b/static/img/flags/5.png similarity index 100% rename from webassets/img/flags/5.png rename to static/img/flags/5.png diff --git a/webassets/img/flags/50.png b/static/img/flags/50.png similarity index 100% rename from webassets/img/flags/50.png rename to static/img/flags/50.png diff --git a/webassets/img/flags/501.png b/static/img/flags/501.png similarity index 100% rename from webassets/img/flags/501.png rename to static/img/flags/501.png diff --git a/webassets/img/flags/502.png b/static/img/flags/502.png similarity index 100% rename from webassets/img/flags/502.png rename to static/img/flags/502.png diff --git a/webassets/img/flags/503.png b/static/img/flags/503.png similarity index 100% rename from webassets/img/flags/503.png rename to static/img/flags/503.png diff --git a/webassets/img/flags/504.png b/static/img/flags/504.png similarity index 100% rename from webassets/img/flags/504.png rename to static/img/flags/504.png diff --git a/webassets/img/flags/505.png b/static/img/flags/505.png similarity index 100% rename from webassets/img/flags/505.png rename to static/img/flags/505.png diff --git a/webassets/img/flags/506.png b/static/img/flags/506.png similarity index 100% rename from webassets/img/flags/506.png rename to static/img/flags/506.png diff --git a/webassets/img/flags/507.png b/static/img/flags/507.png similarity index 100% rename from webassets/img/flags/507.png rename to static/img/flags/507.png diff --git a/webassets/img/flags/508.png b/static/img/flags/508.png similarity index 100% rename from webassets/img/flags/508.png rename to static/img/flags/508.png diff --git a/webassets/img/flags/509.png b/static/img/flags/509.png similarity index 100% rename from webassets/img/flags/509.png rename to static/img/flags/509.png diff --git a/webassets/img/flags/51.png b/static/img/flags/51.png similarity index 100% rename from webassets/img/flags/51.png rename to static/img/flags/51.png diff --git a/webassets/img/flags/510.png b/static/img/flags/510.png similarity index 100% rename from webassets/img/flags/510.png rename to static/img/flags/510.png diff --git a/webassets/img/flags/511.png b/static/img/flags/511.png similarity index 100% rename from webassets/img/flags/511.png rename to static/img/flags/511.png diff --git a/webassets/img/flags/512.png b/static/img/flags/512.png similarity index 100% rename from webassets/img/flags/512.png rename to static/img/flags/512.png diff --git a/webassets/img/flags/513.png b/static/img/flags/513.png similarity index 100% rename from webassets/img/flags/513.png rename to static/img/flags/513.png diff --git a/webassets/img/flags/514.png b/static/img/flags/514.png similarity index 100% rename from webassets/img/flags/514.png rename to static/img/flags/514.png diff --git a/webassets/img/flags/515.png b/static/img/flags/515.png similarity index 100% rename from webassets/img/flags/515.png rename to static/img/flags/515.png diff --git a/webassets/img/flags/516.png b/static/img/flags/516.png similarity index 100% rename from webassets/img/flags/516.png rename to static/img/flags/516.png diff --git a/webassets/img/flags/517.png b/static/img/flags/517.png similarity index 100% rename from webassets/img/flags/517.png rename to static/img/flags/517.png diff --git a/webassets/img/flags/518.png b/static/img/flags/518.png similarity index 100% rename from webassets/img/flags/518.png rename to static/img/flags/518.png diff --git a/webassets/img/flags/519.png b/static/img/flags/519.png similarity index 100% rename from webassets/img/flags/519.png rename to static/img/flags/519.png diff --git a/webassets/img/flags/52.png b/static/img/flags/52.png similarity index 100% rename from webassets/img/flags/52.png rename to static/img/flags/52.png diff --git a/webassets/img/flags/520.png b/static/img/flags/520.png similarity index 100% rename from webassets/img/flags/520.png rename to static/img/flags/520.png diff --git a/webassets/img/flags/521.png b/static/img/flags/521.png similarity index 100% rename from webassets/img/flags/521.png rename to static/img/flags/521.png diff --git a/webassets/img/flags/522.png b/static/img/flags/522.png similarity index 100% rename from webassets/img/flags/522.png rename to static/img/flags/522.png diff --git a/webassets/img/flags/53.png b/static/img/flags/53.png similarity index 100% rename from webassets/img/flags/53.png rename to static/img/flags/53.png diff --git a/webassets/img/flags/54.png b/static/img/flags/54.png similarity index 100% rename from webassets/img/flags/54.png rename to static/img/flags/54.png diff --git a/webassets/img/flags/55.png b/static/img/flags/55.png similarity index 100% rename from webassets/img/flags/55.png rename to static/img/flags/55.png diff --git a/webassets/img/flags/56.png b/static/img/flags/56.png similarity index 100% rename from webassets/img/flags/56.png rename to static/img/flags/56.png diff --git a/webassets/img/flags/57.png b/static/img/flags/57.png similarity index 100% rename from webassets/img/flags/57.png rename to static/img/flags/57.png diff --git a/webassets/img/flags/58.png b/static/img/flags/58.png similarity index 100% rename from webassets/img/flags/58.png rename to static/img/flags/58.png diff --git a/webassets/img/flags/59.png b/static/img/flags/59.png similarity index 100% rename from webassets/img/flags/59.png rename to static/img/flags/59.png diff --git a/webassets/img/flags/6.png b/static/img/flags/6.png similarity index 100% rename from webassets/img/flags/6.png rename to static/img/flags/6.png diff --git a/webassets/img/flags/60.png b/static/img/flags/60.png similarity index 100% rename from webassets/img/flags/60.png rename to static/img/flags/60.png diff --git a/webassets/img/flags/61.png b/static/img/flags/61.png similarity index 100% rename from webassets/img/flags/61.png rename to static/img/flags/61.png diff --git a/webassets/img/flags/62.png b/static/img/flags/62.png similarity index 100% rename from webassets/img/flags/62.png rename to static/img/flags/62.png diff --git a/webassets/img/flags/63.png b/static/img/flags/63.png similarity index 100% rename from webassets/img/flags/63.png rename to static/img/flags/63.png diff --git a/webassets/img/flags/64.png b/static/img/flags/64.png similarity index 100% rename from webassets/img/flags/64.png rename to static/img/flags/64.png diff --git a/webassets/img/flags/65.png b/static/img/flags/65.png similarity index 100% rename from webassets/img/flags/65.png rename to static/img/flags/65.png diff --git a/webassets/img/flags/66.png b/static/img/flags/66.png similarity index 100% rename from webassets/img/flags/66.png rename to static/img/flags/66.png diff --git a/webassets/img/flags/67.png b/static/img/flags/67.png similarity index 100% rename from webassets/img/flags/67.png rename to static/img/flags/67.png diff --git a/webassets/img/flags/68.png b/static/img/flags/68.png similarity index 100% rename from webassets/img/flags/68.png rename to static/img/flags/68.png diff --git a/webassets/img/flags/69.png b/static/img/flags/69.png similarity index 100% rename from webassets/img/flags/69.png rename to static/img/flags/69.png diff --git a/webassets/img/flags/7.png b/static/img/flags/7.png similarity index 100% rename from webassets/img/flags/7.png rename to static/img/flags/7.png diff --git a/webassets/img/flags/70.png b/static/img/flags/70.png similarity index 100% rename from webassets/img/flags/70.png rename to static/img/flags/70.png diff --git a/webassets/img/flags/71.png b/static/img/flags/71.png similarity index 100% rename from webassets/img/flags/71.png rename to static/img/flags/71.png diff --git a/webassets/img/flags/72.png b/static/img/flags/72.png similarity index 100% rename from webassets/img/flags/72.png rename to static/img/flags/72.png diff --git a/webassets/img/flags/74.png b/static/img/flags/74.png similarity index 100% rename from webassets/img/flags/74.png rename to static/img/flags/74.png diff --git a/webassets/img/flags/75.png b/static/img/flags/75.png similarity index 100% rename from webassets/img/flags/75.png rename to static/img/flags/75.png diff --git a/webassets/img/flags/76.png b/static/img/flags/76.png similarity index 100% rename from webassets/img/flags/76.png rename to static/img/flags/76.png diff --git a/webassets/img/flags/77.png b/static/img/flags/77.png similarity index 100% rename from webassets/img/flags/77.png rename to static/img/flags/77.png diff --git a/webassets/img/flags/78.png b/static/img/flags/78.png similarity index 100% rename from webassets/img/flags/78.png rename to static/img/flags/78.png diff --git a/webassets/img/flags/79.png b/static/img/flags/79.png similarity index 100% rename from webassets/img/flags/79.png rename to static/img/flags/79.png diff --git a/webassets/img/flags/8.png b/static/img/flags/8.png similarity index 100% rename from webassets/img/flags/8.png rename to static/img/flags/8.png diff --git a/webassets/img/flags/80.png b/static/img/flags/80.png similarity index 100% rename from webassets/img/flags/80.png rename to static/img/flags/80.png diff --git a/webassets/img/flags/81.png b/static/img/flags/81.png similarity index 100% rename from webassets/img/flags/81.png rename to static/img/flags/81.png diff --git a/webassets/img/flags/82.png b/static/img/flags/82.png similarity index 100% rename from webassets/img/flags/82.png rename to static/img/flags/82.png diff --git a/webassets/img/flags/84.png b/static/img/flags/84.png similarity index 100% rename from webassets/img/flags/84.png rename to static/img/flags/84.png diff --git a/webassets/img/flags/85.png b/static/img/flags/85.png similarity index 100% rename from webassets/img/flags/85.png rename to static/img/flags/85.png diff --git a/webassets/img/flags/86.png b/static/img/flags/86.png similarity index 100% rename from webassets/img/flags/86.png rename to static/img/flags/86.png diff --git a/webassets/img/flags/88.png b/static/img/flags/88.png similarity index 100% rename from webassets/img/flags/88.png rename to static/img/flags/88.png diff --git a/webassets/img/flags/89.png b/static/img/flags/89.png similarity index 100% rename from webassets/img/flags/89.png rename to static/img/flags/89.png diff --git a/webassets/img/flags/9.png b/static/img/flags/9.png similarity index 100% rename from webassets/img/flags/9.png rename to static/img/flags/9.png diff --git a/webassets/img/flags/90.png b/static/img/flags/90.png similarity index 100% rename from webassets/img/flags/90.png rename to static/img/flags/90.png diff --git a/webassets/img/flags/91.png b/static/img/flags/91.png similarity index 100% rename from webassets/img/flags/91.png rename to static/img/flags/91.png diff --git a/webassets/img/flags/93.png b/static/img/flags/93.png similarity index 100% rename from webassets/img/flags/93.png rename to static/img/flags/93.png diff --git a/webassets/img/flags/94.png b/static/img/flags/94.png similarity index 100% rename from webassets/img/flags/94.png rename to static/img/flags/94.png diff --git a/webassets/img/flags/95.png b/static/img/flags/95.png similarity index 100% rename from webassets/img/flags/95.png rename to static/img/flags/95.png diff --git a/webassets/img/flags/96.png b/static/img/flags/96.png similarity index 100% rename from webassets/img/flags/96.png rename to static/img/flags/96.png diff --git a/webassets/img/flags/97.png b/static/img/flags/97.png similarity index 100% rename from webassets/img/flags/97.png rename to static/img/flags/97.png diff --git a/webassets/img/flags/98.png b/static/img/flags/98.png similarity index 100% rename from webassets/img/flags/98.png rename to static/img/flags/98.png diff --git a/webassets/img/flags/99.png b/static/img/flags/99.png similarity index 100% rename from webassets/img/flags/99.png rename to static/img/flags/99.png diff --git a/webassets/img/flags/999.png b/static/img/flags/999.png similarity index 100% rename from webassets/img/flags/999.png rename to static/img/flags/999.png diff --git a/webassets/img/flags/generate.py b/static/img/flags/generate.py similarity index 100% rename from webassets/img/flags/generate.py rename to static/img/flags/generate.py diff --git a/webassets/img/icon-16.png b/static/img/icon-16.png similarity index 100% rename from webassets/img/icon-16.png rename to static/img/icon-16.png diff --git a/webassets/img/icon-192-pwa.png b/static/img/icon-192-pwa.png similarity index 100% rename from webassets/img/icon-192-pwa.png rename to static/img/icon-192-pwa.png diff --git a/webassets/img/icon-192.png b/static/img/icon-192.png similarity index 100% rename from webassets/img/icon-192.png rename to static/img/icon-192.png diff --git a/webassets/img/icon-32.png b/static/img/icon-32.png similarity index 100% rename from webassets/img/icon-32.png rename to static/img/icon-32.png diff --git a/webassets/img/icon-512-pwa.png b/static/img/icon-512-pwa.png similarity index 100% rename from webassets/img/icon-512-pwa.png rename to static/img/icon-512-pwa.png diff --git a/webassets/img/icon-512.png b/static/img/icon-512.png similarity index 100% rename from webassets/img/icon-512.png rename to static/img/icon-512.png diff --git a/webassets/img/logo.png b/static/img/logo.png similarity index 100% rename from webassets/img/logo.png rename to static/img/logo.png diff --git a/webassets/js/add-spot.js b/static/js/add-spot.js similarity index 100% rename from webassets/js/add-spot.js rename to static/js/add-spot.js diff --git a/webassets/js/alerts.js b/static/js/alerts.js similarity index 100% rename from webassets/js/alerts.js rename to static/js/alerts.js diff --git a/webassets/js/bands.js b/static/js/bands.js similarity index 100% rename from webassets/js/bands.js rename to static/js/bands.js diff --git a/webassets/js/common.js b/static/js/common.js similarity index 100% rename from webassets/js/common.js rename to static/js/common.js diff --git a/webassets/js/conditions.js b/static/js/conditions.js similarity index 100% rename from webassets/js/conditions.js rename to static/js/conditions.js diff --git a/webassets/js/geo.js b/static/js/geo.js similarity index 100% rename from webassets/js/geo.js rename to static/js/geo.js diff --git a/webassets/js/map.js b/static/js/map.js similarity index 100% rename from webassets/js/map.js rename to static/js/map.js diff --git a/webassets/js/spots.js b/static/js/spots.js similarity index 100% rename from webassets/js/spots.js rename to static/js/spots.js diff --git a/webassets/js/spotsbandsandmap.js b/static/js/spotsbandsandmap.js similarity index 100% rename from webassets/js/spotsbandsandmap.js rename to static/js/spotsbandsandmap.js diff --git a/webassets/js/status.js b/static/js/status.js similarity index 100% rename from webassets/js/status.js rename to static/js/status.js diff --git a/webassets/js/ui-ham.js b/static/js/ui-ham.js similarity index 100% rename from webassets/js/ui-ham.js rename to static/js/ui-ham.js diff --git a/webassets/js/utils.js b/static/js/utils.js similarity index 100% rename from webassets/js/utils.js rename to static/js/utils.js diff --git a/webassets/service-worker.js b/static/service-worker.js similarity index 100% rename from webassets/service-worker.js rename to static/service-worker.js diff --git a/webassets/vendor/css/bootstrap-5.3.8.min.css b/static/vendor/css/bootstrap-5.3.8.min.css similarity index 100% rename from webassets/vendor/css/bootstrap-5.3.8.min.css rename to static/vendor/css/bootstrap-5.3.8.min.css diff --git a/webassets/vendor/css/fontawesome-6.7.2.min.css b/static/vendor/css/fontawesome-6.7.2.min.css similarity index 100% rename from webassets/vendor/css/fontawesome-6.7.2.min.css rename to static/vendor/css/fontawesome-6.7.2.min.css diff --git a/webassets/vendor/css/images/layers-2x.png b/static/vendor/css/images/layers-2x.png similarity index 100% rename from webassets/vendor/css/images/layers-2x.png rename to static/vendor/css/images/layers-2x.png diff --git a/webassets/vendor/css/images/layers.png b/static/vendor/css/images/layers.png similarity index 100% rename from webassets/vendor/css/images/layers.png rename to static/vendor/css/images/layers.png diff --git a/webassets/vendor/css/images/marker-icon-2x.png b/static/vendor/css/images/marker-icon-2x.png similarity index 100% rename from webassets/vendor/css/images/marker-icon-2x.png rename to static/vendor/css/images/marker-icon-2x.png diff --git a/webassets/vendor/css/images/marker-icon.png b/static/vendor/css/images/marker-icon.png similarity index 100% rename from webassets/vendor/css/images/marker-icon.png rename to static/vendor/css/images/marker-icon.png diff --git a/webassets/vendor/css/images/marker-shadow.png b/static/vendor/css/images/marker-shadow.png similarity index 100% rename from webassets/vendor/css/images/marker-shadow.png rename to static/vendor/css/images/marker-shadow.png diff --git a/webassets/vendor/css/leaflet-1.9.4.min.css b/static/vendor/css/leaflet-1.9.4.min.css similarity index 100% rename from webassets/vendor/css/leaflet-1.9.4.min.css rename to static/vendor/css/leaflet-1.9.4.min.css diff --git a/webassets/vendor/css/leaflet-extra-markers-1.2.2.min.css b/static/vendor/css/leaflet-extra-markers-1.2.2.min.css similarity index 100% rename from webassets/vendor/css/leaflet-extra-markers-1.2.2.min.css rename to static/vendor/css/leaflet-extra-markers-1.2.2.min.css diff --git a/webassets/vendor/css/solid-6.7.2.min.css b/static/vendor/css/solid-6.7.2.min.css similarity index 100% rename from webassets/vendor/css/solid-6.7.2.min.css rename to static/vendor/css/solid-6.7.2.min.css diff --git a/webassets/vendor/img/markers_default.png b/static/vendor/img/markers_default.png similarity index 100% rename from webassets/vendor/img/markers_default.png rename to static/vendor/img/markers_default.png diff --git a/webassets/vendor/img/markers_default@2x.png b/static/vendor/img/markers_default@2x.png similarity index 100% rename from webassets/vendor/img/markers_default@2x.png rename to static/vendor/img/markers_default@2x.png diff --git a/webassets/vendor/img/markers_shadow.png b/static/vendor/img/markers_shadow.png similarity index 100% rename from webassets/vendor/img/markers_shadow.png rename to static/vendor/img/markers_shadow.png diff --git a/webassets/vendor/img/markers_shadow@2x.png b/static/vendor/img/markers_shadow@2x.png similarity index 100% rename from webassets/vendor/img/markers_shadow@2x.png rename to static/vendor/img/markers_shadow@2x.png diff --git a/webassets/vendor/js/bootstrap-5.3.8.bundle.min.js b/static/vendor/js/bootstrap-5.3.8.bundle.min.js similarity index 100% rename from webassets/vendor/js/bootstrap-5.3.8.bundle.min.js rename to static/vendor/js/bootstrap-5.3.8.bundle.min.js diff --git a/webassets/vendor/js/chart-4.4.9.umd.min.js b/static/vendor/js/chart-4.4.9.umd.min.js similarity index 100% rename from webassets/vendor/js/chart-4.4.9.umd.min.js rename to static/vendor/js/chart-4.4.9.umd.min.js diff --git a/webassets/vendor/js/jquery-3.7.1.min.js b/static/vendor/js/jquery-3.7.1.min.js similarity index 100% rename from webassets/vendor/js/jquery-3.7.1.min.js rename to static/vendor/js/jquery-3.7.1.min.js diff --git a/webassets/vendor/js/leaflet-1.9.4.min.js b/static/vendor/js/leaflet-1.9.4.min.js similarity index 100% rename from webassets/vendor/js/leaflet-1.9.4.min.js rename to static/vendor/js/leaflet-1.9.4.min.js diff --git a/webassets/vendor/js/leaflet-cqzones.js b/static/vendor/js/leaflet-cqzones.js similarity index 100% rename from webassets/vendor/js/leaflet-cqzones.js rename to static/vendor/js/leaflet-cqzones.js diff --git a/webassets/vendor/js/leaflet-extra-markers-1.2.2.min.js b/static/vendor/js/leaflet-extra-markers-1.2.2.min.js similarity index 100% rename from webassets/vendor/js/leaflet-extra-markers-1.2.2.min.js rename to static/vendor/js/leaflet-extra-markers-1.2.2.min.js diff --git a/webassets/vendor/js/leaflet-geodesic-2.7.2.umd.min.js b/static/vendor/js/leaflet-geodesic-2.7.2.umd.min.js similarity index 100% rename from webassets/vendor/js/leaflet-geodesic-2.7.2.umd.min.js rename to static/vendor/js/leaflet-geodesic-2.7.2.umd.min.js diff --git a/webassets/vendor/js/leaflet-ituzones.js b/static/vendor/js/leaflet-ituzones.js similarity index 100% rename from webassets/vendor/js/leaflet-ituzones.js rename to static/vendor/js/leaflet-ituzones.js diff --git a/webassets/vendor/js/leaflet-maidenhead.js b/static/vendor/js/leaflet-maidenhead.js similarity index 100% rename from webassets/vendor/js/leaflet-maidenhead.js rename to static/vendor/js/leaflet-maidenhead.js diff --git a/webassets/vendor/js/leaflet-providers-2.0.0.js b/static/vendor/js/leaflet-providers-2.0.0.js similarity index 100% rename from webassets/vendor/js/leaflet-providers-2.0.0.js rename to static/vendor/js/leaflet-providers-2.0.0.js diff --git a/webassets/vendor/js/leaflet-terminator-1.1.0.min.js b/static/vendor/js/leaflet-terminator-1.1.0.min.js similarity index 100% rename from webassets/vendor/js/leaflet-terminator-1.1.0.min.js rename to static/vendor/js/leaflet-terminator-1.1.0.min.js diff --git a/webassets/vendor/js/leaflet-vectorgrid-1.3.0.js b/static/vendor/js/leaflet-vectorgrid-1.3.0.js similarity index 100% rename from webassets/vendor/js/leaflet-vectorgrid-1.3.0.js rename to static/vendor/js/leaflet-vectorgrid-1.3.0.js diff --git a/webassets/vendor/js/leaflet-workedallbritainireland.js b/static/vendor/js/leaflet-workedallbritainireland.js similarity index 100% rename from webassets/vendor/js/leaflet-workedallbritainireland.js rename to static/vendor/js/leaflet-workedallbritainireland.js diff --git a/webassets/vendor/js/moment-2.29.4.min.js b/static/vendor/js/moment-2.29.4.min.js similarity index 100% rename from webassets/vendor/js/moment-2.29.4.min.js rename to static/vendor/js/moment-2.29.4.min.js diff --git a/webassets/vendor/js/oms-leaflet-0.2.7.min.js b/static/vendor/js/oms-leaflet-0.2.7.min.js similarity index 100% rename from webassets/vendor/js/oms-leaflet-0.2.7.min.js rename to static/vendor/js/oms-leaflet-0.2.7.min.js diff --git a/webassets/vendor/js/text-image-0.7.0.js b/static/vendor/js/text-image-0.7.0.js similarity index 100% rename from webassets/vendor/js/text-image-0.7.0.js rename to static/vendor/js/text-image-0.7.0.js diff --git a/webassets/vendor/js/tinycolor2-1.6.0.min.js b/static/vendor/js/tinycolor2-1.6.0.min.js similarity index 100% rename from webassets/vendor/js/tinycolor2-1.6.0.min.js rename to static/vendor/js/tinycolor2-1.6.0.min.js diff --git a/webassets/vendor/webfonts/fa-solid-900.ttf b/static/vendor/webfonts/fa-solid-900.ttf similarity index 100% rename from webassets/vendor/webfonts/fa-solid-900.ttf rename to static/vendor/webfonts/fa-solid-900.ttf diff --git a/webassets/vendor/webfonts/fa-solid-900.woff2 b/static/vendor/webfonts/fa-solid-900.woff2 similarity index 100% rename from webassets/vendor/webfonts/fa-solid-900.woff2 rename to static/vendor/webfonts/fa-solid-900.woff2 diff --git a/templates/add_spot.html b/templates/add_spot.html index 1bf5fae..afa63e7 100644 --- a/templates/add_spot.html +++ b/templates/add_spot.html @@ -76,7 +76,7 @@ - + diff --git a/templates/alerts.html b/templates/alerts.html index ddcd199..cdde5e5 100644 --- a/templates/alerts.html +++ b/templates/alerts.html @@ -75,7 +75,7 @@ - + diff --git a/templates/bands.html b/templates/bands.html index 63c97d2..d0cf2b0 100644 --- a/templates/bands.html +++ b/templates/bands.html @@ -75,8 +75,8 @@ - - + + diff --git a/templates/base.html b/templates/base.html index 5732398..ad0ee39 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,6 +1,6 @@ {% extends "skeleton.html" %} {% block head_extra %} - + @@ -10,10 +10,10 @@ - - - - + + + + {% end %} {% block body %}
diff --git a/templates/conditions.html b/templates/conditions.html index 5c53370..373f0df 100644 --- a/templates/conditions.html +++ b/templates/conditions.html @@ -284,7 +284,7 @@
- + diff --git a/templates/map.html b/templates/map.html index 874f70d..8f9b1af 100644 --- a/templates/map.html +++ b/templates/map.html @@ -108,8 +108,8 @@ - - + + diff --git a/templates/spots.html b/templates/spots.html index 4d8ffe8..a2a975e 100644 --- a/templates/spots.html +++ b/templates/spots.html @@ -116,8 +116,8 @@ - - + + diff --git a/templates/status.html b/templates/status.html index 30de80a..a1fbaa2 100644 --- a/templates/status.html +++ b/templates/status.html @@ -59,7 +59,7 @@ - +