aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2021-12-21 17:04:02 +0100
committerMinteck <contact@minteck.org>2021-12-21 17:04:02 +0100
commit701e2156e5e872e2f2234cc630b0b821b149ca31 (patch)
treea97aab3aaa8da1dc23356946f530dc2ee41ec579
parent4ea37b6a0089f0948859447c8751320d1a4559f1 (diff)
downloadkartik-client-701e2156e5e872e2f2234cc630b0b821b149ca31.tar.gz
kartik-client-701e2156e5e872e2f2234cc630b0b821b149ca31.tar.bz2
kartik-client-701e2156e5e872e2f2234cc630b0b821b149ca31.zip
-rw-r--r--app.js868
-rw-r--r--online/global.js746
-rw-r--r--online/server.json8
-rw-r--r--views/script/game_music.js16
-rw-r--r--views/script/menu_music.js10
-rw-r--r--views/splash.svg5662
6 files changed, 3655 insertions, 3655 deletions
diff --git a/app.js b/app.js
index dde2133..cba0dcd 100644
--- a/app.js
+++ b/app.js
@@ -1,434 +1,434 @@
-console.log(" _ __ _ _ _ \n| |/ /__ _ _ __| |_(_) | __\n| ' // _` | '__| __| | |/ /\n| . \\ (_| | | | |_| | < \n|_|\\_\\__,_|_| \\__|_|_|\\_\\\n ");
-switch (require('./package.json').channel) {
- case "stable":
- console.log(" Kartik " + require('./package.json').version + " (Official Release) [stable]\n");
- break;
- case "eap":
- console.log(" Kartik " + require('./package.json').version + " (Early Access Release) [eap]\n");
- break;
- case "nightly":
- console.log(" Kartik " + require('./package.json').version + " (Rawhide Release) [nightly]\n");
- break;
- case "beta":
- console.log(" Kartik " + require('./package.json').version + " (Branched Release) [beta]\n");
- break;
- case "git":
- console.log(" Kartik " + require('./package.json').version + " (Trunk Build) [git]\n");
- break;
-}
-
-global.start = new Date();
-global.KartikRoot = __dirname;
-global.shouldExitIfClosed = false;
-const { app, BrowserWindow } = require('electron');
-const fs = require("fs");
-
-(async () => {
- process.on('uncaughtException', (error) => {
- console.log(" * Starting recovery procedure: E_ERROR: " + error.message);
- id = new Date().toISOString().replaceAll(":", "-");
-
- require('fs').writeFileSync(require('os').userInfo().homedir + "/.kartik/crashes/" + id + ".txt", "Kartik Bootstraper Crash\n\n" + error.stack);
- if (require('os').platform() === "win32") {
- require('child_process').exec("runtime\\kartik-crash.bat " + id);
- } else if (require('os').platform() === "darwin") {
- require('child_process').exec("./runtime/kartik-crash-mac.sh " + id);
- } else {
- require('child_process').exec("./runtime/kartik-crash.sh " + id);
- }
- process.exit(2);
- })
-
- process.on('unhandledRejection', (reason) => {
- console.log(" * Starting recovery procedure: E_PROMISE: " + reason);
- id = new Date().toISOString();
-
- require('fs').writeFileSync(homedir + "/.kartik/crashes/" + id + ".txt", "Kartik Bootstraper Crash (in promise)\n\n" + reason);
- if (require('os').platform() === "win32") {
- require('child_process').exec("runtime\\kartik-crash.bat");
- } else if (require('os').platform() === "darwin") {
- require('child_process').exec("./runtime/kartik-crash-mac.sh");
- } else {
- require('child_process').exec("./runtime/kartik-crash.sh");
- }
- process.exit(2);
- })
-
- if (process.argv[2] === "m") {
- console.log(" * *******************************************");
- console.log(" * * DATA MITIGATION MODE *");
- console.log(" * * *");
- console.log(" * * Unless you ABSOLUTELY need this, please *");
- console.log(" * * consider starting Kartik normally. *");
- console.log(" * *******************************************");
- if (!require('fs').existsSync(__dirname + "/data")) {
- require('fs').mkdirSync(__dirname + "/data");
- }
- global.homedir = __dirname + "/data";
- } else {
- global.homedir = require('os').userInfo().homedir;
- }
-
- /* --------------------- */
-
- console.log(" * Preparing application paths");
- app.setAppLogsPath(homedir + "/.kartik/logs");
- app.setPath("crashDumps", homedir + "/.kartik/dumps");
- app.setPath('userData', homedir + "/.kartik/storage");
- app.whenReady().then(async () => {
- if (require('./package.json').channel !== "stable" && require('./package.json').channel !== "git" && !require('fs').existsSync(homedir + "/.kartik/current.kfn")) {
- console.log(" * Opening save data conversion dialog");
- global.converting = true;
- btn = require('electron').dialog.showMessageBoxSync(
- {
- type: "warning",
- title: "Migrating save data to Kartik Fox Nest required",
- message: "Your save data needs to be converted",
- buttons: [
- "Use a new game directory (recommended)",
- "Convert existing save data",
- "Quit without doing anything"
- ],
- cancelId: 2,
- detail: "Kartik Fox Nest (the new save data format) has been introduced in this version, and it requires converting from the old save data format. Because it is not possible to downgrade from Kartik Fox Nest to the old save data format, you have to choose what to do."
- }
- )
-
- switch (btn) {
- case 2:
- process.exit(2);
- break;
- case 1:
- break;
- case 0:
- if (process.argv[2] === "m") {
- console.log(" * *******************************************");
- console.log(" * * DATA MITIGATION MODE *");
- console.log(" * * *");
- console.log(" * * Unless you ABSOLUTELY need this, please *");
- console.log(" * * consider starting Kartik normally. *");
- console.log(" * *******************************************");
- if (!require('fs').existsSync(__dirname + "/data")) {
- require('fs').mkdirSync(__dirname + "/data");
- }
- global.homedir = __dirname + "/data/.KartikStaging$";
- } else {
- global.homedir = require('os').userInfo().homedir + "/.KartikStaging$";
- }
- app.setAppLogsPath(homedir + "/.kartik/logs");
- app.setPath("crashDumps", homedir + "/.kartik/dumps");
- app.setPath('userData', homedir + "/.kartik/storage");
- if (!require('fs').existsSync(homedir)) {
- require('fs').mkdirSync(homedir);
- }
- break;
- }
- }
-
- console.log(" * Gathering language");
- slpm = require('os-locale');
- slpw = await slpm();
- slpo = slpw.substr(0, 2);
- slng = require('./lang/languages.json');
- if (Object.keys(slng).includes(slpo)) {
- dlp = slpo;
- } else {
- dlp = "en";
- }
-
- console.log(" * Saving to " + homedir);
-
- if (!require('fs').existsSync(homedir + "/.kartik")) {
- require('fs').mkdirSync(homedir + "/.kartik")
- }
-
- if (!require('fs').existsSync(homedir + "/.kartik/crashes")) {
- require('fs').mkdirSync(homedir + "/.kartik/crashes")
- }
-
- if (!require('fs').existsSync(homedir + "/.kartik/mods")) {
- require('fs').mkdirSync(homedir + "/.kartik/mods")
- }
-
- if (require('fs').existsSync(homedir + "/.kartik/build")) {
- require('fs').rmSync(homedir + "/.kartik/build", { recursive: true })
- }
- require('fs').mkdirSync(homedir + "/.kartik/build")
-
- console.log(" * Creating configuration");
-
- const fs = require('fs');
- const Nest = require('./nest/abi');
-
- if (fs.existsSync(homedir + "/.kartik/config") && fs.existsSync(homedir + "/.kartik/config/voice.txt") && fs.existsSync(homedir + "/.kartik/config/online.txt") && fs.existsSync(homedir + "/.kartik/config/music.txt") && fs.existsSync(homedir + "/.kartik/config/lang.txt") && fs.existsSync(homedir + "/.kartik/stats.json")) {
- console.log(" * Found complete Config V1, migrating to Kartik Fox Nest...");
- Nest.convert(homedir + "/.kartik/current.kfn", homedir + "/.kartik");
- } else {
- if (!fs.existsSync(homedir + "/.kartik/current.kfn")) {
- console.log(" * No Kartik Fox Nest found, generating one...");
- Nest.generate(homedir + "/.kartik/current.kfn");
- } else {
- fs.copyFileSync(homedir + "/.kartik/current.kfn", homedir + "/.kartik/latest.kfn");
- }
- }
-
- global.currentNest = Nest.load(homedir + "/.kartik/current.kfn");
- console.log(" * Kartik Fox Nest loaded, " + fs.readFileSync(homedir + "/.kartik/current.kfn").toString().length + " bytes, last loaded in Kartik " + currentNest._version);
-
- currentNest._version = require('./package.json').version;
- Nest.export(homedir + "/.kartik/current.kfn", currentNest);
-
- /* --------------------- */
-
- require('@electron/remote/main').initialize();
-
- function createWindow () {
- console.log(" * Checking configuration");
-
- lp = currentNest.config.lang
-
- time = new Date() - start;
- console.log(" * Started successfully in " + Math.round(time/1000) + " seconds");
- console.log(" * Why are you EVEN reading this?");
- global.shouldExitIfClosed = true;
-
- console.log(" * Starting IPC engine");
- win.pwidth = 720;
- win.pheight = 540;
- win.log = console.log;
-
- win.debug = process.argv[2] === "d";
- win.channel = channel;
- win.cmdlineargs = process.argv;
- win.scale = 1.2;
- win.update = dimga;
- win.gamepads = [];
- win.controllerAttached = false;
- win.webview = null;
- win.dstate = "Kartik";
- win.ddetails = "Kartik";
- win.mods = mods;
-
- win.invalidfiles = invalidfiles;
- win.modsfiles = compiledTypeScriptFiles;
- win.homedir = homedir;
-
- win.lp = lp;
- win.music = currentNest.config.music;
- win.voice = currentNest.config.voice;
-
- win.online = currentNest.config.online;
- win.nest = currentNest;
-
- win.resources = resources;
- global.currentSongValue = null;
-
- console.log(" * Starting language preloader");
- require('./lang/preload.js');
- console.log(" * Starting Discord RPC");
- require('./discord/client.js');
-
- if (win.debug) {
- console.log(" * *******************************************");
- console.log(" * * KARTIK DEBUG MODE *");
- console.log(" * *******************************************");
- win.openDevTools();
- }
-
- setTimeout(() => {
- win.webContents.send('ready', true);
- }, 3000)
-
- win.webContents.on('dom-ready', () => {
- musicIpc = require('electron').ipcMain;
- musicIpc.on('newmusic', (event, value) => {
- if (music) {
- win.webContents.send('setmusic', value);
- }
- })
-
- musicIpc.on('reloadNest', (event) => {
- currentNest = Nest.load(homedir + "/.kartik/current.kfn");
- win.nest = currentNest;
- })
-
- const LevelsAPI = require('./views/script/global_levelsapi');
- const lvl = new LevelsAPI();
-
- stats = currentNest.stats;
- musicIpc.on('addstats', (event, value) => {
- currentNest.stats[value.catalog][value.key] = currentNest.stats[value.catalog][value.key] + value.add;
- Nest.export(homedir + "/.kartik/current.kfn", currentNest);
- currentNest = Nest.load(homedir + "/.kartik/current.kfn");
- win.nest = currentNest;
-
- if (value.key === "laps" && currentNest.auth) {
- auth = currentNest.auth;
- level = lvl.correspond(currentNest.stats["ingame"]["laps"], "256") - 1 + 1;
-
- if (level !== auth.level) {
- currentNest.auth.level = level;
- Nest.export(homedir + "/.kartik/current.kfn", currentNest);
- currentNest = Nest.load(homedir + "/.kartik/current.kfn");
- win.nest = currentNest;
- if (level < 200) {
- win.webContents.send("notification", {title: lang.polymer.levelup[0], message: lang.polymer.levelup[1] + " " + level + " " + lang.polymer.levelup[2]});
- } else {
- win.webContents.send("notification", {title: lang.polymer.finished[0], message: lang.polymer.finished[1]});
- }
- }
- }
- })
- musicIpc.on('addstatsandclose', (event, value) => {
- currentNest.stats[value.catalog][value.key] = currentNest.stats[value.catalog][value.key] + value.add;
- Nest.export(homedir + "/.kartik/current.kfn", currentNest);
- currentNest = Nest.load(homedir + "/.kartik/current.kfn");
- win.nest = currentNest;
- win.destroy();
- })
- })
- }
-
- console.log(" * Starting splash screen");
-
- console.log(" * Checking channel");
- if (require('./package.json').channel === "stable") {
- logo = "logo/logo.png";
- channel = " ";
- global.dimg = "official";
- global.dimga = "stable";
- global.dchan = "Kartik Stable";
- } else if (require('./package.json').channel === "beta") {
- logo = "logo/logo-beta.png";
- channel = " Beta ";
- global.dimg = "beta";
- global.dimga = "beta";
- global.dchan = "Kartik Beta";
- } else if (require('./package.json').channel === "nightly") {
- logo = "logo/logo-nightly.png";
- channel = " Nightly ";
- global.dimg = "nightly";
- global.dimga = "nightly";
- global.dchan = "Kartik Nightly";
- } else if (require('./package.json').channel === "eap") {
- logo = "logo/logo-eap.png";
- channel = " EAP ";
- global.dimg = "eap";
- global.dimga = "eap";
- global.dchan = "Kartik EAP";
- } else if (require('./package.json').channel === "git") {
- logo = "logo/logo-git.png";
- channel = " Trunk ";
- global.dimg = "git";
- global.dimga = "git";
- global.dchan = "Kartik Trunk";
- try {
- pk = require('./package.json');
- pk.version = require('fs').readFileSync("./.git/refs/heads/trunk").toString().substr(0, 7);
- fs.writeFileSync("./package.json", JSON.stringify(pk, 2))
- } catch (e) {}
- }
-
- global.win = new BrowserWindow({
- width: 1220,
- height: 720,
- minWidth: 720,
- minHeight: 540,
- resizeable: true,
- resizable: true,
- maximizable: true,
- show: false,
- enableLargerThanScreen: true,
- icon: logo,
- backgroundColor: "#000000",
- title: "Kartik",
- webPreferences: {
- nodeIntegration: true,
- contextIsolation: false,
- enableRemoteModule: true,
- webviewTag: true,
- disableBlinkFeatures: "MediaSessionService",
- }
- })
- console.log(" * Loading view");
- win.loadFile('./index.html')
- win.setMenu(null);
- win.webContents.once('dom-ready', () => {
- console.log(" * Showing splash screen");
- win.show();
- setTimeout(() => {
- console.log(" * Checking signatures");
-
- invalidfiles = [];
-
- sigdb = require("./bin/signatures.json");
- total = Object.keys(sigdb["v1"]).length * 3;
- processed = 0;
- for (file in sigdb["v1"]) {
- if (fs.existsSync(file) && !invalidfiles.includes(file)) {
- try {
- hash = require('crypto').createHash('sha512').update(fs.readFileSync(file)).digest('base64');
- if (hash !== sigdb["v1"][file]) {
- invalidfiles.push(file);
- }
- } catch (e) {
- console.warn(" ! Could not compute V1 hash for " + file);
- }
- }
-
- processed++;
- win.webContents.send('progress', (processed/total)*100);
- }
- for (file in sigdb["v2"]) {
- if (fs.existsSync(file) && !invalidfiles.includes(file)) {
- try {
- hash = require('crypto').createHash('sha1').update(fs.readFileSync(file)).digest('base64');
- if (hash !== sigdb["v2"][file]) {
- invalidfiles.push(file);
- }
- } catch (e) {
- console.warn(" ! Could not compute V2 hash for " + file);
- }
- }
-
- processed++;
- win.webContents.send('progress', (processed/total)*100);
- }
- for (file in sigdb["v3"]) {
- if (fs.existsSync(file) && !invalidfiles.includes(file)) {
- try {
- hash = require('crypto').createHash('md5').update(fs.readFileSync(file)).digest('base64');
- if (hash !== sigdb["v3"][file]) {
- invalidfiles.push(file);
- }
- } catch (e) {
- console.warn(" ! Could not compute V3 hash for " + file);
- }
- }
-
- processed++;
- win.webContents.send('progress', (processed/total)*100);
- }
-
- global.importedTypeScriptFiles = [];
- global.compiledTypeScriptFiles = [];
- console.log(" * Generating resources pack");
- require('./modding/resources');
- console.log(" * Starting Kartik Modding Platform");
- require('./modding/parser');
- console.log(" * Compiling KMP API TypeScript files");
- require('./modding/compiler');
- console.log(" * Loading KMP TypeScript mods");
- require('./typescript/preloader');
- createWindow();
- }, 5000)
- })
- })
-
- app.on('window-all-closed', () => {
- if (shouldExitIfClosed) {
- console.log(" * Bye!");
- app.quit()
- }
- })
-})();
+console.log(" _ __ _ _ _ \n| |/ /__ _ _ __| |_(_) | __\n| ' // _` | '__| __| | |/ /\n| . \\ (_| | | | |_| | < \n|_|\\_\\__,_|_| \\__|_|_|\\_\\\n ");
+switch (require('./package.json').channel) {
+ case "stable":
+ console.log(" Kartik " + require('./package.json').version + " (Official Release) [stable]\n");
+ break;
+ case "eap":
+ console.log(" Kartik " + require('./package.json').version + " (Early Access Release) [eap]\n");
+ break;
+ case "nightly":
+ console.log(" Kartik " + require('./package.json').version + " (Rawhide Release) [nightly]\n");
+ break;
+ case "beta":
+ console.log(" Kartik " + require('./package.json').version + " (Branched Release) [beta]\n");
+ break;
+ case "git":
+ console.log(" Kartik " + require('./package.json').version + " (Trunk Build) [git]\n");
+ break;
+}
+
+global.start = new Date();
+global.KartikRoot = __dirname;
+global.shouldExitIfClosed = false;
+const { app, BrowserWindow } = require('electron');
+const fs = require("fs");
+
+(async () => {
+ process.on('uncaughtException', (error) => {
+ console.log(" * Starting recovery procedure: E_ERROR: " + error.message);
+ id = new Date().toISOString().replaceAll(":", "-");
+
+ require('fs').writeFileSync(require('os').userInfo().homedir + "/.kartik/crashes/" + id + ".txt", "Kartik Bootstraper Crash\n\n" + error.stack);
+ if (require('os').platform() === "win32") {
+ require('child_process').exec("runtime\\kartik-crash.bat " + id);
+ } else if (require('os').platform() === "darwin") {
+ require('child_process').exec("./runtime/kartik-crash-mac.sh " + id);
+ } else {
+ require('child_process').exec("./runtime/kartik-crash.sh " + id);
+ }
+ process.exit(2);
+ })
+
+ process.on('unhandledRejection', (reason) => {
+ console.log(" * Starting recovery procedure: E_PROMISE: " + reason);
+ id = new Date().toISOString();
+
+ require('fs').writeFileSync(homedir + "/.kartik/crashes/" + id + ".txt", "Kartik Bootstraper Crash (in promise)\n\n" + reason);
+ if (require('os').platform() === "win32") {
+ require('child_process').exec("runtime\\kartik-crash.bat");
+ } else if (require('os').platform() === "darwin") {
+ require('child_process').exec("./runtime/kartik-crash-mac.sh");
+ } else {
+ require('child_process').exec("./runtime/kartik-crash.sh");
+ }
+ process.exit(2);
+ })
+
+ if (process.argv[2] === "m") {
+ console.log(" * *******************************************");
+ console.log(" * * DATA MITIGATION MODE *");
+ console.log(" * * *");
+ console.log(" * * Unless you ABSOLUTELY need this, please *");
+ console.log(" * * consider starting Kartik normally. *");
+ console.log(" * *******************************************");
+ if (!require('fs').existsSync(__dirname + "/data")) {
+ require('fs').mkdirSync(__dirname + "/data");
+ }
+ global.homedir = __dirname + "/data";
+ } else {
+ global.homedir = require('os').userInfo().homedir;
+ }
+
+ /* --------------------- */
+
+ console.log(" * Preparing application paths");
+ app.setAppLogsPath(homedir + "/.kartik/logs");
+ app.setPath("crashDumps", homedir + "/.kartik/dumps");
+ app.setPath('userData', homedir + "/.kartik/storage");
+ app.whenReady().then(async () => {
+ if (require('./package.json').channel !== "stable" && require('./package.json').channel !== "git" && !require('fs').existsSync(homedir + "/.kartik/current.kfn")) {
+ console.log(" * Opening save data conversion dialog");
+ global.converting = true;
+ btn = require('electron').dialog.showMessageBoxSync(
+ {
+ type: "warning",
+ title: "Migrating save data to Kartik Fox Nest required",
+ message: "Your save data needs to be converted",
+ buttons: [
+ "Use a new game directory (recommended)",
+ "Convert existing save data",
+ "Quit without doing anything"
+ ],
+ cancelId: 2,
+ detail: "Kartik Fox Nest (the new save data format) has been introduced in this version, and it requires converting from the old save data format. Because it is not possible to downgrade from Kartik Fox Nest to the old save data format, you have to choose what to do."
+ }
+ )
+
+ switch (btn) {
+ case 2:
+ process.exit(2);
+ break;
+ case 1:
+ break;
+ case 0:
+ if (process.argv[2] === "m") {
+ console.log(" * *******************************************");
+ console.log(" * * DATA MITIGATION MODE *");
+ console.log(" * * *");
+ console.log(" * * Unless you ABSOLUTELY need this, please *");
+ console.log(" * * consider starting Kartik normally. *");
+ console.log(" * *******************************************");
+ if (!require('fs').existsSync(__dirname + "/data")) {
+ require('fs').mkdirSync(__dirname + "/data");
+ }
+ global.homedir = __dirname + "/data/.KartikStaging$";
+ } else {
+ global.homedir = require('os').userInfo().homedir + "/.KartikStaging$";
+ }
+ app.setAppLogsPath(homedir + "/.kartik/logs");
+ app.setPath("crashDumps", homedir + "/.kartik/dumps");
+ app.setPath('userData', homedir + "/.kartik/storage");
+ if (!require('fs').existsSync(homedir)) {
+ require('fs').mkdirSync(homedir);
+ }
+ break;
+ }
+ }
+
+ console.log(" * Gathering language");
+ slpm = require('os-locale');
+ slpw = await slpm();
+ slpo = slpw.substr(0, 2);
+ slng = require('./lang/languages.json');
+ if (Object.keys(slng).includes(slpo)) {
+ dlp = slpo;
+ } else {
+ dlp = "en";
+ }
+
+ console.log(" * Saving to " + homedir);
+
+ if (!require('fs').existsSync(homedir + "/.kartik")) {
+ require('fs').mkdirSync(homedir + "/.kartik")
+ }
+
+ if (!require('fs').existsSync(homedir + "/.kartik/crashes")) {
+ require('fs').mkdirSync(homedir + "/.kartik/crashes")
+ }
+
+ if (!require('fs').existsSync(homedir + "/.kartik/mods")) {
+ require('fs').mkdirSync(homedir + "/.kartik/mods")
+ }
+
+ if (require('fs').existsSync(homedir + "/.kartik/build")) {
+ require('fs').rmSync(homedir + "/.kartik/build", { recursive: true })
+ }
+ require('fs').mkdirSync(homedir + "/.kartik/build")
+
+ console.log(" * Creating configuration");
+
+ const fs = require('fs');
+ const Nest = require('./nest/abi');
+
+ if (fs.existsSync(homedir + "/.kartik/config") && fs.existsSync(homedir + "/.kartik/config/voice.txt") && fs.existsSync(homedir + "/.kartik/config/online.txt") && fs.existsSync(homedir + "/.kartik/config/music.txt") && fs.existsSync(homedir + "/.kartik/config/lang.txt") && fs.existsSync(homedir + "/.kartik/stats.json")) {
+ console.log(" * Found complete Config V1, migrating to Kartik Fox Nest...");
+ Nest.convert(homedir + "/.kartik/current.kfn", homedir + "/.kartik");
+ } else {
+ if (!fs.existsSync(homedir + "/.kartik/current.kfn")) {
+ console.log(" * No Kartik Fox Nest found, generating one...");
+ Nest.generate(homedir + "/.kartik/current.kfn");
+ } else {
+ fs.copyFileSync(homedir + "/.kartik/current.kfn", homedir + "/.kartik/latest.kfn");
+ }
+ }
+
+ global.currentNest = Nest.load(homedir + "/.kartik/current.kfn");
+ console.log(" * Kartik Fox Nest loaded, " + fs.readFileSync(homedir + "/.kartik/current.kfn").toString().length + " bytes, last loaded in Kartik " + currentNest._version);
+
+ currentNest._version = require('./package.json').version;
+ Nest.export(homedir + "/.kartik/current.kfn", currentNest);
+
+ /* --------------------- */
+
+ require('@electron/remote/main').initialize();
+
+ function createWindow () {
+ console.log(" * Checking configuration");
+
+ lp = currentNest.config.lang
+
+ time = new Date() - start;
+ console.log(" * Started successfully in " + Math.round(time/1000) + " seconds");
+ console.log(" * Why are you EVEN reading this?");
+ global.shouldExitIfClosed = true;
+
+ console.log(" * Starting IPC engine");
+ win.pwidth = 720;
+ win.pheight = 540;
+ win.log = console.log;
+
+ win.debug = process.argv[2] === "d";
+ win.channel = channel;
+ win.cmdlineargs = process.argv;
+ win.scale = 1.2;
+ win.update = dimga;
+ win.gamepads = [];
+ win.controllerAttached = false;
+ win.webview = null;
+ win.dstate = "Kartik";
+ win.ddetails = "Kartik";
+ win.mods = mods;
+
+ win.invalidfiles = invalidfiles;
+ win.modsfiles = compiledTypeScriptFiles;
+ win.homedir = homedir;
+
+ win.lp = lp;
+ win.music = currentNest.config.music;
+ win.voice = currentNest.config.voice;
+
+ win.online = currentNest.config.online;
+ win.nest = currentNest;
+
+ win.resources = resources;
+ global.currentSongValue = null;
+
+ console.log(" * Starting language preloader");
+ require('./lang/preload.js');
+ console.log(" * Starting Discord RPC");
+ require('./discord/client.js');
+
+ if (win.debug) {
+ console.log(" * *******************************************");
+ console.log(" * * KARTIK DEBUG MODE *");
+ console.log(" * *******************************************");
+ win.openDevTools();
+ }
+
+ setTimeout(() => {
+ win.webContents.send('ready', true);
+ }, 3000)
+
+ win.webContents.on('dom-ready', () => {
+ musicIpc = require('electron').ipcMain;
+ musicIpc.on('newmusic', (event, value) => {
+ if (music) {
+ win.webContents.send('setmusic', value);
+ }
+ })
+
+ musicIpc.on('reloadNest', (event) => {
+ currentNest = Nest.load(homedir + "/.kartik/current.kfn");
+ win.nest = currentNest;
+ })
+
+ const LevelsAPI = require('./views/script/global_levelsapi');
+ const lvl = new LevelsAPI();
+
+ stats = currentNest.stats;
+ musicIpc.on('addstats', (event, value) => {
+ currentNest.stats[value.catalog][value.key] = currentNest.stats[value.catalog][value.key] + value.add;
+ Nest.export(homedir + "/.kartik/current.kfn", currentNest);
+ currentNest = Nest.load(homedir + "/.kartik/current.kfn");
+ win.nest = currentNest;
+
+ if (value.key === "laps" && currentNest.auth) {
+ auth = currentNest.auth;
+ level = lvl.correspond(currentNest.stats["ingame"]["laps"], "256") - 1 + 1;
+
+ if (level !== auth.level) {
+ currentNest.auth.level = level;
+ Nest.export(homedir + "/.kartik/current.kfn", currentNest);
+ currentNest = Nest.load(homedir + "/.kartik/current.kfn");
+ win.nest = currentNest;
+ if (level < 200) {
+ win.webContents.send("notification", {title: lang.polymer.levelup[0], message: lang.polymer.levelup[1] + " " + level + " " + lang.polymer.levelup[2]});
+ } else {
+ win.webContents.send("notification", {title: lang.polymer.finished[0], message: lang.polymer.finished[1]});
+ }
+ }
+ }
+ })
+ musicIpc.on('addstatsandclose', (event, value) => {
+ currentNest.stats[value.catalog][value.key] = currentNest.stats[value.catalog][value.key] + value.add;
+ Nest.export(homedir + "/.kartik/current.kfn", currentNest);
+ currentNest = Nest.load(homedir + "/.kartik/current.kfn");
+ win.nest = currentNest;
+ win.destroy();
+ })
+ })
+ }
+
+ console.log(" * Starting splash screen");
+
+ console.log(" * Checking channel");
+ if (require('./package.json').channel === "stable") {
+ logo = "logo/logo.png";
+ channel = " ";
+ global.dimg = "official";
+ global.dimga = "stable";
+ global.dchan = "Kartik Stable";
+ } else if (require('./package.json').channel === "beta") {
+ logo = "logo/logo-beta.png";
+ channel = " Beta ";
+ global.dimg = "beta";
+ global.dimga = "beta";
+ global.dchan = "Kartik Beta";
+ } else if (require('./package.json').channel === "nightly") {
+ logo = "logo/logo-nightly.png";
+ channel = " Nightly ";
+ global.dimg = "nightly";
+ global.dimga = "nightly";
+ global.dchan = "Kartik Nightly";
+ } else if (require('./package.json').channel === "eap") {
+ logo = "logo/logo-eap.png";
+ channel = " EAP ";
+ global.dimg = "eap";
+ global.dimga = "eap";
+ global.dchan = "Kartik EAP";
+ } else if (require('./package.json').channel === "git") {
+ logo = "logo/logo-git.png";
+ channel = " Trunk ";
+ global.dimg = "git";
+ global.dimga = "git";
+ global.dchan = "Kartik Trunk";
+ try {
+ pk = require('./package.json');
+ pk.version = require('fs').readFileSync("./.git/refs/heads/trunk").toString().substr(0, 7);
+ fs.writeFileSync("./package.json", JSON.stringify(pk, 2))
+ } catch (e) {}
+ }
+
+ global.win = new BrowserWindow({
+ width: 1220,
+ height: 720,
+ minWidth: 720,
+ minHeight: 540,
+ resizeable: true,
+ resizable: true,
+ maximizable: true,
+ show: false,
+ enableLargerThanScreen: true,
+ icon: logo,
+ backgroundColor: "#000000",
+ title: "Kartik",
+ webPreferences: {
+ nodeIntegration: true,
+ contextIsolation: false,
+ enableRemoteModule: true,
+ webviewTag: true,
+ disableBlinkFeatures: "MediaSessionService",
+ }
+ })
+ console.log(" * Loading view");
+ win.loadFile('./index.html')
+ win.setMenu(null);
+ win.webContents.once('dom-ready', () => {
+ console.log(" * Showing splash screen");
+ win.show();
+ setTimeout(() => {
+ console.log(" * Checking signatures");
+
+ invalidfiles = [];
+
+ sigdb = require("./bin/signatures.json");
+ total = Object.keys(sigdb["v1"]).length * 3;
+ processed = 0;
+ for (file in sigdb["v1"]) {
+ if (fs.existsSync(file) && !invalidfiles.includes(file)) {
+ try {
+ hash = require('crypto').createHash('sha512').update(fs.readFileSync(file)).digest('base64');
+ if (hash !== sigdb["v1"][file]) {
+ invalidfiles.push(file);
+ }
+ } catch (e) {
+ console.warn(" ! Could not compute V1 hash for " + file);
+ }
+ }
+
+ processed++;
+ win.webContents.send('progress', (processed/total)*100);
+ }
+ for (file in sigdb["v2"]) {
+ if (fs.existsSync(file) && !invalidfiles.includes(file)) {
+ try {
+ hash = require('crypto').createHash('sha1').update(fs.readFileSync(file)).digest('base64');
+ if (hash !== sigdb["v2"][file]) {
+ invalidfiles.push(file);
+ }
+ } catch (e) {
+ console.warn(" ! Could not compute V2 hash for " + file);
+ }
+ }
+
+ processed++;
+ win.webContents.send('progress', (processed/total)*100);
+ }
+ for (file in sigdb["v3"]) {
+ if (fs.existsSync(file) && !invalidfiles.includes(file)) {
+ try {
+ hash = require('crypto').createHash('md5').update(fs.readFileSync(file)).digest('base64');
+ if (hash !== sigdb["v3"][file]) {
+ invalidfiles.push(file);
+ }
+ } catch (e) {
+ console.warn(" ! Could not compute V3 hash for " + file);
+ }
+ }
+
+ processed++;
+ win.webContents.send('progress', (processed/total)*100);
+ }
+
+ global.importedTypeScriptFiles = [];
+ global.compiledTypeScriptFiles = [];
+ console.log(" * Generating resources pack");
+ require('./modding/resources');
+ console.log(" * Starting Kartik Modding Platform");
+ require('./modding/parser');
+ console.log(" * Compiling KMP API TypeScript files");
+ require('./modding/compiler');
+ console.log(" * Loading KMP TypeScript mods");
+ require('./typescript/preloader');
+ createWindow();
+ }, 5000)
+ })
+ })
+
+ app.on('window-all-closed', () => {
+ if (shouldExitIfClosed) {
+ console.log(" * Bye!");
+ app.quit()
+ }
+ })
+})();
diff --git a/online/global.js b/online/global.js
index 0cdb6f4..afe4562 100644
--- a/online/global.js
+++ b/online/global.js
@@ -1,374 +1,374 @@
-global.pingStart = null;
-global.connecting = false;
-global.role = null;
-global.online = true;
-global.guestInfo = {
- hostCar: null,
- guestCar: null,
- circuit: null,
- music: null
-};
-global.onlineInitDone = false;
-
-function max(input) {
- if (toString.call(input) !== "[object Array]")
- return false;
- return Math.max.apply(null, input);
-}
-
-pingHistory = [];
-function updatePing(ping) {
- if (ping < 100000) {
- document.getElementById('ping').innerText = ping + " ms";
-
- pingHistory.push(ping);
- while (pingHistory.length > 70) {
- pingHistory.shift();
- }
-
- dom = "";
- highest = max(pingHistory);
- pingHistory.forEach((p) => {
- high = 1
- perc = (p/highest)*100
- if (ping > 70 && ping < 150) {
- dom = dom + `<span style="display: inline-block;background: orange;width: ${high}px;height: ${perc}%;"></span>`;
- } else if (ping > 150) {
- dom = dom + `<span style="display: inline-block;background: red;width: ${high}px;height: ${perc}%;"></span>`;
- } else {
- dom = dom + `<span style="display: inline-block;background: limegreen;width: ${high}px;height: ${perc}%;"></span>`;
- }
- })
-
- document.getElementById('ping-chart').innerHTML = dom;
- }
-}
-
-window.addEventListener('load', () => {
- document.getElementById('credits').style.backgroundColor = "#000000";
- document.getElementById('cars-n1').innerText = lang.online.car0;
- document.getElementById('cars-n2').innerText = lang.online.car1;
-
- class MessageBuffer {
- constructor(delimiter) {
- this.delimiter = delimiter
- this.buffer = ""
- }
-
- isFinished() {
- if (
- this.buffer.length === 0 ||
- this.buffer.indexOf(this.delimiter) === -1
- ) {
- return true
- }
- return false
- }
-
- push(data) {
- this.buffer += data
- }
-
- getMessage() {
- const delimiterIndex = this.buffer.indexOf(this.delimiter)
- if (delimiterIndex !== -1) {
- const message = this.buffer.slice(0, delimiterIndex)
- this.buffer = this.buffer.replace(message + this.delimiter, "")
- return message
- }
- return null
- }
-
- handleData() {
- /**
- * Try to accumulate the buffer with messages
- *
- * If the server isnt sending delimiters for some reason
- * then nothing will ever come back for these requests
- */
- const message = this.getMessage()
- return message
- }
- }
-
- const sampleData = {
- _type: "init",
- name: "Kartik Core",
- version: require('../package.json').version,
- id: null,
- modded: false
- }
-
- global.clientWriter = (data) => {
- client.write(data + "\n");
- }
-
- function crash(e) {
- console.error(e);
- if (!quitting) {
- location.href = "online.html#" + btoa(lang.online.error.connection);
- }
- }
-
- var net = require('net');
-
- var host = require('../online/server.json').hostname;
- var port = require('../online/server.json').port;
-
- global.client = new net.Socket();
- client.initialized = false;
-
- client.connect(port, host, () => {
- console.log("Connected to " + host + ":" + port);
- clientWriter(JSON.stringify(sampleData) + "|");
- setInterval(() => {
- if (role === null) {
- clientWriter(JSON.stringify({
- _type: "ping"
- }) + "|")
- } else {
- clientWriter(JSON.stringify({
- _type: "ipc",
- action: "Ping",
- message: null
- }) + "|")
- }
- global.pingCrash = setTimeout(() => {
- location.href = "online.html#" + btoa(lang.online.timeout);
- }, 10000);
- global.pingStart = new Date();
- }, 1000)
- })
-
- let received = new MessageBuffer("\n")
- client.on("data", chunk => {
- received.push(chunk)
- while (!received.isFinished()) {
- const data = received.handleData()
-
- raw = data.toString().replaceAll("}{", "}|{");
- datas = raw.split("|").filter(i => i.trim() !== "");
- datas.forEach((data) => {
- try {
- inf = JSON.parse(data);
- } catch (e) {
- console.dir(data);
- throw e;
- }
-
- if (typeof inf['_type'] != "string") {
- crash(new Error("Invalid JSON data"));
- }
- if (!client.initialized) {
- switch (inf['_type']) {
- case "init":
- if (inf['name'] !== "Kartik Server") {
- crash(new Error("Invalid server"));
- }
- console.log("Connection initialized. Server running " + inf.name + " version " + inf.version + ", client ID " + inf.id);
- document.getElementById("serveraddr").innerText = host + ":" + port;
- if (inf.version.endsWith("-iridium")) {
- document.getElementById("servername").innerText = "Iridium " + inf.version.substr(0, inf.version.length - "-iridium".length);
- document.getElementById("servericon").src = "../logo/iridium.png";
- } else {
- document.getElementById("servername").innerText = "Kartik Legacy Server " + inf.version;
- document.getElementById("servericon").src = "../logo/server.png";
- }
- document.getElementById('yourid').innerText = inf.id.toUpperCase();
- document.getElementById('intro').style.display = "";
- document.getElementById('connecting').style.display = "none";
- document.getElementById('loading').style.display = "none";
- client.initialized = true;
- break;
- case "error":
- console.log(inf['type'] + ": " + inf['message']);
- break;
- default:
- crash(new Error("Trying to receive data but client not initialized"));
- break;
- }
- } else {
- switch (inf['_type']) {
- case "init":
- crash(new Error("Trying to initialize client but client is already initialized"));
- break;
- case "error":
- console.log(inf['type'] + ": " + inf['message']);
- location.href = "online.html#" + btoa(inf['type'] + ": " + inf['message']);
- break;
- case "linked":
- console.log("Now hooked into link: (H) " + inf['ids']['host'] + " <-> " + inf['ids']['guest'] + " (G)");
- document.getElementById('intro').style.display = "none";
- document.getElementById('connecting').style.display = "none";
- document.getElementById('loading').style.display = "";
- document.getElementById('loading').innerText = lang.online.generate;
- global.role = inf['role'];
- if (role === "host") {
- startHooks.forEach((hook) => {
- hook(this);
- })
- $("#online-login").fadeOut(200);
- }
- break;
- default:
- if (inf['_type'] === "ipc" && inf['action'] === "Ping") {
- clientWriter(JSON.stringify({
- _type: "ipc",
- action: "Pong",
- message: null
- }) + "|")
- return;
- }
- if ((inf['_type'] === "ipc" && inf['action'] === "Pong") || inf['_type'] === "pong") {
- pingEnd = new Date();
- ping = Math.round(pingEnd - pingStart);
- global.pingStart = null;
- clearTimeout(global.pingCrash);
- updatePing(ping);
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "posTop") {
- try {
- document.getElementById('car1').style.top = inf['message'];
- } catch (e) {}
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "progressLaps") {
- try {
- document.getElementById("laps-car1").innerText = inf['message'];
- } catch (e) {}
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "progressLose") {
- global.quitting = true;
- location.href = "win.html?sp#car1";
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "posLeft") {
- try {
- document.getElementById('car1').style.left = inf['message'];
- } catch (e) {}
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "gameIsReady") {
- startgame();
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "abort") {
- location.href = "online.html#" + btoa(lang.online.aborted);
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'] === "posRot") {
- try {
- document.getElementById('car1').style.transform = inf['message'];
- } catch (e) {}
- return;
- }
- if (inf['_type'] === "ipc" && inf['action'].startsWith("RaceData:")) {
- rd = inf['action'].substr(9);
- switch (rd) {
- case "hostCar":
- guestInfo.hostCar = inf['message'];
- if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
- onlineInitDone = true;
- startHooks.forEach((hook) => {
- hook(this);
- })
- $("#online-login").fadeOut(200);
- }
- break;
- case "guestCar":
- guestInfo.guestCar = inf['message'];
- if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
- onlineInitDone = true;
- startHooks.forEach((hook) => {
- hook(this);
- })
- $("#online-login").fadeOut(200);
- }
- break;
- case "circuit":
- guestInfo.circuit = inf['message'];
- if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
- onlineInitDone = true;
- startHooks.forEach((hook) => {
- hook(this);
- })
- $("#online-login").fadeOut(200);
- }
- break;
- case "music":
- guestInfo.music = inf['message'];
- if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
- onlineInitDone = true;
- startHooks.forEach((hook) => {
- hook(this);
- })
- $("#online-login").fadeOut(200);
- }
- break;
- }
- return;
- }
- break;
- }
- }
- })
- }
- })
-
- client.on('close', () => {
- console.log("Kicked from server");
- })
-
- client.on('error', (e) => {
- switch (e.code) {
- case "ECONNREFUSED":
- location.href = "online.html#" + btoa(lang.online.unable);
- break;
- default:
- location.href = "online.html#" + btoa(lang.online.internal);
- break;
- }
- crash(e);
- })
-
- setInterval(() => {
- if (pingStart !== null && new Date() - pingStart >= 10000) {
- location.href = "online.html#" + btoa(lang.online.timeout);
- }
- }, 50)
-})
-
-function checkOnlineLogin() {
- document.getElementById('theirid').value = document.getElementById('theirid').value.toUpperCase();
- if (/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890]/gm.test(document.getElementById('theirid').value)) {
- document.getElementById('theirid').value = "";
- }
- if (document.getElementById('theirid').value.length === 8) {
- if (document.getElementById('theirid').value === document.getElementById('yourid').innerText) {
- document.getElementById('theirid').value = "";
- } else {
- if (!connecting) {
- connecting = true;
- document.getElementById('intro').style.display = "none";
- document.getElementById('connecting').style.display = "none";
- document.getElementById('loading').style.display = "";
- console.log("Linking to client " + document.getElementById('theirid').value + "...")
- clientWriter(JSON.stringify({
- _type: "link",
- client: document.getElementById('theirid').value.toLowerCase()
- }));
- }
- }
- }
-}
-
-$("#theirid").keydown(function(e) {
- if (e.keyCode === 27) { // esc
- $("body").fadeOut(200);
- setTimeout(() => {
- location.href = "menu.html?back";
- }, 250)
- }
+global.pingStart = null;
+global.connecting = false;
+global.role = null;
+global.online = true;
+global.guestInfo = {
+ hostCar: null,
+ guestCar: null,
+ circuit: null,
+ music: null
+};
+global.onlineInitDone = false;
+
+function max(input) {
+ if (toString.call(input) !== "[object Array]")
+ return false;
+ return Math.max.apply(null, input);
+}
+
+pingHistory = [];
+function updatePing(ping) {
+ if (ping < 100000) {
+ document.getElementById('ping').innerText = ping + " ms";
+
+ pingHistory.push(ping);
+ while (pingHistory.length > 70) {
+ pingHistory.shift();
+ }
+
+ dom = "";
+ highest = max(pingHistory);
+ pingHistory.forEach((p) => {
+ high = 1
+ perc = (p/highest)*100
+ if (ping > 70 && ping < 150) {
+ dom = dom + `<span style="display: inline-block;background: orange;width: ${high}px;height: ${perc}%;"></span>`;
+ } else if (ping > 150) {
+ dom = dom + `<span style="display: inline-block;background: red;width: ${high}px;height: ${perc}%;"></span>`;
+ } else {
+ dom = dom + `<span style="display: inline-block;background: limegreen;width: ${high}px;height: ${perc}%;"></span>`;
+ }
+ })
+
+ document.getElementById('ping-chart').innerHTML = dom;
+ }
+}
+
+window.addEventListener('load', () => {
+ document.getElementById('credits').style.backgroundColor = "#000000";
+ document.getElementById('cars-n1').innerText = lang.online.car0;
+ document.getElementById('cars-n2').innerText = lang.online.car1;
+
+ class MessageBuffer {
+ constructor(delimiter) {
+ this.delimiter = delimiter
+ this.buffer = ""
+ }
+
+ isFinished() {
+ if (
+ this.buffer.length === 0 ||
+ this.buffer.indexOf(this.delimiter) === -1
+ ) {
+ return true
+ }
+ return false
+ }
+
+ push(data) {
+ this.buffer += data
+ }
+
+ getMessage() {
+ const delimiterIndex = this.buffer.indexOf(this.delimiter)
+ if (delimiterIndex !== -1) {
+ const message = this.buffer.slice(0, delimiterIndex)
+ this.buffer = this.buffer.replace(message + this.delimiter, "")
+ return message
+ }
+ return null
+ }
+
+ handleData() {
+ /**
+ * Try to accumulate the buffer with messages
+ *
+ * If the server isnt sending delimiters for some reason
+ * then nothing will ever come back for these requests
+ */
+ const message = this.getMessage()
+ return message
+ }
+ }
+
+ const sampleData = {
+ _type: "init",
+ name: "Kartik Core",
+ version: require('../package.json').version,
+ id: null,
+ modded: false
+ }
+
+ global.clientWriter = (data) => {
+ client.write(data + "\n");
+ }
+
+ function crash(e) {
+ console.error(e);
+ if (!quitting) {
+ location.href = "online.html#" + btoa(lang.online.error.connection);
+ }
+ }
+
+ var net = require('net');
+
+ var host = require('../online/server.json').hostname;
+ var port = require('../online/server.json').port;
+
+ global.client = new net.Socket();
+ client.initialized = false;
+
+ client.connect(port, host, () => {
+ console.log("Connected to " + host + ":" + port);
+ clientWriter(JSON.stringify(sampleData) + "|");
+ setInterval(() => {
+ if (role === null) {
+ clientWriter(JSON.stringify({
+ _type: "ping"
+ }) + "|")
+ } else {
+ clientWriter(JSON.stringify({
+ _type: "ipc",
+ action: "Ping",
+ message: null
+ }) + "|")
+ }
+ global.pingCrash = setTimeout(() => {
+ location.href = "online.html#" + btoa(lang.online.timeout);
+ }, 10000);
+ global.pingStart = new Date();
+ }, 1000)
+ })
+
+ let received = new MessageBuffer("\n")
+ client.on("data", chunk => {
+ received.push(chunk)
+ while (!received.isFinished()) {
+ const data = received.handleData()
+
+ raw = data.toString().replaceAll("}{", "}|{");
+ datas = raw.split("|").filter(i => i.trim() !== "");
+ datas.forEach((data) => {
+ try {
+ inf = JSON.parse(data);
+ } catch (e) {
+ console.dir(data);
+ throw e;
+ }
+
+ if (typeof inf['_type'] != "string") {
+ crash(new Error("Invalid JSON data"));
+ }
+ if (!client.initialized) {
+ switch (inf['_type']) {
+ case "init":
+ if (inf['name'] !== "Kartik Server") {
+ crash(new Error("Invalid server"));
+ }
+ console.log("Connection initialized. Server running " + inf.name + " version " + inf.version + ", client ID " + inf.id);
+ document.getElementById("serveraddr").innerText = host + ":" + port;
+ if (inf.version.endsWith("-iridium")) {
+ document.getElementById("servername").innerText = "Iridium " + inf.version.substr(0, inf.version.length - "-iridium".length);
+ document.getElementById("servericon").src = "../logo/iridium.png";
+ } else {
+ document.getElementById("servername").innerText = "Kartik Legacy Server " + inf.version;
+ document.getElementById("servericon").src = "../logo/server.png";
+ }
+ document.getElementById('yourid').innerText = inf.id.toUpperCase();
+ document.getElementById('intro').style.display = "";
+ document.getElementById('connecting').style.display = "none";
+ document.getElementById('loading').style.display = "none";
+ client.initialized = true;
+ break;
+ case "error":
+ console.log(inf['type'] + ": " + inf['message']);
+ break;
+ default:
+ crash(new Error("Trying to receive data but client not initialized"));
+ break;
+ }
+ } else {
+ switch (inf['_type']) {
+ case "init":
+ crash(new Error("Trying to initialize client but client is already initialized"));
+ break;
+ case "error":
+ console.log(inf['type'] + ": " + inf['message']);
+ location.href = "online.html#" + btoa(inf['type'] + ": " + inf['message']);
+ break;
+ case "linked":
+ console.log("Now hooked into link: (H) " + inf['ids']['host'] + " <-> " + inf['ids']['guest'] + " (G)");
+ document.getElementById('intro').style.display = "none";
+ document.getElementById('connecting').style.display = "none";
+ document.getElementById('loading').style.display = "";
+ document.getElementById('loading').innerText = lang.online.generate;
+ global.role = inf['role'];
+ if (role === "host") {
+ startHooks.forEach((hook) => {
+ hook(this);
+ })
+ $("#online-login").fadeOut(200);
+ }
+ break;
+ default:
+ if (inf['_type'] === "ipc" && inf['action'] === "Ping") {
+ clientWriter(JSON.stringify({
+ _type: "ipc",
+ action: "Pong",
+ message: null
+ }) + "|")
+ return;
+ }
+ if ((inf['_type'] === "ipc" && inf['action'] === "Pong") || inf['_type'] === "pong") {
+ pingEnd = new Date();
+ ping = Math.round(pingEnd - pingStart);
+ global.pingStart = null;
+ clearTimeout(global.pingCrash);
+ updatePing(ping);
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "posTop") {
+ try {
+ document.getElementById('car1').style.top = inf['message'];
+ } catch (e) {}
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "progressLaps") {
+ try {
+ document.getElementById("laps-car1").innerText = inf['message'];
+ } catch (e) {}
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "progressLose") {
+ global.quitting = true;
+ location.href = "win.html?sp#car1";
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "posLeft") {
+ try {
+ document.getElementById('car1').style.left = inf['message'];
+ } catch (e) {}
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "gameIsReady") {
+ startgame();
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "abort") {
+ location.href = "online.html#" + btoa(lang.online.aborted);
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'] === "posRot") {
+ try {
+ document.getElementById('car1').style.transform = inf['message'];
+ } catch (e) {}
+ return;
+ }
+ if (inf['_type'] === "ipc" && inf['action'].startsWith("RaceData:")) {
+ rd = inf['action'].substr(9);
+ switch (rd) {
+ case "hostCar":
+ guestInfo.hostCar = inf['message'];
+ if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
+ onlineInitDone = true;
+ startHooks.forEach((hook) => {
+ hook(this);
+ })
+ $("#online-login").fadeOut(200);
+ }
+ break;
+ case "guestCar":
+ guestInfo.guestCar = inf['message'];
+ if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
+ onlineInitDone = true;
+ startHooks.forEach((hook) => {
+ hook(this);
+ })
+ $("#online-login").fadeOut(200);
+ }
+ break;
+ case "circuit":
+ guestInfo.circuit = inf['message'];
+ if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
+ onlineInitDone = true;
+ startHooks.forEach((hook) => {
+ hook(this);
+ })
+ $("#online-login").fadeOut(200);
+ }
+ break;
+ case "music":
+ guestInfo.music = inf['message'];
+ if (guestInfo.music !== null && guestInfo.circuit !== null && guestInfo.guestCar !== null && guestInfo.hostCar !== null && !onlineInitDone) {
+ onlineInitDone = true;
+ startHooks.forEach((hook) => {
+ hook(this);
+ })
+ $("#online-login").fadeOut(200);
+ }
+ break;
+ }
+ return;
+ }
+ break;
+ }
+ }
+ })
+ }
+ })
+
+ client.on('close', () => {
+ console.log("Kicked from server");
+ })
+
+ client.on('error', (e) => {
+ switch (e.code) {
+ case "ECONNREFUSED":
+ location.href = "online.html#" + btoa(lang.online.unable);
+ break;
+ default:
+ location.href = "online.html#" + btoa(lang.online.internal);
+ break;
+ }
+ crash(e);
+ })
+
+ setInterval(() => {
+ if (pingStart !== null && new Date() - pingStart >= 10000) {
+ location.href = "online.html#" + btoa(lang.online.timeout);
+ }
+ }, 50)
+})
+
+function checkOnlineLogin() {
+ document.getElementById('theirid').value = document.getElementById('theirid').value.toUpperCase();
+ if (/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890]/gm.test(document.getElementById('theirid').value)) {
+ document.getElementById('theirid').value = "";
+ }
+ if (document.getElementById('theirid').value.length === 8) {
+ if (document.getElementById('theirid').value === document.getElementById('yourid').innerText) {
+ document.getElementById('theirid').value = "";
+ } else {
+ if (!connecting) {
+ connecting = true;
+ document.getElementById('intro').style.display = "none";
+ document.getElementById('connecting').style.display = "none";
+ document.getElementById('loading').style.display = "";
+ console.log("Linking to client " + document.getElementById('theirid').value + "...")
+ clientWriter(JSON.stringify({
+ _type: "link",
+ client: document.getElementById('theirid').value.toLowerCase()
+ }));
+ }
+ }
+ }
+}
+
+$("#theirid").keydown(function(e) {
+ if (e.keyCode === 27) { // esc
+ $("body").fadeOut(200);
+ setTimeout(() => {
+ location.href = "menu.html?back";
+ }, 250)
+ }
}) \ No newline at end of file
diff --git a/online/server.json b/online/server.json
index 4ba17eb..cd9b0df 100644
--- a/online/server.json
+++ b/online/server.json
@@ -1,4 +1,4 @@
-{
- "hostname": "kartik.hopto.org",
- "port": 8408
-}
+{
+ "hostname": "kartik.minteck.org",
+ "port": 8408
+}
diff --git a/views/script/game_music.js b/views/script/game_music.js
index 7d43a25..beed4a0 100644
--- a/views/script/game_music.js
+++ b/views/script/game_music.js
@@ -1,8 +1,8 @@
-startHooks.push(() => {
- info("MusicMgr", "Playing game" + i + ".mp3");
- if (require('@electron/remote').getCurrentWindow().music) require('electron').ipcRenderer.send('newmusic', kresources.music['game' + i].file);
-})
-
-if (location.search === "?online") {
- if (require('@electron/remote').getCurrentWindow().music) require('electron').ipcRenderer.send('newmusic', kresources.music['prepare'].file);
-}
+startHooks.push(() => {
+ info("MusicMgr", "Playing game" + i + ".mp3");
+ if (require('@electron/remote').getCurrentWindow().music) require('electron').ipcRenderer.send('newmusic', kresources.music['game' + i].file);
+})
+
+if (location.search === "?online") {
+ if (require('@electron/remote').getCurrentWindow().music) require('electron').ipcRenderer.send('newmusic', kresources.music['prepare'].file);
+}
diff --git a/views/script/menu_music.js b/views/script/menu_music.js
index d650478..e6ef323 100644
--- a/views/script/menu_music.js
+++ b/views/script/menu_music.js
@@ -1,5 +1,5 @@
-if (location.search !== "?noreset") {
- console.log("back");
- if (require('@electron/remote').getCurrentWindow().music) require('electron').ipcRenderer.send('newmusic', kresources.music['title'].file);
-}
-info("MenuWindow", "Menu opened");
+if (location.search !== "?noreset") {
+ console.log("back");
+ if (require('@electron/remote').getCurrentWindow().music) require('electron').ipcRenderer.send('newmusic', kresources.music['title'].file);
+}
+info("MenuWindow", "Menu opened");
diff --git a/views/splash.svg b/views/splash.svg
index e9bfac3..3fc0572 100644
--- a/views/splash.svg
+++ b/views/splash.svg
@@ -1,2831 +1,2831 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- version="1.1"
- width="1600"
- height="770"
- id="svg622"
- sodipodi:docname="tiler.svg"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs626" />
- <sodipodi:namedview
- id="namedview624"
- pagecolor="#ffffff"
- bordercolor="#999999"
- borderopacity="1"
- inkscape:pageshadow="0"
- inkscape:pageopacity="0"
- inkscape:pagecheckerboard="0"
- showgrid="false"
- inkscape:zoom="0.43798583"
- inkscape:cx="778.56401"
- inkscape:cy="374.44134"
- inkscape:window-width="1600"
- inkscape:window-height="845"
- inkscape:window-x="0"
- inkscape:window-y="26"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg622" />
- <rect
- width="1600"
- height="770"
- fill="#504b4b"
- id="rect2"
- style="fill:#064896;fill-opacity:1" />
- <rect
- width="1600"
- height="770"
- fill="#21d789"
- opacity="0"
- id="rect4" />
- <g
- id="g596">
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,123.07692131629346,-7.105427357601002e-15)"
- id="g10">
- <circle
- cx="23.999998092651367"
- cy="23.99999866485596"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle6" />
- <circle
- cx="56"
- cy="55.99999866485596"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle8" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,246.1538523160491,123.07692923912667)"
- id="g14">
- <polygon
- points="79.99999866485587,79.99999866485595 -0.0000013351441339182202,159.99999866485595 -0.0000013351441339182202,79.99999866485595 79.99999866485587,79.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon12" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,369.2307756864104,246.15385260948798)"
- id="g24">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g22">
- <polygon
- points="-0.0000013351441339182202,239.99999866485595 15.999998664855866,159.99999866485595 31.999998664855866,159.99999866485595 15.999998664855866,239.99999866485595 -0.0000013351441339182202,239.99999866485595"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon16" />
- <polygon
- points="31.999998092651367,239.99999866485595 47.99999809265137,159.99999866485595 63.99999809265137,159.99999866485595 47.99999809265137,239.99999866485595 31.999998092651367,239.99999866485595"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon18" />
- <polygon
- points="64,239.99999866485595 80,159.99999866485595 80,239.99999866485595 64,239.99999866485595"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon20" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,123.07692131629352,861.5384826660156)"
- id="g30">
- <circle
- cx="23.999998092651367"
- cy="263.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle26" />
- <circle
- cx="56"
- cy="295.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle28" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-492.30771460899973,615.3846376859223)"
- id="g34">
- <polygon
- points="79.99999866485587,319.9999986648559 -0.0000013351441339182202,399.9999986648559 -0.0000013351441339182202,319.9999986648559 79.99999866485587,319.9999986648559"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon32" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,738.4615572415862,615.3846341646638)"
- id="g38">
- <polygon
- points="79.99999866485587,399.999998664856 -0.0000013351441339182202,479.999998664856 -0.0000013351441339182202,399.999998664856 79.99999866485587,399.999998664856"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon36" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,123.07692307692251,1600)"
- id="g48">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g46">
- <polygon
- points="-0.0000013351441339182202,559.999998664856 15.999998664855866,479.999998664856 31.999998664855866,479.999998664856 15.999998664855866,559.999998664856 -0.0000013351441339182202,559.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon40" />
- <polygon
- points="31.999998092651367,559.999998664856 47.99999809265137,479.999998664856 63.99999809265137,479.999998664856 47.99999809265137,559.999998664856 31.999998092651367,559.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon42" />
- <polygon
- points="64,559.999998664856 80,479.999998664856 80,559.999998664856 64,559.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon44" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,246.15385143573462,-123.07693011944116)"
- id="g54">
- <circle
- cx="104"
- cy="23.99999866485596"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle50" />
- <circle
- cx="136"
- cy="55.99999866485596"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle52" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,369.2307815551758,0)"
- id="g64">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g62">
- <polygon
- points="80,159.99999866485595 96,79.99999866485595 112,79.99999866485595 96,159.99999866485595 80,159.99999866485595"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon56" />
- <polygon
- points="112,159.99999866485595 128,79.99999866485595 144,79.99999866485595 128,159.99999866485595 112,159.99999866485595"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon58" />
- <polygon
- points="144,159.99999866485595 160,79.99999866485595 160,159.99999866485595 144,159.99999866485595"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon60" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,492.3077049255371,123.0769233703613)"
- id="g70">
- <circle
- cx="104"
- cy="183.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle66" />
- <circle
- cx="136"
- cy="215.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle68" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-246.15385055541987,615.3846321105958)"
- id="g80">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g78">
- <polygon
- points="80,319.999998664856 96,239.99999866485598 112,239.99999866485598 96,319.999998664856 80,319.999998664856"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon72" />
- <polygon
- points="112,319.999998664856 128,239.99999866485598 144,239.99999866485598 128,319.999998664856 112,319.999998664856"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon74" />
- <polygon
- points="144,319.999998664856 160,239.99999866485598 160,319.999998664856 144,319.999998664856"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon76" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-369.23078536987305,738.4615669250489)"
- id="g84">
- <polygon
- points="160,319.9999986648559 80,399.9999986648559 80,319.9999986648559 160,319.9999986648559"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon82" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,369.2307815551759,1353.84619140625)"
- id="g90">
- <circle
- cx="104"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle86" />
- <circle
- cx="136"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle88" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g100">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g98">
- <polygon
- points="80,559.999998664856 96,479.999998664856 112,479.999998664856 96,559.999998664856 80,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon92" />
- <polygon
- points="112,559.999998664856 128,479.999998664856 144,479.999998664856 128,559.999998664856 112,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon94" />
- <polygon
- points="144,559.999998664856 160,479.999998664856 160,559.999998664856 144,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon96" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,246.15385260948784,369.23077568641065)"
- id="g104">
- <polygon
- points="240,-0.000001335144041902936 160,79.99999866485595 160,-0.000001335144041902936 240,-0.000001335144041902936"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon102" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,615.3846282958984,369.2307815551758)"
- id="g114">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g112">
- <polygon
- points="160,159.99999866485595 176,79.99999866485595 192,79.99999866485595 176,159.99999866485595 160,159.99999866485595"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon106" />
- <polygon
- points="192,159.99999866485595 208,79.99999866485595 224,79.99999866485595 208,159.99999866485595 192,159.99999866485595"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon108" />
- <polygon
- points="224,159.99999866485595 240,79.99999866485595 240,159.99999866485595 224,159.99999866485595"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon110" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,5.684341886080802e-14,615.3846282958984)"
- id="g118">
- <polygon
- points="240,159.99999866485595 160,239.99999866485595 160,159.99999866485595 240,159.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon116" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-123.07692718505854,738.461555480957)"
- id="g124">
- <circle
- cx="184"
- cy="263.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle120" />
- <circle
- cx="216"
- cy="295.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle122" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-246.15386199951172,861.5384902954103)"
- id="g130">
- <circle
- cx="184"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle126" />
- <circle
- cx="216"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle128" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g136">
- <circle
- cx="184"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle132" />
- <circle
- cx="216"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle134" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g146">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g144">
- <polygon
- points="160,559.999998664856 176,479.999998664856 192,479.999998664856 176,559.999998664856 160,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon138" />
- <polygon
- points="192,559.999998664856 208,479.999998664856 224,479.999998664856 208,559.999998664856 192,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon140" />
- <polygon
- points="224,559.999998664856 240,479.999998664856 240,559.999998664856 224,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon142" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g150">
- <polygon
- points="320,-0.000001335144041902936 240,79.99999866485595 240,-0.000001335144041902936 320,-0.000001335144041902936"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon148" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,861.5384826660156,369.2307815551757)"
- id="g154">
- <polygon
- points="320,79.99999866485595 240,159.99999866485595 240,79.99999866485595 320,79.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon152" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,738.461555480957,-123.0769271850586)"
- id="g158">
- <polygon
- points="320,159.99999866485595 240,239.99999866485595 240,159.99999866485595 320,159.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon156" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g162">
- <polygon
- points="320,239.99999866485598 240,319.999998664856 240,239.99999866485598 320,239.99999866485598"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon160" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,861.5384826660156,1107.6923522949219)"
- id="g168">
- <circle
- cx="264"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle164" />
- <circle
- cx="296"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle166" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-246.15385437011707,1107.6923370361328)"
- id="g174">
- <circle
- cx="264"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle170" />
- <circle
- cx="296"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle172" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g184">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g182">
- <polygon
- points="240,559.999998664856 256,479.999998664856 272,479.999998664856 256,559.999998664856 240,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon176" />
- <polygon
- points="272,559.999998664856 288,479.999998664856 304,479.999998664856 288,559.999998664856 272,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon178" />
- <polygon
- points="304,559.999998664856 320,479.999998664856 320,559.999998664856 304,559.999998664856"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon180" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1107.6923522949219,123.0769230769228)"
- id="g188">
- <polygon
- points="400,-0.000001335144041902936 320,79.99999866485595 320,-0.000001335144041902936 400,-0.000001335144041902936"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon186" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g194">
- <circle
- cx="344"
- cy="103.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle190" />
- <circle
- cx="376"
- cy="135.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle192" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,246.15386199951183,861.5384902954102)"
- id="g198">
- <polygon
- points="400,159.99999866485595 320,239.99999866485595 320,159.99999866485595 400,159.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon196" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,984.6154174804688,-123.07693481445312)"
- id="g202">
- <polygon
- points="400,239.99999866485598 320,319.999998664856 320,239.99999866485598 400,239.99999866485598"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon200" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,1.1368683772161603e-13,1107.6923522949219)"
- id="g206">
- <polygon
- points="400,319.9999986648559 320,399.9999986648559 320,319.9999986648559 400,319.9999986648559"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon204" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1107.6923522949219,1353.84619140625)"
- id="g216">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g214">
- <polygon
- points="320,479.999998664856 336,399.999998664856 352,399.999998664856 336,479.999998664856 320,479.999998664856"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon208" />
- <polygon
- points="352,479.999998664856 368,399.999998664856 384,399.999998664856 368,479.999998664856 352,479.999998664856"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon210" />
- <polygon
- points="384,479.999998664856 400,399.999998664856 400,479.999998664856 384,479.999998664856"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon212" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1107.6923522949219,1600)"
- id="g222">
- <circle
- cx="344"
- cy="503.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle218" />
- <circle
- cx="376"
- cy="535.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle220" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g226">
- <polygon
- points="480,-0.000001335144041902936 400,79.99999866485595 400,-0.000001335144041902936 480,-0.000001335144041902936"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon224" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g236">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g234">
- <polygon
- points="400,159.99999866485595 416,79.99999866485595 432,79.99999866485595 416,159.99999866485595 400,159.99999866485595"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon228" />
- <polygon
- points="432,159.99999866485595 448,79.99999866485595 464,79.99999866485595 448,159.99999866485595 432,159.99999866485595"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon230" />
- <polygon
- points="464,159.99999866485595 480,79.99999866485595 480,159.99999866485595 464,159.99999866485595"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon232" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,369.2307815551759,984.6154098510742)"
- id="g240">
- <polygon
- points="480,159.99999866485595 400,239.99999866485595 400,159.99999866485595 480,159.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon238" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1107.6923370361328,-246.1538543701172)"
- id="g250">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g248">
- <polygon
- points="400,319.999998664856 416,239.99999866485598 432,239.99999866485598 416,319.999998664856 400,319.999998664856"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon242" />
- <polygon
- points="432,319.999998664856 448,239.99999866485598 464,239.99999866485598 448,319.999998664856 432,319.999998664856"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon244" />
- <polygon
- points="464,319.999998664856 480,239.99999866485598 480,319.999998664856 464,319.999998664856"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon246" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,123.07691955566418,1230.769271850586)"
- id="g256">
- <circle
- cx="424"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle252" />
- <circle
- cx="456"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle254" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.84619140625,0)"
- id="g262">
- <circle
- cx="424"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle258" />
- <circle
- cx="456"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle260" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1476.923095703125,123.076904296875)"
- id="g268">
- <circle
- cx="424"
- cy="503.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle264" />
- <circle
- cx="456"
- cy="535.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle266" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,738.4615384615387,861.5384615384614)"
- id="g278">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g276">
- <polygon
- points="480,79.99999866485595 496,-0.000001335144041902936 512,-0.000001335144041902936 496,79.99999866485595 480,79.99999866485595"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon270" />
- <polygon
- points="512,79.99999866485595 528,-0.000001335144041902936 544,-0.000001335144041902936 528,79.99999866485595 512,79.99999866485595"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon272" />
- <polygon
- points="544,79.99999866485595 560,-0.000001335144041902936 560,79.99999866485595 544,79.99999866485595"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon274" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,984.6153907775879,-615.3846092224121)"
- id="g284">
- <circle
- cx="504"
- cy="103.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle280" />
- <circle
- cx="536"
- cy="135.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle282" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1600,615.3846282958983)"
- id="g290">
- <circle
- cx="504"
- cy="183.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle286" />
- <circle
- cx="536"
- cy="215.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle288" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g294">
- <polygon
- points="560,239.99999866485598 480,319.999998664856 480,239.99999866485598 560,239.99999866485598"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon292" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.846176147461,-246.15382385253906)"
- id="g300">
- <circle
- cx="504"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle296" />
- <circle
- cx="536"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle298" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,123.07690429687511,1476.923095703125)"
- id="g306">
- <circle
- cx="504"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle302" />
- <circle
- cx="536"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle304" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g310">
- <polygon
- points="560,479.999998664856 480,559.999998664856 480,479.999998664856 560,479.999998664856"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon308" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g320">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g318">
- <polygon
- points="560,79.99999866485595 576,-0.000001335144041902936 592,-0.000001335144041902936 576,79.99999866485595 560,79.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon312" />
- <polygon
- points="592,79.99999866485595 608,-0.000001335144041902936 624,-0.000001335144041902936 608,79.99999866485595 592,79.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon314" />
- <polygon
- points="624,79.99999866485595 640,-0.000001335144041902936 640,79.99999866485595 624,79.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon316" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1846.1538696289062,369.23078155517567)"
- id="g324">
- <polygon
- points="640,79.99999866485595 560,159.99999866485595 560,79.99999866485595 640,79.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon322" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1846.1538696289062,615.3846282958983)"
- id="g330">
- <circle
- cx="584"
- cy="183.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle326" />
- <circle
- cx="616"
- cy="215.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle328" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,492.3076934814455,1353.846176147461)"
- id="g336">
- <circle
- cx="584"
- cy="263.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle332" />
- <circle
- cx="616"
- cy="295.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle334" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g342">
- <circle
- cx="584"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle338" />
- <circle
- cx="616"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle340" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1846.1538696289062,1353.84619140625)"
- id="g346">
- <polygon
- points="640,399.999998664856 560,479.999998664856 560,399.999998664856 640,399.999998664856"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon344" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1723.0769348144531,-123.07693481445312)"
- id="g350">
- <polygon
- points="640,479.999998664856 560,559.999998664856 560,479.999998664856 640,479.999998664856"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon348" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g356">
- <circle
- cx="664"
- cy="23.99999866485596"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle352" />
- <circle
- cx="696"
- cy="55.99999866485596"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle354" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,861.5385093688967,1230.7692909240723)"
- id="g362">
- <circle
- cx="664"
- cy="103.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle358" />
- <circle
- cx="696"
- cy="135.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle360" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.8462142944336,-738.4615859985352)"
- id="g372">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g370">
- <polygon
- points="640,239.99999866485595 656,159.99999866485595 672,159.99999866485595 656,239.99999866485595 640,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon364" />
- <polygon
- points="672,239.99999866485595 688,159.99999866485595 704,159.99999866485595 688,239.99999866485595 672,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon366" />
- <polygon
- points="704,239.99999866485595 720,159.99999866485595 720,239.99999866485595 704,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon368" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1476.9231414794922,-615.3846588134766)"
- id="g376">
- <polygon
- points="720,239.99999866485598 640,319.999998664856 640,239.99999866485598 720,239.99999866485598"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon374" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,492.30772399902366,1600.0000762939453)"
- id="g382">
- <circle
- cx="664"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle378" />
- <circle
- cx="696"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle380" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1723.0769958496094,-369.2308044433594)"
- id="g388">
- <circle
- cx="664"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle384" />
- <circle
- cx="696"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle386" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g394">
- <circle
- cx="664"
- cy="503.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle390" />
- <circle
- cx="696"
- cy="535.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle392" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,123.07692307692272)"
- id="g398">
- <polygon
- points="800,-0.000001335144041902936 720,79.99999866485595 720,-0.000001335144041902936 800,-0.000001335144041902936"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon396" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.8462257385254,-984.6154441833496)"
- id="g408">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g406">
- <polygon
- points="720,159.99999866485595 736,79.99999866485595 752,79.99999866485595 736,159.99999866485595 720,159.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon400" />
- <polygon
- points="752,159.99999866485595 768,79.99999866485595 784,79.99999866485595 768,159.99999866485595 752,159.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon402" />
- <polygon
- points="784,159.99999866485595 800,79.99999866485595 800,159.99999866485595 784,159.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon404" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,861.5385208129885,1476.9231491088867)"
- id="g412">
- <polygon
- points="800,159.99999866485595 720,239.99999866485595 720,159.99999866485595 800,159.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon410" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,861.5384826660154)"
- id="g422">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g420">
- <polygon
- points="720,319.999998664856 736,239.99999866485598 752,239.99999866485598 736,319.999998664856 720,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon414" />
- <polygon
- points="752,319.999998664856 768,239.99999866485598 784,239.99999866485598 768,319.999998664856 752,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon416" />
- <polygon
- points="784,319.999998664856 800,239.99999866485598 800,319.999998664856 784,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon418" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,1107.6923522949219)"
- id="g426">
- <polygon
- points="800,319.9999986648559 720,399.9999986648559 720,319.9999986648559 800,319.9999986648559"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon424" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,1353.84619140625)"
- id="g432">
- <circle
- cx="744"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle428" />
- <circle
- cx="776"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle430" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,1600)"
- id="g438">
- <circle
- cx="744"
- cy="503.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle434" />
- <circle
- cx="776"
- cy="535.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle436" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,1230.7692777193513,1353.846200796274)"
- id="g448">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g446">
- <polygon
- points="800,79.99999866485595 816,-0.000001335144041902936 832,-0.000001335144041902936 816,79.99999866485595 800,79.99999866485595"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon440" />
- <polygon
- points="832,79.99999866485595 848,-0.000001335144041902936 864,-0.000001335144041902936 848,79.99999866485595 832,79.99999866485595"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon442" />
- <polygon
- points="864,79.99999866485595 880,-0.000001335144041902936 880,79.99999866485595 864,79.99999866485595"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon444" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,369.2307815551756)"
- id="g452">
- <polygon
- points="880,79.99999866485595 800,159.99999866485595 800,79.99999866485595 880,79.99999866485595"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon450" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g462">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g460">
- <polygon
- points="800,239.99999866485595 816,159.99999866485595 832,159.99999866485595 816,239.99999866485595 800,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon454" />
- <polygon
- points="832,239.99999866485595 848,159.99999866485595 864,159.99999866485595 848,239.99999866485595 832,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon456" />
- <polygon
- points="864,239.99999866485595 880,159.99999866485595 880,239.99999866485595 864,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon458" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,861.5384826660154)"
- id="g472">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g470">
- <polygon
- points="800,319.999998664856 816,239.99999866485598 832,239.99999866485598 816,319.999998664856 800,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon464" />
- <polygon
- points="832,319.999998664856 848,239.99999866485598 864,239.99999866485598 848,319.999998664856 832,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon466" />
- <polygon
- points="864,319.999998664856 880,239.99999866485598 880,319.999998664856 864,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon468" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,1107.6923522949219)"
- id="g476">
- <polygon
- points="880,319.9999986648559 800,399.9999986648559 800,319.9999986648559 880,319.9999986648559"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon474" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1969.2308349609375,-615.3846435546875)"
- id="g482">
- <circle
- cx="824"
- cy="423.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle478" />
- <circle
- cx="856"
- cy="455.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle480" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,1600)"
- id="g486">
- <polygon
- points="880,479.999998664856 800,559.999998664856 800,479.999998664856 880,479.999998664856"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon484" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1476.923105093149,-1353.846182016226)"
- id="g490">
- <polygon
- points="960,-0.000001335144041902936 880,79.99999866485595 880,-0.000001335144041902936 960,-0.000001335144041902936"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon488" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g500">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g498">
- <polygon
- points="880,159.99999866485595 896,79.99999866485595 912,79.99999866485595 896,159.99999866485595 880,159.99999866485595"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon492" />
- <polygon
- points="912,159.99999866485595 928,79.99999866485595 944,79.99999866485595 928,159.99999866485595 912,159.99999866485595"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon494" />
- <polygon
- points="944,159.99999866485595 960,79.99999866485595 960,159.99999866485595 944,159.99999866485595"
- fill-opacity="0"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon496" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1723.0769577026367,-1107.6923294067383)"
- id="g510">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g508">
- <polygon
- points="880,239.99999866485595 896,159.99999866485595 912,159.99999866485595 896,239.99999866485595 880,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon502" />
- <polygon
- points="912,239.99999866485595 928,159.99999866485595 944,159.99999866485595 928,239.99999866485595 912,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon504" />
- <polygon
- points="944,239.99999866485595 960,159.99999866485595 960,239.99999866485595 944,239.99999866485595"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon506" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2830.769287109375,861.5384826660154)"
- id="g516">
- <circle
- cx="904"
- cy="263.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle512" />
- <circle
- cx="936"
- cy="295.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle514" />
- </g>
- <g
- class="tile"
- transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2830.769287109375,1107.6923522949216)"
- id="g520">
- <polygon
- points="960,319.9999986648559 880,399.9999986648559 880,319.9999986648559 960,319.9999986648559"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon518" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2092.3077392578125,-738.4615478515625)"
- id="g530">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g528">
- <polygon
- points="880,479.999998664856 896,399.999998664856 912,399.999998664856 896,479.999998664856 880,479.999998664856"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon522" />
- <polygon
- points="912,479.999998664856 928,399.999998664856 944,399.999998664856 928,479.999998664856 912,479.999998664856"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon524" />
- <polygon
- points="944,479.999998664856 960,399.999998664856 960,479.999998664856 944,479.999998664856"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon526" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2215.3846435546875,-615.3846435546875)"
- id="g536">
- <circle
- cx="904"
- cy="503.999998664856"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle532" />
- <circle
- cx="936"
- cy="535.999998664856"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle534" />
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1600.000009390024,-1476.923086313101)"
- id="g546">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g544">
- <polygon
- points="960,79.99999866485595 976,-0.000001335144041902936 992,-0.000001335144041902936 976,79.99999866485595 960,79.99999866485595"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon538" />
- <polygon
- points="992,79.99999866485595 1008,-0.000001335144041902936 1024,-0.000001335144041902936 1008,79.99999866485595 992,79.99999866485595"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon540" />
- <polygon
- points="1024,79.99999866485595 1040,-0.000001335144041902936 1040,79.99999866485595 1024,79.99999866485595"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon542" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g552">
- <circle
- cx="984"
- cy="103.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle548" />
- <circle
- cx="1016"
- cy="135.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle550" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g558">
- <circle
- cx="984"
- cy="183.99999866485595"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle554" />
- <circle
- cx="1016"
- cy="215.99999866485595"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#07c3f2"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#07c3f2"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle556" />
- </g>
- <g
- class="tile"
- transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,1107.692306518555,1969.2307891845703)"
- id="g568">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g566">
- <polygon
- points="960,319.999998664856 976,239.99999866485598 992,239.99999866485598 976,319.999998664856 960,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon560" />
- <polygon
- points="992,319.999998664856 1008,239.99999866485598 1024,239.99999866485598 1008,319.999998664856 992,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon562" />
- <polygon
- points="1024,319.999998664856 1040,239.99999866485598 1040,319.999998664856 1024,319.999998664856"
- fill-opacity="1"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon564" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2092.3077239990234,-984.6153717041016)"
- id="g574">
- <circle
- cx="984"
- cy="343.9999986648559"
- r="24"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle570" />
- <circle
- cx="1016"
- cy="375.9999986648559"
- r="8"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- fill-opacity="1"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="circle572" />
- </g>
- <g
- class="tile"
- transform="matrix(1,0,0,1,0,0)"
- id="g584">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g582">
- <polygon
- points="960,479.999998664856 976,399.999998664856 992,399.999998664856 976,479.999998664856 960,479.999998664856"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon576" />
- <polygon
- points="992,479.999998664856 1008,399.999998664856 1024,399.999998664856 1008,479.999998664856 992,479.999998664856"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon578" />
- <polygon
- points="1024,479.999998664856 1040,399.999998664856 1040,479.999998664856 1024,479.999998664856"
- fill-opacity="0"
- fill="#087cfa"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#087cfa"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon580" />
- </g>
- </g>
- <g
- class="tile"
- transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2338.4615478515625,-738.4615478515625)"
- id="g594">
- <g
- clip-path="none"
- transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
- id="g592">
- <polygon
- points="960,559.999998664856 976,479.999998664856 992,479.999998664856 976,559.999998664856 960,559.999998664856"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon586" />
- <polygon
- points="992,559.999998664856 1008,479.999998664856 1024,479.999998664856 1008,559.999998664856 992,559.999998664856"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon588" />
- <polygon
- points="1024,559.999998664856 1040,479.999998664856 1040,559.999998664856 1024,559.999998664856"
- fill-opacity="0"
- fill="#21d789"
- stroke-opacity="1"
- stroke-width="1"
- stroke="#21d789"
- opacity="1"
- stroke-linejoin="round"
- stroke-linecap="round"
- id="polygon590" />
- </g>
- </g>
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ width="1600"
+ height="770"
+ id="svg622"
+ sodipodi:docname="tiler.svg"
+ inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs626" />
+ <sodipodi:namedview
+ id="namedview624"
+ pagecolor="#ffffff"
+ bordercolor="#999999"
+ borderopacity="1"
+ inkscape:pageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.43798583"
+ inkscape:cx="778.56401"
+ inkscape:cy="374.44134"
+ inkscape:window-width="1600"
+ inkscape:window-height="845"
+ inkscape:window-x="0"
+ inkscape:window-y="26"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg622" />
+ <rect
+ width="1600"
+ height="770"
+ fill="#504b4b"
+ id="rect2"
+ style="fill:#064896;fill-opacity:1" />
+ <rect
+ width="1600"
+ height="770"
+ fill="#21d789"
+ opacity="0"
+ id="rect4" />
+ <g
+ id="g596">
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,123.07692131629346,-7.105427357601002e-15)"
+ id="g10">
+ <circle
+ cx="23.999998092651367"
+ cy="23.99999866485596"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle6" />
+ <circle
+ cx="56"
+ cy="55.99999866485596"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle8" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,246.1538523160491,123.07692923912667)"
+ id="g14">
+ <polygon
+ points="79.99999866485587,79.99999866485595 -0.0000013351441339182202,159.99999866485595 -0.0000013351441339182202,79.99999866485595 79.99999866485587,79.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon12" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,369.2307756864104,246.15385260948798)"
+ id="g24">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g22">
+ <polygon
+ points="-0.0000013351441339182202,239.99999866485595 15.999998664855866,159.99999866485595 31.999998664855866,159.99999866485595 15.999998664855866,239.99999866485595 -0.0000013351441339182202,239.99999866485595"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon16" />
+ <polygon
+ points="31.999998092651367,239.99999866485595 47.99999809265137,159.99999866485595 63.99999809265137,159.99999866485595 47.99999809265137,239.99999866485595 31.999998092651367,239.99999866485595"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon18" />
+ <polygon
+ points="64,239.99999866485595 80,159.99999866485595 80,239.99999866485595 64,239.99999866485595"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon20" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,123.07692131629352,861.5384826660156)"
+ id="g30">
+ <circle
+ cx="23.999998092651367"
+ cy="263.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle26" />
+ <circle
+ cx="56"
+ cy="295.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle28" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-492.30771460899973,615.3846376859223)"
+ id="g34">
+ <polygon
+ points="79.99999866485587,319.9999986648559 -0.0000013351441339182202,399.9999986648559 -0.0000013351441339182202,319.9999986648559 79.99999866485587,319.9999986648559"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon32" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,738.4615572415862,615.3846341646638)"
+ id="g38">
+ <polygon
+ points="79.99999866485587,399.999998664856 -0.0000013351441339182202,479.999998664856 -0.0000013351441339182202,399.999998664856 79.99999866485587,399.999998664856"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon36" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,123.07692307692251,1600)"
+ id="g48">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g46">
+ <polygon
+ points="-0.0000013351441339182202,559.999998664856 15.999998664855866,479.999998664856 31.999998664855866,479.999998664856 15.999998664855866,559.999998664856 -0.0000013351441339182202,559.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon40" />
+ <polygon
+ points="31.999998092651367,559.999998664856 47.99999809265137,479.999998664856 63.99999809265137,479.999998664856 47.99999809265137,559.999998664856 31.999998092651367,559.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon42" />
+ <polygon
+ points="64,559.999998664856 80,479.999998664856 80,559.999998664856 64,559.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon44" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,246.15385143573462,-123.07693011944116)"
+ id="g54">
+ <circle
+ cx="104"
+ cy="23.99999866485596"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle50" />
+ <circle
+ cx="136"
+ cy="55.99999866485596"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle52" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,369.2307815551758,0)"
+ id="g64">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g62">
+ <polygon
+ points="80,159.99999866485595 96,79.99999866485595 112,79.99999866485595 96,159.99999866485595 80,159.99999866485595"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon56" />
+ <polygon
+ points="112,159.99999866485595 128,79.99999866485595 144,79.99999866485595 128,159.99999866485595 112,159.99999866485595"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon58" />
+ <polygon
+ points="144,159.99999866485595 160,79.99999866485595 160,159.99999866485595 144,159.99999866485595"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon60" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,492.3077049255371,123.0769233703613)"
+ id="g70">
+ <circle
+ cx="104"
+ cy="183.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle66" />
+ <circle
+ cx="136"
+ cy="215.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle68" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-246.15385055541987,615.3846321105958)"
+ id="g80">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g78">
+ <polygon
+ points="80,319.999998664856 96,239.99999866485598 112,239.99999866485598 96,319.999998664856 80,319.999998664856"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon72" />
+ <polygon
+ points="112,319.999998664856 128,239.99999866485598 144,239.99999866485598 128,319.999998664856 112,319.999998664856"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon74" />
+ <polygon
+ points="144,319.999998664856 160,239.99999866485598 160,319.999998664856 144,319.999998664856"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon76" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-369.23078536987305,738.4615669250489)"
+ id="g84">
+ <polygon
+ points="160,319.9999986648559 80,399.9999986648559 80,319.9999986648559 160,319.9999986648559"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon82" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,369.2307815551759,1353.84619140625)"
+ id="g90">
+ <circle
+ cx="104"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle86" />
+ <circle
+ cx="136"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle88" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g100">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g98">
+ <polygon
+ points="80,559.999998664856 96,479.999998664856 112,479.999998664856 96,559.999998664856 80,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon92" />
+ <polygon
+ points="112,559.999998664856 128,479.999998664856 144,479.999998664856 128,559.999998664856 112,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon94" />
+ <polygon
+ points="144,559.999998664856 160,479.999998664856 160,559.999998664856 144,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon96" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,246.15385260948784,369.23077568641065)"
+ id="g104">
+ <polygon
+ points="240,-0.000001335144041902936 160,79.99999866485595 160,-0.000001335144041902936 240,-0.000001335144041902936"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon102" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,615.3846282958984,369.2307815551758)"
+ id="g114">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g112">
+ <polygon
+ points="160,159.99999866485595 176,79.99999866485595 192,79.99999866485595 176,159.99999866485595 160,159.99999866485595"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon106" />
+ <polygon
+ points="192,159.99999866485595 208,79.99999866485595 224,79.99999866485595 208,159.99999866485595 192,159.99999866485595"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon108" />
+ <polygon
+ points="224,159.99999866485595 240,79.99999866485595 240,159.99999866485595 224,159.99999866485595"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon110" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,5.684341886080802e-14,615.3846282958984)"
+ id="g118">
+ <polygon
+ points="240,159.99999866485595 160,239.99999866485595 160,159.99999866485595 240,159.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon116" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-123.07692718505854,738.461555480957)"
+ id="g124">
+ <circle
+ cx="184"
+ cy="263.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle120" />
+ <circle
+ cx="216"
+ cy="295.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle122" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-246.15386199951172,861.5384902954103)"
+ id="g130">
+ <circle
+ cx="184"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle126" />
+ <circle
+ cx="216"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle128" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g136">
+ <circle
+ cx="184"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle132" />
+ <circle
+ cx="216"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle134" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g146">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g144">
+ <polygon
+ points="160,559.999998664856 176,479.999998664856 192,479.999998664856 176,559.999998664856 160,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon138" />
+ <polygon
+ points="192,559.999998664856 208,479.999998664856 224,479.999998664856 208,559.999998664856 192,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon140" />
+ <polygon
+ points="224,559.999998664856 240,479.999998664856 240,559.999998664856 224,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon142" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g150">
+ <polygon
+ points="320,-0.000001335144041902936 240,79.99999866485595 240,-0.000001335144041902936 320,-0.000001335144041902936"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon148" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,861.5384826660156,369.2307815551757)"
+ id="g154">
+ <polygon
+ points="320,79.99999866485595 240,159.99999866485595 240,79.99999866485595 320,79.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon152" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,738.461555480957,-123.0769271850586)"
+ id="g158">
+ <polygon
+ points="320,159.99999866485595 240,239.99999866485595 240,159.99999866485595 320,159.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon156" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g162">
+ <polygon
+ points="320,239.99999866485598 240,319.999998664856 240,239.99999866485598 320,239.99999866485598"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon160" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,861.5384826660156,1107.6923522949219)"
+ id="g168">
+ <circle
+ cx="264"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle164" />
+ <circle
+ cx="296"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle166" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,-246.15385437011707,1107.6923370361328)"
+ id="g174">
+ <circle
+ cx="264"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle170" />
+ <circle
+ cx="296"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle172" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g184">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g182">
+ <polygon
+ points="240,559.999998664856 256,479.999998664856 272,479.999998664856 256,559.999998664856 240,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon176" />
+ <polygon
+ points="272,559.999998664856 288,479.999998664856 304,479.999998664856 288,559.999998664856 272,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon178" />
+ <polygon
+ points="304,559.999998664856 320,479.999998664856 320,559.999998664856 304,559.999998664856"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon180" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1107.6923522949219,123.0769230769228)"
+ id="g188">
+ <polygon
+ points="400,-0.000001335144041902936 320,79.99999866485595 320,-0.000001335144041902936 400,-0.000001335144041902936"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon186" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g194">
+ <circle
+ cx="344"
+ cy="103.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle190" />
+ <circle
+ cx="376"
+ cy="135.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle192" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,246.15386199951183,861.5384902954102)"
+ id="g198">
+ <polygon
+ points="400,159.99999866485595 320,239.99999866485595 320,159.99999866485595 400,159.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon196" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,984.6154174804688,-123.07693481445312)"
+ id="g202">
+ <polygon
+ points="400,239.99999866485598 320,319.999998664856 320,239.99999866485598 400,239.99999866485598"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon200" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,1.1368683772161603e-13,1107.6923522949219)"
+ id="g206">
+ <polygon
+ points="400,319.9999986648559 320,399.9999986648559 320,319.9999986648559 400,319.9999986648559"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon204" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1107.6923522949219,1353.84619140625)"
+ id="g216">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g214">
+ <polygon
+ points="320,479.999998664856 336,399.999998664856 352,399.999998664856 336,479.999998664856 320,479.999998664856"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon208" />
+ <polygon
+ points="352,479.999998664856 368,399.999998664856 384,399.999998664856 368,479.999998664856 352,479.999998664856"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon210" />
+ <polygon
+ points="384,479.999998664856 400,399.999998664856 400,479.999998664856 384,479.999998664856"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon212" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1107.6923522949219,1600)"
+ id="g222">
+ <circle
+ cx="344"
+ cy="503.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle218" />
+ <circle
+ cx="376"
+ cy="535.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle220" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g226">
+ <polygon
+ points="480,-0.000001335144041902936 400,79.99999866485595 400,-0.000001335144041902936 480,-0.000001335144041902936"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon224" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g236">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g234">
+ <polygon
+ points="400,159.99999866485595 416,79.99999866485595 432,79.99999866485595 416,159.99999866485595 400,159.99999866485595"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon228" />
+ <polygon
+ points="432,159.99999866485595 448,79.99999866485595 464,79.99999866485595 448,159.99999866485595 432,159.99999866485595"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon230" />
+ <polygon
+ points="464,159.99999866485595 480,79.99999866485595 480,159.99999866485595 464,159.99999866485595"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon232" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,369.2307815551759,984.6154098510742)"
+ id="g240">
+ <polygon
+ points="480,159.99999866485595 400,239.99999866485595 400,159.99999866485595 480,159.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon238" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1107.6923370361328,-246.1538543701172)"
+ id="g250">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g248">
+ <polygon
+ points="400,319.999998664856 416,239.99999866485598 432,239.99999866485598 416,319.999998664856 400,319.999998664856"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon242" />
+ <polygon
+ points="432,319.999998664856 448,239.99999866485598 464,239.99999866485598 448,319.999998664856 432,319.999998664856"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon244" />
+ <polygon
+ points="464,319.999998664856 480,239.99999866485598 480,319.999998664856 464,319.999998664856"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon246" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,123.07691955566418,1230.769271850586)"
+ id="g256">
+ <circle
+ cx="424"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle252" />
+ <circle
+ cx="456"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle254" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.84619140625,0)"
+ id="g262">
+ <circle
+ cx="424"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle258" />
+ <circle
+ cx="456"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle260" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1476.923095703125,123.076904296875)"
+ id="g268">
+ <circle
+ cx="424"
+ cy="503.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle264" />
+ <circle
+ cx="456"
+ cy="535.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle266" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,738.4615384615387,861.5384615384614)"
+ id="g278">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g276">
+ <polygon
+ points="480,79.99999866485595 496,-0.000001335144041902936 512,-0.000001335144041902936 496,79.99999866485595 480,79.99999866485595"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon270" />
+ <polygon
+ points="512,79.99999866485595 528,-0.000001335144041902936 544,-0.000001335144041902936 528,79.99999866485595 512,79.99999866485595"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon272" />
+ <polygon
+ points="544,79.99999866485595 560,-0.000001335144041902936 560,79.99999866485595 544,79.99999866485595"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon274" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,984.6153907775879,-615.3846092224121)"
+ id="g284">
+ <circle
+ cx="504"
+ cy="103.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle280" />
+ <circle
+ cx="536"
+ cy="135.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle282" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1600,615.3846282958983)"
+ id="g290">
+ <circle
+ cx="504"
+ cy="183.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle286" />
+ <circle
+ cx="536"
+ cy="215.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle288" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g294">
+ <polygon
+ points="560,239.99999866485598 480,319.999998664856 480,239.99999866485598 560,239.99999866485598"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon292" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.846176147461,-246.15382385253906)"
+ id="g300">
+ <circle
+ cx="504"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle296" />
+ <circle
+ cx="536"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle298" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,123.07690429687511,1476.923095703125)"
+ id="g306">
+ <circle
+ cx="504"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle302" />
+ <circle
+ cx="536"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle304" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g310">
+ <polygon
+ points="560,479.999998664856 480,559.999998664856 480,479.999998664856 560,479.999998664856"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon308" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g320">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g318">
+ <polygon
+ points="560,79.99999866485595 576,-0.000001335144041902936 592,-0.000001335144041902936 576,79.99999866485595 560,79.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon312" />
+ <polygon
+ points="592,79.99999866485595 608,-0.000001335144041902936 624,-0.000001335144041902936 608,79.99999866485595 592,79.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon314" />
+ <polygon
+ points="624,79.99999866485595 640,-0.000001335144041902936 640,79.99999866485595 624,79.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon316" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1846.1538696289062,369.23078155517567)"
+ id="g324">
+ <polygon
+ points="640,79.99999866485595 560,159.99999866485595 560,79.99999866485595 640,79.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon322" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1846.1538696289062,615.3846282958983)"
+ id="g330">
+ <circle
+ cx="584"
+ cy="183.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle326" />
+ <circle
+ cx="616"
+ cy="215.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle328" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,492.3076934814455,1353.846176147461)"
+ id="g336">
+ <circle
+ cx="584"
+ cy="263.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle332" />
+ <circle
+ cx="616"
+ cy="295.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle334" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g342">
+ <circle
+ cx="584"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle338" />
+ <circle
+ cx="616"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle340" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,1846.1538696289062,1353.84619140625)"
+ id="g346">
+ <polygon
+ points="640,399.999998664856 560,479.999998664856 560,399.999998664856 640,399.999998664856"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon344" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1723.0769348144531,-123.07693481445312)"
+ id="g350">
+ <polygon
+ points="640,479.999998664856 560,559.999998664856 560,479.999998664856 640,479.999998664856"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon348" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g356">
+ <circle
+ cx="664"
+ cy="23.99999866485596"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle352" />
+ <circle
+ cx="696"
+ cy="55.99999866485596"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle354" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,861.5385093688967,1230.7692909240723)"
+ id="g362">
+ <circle
+ cx="664"
+ cy="103.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle358" />
+ <circle
+ cx="696"
+ cy="135.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle360" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.8462142944336,-738.4615859985352)"
+ id="g372">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g370">
+ <polygon
+ points="640,239.99999866485595 656,159.99999866485595 672,159.99999866485595 656,239.99999866485595 640,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon364" />
+ <polygon
+ points="672,239.99999866485595 688,159.99999866485595 704,159.99999866485595 688,239.99999866485595 672,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon366" />
+ <polygon
+ points="704,239.99999866485595 720,159.99999866485595 720,239.99999866485595 704,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon368" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1476.9231414794922,-615.3846588134766)"
+ id="g376">
+ <polygon
+ points="720,239.99999866485598 640,319.999998664856 640,239.99999866485598 720,239.99999866485598"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon374" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,492.30772399902366,1600.0000762939453)"
+ id="g382">
+ <circle
+ cx="664"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle378" />
+ <circle
+ cx="696"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle380" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1723.0769958496094,-369.2308044433594)"
+ id="g388">
+ <circle
+ cx="664"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle384" />
+ <circle
+ cx="696"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle386" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g394">
+ <circle
+ cx="664"
+ cy="503.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle390" />
+ <circle
+ cx="696"
+ cy="535.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle392" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,123.07692307692272)"
+ id="g398">
+ <polygon
+ points="800,-0.000001335144041902936 720,79.99999866485595 720,-0.000001335144041902936 800,-0.000001335144041902936"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon396" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1353.8462257385254,-984.6154441833496)"
+ id="g408">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g406">
+ <polygon
+ points="720,159.99999866485595 736,79.99999866485595 752,79.99999866485595 736,159.99999866485595 720,159.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon400" />
+ <polygon
+ points="752,159.99999866485595 768,79.99999866485595 784,79.99999866485595 768,159.99999866485595 752,159.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon402" />
+ <polygon
+ points="784,159.99999866485595 800,79.99999866485595 800,159.99999866485595 784,159.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon404" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,861.5385208129885,1476.9231491088867)"
+ id="g412">
+ <polygon
+ points="800,159.99999866485595 720,239.99999866485595 720,159.99999866485595 800,159.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon410" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,861.5384826660154)"
+ id="g422">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g420">
+ <polygon
+ points="720,319.999998664856 736,239.99999866485598 752,239.99999866485598 736,319.999998664856 720,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon414" />
+ <polygon
+ points="752,319.999998664856 768,239.99999866485598 784,239.99999866485598 768,319.999998664856 752,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon416" />
+ <polygon
+ points="784,319.999998664856 800,239.99999866485598 800,319.999998664856 784,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon418" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,1107.6923522949219)"
+ id="g426">
+ <polygon
+ points="800,319.9999986648559 720,399.9999986648559 720,319.9999986648559 800,319.9999986648559"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon424" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,1353.84619140625)"
+ id="g432">
+ <circle
+ cx="744"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle428" />
+ <circle
+ cx="776"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle430" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2338.461669921875,1600)"
+ id="g438">
+ <circle
+ cx="744"
+ cy="503.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle434" />
+ <circle
+ cx="776"
+ cy="535.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle436" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,1230.7692777193513,1353.846200796274)"
+ id="g448">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g446">
+ <polygon
+ points="800,79.99999866485595 816,-0.000001335144041902936 832,-0.000001335144041902936 816,79.99999866485595 800,79.99999866485595"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon440" />
+ <polygon
+ points="832,79.99999866485595 848,-0.000001335144041902936 864,-0.000001335144041902936 848,79.99999866485595 832,79.99999866485595"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon442" />
+ <polygon
+ points="864,79.99999866485595 880,-0.000001335144041902936 880,79.99999866485595 864,79.99999866485595"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon444" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,369.2307815551756)"
+ id="g452">
+ <polygon
+ points="880,79.99999866485595 800,159.99999866485595 800,79.99999866485595 880,79.99999866485595"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon450" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g462">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g460">
+ <polygon
+ points="800,239.99999866485595 816,159.99999866485595 832,159.99999866485595 816,239.99999866485595 800,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon454" />
+ <polygon
+ points="832,239.99999866485595 848,159.99999866485595 864,159.99999866485595 848,239.99999866485595 832,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon456" />
+ <polygon
+ points="864,239.99999866485595 880,159.99999866485595 880,239.99999866485595 864,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon458" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,861.5384826660154)"
+ id="g472">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g470">
+ <polygon
+ points="800,319.999998664856 816,239.99999866485598 832,239.99999866485598 816,319.999998664856 800,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon464" />
+ <polygon
+ points="832,319.999998664856 848,239.99999866485598 864,239.99999866485598 848,319.999998664856 832,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon466" />
+ <polygon
+ points="864,319.999998664856 880,239.99999866485598 880,319.999998664856 864,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon468" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,1107.6923522949219)"
+ id="g476">
+ <polygon
+ points="880,319.9999986648559 800,399.9999986648559 800,319.9999986648559 880,319.9999986648559"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon474" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1969.2308349609375,-615.3846435546875)"
+ id="g482">
+ <circle
+ cx="824"
+ cy="423.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle478" />
+ <circle
+ cx="856"
+ cy="455.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle480" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2584.615478515625,1600)"
+ id="g486">
+ <polygon
+ points="880,479.999998664856 800,559.999998664856 800,479.999998664856 880,479.999998664856"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon484" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1476.923105093149,-1353.846182016226)"
+ id="g490">
+ <polygon
+ points="960,-0.000001335144041902936 880,79.99999866485595 880,-0.000001335144041902936 960,-0.000001335144041902936"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon488" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g500">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g498">
+ <polygon
+ points="880,159.99999866485595 896,79.99999866485595 912,79.99999866485595 896,159.99999866485595 880,159.99999866485595"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon492" />
+ <polygon
+ points="912,159.99999866485595 928,79.99999866485595 944,79.99999866485595 928,159.99999866485595 912,159.99999866485595"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon494" />
+ <polygon
+ points="944,159.99999866485595 960,79.99999866485595 960,159.99999866485595 944,159.99999866485595"
+ fill-opacity="0"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon496" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1723.0769577026367,-1107.6923294067383)"
+ id="g510">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g508">
+ <polygon
+ points="880,239.99999866485595 896,159.99999866485595 912,159.99999866485595 896,239.99999866485595 880,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon502" />
+ <polygon
+ points="912,239.99999866485595 928,159.99999866485595 944,159.99999866485595 928,239.99999866485595 912,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon504" />
+ <polygon
+ points="944,239.99999866485595 960,159.99999866485595 960,239.99999866485595 944,239.99999866485595"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon506" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2830.769287109375,861.5384826660154)"
+ id="g516">
+ <circle
+ cx="904"
+ cy="263.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle512" />
+ <circle
+ cx="936"
+ cy="295.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle514" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,2830.769287109375,1107.6923522949216)"
+ id="g520">
+ <polygon
+ points="960,319.9999986648559 880,399.9999986648559 880,319.9999986648559 960,319.9999986648559"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon518" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2092.3077392578125,-738.4615478515625)"
+ id="g530">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g528">
+ <polygon
+ points="880,479.999998664856 896,399.999998664856 912,399.999998664856 896,479.999998664856 880,479.999998664856"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon522" />
+ <polygon
+ points="912,479.999998664856 928,399.999998664856 944,399.999998664856 928,479.999998664856 912,479.999998664856"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon524" />
+ <polygon
+ points="944,479.999998664856 960,399.999998664856 960,479.999998664856 944,479.999998664856"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon526" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2215.3846435546875,-615.3846435546875)"
+ id="g536">
+ <circle
+ cx="904"
+ cy="503.999998664856"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle532" />
+ <circle
+ cx="936"
+ cy="535.999998664856"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle534" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,1600.000009390024,-1476.923086313101)"
+ id="g546">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g544">
+ <polygon
+ points="960,79.99999866485595 976,-0.000001335144041902936 992,-0.000001335144041902936 976,79.99999866485595 960,79.99999866485595"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon538" />
+ <polygon
+ points="992,79.99999866485595 1008,-0.000001335144041902936 1024,-0.000001335144041902936 1008,79.99999866485595 992,79.99999866485595"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon540" />
+ <polygon
+ points="1024,79.99999866485595 1040,-0.000001335144041902936 1040,79.99999866485595 1024,79.99999866485595"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon542" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g552">
+ <circle
+ cx="984"
+ cy="103.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle548" />
+ <circle
+ cx="1016"
+ cy="135.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle550" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g558">
+ <circle
+ cx="984"
+ cy="183.99999866485595"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle554" />
+ <circle
+ cx="1016"
+ cy="215.99999866485595"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#07c3f2"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#07c3f2"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle556" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,1107.692306518555,1969.2307891845703)"
+ id="g568">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g566">
+ <polygon
+ points="960,319.999998664856 976,239.99999866485598 992,239.99999866485598 976,319.999998664856 960,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon560" />
+ <polygon
+ points="992,319.999998664856 1008,239.99999866485598 1024,239.99999866485598 1008,319.999998664856 992,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon562" />
+ <polygon
+ points="1024,319.999998664856 1040,239.99999866485598 1040,319.999998664856 1024,319.999998664856"
+ fill-opacity="1"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon564" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2092.3077239990234,-984.6153717041016)"
+ id="g574">
+ <circle
+ cx="984"
+ cy="343.9999986648559"
+ r="24"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle570" />
+ <circle
+ cx="1016"
+ cy="375.9999986648559"
+ r="8"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ fill-opacity="1"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="circle572" />
+ </g>
+ <g
+ class="tile"
+ transform="matrix(1,0,0,1,0,0)"
+ id="g584">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g582">
+ <polygon
+ points="960,479.999998664856 976,399.999998664856 992,399.999998664856 976,479.999998664856 960,479.999998664856"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon576" />
+ <polygon
+ points="992,479.999998664856 1008,399.999998664856 1024,399.999998664856 1008,479.999998664856 992,479.999998664856"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon578" />
+ <polygon
+ points="1024,479.999998664856 1040,399.999998664856 1040,479.999998664856 1024,479.999998664856"
+ fill-opacity="0"
+ fill="#087cfa"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#087cfa"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon580" />
+ </g>
+ </g>
+ <g
+ class="tile"
+ transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,2338.4615478515625,-738.4615478515625)"
+ id="g594">
+ <g
+ clip-path="none"
+ transform="matrix(1.5384615384615385,0,0,1.5384615384615385,0,0)"
+ id="g592">
+ <polygon
+ points="960,559.999998664856 976,479.999998664856 992,479.999998664856 976,559.999998664856 960,559.999998664856"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon586" />
+ <polygon
+ points="992,559.999998664856 1008,479.999998664856 1024,479.999998664856 1008,559.999998664856 992,559.999998664856"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon588" />
+ <polygon
+ points="1024,559.999998664856 1040,479.999998664856 1040,559.999998664856 1024,559.999998664856"
+ fill-opacity="0"
+ fill="#21d789"
+ stroke-opacity="1"
+ stroke-width="1"
+ stroke="#21d789"
+ opacity="1"
+ stroke-linejoin="round"
+ stroke-linecap="round"
+ id="polygon590" />
+ </g>
+ </g>
+ </g>
+</svg>