diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gendata.js | 72 | ||||
-rw-r--r-- | tools/genlayout.py | 33 | ||||
-rw-r--r-- | tools/layout.svg | 449 |
3 files changed, 518 insertions, 36 deletions
diff --git a/tools/gendata.js b/tools/gendata.js index 7abf269..4e10a79 100644 --- a/tools/gendata.js +++ b/tools/gendata.js @@ -14,10 +14,10 @@ let areas = [] let zone_areas = {} let next_location_id = 0 -function def_area(id, name, type, zone, x, y, w, h) { +function def_area(id, name, type, zone) { let loc = next_location_id++ locations[id] = loc - areas.push({loc, id, name, type, zone, x, y, w, h}) + areas.push({loc, id, name, type, zone}) if (zone) { if (!(zone in zone_areas)) { zone_areas[zone] = [] @@ -32,40 +32,40 @@ def_area("DEPLOY", "Deployment") def_area("ELIMINATED", "Eliminated") // countries -def_area("FRANCE", "France", COUNTRY, null, 1690.3, 244.8, 94, 94) -def_area("TUNISIA", "Tunisia", COUNTRY, "TUNISIA", 2499.9, 1667.6, 94, 94) -def_area("MOROCCO", "Morocco", COUNTRY, "MOROCCO", 109, 1765, 94, 94) - -def_area("I-1", "Barika", RURAL, "I", 1708.1, 1117.9) -def_area("I-2", "Batna", REMOTE, "I", 2185.6, 1390.9) -def_area("I-3", "Biskra", REMOTE, "I", 1853.6, 1620.9) -def_area("I-4", "Tebessa", RURAL, "I", 2299.6, 1120.9) - -def_area("CONSTANTINE", "Constantine", URBAN, "II", 2066.6, 315.8) -def_area("II-1", "Setif", RURAL, "II", 1917.6, 800.8) -def_area("II-2", "Phillippeville", RURAL, "II", 2200.6, 584.9) -def_area("II-3", "Souk Ahras", RURAL, "II", 2347.6, 848.9) - -def_area("III-1", "Tizi Ouzou", RURAL, "III", 1473.6, 578.9) -def_area("III-2", "Bordj Bou Arreridj", RURAL, "III", 1465.6, 832.9) -def_area("III-3", "Bougie", RURAL, "III", 1703.6, 616.9) - -def_area("ALGIERS", "Algiers", URBAN, "IV", 1185.6, 346.8) -def_area("IV-1", "Medea", RURAL, "IV", 1212, 727) -def_area("IV-2", "Orleansville", RURAL, "IV", 982, 780.2) - -def_area("ORAN", "Oran", URBAN, "V", 430.6, 588.8) -def_area("V-1", "Mecheria", REMOTE, "V", 234, 1485.7) -def_area("V-2", "Tlemcen", RURAL, "V", 173, 1140.9) -def_area("V-3", "Sidi Bel Abbes", RURAL, "V", 476, 1038) -def_area("V-4", "Mostaganem", RURAL, "V", 741, 863.9) -def_area("V-5", "Saida", REMOTE, "V", 501, 1419.1) -def_area("V-6", "Mascara", REMOTE, "V", 785, 1302.9) -def_area("V-7", "Ain Sefra", REMOTE, "V", 752, 1670.9) -def_area("V-8", "Laghouat", REMOTE, "V", 1191, 1615.6) - -def_area("VI-1", "Sidi Aissa", REMOTE, "VI", 1385, 1186) -def_area("VI-2", "Ain Qussera", RURAL, "VI", 1070.6, 1235.6) +def_area("FRANCE", "France", COUNTRY, null) +def_area("TUNISIA", "Tunisia", COUNTRY, "TUNISIA") +def_area("MOROCCO", "Morocco", COUNTRY, "MOROCCO") + +def_area("I-1", "Barika", RURAL, "I") +def_area("I-2", "Batna", REMOTE, "I") +def_area("I-3", "Biskra", REMOTE, "I") +def_area("I-4", "Tebessa", RURAL, "I") + +def_area("CONSTANTINE", "Constantine", URBAN, "II") +def_area("II-1", "Setif", RURAL, "II") +def_area("II-2", "Phillippeville", RURAL, "II") +def_area("II-3", "Souk Ahras", RURAL, "II") + +def_area("III-1", "Tizi Ouzou", RURAL, "III") +def_area("III-2", "Bordj Bou Arreridj", RURAL, "III") +def_area("III-3", "Bougie", RURAL, "III") + +def_area("ALGIERS", "Algiers", URBAN, "IV") +def_area("IV-1", "Medea", RURAL, "IV") +def_area("IV-2", "Orleansville", RURAL, "IV") + +def_area("ORAN", "Oran", URBAN, "V") +def_area("V-1", "Mecheria", REMOTE, "V") +def_area("V-2", "Tlemcen", RURAL, "V") +def_area("V-3", "Sidi Bel Abbes", RURAL, "V") +def_area("V-4", "Mostaganem", RURAL, "V") +def_area("V-5", "Saida", REMOTE, "V") +def_area("V-6", "Mascara", REMOTE, "V") +def_area("V-7", "Ain Sefra", REMOTE, "V") +def_area("V-8", "Laghouat", REMOTE, "V") + +def_area("VI-1", "Sidi Aissa", REMOTE, "VI") +def_area("VI-2", "Ain Qussera", RURAL, "VI") let adjecents = {} diff --git a/tools/genlayout.py b/tools/genlayout.py new file mode 100644 index 0000000..2e7bafe --- /dev/null +++ b/tools/genlayout.py @@ -0,0 +1,33 @@ +from bs4 import BeautifulSoup + +SCALE = 1.8033333333333332 + +def readsvg(filename): + with open(filename) as fp: + soup = BeautifulSoup(fp, features="xml") + + result = [] + boxes = soup.find('g', id='Mission-Boxes') + for box in boxes.find_all('g', recursive=False): + area_name = box.attrs.get('serif:id', box.attrs['id']) + for rect in box.find_all('rect'): + rect_id = rect.attrs.get('serif:id', rect.attrs['id']) + x = float(rect.attrs['x']) + y = float(rect.attrs['y']) + w = float(rect.attrs['width']) + h = float(rect.attrs['height']) + xc = round((x+w/2.0)/SCALE) + yc = round((y+h/2.0)/SCALE) + name = area_name + '-' + rect_id + result.append([name, xc, yc]) + + return result + +def print_list(data): + print("const LAYOUT = {") + for (name, x, y) in data: + print(f'\t"{name}": [{x}, {y}],') + print("}") + +result = readsvg("tools/layout.svg") +print_list(result) diff --git a/tools/layout.svg b/tools/layout.svg new file mode 100644 index 0000000..00c43af --- /dev/null +++ b/tools/layout.svg @@ -0,0 +1,449 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 2705 1985" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> + <g id="Mission-Boxes" serif:id="Mission Boxes"> + <g id="Laghouat"> + <g id="OC"> + <rect id="OC1" serif:id="OC" x="1487.38" y="1715.19" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL"> + <rect id="PTL1" serif:id="PTL" x="1130.76" y="1762.19" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS"> + <rect id="OPS1" serif:id="OPS" x="1414.38" y="1552.66" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG"> + <rect id="UG1" serif:id="UG" x="1098.76" y="1577.48" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK"> + <rect id="MK1" serif:id="MK" x="1273.36" y="1595.45" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Ain-Sefra" serif:id="Ain Sefra"> + <g id="OC2" serif:id="OC"> + <rect id="OC3" serif:id="OC" x="800.256" y="1779.47" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL2" serif:id="PTL"> + <rect id="PTL3" serif:id="PTL" x="619.629" y="1781.47" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS2" serif:id="OPS"> + <rect id="OPS3" serif:id="OPS" x="836.256" y="1632.82" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG2" serif:id="UG"> + <rect id="UG3" serif:id="UG" x="435.629" y="1763.66" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK2" serif:id="MK"> + <rect id="MK3" serif:id="MK" x="543.5" y="1694.19" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Mascara"> + <g id="OC4" serif:id="OC"> + <rect id="OC5" serif:id="OC" x="904.382" y="1430.43" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL4" serif:id="PTL"> + <rect id="PTL5" serif:id="PTL" x="779.256" y="1473.43" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS4" serif:id="OPS"> + <rect id="OPS5" serif:id="OPS" x="905.382" y="1315.9" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG4" serif:id="UG"> + <rect id="UG5" serif:id="UG" x="780.756" y="1342.9" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK4" serif:id="MK"> + <rect id="MK5" serif:id="MK" x="754.5" y="1248.59" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Saida"> + <g id="OC6" serif:id="OC"> + <rect id="OC7" serif:id="OC" x="644.382" y="1553.47" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL6" serif:id="PTL"> + <rect id="PTL7" serif:id="PTL" x="508.5" y="1577.47" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS6" serif:id="OPS"> + <rect id="OPS7" serif:id="OPS" x="617" y="1370.94" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG6" serif:id="UG"> + <rect id="UG7" serif:id="UG" x="494" y="1371.94" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK6" serif:id="MK"> + <rect id="MK7" serif:id="MK" x="505" y="1474.32" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Mecheria"> + <g id="OC8" serif:id="OC"> + <rect id="OC9" serif:id="OC" x="354.382" y="1618.47" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL8" serif:id="PTL"> + <rect id="PTL9" serif:id="PTL" x="243.5" y="1635.47" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS8" serif:id="OPS"> + <rect id="OPS9" serif:id="OPS" x="345.5" y="1433.94" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG8" serif:id="UG"> + <rect id="UG9" serif:id="UG" x="237.756" y="1454.43" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK8" serif:id="MK"> + <rect id="MK9" serif:id="MK" x="371.846" y="1523.47" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Mostaganem"> + <g id="OC10" serif:id="OC"> + <rect id="OC11" serif:id="OC" x="852.382" y="1075.71" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL10" serif:id="PTL"> + <rect id="PTL11" serif:id="PTL" x="748.5" y="983.707" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS10" serif:id="OPS"> + <rect id="OPS11" serif:id="OPS" x="814.382" y="746.015" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG10" serif:id="UG"> + <rect id="UG11" serif:id="UG" x="715.756" y="805.221" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK10" serif:id="MK"> + <rect id="MK11" serif:id="MK" x="862.454" y="963.829" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Sidi-Bel-Abbes" serif:id="Sidi Bel Abbes"> + <g id="OC12" serif:id="OC"> + <rect id="OC13" serif:id="OC" x="625.382" y="1113.71" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL12" serif:id="PTL"> + <rect id="PTL13" serif:id="PTL" x="504" y="1187.71" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS12" serif:id="OPS"> + <rect id="OPS13" serif:id="OPS" x="571.382" y="944.735" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG12" serif:id="UG"> + <rect id="UG13" serif:id="UG" x="414.756" y="956.176" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK12" serif:id="MK"> + <rect id="MK13" serif:id="MK" x="423.045" y="1099.2" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Tlemcen"> + <g id="OC14" serif:id="OC"> + <rect id="OC15" serif:id="OC" x="291.382" y="1291.47" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL14" serif:id="PTL"> + <rect id="PTL15" serif:id="PTL" x="181" y="1229.47" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS14" serif:id="OPS"> + <rect id="OPS15" serif:id="OPS" x="291.382" y="1153.59" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG14" serif:id="UG"> + <rect id="UG15" serif:id="UG" x="163.756" y="1095.94" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK14" serif:id="MK"> + <rect id="MK15" serif:id="MK" x="195.454" y="963.829" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Orleansville"> + <g id="OC16" serif:id="OC"> + <rect id="OC17" serif:id="OC" x="1079.38" y="997" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL16" serif:id="PTL"> + <rect id="PTL17" serif:id="PTL" x="991.756" y="910" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS16" serif:id="OPS"> + <rect id="OPS17" serif:id="OPS" x="1099.76" y="855.235" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG16" serif:id="UG"> + <rect id="UG17" serif:id="UG" x="992.756" y="772.427" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK16" serif:id="MK"> + <rect id="MK17" serif:id="MK" x="1099" y="748.015" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Medea"> + <g id="OC18" serif:id="OC"> + <rect id="OC19" serif:id="OC" x="1316" y="846.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL18" serif:id="PTL"> + <rect id="PTL19" serif:id="PTL" x="1224.76" y="932.545" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS18" serif:id="OPS"> + <rect id="OPS19" serif:id="OPS" x="1346.26" y="730.221" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG18" serif:id="UG"> + <rect id="UG19" serif:id="UG" x="1225.76" y="739.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK18" serif:id="MK"> + <rect id="MK19" serif:id="MK" x="1351.5" y="624.5" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Ain-Qussera" serif:id="Ain Qussera"> + <g id="OC20" serif:id="OC"> + <rect id="OC21" serif:id="OC" x="1217.13" y="1392.47" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL20" serif:id="PTL"> + <rect id="PTL21" serif:id="PTL" x="1067.5" y="1311.47" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS20" serif:id="OPS"> + <rect id="OPS21" serif:id="OPS" x="1222.13" y="1119.24" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG20" serif:id="UG"> + <rect id="UG21" serif:id="UG" x="1046" y="1153.31" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK20" serif:id="MK"> + <rect id="MK21" serif:id="MK" x="1143.5" y="1203.53" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Sidi-Aissa" serif:id="Sidi Aissa"> + <g id="OC22" serif:id="OC"> + <rect id="OC23" serif:id="OC" x="1512.5" y="1302.47" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL22" serif:id="PTL"> + <rect id="PTL23" serif:id="PTL" x="1388.5" y="1370.47" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS22" serif:id="OPS"> + <rect id="OPS23" serif:id="OPS" x="1530.5" y="1118.24" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG22" serif:id="UG"> + <rect id="UG23" serif:id="UG" x="1379" y="1066.94" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK22" serif:id="MK"> + <rect id="MK23" serif:id="MK" x="1348.5" y="1280.53" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Bougie"> + <g id="OC24" serif:id="OC"> + <rect id="OC25" serif:id="OC" x="1817.69" y="725.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL24" serif:id="PTL"> + <rect id="PTL25" serif:id="PTL" x="1715.06" y="725.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS24" serif:id="OPS"> + <rect id="OPS25" serif:id="OPS" x="1818.69" y="618.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG24" serif:id="UG"> + <rect id="UG25" serif:id="UG" x="1716.06" y="618.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK24" serif:id="MK"> + <rect id="MK25" serif:id="MK" x="1849.88" y="508.5" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Bordj-Bou-Arreridj" serif:id="Bordj Bou Arreridj"> + <g id="OC26" serif:id="OC"> + <rect id="OC27" serif:id="OC" x="1571.38" y="941.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL26" serif:id="PTL"> + <rect id="PTL27" serif:id="PTL" x="1469.76" y="942.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS26" serif:id="OPS"> + <rect id="OPS27" serif:id="OPS" x="1572.38" y="835.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG26" serif:id="UG"> + <rect id="UG27" serif:id="UG" x="1470.76" y="836.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK26" serif:id="MK"> + <rect id="MK27" serif:id="MK" x="1665.5" y="933.01" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Tizi-Ouzou" serif:id="Tizi Ouzou"> + <g id="OC28" serif:id="OC"> + <rect id="OC29" serif:id="OC" x="1589.38" y="703.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL28" serif:id="PTL"> + <rect id="PTL29" serif:id="PTL" x="1485.76" y="703.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS28" serif:id="OPS"> + <rect id="OPS29" serif:id="OPS" x="1588.38" y="597.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG28" serif:id="UG"> + <rect id="UG29" serif:id="UG" x="1485.76" y="597.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK28" serif:id="MK"> + <rect id="MK29" serif:id="MK" x="1485.2" y="434.666" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Biskra"> + <g id="OC30" serif:id="OC"> + <rect id="OC31" serif:id="OC" x="2028.13" y="1751.99" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL30" serif:id="PTL"> + <rect id="PTL31" serif:id="PTL" x="1772.5" y="1707.99" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS30" serif:id="OPS"> + <rect id="OPS31" serif:id="OPS" x="2154.76" y="1631.46" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG30" serif:id="UG"> + <rect id="UG31" serif:id="UG" x="1742.5" y="1508.46" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK30" serif:id="MK"> + <rect id="MK31" serif:id="MK" x="1914.5" y="1564.95" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Batna"> + <g id="OC32" serif:id="OC"> + <rect id="OC33" serif:id="OC" x="2277.81" y="1510.59" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL32" serif:id="PTL"> + <rect id="PTL33" serif:id="PTL" x="2022.68" y="1425.59" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS32" serif:id="OPS"> + <rect id="OPS33" serif:id="OPS" x="2311.74" y="1370.06" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG32" serif:id="UG"> + <rect id="UG33" serif:id="UG" x="1969.18" y="1291.3" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK32" serif:id="MK"> + <rect id="MK33" serif:id="MK" x="2092.27" y="1312.95" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Tebessa"> + <g id="OC34" serif:id="OC"> + <rect id="OC35" serif:id="OC" x="2360.63" y="1231.86" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL34" serif:id="PTL"> + <rect id="PTL35" serif:id="PTL" x="2213.13" y="1202.86" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS34" serif:id="OPS"> + <rect id="OPS35" serif:id="OPS" x="2424.81" y="1119.33" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG34" serif:id="UG"> + <rect id="UG35" serif:id="UG" x="2081.18" y="1113" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK34" serif:id="MK"> + <rect id="MK35" serif:id="MK" x="2181.56" y="1077.04" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Barika"> + <g id="OC36" serif:id="OC"> + <rect id="OC37" serif:id="OC" x="1814.38" y="1249.42" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL36" serif:id="PTL"> + <rect id="PTL37" serif:id="PTL" x="1681.26" y="1291.42" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS36" serif:id="OPS"> + <rect id="OPS37" serif:id="OPS" x="1913.38" y="1081.85" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG36" serif:id="UG"> + <rect id="UG37" serif:id="UG" x="1696.76" y="1034.08" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK36" serif:id="MK"> + <rect id="MK37" serif:id="MK" x="1687.33" y="1156.02" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Souk-Ahras" serif:id="Souk Ahras"> + <g id="OC38" serif:id="OC"> + <rect id="OC39" serif:id="OC" x="2460.37" y="954.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL38" serif:id="PTL"> + <rect id="PTL39" serif:id="PTL" x="2357.75" y="953.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS38" serif:id="OPS"> + <rect id="OPS39" serif:id="OPS" x="2469.37" y="844.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG38" serif:id="UG"> + <rect id="UG39" serif:id="UG" x="2353.75" y="840.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK38" serif:id="MK"> + <rect id="MK39" serif:id="MK" x="2451.09" y="682.903" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Constantine"> + <g id="OC40" serif:id="OC"> + <rect id="OC41" serif:id="OC" x="2173.57" y="436.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL40" serif:id="PTL"> + <rect id="PTL41" serif:id="PTL" x="2070.94" y="436.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS40" serif:id="OPS"> + <rect id="OPS41" serif:id="OPS" x="2173.57" y="329.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG40" serif:id="UG"> + <rect id="UG41" serif:id="UG" x="2070.94" y="329.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK40" serif:id="MK"> + <rect id="MK41" serif:id="MK" x="2270" y="234" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Phillippeville"> + <g id="OC42" serif:id="OC"> + <rect id="OC43" serif:id="OC" x="2205.13" y="936" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL42" serif:id="PTL"> + <rect id="PTL43" serif:id="PTL" x="2217.76" y="783.469" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS42" serif:id="OPS"> + <rect id="OPS43" serif:id="OPS" x="2316.76" y="686.939" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG42" serif:id="UG"> + <rect id="UG43" serif:id="UG" x="2214.76" y="581.939" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK42" serif:id="MK"> + <rect id="MK43" serif:id="MK" x="2317.5" y="516" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Setif"> + <g id="OC44" serif:id="OC"> + <rect id="OC45" serif:id="OC" x="2015.26" y="938" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL44" serif:id="PTL"> + <rect id="PTL45" serif:id="PTL" x="1843.26" y="904" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS44" serif:id="OPS"> + <rect id="OPS45" serif:id="OPS" x="2060.38" y="639.998" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG44" serif:id="UG"> + <rect id="UG45" serif:id="UG" x="1952.76" y="697.484" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK44" serif:id="MK"> + <rect id="MK45" serif:id="MK" x="2047.76" y="804" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Algiers"> + <g id="OC46" serif:id="OC"> + <rect id="OC47" serif:id="OC" x="1299.38" y="470.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL46" serif:id="PTL"> + <rect id="PTL47" serif:id="PTL" x="1196.76" y="470.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS46" serif:id="OPS"> + <rect id="OPS47" serif:id="OPS" x="1299.38" y="363.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG46" serif:id="UG"> + <rect id="UG47" serif:id="UG" x="1196.76" y="363.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK46" serif:id="MK"> + <rect id="MK47" serif:id="MK" x="1352.5" y="264" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Oran"> + <g id="OC48" serif:id="OC"> + <rect id="OC49" serif:id="OC" x="537.627" y="710.472" width="77" height="77" style="fill:#ed2939;fill-opacity:0.5;"/> + </g> + <g id="PTL48" serif:id="PTL"> + <rect id="PTL49" serif:id="PTL" x="435" y="710.472" width="77" height="77" style="fill:#78ed29;fill-opacity:0.5;"/> + </g> + <g id="OPS48" serif:id="OPS"> + <rect id="OPS49" serif:id="OPS" x="537.627" y="603.941" width="77" height="77" style="fill:#a629ed;fill-opacity:0.5;"/> + </g> + <g id="UG48" serif:id="UG"> + <rect id="UG49" serif:id="UG" x="435" y="603.941" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK48" serif:id="MK"> + <rect id="MK49" serif:id="MK" x="579.5" y="503.396" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + <g id="Morocco"> + <g id="UG50" serif:id="UG"> + <rect id="UG51" serif:id="UG" x="117.5" y="1773.55" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + </g> + <g id="Tunisia"> + <g id="UG52" serif:id="UG"> + <rect id="UG53" serif:id="UG" x="2508.5" y="1676.05" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + </g> + <g id="France"> + <g id="UG54" serif:id="UG"> + <rect id="UG55" serif:id="UG" x="1698.78" y="253.33" width="77" height="77" style="fill:#edb029;fill-opacity:0.5;"/> + </g> + <g id="MK50" serif:id="MK"> + <rect id="MK51" serif:id="MK" x="1787.44" y="192.298" width="77" height="77" style="fill:#2f29ed;fill-opacity:0.5;"/> + </g> + </g> + </g> +</svg> |