Merge branch 'v2_incenter'
This commit is contained in:
commit
bf8ff5e506
|
@ -1,5 +1,15 @@
|
||||||
app_run_tree/
|
app_run_tree/
|
||||||
meta_run_tree/
|
meta_run_tree/
|
||||||
|
*.exe
|
||||||
|
*.pdb
|
||||||
|
*.o
|
||||||
process/
|
process/
|
||||||
reference/
|
reference/
|
||||||
working_data/
|
working_data/
|
||||||
|
nssm_log.log
|
||||||
|
sysroot/
|
||||||
|
*.DS_Store
|
||||||
|
*.vscode
|
||||||
|
*.vscode/*
|
||||||
|
*.dSYM
|
||||||
|
run_tree/data/live_data
|
||||||
|
|
|
@ -7,10 +7,14 @@ Building Lumenarium requires having MSVC installed (sorry, Windows only for now!
|
||||||
2. Run the appropriate build batch file
|
2. Run the appropriate build batch file
|
||||||
- for Windows: use `build\build_app_msvc_win32_debug.bat`
|
- for Windows: use `build\build_app_msvc_win32_debug.bat`
|
||||||
- other platforms coming soon
|
- other platforms coming soon
|
||||||
|
3. Build scripts will output executables into the app_run_tree directory, by platform
|
||||||
|
|
||||||
## Run Lumenarium
|
## Run Lumenarium
|
||||||
Windows - Debug
|
Windows - Debug
|
||||||
1. Just run `win32_msvc\debug\win32_foldhaus.exe`
|
1. Run `app_run_tree\win32_msvc\debug\win32_foldhaus.exe`
|
||||||
|
|
||||||
|
If you want to run in headless mode:
|
||||||
|
1. Run `app_run_tree\win32_msvc\debug\win32_foldhaus.exe -headless`
|
||||||
|
|
||||||
## Debug Lumenarium
|
## Debug Lumenarium
|
||||||
### Windows
|
### Windows
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Project Admin Stuff
|
||||||
|
|
||||||
|
## Priorities
|
||||||
|
|
||||||
|
1. Upgrade Lumenarium's plumbing
|
||||||
|
2. Begin work on Incenter
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
1. Upgrade Lumenarium's plumbing
|
||||||
|
x. switch over to compiling with clang & bash based build scripts
|
||||||
|
x. better platform layer separation
|
||||||
|
3. osx and webgl layers, possibly linux?
|
||||||
|
x. remove dll compiling, just build all in one go
|
||||||
|
5. improve ui
|
||||||
|
[ ] get widgets and widget ids working
|
||||||
|
- see a trick of fate
|
||||||
|
[ ] clip widgets to regions
|
||||||
|
[ ] text rendering
|
||||||
|
[ ] interaction
|
||||||
|
[ ] layout manager
|
||||||
|
- do layout the way youre doing styling - optional pointer to a struct
|
||||||
|
and fallback on some global default
|
||||||
|
|
||||||
|
2. Incenter
|
||||||
|
1. Sculpture generation from list of lat-long coordinates
|
||||||
|
2.
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "digital_fire";
|
||||||
|
layers_count: 3;
|
||||||
|
blocks_count: 4;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 10000;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "mask1";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "mask2";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "color";
|
||||||
|
blend: "Multiply";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 19;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_BulbMask";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 10000;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_Leafy";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 5156;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_Rainbow";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 5040;
|
||||||
|
max: 10000;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_Wavy";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,48 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "fishy_0";
|
||||||
|
layers_count: 3;
|
||||||
|
blocks_count: 3;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "Color";
|
||||||
|
blend: "Multiply";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_HueShift";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_StemSolid";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_VerticalLines";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,36 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "patchy_loading_bar_0";
|
||||||
|
layers_count: 2;
|
||||||
|
blocks_count: 2;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3350;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Multiply";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_Patchy";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_GrowFadeMask";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,28 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "primary_hue_0";
|
||||||
|
layers_count: 2;
|
||||||
|
blocks_count: 1;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 360;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 36000;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_PrimaryHue";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,32 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "rainbow";
|
||||||
|
layers_count: 3;
|
||||||
|
blocks_count: 1;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 36000;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "Mask";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "Color";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 36000;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_Rainbow";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,28 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "rainbow_loading_bar_0";
|
||||||
|
layers_count: 2;
|
||||||
|
blocks_count: 1;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 9000;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 9000;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_RainbowLoadingBar";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,36 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "wavy_0";
|
||||||
|
layers_count: 2;
|
||||||
|
blocks_count: 2;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 7200;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Overwrite";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "Color";
|
||||||
|
blend: "Multiply";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 7200;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_Wavy";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 78;
|
||||||
|
max: 3571;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_Leafy";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,36 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "voice_anim";
|
||||||
|
layers_count: 2;
|
||||||
|
blocks_count: 2;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "Base";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "Add In";
|
||||||
|
blend: "Overwrite";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_VoicePattern";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 3600;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_VoiceAddIns";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,88 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "awaken";
|
||||||
|
layers_count: 3;
|
||||||
|
blocks_count: 8;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 7200;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Add";
|
||||||
|
};
|
||||||
|
layer:{
|
||||||
|
name: "[New Layer]";
|
||||||
|
blend: "Multiply";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 1363;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_Leafy";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 1169;
|
||||||
|
max: 7200;
|
||||||
|
};
|
||||||
|
layer_index: 0;
|
||||||
|
animation_name: "Pattern_BulbMask";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 5525;
|
||||||
|
max: 7200;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_Wavy";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 2135;
|
||||||
|
max: 2555;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_None";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 2470;
|
||||||
|
max: 7200;
|
||||||
|
};
|
||||||
|
layer_index: 1;
|
||||||
|
animation_name: "Pattern_StemSolid";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 1917;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_Blue";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 1823;
|
||||||
|
max: 3803;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_RainbowLoadingBar";
|
||||||
|
};
|
||||||
|
block:{
|
||||||
|
frame_range:{
|
||||||
|
min: 3670;
|
||||||
|
max: 5720;
|
||||||
|
};
|
||||||
|
layer_index: 2;
|
||||||
|
animation_name: "Pattern_Rainbow";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,12 @@
|
||||||
|
lumenarium_animation_file;
|
||||||
|
animation_name: "off_anim";
|
||||||
|
layers_count: 0;
|
||||||
|
blocks_count: 0;
|
||||||
|
playable_range:{
|
||||||
|
min: 0;
|
||||||
|
max: 2;
|
||||||
|
};
|
||||||
|
layers:{
|
||||||
|
};
|
||||||
|
blocks:{
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
@echo off
|
||||||
|
build\build_app_msvc_win32_debug.bat
|
|
@ -0,0 +1,89 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
const IN_FILE_PATH_PRIMARY = "../run_tree/data/cities_final.json";
|
||||||
|
const IN_FILE_PATH_SECONDARY = "../run_tree/data/cities_secondary_final.json";
|
||||||
|
const OUT_FILE_PATH = "../src_v2/user_space/incenter_gen_cities.h"
|
||||||
|
|
||||||
|
function print_city_desc (city, prefix, dest, gets_own_universe)
|
||||||
|
{
|
||||||
|
const city_ascii = city.city_ascii
|
||||||
|
.toLowerCase()
|
||||||
|
.replaceAll(' ', '_')
|
||||||
|
.replaceAll('-', '_')
|
||||||
|
.replaceAll('\'', '')
|
||||||
|
.replaceAll('`', '');
|
||||||
|
|
||||||
|
const city_id = `${prefix}_${city_ascii}`;
|
||||||
|
const { lat, lng } = city;
|
||||||
|
|
||||||
|
dest.enum_out += ` ${city_id} = ${dest.enum_counter++},\n`;
|
||||||
|
|
||||||
|
const universe = gets_own_universe ? city_id : "incenter_secondary_city_universe";
|
||||||
|
|
||||||
|
dest.desc_out += ` [${city_id}] = {
|
||||||
|
.id = ${city_id},
|
||||||
|
.lat = ${lat},
|
||||||
|
.lon = ${lng},
|
||||||
|
.sacn_universe = ${universe},
|
||||||
|
},\n`;
|
||||||
|
|
||||||
|
dest.strings_out += ` [${city_id}] = "${city_id}",\n`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function main ()
|
||||||
|
{
|
||||||
|
const primary_file = fs.readFileSync(IN_FILE_PATH_PRIMARY, {});
|
||||||
|
const primary_json = JSON.parse(primary_file);
|
||||||
|
|
||||||
|
const secondary_file = fs.readFileSync(IN_FILE_PATH_SECONDARY, {});
|
||||||
|
const secondary_json = JSON.parse(secondary_file);
|
||||||
|
|
||||||
|
let out = "// NOTE: This file is autogenerated by csv_to_cstruct.js\n";
|
||||||
|
|
||||||
|
let enum_counter = 0;
|
||||||
|
let enum_out = "// NOTE: These are values for Incenter_City_Id\nenum {\n";
|
||||||
|
enum_out += ` city_black_rock = ${enum_counter++},\n`;
|
||||||
|
|
||||||
|
let desc_out = "global Incenter_City_Desc city_descs[] = {\n";
|
||||||
|
|
||||||
|
let strings_out = "global char* city_strings[] = {\n";
|
||||||
|
|
||||||
|
let dest = {
|
||||||
|
enum_counter,
|
||||||
|
enum_out,
|
||||||
|
desc_out,
|
||||||
|
strings_out,
|
||||||
|
};
|
||||||
|
|
||||||
|
primary_json.forEach((city) => {
|
||||||
|
print_city_desc(city, "city", dest, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add Black Rock City
|
||||||
|
dest.desc_out += `\n // Black Rock City\n [city_black_rock] = {
|
||||||
|
.id = city_black_rock,
|
||||||
|
.lat = -90.0f,
|
||||||
|
.lon = 0,
|
||||||
|
.sacn_universe = city_black_rock,
|
||||||
|
},\n`;
|
||||||
|
|
||||||
|
dest.strings_out += ` [city_black_rock] = "city_black_rock",\n`;
|
||||||
|
dest.enum_out += " city_count,\n";
|
||||||
|
dest.enum_out += " city_secondary_first = city_count + 1,\n";
|
||||||
|
|
||||||
|
secondary_json.forEach((city) => {
|
||||||
|
print_city_desc(city, "city_secondary", dest, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
dest.enum_out += " city_secondary_count,\n";
|
||||||
|
dest.enum_out += "};\n\n";
|
||||||
|
dest.desc_out += "};\n\n";
|
||||||
|
dest.strings_out += "};\n\n";
|
||||||
|
|
||||||
|
out += dest.enum_out;
|
||||||
|
out += dest.desc_out;
|
||||||
|
out += dest.strings_out;
|
||||||
|
fs.writeFileSync(OUT_FILE_PATH, out, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
|
@ -0,0 +1,9 @@
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_REL_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
|
$SCRIPT_REL_DIR/build_.sh debug osx arm64
|
||||||
|
# $SCRIPT_REL_DIR/build_.sh debug wasm intel
|
||||||
|
|
||||||
|
# pushd "run_tree/raspi/arm64/debug"
|
||||||
|
# clang -o lumenarium /home/pi/dev/Lumenarium/src_v2/platform/raspi/lumenarium_first_raspi.c -lm
|
||||||
|
# popd
|
|
@ -0,0 +1,378 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Ensure an error makes the script bail
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
print_usage () {
|
||||||
|
echo
|
||||||
|
echo Build Command Syntax:
|
||||||
|
echo " $0 [mode] [platform] [arch]"
|
||||||
|
echo
|
||||||
|
echo "Release Mode Options:"
|
||||||
|
echo " debug"
|
||||||
|
echo " prod"
|
||||||
|
echo
|
||||||
|
echo "Platform Options:"
|
||||||
|
echo " win32"
|
||||||
|
echo " osx"
|
||||||
|
echo " wasm"
|
||||||
|
echo " raspi"
|
||||||
|
echo
|
||||||
|
echo "Arch Options: (architecture)"
|
||||||
|
echo " intel (valid with Platform Win32 and OSX) (default)"
|
||||||
|
echo " arm64 (only valid for Platform OSX)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Arguments
|
||||||
|
MODE=$1
|
||||||
|
PLATFORM=$2
|
||||||
|
ARCH=$3
|
||||||
|
PACKAGE=$4
|
||||||
|
|
||||||
|
if [ "${MODE}" == "" ] | [ "${PLATFORM}" == "" ]
|
||||||
|
then
|
||||||
|
print_usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Default to Intel architecture if none provided
|
||||||
|
if [ "${ARCH}" == "" ]
|
||||||
|
then
|
||||||
|
ARCH="intel"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${ARCH}" != "intel" ] && [ "${ARCH}" != "arm64" ]
|
||||||
|
then
|
||||||
|
echo "Uknown target architecture: ${ARCH}"
|
||||||
|
print_usage
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Utilities
|
||||||
|
|
||||||
|
pushdir () {
|
||||||
|
command pushd "$@" > /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
popdir () {
|
||||||
|
command popd "$@" > /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
add_flag () {
|
||||||
|
local -n ref=$1
|
||||||
|
ref="$ref $2"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Getting Project Path
|
||||||
|
#
|
||||||
|
# Project is stored in PROJECT_PATH
|
||||||
|
|
||||||
|
SCRIPT_REL_DIR=$(dirname "${BASH_SOURCE[0]}")
|
||||||
|
pushdir $SCRIPT_REL_DIR
|
||||||
|
pushdir ..
|
||||||
|
PROJECT_PATH=$(pwd)
|
||||||
|
popdir
|
||||||
|
popdir
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Platform/Mode Specific Variables
|
||||||
|
|
||||||
|
# Compiler Selection
|
||||||
|
|
||||||
|
Compiler_win32="cl"
|
||||||
|
Compiler_osx="clang"
|
||||||
|
Compiler_raspi="clang"
|
||||||
|
WasiSdk="/c/drive/apps/wasi-sdk"
|
||||||
|
Compiler_wasm="$WasiSdk/bin/clang++"
|
||||||
|
Compiler_linux="clang++"
|
||||||
|
|
||||||
|
# Platform Entry Points
|
||||||
|
|
||||||
|
PlatformEntry_win32="src_v2/platform/win32/lumenarium_first_win32.cpp"
|
||||||
|
PlatformEntry_osx="src_v2/platform/osx/lumenarium_first_osx.c"
|
||||||
|
PlatformEntry_wasm="src_v2/platform/wasm/lumenarium_first_wasm.cpp"
|
||||||
|
PlatformEntry_linux="src_v2/platform/linux/lumenarium_first_linux.cpp"
|
||||||
|
PlatformEntry_raspi="src_v2/platform/raspi/lumenarium_first_raspi.c"
|
||||||
|
|
||||||
|
# Intermediate Outputs
|
||||||
|
|
||||||
|
CompilerOutput_win32="lumenarium.o"
|
||||||
|
CompilerOutput_osx="lumenarium"
|
||||||
|
CompilerOutput_wasm="lumenarium.wasm"
|
||||||
|
CompilerOutput_linux=""
|
||||||
|
CompilerOutput_raspi="lumenarium"
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
|
||||||
|
LinkerOutput_win32="lumenarium.exe"
|
||||||
|
LinkerOutput_osx="lumenarium"
|
||||||
|
LinkerOutput_wasm="lumenarium.wasm"
|
||||||
|
LinkerOutput_linux=""
|
||||||
|
LinkerOutput_raspi="lumenarium"
|
||||||
|
|
||||||
|
# Wasm Sys Root
|
||||||
|
WasmSysRoot="${PROJECT_PATH}/src_v2/platform/wasm/sysroot/"
|
||||||
|
|
||||||
|
# Compiler Flags
|
||||||
|
|
||||||
|
CompilerFlags_win32="-nologo"
|
||||||
|
CompilerFlags_win32+=" -FC" # display errors with full path
|
||||||
|
CompilerFlags_win32+=" -WX" # treat warnings as errors
|
||||||
|
CompilerFlags_win32+=" -W4" # output warning level
|
||||||
|
CompilerFlags_win32+=" -Z7" # generate C compatible debug info
|
||||||
|
# CompilerFlags_win32+="-Oi" # generate intrinsic functions
|
||||||
|
# CompilerFlags_win32+="-MTd" # create a debug multithreaded exe w/ Libcmtd.lib
|
||||||
|
# CompilerFlags_win32+="-fp:fast" # fast floating point model
|
||||||
|
CompilerFlags_win32+=" -wd4505" #
|
||||||
|
CompilerFlags_win32+=" -wd4100" #
|
||||||
|
CompilerFlags_win32+=" -wd4189" #
|
||||||
|
CompilerFlags_win32+=" -wd4702" #
|
||||||
|
CompilerFlags_win32+=" -wd4996" # _CRT_SECURE_NO_WARNINGS
|
||||||
|
|
||||||
|
CompilerFlags_osx=""
|
||||||
|
|
||||||
|
CompilerFlags_wasm=""
|
||||||
|
CompilerFlags_wasm+=" -Wno-writable-strings" #
|
||||||
|
CompilerFlags_wasm+=" --target=wasm32" #
|
||||||
|
CompilerFlags_wasm+=" -nostdlib" #
|
||||||
|
CompilerFlags_wasm+=" -Wl,--no-entry" #
|
||||||
|
CompilerFlags_wasm+=" -Wl,--allow-undefined" #
|
||||||
|
CompilerFlags_wasm+=" -Wl,--export-all" #
|
||||||
|
|
||||||
|
CompilerFlags_linux=" -pthread"
|
||||||
|
|
||||||
|
CompilerFlags_raspi=" -pthread" # "--target=arm-rpi-linux-gnueabihf" # "--target=arm-linux-gnueabihf" #target
|
||||||
|
CompilerFlags_raspi+=" -lm" # link with local system math libraries
|
||||||
|
|
||||||
|
|
||||||
|
CompilerFlags_DEBUG_win32=""
|
||||||
|
CompilerFlags_DEBUG_win32+=" -Od" #
|
||||||
|
CompilerFlags_DEBUG_win32+=" -Zi" #
|
||||||
|
CompilerFlags_DEBUG_win32+=" -DDEBUG" #
|
||||||
|
# add_flag CompilerFlags_DEBUG_win32 "-DPRINT_ASSERTS"
|
||||||
|
|
||||||
|
CompilerFlags_DEBUG="-O0"
|
||||||
|
CompilerFlags_DEBUG+=" -g" #
|
||||||
|
CompilerFlags_DEBUG+=" -DDEBUG" #
|
||||||
|
if [ "${PLATFORM}" != "raspi" ]
|
||||||
|
then
|
||||||
|
CompilerFlags_DEBUG+=" -fsanitize=address" #address sanitizer
|
||||||
|
fi
|
||||||
|
|
||||||
|
CompilerFlags_PROD=" -O3"
|
||||||
|
|
||||||
|
# Compiler flags that no matter what, we want to define
|
||||||
|
# for the most part these pass the build parameters into the executable
|
||||||
|
CompilerFlags_common=" -DPLATFORM_${PLATFORM}=1 -DMODE_${MODE}=1 -DARCH_${ARCH}=1"
|
||||||
|
|
||||||
|
# Linker Flags
|
||||||
|
|
||||||
|
LinkerFlags_win32=" -NOLOGO"
|
||||||
|
LinkerFlags_win32+=" -incremental:no" #
|
||||||
|
LinkerFlags_win32+=" -subsystem:windows" #
|
||||||
|
# add_flag LinkerFlags_win32 "-entry:WinMain" #
|
||||||
|
LinkerFlags_win32+=" -opt:ref" # eliminate functions that are never referenced
|
||||||
|
|
||||||
|
LinkerFlags_osx=""
|
||||||
|
|
||||||
|
LinkerFlags_wasm="--no-entry"
|
||||||
|
LinkerFlags_wasm+=" --export-dynamic" #
|
||||||
|
LinkerFlags_wasm+=" --unresolved-symbols=import-functions" #
|
||||||
|
|
||||||
|
LinkerFlags_linux=""
|
||||||
|
LinkerFlags_raspi="-fuse-ld=lld"
|
||||||
|
|
||||||
|
LinkerFlags_DEBUG="-debug"
|
||||||
|
LinkerFlags_PROD=""
|
||||||
|
|
||||||
|
# Linker Libs
|
||||||
|
|
||||||
|
LinkerLibs_win32="user32.lib kernel32.lib gdi32.lib opengl32.lib"
|
||||||
|
# winmm.lib gdi32.lib dsound.lib Ws2_32.lib Comdlg32.lib Winspool.lib"
|
||||||
|
|
||||||
|
LinkerLibs_osx="-framework OpenGL -framework Cocoa -framework IOKit ${PROJECT_PATH}/src_v2/libs/glfw_osx/lib-universal/libglfw3.a"
|
||||||
|
LinkerLibs_wasm=""
|
||||||
|
LinkerLibs_linux=""
|
||||||
|
LinkerLibs_raspi=""
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Varible Selection
|
||||||
|
|
||||||
|
# Select Platform Variables
|
||||||
|
|
||||||
|
if [ "${PLATFORM}" == "win32" ]
|
||||||
|
then
|
||||||
|
Compiler=$Compiler_win32
|
||||||
|
PlatformEntry=$PlatformEntry_win32
|
||||||
|
CompilerFlags=$CompilerFlags_win32
|
||||||
|
CompilerOutput=$CompilerOutput_win32
|
||||||
|
LinkerOutput=$LinkerOutput_win32
|
||||||
|
LinkerFlags=$LinkerFlags_win32
|
||||||
|
LinkerLibs=$LinkerLibs_win32
|
||||||
|
|
||||||
|
elif [ "${PLATFORM}" == "osx" ]
|
||||||
|
then
|
||||||
|
Compiler=$Compiler_osx
|
||||||
|
PlatformEntry=$PlatformEntry_osx
|
||||||
|
CompilerFlags=$CompilerFlags_osx
|
||||||
|
CompilerOutput=$CompilerOutput_osx
|
||||||
|
LinkerOutput=$LinkerOutput_osx
|
||||||
|
LinkerFlags=$LinkerFlags_osx
|
||||||
|
LinkerLibs=$LinkerLibs_osx
|
||||||
|
|
||||||
|
if [ "${ARCH}" == "arm64" ]
|
||||||
|
then
|
||||||
|
CompilerFlags="${CompilerFlags} -arch arm64"
|
||||||
|
elif [ "${ARCH}" == "intel" ]
|
||||||
|
then
|
||||||
|
CompilerFlags="${CompilerFlags} -arch x86_64"
|
||||||
|
else
|
||||||
|
echo "ERROR: Unrecognized Arch: ${ARCH}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [ "${PLATFORM}" == "wasm" ]
|
||||||
|
then
|
||||||
|
Compiler=$Compiler_wasm
|
||||||
|
PlatformEntry=$PlatformEntry_wasm
|
||||||
|
CompilerFlags=$CompilerFlags_wasm
|
||||||
|
CompilerOutput=$CompilerOutput_wasm
|
||||||
|
LinkerOutput=$LinkerOutput_wasm
|
||||||
|
LinkerFlags=$LinkerFlags_wasm
|
||||||
|
LinkerLibs=$LinkerLibs_wasm
|
||||||
|
|
||||||
|
elif [ "${PLATFORM}" == "linux" ]
|
||||||
|
then
|
||||||
|
Compiler=$Compiler_linux
|
||||||
|
PlatformEntry=$PlatformEntry_linux
|
||||||
|
CompilerFlags=$CompilerFlags_linux
|
||||||
|
CompilerOutput=$CompilerOutput_linux
|
||||||
|
LinkerOutput=$LinkerOutput_linux
|
||||||
|
LinkerFlags=$LinkerFlags_linux
|
||||||
|
LinkerLibs=$LinkerLibs_linux
|
||||||
|
|
||||||
|
elif [ "${PLATFORM}" == "raspi" ]
|
||||||
|
then
|
||||||
|
Compiler=$Compiler_raspi
|
||||||
|
PlatformEntry=$PlatformEntry_raspi
|
||||||
|
CompilerFlags=$CompilerFlags_raspi
|
||||||
|
CompilerOutput=$CompilerOutput_raspi
|
||||||
|
LinkerOutput=$LinkerOutput_raspi
|
||||||
|
LinkerFlags=$LinkerFlags_raspi
|
||||||
|
LinkerLibs=$LinkerLibs_raspi
|
||||||
|
else
|
||||||
|
echo "Attempting to build for an unknown platform: ${PLATFORM}"
|
||||||
|
print_usage
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Select Release Mode Variables
|
||||||
|
|
||||||
|
if [ "${MODE}" == "debug" ]
|
||||||
|
then
|
||||||
|
if [ $PLATFORM == "win32" ]
|
||||||
|
then
|
||||||
|
CompilerFlags="${CompilerFlags} ${CompilerFlags_DEBUG_win32}"
|
||||||
|
else
|
||||||
|
CompilerFlags="${CompilerFlags} ${CompilerFlags_DEBUG}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LinkerFlags="${LinkerFlags} ${LinkerFlags_DEBUG}"
|
||||||
|
|
||||||
|
elif [ "${MODE}" == "prod" ]
|
||||||
|
then
|
||||||
|
CompilerFlags="${CompilerFlags} ${CompilerFlags_PROD}"
|
||||||
|
LinkerFlags="${LinkerFlags} ${LinkerFlags_PROD}"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Attempting to build for an unknown release mode: ${MODE}"
|
||||||
|
print_usage
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Common Flags
|
||||||
|
CompilerFlags="${CompilerFlags} ${CompilerFlags_common}"
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Build Path Construction
|
||||||
|
#
|
||||||
|
# This determines where the generated executable will
|
||||||
|
# be located. In general, it can be found at
|
||||||
|
# project_path/run_tree/platform/arch/release_mode/lumenarium.exe
|
||||||
|
#
|
||||||
|
# This section also ensures that the path requested actually exists
|
||||||
|
|
||||||
|
BuildDir="${PROJECT_PATH}/run_tree/${PLATFORM}/${ARCH}/${MODE}"
|
||||||
|
EntryPath="${PROJECT_PATH}/${PlatformEntry}"
|
||||||
|
|
||||||
|
# Exception for wasm, which doesn't care about cpu architecture
|
||||||
|
if [ $PLATFORM == "wasm" ]
|
||||||
|
then
|
||||||
|
BuildDir="${PROJECT_PATH}/run_tree/${PLATFORM}/${MODE}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make the build directory,
|
||||||
|
# "-p" flag makes it make the entire tree, and not emit errors if it
|
||||||
|
# exists.
|
||||||
|
mkdir -p "${BuildDir}"
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Compilation
|
||||||
|
|
||||||
|
echo "Building To: ${BuildDir}/${LinkerOutput}"
|
||||||
|
echo
|
||||||
|
pushdir $BuildDir
|
||||||
|
|
||||||
|
echo "Cleaning: ${CompilerOutput} and ${LinkerOutput}"
|
||||||
|
rm -rf ${CompilerOutput} ${LinkerOutput}
|
||||||
|
|
||||||
|
echo "COMPILING..."
|
||||||
|
if [ $PLATFORM == "win32" ]
|
||||||
|
then
|
||||||
|
$Compiler \
|
||||||
|
$CompilerFlags \
|
||||||
|
$EntryPath \
|
||||||
|
-link \
|
||||||
|
$LinkerFlags \
|
||||||
|
$LinkerLibs \
|
||||||
|
-OUT:${LinkerOutput}
|
||||||
|
|
||||||
|
elif [ $PLATFORM == "wasm" ]
|
||||||
|
then
|
||||||
|
$Compiler \
|
||||||
|
$CompilerFlags \
|
||||||
|
-o $LinkerOutput \
|
||||||
|
$EntryPath
|
||||||
|
cp \
|
||||||
|
"${PROJECT_PATH}/src_v2/platform/wasm/lumenarium_wasm_imports.js" \
|
||||||
|
./lumenarium_wasm_imports.js
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# Preprocessing Steps
|
||||||
|
ConvertCsvEntry="${PROJECT_PATH}/src_v2/tools/convert_csv.c"
|
||||||
|
$Compiler \
|
||||||
|
-o convert_csv \
|
||||||
|
$CompilerFlags \
|
||||||
|
$ConvertCsvEntry \
|
||||||
|
$LinkerLibs
|
||||||
|
|
||||||
|
./convert_csv
|
||||||
|
|
||||||
|
echo "$Compiler -o $LinkerOutput $CompilerFlags $EntryPath $LinkerLibs"
|
||||||
|
$Compiler -o $LinkerOutput $CompilerFlags $EntryPath $LinkerLibs
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Finished..."
|
||||||
|
popdir
|
|
@ -8,7 +8,7 @@ call %MyPath%\setup_cl.bat
|
||||||
|
|
||||||
SET CommonCompilerFlags=-nologo -DDEBUG=1 -DPLATFORM_WINDOWS -FC -WX -W4 -Z7 -Oi -GR- -EHsc -EHa- -MTd -fp:fast -fp:except- -IC:\programs-dev\gs_libs\src
|
SET CommonCompilerFlags=-nologo -DDEBUG=1 -DPLATFORM_WINDOWS -FC -WX -W4 -Z7 -Oi -GR- -EHsc -EHa- -MTd -fp:fast -fp:except- -IC:\programs-dev\gs_libs\src
|
||||||
|
|
||||||
SET CommonCompilerFlags=-wd4127 -wd4702 -wd4101 -wd4505 -wd4100 -wd4189 -wd4244 -wd4201 -wd4996 -I%CommonLibs% -O2 %CommonCompilerFlags%
|
SET CommonCompilerFlags=-wd4127 -wd4702 -wd4101 -wd4505 -wd4100 -wd4189 -wd4244 -wd4201 -wd4996 -I%CommonLibs% -Od %CommonCompilerFlags%
|
||||||
|
|
||||||
SET CommonLinkerFlags= -opt:ref -incremental:no
|
SET CommonLinkerFlags= -opt:ref -incremental:no
|
||||||
|
|
||||||
|
@ -20,20 +20,27 @@ del *.pdb > NUL 2> NUL
|
||||||
|
|
||||||
echo WAITING FOR PDB TO WRITE > lock.tmp
|
echo WAITING FOR PDB TO WRITE > lock.tmp
|
||||||
|
|
||||||
cl %CommonCompilerFlags% %SourceCodePath%\foldhaus_app.cpp /Fefoldhaus.dll /LD /link %CommonLinkerFlags% %DLLExports%
|
cl %CommonCompilerFlags% %SourceCodePath%\foldhaus_app.cpp /Fefoldhaus.dll /LD /link %CommoLinkerFlags% %DLLExports%
|
||||||
SET LastError=%ERRORLEVEL%
|
SET LastError=%ERRORLEVEL%
|
||||||
|
|
||||||
del lock.tmp
|
del lock.tmp
|
||||||
|
|
||||||
cl %CommonCompilerFlags% %SourceCodePath%\platform_win32\win32_foldhaus.cpp /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib opengl32.lib dsound.lib Ws2_32.lib Comdlg32.lib
|
cl %CommonCompilerFlags% %SourceCodePath%\platform_win32\win32_foldhaus.cpp /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib opengl32.lib dsound.lib Ws2_32.lib Comdlg32.lib Winspool.lib
|
||||||
|
|
||||||
|
|
||||||
REM COMPILE UTILITY EXES
|
REM COMPILE UTILITY EXES
|
||||||
|
|
||||||
cl %CommonCompilerFlags% %ProjectDevPath%\src\serial_monitor\first.cpp /Feserial_monitor.exe /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib
|
cl %CommonCompilerFlags% %ProjectDevPath%\src\serial_monitor\first.cpp /Feserial_monitor.exe /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib Winspool.lib
|
||||||
|
|
||||||
cl %CommonCompilerFlags% %ProjectDevPath%\src\sculpture_gen\gen_blumen_lumen.cpp /Fegen_blumen_lumen.exe /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib
|
cl %CommonCompilerFlags% %ProjectDevPath%\src\sculpture_gen\gen_blumen_lumen.cpp /Fegen_blumen_lumen.exe /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib
|
||||||
|
|
||||||
|
REM COMPILE AND RUN TESTS
|
||||||
|
cl %CommonCompilerFlags% %ProjectDevPath%\src\tests\sanity_tests.cpp /Fesanity_tests.exe /link %CommonLinkerFlags% user32.lib winmm.lib gdi32.lib
|
||||||
|
|
||||||
|
ECHO SANITY TESTS BEGIN
|
||||||
|
sanity_tests.exe
|
||||||
|
ECHO SANITY TESTS END
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
call %MyPath%\_postbuild_win32.bat
|
call %MyPath%\_postbuild_win32.bat
|
|
@ -1,6 +1,7 @@
|
||||||
version(1);
|
version(1);
|
||||||
project_name = "main.exe";
|
project_name = "main.exe";
|
||||||
patterns = {
|
patterns = {
|
||||||
|
"*.js",
|
||||||
"*.c",
|
"*.c",
|
||||||
"*.cpp",
|
"*.cpp",
|
||||||
"*.h",
|
"*.h",
|
||||||
|
@ -13,7 +14,10 @@ blacklist_patterns = {
|
||||||
".*",
|
".*",
|
||||||
};
|
};
|
||||||
load_paths_base = {
|
load_paths_base = {
|
||||||
{ "src", .relative = true, .recursive = true, },
|
{ ".", .relative = true, .recursive = false, },
|
||||||
|
{ "build", .relative = true, .recursive = false, },
|
||||||
|
// { "src", .relative = true, .recursive = true, },
|
||||||
|
{ "src_v2", .relative = true, .recursive = true, },
|
||||||
{ "meta", .relative = true, .recursive = true, },
|
{ "meta", .relative = true, .recursive = true, },
|
||||||
{ "gs_libs", .relative = true, .recursive = true, },
|
{ "gs_libs", .relative = true, .recursive = true, },
|
||||||
};
|
};
|
||||||
|
@ -22,18 +26,24 @@ load_paths = {
|
||||||
{ load_paths_base, .os = "linux", },
|
{ load_paths_base, .os = "linux", },
|
||||||
{ load_paths_base, .os = "mac", },
|
{ load_paths_base, .os = "mac", },
|
||||||
};
|
};
|
||||||
|
enable_virtual_whitespace = true;
|
||||||
|
|
||||||
command_list = {
|
command_list = {
|
||||||
{ .name = "build_application",
|
{ .name = "build_application",
|
||||||
.out = "*app compilation*", .footer_panel = false, .save_dirty_files = true,
|
.out = "*compilation*", .footer_panel = false, .save_dirty_files = true,
|
||||||
.cmd = { { "build\build_app_msvc_win32_debug.bat" , .os = "win" },
|
.cmd = { { "build\build_app_msvc_win32_debug.bat" , .os = "win" },
|
||||||
{ "./build.sh", .os = "linux" },
|
{ "./build.sh", .os = "linux" },
|
||||||
{ "./build.sh", .os = "mac" }, }, },
|
{ "./build.sh", .os = "mac" }, }, },
|
||||||
{ .name = "build_meta",
|
{ .name = "build_meta",
|
||||||
.out = "*meta compilation*", .footer_panel = false, .save_dirty_files = true,
|
.out = "*compilation*", .footer_panel = true, .save_dirty_files = true,
|
||||||
.cmd = { { "build\build_meta_msvc_win32_debug.bat" , .os = "win" },
|
.cmd = { { "build\build_meta_msvc_win32_debug.bat" , .os = "win" },
|
||||||
{ "./build_meta.sh", .os = "linux" },
|
{ "./build_meta.sh", .os = "linux" },
|
||||||
{ "./build_meta.sh", .os = "mac" }, }, },
|
{ "./build_meta.sh", .os = "mac" }, }, },
|
||||||
|
{ .name = "build_v2",
|
||||||
|
.out = "*compilation*", .footer_panel = true, .save_dirty_files = true,
|
||||||
|
.cmd = { { "bash build\build.sh" , .os = "win" },
|
||||||
|
{ "build/build.sh", .os = "linux" },
|
||||||
|
{ "build/build.sh", .os = "mac" }, }, },
|
||||||
};
|
};
|
||||||
fkey_command[1] = "build_application";
|
fkey_command[1] = "build_v2";
|
||||||
fkey_command[2] = "build_meta";
|
fkey_command[2] = "build_meta";
|
||||||
|
|
|
@ -0,0 +1,613 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"city": "Bucharest",
|
||||||
|
"city_ascii": "Bucharest",
|
||||||
|
"lat": 44.4,
|
||||||
|
"lng": 26.0833,
|
||||||
|
"country": "Romania",
|
||||||
|
"iso2": "RO",
|
||||||
|
"iso3": "ROU",
|
||||||
|
"admin_name": "Bucureşti",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1883425,
|
||||||
|
"id": 1642414442
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Brisbane",
|
||||||
|
"city_ascii": "Brisbane",
|
||||||
|
"lat": -27.4678,
|
||||||
|
"lng": 153.0281,
|
||||||
|
"country": "Australia",
|
||||||
|
"iso2": "AU",
|
||||||
|
"iso3": "AUS",
|
||||||
|
"admin_name": "Queensland",
|
||||||
|
"capital": "admin",
|
||||||
|
"population": 2360241,
|
||||||
|
"id": 1036192929
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Chengdu",
|
||||||
|
"city_ascii": "Chengdu",
|
||||||
|
"lat": 30.66,
|
||||||
|
"lng": 104.0633,
|
||||||
|
"country": "China",
|
||||||
|
"iso2": "CN",
|
||||||
|
"iso3": "CHN",
|
||||||
|
"admin_name": "Sichuan",
|
||||||
|
"capital": "admin",
|
||||||
|
"population": 11920000,
|
||||||
|
"id": 1156421555
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "New Delhi",
|
||||||
|
"city_ascii": "New Delhi",
|
||||||
|
"lat": 28.6139,
|
||||||
|
"lng": 77.209,
|
||||||
|
"country": "India",
|
||||||
|
"iso2": "IN",
|
||||||
|
"iso3": "IND",
|
||||||
|
"admin_name": "Delhi",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 249998,
|
||||||
|
"id": 1356215164
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Paris",
|
||||||
|
"city_ascii": "Paris",
|
||||||
|
"lat": 48.8566,
|
||||||
|
"lng": 2.3522,
|
||||||
|
"country": "France",
|
||||||
|
"iso2": "FR",
|
||||||
|
"iso3": "FRA",
|
||||||
|
"admin_name": "Île-de-France",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 11027000,
|
||||||
|
"id": 1250015082
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "San Francisco",
|
||||||
|
"city_ascii": "San Francisco",
|
||||||
|
"lat": 37.7562,
|
||||||
|
"lng": -122.443,
|
||||||
|
"country": "United States",
|
||||||
|
"iso2": "US",
|
||||||
|
"iso3": "USA",
|
||||||
|
"admin_name": "California",
|
||||||
|
"capital": "",
|
||||||
|
"population": 3592294,
|
||||||
|
"id": 1840021543
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Denver",
|
||||||
|
"city_ascii": "Denver",
|
||||||
|
"lat": 39.7621,
|
||||||
|
"lng": -104.8759,
|
||||||
|
"country": "United States",
|
||||||
|
"iso2": "US",
|
||||||
|
"iso3": "USA",
|
||||||
|
"admin_name": "Colorado",
|
||||||
|
"capital": "admin",
|
||||||
|
"population": 2876625,
|
||||||
|
"id": 1840018789
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Ankara",
|
||||||
|
"city_ascii": "Ankara",
|
||||||
|
"lat": 39.93,
|
||||||
|
"lng": 32.85,
|
||||||
|
"country": "Turkey",
|
||||||
|
"iso2": "TR",
|
||||||
|
"iso3": "TUR",
|
||||||
|
"admin_name": "Ankara",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 77168,
|
||||||
|
"id": 1792572891
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Harare",
|
||||||
|
"city_ascii": "Harare",
|
||||||
|
"lat": -17.8292,
|
||||||
|
"lng": 31.0522,
|
||||||
|
"country": "Zimbabwe",
|
||||||
|
"iso2": "ZW",
|
||||||
|
"iso3": "ZWE",
|
||||||
|
"admin_name": "Harare",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 2150000,
|
||||||
|
"id": 1716196799
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Hanoi",
|
||||||
|
"city_ascii": "Hanoi",
|
||||||
|
"lat": 21.0245,
|
||||||
|
"lng": 105.8412,
|
||||||
|
"country": "Vietnam",
|
||||||
|
"iso2": "VN",
|
||||||
|
"iso3": "VNM",
|
||||||
|
"admin_name": "Hà Nội",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 8246600,
|
||||||
|
"id": 1704413791
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Washington",
|
||||||
|
"city_ascii": "Washington",
|
||||||
|
"lat": 38.9047,
|
||||||
|
"lng": -77.0163,
|
||||||
|
"country": "United States",
|
||||||
|
"iso2": "US",
|
||||||
|
"iso3": "USA",
|
||||||
|
"admin_name": "District of Columbia",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 5379184,
|
||||||
|
"id": 1840006060
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Bangkok",
|
||||||
|
"city_ascii": "Bangkok",
|
||||||
|
"lat": 13.75,
|
||||||
|
"lng": 100.5167,
|
||||||
|
"country": "Thailand",
|
||||||
|
"iso2": "TH",
|
||||||
|
"iso3": "THA",
|
||||||
|
"admin_name": "Krung Thep Maha Nakhon",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 17573000,
|
||||||
|
"id": 1764068610
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Tunis",
|
||||||
|
"city_ascii": "Tunis",
|
||||||
|
"lat": 36.8008,
|
||||||
|
"lng": 10.18,
|
||||||
|
"country": "Tunisia",
|
||||||
|
"iso2": "TN",
|
||||||
|
"iso3": "TUN",
|
||||||
|
"admin_name": "Tunis",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1056247,
|
||||||
|
"id": 1788742103
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Seoul",
|
||||||
|
"city_ascii": "Seoul",
|
||||||
|
"lat": 37.56,
|
||||||
|
"lng": 126.99,
|
||||||
|
"country": "South Korea",
|
||||||
|
"iso2": "KR",
|
||||||
|
"iso3": "KOR",
|
||||||
|
"admin_name": "Seoul",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 22394000,
|
||||||
|
"id": 1410836482
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Belgrade",
|
||||||
|
"city_ascii": "Belgrade",
|
||||||
|
"lat": 44.8167,
|
||||||
|
"lng": 20.4667,
|
||||||
|
"country": "Serbia",
|
||||||
|
"iso2": "RS",
|
||||||
|
"iso3": "SRB",
|
||||||
|
"admin_name": "Beograd",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1378682,
|
||||||
|
"id": 1688374696
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Moscow",
|
||||||
|
"city_ascii": "Moscow",
|
||||||
|
"lat": 55.7558,
|
||||||
|
"lng": 37.6178,
|
||||||
|
"country": "Russia",
|
||||||
|
"iso2": "RU",
|
||||||
|
"iso3": "RUS",
|
||||||
|
"admin_name": "Moskva",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 17693000,
|
||||||
|
"id": 1643318494
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Lima",
|
||||||
|
"city_ascii": "Lima",
|
||||||
|
"lat": -12.06,
|
||||||
|
"lng": -77.0375,
|
||||||
|
"country": "Peru",
|
||||||
|
"iso2": "PE",
|
||||||
|
"iso3": "PER",
|
||||||
|
"admin_name": "Lima",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 8992000,
|
||||||
|
"id": 1604728603
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Islamabad",
|
||||||
|
"city_ascii": "Islamabad",
|
||||||
|
"lat": 33.6989,
|
||||||
|
"lng": 73.0369,
|
||||||
|
"country": "Pakistan",
|
||||||
|
"iso2": "PK",
|
||||||
|
"iso3": "PAK",
|
||||||
|
"admin_name": "Islāmābād",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1014825,
|
||||||
|
"id": 1586306717
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Abuja",
|
||||||
|
"city_ascii": "Abuja",
|
||||||
|
"lat": 9.0556,
|
||||||
|
"lng": 7.4914,
|
||||||
|
"country": "Nigeria",
|
||||||
|
"iso2": "NG",
|
||||||
|
"iso3": "NGA",
|
||||||
|
"admin_name": "Federal Capital Territory",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1235880,
|
||||||
|
"id": 1566342270
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Managua",
|
||||||
|
"city_ascii": "Managua",
|
||||||
|
"lat": 12.15,
|
||||||
|
"lng": -86.2667,
|
||||||
|
"country": "Nicaragua",
|
||||||
|
"iso2": "NI",
|
||||||
|
"iso3": "NIC",
|
||||||
|
"admin_name": "Managua",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1028808,
|
||||||
|
"id": 1558296252
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Amsterdam",
|
||||||
|
"city_ascii": "Amsterdam",
|
||||||
|
"lat": 52.3667,
|
||||||
|
"lng": 4.8833,
|
||||||
|
"country": "Netherlands",
|
||||||
|
"iso2": "NL",
|
||||||
|
"iso3": "NLD",
|
||||||
|
"admin_name": "Noord-Holland",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 862965,
|
||||||
|
"id": 1528355309
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Rabat",
|
||||||
|
"city_ascii": "Rabat",
|
||||||
|
"lat": 34.0253,
|
||||||
|
"lng": -6.8361,
|
||||||
|
"country": "Morocco",
|
||||||
|
"iso2": "MA",
|
||||||
|
"iso3": "MAR",
|
||||||
|
"admin_name": "Rabat-Salé-Kénitra",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 572717,
|
||||||
|
"id": 1504023252
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Ulaanbaatar",
|
||||||
|
"city_ascii": "Ulaanbaatar",
|
||||||
|
"lat": 47.9214,
|
||||||
|
"lng": 106.9055,
|
||||||
|
"country": "Mongolia",
|
||||||
|
"iso2": "MN",
|
||||||
|
"iso3": "MNG",
|
||||||
|
"admin_name": "Ulaanbaatar",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1396288,
|
||||||
|
"id": 1496024767
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Mexico City",
|
||||||
|
"city_ascii": "Mexico City",
|
||||||
|
"lat": 19.4333,
|
||||||
|
"lng": -99.1333,
|
||||||
|
"country": "Mexico",
|
||||||
|
"iso2": "MX",
|
||||||
|
"iso3": "MEX",
|
||||||
|
"admin_name": "Ciudad de México",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 21505000,
|
||||||
|
"id": 1484247881
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Nairobi",
|
||||||
|
"city_ascii": "Nairobi",
|
||||||
|
"lat": -1.2864,
|
||||||
|
"lng": 36.8172,
|
||||||
|
"country": "Kenya",
|
||||||
|
"iso2": "KE",
|
||||||
|
"iso3": "KEN",
|
||||||
|
"admin_name": "Nairobi City",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 5545000,
|
||||||
|
"id": 1404000661
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Tokyo",
|
||||||
|
"city_ascii": "Tokyo",
|
||||||
|
"lat": 35.6839,
|
||||||
|
"lng": 139.7744,
|
||||||
|
"country": "Japan",
|
||||||
|
"iso2": "JP",
|
||||||
|
"iso3": "JPN",
|
||||||
|
"admin_name": "Tōkyō",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 39105000,
|
||||||
|
"id": 1392685764
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Baghdad",
|
||||||
|
"city_ascii": "Baghdad",
|
||||||
|
"lat": 33.35,
|
||||||
|
"lng": 44.4167,
|
||||||
|
"country": "Iraq",
|
||||||
|
"iso2": "IQ",
|
||||||
|
"iso3": "IRQ",
|
||||||
|
"admin_name": "Baghdād",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 6107000,
|
||||||
|
"id": 1368596238
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Tehran",
|
||||||
|
"city_ascii": "Tehran",
|
||||||
|
"lat": 35.7,
|
||||||
|
"lng": 51.4167,
|
||||||
|
"country": "Iran",
|
||||||
|
"iso2": "IR",
|
||||||
|
"iso3": "IRN",
|
||||||
|
"admin_name": "Tehrān",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 13819000,
|
||||||
|
"id": 1364305026
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Jakarta",
|
||||||
|
"city_ascii": "Jakarta",
|
||||||
|
"lat": -6.2146,
|
||||||
|
"lng": 106.8451,
|
||||||
|
"country": "Indonesia",
|
||||||
|
"iso2": "ID",
|
||||||
|
"iso3": "IDN",
|
||||||
|
"admin_name": "Jakarta",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 35362000,
|
||||||
|
"id": 1360771077
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Guatemala City",
|
||||||
|
"city_ascii": "Guatemala City",
|
||||||
|
"lat": 14.6099,
|
||||||
|
"lng": -90.5252,
|
||||||
|
"country": "Guatemala",
|
||||||
|
"iso2": "GT",
|
||||||
|
"iso3": "GTM",
|
||||||
|
"admin_name": "Guatemala",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 2934841,
|
||||||
|
"id": 1320197916
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Berlin",
|
||||||
|
"city_ascii": "Berlin",
|
||||||
|
"lat": 52.5167,
|
||||||
|
"lng": 13.3833,
|
||||||
|
"country": "Germany",
|
||||||
|
"iso2": "DE",
|
||||||
|
"iso3": "DEU",
|
||||||
|
"admin_name": "Berlin",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 3664088,
|
||||||
|
"id": 1276451290
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Addis Ababa",
|
||||||
|
"city_ascii": "Addis Ababa",
|
||||||
|
"lat": 9.0272,
|
||||||
|
"lng": 38.7369,
|
||||||
|
"country": "Ethiopia",
|
||||||
|
"iso2": "ET",
|
||||||
|
"iso3": "ETH",
|
||||||
|
"admin_name": "Ādīs Ābeba",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 3041002,
|
||||||
|
"id": 1231824991
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Cairo",
|
||||||
|
"city_ascii": "Cairo",
|
||||||
|
"lat": 30.0444,
|
||||||
|
"lng": 31.2358,
|
||||||
|
"country": "Egypt",
|
||||||
|
"iso2": "EG",
|
||||||
|
"iso3": "EGY",
|
||||||
|
"admin_name": "Al Qāhirah",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 19787000,
|
||||||
|
"id": 1818253931
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Quito",
|
||||||
|
"city_ascii": "Quito",
|
||||||
|
"lat": -0.22,
|
||||||
|
"lng": -78.5125,
|
||||||
|
"country": "Ecuador",
|
||||||
|
"iso2": "EC",
|
||||||
|
"iso3": "ECU",
|
||||||
|
"admin_name": "Pichincha",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 2011388,
|
||||||
|
"id": 1218441993
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Bogotá",
|
||||||
|
"city_ascii": "Bogota",
|
||||||
|
"lat": 4.6126,
|
||||||
|
"lng": -74.0705,
|
||||||
|
"country": "Colombia",
|
||||||
|
"iso2": "CO",
|
||||||
|
"iso3": "COL",
|
||||||
|
"admin_name": "Bogotá",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 7743955,
|
||||||
|
"id": 1170483426
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Beijing",
|
||||||
|
"city_ascii": "Beijing",
|
||||||
|
"lat": 39.904,
|
||||||
|
"lng": 116.4075,
|
||||||
|
"country": "China",
|
||||||
|
"iso2": "CN",
|
||||||
|
"iso3": "CHN",
|
||||||
|
"admin_name": "Beijing",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 19437000,
|
||||||
|
"id": 1156228865
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Accra",
|
||||||
|
"city_ascii": "Accra",
|
||||||
|
"lat": 5.6037,
|
||||||
|
"lng": -0.187,
|
||||||
|
"country": "Ghana",
|
||||||
|
"iso2": "GH",
|
||||||
|
"iso3": "GHA",
|
||||||
|
"admin_name": "Greater Accra",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 2291352,
|
||||||
|
"id": 1288299415
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Ottawa",
|
||||||
|
"city_ascii": "Ottawa",
|
||||||
|
"lat": 45.4247,
|
||||||
|
"lng": -75.695,
|
||||||
|
"country": "Canada",
|
||||||
|
"iso2": "CA",
|
||||||
|
"iso3": "CAN",
|
||||||
|
"admin_name": "Ontario",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 989567,
|
||||||
|
"id": 1124399363
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Brasília",
|
||||||
|
"city_ascii": "Brasilia",
|
||||||
|
"lat": -15.7939,
|
||||||
|
"lng": -47.8828,
|
||||||
|
"country": "Brazil",
|
||||||
|
"iso2": "BR",
|
||||||
|
"iso3": "BRA",
|
||||||
|
"admin_name": "Distrito Federal",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 3015268,
|
||||||
|
"id": 1076144436
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "La Paz",
|
||||||
|
"city_ascii": "La Paz",
|
||||||
|
"lat": -16.4942,
|
||||||
|
"lng": -68.1475,
|
||||||
|
"country": "Bolivia",
|
||||||
|
"iso2": "BO",
|
||||||
|
"iso3": "BOL",
|
||||||
|
"admin_name": "La Paz",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 2867504,
|
||||||
|
"id": 1068000064
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Dhaka",
|
||||||
|
"city_ascii": "Dhaka",
|
||||||
|
"lat": 23.7289,
|
||||||
|
"lng": 90.3944,
|
||||||
|
"country": "Bangladesh",
|
||||||
|
"iso2": "BD",
|
||||||
|
"iso3": "BGD",
|
||||||
|
"admin_name": "Dhaka",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 16839000,
|
||||||
|
"id": 1050529279
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Yerevan",
|
||||||
|
"city_ascii": "Yerevan",
|
||||||
|
"lat": 40.1814,
|
||||||
|
"lng": 44.5144,
|
||||||
|
"country": "Armenia",
|
||||||
|
"iso2": "AM",
|
||||||
|
"iso3": "ARM",
|
||||||
|
"admin_name": "Yerevan",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 1075800,
|
||||||
|
"id": 1051074169
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Chicago",
|
||||||
|
"city_ascii": "Chicago",
|
||||||
|
"lat": 41.8373,
|
||||||
|
"lng": -87.6862,
|
||||||
|
"country": "United States",
|
||||||
|
"iso2": "US",
|
||||||
|
"iso3": "USA",
|
||||||
|
"admin_name": "Illinois",
|
||||||
|
"capital": "",
|
||||||
|
"population": 8604203,
|
||||||
|
"id": 1840000494
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Kyiv",
|
||||||
|
"city_ascii": "Kyiv",
|
||||||
|
"lat": 50.45,
|
||||||
|
"lng": 30.5236,
|
||||||
|
"country": "Ukraine",
|
||||||
|
"iso2": "UA",
|
||||||
|
"iso3": "UKR",
|
||||||
|
"admin_name": "Kyyiv, Misto",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 2963199,
|
||||||
|
"id": 1804382913
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Dubai",
|
||||||
|
"city_ascii": "Dubai",
|
||||||
|
"lat": 25.2697,
|
||||||
|
"lng": 55.3094,
|
||||||
|
"country": "United Arab Emirates",
|
||||||
|
"iso2": "AE",
|
||||||
|
"iso3": "ARE",
|
||||||
|
"admin_name": "Dubayy",
|
||||||
|
"capital": "admin",
|
||||||
|
"population": 2502715,
|
||||||
|
"id": 1784736618
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Mumbai",
|
||||||
|
"city_ascii": "Mumbai",
|
||||||
|
"lat": 19.0758,
|
||||||
|
"lng": 72.8775,
|
||||||
|
"country": "India",
|
||||||
|
"iso2": "IN",
|
||||||
|
"iso3": "IND",
|
||||||
|
"admin_name": "Mahārāshtra",
|
||||||
|
"capital": "admin",
|
||||||
|
"population": 22186000,
|
||||||
|
"id": 1356226629
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city": "Madrid",
|
||||||
|
"city_ascii": "Madrid",
|
||||||
|
"lat": 40.4167,
|
||||||
|
"lng": -3.7167,
|
||||||
|
"country": "Spain",
|
||||||
|
"iso2": "ES",
|
||||||
|
"iso3": "ESP",
|
||||||
|
"admin_name": "Madrid",
|
||||||
|
"capital": "primary",
|
||||||
|
"population": 6006000,
|
||||||
|
"id": 1724616994
|
||||||
|
}
|
||||||
|
]
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_1_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.7211155378486056, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.6813559322033899, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.5084745762711864, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.6507936507936508, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.5611355457816873, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.7130232558139535, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.7130232558139535, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.8550185873605948, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.5, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.3597560975609756, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.7130232558139535, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.5555555555555556, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.5942028985507246, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.3597560975609756, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.632, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.5081967213114754, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.5, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.6526315789473685, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.8888888888888888, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.6774193548387096, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.6104783599088838, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.4523809523809524, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.5084745762711864, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.5747718230751229, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.5, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.3949372298826919, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.7, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.7, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.45276162790697677, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.6774193548387096, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.6714178544636159, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.5, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.5942028985507246, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.48148148148148145, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.5698324022346368, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.5084745762711864, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.5, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.7213114754098361, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.7555555555555555, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.7555555555555555, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.7348066298342542, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.8550185873605948, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.7130232558139535, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.46875, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.7, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.6507936507936508, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.5716845878136201, },
|
||||||
|
};
|
||||||
|
global u32 question_1_len = sizeof(question_1_data) / sizeof(question_1_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_10_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.7907915993537964, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.9196675900277008, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.8922570016474465, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.8931259407927747, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.8915187376725838, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.8767605633802817, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.8822393822393823, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.8529289572081429, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.5197693574958814, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.9733333333333334, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.885, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.8386880856760375, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.7669983416252073, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.8907630522088353, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.8032629558541267, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.8402501421262081, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.8164874551971326, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.8931259407927747, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.7283049472830495, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.8558333333333333, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.9145383104125737, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.8283333333333334, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.6910866910866911, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.9178632969557725, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.8371907422186752, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.9025679758308157, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.7039864291772688, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.6967267869071476, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.939043451078462, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.9072416598860863, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.8915187376725838, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.8747967479674796, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.7172643869891576, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.8932203389830509, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.8940789473684211, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.8922570016474465, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.8371907422186752, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.8638626182180189, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.9008595988538682, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.7321688500727802, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.9066666666666666, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.8845836768342952, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.8559870550161812, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.8059105431309904, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.7172643869891576, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.8931259407927747, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.8915187376725838, },
|
||||||
|
};
|
||||||
|
global u32 question_10_len = sizeof(question_10_data) / sizeof(question_10_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_11_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.7527472527472527, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.7346938775510204, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.75, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.8222222222222222, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.5690460306871248, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.7624035281146637, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.7624035281146637, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.6437054631828979, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.8, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.8148148148148148, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.7624035281146637, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.5384615384615384, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.8431372549019608, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.8148148148148148, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.6818181818181818, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.4065934065934066, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.8235294117647058, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.8105263157894737, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.7142857142857143, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.8571428571428571, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.7003676470588235, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.7058823529411765, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.75, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.7737030411449016, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.8, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.4397765363128492, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.7, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.7, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.8859470468431772, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.8571428571428571, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.6584922797456857, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.8, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.8431372549019608, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.8181818181818182, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.7089552238805971, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.75, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.8, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.6509695290858726, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.8969465648854962, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.8969465648854962, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.8523206751054853, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.6437054631828979, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.7624035281146637, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.8181818181818182, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.7, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.8222222222222222, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.7440191387559809, },
|
||||||
|
};
|
||||||
|
global u32 question_11_len = sizeof(question_11_data) / sizeof(question_11_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_12_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.4789180588703262, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.827357970215113, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.600926538716082, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.42355889724310775, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.8413114754098361, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.6807511737089202, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.6730769230769231, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.6662309368191721, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.7267489711934156, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.4633333333333333, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.7408637873754153, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.522, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.8239731768650461, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.5084337349397591, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.6408518877057116, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.5629834254143646, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.6192857142857143, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.42355889724310775, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.6176232821341956, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.7441666666666666, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.8019323671497585, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.5075, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.4340659340659341, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.6657093624353819, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.5442338072669827, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.6260162601626016, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.7216666666666667, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.40493662441627754, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.470625, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.7831558567279767, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.8413114754098361, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.45934959349593496, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.7814845704753962, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.6958333333333333, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.7730263157894737, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.600926538716082, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.5442338072669827, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.7073170731707317, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.6152099886492622, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.7289946576007771, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.7075, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.6059113300492611, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.6844660194174758, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.4786656322730799, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.7814845704753962, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.42355889724310775, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.8413114754098361, },
|
||||||
|
};
|
||||||
|
global u32 question_12_len = sizeof(question_12_data) / sizeof(question_12_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_13_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.08285385500575373, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.09841628959276018, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.08166666666666667, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.20042987641053198, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.031207598371777476, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.1670616113744076, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.15145631067961166, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.14479830148619957, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.3549459684123026, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.08166666666666667, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.14214046822742474, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.18401611820013433, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.28439597315436244, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.157429718875502, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.0691333982473223, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.07294264339152119, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.18324607329842932, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.20042987641053198, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.18892508143322476, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.11083333333333334, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.09620098039215687, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.5508333333333333, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.2658924205378973, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.3469387755102041, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.37571312143439284, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.0972644376899696, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.16893039049235994, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.07811447811447811, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.0608640807316304, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.322213181448332, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.031207598371777476, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.15637860082304528, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.16893039049235994, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.14830875975715524, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.13355263157894737, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.08166666666666667, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.37571312143439284, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.14758586361373818, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.20054384772263767, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.14959016393442623, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.13162544169611307, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.03935599284436494, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.1563517915309446, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.055281342546890426, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.16893039049235994, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.20042987641053198, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.031207598371777476, },
|
||||||
|
};
|
||||||
|
global u32 question_13_len = sizeof(question_13_data) / sizeof(question_13_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_14_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.6968174204355109, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.4254484304932735, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.15694768410529825, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.37493632195618953, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.31785003317850036, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.6515513126491647, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.700587084148728, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.39265898420828, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.76814011676397, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.145, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.6761744966442953, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.529689608636977, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.7771236333052985, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.09799196787148594, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.6625891946992865, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.5068903535050928, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.7326086956521739, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.37493632195618953, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.6726238830219334, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.6166666666666667, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.37310308738880166, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.5525, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.43933823529411764, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.6502890173410405, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.5854632587859425, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.4491803278688525, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.74, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.48944860449285227, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.3997445721583653, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.7050538525269263, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.31785003317850036, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.6325350949628407, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.74, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.5373635600335852, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.7315789473684211, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.15694768410529825, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.5854632587859425, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.2929318068690891, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.8714953271028038, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.48205383848454636, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.215, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.7328308207705193, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.6830870279146142, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.7300813008130081, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.74, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.37493632195618953, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.31785003317850036, },
|
||||||
|
};
|
||||||
|
global u32 question_14_len = sizeof(question_14_data) / sizeof(question_14_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_15_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.8681318681318682, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.842741935483871, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.75, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.8444444444444444, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.7975257342525262, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.8898026315789473, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.8898026315789473, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.8466111771700356, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 1, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.8507462686567164, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.8898026315789473, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.7692307692307693, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.8653846153846154, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.8507462686567164, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.8838383838383839, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.7934782608695652, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.9705882352941176, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.8121827411167513, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.8571428571428571, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 1, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.9004566210045662, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.7352941176470589, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.75, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.8772086117297698, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 1, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.41568278012920473, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.8, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.8, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.8562753036437247, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 1, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.8590785907859079, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 1, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.8653846153846154, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.8695652173913043, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.8656716417910447, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.75, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 1, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.8402203856749312, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.8950381679389313, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.8950381679389313, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.9041666666666667, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.8466111771700356, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.8898026315789473, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.8636363636363636, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.8, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.8444444444444444, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.8524590163934426, },
|
||||||
|
};
|
||||||
|
global u32 question_15_len = sizeof(question_15_data) / sizeof(question_15_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_16_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.6252144082332761, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.21300448430493274, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.8102633355840648, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.7666836474783495, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.1596806387225549, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.23954372623574144, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.21940928270042195, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.8744531933508312, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.9385004212299916, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.8875, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.2643884892086331, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.6720647773279352, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.8076580587711487, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.8481927710843373, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.763023493360572, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.738166566806471, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.44288872512896094, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.7666836474783495, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.9618196588139724, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.4816666666666667, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.27867095391211144, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.91, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.7175245098039216, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.3929398148148148, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.8004926108374384, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.5046491969568893, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.9116666666666666, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 1, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.9195402298850575, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.6255178127589064, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.1596806387225549, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.8911055694098088, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.9116666666666666, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.4869857262804366, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.4, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.8102633355840648, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.8004926108374384, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.20034843205574912, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.1588785046728972, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.43232438606510565, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.9798826487845766, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.8872881355932203, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.2586805555555556, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.7552447552447552, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.9116666666666666, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.7666836474783495, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.1596806387225549, },
|
||||||
|
};
|
||||||
|
global u32 question_16_len = sizeof(question_16_data) / sizeof(question_16_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_17_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.3517305893358279, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.7251693002257337, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.6752336448598131, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.28718882817243474, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.8590694538098449, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.7202881152460985, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.7637795275590551, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.22046174739701221, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.4797297297297297, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.08583333333333333, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.7687074829931972, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.39174560216508797, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.18357933579335795, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.242570281124498, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.23599137931034483, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.3582286847323199, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.21016166281755197, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.28718882817243474, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.4920502092050209, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.3875, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.5708571428571428, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.28583333333333333, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.5067401960784313, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.1445221445221445, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.5110356536502547, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.6290018832391714, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.475736568457539, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.7332421340629275, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.3570284982388729, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.5788135593220339, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.8590694538098449, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.17217981340118746, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.475736568457539, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.4667235494880546, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.6217105263157895, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.6752336448598131, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.5110356536502547, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.7775012444001991, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.5541561712846348, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.5235414534288638, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.34421364985163205, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.365832614322692, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.760797342192691, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.28751311647429173, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.475736568457539, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.28718882817243474, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.8590694538098449, },
|
||||||
|
};
|
||||||
|
global u32 question_17_len = sizeof(question_17_data) / sizeof(question_17_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_18_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.40350877192982454, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.6732617297908423, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.6871880199667221, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.4288, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.6646090534979424, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.5142857142857142, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.528957528957529, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.5759139784946237, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.538971807628524, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.7172643869891576, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.5456081081081081, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.5256756756756756, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.34995625546806647, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.5742971887550201, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.46930280957336107, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.48936170212765956, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.5945144551519644, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.4288, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.41254125412541254, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.6333333333333333, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.7243367935409458, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.5133333333333333, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.5415140415140415, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.5577712609970674, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.4683127572016461, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.5072463768115942, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.43166666666666664, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.6534320323014805, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.733607855559075, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.5899339933993399, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.6646090534979424, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.46716541978387366, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.3588290840415486, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.5719207579672696, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.6966887417218544, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.6871880199667221, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.4683127572016461, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.6124937779990045, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.644878706199461, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.7341961174713788, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.4765694076038904, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.5004262574595055, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.5481239804241436, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.5114235500878734, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.3588290840415486, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.4288, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.6646090534979424, },
|
||||||
|
};
|
||||||
|
global u32 question_18_len = sizeof(question_18_data) / sizeof(question_18_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_19_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.7082644628099174, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.8521205357142857, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.9380856760374833, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.7483477376715811, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.8271523178807947, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.7714285714285715, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.7393822393822393, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.735936188077246, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.7394190871369295, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.9416666666666667, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.8, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.7437457741717377, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.5396825396825397, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.9164658634538153, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.6821782178217822, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.8499717992103779, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.5747211895910781, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.7483477376715811, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.6848534201954397, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.55, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.8363922391190352, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.82, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.7635919364691509, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.6364685516445471, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.6780876494023904, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.7748344370860927, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.78, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.6942204301075269, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.8313479623824451, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.6363636363636364, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.8271523178807947, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.7589134125636672, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.5408333333333334, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.5179916317991632, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.5506578947368421, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.9380856760374833, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.6780876494023904, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.8128422100547537, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.5583962812318419, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.5051749630359783, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.9416666666666667, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.6306156405990017, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.7963875205254516, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.830249396621078, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.5408333333333334, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.7483477376715811, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.8271523178807947, },
|
||||||
|
};
|
||||||
|
global u32 question_19_len = sizeof(question_19_data) / sizeof(question_19_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_2_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.8087649402390438, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.7064846416382252, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.6440677966101694, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.7936507936507936, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.6832853946947907, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.814797580269893, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.814797580269893, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.870817843866171, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.7857142857142857, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.6257668711656442, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.814797580269893, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.47058823529411764, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.6571428571428571, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.6257668711656442, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.8, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.8032786885245902, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.8, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.7448275862068966, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.9411764705882353, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.8125, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.5527714502657555, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.7619047619047619, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.6440677966101694, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.825, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.7857142857142857, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.665843621399177, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.7058823529411765, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.7058823529411765, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.7700145560407569, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.8125, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.6601796407185628, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.7857142857142857, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.6571428571428571, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.7241379310344828, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.7722222222222223, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.6440677966101694, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.7857142857142857, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.7915690866510539, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.8020833333333334, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.8020833333333334, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.8126721763085399, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.870817843866171, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.814797580269893, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.8125, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.7058823529411765, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.7936507936507936, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.7365591397849462, },
|
||||||
|
};
|
||||||
|
global u32 question_2_len = sizeof(question_2_data) / sizeof(question_2_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_20_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.008906882591093117, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.06120157215047726, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.014885874958650347, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.05456570155902005, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.07147540983606557, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.06863905325443787, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.06395348837209303, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.007591733445803458, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.07966804979253111, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.021666666666666667, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.05852842809364549, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.13266666666666665, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.009369676320272573, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.01606425702811245, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.014691478942213516, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.0061624649859943975, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.023038156947444204, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.05456570155902005, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.09248554913294797, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.11166666666666666, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.01694915254237288, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.041666666666666664, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.11233211233211234, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.047756041426927506, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.1770573566084788, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.0037425149700598802, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.037800687285223365, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.06412825651302605, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.2173776662484316, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.06795302013422819, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.07147540983606557, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.11595394736842106, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.0016680567139282735, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.05396290050590219, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.1118421052631579, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.014885874958650347, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.1770573566084788, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.05301144848183176, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.017452006980802792, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.08312958435207823, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.03836317135549872, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.02875924404272802, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.06188925081433225, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.01675977653631285, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.0016680567139282735, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.05456570155902005, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.07147540983606557, },
|
||||||
|
};
|
||||||
|
global u32 question_20_len = sizeof(question_20_data) / sizeof(question_20_data[0]);
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_3_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.601593625498008, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.6060606060606061, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.5254237288135594, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.6507936507936508, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.569806492883416, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.7948003714020427, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.6158536585365854, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.5555555555555556, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.5142857142857142, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.6158536585365854, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.6169354838709677, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.5819672131147541, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.425, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.6363636363636364, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.8333333333333334, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.6774193548387096, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.464638783269962, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.6190476190476191, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.5254237288135594, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.5176882661996497, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.5993009868421053, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.5, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.5, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.6011644832605532, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.6774193548387096, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.6111111111111112, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.5142857142857142, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.4827586206896552, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.45, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.5254237288135594, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.6352941176470588, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.7062314540059347, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.7062314540059347, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.7107438016528925, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.7948003714020427, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.59375, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.5, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.6507936507936508, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.4838709677419355, },
|
||||||
|
};
|
||||||
|
global u32 question_3_len = sizeof(question_3_data) / sizeof(question_3_data[0]);
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_5_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.601593625498008, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.6060606060606061, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.5254237288135594, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.6507936507936508, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.569806492883416, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.7948003714020427, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.6158536585365854, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.5555555555555556, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.5142857142857142, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.6158536585365854, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.6169354838709677, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.5819672131147541, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.425, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.6363636363636364, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.8333333333333334, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.6774193548387096, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.464638783269962, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.6190476190476191, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.5254237288135594, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.5176882661996497, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.5993009868421053, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.5, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.5, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.6011644832605532, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.6774193548387096, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.6111111111111112, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.5142857142857142, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.4827586206896552, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.45, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.5254237288135594, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.5714285714285714, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.6352941176470588, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.7062314540059347, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.7062314540059347, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.7107438016528925, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.7948003714020427, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.6120930232558139, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.59375, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.5, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.6507936507936508, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.4838709677419355, },
|
||||||
|
};
|
||||||
|
global u32 question_5_len = sizeof(question_5_data) / sizeof(question_5_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_6_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.2964426877470356, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.3141891891891892, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.4745762711864407, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.4603174603174603, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.3169346452283817, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.3714551371455137, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.3714551371455137, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.5386046511627907, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.21428571428571427, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.4878048780487805, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.3714551371455137, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.5, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.4647887323943662, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.4878048780487805, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.3089430894308943, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.3442622950819672, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.225, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.3719298245614035, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.4117647058823529, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.375, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.2883156297420334, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.2926829268292683, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.4745762711864407, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.3334112422578006, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.21428571428571427, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.8559967084961942, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.3137254901960784, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.3137254901960784, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.36627906976744184, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.375, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.3335826477187734, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.21428571428571427, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.4647887323943662, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.27586206896551724, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.3111111111111111, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.4745762711864407, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.21428571428571427, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.3568075117370892, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.5705794947994056, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.5705794947994056, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.3159340659340659, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.5386046511627907, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.3714551371455137, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.3939393939393939, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.3137254901960784, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.4603174603174603, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.37209302325581395, },
|
||||||
|
};
|
||||||
|
global u32 question_6_len = sizeof(question_6_data) / sizeof(question_6_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_7_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.9065934065934066, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.8987854251012146, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.8, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.8666666666666667, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.8818422046055115, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.9293150684931507, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.9293150684931507, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.9027283511269276, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 1 , },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.9253731343283582, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.9293150684931507, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.7692307692307693, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.9056603773584906, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.9253731343283582, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.9090909090909091, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.7934782608695652, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.9705882352941176, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.8928571428571429, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 1 , },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.9047619047619048, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.924908424908425, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.9714285714285714, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.8, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.9220470098185064, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 1, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.5873192436040044, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.925, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.925, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.8819938962360122, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.9047619047619048, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.9141824751580849, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 1, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.9056603773584906, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.9565217391304348, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.8592592592592593, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.8, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 1, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.8787878787878788, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.9236641221374046, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.9236641221374046, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.91701244813278, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.9027283511269276, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.9293150684931507, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.9090909090909091, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.925, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.8666666666666667, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.8149882903981265, },
|
||||||
|
};
|
||||||
|
global u32 question_7_len = sizeof(question_7_data) / sizeof(question_7_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_8_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.9398907103825137, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.9061224489795918, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.8717948717948718, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 1, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.898988944533686, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.9071938495332235, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.9071938495332235, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.9175627240143369, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 1, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.8962962962962963, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.9071938495332235, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.9230769230769231, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.8846153846153846, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.8962962962962963, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.9179487179487179, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.8571428571428571, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.9411764705882353, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.8290155440414507, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.8571428571428571, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.9523809523809523, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.8682027649769585, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.9411764705882353, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.8717948717948718, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.8594192107222636, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 1, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.5911220165068035, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.975, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.975, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.9158215010141988, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.9523809523809523, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.9038112522686026, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 1, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.8846153846153846, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 1, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.8712121212121212, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.8717948717948718, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 1, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.8953168044077136, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.9504761904761905, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.9504761904761905, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.9159663865546218, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.9175627240143369, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.9071938495332235, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.9090909090909091, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.975, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 1, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.9479905437352246, },
|
||||||
|
};
|
||||||
|
global u32 question_8_len = sizeof(question_8_data) / sizeof(question_8_data[0]);
|
|
@ -0,0 +1,50 @@
|
||||||
|
static Incenter_Data_Row question_9_data[] = {
|
||||||
|
[0] = { city_bucharest, 2022, MONTH_jan, 0.9276054097056484, },
|
||||||
|
[1] = { city_brisbane, 2022, MONTH_jan, 0.9355913381454747, },
|
||||||
|
[2] = { city_chengdu, 2022, MONTH_jan, 0.874793524942187, },
|
||||||
|
[3] = { city_new_delhi, 2022, MONTH_jan, 0.947289156626506, },
|
||||||
|
[4] = { city_paris, 2022, MONTH_jan, 0.9259986902423052, },
|
||||||
|
[5] = { city_san_francisco, 2022, MONTH_jan, 0.9016393442622951, },
|
||||||
|
[6] = { city_denver, 2022, MONTH_jan, 0.9326923076923077, },
|
||||||
|
[7] = { city_ankara, 2022, MONTH_jan, 0.9283050145047659, },
|
||||||
|
[8] = { city_harare, 2022, MONTH_jan, 0.966996699669967, },
|
||||||
|
[9] = { city_hanoi, 2022, MONTH_jan, 0.9691666666666666, },
|
||||||
|
[10] = { city_washington, 2022, MONTH_jan, 0.9068219633943427, },
|
||||||
|
[11] = { city_bangkok, 2022, MONTH_jan, 0.9223040857334226, },
|
||||||
|
[12] = { city_tunis, 2022, MONTH_jan, 0.9776490066225165, },
|
||||||
|
[13] = { city_seoul, 2022, MONTH_jan, 0.9156626506024096, },
|
||||||
|
[14] = { city_belgrade, 2022, MONTH_jan, 0.946360153256705, },
|
||||||
|
[15] = { city_moscow, 2022, MONTH_jan, 0.8717379233759023, },
|
||||||
|
[16] = { city_lima, 2022, MONTH_jan, 0.8871428571428571, },
|
||||||
|
[17] = { city_islamabad, 2022, MONTH_jan, 0.947289156626506, },
|
||||||
|
[18] = { city_abuja, 2022, MONTH_jan, 0.9919093851132686, },
|
||||||
|
[19] = { city_managua, 2022, MONTH_jan, 0.84, },
|
||||||
|
[20] = { city_amsterdam, 2022, MONTH_jan, 0.8231389284020862, },
|
||||||
|
[21] = { city_rabat, 2022, MONTH_jan, 0.8991666666666667, },
|
||||||
|
[22] = { city_ulaanbaatar, 2022, MONTH_jan, 0.8192918192918193, },
|
||||||
|
[23] = { city_mexico_city, 2022, MONTH_jan, 0.9753015508328546, },
|
||||||
|
[24] = { city_nairobi, 2022, MONTH_jan, 0.9818181818181818, },
|
||||||
|
[25] = { city_tokyo, 2022, MONTH_jan, 0.9380134428678119, },
|
||||||
|
[26] = { city_baghdad, 2022, MONTH_jan, 0.9808013355592654, },
|
||||||
|
[27] = { city_tehran, 2022, MONTH_jan, 0.9425901201602136, },
|
||||||
|
[28] = { city_jakarta, 2022, MONTH_jan, 0.98875, },
|
||||||
|
[29] = { city_guatemala_city, 2022, MONTH_jan, 0.9072416598860863, },
|
||||||
|
[30] = { city_berlin, 2022, MONTH_jan, 0.9259986902423052, },
|
||||||
|
[31] = { city_addis_ababa, 2022, MONTH_jan, 0.9536585365853658, },
|
||||||
|
[32] = { city_cairo, 2022, MONTH_jan, 0.9975, },
|
||||||
|
[33] = { city_quito, 2022, MONTH_jan, 0.9073455759599333, },
|
||||||
|
[34] = { city_bogota, 2022, MONTH_jan, 0.8782894736842105, },
|
||||||
|
[35] = { city_beijing, 2022, MONTH_jan, 0.874793524942187, },
|
||||||
|
[36] = { city_accra, 2022, MONTH_jan, 0.9818181818181818, },
|
||||||
|
[37] = { city_ottawa, 2022, MONTH_jan, 0.8504230960676954, },
|
||||||
|
[38] = { city_brasilia, 2022, MONTH_jan, 0.8677639046538025, },
|
||||||
|
[39] = { city_la_paz, 2022, MONTH_jan, 0.8522286821705426, },
|
||||||
|
[40] = { city_dhaka, 2022, MONTH_jan, 0.99, },
|
||||||
|
[41] = { city_yerevan, 2022, MONTH_jan, 0.9705641864268193, },
|
||||||
|
[42] = { city_chicago, 2022, MONTH_jan, 0.9385113268608414, },
|
||||||
|
[43] = { city_kyiv, 2022, MONTH_jan, 0.8817120622568093, },
|
||||||
|
[44] = { city_dubai, 2022, MONTH_jan, 0.9975, },
|
||||||
|
[45] = { city_mumbai, 2022, MONTH_jan, 0.947289156626506, },
|
||||||
|
[46] = { city_madrid, 2022, MONTH_jan, 0.9259986902423052, },
|
||||||
|
};
|
||||||
|
global u32 question_9_len = sizeof(question_9_data) / sizeof(question_9_data[0]);
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.7211155378486056
|
||||||
|
city_brisbane,2022,MONTH_jan,0.6813559322033899
|
||||||
|
city_chengdu,2022,MONTH_jan,0.5084745762711864
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.6507936507936508
|
||||||
|
city_paris,2022,MONTH_jan,0.5611355457816873
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.7130232558139535
|
||||||
|
city_denver,2022,MONTH_jan,0.7130232558139535
|
||||||
|
city_ankara,2022,MONTH_jan,0.8550185873605948
|
||||||
|
city_harare,2022,MONTH_jan,0.5
|
||||||
|
city_hanoi,2022,MONTH_jan,0.3597560975609756
|
||||||
|
city_washington,2022,MONTH_jan,0.7130232558139535
|
||||||
|
city_bangkok,2022,MONTH_jan,0.5555555555555556
|
||||||
|
city_tunis,2022,MONTH_jan,0.5942028985507246
|
||||||
|
city_seoul,2022,MONTH_jan,0.3597560975609756
|
||||||
|
city_belgrade,2022,MONTH_jan,0.632
|
||||||
|
city_moscow,2022,MONTH_jan,0.5081967213114754
|
||||||
|
city_lima,2022,MONTH_jan,0.5
|
||||||
|
city_islamabad,2022,MONTH_jan,0.6526315789473685
|
||||||
|
city_abuja,2022,MONTH_jan,0.8888888888888888
|
||||||
|
city_managua,2022,MONTH_jan,0.6774193548387096
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.6104783599088838
|
||||||
|
city_rabat,2022,MONTH_jan,0.4523809523809524
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.5084745762711864
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.5747718230751229
|
||||||
|
city_nairobi,2022,MONTH_jan,0.5
|
||||||
|
city_tokyo,2022,MONTH_jan,0.3949372298826919
|
||||||
|
city_baghdad,2022,MONTH_jan,0.7
|
||||||
|
city_tehran,2022,MONTH_jan,0.7
|
||||||
|
city_jakarta,2022,MONTH_jan,0.45276162790697677
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.6774193548387096
|
||||||
|
city_berlin,2022,MONTH_jan,0.6714178544636159
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.5
|
||||||
|
city_cairo,2022,MONTH_jan,0.5942028985507246
|
||||||
|
city_quito,2022,MONTH_jan,0.48148148148148145
|
||||||
|
city_bogota,2022,MONTH_jan,0.5698324022346368
|
||||||
|
city_beijing,2022,MONTH_jan,0.5084745762711864
|
||||||
|
city_accra,2022,MONTH_jan,0.5
|
||||||
|
city_ottawa,2022,MONTH_jan,0.7213114754098361
|
||||||
|
city_brasilia,2022,MONTH_jan,0.7555555555555555
|
||||||
|
city_la_paz,2022,MONTH_jan,0.7555555555555555
|
||||||
|
city_dhaka,2022,MONTH_jan,0.7348066298342542
|
||||||
|
city_yerevan,2022,MONTH_jan,0.8550185873605948
|
||||||
|
city_chicago,2022,MONTH_jan,0.7130232558139535
|
||||||
|
city_kyiv,2022,MONTH_jan,0.46875
|
||||||
|
city_dubai,2022,MONTH_jan,0.7
|
||||||
|
city_mumbai,2022,MONTH_jan,0.6507936507936508
|
||||||
|
city_madrid,2022,MONTH_jan,0.5716845878136201
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.7907915993537964
|
||||||
|
city_brisbane,2022,MONTH_jan,0.9196675900277008
|
||||||
|
city_chengdu,2022,MONTH_jan,0.8922570016474465
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.8931259407927747
|
||||||
|
city_paris,2022,MONTH_jan,0.8915187376725838
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.8767605633802817
|
||||||
|
city_denver,2022,MONTH_jan,0.8822393822393823
|
||||||
|
city_ankara,2022,MONTH_jan,0.8529289572081429
|
||||||
|
city_harare,2022,MONTH_jan,0.5197693574958814
|
||||||
|
city_hanoi,2022,MONTH_jan,0.9733333333333334
|
||||||
|
city_washington,2022,MONTH_jan,0.885
|
||||||
|
city_bangkok,2022,MONTH_jan,0.8386880856760375
|
||||||
|
city_tunis,2022,MONTH_jan,0.7669983416252073
|
||||||
|
city_seoul,2022,MONTH_jan,0.8907630522088353
|
||||||
|
city_belgrade,2022,MONTH_jan,0.8032629558541267
|
||||||
|
city_moscow,2022,MONTH_jan,0.8402501421262081
|
||||||
|
city_lima,2022,MONTH_jan,0.8164874551971326
|
||||||
|
city_islamabad,2022,MONTH_jan,0.8931259407927747
|
||||||
|
city_abuja,2022,MONTH_jan,0.7283049472830495
|
||||||
|
city_managua,2022,MONTH_jan,0.8558333333333333
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.9145383104125737
|
||||||
|
city_rabat,2022,MONTH_jan,0.8283333333333334
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.6910866910866911
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.9178632969557725
|
||||||
|
city_nairobi,2022,MONTH_jan,0.8371907422186752
|
||||||
|
city_tokyo,2022,MONTH_jan,0.9025679758308157
|
||||||
|
city_baghdad,2022,MONTH_jan,0.7039864291772688
|
||||||
|
city_tehran,2022,MONTH_jan,0.6967267869071476
|
||||||
|
city_jakarta,2022,MONTH_jan,0.939043451078462
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.9072416598860863
|
||||||
|
city_berlin,2022,MONTH_jan,0.8915187376725838
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.8747967479674796
|
||||||
|
city_cairo,2022,MONTH_jan,0.7172643869891576
|
||||||
|
city_quito,2022,MONTH_jan,0.8932203389830509
|
||||||
|
city_bogota,2022,MONTH_jan,0.8940789473684211
|
||||||
|
city_beijing,2022,MONTH_jan,0.8922570016474465
|
||||||
|
city_accra,2022,MONTH_jan,0.8371907422186752
|
||||||
|
city_ottawa,2022,MONTH_jan,0.8638626182180189
|
||||||
|
city_brasilia,2022,MONTH_jan,0.9008595988538682
|
||||||
|
city_la_paz,2022,MONTH_jan,0.7321688500727802
|
||||||
|
city_dhaka,2022,MONTH_jan,0.9066666666666666
|
||||||
|
city_yerevan,2022,MONTH_jan,0.8845836768342952
|
||||||
|
city_chicago,2022,MONTH_jan,0.8559870550161812
|
||||||
|
city_kyiv,2022,MONTH_jan,0.8059105431309904
|
||||||
|
city_dubai,2022,MONTH_jan,0.7172643869891576
|
||||||
|
city_mumbai,2022,MONTH_jan,0.8931259407927747
|
||||||
|
city_madrid,2022,MONTH_jan,0.8915187376725838
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.7527472527472527
|
||||||
|
city_brisbane,2022,MONTH_jan,0.7346938775510204
|
||||||
|
city_chengdu,2022,MONTH_jan,0.75
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.8222222222222222
|
||||||
|
city_paris,2022,MONTH_jan,0.5690460306871248
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.7624035281146637
|
||||||
|
city_denver,2022,MONTH_jan,0.7624035281146637
|
||||||
|
city_ankara,2022,MONTH_jan,0.6437054631828979
|
||||||
|
city_harare,2022,MONTH_jan,0.8
|
||||||
|
city_hanoi,2022,MONTH_jan,0.8148148148148148
|
||||||
|
city_washington,2022,MONTH_jan,0.7624035281146637
|
||||||
|
city_bangkok,2022,MONTH_jan,0.5384615384615384
|
||||||
|
city_tunis,2022,MONTH_jan,0.8431372549019608
|
||||||
|
city_seoul,2022,MONTH_jan,0.8148148148148148
|
||||||
|
city_belgrade,2022,MONTH_jan,0.6818181818181818
|
||||||
|
city_moscow,2022,MONTH_jan,0.4065934065934066
|
||||||
|
city_lima,2022,MONTH_jan,0.8235294117647058
|
||||||
|
city_islamabad,2022,MONTH_jan,0.8105263157894737
|
||||||
|
city_abuja,2022,MONTH_jan,0.7142857142857143
|
||||||
|
city_managua,2022,MONTH_jan,0.8571428571428571
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.7003676470588235
|
||||||
|
city_rabat,2022,MONTH_jan,0.7058823529411765
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.75
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.7737030411449016
|
||||||
|
city_nairobi,2022,MONTH_jan,0.8
|
||||||
|
city_tokyo,2022,MONTH_jan,0.4397765363128492
|
||||||
|
city_baghdad,2022,MONTH_jan,0.7
|
||||||
|
city_tehran,2022,MONTH_jan,0.7
|
||||||
|
city_jakarta,2022,MONTH_jan,0.8859470468431772
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.8571428571428571
|
||||||
|
city_berlin,2022,MONTH_jan,0.6584922797456857
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.8
|
||||||
|
city_cairo,2022,MONTH_jan,0.8431372549019608
|
||||||
|
city_quito,2022,MONTH_jan,0.8181818181818182
|
||||||
|
city_bogota,2022,MONTH_jan,0.7089552238805971
|
||||||
|
city_beijing,2022,MONTH_jan,0.75
|
||||||
|
city_accra,2022,MONTH_jan,0.8
|
||||||
|
city_ottawa,2022,MONTH_jan,0.6509695290858726
|
||||||
|
city_brasilia,2022,MONTH_jan,0.8969465648854962
|
||||||
|
city_la_paz,2022,MONTH_jan,0.8969465648854962
|
||||||
|
city_dhaka,2022,MONTH_jan,0.8523206751054853
|
||||||
|
city_yerevan,2022,MONTH_jan,0.6437054631828979
|
||||||
|
city_chicago,2022,MONTH_jan,0.7624035281146637
|
||||||
|
city_kyiv,2022,MONTH_jan,0.8181818181818182
|
||||||
|
city_dubai,2022,MONTH_jan,0.7
|
||||||
|
city_mumbai,2022,MONTH_jan,0.8222222222222222
|
||||||
|
city_madrid,2022,MONTH_jan,0.7440191387559809
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.4789180588703262
|
||||||
|
city_brisbane,2022,MONTH_jan,0.827357970215113
|
||||||
|
city_chengdu,2022,MONTH_jan,0.600926538716082
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.42355889724310775
|
||||||
|
city_paris,2022,MONTH_jan,0.8413114754098361
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.6807511737089202
|
||||||
|
city_denver,2022,MONTH_jan,0.6730769230769231
|
||||||
|
city_ankara,2022,MONTH_jan,0.6662309368191721
|
||||||
|
city_harare,2022,MONTH_jan,0.7267489711934156
|
||||||
|
city_hanoi,2022,MONTH_jan,0.4633333333333333
|
||||||
|
city_washington,2022,MONTH_jan,0.7408637873754153
|
||||||
|
city_bangkok,2022,MONTH_jan,0.522
|
||||||
|
city_tunis,2022,MONTH_jan,0.8239731768650461
|
||||||
|
city_seoul,2022,MONTH_jan,0.5084337349397591
|
||||||
|
city_belgrade,2022,MONTH_jan,0.6408518877057116
|
||||||
|
city_moscow,2022,MONTH_jan,0.5629834254143646
|
||||||
|
city_lima,2022,MONTH_jan,0.6192857142857143
|
||||||
|
city_islamabad,2022,MONTH_jan,0.42355889724310775
|
||||||
|
city_abuja,2022,MONTH_jan,0.6176232821341956
|
||||||
|
city_managua,2022,MONTH_jan,0.7441666666666666
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.8019323671497585
|
||||||
|
city_rabat,2022,MONTH_jan,0.5075
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.4340659340659341
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.6657093624353819
|
||||||
|
city_nairobi,2022,MONTH_jan,0.5442338072669827
|
||||||
|
city_tokyo,2022,MONTH_jan,0.6260162601626016
|
||||||
|
city_baghdad,2022,MONTH_jan,0.7216666666666667
|
||||||
|
city_tehran,2022,MONTH_jan,0.40493662441627754
|
||||||
|
city_jakarta,2022,MONTH_jan,0.470625
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.7831558567279767
|
||||||
|
city_berlin,2022,MONTH_jan,0.8413114754098361
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.45934959349593496
|
||||||
|
city_cairo,2022,MONTH_jan,0.7814845704753962
|
||||||
|
city_quito,2022,MONTH_jan,0.6958333333333333
|
||||||
|
city_bogota,2022,MONTH_jan,0.7730263157894737
|
||||||
|
city_beijing,2022,MONTH_jan,0.600926538716082
|
||||||
|
city_accra,2022,MONTH_jan,0.5442338072669827
|
||||||
|
city_ottawa,2022,MONTH_jan,0.7073170731707317
|
||||||
|
city_brasilia,2022,MONTH_jan,0.6152099886492622
|
||||||
|
city_la_paz,2022,MONTH_jan,0.7289946576007771
|
||||||
|
city_dhaka,2022,MONTH_jan,0.7075
|
||||||
|
city_yerevan,2022,MONTH_jan,0.6059113300492611
|
||||||
|
city_chicago,2022,MONTH_jan,0.6844660194174758
|
||||||
|
city_kyiv,2022,MONTH_jan,0.4786656322730799
|
||||||
|
city_dubai,2022,MONTH_jan,0.7814845704753962
|
||||||
|
city_mumbai,2022,MONTH_jan,0.42355889724310775
|
||||||
|
city_madrid,2022,MONTH_jan,0.8413114754098361
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.08285385500575373
|
||||||
|
city_brisbane,2022,MONTH_jan,0.09841628959276018
|
||||||
|
city_chengdu,2022,MONTH_jan,0.08166666666666667
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.20042987641053198
|
||||||
|
city_paris,2022,MONTH_jan,0.031207598371777476
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.1670616113744076
|
||||||
|
city_denver,2022,MONTH_jan,0.15145631067961166
|
||||||
|
city_ankara,2022,MONTH_jan,0.14479830148619957
|
||||||
|
city_harare,2022,MONTH_jan,0.3549459684123026
|
||||||
|
city_hanoi,2022,MONTH_jan,0.08166666666666667
|
||||||
|
city_washington,2022,MONTH_jan,0.14214046822742474
|
||||||
|
city_bangkok,2022,MONTH_jan,0.18401611820013433
|
||||||
|
city_tunis,2022,MONTH_jan,0.28439597315436244
|
||||||
|
city_seoul,2022,MONTH_jan,0.157429718875502
|
||||||
|
city_belgrade,2022,MONTH_jan,0.0691333982473223
|
||||||
|
city_moscow,2022,MONTH_jan,0.07294264339152119
|
||||||
|
city_lima,2022,MONTH_jan,0.18324607329842932
|
||||||
|
city_islamabad,2022,MONTH_jan,0.20042987641053198
|
||||||
|
city_abuja,2022,MONTH_jan,0.18892508143322476
|
||||||
|
city_managua,2022,MONTH_jan,0.11083333333333334
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.09620098039215687
|
||||||
|
city_rabat,2022,MONTH_jan,0.5508333333333333
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.2658924205378973
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.3469387755102041
|
||||||
|
city_nairobi,2022,MONTH_jan,0.37571312143439284
|
||||||
|
city_tokyo,2022,MONTH_jan,0.0972644376899696
|
||||||
|
city_baghdad,2022,MONTH_jan,0.16893039049235994
|
||||||
|
city_tehran,2022,MONTH_jan,0.07811447811447811
|
||||||
|
city_jakarta,2022,MONTH_jan,0.0608640807316304
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.322213181448332
|
||||||
|
city_berlin,2022,MONTH_jan,0.031207598371777476
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.15637860082304528
|
||||||
|
city_cairo,2022,MONTH_jan,0.16893039049235994
|
||||||
|
city_quito,2022,MONTH_jan,0.14830875975715524
|
||||||
|
city_bogota,2022,MONTH_jan,0.13355263157894737
|
||||||
|
city_beijing,2022,MONTH_jan,0.08166666666666667
|
||||||
|
city_accra,2022,MONTH_jan,0.37571312143439284
|
||||||
|
city_ottawa,2022,MONTH_jan,0.14758586361373818
|
||||||
|
city_brasilia,2022,MONTH_jan,0.20054384772263767
|
||||||
|
city_la_paz,2022,MONTH_jan,0.14959016393442623
|
||||||
|
city_dhaka,2022,MONTH_jan,0.13162544169611307
|
||||||
|
city_yerevan,2022,MONTH_jan,0.03935599284436494
|
||||||
|
city_chicago,2022,MONTH_jan,0.1563517915309446
|
||||||
|
city_kyiv,2022,MONTH_jan,0.055281342546890426
|
||||||
|
city_dubai,2022,MONTH_jan,0.16893039049235994
|
||||||
|
city_mumbai,2022,MONTH_jan,0.20042987641053198
|
||||||
|
city_madrid,2022,MONTH_jan,0.031207598371777476
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.6968174204355109
|
||||||
|
city_brisbane,2022,MONTH_jan,0.4254484304932735
|
||||||
|
city_chengdu,2022,MONTH_jan,0.15694768410529825
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.37493632195618953
|
||||||
|
city_paris,2022,MONTH_jan,0.31785003317850036
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.6515513126491647
|
||||||
|
city_denver,2022,MONTH_jan,0.700587084148728
|
||||||
|
city_ankara,2022,MONTH_jan,0.39265898420828
|
||||||
|
city_harare,2022,MONTH_jan,0.76814011676397
|
||||||
|
city_hanoi,2022,MONTH_jan,0.145
|
||||||
|
city_washington,2022,MONTH_jan,0.6761744966442953
|
||||||
|
city_bangkok,2022,MONTH_jan,0.529689608636977
|
||||||
|
city_tunis,2022,MONTH_jan,0.7771236333052985
|
||||||
|
city_seoul,2022,MONTH_jan,0.09799196787148594
|
||||||
|
city_belgrade,2022,MONTH_jan,0.6625891946992865
|
||||||
|
city_moscow,2022,MONTH_jan,0.5068903535050928
|
||||||
|
city_lima,2022,MONTH_jan,0.7326086956521739
|
||||||
|
city_islamabad,2022,MONTH_jan,0.37493632195618953
|
||||||
|
city_abuja,2022,MONTH_jan,0.6726238830219334
|
||||||
|
city_managua,2022,MONTH_jan,0.6166666666666667
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.37310308738880166
|
||||||
|
city_rabat,2022,MONTH_jan,0.5525
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.43933823529411764
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.6502890173410405
|
||||||
|
city_nairobi,2022,MONTH_jan,0.5854632587859425
|
||||||
|
city_tokyo,2022,MONTH_jan,0.4491803278688525
|
||||||
|
city_baghdad,2022,MONTH_jan,0.74
|
||||||
|
city_tehran,2022,MONTH_jan,0.48944860449285227
|
||||||
|
city_jakarta,2022,MONTH_jan,0.3997445721583653
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.7050538525269263
|
||||||
|
city_berlin,2022,MONTH_jan,0.31785003317850036
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.6325350949628407
|
||||||
|
city_cairo,2022,MONTH_jan,0.74
|
||||||
|
city_quito,2022,MONTH_jan,0.5373635600335852
|
||||||
|
city_bogota,2022,MONTH_jan,0.7315789473684211
|
||||||
|
city_beijing,2022,MONTH_jan,0.15694768410529825
|
||||||
|
city_accra,2022,MONTH_jan,0.5854632587859425
|
||||||
|
city_ottawa,2022,MONTH_jan,0.2929318068690891
|
||||||
|
city_brasilia,2022,MONTH_jan,0.8714953271028038
|
||||||
|
city_la_paz,2022,MONTH_jan,0.48205383848454636
|
||||||
|
city_dhaka,2022,MONTH_jan,0.215
|
||||||
|
city_yerevan,2022,MONTH_jan,0.7328308207705193
|
||||||
|
city_chicago,2022,MONTH_jan,0.6830870279146142
|
||||||
|
city_kyiv,2022,MONTH_jan,0.7300813008130081
|
||||||
|
city_dubai,2022,MONTH_jan,0.74
|
||||||
|
city_mumbai,2022,MONTH_jan,0.37493632195618953
|
||||||
|
city_madrid,2022,MONTH_jan,0.31785003317850036
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.8681318681318682
|
||||||
|
city_brisbane,2022,MONTH_jan,0.842741935483871
|
||||||
|
city_chengdu,2022,MONTH_jan,0.75
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.8444444444444444
|
||||||
|
city_paris,2022,MONTH_jan,0.7975257342525262
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.8898026315789473
|
||||||
|
city_denver,2022,MONTH_jan,0.8898026315789473
|
||||||
|
city_ankara,2022,MONTH_jan,0.8466111771700356
|
||||||
|
city_harare,2022,MONTH_jan,1
|
||||||
|
city_hanoi,2022,MONTH_jan,0.8507462686567164
|
||||||
|
city_washington,2022,MONTH_jan,0.8898026315789473
|
||||||
|
city_bangkok,2022,MONTH_jan,0.7692307692307693
|
||||||
|
city_tunis,2022,MONTH_jan,0.8653846153846154
|
||||||
|
city_seoul,2022,MONTH_jan,0.8507462686567164
|
||||||
|
city_belgrade,2022,MONTH_jan,0.8838383838383839
|
||||||
|
city_moscow,2022,MONTH_jan,0.7934782608695652
|
||||||
|
city_lima,2022,MONTH_jan,0.9705882352941176
|
||||||
|
city_islamabad,2022,MONTH_jan,0.8121827411167513
|
||||||
|
city_abuja,2022,MONTH_jan,0.8571428571428571
|
||||||
|
city_managua,2022,MONTH_jan,1
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.9004566210045662
|
||||||
|
city_rabat,2022,MONTH_jan,0.7352941176470589
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.75
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.8772086117297698
|
||||||
|
city_nairobi,2022,MONTH_jan,1
|
||||||
|
city_tokyo,2022,MONTH_jan,0.41568278012920473
|
||||||
|
city_baghdad,2022,MONTH_jan,0.8
|
||||||
|
city_tehran,2022,MONTH_jan,0.8
|
||||||
|
city_jakarta,2022,MONTH_jan,0.8562753036437247
|
||||||
|
city_guatemala_city,2022,MONTH_jan,1
|
||||||
|
city_berlin,2022,MONTH_jan,0.8590785907859079
|
||||||
|
city_addis_ababa,2022,MONTH_jan,1
|
||||||
|
city_cairo,2022,MONTH_jan,0.8653846153846154
|
||||||
|
city_quito,2022,MONTH_jan,0.8695652173913043
|
||||||
|
city_bogota,2022,MONTH_jan,0.8656716417910447
|
||||||
|
city_beijing,2022,MONTH_jan,0.75
|
||||||
|
city_accra,2022,MONTH_jan,1
|
||||||
|
city_ottawa,2022,MONTH_jan,0.8402203856749312
|
||||||
|
city_brasilia,2022,MONTH_jan,0.8950381679389313
|
||||||
|
city_la_paz,2022,MONTH_jan,0.8950381679389313
|
||||||
|
city_dhaka,2022,MONTH_jan,0.9041666666666667
|
||||||
|
city_yerevan,2022,MONTH_jan,0.8466111771700356
|
||||||
|
city_chicago,2022,MONTH_jan,0.8898026315789473
|
||||||
|
city_kyiv,2022,MONTH_jan,0.8636363636363636
|
||||||
|
city_dubai,2022,MONTH_jan,0.8
|
||||||
|
city_mumbai,2022,MONTH_jan,0.8444444444444444
|
||||||
|
city_madrid,2022,MONTH_jan,0.8524590163934426
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.6252144082332761
|
||||||
|
city_brisbane,2022,MONTH_jan,0.21300448430493274
|
||||||
|
city_chengdu,2022,MONTH_jan,0.8102633355840648
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.7666836474783495
|
||||||
|
city_paris,2022,MONTH_jan,0.1596806387225549
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.23954372623574144
|
||||||
|
city_denver,2022,MONTH_jan,0.21940928270042195
|
||||||
|
city_ankara,2022,MONTH_jan,0.8744531933508312
|
||||||
|
city_harare,2022,MONTH_jan,0.9385004212299916
|
||||||
|
city_hanoi,2022,MONTH_jan,0.8875
|
||||||
|
city_washington,2022,MONTH_jan,0.2643884892086331
|
||||||
|
city_bangkok,2022,MONTH_jan,0.6720647773279352
|
||||||
|
city_tunis,2022,MONTH_jan,0.8076580587711487
|
||||||
|
city_seoul,2022,MONTH_jan,0.8481927710843373
|
||||||
|
city_belgrade,2022,MONTH_jan,0.763023493360572
|
||||||
|
city_moscow,2022,MONTH_jan,0.738166566806471
|
||||||
|
city_lima,2022,MONTH_jan,0.44288872512896094
|
||||||
|
city_islamabad,2022,MONTH_jan,0.7666836474783495
|
||||||
|
city_abuja,2022,MONTH_jan,0.9618196588139724
|
||||||
|
city_managua,2022,MONTH_jan,0.4816666666666667
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.27867095391211144
|
||||||
|
city_rabat,2022,MONTH_jan,0.91
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.7175245098039216
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.3929398148148148
|
||||||
|
city_nairobi,2022,MONTH_jan,0.8004926108374384
|
||||||
|
city_tokyo,2022,MONTH_jan,0.5046491969568893
|
||||||
|
city_baghdad,2022,MONTH_jan,0.9116666666666666
|
||||||
|
city_tehran,2022,MONTH_jan,1
|
||||||
|
city_jakarta,2022,MONTH_jan,0.9195402298850575
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.6255178127589064
|
||||||
|
city_berlin,2022,MONTH_jan,0.1596806387225549
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.8911055694098088
|
||||||
|
city_cairo,2022,MONTH_jan,0.9116666666666666
|
||||||
|
city_quito,2022,MONTH_jan,0.4869857262804366
|
||||||
|
city_bogota,2022,MONTH_jan,0.4
|
||||||
|
city_beijing,2022,MONTH_jan,0.8102633355840648
|
||||||
|
city_accra,2022,MONTH_jan,0.8004926108374384
|
||||||
|
city_ottawa,2022,MONTH_jan,0.20034843205574912
|
||||||
|
city_brasilia,2022,MONTH_jan,0.1588785046728972
|
||||||
|
city_la_paz,2022,MONTH_jan,0.43232438606510565
|
||||||
|
city_dhaka,2022,MONTH_jan,0.9798826487845766
|
||||||
|
city_yerevan,2022,MONTH_jan,0.8872881355932203
|
||||||
|
city_chicago,2022,MONTH_jan,0.2586805555555556
|
||||||
|
city_kyiv,2022,MONTH_jan,0.7552447552447552
|
||||||
|
city_dubai,2022,MONTH_jan,0.9116666666666666
|
||||||
|
city_mumbai,2022,MONTH_jan,0.7666836474783495
|
||||||
|
city_madrid,2022,MONTH_jan,0.1596806387225549
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.3517305893358279
|
||||||
|
city_brisbane,2022,MONTH_jan,0.7251693002257337
|
||||||
|
city_chengdu,2022,MONTH_jan,0.6752336448598131
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.28718882817243474
|
||||||
|
city_paris,2022,MONTH_jan,0.8590694538098449
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.7202881152460985
|
||||||
|
city_denver,2022,MONTH_jan,0.7637795275590551
|
||||||
|
city_ankara,2022,MONTH_jan,0.22046174739701221
|
||||||
|
city_harare,2022,MONTH_jan,0.4797297297297297
|
||||||
|
city_hanoi,2022,MONTH_jan,0.08583333333333333
|
||||||
|
city_washington,2022,MONTH_jan,0.7687074829931972
|
||||||
|
city_bangkok,2022,MONTH_jan,0.39174560216508797
|
||||||
|
city_tunis,2022,MONTH_jan,0.18357933579335795
|
||||||
|
city_seoul,2022,MONTH_jan,0.242570281124498
|
||||||
|
city_belgrade,2022,MONTH_jan,0.23599137931034483
|
||||||
|
city_moscow,2022,MONTH_jan,0.3582286847323199
|
||||||
|
city_lima,2022,MONTH_jan,0.21016166281755197
|
||||||
|
city_islamabad,2022,MONTH_jan,0.28718882817243474
|
||||||
|
city_abuja,2022,MONTH_jan,0.4920502092050209
|
||||||
|
city_managua,2022,MONTH_jan,0.3875
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.5708571428571428
|
||||||
|
city_rabat,2022,MONTH_jan,0.28583333333333333
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.5067401960784313
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.1445221445221445
|
||||||
|
city_nairobi,2022,MONTH_jan,0.5110356536502547
|
||||||
|
city_tokyo,2022,MONTH_jan,0.6290018832391714
|
||||||
|
city_baghdad,2022,MONTH_jan,0.475736568457539
|
||||||
|
city_tehran,2022,MONTH_jan,0.7332421340629275
|
||||||
|
city_jakarta,2022,MONTH_jan,0.3570284982388729
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.5788135593220339
|
||||||
|
city_berlin,2022,MONTH_jan,0.8590694538098449
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.17217981340118746
|
||||||
|
city_cairo,2022,MONTH_jan,0.475736568457539
|
||||||
|
city_quito,2022,MONTH_jan,0.4667235494880546
|
||||||
|
city_bogota,2022,MONTH_jan,0.6217105263157895
|
||||||
|
city_beijing,2022,MONTH_jan,0.6752336448598131
|
||||||
|
city_accra,2022,MONTH_jan,0.5110356536502547
|
||||||
|
city_ottawa,2022,MONTH_jan,0.7775012444001991
|
||||||
|
city_brasilia,2022,MONTH_jan,0.5541561712846348
|
||||||
|
city_la_paz,2022,MONTH_jan,0.5235414534288638
|
||||||
|
city_dhaka,2022,MONTH_jan,0.34421364985163205
|
||||||
|
city_yerevan,2022,MONTH_jan,0.365832614322692
|
||||||
|
city_chicago,2022,MONTH_jan,0.760797342192691
|
||||||
|
city_kyiv,2022,MONTH_jan,0.28751311647429173
|
||||||
|
city_dubai,2022,MONTH_jan,0.475736568457539
|
||||||
|
city_mumbai,2022,MONTH_jan,0.28718882817243474
|
||||||
|
city_madrid,2022,MONTH_jan,0.8590694538098449
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.40350877192982454
|
||||||
|
city_brisbane,2022,MONTH_jan,0.6732617297908423
|
||||||
|
city_chengdu,2022,MONTH_jan,0.6871880199667221
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.4288
|
||||||
|
city_paris,2022,MONTH_jan,0.6646090534979424
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.5142857142857142
|
||||||
|
city_denver,2022,MONTH_jan,0.528957528957529
|
||||||
|
city_ankara,2022,MONTH_jan,0.5759139784946237
|
||||||
|
city_harare,2022,MONTH_jan,0.538971807628524
|
||||||
|
city_hanoi,2022,MONTH_jan,0.7172643869891576
|
||||||
|
city_washington,2022,MONTH_jan,0.5456081081081081
|
||||||
|
city_bangkok,2022,MONTH_jan,0.5256756756756756
|
||||||
|
city_tunis,2022,MONTH_jan,0.34995625546806647
|
||||||
|
city_seoul,2022,MONTH_jan,0.5742971887550201
|
||||||
|
city_belgrade,2022,MONTH_jan,0.46930280957336107
|
||||||
|
city_moscow,2022,MONTH_jan,0.48936170212765956
|
||||||
|
city_lima,2022,MONTH_jan,0.5945144551519644
|
||||||
|
city_islamabad,2022,MONTH_jan,0.4288
|
||||||
|
city_abuja,2022,MONTH_jan,0.41254125412541254
|
||||||
|
city_managua,2022,MONTH_jan,0.6333333333333333
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.7243367935409458
|
||||||
|
city_rabat,2022,MONTH_jan,0.5133333333333333
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.5415140415140415
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.5577712609970674
|
||||||
|
city_nairobi,2022,MONTH_jan,0.4683127572016461
|
||||||
|
city_tokyo,2022,MONTH_jan,0.5072463768115942
|
||||||
|
city_baghdad,2022,MONTH_jan,0.43166666666666664
|
||||||
|
city_tehran,2022,MONTH_jan,0.6534320323014805
|
||||||
|
city_jakarta,2022,MONTH_jan,0.733607855559075
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.5899339933993399
|
||||||
|
city_berlin,2022,MONTH_jan,0.6646090534979424
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.46716541978387366
|
||||||
|
city_cairo,2022,MONTH_jan,0.3588290840415486
|
||||||
|
city_quito,2022,MONTH_jan,0.5719207579672696
|
||||||
|
city_bogota,2022,MONTH_jan,0.6966887417218544
|
||||||
|
city_beijing,2022,MONTH_jan,0.6871880199667221
|
||||||
|
city_accra,2022,MONTH_jan,0.4683127572016461
|
||||||
|
city_ottawa,2022,MONTH_jan,0.6124937779990045
|
||||||
|
city_brasilia,2022,MONTH_jan,0.644878706199461
|
||||||
|
city_la_paz,2022,MONTH_jan,0.7341961174713788
|
||||||
|
city_dhaka,2022,MONTH_jan,0.4765694076038904
|
||||||
|
city_yerevan,2022,MONTH_jan,0.5004262574595055
|
||||||
|
city_chicago,2022,MONTH_jan,0.5481239804241436
|
||||||
|
city_kyiv,2022,MONTH_jan,0.5114235500878734
|
||||||
|
city_dubai,2022,MONTH_jan,0.3588290840415486
|
||||||
|
city_mumbai,2022,MONTH_jan,0.4288
|
||||||
|
city_madrid,2022,MONTH_jan,0.6646090534979424
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.7082644628099174
|
||||||
|
city_brisbane,2022,MONTH_jan,0.8521205357142857
|
||||||
|
city_chengdu,2022,MONTH_jan,0.9380856760374833
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.7483477376715811
|
||||||
|
city_paris,2022,MONTH_jan,0.8271523178807947
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.7714285714285715
|
||||||
|
city_denver,2022,MONTH_jan,0.7393822393822393
|
||||||
|
city_ankara,2022,MONTH_jan,0.735936188077246
|
||||||
|
city_harare,2022,MONTH_jan,0.7394190871369295
|
||||||
|
city_hanoi,2022,MONTH_jan,0.9416666666666667
|
||||||
|
city_washington,2022,MONTH_jan,0.8
|
||||||
|
city_bangkok,2022,MONTH_jan,0.7437457741717377
|
||||||
|
city_tunis,2022,MONTH_jan,0.5396825396825397
|
||||||
|
city_seoul,2022,MONTH_jan,0.9164658634538153
|
||||||
|
city_belgrade,2022,MONTH_jan,0.6821782178217822
|
||||||
|
city_moscow,2022,MONTH_jan,0.8499717992103779
|
||||||
|
city_lima,2022,MONTH_jan,0.5747211895910781
|
||||||
|
city_islamabad,2022,MONTH_jan,0.7483477376715811
|
||||||
|
city_abuja,2022,MONTH_jan,0.6848534201954397
|
||||||
|
city_managua,2022,MONTH_jan,0.55
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.8363922391190352
|
||||||
|
city_rabat,2022,MONTH_jan,0.82
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.7635919364691509
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.6364685516445471
|
||||||
|
city_nairobi,2022,MONTH_jan,0.6780876494023904
|
||||||
|
city_tokyo,2022,MONTH_jan,0.7748344370860927
|
||||||
|
city_baghdad,2022,MONTH_jan,0.78
|
||||||
|
city_tehran,2022,MONTH_jan,0.6942204301075269
|
||||||
|
city_jakarta,2022,MONTH_jan,0.8313479623824451
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.6363636363636364
|
||||||
|
city_berlin,2022,MONTH_jan,0.8271523178807947
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.7589134125636672
|
||||||
|
city_cairo,2022,MONTH_jan,0.5408333333333334
|
||||||
|
city_quito,2022,MONTH_jan,0.5179916317991632
|
||||||
|
city_bogota,2022,MONTH_jan,0.5506578947368421
|
||||||
|
city_beijing,2022,MONTH_jan,0.9380856760374833
|
||||||
|
city_accra,2022,MONTH_jan,0.6780876494023904
|
||||||
|
city_ottawa,2022,MONTH_jan,0.8128422100547537
|
||||||
|
city_brasilia,2022,MONTH_jan,0.5583962812318419
|
||||||
|
city_la_paz,2022,MONTH_jan,0.5051749630359783
|
||||||
|
city_dhaka,2022,MONTH_jan,0.9416666666666667
|
||||||
|
city_yerevan,2022,MONTH_jan,0.6306156405990017
|
||||||
|
city_chicago,2022,MONTH_jan,0.7963875205254516
|
||||||
|
city_kyiv,2022,MONTH_jan,0.830249396621078
|
||||||
|
city_dubai,2022,MONTH_jan,0.5408333333333334
|
||||||
|
city_mumbai,2022,MONTH_jan,0.7483477376715811
|
||||||
|
city_madrid,2022,MONTH_jan,0.8271523178807947
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.8087649402390438
|
||||||
|
city_brisbane,2022,MONTH_jan,0.7064846416382252
|
||||||
|
city_chengdu,2022,MONTH_jan,0.6440677966101694
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.7936507936507936
|
||||||
|
city_paris,2022,MONTH_jan,0.6832853946947907
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.814797580269893
|
||||||
|
city_denver,2022,MONTH_jan,0.814797580269893
|
||||||
|
city_ankara,2022,MONTH_jan,0.870817843866171
|
||||||
|
city_harare,2022,MONTH_jan,0.7857142857142857
|
||||||
|
city_hanoi,2022,MONTH_jan,0.6257668711656442
|
||||||
|
city_washington,2022,MONTH_jan,0.814797580269893
|
||||||
|
city_bangkok,2022,MONTH_jan,0.47058823529411764
|
||||||
|
city_tunis,2022,MONTH_jan,0.6571428571428571
|
||||||
|
city_seoul,2022,MONTH_jan,0.6257668711656442
|
||||||
|
city_belgrade,2022,MONTH_jan,0.8
|
||||||
|
city_moscow,2022,MONTH_jan,0.8032786885245902
|
||||||
|
city_lima,2022,MONTH_jan,0.8
|
||||||
|
city_islamabad,2022,MONTH_jan,0.7448275862068966
|
||||||
|
city_abuja,2022,MONTH_jan,0.9411764705882353
|
||||||
|
city_managua,2022,MONTH_jan,0.8125
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.5527714502657555
|
||||||
|
city_rabat,2022,MONTH_jan,0.7619047619047619
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.6440677966101694
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.825
|
||||||
|
city_nairobi,2022,MONTH_jan,0.7857142857142857
|
||||||
|
city_tokyo,2022,MONTH_jan,0.665843621399177
|
||||||
|
city_baghdad,2022,MONTH_jan,0.7058823529411765
|
||||||
|
city_tehran,2022,MONTH_jan,0.7058823529411765
|
||||||
|
city_jakarta,2022,MONTH_jan,0.7700145560407569
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.8125
|
||||||
|
city_berlin,2022,MONTH_jan,0.6601796407185628
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.7857142857142857
|
||||||
|
city_cairo,2022,MONTH_jan,0.6571428571428571
|
||||||
|
city_quito,2022,MONTH_jan,0.7241379310344828
|
||||||
|
city_bogota,2022,MONTH_jan,0.7722222222222223
|
||||||
|
city_beijing,2022,MONTH_jan,0.6440677966101694
|
||||||
|
city_accra,2022,MONTH_jan,0.7857142857142857
|
||||||
|
city_ottawa,2022,MONTH_jan,0.7915690866510539
|
||||||
|
city_brasilia,2022,MONTH_jan,0.8020833333333334
|
||||||
|
city_la_paz,2022,MONTH_jan,0.8020833333333334
|
||||||
|
city_dhaka,2022,MONTH_jan,0.8126721763085399
|
||||||
|
city_yerevan,2022,MONTH_jan,0.870817843866171
|
||||||
|
city_chicago,2022,MONTH_jan,0.814797580269893
|
||||||
|
city_kyiv,2022,MONTH_jan,0.8125
|
||||||
|
city_dubai,2022,MONTH_jan,0.7058823529411765
|
||||||
|
city_mumbai,2022,MONTH_jan,0.7936507936507936
|
||||||
|
city_madrid,2022,MONTH_jan,0.7365591397849462
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.008906882591093117
|
||||||
|
city_brisbane,2022,MONTH_jan,0.06120157215047726
|
||||||
|
city_chengdu,2022,MONTH_jan,0.014885874958650347
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.05456570155902005
|
||||||
|
city_paris,2022,MONTH_jan,0.07147540983606557
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.06863905325443787
|
||||||
|
city_denver,2022,MONTH_jan,0.06395348837209303
|
||||||
|
city_ankara,2022,MONTH_jan,0.007591733445803458
|
||||||
|
city_harare,2022,MONTH_jan,0.07966804979253111
|
||||||
|
city_hanoi,2022,MONTH_jan,0.021666666666666667
|
||||||
|
city_washington,2022,MONTH_jan,0.05852842809364549
|
||||||
|
city_bangkok,2022,MONTH_jan,0.13266666666666665
|
||||||
|
city_tunis,2022,MONTH_jan,0.009369676320272573
|
||||||
|
city_seoul,2022,MONTH_jan,0.01606425702811245
|
||||||
|
city_belgrade,2022,MONTH_jan,0.014691478942213516
|
||||||
|
city_moscow,2022,MONTH_jan,0.0061624649859943975
|
||||||
|
city_lima,2022,MONTH_jan,0.023038156947444204
|
||||||
|
city_islamabad,2022,MONTH_jan,0.05456570155902005
|
||||||
|
city_abuja,2022,MONTH_jan,0.09248554913294797
|
||||||
|
city_managua,2022,MONTH_jan,0.11166666666666666
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.01694915254237288
|
||||||
|
city_rabat,2022,MONTH_jan,0.041666666666666664
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.11233211233211234
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.047756041426927506
|
||||||
|
city_nairobi,2022,MONTH_jan,0.1770573566084788
|
||||||
|
city_tokyo,2022,MONTH_jan,0.0037425149700598802
|
||||||
|
city_baghdad,2022,MONTH_jan,0.037800687285223365
|
||||||
|
city_tehran,2022,MONTH_jan,0.06412825651302605
|
||||||
|
city_jakarta,2022,MONTH_jan,0.2173776662484316
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.06795302013422819
|
||||||
|
city_berlin,2022,MONTH_jan,0.07147540983606557
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.11595394736842106
|
||||||
|
city_cairo,2022,MONTH_jan,0.0016680567139282735
|
||||||
|
city_quito,2022,MONTH_jan,0.05396290050590219
|
||||||
|
city_bogota,2022,MONTH_jan,0.1118421052631579
|
||||||
|
city_beijing,2022,MONTH_jan,0.014885874958650347
|
||||||
|
city_accra,2022,MONTH_jan,0.1770573566084788
|
||||||
|
city_ottawa,2022,MONTH_jan,0.05301144848183176
|
||||||
|
city_brasilia,2022,MONTH_jan,0.017452006980802792
|
||||||
|
city_la_paz,2022,MONTH_jan,0.08312958435207823
|
||||||
|
city_dhaka,2022,MONTH_jan,0.03836317135549872
|
||||||
|
city_yerevan,2022,MONTH_jan,0.02875924404272802
|
||||||
|
city_chicago,2022,MONTH_jan,0.06188925081433225
|
||||||
|
city_kyiv,2022,MONTH_jan,0.01675977653631285
|
||||||
|
city_dubai,2022,MONTH_jan,0.0016680567139282735
|
||||||
|
city_mumbai,2022,MONTH_jan,0.05456570155902005
|
||||||
|
city_madrid,2022,MONTH_jan,0.07147540983606557
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.601593625498008
|
||||||
|
city_brisbane,2022,MONTH_jan,0.6060606060606061
|
||||||
|
city_chengdu,2022,MONTH_jan,0.5254237288135594
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.6507936507936508
|
||||||
|
city_paris,2022,MONTH_jan,0.569806492883416
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_denver,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_ankara,2022,MONTH_jan,0.7948003714020427
|
||||||
|
city_harare,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_hanoi,2022,MONTH_jan,0.6158536585365854
|
||||||
|
city_washington,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_bangkok,2022,MONTH_jan,0.5555555555555556
|
||||||
|
city_tunis,2022,MONTH_jan,0.5142857142857142
|
||||||
|
city_seoul,2022,MONTH_jan,0.6158536585365854
|
||||||
|
city_belgrade,2022,MONTH_jan,0.6169354838709677
|
||||||
|
city_moscow,2022,MONTH_jan,0.5819672131147541
|
||||||
|
city_lima,2022,MONTH_jan,0.425
|
||||||
|
city_islamabad,2022,MONTH_jan,0.6363636363636364
|
||||||
|
city_abuja,2022,MONTH_jan,0.8333333333333334
|
||||||
|
city_managua,2022,MONTH_jan,0.6774193548387096
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.464638783269962
|
||||||
|
city_rabat,2022,MONTH_jan,0.6190476190476191
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.5254237288135594
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.5176882661996497
|
||||||
|
city_nairobi,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_tokyo,2022,MONTH_jan,0.5993009868421053
|
||||||
|
city_baghdad,2022,MONTH_jan,0.5
|
||||||
|
city_tehran,2022,MONTH_jan,0.5
|
||||||
|
city_jakarta,2022,MONTH_jan,0.6011644832605532
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.6774193548387096
|
||||||
|
city_berlin,2022,MONTH_jan,0.6111111111111112
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_cairo,2022,MONTH_jan,0.5142857142857142
|
||||||
|
city_quito,2022,MONTH_jan,0.4827586206896552
|
||||||
|
city_bogota,2022,MONTH_jan,0.45
|
||||||
|
city_beijing,2022,MONTH_jan,0.5254237288135594
|
||||||
|
city_accra,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_ottawa,2022,MONTH_jan,0.6352941176470588
|
||||||
|
city_brasilia,2022,MONTH_jan,0.7062314540059347
|
||||||
|
city_la_paz,2022,MONTH_jan,0.7062314540059347
|
||||||
|
city_dhaka,2022,MONTH_jan,0.7107438016528925
|
||||||
|
city_yerevan,2022,MONTH_jan,0.7948003714020427
|
||||||
|
city_chicago,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_kyiv,2022,MONTH_jan,0.59375
|
||||||
|
city_dubai,2022,MONTH_jan,0.5
|
||||||
|
city_mumbai,2022,MONTH_jan,0.6507936507936508
|
||||||
|
city_madrid,2022,MONTH_jan,0.4838709677419355
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.601593625498008
|
||||||
|
city_brisbane,2022,MONTH_jan,0.6060606060606061
|
||||||
|
city_chengdu,2022,MONTH_jan,0.5254237288135594
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.6507936507936508
|
||||||
|
city_paris,2022,MONTH_jan,0.569806492883416
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_denver,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_ankara,2022,MONTH_jan,0.7948003714020427
|
||||||
|
city_harare,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_hanoi,2022,MONTH_jan,0.6158536585365854
|
||||||
|
city_washington,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_bangkok,2022,MONTH_jan,0.5555555555555556
|
||||||
|
city_tunis,2022,MONTH_jan,0.5142857142857142
|
||||||
|
city_seoul,2022,MONTH_jan,0.6158536585365854
|
||||||
|
city_belgrade,2022,MONTH_jan,0.6169354838709677
|
||||||
|
city_moscow,2022,MONTH_jan,0.5819672131147541
|
||||||
|
city_lima,2022,MONTH_jan,0.425
|
||||||
|
city_islamabad,2022,MONTH_jan,0.6363636363636364
|
||||||
|
city_abuja,2022,MONTH_jan,0.8333333333333334
|
||||||
|
city_managua,2022,MONTH_jan,0.6774193548387096
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.464638783269962
|
||||||
|
city_rabat,2022,MONTH_jan,0.6190476190476191
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.5254237288135594
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.5176882661996497
|
||||||
|
city_nairobi,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_tokyo,2022,MONTH_jan,0.5993009868421053
|
||||||
|
city_baghdad,2022,MONTH_jan,0.5
|
||||||
|
city_tehran,2022,MONTH_jan,0.5
|
||||||
|
city_jakarta,2022,MONTH_jan,0.6011644832605532
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.6774193548387096
|
||||||
|
city_berlin,2022,MONTH_jan,0.6111111111111112
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_cairo,2022,MONTH_jan,0.5142857142857142
|
||||||
|
city_quito,2022,MONTH_jan,0.4827586206896552
|
||||||
|
city_bogota,2022,MONTH_jan,0.45
|
||||||
|
city_beijing,2022,MONTH_jan,0.5254237288135594
|
||||||
|
city_accra,2022,MONTH_jan,0.5714285714285714
|
||||||
|
city_ottawa,2022,MONTH_jan,0.6352941176470588
|
||||||
|
city_brasilia,2022,MONTH_jan,0.7062314540059347
|
||||||
|
city_la_paz,2022,MONTH_jan,0.7062314540059347
|
||||||
|
city_dhaka,2022,MONTH_jan,0.7107438016528925
|
||||||
|
city_yerevan,2022,MONTH_jan,0.7948003714020427
|
||||||
|
city_chicago,2022,MONTH_jan,0.6120930232558139
|
||||||
|
city_kyiv,2022,MONTH_jan,0.59375
|
||||||
|
city_dubai,2022,MONTH_jan,0.5
|
||||||
|
city_mumbai,2022,MONTH_jan,0.6507936507936508
|
||||||
|
city_madrid,2022,MONTH_jan,0.4838709677419355
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.2964426877470356
|
||||||
|
city_brisbane,2022,MONTH_jan,0.3141891891891892
|
||||||
|
city_chengdu,2022,MONTH_jan,0.4745762711864407
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.4603174603174603
|
||||||
|
city_paris,2022,MONTH_jan,0.3169346452283817
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.3714551371455137
|
||||||
|
city_denver,2022,MONTH_jan,0.3714551371455137
|
||||||
|
city_ankara,2022,MONTH_jan,0.5386046511627907
|
||||||
|
city_harare,2022,MONTH_jan,0.21428571428571427
|
||||||
|
city_hanoi,2022,MONTH_jan,0.4878048780487805
|
||||||
|
city_washington,2022,MONTH_jan,0.3714551371455137
|
||||||
|
city_bangkok,2022,MONTH_jan,0.5
|
||||||
|
city_tunis,2022,MONTH_jan,0.4647887323943662
|
||||||
|
city_seoul,2022,MONTH_jan,0.4878048780487805
|
||||||
|
city_belgrade,2022,MONTH_jan,0.3089430894308943
|
||||||
|
city_moscow,2022,MONTH_jan,0.3442622950819672
|
||||||
|
city_lima,2022,MONTH_jan,0.225
|
||||||
|
city_islamabad,2022,MONTH_jan,0.3719298245614035
|
||||||
|
city_abuja,2022,MONTH_jan,0.4117647058823529
|
||||||
|
city_managua,2022,MONTH_jan,0.375
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.2883156297420334
|
||||||
|
city_rabat,2022,MONTH_jan,0.2926829268292683
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.4745762711864407
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.3334112422578006
|
||||||
|
city_nairobi,2022,MONTH_jan,0.21428571428571427
|
||||||
|
city_tokyo,2022,MONTH_jan,0.8559967084961942
|
||||||
|
city_baghdad,2022,MONTH_jan,0.3137254901960784
|
||||||
|
city_tehran,2022,MONTH_jan,0.3137254901960784
|
||||||
|
city_jakarta,2022,MONTH_jan,0.36627906976744184
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.375
|
||||||
|
city_berlin,2022,MONTH_jan,0.3335826477187734
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.21428571428571427
|
||||||
|
city_cairo,2022,MONTH_jan,0.4647887323943662
|
||||||
|
city_quito,2022,MONTH_jan,0.27586206896551724
|
||||||
|
city_bogota,2022,MONTH_jan,0.3111111111111111
|
||||||
|
city_beijing,2022,MONTH_jan,0.4745762711864407
|
||||||
|
city_accra,2022,MONTH_jan,0.21428571428571427
|
||||||
|
city_ottawa,2022,MONTH_jan,0.3568075117370892
|
||||||
|
city_brasilia,2022,MONTH_jan,0.5705794947994056
|
||||||
|
city_la_paz,2022,MONTH_jan,0.5705794947994056
|
||||||
|
city_dhaka,2022,MONTH_jan,0.3159340659340659
|
||||||
|
city_yerevan,2022,MONTH_jan,0.5386046511627907
|
||||||
|
city_chicago,2022,MONTH_jan,0.3714551371455137
|
||||||
|
city_kyiv,2022,MONTH_jan,0.3939393939393939
|
||||||
|
city_dubai,2022,MONTH_jan,0.3137254901960784
|
||||||
|
city_mumbai,2022,MONTH_jan,0.4603174603174603
|
||||||
|
city_madrid,2022,MONTH_jan,0.37209302325581395
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.9065934065934066
|
||||||
|
city_brisbane,2022,MONTH_jan,0.8987854251012146
|
||||||
|
city_chengdu,2022,MONTH_jan,0.8
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.8666666666666667
|
||||||
|
city_paris,2022,MONTH_jan,0.8818422046055115
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.9293150684931507
|
||||||
|
city_denver,2022,MONTH_jan,0.9293150684931507
|
||||||
|
city_ankara,2022,MONTH_jan,0.9027283511269276
|
||||||
|
city_harare,2022,MONTH_jan,1
|
||||||
|
city_hanoi,2022,MONTH_jan,0.9253731343283582
|
||||||
|
city_washington,2022,MONTH_jan,0.9293150684931507
|
||||||
|
city_bangkok,2022,MONTH_jan,0.7692307692307693
|
||||||
|
city_tunis,2022,MONTH_jan,0.9056603773584906
|
||||||
|
city_seoul,2022,MONTH_jan,0.9253731343283582
|
||||||
|
city_belgrade,2022,MONTH_jan,0.9090909090909091
|
||||||
|
city_moscow,2022,MONTH_jan,0.7934782608695652
|
||||||
|
city_lima,2022,MONTH_jan,0.9705882352941176
|
||||||
|
city_islamabad,2022,MONTH_jan,0.8928571428571429
|
||||||
|
city_abuja,2022,MONTH_jan,1
|
||||||
|
city_managua,2022,MONTH_jan,0.9047619047619048
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.924908424908425
|
||||||
|
city_rabat,2022,MONTH_jan,0.9714285714285714
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.8
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.9220470098185064
|
||||||
|
city_nairobi,2022,MONTH_jan,1
|
||||||
|
city_tokyo,2022,MONTH_jan,0.5873192436040044
|
||||||
|
city_baghdad,2022,MONTH_jan,0.925
|
||||||
|
city_tehran,2022,MONTH_jan,0.925
|
||||||
|
city_jakarta,2022,MONTH_jan,0.8819938962360122
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.9047619047619048
|
||||||
|
city_berlin,2022,MONTH_jan,0.9141824751580849
|
||||||
|
city_addis_ababa,2022,MONTH_jan,1
|
||||||
|
city_cairo,2022,MONTH_jan,0.9056603773584906
|
||||||
|
city_quito,2022,MONTH_jan,0.9565217391304348
|
||||||
|
city_bogota,2022,MONTH_jan,0.8592592592592593
|
||||||
|
city_beijing,2022,MONTH_jan,0.8
|
||||||
|
city_accra,2022,MONTH_jan,1
|
||||||
|
city_ottawa,2022,MONTH_jan,0.8787878787878788
|
||||||
|
city_brasilia,2022,MONTH_jan,0.9236641221374046
|
||||||
|
city_la_paz,2022,MONTH_jan,0.9236641221374046
|
||||||
|
city_dhaka,2022,MONTH_jan,0.91701244813278
|
||||||
|
city_yerevan,2022,MONTH_jan,0.9027283511269276
|
||||||
|
city_chicago,2022,MONTH_jan,0.9293150684931507
|
||||||
|
city_kyiv,2022,MONTH_jan,0.9090909090909091
|
||||||
|
city_dubai,2022,MONTH_jan,0.925
|
||||||
|
city_mumbai,2022,MONTH_jan,0.8666666666666667
|
||||||
|
city_madrid,2022,MONTH_jan,0.8149882903981265
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.9398907103825137
|
||||||
|
city_brisbane,2022,MONTH_jan,0.9061224489795918
|
||||||
|
city_chengdu,2022,MONTH_jan,0.8717948717948718
|
||||||
|
city_new_delhi,2022,MONTH_jan,1
|
||||||
|
city_paris,2022,MONTH_jan,0.898988944533686
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.9071938495332235
|
||||||
|
city_denver,2022,MONTH_jan,0.9071938495332235
|
||||||
|
city_ankara,2022,MONTH_jan,0.9175627240143369
|
||||||
|
city_harare,2022,MONTH_jan,1
|
||||||
|
city_hanoi,2022,MONTH_jan,0.8962962962962963
|
||||||
|
city_washington,2022,MONTH_jan,0.9071938495332235
|
||||||
|
city_bangkok,2022,MONTH_jan,0.9230769230769231
|
||||||
|
city_tunis,2022,MONTH_jan,0.8846153846153846
|
||||||
|
city_seoul,2022,MONTH_jan,0.8962962962962963
|
||||||
|
city_belgrade,2022,MONTH_jan,0.9179487179487179
|
||||||
|
city_moscow,2022,MONTH_jan,0.8571428571428571
|
||||||
|
city_lima,2022,MONTH_jan,0.9411764705882353
|
||||||
|
city_islamabad,2022,MONTH_jan,0.8290155440414507
|
||||||
|
city_abuja,2022,MONTH_jan,0.8571428571428571
|
||||||
|
city_managua,2022,MONTH_jan,0.9523809523809523
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.8682027649769585
|
||||||
|
city_rabat,2022,MONTH_jan,0.9411764705882353
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.8717948717948718
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.8594192107222636
|
||||||
|
city_nairobi,2022,MONTH_jan,1
|
||||||
|
city_tokyo,2022,MONTH_jan,0.5911220165068035
|
||||||
|
city_baghdad,2022,MONTH_jan,0.975
|
||||||
|
city_tehran,2022,MONTH_jan,0.975
|
||||||
|
city_jakarta,2022,MONTH_jan,0.9158215010141988
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.9523809523809523
|
||||||
|
city_berlin,2022,MONTH_jan,0.9038112522686026
|
||||||
|
city_addis_ababa,2022,MONTH_jan,1
|
||||||
|
city_cairo,2022,MONTH_jan,0.8846153846153846
|
||||||
|
city_quito,2022,MONTH_jan,1
|
||||||
|
city_bogota,2022,MONTH_jan,0.8712121212121212
|
||||||
|
city_beijing,2022,MONTH_jan,0.8717948717948718
|
||||||
|
city_accra,2022,MONTH_jan,1
|
||||||
|
city_ottawa,2022,MONTH_jan,0.8953168044077136
|
||||||
|
city_brasilia,2022,MONTH_jan,0.9504761904761905
|
||||||
|
city_la_paz,2022,MONTH_jan,0.9504761904761905
|
||||||
|
city_dhaka,2022,MONTH_jan,0.9159663865546218
|
||||||
|
city_yerevan,2022,MONTH_jan,0.9175627240143369
|
||||||
|
city_chicago,2022,MONTH_jan,0.9071938495332235
|
||||||
|
city_kyiv,2022,MONTH_jan,0.9090909090909091
|
||||||
|
city_dubai,2022,MONTH_jan,0.975
|
||||||
|
city_mumbai,2022,MONTH_jan,1
|
||||||
|
city_madrid,2022,MONTH_jan,0.9479905437352246
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
city_data,year,month,prop
|
||||||
|
city_bucharest,2022,MONTH_jan,0.9276054097056484
|
||||||
|
city_brisbane,2022,MONTH_jan,0.9355913381454747
|
||||||
|
city_chengdu,2022,MONTH_jan,0.874793524942187
|
||||||
|
city_new_delhi,2022,MONTH_jan,0.947289156626506
|
||||||
|
city_paris,2022,MONTH_jan,0.9259986902423052
|
||||||
|
city_san_francisco,2022,MONTH_jan,0.9016393442622951
|
||||||
|
city_denver,2022,MONTH_jan,0.9326923076923077
|
||||||
|
city_ankara,2022,MONTH_jan,0.9283050145047659
|
||||||
|
city_harare,2022,MONTH_jan,0.966996699669967
|
||||||
|
city_hanoi,2022,MONTH_jan,0.9691666666666666
|
||||||
|
city_washington,2022,MONTH_jan,0.9068219633943427
|
||||||
|
city_bangkok,2022,MONTH_jan,0.9223040857334226
|
||||||
|
city_tunis,2022,MONTH_jan,0.9776490066225165
|
||||||
|
city_seoul,2022,MONTH_jan,0.9156626506024096
|
||||||
|
city_belgrade,2022,MONTH_jan,0.946360153256705
|
||||||
|
city_moscow,2022,MONTH_jan,0.8717379233759023
|
||||||
|
city_lima,2022,MONTH_jan,0.8871428571428571
|
||||||
|
city_islamabad,2022,MONTH_jan,0.947289156626506
|
||||||
|
city_abuja,2022,MONTH_jan,0.9919093851132686
|
||||||
|
city_managua,2022,MONTH_jan,0.84
|
||||||
|
city_amsterdam,2022,MONTH_jan,0.8231389284020862
|
||||||
|
city_rabat,2022,MONTH_jan,0.8991666666666667
|
||||||
|
city_ulaanbaatar,2022,MONTH_jan,0.8192918192918193
|
||||||
|
city_mexico_city,2022,MONTH_jan,0.9753015508328546
|
||||||
|
city_nairobi,2022,MONTH_jan,0.9818181818181818
|
||||||
|
city_tokyo,2022,MONTH_jan,0.9380134428678119
|
||||||
|
city_baghdad,2022,MONTH_jan,0.9808013355592654
|
||||||
|
city_tehran,2022,MONTH_jan,0.9425901201602136
|
||||||
|
city_jakarta,2022,MONTH_jan,0.98875
|
||||||
|
city_guatemala_city,2022,MONTH_jan,0.9072416598860863
|
||||||
|
city_berlin,2022,MONTH_jan,0.9259986902423052
|
||||||
|
city_addis_ababa,2022,MONTH_jan,0.9536585365853658
|
||||||
|
city_cairo,2022,MONTH_jan,0.9975
|
||||||
|
city_quito,2022,MONTH_jan,0.9073455759599333
|
||||||
|
city_bogota,2022,MONTH_jan,0.8782894736842105
|
||||||
|
city_beijing,2022,MONTH_jan,0.874793524942187
|
||||||
|
city_accra,2022,MONTH_jan,0.9818181818181818
|
||||||
|
city_ottawa,2022,MONTH_jan,0.8504230960676954
|
||||||
|
city_brasilia,2022,MONTH_jan,0.8677639046538025
|
||||||
|
city_la_paz,2022,MONTH_jan,0.8522286821705426
|
||||||
|
city_dhaka,2022,MONTH_jan,0.99
|
||||||
|
city_yerevan,2022,MONTH_jan,0.9705641864268193
|
||||||
|
city_chicago,2022,MONTH_jan,0.9385113268608414
|
||||||
|
city_kyiv,2022,MONTH_jan,0.8817120622568093
|
||||||
|
city_dubai,2022,MONTH_jan,0.9975
|
||||||
|
city_mumbai,2022,MONTH_jan,0.947289156626506
|
||||||
|
city_madrid,2022,MONTH_jan,0.9259986902423052
|
|
|
@ -0,0 +1,551 @@
|
||||||
|
typedef struct {
|
||||||
|
Incenter_City_Id city;
|
||||||
|
u32 year;
|
||||||
|
Incenter_Month_Id month;
|
||||||
|
r32 value_0;
|
||||||
|
r32 value_1;
|
||||||
|
r32 value_2;
|
||||||
|
} Incenter_Test_Data_Row;
|
||||||
|
static Incenter_Test_Data_Row test_data[] = {
|
||||||
|
[36] = { city_yerevan, 2019, MONTH_Feb, 0.222480434220212f, 0, 0 },
|
||||||
|
[37] = { city_yerevan, 2019, MONTH_Apr, 0.4029543563896680f, 0, 0 },
|
||||||
|
[38] = { city_yerevan, 2019, MONTH_Jun, 0.0084130412911773f, 0, 0 },
|
||||||
|
[39] = { city_yerevan, 2019, MONTH_Oct, 0.4935333893524508f, 0, 0 },
|
||||||
|
[40] = { city_yerevan, 2020, MONTH_Mar, 0.795608809243028f, 0, 0 },
|
||||||
|
[41] = { city_yerevan, 2020, MONTH_May, 0.871852281333013f, 0, 0 },
|
||||||
|
[42] = { city_yerevan, 2020, MONTH_Oct, 0.757850269654449f, 0, 0 },
|
||||||
|
[43] = { city_yerevan, 2020, MONTH_Dec, 0.305973943715009f, 0, 0 },
|
||||||
|
[44] = { city_yerevan, 2021, MONTH_Mar, 0.575105708333009f, 0, 0 },
|
||||||
|
[45] = { city_yerevan, 2021, MONTH_May, 0.3241565018180455f, 0, 0 },
|
||||||
|
[46] = { city_yerevan, 2021, MONTH_Oct, 0.1391937656411673f, 0, 0 },
|
||||||
|
[47] = { city_yerevan, 2021, MONTH_Dec, 0.408290129008908f, 0, 0 },
|
||||||
|
[60] = { city_dhaka, 2019, MONTH_Mar, 0.696487045082252f, 0, 0 },
|
||||||
|
[61] = { city_dhaka, 2019, MONTH_May, 0.926874194615664f, 0, 0 },
|
||||||
|
[62] = { city_dhaka, 2019, MONTH_Oct, 0.065784704818257f, 0, 0 },
|
||||||
|
[63] = { city_dhaka, 2019, MONTH_Dec, 0.267978732515615f, 0, 0 },
|
||||||
|
[64] = { city_dhaka, 2020, MONTH_Feb, 0.741594899662727f, 0, 0 },
|
||||||
|
[65] = { city_dhaka, 2020, MONTH_Apr, 0.888792879778451f, 0, 0 },
|
||||||
|
[66] = { city_dhaka, 2020, MONTH_Jun, 0.952616025778708f, 0, 0 },
|
||||||
|
[67] = { city_dhaka, 2020, MONTH_Oct, 0.539424539962102f, 0, 0 },
|
||||||
|
[68] = { city_dhaka, 2021, MONTH_Feb, 0.783291871057349f, 0, 0 },
|
||||||
|
[69] = { city_dhaka, 2021, MONTH_Apr, 0.1670300347942025f, 0, 0 },
|
||||||
|
[70] = { city_dhaka, 2021, MONTH_Jun, 0.916080035896739f, 0, 0 },
|
||||||
|
[71] = { city_dhaka, 2021, MONTH_Oct, 0.04557651966926190f, 0, 0 },
|
||||||
|
[72] = { city_sucre, 2019, MONTH_Feb, 0.905795384338579f, 0, 0 },
|
||||||
|
[73] = { city_sucre, 2019, MONTH_Apr, 0.04894925227303792f, 0, 0 },
|
||||||
|
[74] = { city_sucre, 2019, MONTH_Jun, 0.3974826752695833f, 0, 0 },
|
||||||
|
[75] = { city_sucre, 2019, MONTH_Oct, 0.3240253361391306f, 0, 0 },
|
||||||
|
[76] = { city_sucre, 2020, MONTH_Feb, 0.255506118683492f, 0, 0 },
|
||||||
|
[77] = { city_sucre, 2020, MONTH_Apr, 0.683469845394748f, 0, 0 },
|
||||||
|
[78] = { city_sucre, 2020, MONTH_Jun, 0.0860787488725892f, 0, 0 },
|
||||||
|
[79] = { city_sucre, 2020, MONTH_Oct, 0.480200082551104f, 0, 0 },
|
||||||
|
[80] = { city_sucre, 2021, MONTH_Apr, 0.933388110124702f, 0, 0 },
|
||||||
|
[81] = { city_sucre, 2021, MONTH_Jul, 0.826055726458284f, 0, 0 },
|
||||||
|
[82] = { city_sucre, 2021, MONTH_Sep, 0.655861858686346f, 0, 0 },
|
||||||
|
[83] = { city_sucre, 2022, MONTH_Jan, 0.995135577230638f, 0, 0 },
|
||||||
|
[84] = { city_brasilia, 2019, MONTH_Apr, 0.934349752963540f, 0, 0 },
|
||||||
|
[85] = { city_brasilia, 2019, MONTH_Jul, 0.557085223032821f, 0, 0 },
|
||||||
|
[86] = { city_brasilia, 2019, MONTH_Sep, 0.224253014743045f, 0, 0 },
|
||||||
|
[87] = { city_brasilia, 2020, MONTH_Jan, 0.3792768359577919f, 0, 0 },
|
||||||
|
[88] = { city_brasilia, 2020, MONTH_Feb, 0.134570768681787f, 0, 0 },
|
||||||
|
[89] = { city_brasilia, 2020, MONTH_Apr, 0.2982662489386165f, 0, 0 },
|
||||||
|
[90] = { city_brasilia, 2020, MONTH_Jun, 0.847116114015527f, 0, 0 },
|
||||||
|
[91] = { city_brasilia, 2020, MONTH_Oct, 0.710668345133466f, 0, 0 },
|
||||||
|
[92] = { city_brasilia, 2021, MONTH_Apr, 0.882130538520757f, 0, 0 },
|
||||||
|
[93] = { city_brasilia, 2021, MONTH_Jul, 0.634126485396549f, 0, 0 },
|
||||||
|
[94] = { city_brasilia, 2021, MONTH_Sep, 0.879304288498351f, 0, 0 },
|
||||||
|
[95] = { city_brasilia, 2022, MONTH_Jan, 0.367836889045680f, 0, 0 },
|
||||||
|
[96] = { city_ottawa, 2019, MONTH_Feb, 0.4644661026237456f, 0, 0 },
|
||||||
|
[97] = { city_ottawa, 2019, MONTH_Apr, 0.27044176317875f, 0, 0 },
|
||||||
|
[98] = { city_ottawa, 2019, MONTH_Jun, 0.78502064470336f, 0, 0 },
|
||||||
|
[99] = { city_ottawa, 2019, MONTH_Oct, 0.439787889686537f, 0, 0 },
|
||||||
|
[100] = { city_ottawa, 2020, MONTH_Mar, 0.625070053347673f, 0, 0 },
|
||||||
|
[101] = { city_ottawa, 2020, MONTH_May, 0.854391809397701f, 0, 0 },
|
||||||
|
[102] = { city_ottawa, 2020, MONTH_Oct, 0.1092476526609484f, 0, 0 },
|
||||||
|
[103] = { city_ottawa, 2020, MONTH_Dec, 0.0698930895777035f, 0, 0 },
|
||||||
|
[104] = { city_ottawa, 2021, MONTH_May, 0.0219222869517711f, 0, 0 },
|
||||||
|
[105] = { city_ottawa, 2021, MONTH_Aug, 0.3118047013029038f, 0, 0 },
|
||||||
|
[106] = { city_ottawa, 2021, MONTH_Nov, 0.800964131022624f, 0, 0 },
|
||||||
|
[107] = { city_ottawa, 2021, MONTH_Dec, 0.893928203453701f, 0, 0 },
|
||||||
|
[108] = { city_santiago, 2019, MONTH_Feb, 0.260406662278948f, 0, 0 },
|
||||||
|
[109] = { city_santiago, 2019, MONTH_Apr, 0.0440821965051458f, 0, 0 },
|
||||||
|
[110] = { city_santiago, 2019, MONTH_Jun, 0.03370085386772181f, 0, 0 },
|
||||||
|
[111] = { city_santiago, 2019, MONTH_Oct, 0.0702001450638586f, 0, 0 },
|
||||||
|
[112] = { city_santiago, 2020, MONTH_Mar, 0.66916706280028f, 0, 0 },
|
||||||
|
[113] = { city_santiago, 2020, MONTH_May, 0.394667241732750f, 0, 0 },
|
||||||
|
[114] = { city_santiago, 2020, MONTH_Oct, 0.9696170778040f, 0, 0 },
|
||||||
|
[115] = { city_santiago, 2020, MONTH_Dec, 0.692669953953974f, 0, 0 },
|
||||||
|
[116] = { city_santiago, 2021, MONTH_Feb, 0.885578817071499f, 0, 0 },
|
||||||
|
[117] = { city_santiago, 2021, MONTH_Apr, 0.02248585274337977f, 0, 0 },
|
||||||
|
[118] = { city_santiago, 2021, MONTH_Jun, 0.01661168283700642f, 0, 0 },
|
||||||
|
[119] = { city_santiago, 2021, MONTH_Oct, 0.738806466943267f, 0, 0 },
|
||||||
|
[120] = { city_beijing, 2019, MONTH_Mar, 0.398464980892838f, 0, 0 },
|
||||||
|
[121] = { city_beijing, 2019, MONTH_May, 0.551648164638685f, 0, 0 },
|
||||||
|
[122] = { city_beijing, 2019, MONTH_Oct, 0.021236210735964f, 0, 0 },
|
||||||
|
[123] = { city_beijing, 2019, MONTH_Dec, 0.2339279354599085f, 0, 0 },
|
||||||
|
[124] = { city_beijing, 2020, MONTH_Mar, 0.897658054227696f, 0, 0 },
|
||||||
|
[125] = { city_beijing, 2020, MONTH_May, 0.512517872887249f, 0, 0 },
|
||||||
|
[126] = { city_beijing, 2020, MONTH_Oct, 0.0988590392525249f, 0, 0 },
|
||||||
|
[127] = { city_beijing, 2020, MONTH_Dec, 0.99615807233472f, 0, 0 },
|
||||||
|
[128] = { city_beijing, 2021, MONTH_May, 0.391024451068782f, 0, 0 },
|
||||||
|
[129] = { city_beijing, 2021, MONTH_Aug, 0.591905762173565f, 0, 0 },
|
||||||
|
[130] = { city_beijing, 2021, MONTH_Nov, 0.2283096306364279f, 0, 0 },
|
||||||
|
[131] = { city_beijing, 2021, MONTH_Dec, 0.821811925597835f, 0, 0 },
|
||||||
|
[132] = { city_bogota, 2019, MONTH_Feb, 0.04055961855563494f, 0, 0 },
|
||||||
|
[133] = { city_bogota, 2019, MONTH_Apr, 0.669754494655513f, 0, 0 },
|
||||||
|
[134] = { city_bogota, 2019, MONTH_Jun, 0.701264834768624f, 0, 0 },
|
||||||
|
[135] = { city_bogota, 2019, MONTH_Oct, 0.926643006799590f, 0, 0 },
|
||||||
|
[136] = { city_bogota, 2020, MONTH_May, 0.926535096485845f, 0, 0 },
|
||||||
|
[137] = { city_bogota, 2020, MONTH_Aug, 0.562271964832498f, 0, 0 },
|
||||||
|
[138] = { city_bogota, 2020, MONTH_Nov, 0.1850507621318452f, 0, 0 },
|
||||||
|
[139] = { city_bogota, 2020, MONTH_Dec, 0.1320097943504098f, 0, 0 },
|
||||||
|
[140] = { city_bogota, 2021, MONTH_Apr, 0.2549272436870123f, 0, 0 },
|
||||||
|
[141] = { city_bogota, 2021, MONTH_Jul, 0.655188137041105f, 0, 0 },
|
||||||
|
[142] = { city_bogota, 2021, MONTH_Sep, 0.330150715675793f, 0, 0 },
|
||||||
|
[143] = { city_bogota, 2022, MONTH_Jan, 0.931982538146994f, 0, 0 },
|
||||||
|
[144] = { city_nicosia, 2019, MONTH_Feb, 0.811253678048109f, 0, 0 },
|
||||||
|
[145] = { city_nicosia, 2019, MONTH_Apr, 0.712224222819743f, 0, 0 },
|
||||||
|
[146] = { city_nicosia, 2019, MONTH_Jun, 0.399273172446563f, 0, 0 },
|
||||||
|
[147] = { city_nicosia, 2019, MONTH_Oct, 0.056092503429609f, 0, 0 },
|
||||||
|
[148] = { city_nicosia, 2020, MONTH_Mar, 0.60563587382731f, 0, 0 },
|
||||||
|
[149] = { city_nicosia, 2020, MONTH_May, 0.815528514704807f, 0, 0 },
|
||||||
|
[150] = { city_nicosia, 2020, MONTH_Oct, 0.728314034392938f, 0, 0 },
|
||||||
|
[151] = { city_nicosia, 2020, MONTH_Dec, 0.159377338887028f, 0, 0 },
|
||||||
|
[152] = { city_nicosia, 2021, MONTH_May, 0.533098572342027f, 0, 0 },
|
||||||
|
[153] = { city_nicosia, 2021, MONTH_Aug, 0.4664341277469371f, 0, 0 },
|
||||||
|
[154] = { city_nicosia, 2021, MONTH_Nov, 0.730237961803562f, 0, 0 },
|
||||||
|
[155] = { city_nicosia, 2021, MONTH_Dec, 0.597177425986761f, 0, 0 },
|
||||||
|
[156] = { city_quito, 2019, MONTH_May, 0.3900500941853586f, 0, 0 },
|
||||||
|
[157] = { city_quito, 2019, MONTH_Aug, 0.902510252650640f, 0, 0 },
|
||||||
|
[158] = { city_quito, 2019, MONTH_Nov, 0.50747923203348f, 0, 0 },
|
||||||
|
[159] = { city_quito, 2019, MONTH_Dec, 0.504675362331222f, 0, 0 },
|
||||||
|
[160] = { city_quito, 2020, MONTH_Mar, 0.893239434326622f, 0, 0 },
|
||||||
|
[161] = { city_quito, 2020, MONTH_May, 0.1972236787064364f, 0, 0 },
|
||||||
|
[162] = { city_quito, 2020, MONTH_Oct, 0.461624391667064f, 0, 0 },
|
||||||
|
[163] = { city_quito, 2020, MONTH_Dec, 0.2292995261096597f, 0, 0 },
|
||||||
|
[164] = { city_quito, 2021, MONTH_Apr, 0.67583955263968f, 0, 0 },
|
||||||
|
[165] = { city_quito, 2021, MONTH_Jul, 0.752273762232872f, 0, 0 },
|
||||||
|
[166] = { city_quito, 2021, MONTH_Sep, 0.754769476238442f, 0, 0 },
|
||||||
|
[167] = { city_quito, 2022, MONTH_Jan, 0.522476871813856f, 0, 0 },
|
||||||
|
[168] = { city_cairo, 2019, MONTH_Apr, 0.1225197816901859f, 0, 0 },
|
||||||
|
[169] = { city_cairo, 2019, MONTH_Jul, 0.64021444184204f, 0, 0 },
|
||||||
|
[170] = { city_cairo, 2019, MONTH_Sep, 0.1129228329032401f, 0, 0 },
|
||||||
|
[171] = { city_cairo, 2020, MONTH_Jan, 0.44379330991469f, 0, 0 },
|
||||||
|
[172] = { city_cairo, 2020, MONTH_May, 0.369533191151981f, 0, 0 },
|
||||||
|
[173] = { city_cairo, 2020, MONTH_Aug, 0.087571921991018f, 0, 0 },
|
||||||
|
[174] = { city_cairo, 2020, MONTH_Nov, 0.130023762282846f, 0, 0 },
|
||||||
|
[175] = { city_cairo, 2020, MONTH_Dec, 0.619080240994548f, 0, 0 },
|
||||||
|
[176] = { city_cairo, 2021, MONTH_May, 0.265431673532736f, 0, 0 },
|
||||||
|
[177] = { city_cairo, 2021, MONTH_Aug, 0.0838086831407579f, 0, 0 },
|
||||||
|
[178] = { city_cairo, 2021, MONTH_Nov, 0.002175360042457663f, 0, 0 },
|
||||||
|
[179] = { city_cairo, 2021, MONTH_Dec, 0.342714385178964f, 0, 0 },
|
||||||
|
[180] = { city_addis_ababa, 2019, MONTH_Feb, 0.527483000268353f, 0, 0 },
|
||||||
|
[181] = { city_addis_ababa, 2019, MONTH_Apr, 0.02860178841412208f, 0, 0 },
|
||||||
|
[182] = { city_addis_ababa, 2019, MONTH_Jun, 0.2240604563219019f, 0, 0 },
|
||||||
|
[183] = { city_addis_ababa, 2019, MONTH_Oct, 0.157084009337969f, 0, 0 },
|
||||||
|
[184] = { city_addis_ababa, 2020, MONTH_Apr, 0.469697598033293f, 0, 0 },
|
||||||
|
[185] = { city_addis_ababa, 2020, MONTH_Jul, 0.701891216846054f, 0, 0 },
|
||||||
|
[186] = { city_addis_ababa, 2020, MONTH_Sep, 0.670718895080620f, 0, 0 },
|
||||||
|
[187] = { city_addis_ababa, 2021, MONTH_Jan, 0.2222353125566932f, 0, 0 },
|
||||||
|
[188] = { city_addis_ababa, 2021, MONTH_Mar, 0.739784695704446f, 0, 0 },
|
||||||
|
[189] = { city_addis_ababa, 2021, MONTH_May, 0.296333188085118f, 0, 0 },
|
||||||
|
[190] = { city_addis_ababa, 2021, MONTH_Oct, 0.2272026794508933f, 0, 0 },
|
||||||
|
[191] = { city_addis_ababa, 2021, MONTH_Dec, 0.97410047246957f, 0, 0 },
|
||||||
|
[192] = { city_berlin, 2019, MONTH_May, 0.966330648602629f, 0, 0 },
|
||||||
|
[193] = { city_berlin, 2019, MONTH_Aug, 0.0176205852695634f, 0, 0 },
|
||||||
|
[194] = { city_berlin, 2019, MONTH_Nov, 0.584547668032789f, 0, 0 },
|
||||||
|
[195] = { city_berlin, 2019, MONTH_Dec, 0.0526735938814365f, 0, 0 },
|
||||||
|
[196] = { city_berlin, 2020, MONTH_Feb, 0.00291208011562660f, 0, 0 },
|
||||||
|
[197] = { city_berlin, 2020, MONTH_Apr, 0.46161889811961f, 0, 0 },
|
||||||
|
[198] = { city_berlin, 2020, MONTH_Jun, 0.918717731989696f, 0, 0 },
|
||||||
|
[199] = { city_berlin, 2020, MONTH_Oct, 0.526922668293464f, 0, 0 },
|
||||||
|
[200] = { city_berlin, 2021, MONTH_Feb, 0.407533147535702f, 0, 0 },
|
||||||
|
[201] = { city_berlin, 2021, MONTH_Apr, 0.260631254569428f, 0, 0 },
|
||||||
|
[202] = { city_berlin, 2021, MONTH_Jun, 0.850691099863162f, 0, 0 },
|
||||||
|
[203] = { city_berlin, 2021, MONTH_Oct, 0.447745362619697f, 0, 0 },
|
||||||
|
[204] = { city_athens, 2019, MONTH_Apr, 0.475810196278598f, 0, 0 },
|
||||||
|
[205] = { city_athens, 2019, MONTH_Jul, 0.727351163708599f, 0, 0 },
|
||||||
|
[206] = { city_athens, 2019, MONTH_Sep, 0.1173467409143746f, 0, 0 },
|
||||||
|
[207] = { city_athens, 2020, MONTH_Jan, 0.701133914670033f, 0, 0 },
|
||||||
|
[208] = { city_athens, 2020, MONTH_May, 0.502187471083579f, 0, 0 },
|
||||||
|
[209] = { city_athens, 2020, MONTH_Aug, 0.722469653059002f, 0, 0 },
|
||||||
|
[210] = { city_athens, 2020, MONTH_Nov, 0.0705704436871592f, 0, 0 },
|
||||||
|
[211] = { city_athens, 2020, MONTH_Dec, 0.412202187265480f, 0, 0 },
|
||||||
|
[212] = { city_athens, 2021, MONTH_Apr, 0.789529374678307f, 0, 0 },
|
||||||
|
[213] = { city_athens, 2021, MONTH_Jul, 0.4263051767962031f, 0, 0 },
|
||||||
|
[214] = { city_athens, 2021, MONTH_Sep, 0.422014815723197f, 0, 0 },
|
||||||
|
[215] = { city_athens, 2022, MONTH_Jan, 0.0793089415950993f, 0, 0 },
|
||||||
|
[216] = { city_guatemala_city, 2019, MONTH_Feb, 0.560605380854630f, 0, 0 },
|
||||||
|
[217] = { city_guatemala_city, 2019, MONTH_Apr, 0.3382526681121018f, 0, 0 },
|
||||||
|
[218] = { city_guatemala_city, 2019, MONTH_Jun, 0.395812130966940f, 0, 0 },
|
||||||
|
[219] = { city_guatemala_city, 2019, MONTH_Oct, 0.812327694885220f, 0, 0 },
|
||||||
|
[220] = { city_guatemala_city, 2020, MONTH_May, 0.654610646195839f, 0, 0 },
|
||||||
|
[221] = { city_guatemala_city, 2020, MONTH_Aug, 0.365603885209179f, 0, 0 },
|
||||||
|
[222] = { city_guatemala_city, 2020, MONTH_Nov, 0.299155503687062f, 0, 0 },
|
||||||
|
[223] = { city_guatemala_city, 2020, MONTH_Dec, 0.184138836513171f, 0, 0 },
|
||||||
|
[224] = { city_guatemala_city, 2021, MONTH_Mar, 0.704976319975955f, 0, 0 },
|
||||||
|
[225] = { city_guatemala_city, 2021, MONTH_May, 0.0361929491443968f, 0, 0 },
|
||||||
|
[226] = { city_guatemala_city, 2021, MONTH_Oct, 0.64197021948932f, 0, 0 },
|
||||||
|
[227] = { city_guatemala_city, 2021, MONTH_Dec, 0.729014435225115f, 0, 0 },
|
||||||
|
[228] = { city_jakarta, 2019, MONTH_May, 0.4873064888015896f, 0, 0 },
|
||||||
|
[229] = { city_jakarta, 2019, MONTH_Aug, 0.1332481199937597f, 0, 0 },
|
||||||
|
[230] = { city_jakarta, 2019, MONTH_Nov, 0.745745949826538f, 0, 0 },
|
||||||
|
[231] = { city_jakarta, 2019, MONTH_Dec, 0.677061592008742f, 0, 0 },
|
||||||
|
[232] = { city_jakarta, 2020, MONTH_Feb, 0.097222170637766f, 0, 0 },
|
||||||
|
[233] = { city_jakarta, 2020, MONTH_Apr, 0.454813364724139f, 0, 0 },
|
||||||
|
[234] = { city_jakarta, 2020, MONTH_Jun, 0.599030699042925f, 0, 0 },
|
||||||
|
[235] = { city_jakarta, 2020, MONTH_Oct, 0.4625443588285278f, 0, 0 },
|
||||||
|
[236] = { city_jakarta, 2021, MONTH_Feb, 0.487754108957089f, 0, 0 },
|
||||||
|
[237] = { city_jakarta, 2021, MONTH_Apr, 0.317627211073128f, 0, 0 },
|
||||||
|
[238] = { city_jakarta, 2021, MONTH_Jun, 0.4601649895962731f, 0, 0 },
|
||||||
|
[239] = { city_jakarta, 2021, MONTH_Oct, 0.819518311504193f, 0, 0 },
|
||||||
|
[240] = { city_tehran, 2019, MONTH_Apr, 0.301861333672369f, 0, 0 },
|
||||||
|
[241] = { city_tehran, 2019, MONTH_Jul, 0.690444209645852f, 0, 0 },
|
||||||
|
[242] = { city_tehran, 2019, MONTH_Sep, 0.4404145375380147f, 0, 0 },
|
||||||
|
[243] = { city_tehran, 2020, MONTH_Jan, 0.512216673447640f, 0, 0 },
|
||||||
|
[244] = { city_tehran, 2020, MONTH_Mar, 0.404877102071919f, 0, 0 },
|
||||||
|
[245] = { city_tehran, 2020, MONTH_May, 0.0425131526773253f, 0, 0 },
|
||||||
|
[246] = { city_tehran, 2020, MONTH_Oct, 0.2593536969506149f, 0, 0 },
|
||||||
|
[247] = { city_tehran, 2020, MONTH_Dec, 0.783890028761998f, 0, 0 },
|
||||||
|
[248] = { city_tehran, 2021, MONTH_Mar, 0.94926354604200f, 0, 0 },
|
||||||
|
[249] = { city_tehran, 2021, MONTH_May, 0.0569072784620124f, 0, 0 },
|
||||||
|
[250] = { city_tehran, 2021, MONTH_Oct, 0.577568094487137f, 0, 0 },
|
||||||
|
[251] = { city_tehran, 2021, MONTH_Dec, 0.618906187850862f, 0, 0 },
|
||||||
|
[252] = { city_baghdad, 2019, MONTH_Mar, 0.2041098782632676f, 0, 0 },
|
||||||
|
[253] = { city_baghdad, 2019, MONTH_May, 0.418410741640879f, 0, 0 },
|
||||||
|
[254] = { city_baghdad, 2019, MONTH_Oct, 0.4045113808247624f, 0, 0 },
|
||||||
|
[255] = { city_baghdad, 2019, MONTH_Dec, 0.0935036317264107f, 0, 0 },
|
||||||
|
[256] = { city_baghdad, 2020, MONTH_May, 0.881388063687282f, 0, 0 },
|
||||||
|
[257] = { city_baghdad, 2020, MONTH_Aug, 0.542844838193968f, 0, 0 },
|
||||||
|
[258] = { city_baghdad, 2020, MONTH_Nov, 0.919644994222689f, 0, 0 },
|
||||||
|
[259] = { city_baghdad, 2020, MONTH_Dec, 0.4012535241874899f, 0, 0 },
|
||||||
|
[260] = { city_baghdad, 2021, MONTH_Feb, 0.3336959972932559f, 0, 0 },
|
||||||
|
[261] = { city_baghdad, 2021, MONTH_Apr, 0.1796197721242466f, 0, 0 },
|
||||||
|
[262] = { city_baghdad, 2021, MONTH_Jun, 0.828742767016648f, 0, 0 },
|
||||||
|
[263] = { city_baghdad, 2021, MONTH_Oct, 0.1843548012255065f, 0, 0 },
|
||||||
|
[264] = { city_tokyo, 2019, MONTH_May, 0.155891108992637f, 0, 0 },
|
||||||
|
[265] = { city_tokyo, 2019, MONTH_Aug, 0.710329744155827f, 0, 0 },
|
||||||
|
[266] = { city_tokyo, 2019, MONTH_Nov, 0.767037295899860f, 0, 0 },
|
||||||
|
[267] = { city_tokyo, 2019, MONTH_Dec, 0.3455214091470476f, 0, 0 },
|
||||||
|
[268] = { city_tokyo, 2020, MONTH_Feb, 0.3474433981102914f, 0, 0 },
|
||||||
|
[269] = { city_tokyo, 2020, MONTH_Apr, 0.945631216030701f, 0, 0 },
|
||||||
|
[270] = { city_tokyo, 2020, MONTH_Jun, 0.696669631520124f, 0, 0 },
|
||||||
|
[271] = { city_tokyo, 2020, MONTH_Oct, 0.722151370281128f, 0, 0 },
|
||||||
|
[272] = { city_tokyo, 2021, MONTH_Apr, 0.124744692100837f, 0, 0 },
|
||||||
|
[273] = { city_tokyo, 2021, MONTH_Jul, 0.780248733655871f, 0, 0 },
|
||||||
|
[274] = { city_tokyo, 2021, MONTH_Sep, 0.802652502830138f, 0, 0 },
|
||||||
|
[275] = { city_tokyo, 2022, MONTH_Jan, 0.1950030931830898f, 0, 0 },
|
||||||
|
[276] = { city_amman, 2019, MONTH_Apr, 0.913564776301748f, 0, 0 },
|
||||||
|
[277] = { city_amman, 2019, MONTH_Jul, 0.51995965182440f, 0, 0 },
|
||||||
|
[278] = { city_amman, 2019, MONTH_Sep, 0.0734962371079785f, 0, 0 },
|
||||||
|
[279] = { city_amman, 2020, MONTH_Jan, 0.820928052342723f, 0, 0 },
|
||||||
|
[280] = { city_amman, 2020, MONTH_Feb, 0.858049473312560f, 0, 0 },
|
||||||
|
[281] = { city_amman, 2020, MONTH_Apr, 0.472228820975274f, 0, 0 },
|
||||||
|
[282] = { city_amman, 2020, MONTH_Jun, 0.859450329852867f, 0, 0 },
|
||||||
|
[283] = { city_amman, 2020, MONTH_Oct, 0.734397157087221f, 0, 0 },
|
||||||
|
[284] = { city_amman, 2021, MONTH_Feb, 0.471531691187588f, 0, 0 },
|
||||||
|
[285] = { city_amman, 2021, MONTH_Apr, 0.74666411798262f, 0, 0 },
|
||||||
|
[286] = { city_amman, 2021, MONTH_Jun, 0.0449755300464772f, 0, 0 },
|
||||||
|
[287] = { city_amman, 2021, MONTH_Oct, 0.989728098238887f, 0, 0 },
|
||||||
|
[288] = { city_nairobi, 2019, MONTH_May, 0.353258469908758f, 0, 0 },
|
||||||
|
[289] = { city_nairobi, 2019, MONTH_Aug, 0.637265803224577f, 0, 0 },
|
||||||
|
[290] = { city_nairobi, 2019, MONTH_Nov, 0.652963298166620f, 0, 0 },
|
||||||
|
[291] = { city_nairobi, 2019, MONTH_Dec, 0.980136667400578f, 0, 0 },
|
||||||
|
[292] = { city_nairobi, 2020, MONTH_May, 0.1123254499523785f, 0, 0 },
|
||||||
|
[293] = { city_nairobi, 2020, MONTH_Aug, 0.636340674934326f, 0, 0 },
|
||||||
|
[294] = { city_nairobi, 2020, MONTH_Nov, 0.457205051760276f, 0, 0 },
|
||||||
|
[295] = { city_nairobi, 2020, MONTH_Dec, 0.501683805374266f, 0, 0 },
|
||||||
|
[296] = { city_nairobi, 2021, MONTH_May, 0.287133545101559f, 0, 0 },
|
||||||
|
[297] = { city_nairobi, 2021, MONTH_Aug, 0.613486374545206f, 0, 0 },
|
||||||
|
[298] = { city_nairobi, 2021, MONTH_Nov, 0.664668792823215f, 0, 0 },
|
||||||
|
[299] = { city_nairobi, 2021, MONTH_Dec, 0.460460310851094f, 0, 0 },
|
||||||
|
[300] = { city_beirut, 2019, MONTH_May, 0.2065707928015757f, 0, 0 },
|
||||||
|
[301] = { city_beirut, 2019, MONTH_Aug, 0.0806051251653264f, 0, 0 },
|
||||||
|
[302] = { city_beirut, 2019, MONTH_Nov, 0.312175807704065f, 0, 0 },
|
||||||
|
[303] = { city_beirut, 2019, MONTH_Dec, 0.570445032963265f, 0, 0 },
|
||||||
|
[304] = { city_beirut, 2020, MONTH_May, 0.4971129813508322f, 0, 0 },
|
||||||
|
[305] = { city_beirut, 2020, MONTH_Aug, 0.265179951577338f, 0, 0 },
|
||||||
|
[306] = { city_beirut, 2020, MONTH_Nov, 0.3758296973795538f, 0, 0 },
|
||||||
|
[307] = { city_beirut, 2020, MONTH_Dec, 0.2321419145383638f, 0, 0 },
|
||||||
|
[308] = { city_beirut, 2021, MONTH_Feb, 0.976920552803965f, 0, 0 },
|
||||||
|
[309] = { city_beirut, 2021, MONTH_Apr, 0.571447163905541f, 0, 0 },
|
||||||
|
[310] = { city_beirut, 2021, MONTH_Jun, 0.786651053940900f, 0, 0 },
|
||||||
|
[311] = { city_beirut, 2021, MONTH_Oct, 0.1096868650743059f, 0, 0 },
|
||||||
|
[312] = { city_tripoli, 2019, MONTH_Apr, 0.345925686602871f, 0, 0 },
|
||||||
|
[313] = { city_tripoli, 2019, MONTH_Jul, 0.876290377343576f, 0, 0 },
|
||||||
|
[314] = { city_tripoli, 2019, MONTH_Sep, 0.790275244077456f, 0, 0 },
|
||||||
|
[315] = { city_tripoli, 2020, MONTH_Jan, 0.3965589139790378f, 0, 0 },
|
||||||
|
[316] = { city_tripoli, 2020, MONTH_Mar, 0.285348770715926f, 0, 0 },
|
||||||
|
[317] = { city_tripoli, 2020, MONTH_May, 0.496333626012515f, 0, 0 },
|
||||||
|
[318] = { city_tripoli, 2020, MONTH_Oct, 0.01792744471676621f, 0, 0 },
|
||||||
|
[319] = { city_tripoli, 2020, MONTH_Dec, 0.4947927621449260f, 0, 0 },
|
||||||
|
[320] = { city_tripoli, 2021, MONTH_May, 0.1308448333921825f, 0, 0 },
|
||||||
|
[321] = { city_tripoli, 2021, MONTH_Aug, 0.397296712656376f, 0, 0 },
|
||||||
|
[322] = { city_tripoli, 2021, MONTH_Nov, 0.4494511222856165f, 0, 0 },
|
||||||
|
[323] = { city_tripoli, 2021, MONTH_Dec, 0.918909285370890f, 0, 0 },
|
||||||
|
[324] = { city_kuala_lumpur, 2019, MONTH_Feb, 0.1675625833439882f, 0, 0 },
|
||||||
|
[325] = { city_kuala_lumpur, 2019, MONTH_Apr, 0.729200169873379f, 0, 0 },
|
||||||
|
[326] = { city_kuala_lumpur, 2019, MONTH_Jun, 0.515728121325297f, 0, 0 },
|
||||||
|
[327] = { city_kuala_lumpur, 2019, MONTH_Oct, 0.801495874749624f, 0, 0 },
|
||||||
|
[328] = { city_kuala_lumpur, 2020, MONTH_May, 0.860285410440025f, 0, 0 },
|
||||||
|
[329] = { city_kuala_lumpur, 2020, MONTH_Aug, 0.4333367319964f, 0, 0 },
|
||||||
|
[330] = { city_kuala_lumpur, 2020, MONTH_Nov, 0.373641801398257f, 0, 0 },
|
||||||
|
[331] = { city_kuala_lumpur, 2020, MONTH_Dec, 0.993321214324000f, 0, 0 },
|
||||||
|
[332] = { city_kuala_lumpur, 2021, MONTH_May, 0.955896960620464f, 0, 0 },
|
||||||
|
[333] = { city_kuala_lumpur, 2021, MONTH_Aug, 0.847466374787605f, 0, 0 },
|
||||||
|
[334] = { city_kuala_lumpur, 2021, MONTH_Nov, 0.725930991736956f, 0, 0 },
|
||||||
|
[335] = { city_kuala_lumpur, 2021, MONTH_Dec, 0.0771676585796252f, 0, 0 },
|
||||||
|
[336] = { city_male, 2019, MONTH_May, 0.1185919416224812f, 0, 0 },
|
||||||
|
[337] = { city_male, 2019, MONTH_Aug, 0.1093303633227156f, 0, 0 },
|
||||||
|
[338] = { city_male, 2019, MONTH_Nov, 0.351298531207944f, 0, 0 },
|
||||||
|
[339] = { city_male, 2019, MONTH_Dec, 0.939014019805290f, 0, 0 },
|
||||||
|
[340] = { city_male, 2020, MONTH_May, 0.905825718197400f, 0, 0 },
|
||||||
|
[341] = { city_male, 2020, MONTH_Aug, 0.4774451158431509f, 0, 0 },
|
||||||
|
[342] = { city_male, 2020, MONTH_Nov, 0.865861494206516f, 0, 0 },
|
||||||
|
[343] = { city_male, 2020, MONTH_Dec, 0.3879887276689698f, 0, 0 },
|
||||||
|
[344] = { city_male, 2021, MONTH_Feb, 0.762094702658892f, 0, 0 },
|
||||||
|
[345] = { city_male, 2021, MONTH_Apr, 0.930703136536702f, 0, 0 },
|
||||||
|
[346] = { city_male, 2021, MONTH_Jun, 0.413267471538170f, 0, 0 },
|
||||||
|
[347] = { city_male, 2021, MONTH_Oct, 0.0715077259848261f, 0, 0 },
|
||||||
|
[348] = { city_mexico_city, 2019, MONTH_Mar, 0.282689271758157f, 0, 0 },
|
||||||
|
[349] = { city_mexico_city, 2019, MONTH_May, 0.692801392386349f, 0, 0 },
|
||||||
|
[350] = { city_mexico_city, 2019, MONTH_Oct, 0.856300831164312f, 0, 0 },
|
||||||
|
[351] = { city_mexico_city, 2019, MONTH_Dec, 0.62752648352262f, 0, 0 },
|
||||||
|
[352] = { city_mexico_city, 2020, MONTH_Apr, 0.992877682455008f, 0, 0 },
|
||||||
|
[353] = { city_mexico_city, 2020, MONTH_Jul, 0.3288944801257265f, 0, 0 },
|
||||||
|
[354] = { city_mexico_city, 2020, MONTH_Sep, 0.567301662762395f, 0, 0 },
|
||||||
|
[355] = { city_mexico_city, 2021, MONTH_Jan, 0.653652403202057f, 0, 0 },
|
||||||
|
[356] = { city_mexico_city, 2021, MONTH_Feb, 0.3617368415256383f, 0, 0 },
|
||||||
|
[357] = { city_mexico_city, 2021, MONTH_Apr, 0.1999051783032370f, 0, 0 },
|
||||||
|
[358] = { city_mexico_city, 2021, MONTH_Jun, 0.2234520522974474f, 0, 0 },
|
||||||
|
[359] = { city_mexico_city, 2021, MONTH_Oct, 0.2249265703960294f, 0, 0 },
|
||||||
|
[360] = { city_ulan_bator, 2019, MONTH_Feb, 0.0973111569162685f, 0, 0 },
|
||||||
|
[361] = { city_ulan_bator, 2019, MONTH_Apr, 0.717625035182259f, 0, 0 },
|
||||||
|
[362] = { city_ulan_bator, 2019, MONTH_Jun, 0.68888115436561f, 0, 0 },
|
||||||
|
[363] = { city_ulan_bator, 2019, MONTH_Oct, 0.317598068282712f, 0, 0 },
|
||||||
|
[364] = { city_ulan_bator, 2020, MONTH_Mar, 0.532042281420785f, 0, 0 },
|
||||||
|
[365] = { city_ulan_bator, 2020, MONTH_May, 0.937731820508145f, 0, 0 },
|
||||||
|
[366] = { city_ulan_bator, 2020, MONTH_Oct, 0.1507514606104898f, 0, 0 },
|
||||||
|
[367] = { city_ulan_bator, 2020, MONTH_Dec, 0.0210516496711773f, 0, 0 },
|
||||||
|
[368] = { city_ulan_bator, 2021, MONTH_Feb, 0.695258364407790f, 0, 0 },
|
||||||
|
[369] = { city_ulan_bator, 2021, MONTH_Apr, 0.2133368779237394f, 0, 0 },
|
||||||
|
[370] = { city_ulan_bator, 2021, MONTH_Jun, 0.4350453296437505f, 0, 0 },
|
||||||
|
[371] = { city_ulan_bator, 2021, MONTH_Oct, 0.887232414698376f, 0, 0 },
|
||||||
|
[372] = { city_rabat, 2019, MONTH_Apr, 0.4848684557100414f, 0, 0 },
|
||||||
|
[373] = { city_rabat, 2019, MONTH_Jul, 0.830378389707985f, 0, 0 },
|
||||||
|
[374] = { city_rabat, 2019, MONTH_Sep, 0.267946912678618f, 0, 0 },
|
||||||
|
[375] = { city_rabat, 2020, MONTH_Jan, 0.21686208646062f, 0, 0 },
|
||||||
|
[376] = { city_rabat, 2020, MONTH_Feb, 0.639484185249096f, 0, 0 },
|
||||||
|
[377] = { city_rabat, 2020, MONTH_Apr, 0.795734886425641f, 0, 0 },
|
||||||
|
[378] = { city_rabat, 2020, MONTH_Jun, 0.3544991360983855f, 0, 0 },
|
||||||
|
[379] = { city_rabat, 2020, MONTH_Oct, 0.88478654358351f, 0, 0 },
|
||||||
|
[380] = { city_rabat, 2021, MONTH_Feb, 0.754599832364994f, 0, 0 },
|
||||||
|
[381] = { city_rabat, 2021, MONTH_Apr, 0.4417992899161763f, 0, 0 },
|
||||||
|
[382] = { city_rabat, 2021, MONTH_Jun, 0.607116720946833f, 0, 0 },
|
||||||
|
[383] = { city_rabat, 2021, MONTH_Oct, 0.358623776327881f, 0, 0 },
|
||||||
|
[384] = { city_amsterdam, 2019, MONTH_Feb, 0.731625264443053f, 0, 0 },
|
||||||
|
[385] = { city_amsterdam, 2019, MONTH_Apr, 0.566868738166083f, 0, 0 },
|
||||||
|
[386] = { city_amsterdam, 2019, MONTH_Jun, 0.557667088829960f, 0, 0 },
|
||||||
|
[387] = { city_amsterdam, 2019, MONTH_Oct, 0.4165140225359793f, 0, 0 },
|
||||||
|
[388] = { city_amsterdam, 2020, MONTH_Mar, 0.1369118545708988f, 0, 0 },
|
||||||
|
[389] = { city_amsterdam, 2020, MONTH_May, 0.996381145058562f, 0, 0 },
|
||||||
|
[390] = { city_amsterdam, 2020, MONTH_Oct, 0.567884655995259f, 0, 0 },
|
||||||
|
[391] = { city_amsterdam, 2020, MONTH_Dec, 0.3599824946665225f, 0, 0 },
|
||||||
|
[392] = { city_amsterdam, 2021, MONTH_May, 0.3617612455991281f, 0, 0 },
|
||||||
|
[393] = { city_amsterdam, 2021, MONTH_Aug, 0.145208263117762f, 0, 0 },
|
||||||
|
[394] = { city_amsterdam, 2021, MONTH_Nov, 0.405925018466976f, 0, 0 },
|
||||||
|
[395] = { city_amsterdam, 2021, MONTH_Dec, 0.466865583671862f, 0, 0 },
|
||||||
|
[396] = { city_wellington, 2019, MONTH_Mar, 0.2399790368405242f, 0, 0 },
|
||||||
|
[397] = { city_wellington, 2019, MONTH_May, 0.0513312639497346f, 0, 0 },
|
||||||
|
[398] = { city_wellington, 2019, MONTH_Oct, 0.154820278468702f, 0, 0 },
|
||||||
|
[399] = { city_wellington, 2019, MONTH_Dec, 0.342480035947826f, 0, 0 },
|
||||||
|
[400] = { city_wellington, 2020, MONTH_Feb, 0.02270196410158653f, 0, 0 },
|
||||||
|
[401] = { city_wellington, 2020, MONTH_Apr, 0.549977096428455f, 0, 0 },
|
||||||
|
[402] = { city_wellington, 2020, MONTH_Jun, 0.825352479423318f, 0, 0 },
|
||||||
|
[403] = { city_wellington, 2020, MONTH_Oct, 0.00533147733597216f, 0, 0 },
|
||||||
|
[404] = { city_wellington, 2021, MONTH_May, 0.92165713944193f, 0, 0 },
|
||||||
|
[405] = { city_wellington, 2021, MONTH_Aug, 0.1030939587069419f, 0, 0 },
|
||||||
|
[406] = { city_wellington, 2021, MONTH_Nov, 0.626356522706967f, 0, 0 },
|
||||||
|
[407] = { city_wellington, 2021, MONTH_Dec, 0.202081862772906f, 0, 0 },
|
||||||
|
[408] = { city_managua, 2019, MONTH_Apr, 0.0558278728762413f, 0, 0 },
|
||||||
|
[409] = { city_managua, 2019, MONTH_Jul, 0.4838275959297315f, 0, 0 },
|
||||||
|
[410] = { city_managua, 2019, MONTH_Sep, 0.982787118880607f, 0, 0 },
|
||||||
|
[411] = { city_managua, 2020, MONTH_Jan, 0.0001771442144287149f, 0, 0 },
|
||||||
|
[412] = { city_managua, 2020, MONTH_Feb, 0.924958034469370f, 0, 0 },
|
||||||
|
[413] = { city_managua, 2020, MONTH_Apr, 0.804497555444690f, 0, 0 },
|
||||||
|
[414] = { city_managua, 2020, MONTH_Jun, 0.562726395776656f, 0, 0 },
|
||||||
|
[415] = { city_managua, 2020, MONTH_Oct, 0.323725027619491f, 0, 0 },
|
||||||
|
[416] = { city_managua, 2021, MONTH_Mar, 0.02044880108483926f, 0, 0 },
|
||||||
|
[417] = { city_managua, 2021, MONTH_May, 0.890130453740734f, 0, 0 },
|
||||||
|
[418] = { city_managua, 2021, MONTH_Oct, 0.731841044395474f, 0, 0 },
|
||||||
|
[419] = { city_managua, 2021, MONTH_Dec, 0.884381400825929f, 0, 0 },
|
||||||
|
[420] = { city_abuja, 2019, MONTH_May, 0.66478819034649f, 0, 0 },
|
||||||
|
[421] = { city_abuja, 2019, MONTH_Aug, 0.3457386667673525f, 0, 0 },
|
||||||
|
[422] = { city_abuja, 2019, MONTH_Nov, 0.092988823835393f, 0, 0 },
|
||||||
|
[423] = { city_abuja, 2019, MONTH_Dec, 0.824262528959534f, 0, 0 },
|
||||||
|
[424] = { city_abuja, 2020, MONTH_Apr, 0.61049766413043f, 0, 0 },
|
||||||
|
[425] = { city_abuja, 2020, MONTH_Jul, 0.1304592836307013f, 0, 0 },
|
||||||
|
[426] = { city_abuja, 2020, MONTH_Sep, 0.593187180006649f, 0, 0 },
|
||||||
|
[427] = { city_abuja, 2021, MONTH_Jan, 0.876199072732621f, 0, 0 },
|
||||||
|
[428] = { city_abuja, 2021, MONTH_Mar, 0.0329722159321588f, 0, 0 },
|
||||||
|
[429] = { city_abuja, 2021, MONTH_May, 0.266368310626165f, 0, 0 },
|
||||||
|
[430] = { city_abuja, 2021, MONTH_Oct, 0.475247255909794f, 0, 0 },
|
||||||
|
[431] = { city_abuja, 2021, MONTH_Dec, 0.2181789145549840f, 0, 0 },
|
||||||
|
[432] = { city_islamabad, 2019, MONTH_Feb, 0.689456535686944f, 0, 0 },
|
||||||
|
[433] = { city_islamabad, 2019, MONTH_Apr, 0.0447373363978489f, 0, 0 },
|
||||||
|
[434] = { city_islamabad, 2019, MONTH_Jun, 0.822514095879552f, 0, 0 },
|
||||||
|
[435] = { city_islamabad, 2019, MONTH_Oct, 0.916703876449938f, 0, 0 },
|
||||||
|
[436] = { city_islamabad, 2020, MONTH_Mar, 0.1893115617875816f, 0, 0 },
|
||||||
|
[437] = { city_islamabad, 2020, MONTH_May, 0.86726306770825f, 0, 0 },
|
||||||
|
[438] = { city_islamabad, 2020, MONTH_Oct, 0.905215849243983f, 0, 0 },
|
||||||
|
[439] = { city_islamabad, 2020, MONTH_Dec, 0.254940376897477f, 0, 0 },
|
||||||
|
[440] = { city_islamabad, 2021, MONTH_Mar, 0.281039684229208f, 0, 0 },
|
||||||
|
[441] = { city_islamabad, 2021, MONTH_May, 0.887339106739559f, 0, 0 },
|
||||||
|
[442] = { city_islamabad, 2021, MONTH_Oct, 0.933048865779014f, 0, 0 },
|
||||||
|
[443] = { city_islamabad, 2021, MONTH_Dec, 0.0340736858267484f, 0, 0 },
|
||||||
|
[444] = { city_lima, 2019, MONTH_Feb, 0.328346577769536f, 0, 0 },
|
||||||
|
[445] = { city_lima, 2019, MONTH_Apr, 0.2756724157263651f, 0, 0 },
|
||||||
|
[446] = { city_lima, 2019, MONTH_Jun, 0.609815087863952f, 0, 0 },
|
||||||
|
[447] = { city_lima, 2019, MONTH_Oct, 0.782731155908874f, 0, 0 },
|
||||||
|
[448] = { city_lima, 2020, MONTH_May, 0.000478011020313862f, 0, 0 },
|
||||||
|
[449] = { city_lima, 2020, MONTH_Aug, 0.3235917681085961f, 0, 0 },
|
||||||
|
[450] = { city_lima, 2020, MONTH_Nov, 0.792016455238391f, 0, 0 },
|
||||||
|
[451] = { city_lima, 2020, MONTH_Dec, 0.0868050405329673f, 0, 0 },
|
||||||
|
[452] = { city_lima, 2021, MONTH_Feb, 0.281555206177401f, 0, 0 },
|
||||||
|
[453] = { city_lima, 2021, MONTH_Apr, 0.794656766555093f, 0, 0 },
|
||||||
|
[454] = { city_lima, 2021, MONTH_Jun, 0.934873911408016f, 0, 0 },
|
||||||
|
[455] = { city_lima, 2021, MONTH_Oct, 0.966444893770645f, 0, 0 },
|
||||||
|
[456] = { city_bucharest, 2019, MONTH_Apr, 0.275421524025559f, 0, 0 },
|
||||||
|
[457] = { city_bucharest, 2019, MONTH_Jul, 0.934257554721354f, 0, 0 },
|
||||||
|
[458] = { city_bucharest, 2019, MONTH_Sep, 0.456175571716915f, 0, 0 },
|
||||||
|
[459] = { city_bucharest, 2020, MONTH_Jan, 0.581535351702321f, 0, 0 },
|
||||||
|
[460] = { city_bucharest, 2020, MONTH_Feb, 0.0955369623031351f, 0, 0 },
|
||||||
|
[461] = { city_bucharest, 2020, MONTH_Apr, 0.797724127406068f, 0, 0 },
|
||||||
|
[462] = { city_bucharest, 2020, MONTH_Jun, 0.1158114218862972f, 0, 0 },
|
||||||
|
[463] = { city_bucharest, 2020, MONTH_Oct, 0.60936646395483f, 0, 0 },
|
||||||
|
[464] = { city_bucharest, 2021, MONTH_May, 0.778649374817847f, 0, 0 },
|
||||||
|
[465] = { city_bucharest, 2021, MONTH_Aug, 0.370947549484814f, 0, 0 },
|
||||||
|
[466] = { city_bucharest, 2021, MONTH_Nov, 0.0640963197950903f, 0, 0 },
|
||||||
|
[467] = { city_bucharest, 2021, MONTH_Dec, 0.643541163489257f, 0, 0 },
|
||||||
|
[468] = { city_moscow, 2019, MONTH_Mar, 0.301010635427779f, 0, 0 },
|
||||||
|
[469] = { city_moscow, 2019, MONTH_May, 0.456078321317001f, 0, 0 },
|
||||||
|
[470] = { city_moscow, 2019, MONTH_Oct, 0.0538331203062519f, 0, 0 },
|
||||||
|
[471] = { city_moscow, 2019, MONTH_Dec, 0.75192484013845f, 0, 0 },
|
||||||
|
[472] = { city_moscow, 2020, MONTH_May, 0.872306088053229f, 0, 0 },
|
||||||
|
[473] = { city_moscow, 2020, MONTH_Aug, 0.1239402065770388f, 0, 0 },
|
||||||
|
[474] = { city_moscow, 2020, MONTH_Nov, 0.2020263441001254f, 0, 0 },
|
||||||
|
[475] = { city_moscow, 2020, MONTH_Dec, 0.278274013412570f, 0, 0 },
|
||||||
|
[476] = { city_moscow, 2021, MONTH_May, 0.2488571531010973f, 0, 0 },
|
||||||
|
[477] = { city_moscow, 2021, MONTH_Aug, 0.0489617026735895f, 0, 0 },
|
||||||
|
[478] = { city_moscow, 2021, MONTH_Nov, 0.868455790657478f, 0, 0 },
|
||||||
|
[479] = { city_moscow, 2021, MONTH_Dec, 0.54311463810805f, 0, 0 },
|
||||||
|
[480] = { city_belgrade, 2019, MONTH_May, 0.552246653164450f, 0, 0 },
|
||||||
|
[481] = { city_belgrade, 2019, MONTH_Aug, 0.608445734269070f, 0, 0 },
|
||||||
|
[482] = { city_belgrade, 2019, MONTH_Nov, 0.904417407475315f, 0, 0 },
|
||||||
|
[483] = { city_belgrade, 2019, MONTH_Dec, 0.0706690624583042f, 0, 0 },
|
||||||
|
[484] = { city_belgrade, 2020, MONTH_May, 0.000863732217009305f, 0, 0 },
|
||||||
|
[485] = { city_belgrade, 2020, MONTH_Aug, 0.328824489783167f, 0, 0 },
|
||||||
|
[486] = { city_belgrade, 2020, MONTH_Nov, 0.36976843567074f, 0, 0 },
|
||||||
|
[487] = { city_belgrade, 2020, MONTH_Dec, 0.961964263330105f, 0, 0 },
|
||||||
|
[488] = { city_belgrade, 2021, MONTH_Mar, 0.3057188881540604f, 0, 0 },
|
||||||
|
[489] = { city_belgrade, 2021, MONTH_May, 0.449818470067468f, 0, 0 },
|
||||||
|
[490] = { city_belgrade, 2021, MONTH_Oct, 0.71154904735186f, 0, 0 },
|
||||||
|
[491] = { city_belgrade, 2021, MONTH_Dec, 0.1308593962428957f, 0, 0 },
|
||||||
|
[492] = { city_singapore, 2019, MONTH_Feb, 0.193694292780376f, 0, 0 },
|
||||||
|
[493] = { city_singapore, 2019, MONTH_Apr, 0.318702929890905f, 0, 0 },
|
||||||
|
[494] = { city_singapore, 2019, MONTH_Jun, 0.645215799082995f, 0, 0 },
|
||||||
|
[495] = { city_singapore, 2019, MONTH_Oct, 0.591187969918129f, 0, 0 },
|
||||||
|
[496] = { city_singapore, 2020, MONTH_May, 0.699396534256987f, 0, 0 },
|
||||||
|
[497] = { city_singapore, 2020, MONTH_Aug, 0.2780977621387803f, 0, 0 },
|
||||||
|
[498] = { city_singapore, 2020, MONTH_Nov, 0.455489668769613f, 0, 0 },
|
||||||
|
[499] = { city_singapore, 2020, MONTH_Dec, 0.724372367679592f, 0, 0 },
|
||||||
|
[500] = { city_singapore, 2021, MONTH_Apr, 0.0229979967292621f, 0, 0 },
|
||||||
|
[501] = { city_singapore, 2021, MONTH_Jul, 0.0249669479037042f, 0, 0 },
|
||||||
|
[502] = { city_singapore, 2021, MONTH_Sep, 0.879108640287500f, 0, 0 },
|
||||||
|
[503] = { city_singapore, 2022, MONTH_Jan, 0.612089991020752f, 0, 0 },
|
||||||
|
[504] = { city_seoul, 2019, MONTH_May, 0.277150821785431f, 0, 0 },
|
||||||
|
[505] = { city_seoul, 2019, MONTH_Aug, 0.3348478329043680f, 0, 0 },
|
||||||
|
[506] = { city_seoul, 2019, MONTH_Nov, 0.4503487807607835f, 0, 0 },
|
||||||
|
[507] = { city_seoul, 2019, MONTH_Dec, 0.2103442020665882f, 0, 0 },
|
||||||
|
[508] = { city_seoul, 2020, MONTH_May, 0.3640140905380354f, 0, 0 },
|
||||||
|
[509] = { city_seoul, 2020, MONTH_Aug, 0.706729161499808f, 0, 0 },
|
||||||
|
[510] = { city_seoul, 2020, MONTH_Nov, 0.885612236808133f, 0, 0 },
|
||||||
|
[511] = { city_seoul, 2020, MONTH_Dec, 0.519775809368071f, 0, 0 },
|
||||||
|
[512] = { city_seoul, 2021, MONTH_Apr, 0.732835881732319f, 0, 0 },
|
||||||
|
[513] = { city_seoul, 2021, MONTH_Jul, 0.903712712868978f, 0, 0 },
|
||||||
|
[514] = { city_seoul, 2021, MONTH_Sep, 0.579911957881779f, 0, 0 },
|
||||||
|
[515] = { city_seoul, 2022, MONTH_Jan, 0.523793425841401f, 0, 0 },
|
||||||
|
[516] = { city_tunis, 2019, MONTH_Mar, 0.0982735360423472f, 0, 0 },
|
||||||
|
[517] = { city_tunis, 2019, MONTH_May, 0.2783517128913841f, 0, 0 },
|
||||||
|
[518] = { city_tunis, 2019, MONTH_Oct, 0.0179865221608522f, 0, 0 },
|
||||||
|
[519] = { city_tunis, 2019, MONTH_Dec, 0.594911360748928f, 0, 0 },
|
||||||
|
[520] = { city_tunis, 2020, MONTH_Mar, 0.4492429946395797f, 0, 0 },
|
||||||
|
[521] = { city_tunis, 2020, MONTH_May, 0.285860802759041f, 0, 0 },
|
||||||
|
[522] = { city_tunis, 2020, MONTH_Oct, 0.532021890496857f, 0, 0 },
|
||||||
|
[523] = { city_tunis, 2020, MONTH_Dec, 0.664899909160940f, 0, 0 },
|
||||||
|
[524] = { city_tunis, 2021, MONTH_Apr, 0.373665071634036f, 0, 0 },
|
||||||
|
[525] = { city_tunis, 2021, MONTH_Jul, 0.965776337366f, 0, 0 },
|
||||||
|
[526] = { city_tunis, 2021, MONTH_Sep, 0.659560620156704f, 0, 0 },
|
||||||
|
[527] = { city_tunis, 2022, MONTH_Jan, 0.624321203896919f, 0, 0 },
|
||||||
|
[528] = { city_bangkok, 2019, MONTH_Feb, 0.257845660876937f, 0, 0 },
|
||||||
|
[529] = { city_bangkok, 2019, MONTH_Apr, 0.224888541670249f, 0, 0 },
|
||||||
|
[530] = { city_bangkok, 2019, MONTH_Jun, 0.619847391242953f, 0, 0 },
|
||||||
|
[531] = { city_bangkok, 2019, MONTH_Oct, 0.850551515098475f, 0, 0 },
|
||||||
|
[532] = { city_bangkok, 2020, MONTH_Feb, 0.911861784979914f, 0, 0 },
|
||||||
|
[533] = { city_bangkok, 2020, MONTH_Apr, 0.854345367132697f, 0, 0 },
|
||||||
|
[534] = { city_bangkok, 2020, MONTH_Jun, 0.976580885030065f, 0, 0 },
|
||||||
|
[535] = { city_bangkok, 2020, MONTH_Oct, 0.515880023341469f, 0, 0 },
|
||||||
|
[536] = { city_bangkok, 2021, MONTH_Apr, 0.05074702972151967f, 0, 0 },
|
||||||
|
[537] = { city_bangkok, 2021, MONTH_Jul, 0.4253267917878572f, 0, 0 },
|
||||||
|
[538] = { city_bangkok, 2021, MONTH_Sep, 0.915287731012829f, 0, 0 },
|
||||||
|
[539] = { city_bangkok, 2022, MONTH_Jan, 0.258306431399695f, 0, 0 },
|
||||||
|
[540] = { city_washington_dc, 2019, MONTH_May, 0.643359616915746f, 0, 0 },
|
||||||
|
[541] = { city_washington_dc, 2019, MONTH_Aug, 0.370206005261732f, 0, 0 },
|
||||||
|
[542] = { city_washington_dc, 2019, MONTH_Nov, 0.0623440040458129f, 0, 0 },
|
||||||
|
[543] = { city_washington_dc, 2019, MONTH_Dec, 0.816457481734427f, 0, 0 },
|
||||||
|
[544] = { city_washington_dc, 2020, MONTH_May, 0.538708625763008f, 0, 0 },
|
||||||
|
[545] = { city_washington_dc, 2020, MONTH_Aug, 0.650384533924187f, 0, 0 },
|
||||||
|
[546] = { city_washington_dc, 2020, MONTH_Nov, 0.116951545075829f, 0, 0 },
|
||||||
|
[547] = { city_washington_dc, 2020, MONTH_Dec, 0.148219641272978f, 0, 0 },
|
||||||
|
[548] = { city_washington_dc, 2021, MONTH_Apr, 0.02100655560513664f, 0, 0 },
|
||||||
|
[549] = { city_washington_dc, 2021, MONTH_Jul, 0.871980590290593f, 0, 0 },
|
||||||
|
[550] = { city_washington_dc, 2021, MONTH_Sep, 0.282318232339043f, 0, 0 },
|
||||||
|
[551] = { city_washington_dc, 2022, MONTH_Jan, 0.805829276934675f, 0, 0 },
|
||||||
|
[552] = { city_hanoi, 2019, MONTH_May, 0.41659113260472f, 0, 0 },
|
||||||
|
[553] = { city_hanoi, 2019, MONTH_Aug, 0.1152641995827389f, 0, 0 },
|
||||||
|
[554] = { city_hanoi, 2019, MONTH_Nov, 0.360035965294691f, 0, 0 },
|
||||||
|
[555] = { city_hanoi, 2019, MONTH_Dec, 0.784196077332438f, 0, 0 },
|
||||||
|
[556] = { city_hanoi, 2020, MONTH_May, 0.761414062564656f, 0, 0 },
|
||||||
|
[557] = { city_hanoi, 2020, MONTH_Aug, 0.972249586627066f, 0, 0 },
|
||||||
|
[558] = { city_hanoi, 2020, MONTH_Nov, 0.477242926987743f, 0, 0 },
|
||||||
|
[559] = { city_hanoi, 2020, MONTH_Dec, 0.548426649668160f, 0, 0 },
|
||||||
|
[560] = { city_hanoi, 2021, MONTH_May, 0.548248192976479f, 0, 0 },
|
||||||
|
[561] = { city_hanoi, 2021, MONTH_Aug, 0.591016543120125f, 0, 0 },
|
||||||
|
[562] = { city_hanoi, 2021, MONTH_Nov, 0.788317457936361f, 0, 0 },
|
||||||
|
[563] = { city_hanoi, 2021, MONTH_Dec, 0.800132571339982f, 0, 0 },
|
||||||
|
[564] = { city_harare, 2019, MONTH_Mar, 0.729786759502753f, 0, 0 },
|
||||||
|
[565] = { city_harare, 2019, MONTH_May, 0.907286585478762f, 0, 0 },
|
||||||
|
[566] = { city_harare, 2019, MONTH_Oct, 0.750261430981712f, 0, 0 },
|
||||||
|
[567] = { city_harare, 2019, MONTH_Dec, 0.493438071814215f, 0, 0 },
|
||||||
|
[568] = { city_harare, 2020, MONTH_Feb, 0.65132695252707f, 0, 0 },
|
||||||
|
[569] = { city_harare, 2020, MONTH_Apr, 0.674409513858446f, 0, 0 },
|
||||||
|
[570] = { city_harare, 2020, MONTH_Jun, 0.613534154048466f, 0, 0 },
|
||||||
|
[571] = { city_harare, 2020, MONTH_Oct, 0.332698486042969f, 0, 0 },
|
||||||
|
[572] = { city_harare, 2021, MONTH_Apr, 0.326843377521804f, 0, 0 },
|
||||||
|
[573] = { city_harare, 2021, MONTH_Jul, 0.95259836088787f, 0, 0 },
|
||||||
|
[574] = { city_harare, 2021, MONTH_Sep, 0.634598307047354f, 0, 0 },
|
||||||
|
[575] = { city_harare, 2022, MONTH_Jan, 0.970130180099394f, 0, 0 },
|
||||||
|
[576] = { city_ankara, 2019, MONTH_Feb, 0.1067739057302146f, 0, 0 },
|
||||||
|
[577] = { city_ankara, 2019, MONTH_Apr, 0.636578294822275f, 0, 0 },
|
||||||
|
[578] = { city_ankara, 2019, MONTH_Jun, 0.1065001987771908f, 0, 0 },
|
||||||
|
[579] = { city_ankara, 2019, MONTH_Oct, 0.395046230673565f, 0, 0 },
|
||||||
|
[580] = { city_ankara, 2020, MONTH_May, 0.516626872063971f, 0, 0 },
|
||||||
|
[581] = { city_ankara, 2020, MONTH_Aug, 0.707711604441861f, 0, 0 },
|
||||||
|
[582] = { city_ankara, 2020, MONTH_Nov, 0.492978525577345f, 0, 0 },
|
||||||
|
[583] = { city_ankara, 2020, MONTH_Dec, 0.417615483179953f, 0, 0 },
|
||||||
|
[584] = { city_ankara, 2021, MONTH_Mar, 0.3916401752130632f, 0, 0 },
|
||||||
|
[585] = { city_ankara, 2021, MONTH_May, 0.642573767822410f, 0, 0 },
|
||||||
|
[586] = { city_ankara, 2021, MONTH_Oct, 0.2332685344442790f, 0, 0 },
|
||||||
|
[587] = { city_ankara, 2021, MONTH_Dec, 0.348302140835808f, 0, 0 },
|
||||||
|
};
|
||||||
|
global u32 test_data_len = sizeof(test_data) / sizeof(test_data[0]);
|
|
@ -0,0 +1,588 @@
|
||||||
|
0,city_kiev,2019,MONTH_Mar,0.8208904644894152
|
||||||
|
1,city_kiev,2019,MONTH_May,0.560734073251748
|
||||||
|
2,city_kiev,2019,MONTH_Oct,0.6374267513460055
|
||||||
|
3,city_kiev,2019,MONTH_Dec,0.808628906405562
|
||||||
|
4,city_kiev,2020,MONTH_Apr,0.5930763917923403
|
||||||
|
5,city_kiev,2020,MONTH_Jul,0.8580149759139355
|
||||||
|
6,city_kiev,2020,MONTH_Sep,0.1797655715379879
|
||||||
|
7,city_kiev,2021,MONTH_Jan,0.2632534693864327
|
||||||
|
8,city_kiev,2021,MONTH_Mar,0.8414969999187483
|
||||||
|
9,city_kiev,2021,MONTH_May,0.5374924169034345
|
||||||
|
10,city_kiev,2021,MONTH_Oct,0.4069815620754663
|
||||||
|
11,city_kiev,2021,MONTH_Dec,0.767921059845557
|
||||||
|
12,city_buenos_aires,2019,MONTH_Mar,0.8774591161262479
|
||||||
|
13,city_buenos_aires,2019,MONTH_May,0.20624465389973745
|
||||||
|
14,city_buenos_aires,2019,MONTH_Oct,0.9847976477350923
|
||||||
|
15,city_buenos_aires,2019,MONTH_Dec,0.06729540587017169
|
||||||
|
16,city_buenos_aires,2020,MONTH_Apr,0.8985765810829179
|
||||||
|
17,city_buenos_aires,2020,MONTH_Jul,0.8147416450345571
|
||||||
|
18,city_buenos_aires,2020,MONTH_Sep,0.39419316092894296
|
||||||
|
19,city_buenos_aires,2021,MONTH_Jan,0.2844815741140395
|
||||||
|
20,city_buenos_aires,2021,MONTH_Mar,0.9929587462564623
|
||||||
|
21,city_buenos_aires,2021,MONTH_May,0.1550649172505355
|
||||||
|
22,city_buenos_aires,2021,MONTH_Oct,0.6522096246196023
|
||||||
|
23,city_buenos_aires,2021,MONTH_Dec,0.7408605917514841
|
||||||
|
24,city_canberra,2019,MONTH_May,0.13386899374995143
|
||||||
|
25,city_canberra,2019,MONTH_Aug,0.01251845204640567
|
||||||
|
26,city_canberra,2019,MONTH_Nov,0.31069477884938224
|
||||||
|
27,city_canberra,2019,MONTH_Dec,0.6144432795767782
|
||||||
|
28,city_canberra,2020,MONTH_Apr,0.38215052324569254
|
||||||
|
29,city_canberra,2020,MONTH_Jul,0.49258667615249774
|
||||||
|
30,city_canberra,2020,MONTH_Sep,0.014024575946441353
|
||||||
|
31,city_canberra,2021,MONTH_Jan,0.6302469024538054
|
||||||
|
32,city_canberra,2021,MONTH_Mar,0.6657411558237325
|
||||||
|
33,city_canberra,2021,MONTH_May,0.6375153743649629
|
||||||
|
34,city_canberra,2021,MONTH_Oct,0.4355080346524989
|
||||||
|
35,city_canberra,2021,MONTH_Dec,0.7842671017087504
|
||||||
|
36,city_yerevan,2019,MONTH_Feb,0.2224804342202128
|
||||||
|
37,city_yerevan,2019,MONTH_Apr,0.40295435638966803
|
||||||
|
38,city_yerevan,2019,MONTH_Jun,0.00841304129117737
|
||||||
|
39,city_yerevan,2019,MONTH_Oct,0.49353338935245084
|
||||||
|
40,city_yerevan,2020,MONTH_Mar,0.7956088092430287
|
||||||
|
41,city_yerevan,2020,MONTH_May,0.8718522813330138
|
||||||
|
42,city_yerevan,2020,MONTH_Oct,0.7578502696544491
|
||||||
|
43,city_yerevan,2020,MONTH_Dec,0.3059739437150092
|
||||||
|
44,city_yerevan,2021,MONTH_Mar,0.5751057083330098
|
||||||
|
45,city_yerevan,2021,MONTH_May,0.32415650181804556
|
||||||
|
46,city_yerevan,2021,MONTH_Oct,0.13919376564116737
|
||||||
|
47,city_yerevan,2021,MONTH_Dec,0.4082901290089086
|
||||||
|
48,city_bishkek,2019,MONTH_Feb,0.8545389644898143
|
||||||
|
49,city_bishkek,2019,MONTH_Apr,0.8679714734156914
|
||||||
|
50,city_bishkek,2019,MONTH_Jun,0.9793901564982332
|
||||||
|
51,city_bishkek,2019,MONTH_Oct,0.8289790309876645
|
||||||
|
52,city_bishkek,2020,MONTH_Apr,0.1458951287005129
|
||||||
|
53,city_bishkek,2020,MONTH_Jul,0.8034467113679751
|
||||||
|
54,city_bishkek,2020,MONTH_Sep,0.34789595434452725
|
||||||
|
55,city_bishkek,2021,MONTH_Jan,0.07184230396111713
|
||||||
|
56,city_bishkek,2021,MONTH_Mar,0.7836073496687682
|
||||||
|
57,city_bishkek,2021,MONTH_May,0.7217500839378747
|
||||||
|
58,city_bishkek,2021,MONTH_Oct,0.28313109637712275
|
||||||
|
59,city_bishkek,2021,MONTH_Dec,0.1071367737747645
|
||||||
|
60,city_dhaka,2019,MONTH_Mar,0.6964870450822525
|
||||||
|
61,city_dhaka,2019,MONTH_May,0.9268741946156642
|
||||||
|
62,city_dhaka,2019,MONTH_Oct,0.0657847048182576
|
||||||
|
63,city_dhaka,2019,MONTH_Dec,0.2679787325156153
|
||||||
|
64,city_dhaka,2020,MONTH_Feb,0.7415948996627278
|
||||||
|
65,city_dhaka,2020,MONTH_Apr,0.8887928797784511
|
||||||
|
66,city_dhaka,2020,MONTH_Jun,0.9526160257787081
|
||||||
|
67,city_dhaka,2020,MONTH_Oct,0.5394245399621023
|
||||||
|
68,city_dhaka,2021,MONTH_Feb,0.7832918710573495
|
||||||
|
69,city_dhaka,2021,MONTH_Apr,0.16703003479420253
|
||||||
|
70,city_dhaka,2021,MONTH_Jun,0.9160800358967391
|
||||||
|
71,city_dhaka,2021,MONTH_Oct,0.045576519669261906
|
||||||
|
72,city_sucre,2019,MONTH_Feb,0.9057953843385798
|
||||||
|
73,city_sucre,2019,MONTH_Apr,0.048949252273037924
|
||||||
|
74,city_sucre,2019,MONTH_Jun,0.39748267526958336
|
||||||
|
75,city_sucre,2019,MONTH_Oct,0.32402533613913065
|
||||||
|
76,city_sucre,2020,MONTH_Feb,0.2555061186834925
|
||||||
|
77,city_sucre,2020,MONTH_Apr,0.6834698453947482
|
||||||
|
78,city_sucre,2020,MONTH_Jun,0.08607874887258926
|
||||||
|
79,city_sucre,2020,MONTH_Oct,0.4802000825511048
|
||||||
|
80,city_sucre,2021,MONTH_Apr,0.9333881101247026
|
||||||
|
81,city_sucre,2021,MONTH_Jul,0.8260557264582842
|
||||||
|
82,city_sucre,2021,MONTH_Sep,0.6558618586863463
|
||||||
|
83,city_sucre,2022,MONTH_Jan,0.9951355772306388
|
||||||
|
84,city_brasilia,2019,MONTH_Apr,0.9343497529635403
|
||||||
|
85,city_brasilia,2019,MONTH_Jul,0.5570852230328219
|
||||||
|
86,city_brasilia,2019,MONTH_Sep,0.2242530147430456
|
||||||
|
87,city_brasilia,2020,MONTH_Jan,0.37927683595779194
|
||||||
|
88,city_brasilia,2020,MONTH_Feb,0.1345707686817872
|
||||||
|
89,city_brasilia,2020,MONTH_Apr,0.29826624893861653
|
||||||
|
90,city_brasilia,2020,MONTH_Jun,0.8471161140155271
|
||||||
|
91,city_brasilia,2020,MONTH_Oct,0.7106683451334669
|
||||||
|
92,city_brasilia,2021,MONTH_Apr,0.8821305385207572
|
||||||
|
93,city_brasilia,2021,MONTH_Jul,0.6341264853965499
|
||||||
|
94,city_brasilia,2021,MONTH_Sep,0.8793042884983516
|
||||||
|
95,city_brasilia,2022,MONTH_Jan,0.3678368890456808
|
||||||
|
96,city_ottawa,2019,MONTH_Feb,0.46446610262374566
|
||||||
|
97,city_ottawa,2019,MONTH_Apr,0.270441763178759
|
||||||
|
98,city_ottawa,2019,MONTH_Jun,0.785020644703367
|
||||||
|
99,city_ottawa,2019,MONTH_Oct,0.4397878896865377
|
||||||
|
100,city_ottawa,2020,MONTH_Mar,0.6250700533476734
|
||||||
|
101,city_ottawa,2020,MONTH_May,0.8543918093977015
|
||||||
|
102,city_ottawa,2020,MONTH_Oct,0.10924765266094849
|
||||||
|
103,city_ottawa,2020,MONTH_Dec,0.06989308957770357
|
||||||
|
104,city_ottawa,2021,MONTH_May,0.02192228695177112
|
||||||
|
105,city_ottawa,2021,MONTH_Aug,0.31180470130290383
|
||||||
|
106,city_ottawa,2021,MONTH_Nov,0.8009641310226249
|
||||||
|
107,city_ottawa,2021,MONTH_Dec,0.8939282034537013
|
||||||
|
108,city_santiago,2019,MONTH_Feb,0.2604066622789484
|
||||||
|
109,city_santiago,2019,MONTH_Apr,0.04408219650514589
|
||||||
|
110,city_santiago,2019,MONTH_Jun,0.033700853867721814
|
||||||
|
111,city_santiago,2019,MONTH_Oct,0.07020014506385863
|
||||||
|
112,city_santiago,2020,MONTH_Mar,0.669167062800284
|
||||||
|
113,city_santiago,2020,MONTH_May,0.3946672417327506
|
||||||
|
114,city_santiago,2020,MONTH_Oct,0.96961707780403
|
||||||
|
115,city_santiago,2020,MONTH_Dec,0.6926699539539745
|
||||||
|
116,city_santiago,2021,MONTH_Feb,0.8855788170714998
|
||||||
|
117,city_santiago,2021,MONTH_Apr,0.022485852743379775
|
||||||
|
118,city_santiago,2021,MONTH_Jun,0.016611682837006425
|
||||||
|
119,city_santiago,2021,MONTH_Oct,0.7388064669432675
|
||||||
|
120,city_beijing,2019,MONTH_Mar,0.3984649808928382
|
||||||
|
121,city_beijing,2019,MONTH_May,0.5516481646386852
|
||||||
|
122,city_beijing,2019,MONTH_Oct,0.0212362107359646
|
||||||
|
123,city_beijing,2019,MONTH_Dec,0.23392793545990853
|
||||||
|
124,city_beijing,2020,MONTH_Mar,0.8976580542276967
|
||||||
|
125,city_beijing,2020,MONTH_May,0.5125178728872494
|
||||||
|
126,city_beijing,2020,MONTH_Oct,0.09885903925252493
|
||||||
|
127,city_beijing,2020,MONTH_Dec,0.996158072334728
|
||||||
|
128,city_beijing,2021,MONTH_May,0.3910244510687829
|
||||||
|
129,city_beijing,2021,MONTH_Aug,0.5919057621735655
|
||||||
|
130,city_beijing,2021,MONTH_Nov,0.22830963063642795
|
||||||
|
131,city_beijing,2021,MONTH_Dec,0.8218119255978358
|
||||||
|
132,city_bogota,2019,MONTH_Feb,0.040559618555634946
|
||||||
|
133,city_bogota,2019,MONTH_Apr,0.6697544946555136
|
||||||
|
134,city_bogota,2019,MONTH_Jun,0.7012648347686247
|
||||||
|
135,city_bogota,2019,MONTH_Oct,0.9266430067995907
|
||||||
|
136,city_bogota,2020,MONTH_May,0.9265350964858453
|
||||||
|
137,city_bogota,2020,MONTH_Aug,0.5622719648324987
|
||||||
|
138,city_bogota,2020,MONTH_Nov,0.18505076213184524
|
||||||
|
139,city_bogota,2020,MONTH_Dec,0.13200979435040983
|
||||||
|
140,city_bogota,2021,MONTH_Apr,0.25492724368701236
|
||||||
|
141,city_bogota,2021,MONTH_Jul,0.6551881370411056
|
||||||
|
142,city_bogota,2021,MONTH_Sep,0.3301507156757937
|
||||||
|
143,city_bogota,2022,MONTH_Jan,0.9319825381469947
|
||||||
|
144,city_nicosia,2019,MONTH_Feb,0.8112536780481092
|
||||||
|
145,city_nicosia,2019,MONTH_Apr,0.7122242228197432
|
||||||
|
146,city_nicosia,2019,MONTH_Jun,0.3992731724465637
|
||||||
|
147,city_nicosia,2019,MONTH_Oct,0.0560925034296097
|
||||||
|
148,city_nicosia,2020,MONTH_Mar,0.605635873827316
|
||||||
|
149,city_nicosia,2020,MONTH_May,0.8155285147048078
|
||||||
|
150,city_nicosia,2020,MONTH_Oct,0.7283140343929381
|
||||||
|
151,city_nicosia,2020,MONTH_Dec,0.1593773388870281
|
||||||
|
152,city_nicosia,2021,MONTH_May,0.5330985723420278
|
||||||
|
153,city_nicosia,2021,MONTH_Aug,0.46643412774693715
|
||||||
|
154,city_nicosia,2021,MONTH_Nov,0.7302379618035622
|
||||||
|
155,city_nicosia,2021,MONTH_Dec,0.5971774259867612
|
||||||
|
156,city_quito,2019,MONTH_May,0.39005009418535863
|
||||||
|
157,city_quito,2019,MONTH_Aug,0.9025102526506403
|
||||||
|
158,city_quito,2019,MONTH_Nov,0.507479232033487
|
||||||
|
159,city_quito,2019,MONTH_Dec,0.5046753623312223
|
||||||
|
160,city_quito,2020,MONTH_Mar,0.8932394343266225
|
||||||
|
161,city_quito,2020,MONTH_May,0.19722367870643642
|
||||||
|
162,city_quito,2020,MONTH_Oct,0.4616243916670646
|
||||||
|
163,city_quito,2020,MONTH_Dec,0.22929952610965976
|
||||||
|
164,city_quito,2021,MONTH_Apr,0.675839552639689
|
||||||
|
165,city_quito,2021,MONTH_Jul,0.7522737622328722
|
||||||
|
166,city_quito,2021,MONTH_Sep,0.7547694762384426
|
||||||
|
167,city_quito,2022,MONTH_Jan,0.5224768718138563
|
||||||
|
168,city_cairo,2019,MONTH_Apr,0.12251978169018596
|
||||||
|
169,city_cairo,2019,MONTH_Jul,0.640214441842041
|
||||||
|
170,city_cairo,2019,MONTH_Sep,0.11292283290324012
|
||||||
|
171,city_cairo,2020,MONTH_Jan,0.443793309914693
|
||||||
|
172,city_cairo,2020,MONTH_May,0.3695331911519818
|
||||||
|
173,city_cairo,2020,MONTH_Aug,0.0875719219910186
|
||||||
|
174,city_cairo,2020,MONTH_Nov,0.1300237622828465
|
||||||
|
175,city_cairo,2020,MONTH_Dec,0.6190802409945482
|
||||||
|
176,city_cairo,2021,MONTH_May,0.2654316735327361
|
||||||
|
177,city_cairo,2021,MONTH_Aug,0.08380868314075796
|
||||||
|
178,city_cairo,2021,MONTH_Nov,0.0021753600424576636
|
||||||
|
179,city_cairo,2021,MONTH_Dec,0.3427143851789648
|
||||||
|
180,city_addis_ababa,2019,MONTH_Feb,0.5274830002683538
|
||||||
|
181,city_addis_ababa,2019,MONTH_Apr,0.028601788414122087
|
||||||
|
182,city_addis_ababa,2019,MONTH_Jun,0.22406045632190197
|
||||||
|
183,city_addis_ababa,2019,MONTH_Oct,0.1570840093379693
|
||||||
|
184,city_addis_ababa,2020,MONTH_Apr,0.4696975980332939
|
||||||
|
185,city_addis_ababa,2020,MONTH_Jul,0.7018912168460542
|
||||||
|
186,city_addis_ababa,2020,MONTH_Sep,0.6707188950806201
|
||||||
|
187,city_addis_ababa,2021,MONTH_Jan,0.22223531255669327
|
||||||
|
188,city_addis_ababa,2021,MONTH_Mar,0.7397846957044468
|
||||||
|
189,city_addis_ababa,2021,MONTH_May,0.2963331880851181
|
||||||
|
190,city_addis_ababa,2021,MONTH_Oct,0.22720267945089334
|
||||||
|
191,city_addis_ababa,2021,MONTH_Dec,0.974100472469575
|
||||||
|
192,city_berlin,2019,MONTH_May,0.9663306486026292
|
||||||
|
193,city_berlin,2019,MONTH_Aug,0.01762058526956345
|
||||||
|
194,city_berlin,2019,MONTH_Nov,0.5845476680327896
|
||||||
|
195,city_berlin,2019,MONTH_Dec,0.05267359388143655
|
||||||
|
196,city_berlin,2020,MONTH_Feb,0.002912080115626603
|
||||||
|
197,city_berlin,2020,MONTH_Apr,0.461618898119614
|
||||||
|
198,city_berlin,2020,MONTH_Jun,0.9187177319896965
|
||||||
|
199,city_berlin,2020,MONTH_Oct,0.5269226682934646
|
||||||
|
200,city_berlin,2021,MONTH_Feb,0.4075331475357029
|
||||||
|
201,city_berlin,2021,MONTH_Apr,0.2606312545694286
|
||||||
|
202,city_berlin,2021,MONTH_Jun,0.8506910998631624
|
||||||
|
203,city_berlin,2021,MONTH_Oct,0.4477453626196978
|
||||||
|
204,city_athens,2019,MONTH_Apr,0.4758101962785981
|
||||||
|
205,city_athens,2019,MONTH_Jul,0.7273511637085998
|
||||||
|
206,city_athens,2019,MONTH_Sep,0.11734674091437469
|
||||||
|
207,city_athens,2020,MONTH_Jan,0.7011339146700339
|
||||||
|
208,city_athens,2020,MONTH_May,0.5021874710835791
|
||||||
|
209,city_athens,2020,MONTH_Aug,0.7224696530590028
|
||||||
|
210,city_athens,2020,MONTH_Nov,0.07057044368715926
|
||||||
|
211,city_athens,2020,MONTH_Dec,0.4122021872654802
|
||||||
|
212,city_athens,2021,MONTH_Apr,0.7895293746783079
|
||||||
|
213,city_athens,2021,MONTH_Jul,0.42630517679620317
|
||||||
|
214,city_athens,2021,MONTH_Sep,0.4220148157231979
|
||||||
|
215,city_athens,2022,MONTH_Jan,0.07930894159509938
|
||||||
|
216,city_guatemala_city,2019,MONTH_Feb,0.5606053808546305
|
||||||
|
217,city_guatemala_city,2019,MONTH_Apr,0.33825266811210186
|
||||||
|
218,city_guatemala_city,2019,MONTH_Jun,0.3958121309669401
|
||||||
|
219,city_guatemala_city,2019,MONTH_Oct,0.8123276948852205
|
||||||
|
220,city_guatemala_city,2020,MONTH_May,0.6546106461958394
|
||||||
|
221,city_guatemala_city,2020,MONTH_Aug,0.3656038852091794
|
||||||
|
222,city_guatemala_city,2020,MONTH_Nov,0.2991555036870628
|
||||||
|
223,city_guatemala_city,2020,MONTH_Dec,0.1841388365131713
|
||||||
|
224,city_guatemala_city,2021,MONTH_Mar,0.7049763199759551
|
||||||
|
225,city_guatemala_city,2021,MONTH_May,0.03619294914439686
|
||||||
|
226,city_guatemala_city,2021,MONTH_Oct,0.641970219489322
|
||||||
|
227,city_guatemala_city,2021,MONTH_Dec,0.7290144352251158
|
||||||
|
228,city_jakarta,2019,MONTH_May,0.48730648880158967
|
||||||
|
229,city_jakarta,2019,MONTH_Aug,0.13324811999375974
|
||||||
|
230,city_jakarta,2019,MONTH_Nov,0.7457459498265384
|
||||||
|
231,city_jakarta,2019,MONTH_Dec,0.6770615920087426
|
||||||
|
232,city_jakarta,2020,MONTH_Feb,0.0972221706377665
|
||||||
|
233,city_jakarta,2020,MONTH_Apr,0.4548133647241398
|
||||||
|
234,city_jakarta,2020,MONTH_Jun,0.5990306990429254
|
||||||
|
235,city_jakarta,2020,MONTH_Oct,0.46254435882852785
|
||||||
|
236,city_jakarta,2021,MONTH_Feb,0.4877541089570895
|
||||||
|
237,city_jakarta,2021,MONTH_Apr,0.3176272110731281
|
||||||
|
238,city_jakarta,2021,MONTH_Jun,0.46016498959627317
|
||||||
|
239,city_jakarta,2021,MONTH_Oct,0.8195183115041934
|
||||||
|
240,city_tehran,2019,MONTH_Apr,0.3018613336723692
|
||||||
|
241,city_tehran,2019,MONTH_Jul,0.6904442096458521
|
||||||
|
242,city_tehran,2019,MONTH_Sep,0.44041453753801474
|
||||||
|
243,city_tehran,2020,MONTH_Jan,0.5122166734476404
|
||||||
|
244,city_tehran,2020,MONTH_Mar,0.4048771020719195
|
||||||
|
245,city_tehran,2020,MONTH_May,0.04251315267732536
|
||||||
|
246,city_tehran,2020,MONTH_Oct,0.25935369695061494
|
||||||
|
247,city_tehran,2020,MONTH_Dec,0.7838900287619984
|
||||||
|
248,city_tehran,2021,MONTH_Mar,0.949263546042006
|
||||||
|
249,city_tehran,2021,MONTH_May,0.05690727846201249
|
||||||
|
250,city_tehran,2021,MONTH_Oct,0.5775680944871373
|
||||||
|
251,city_tehran,2021,MONTH_Dec,0.6189061878508625
|
||||||
|
252,city_baghdad,2019,MONTH_Mar,0.20410987826326765
|
||||||
|
253,city_baghdad,2019,MONTH_May,0.4184107416408793
|
||||||
|
254,city_baghdad,2019,MONTH_Oct,0.40451138082476246
|
||||||
|
255,city_baghdad,2019,MONTH_Dec,0.09350363172641074
|
||||||
|
256,city_baghdad,2020,MONTH_May,0.8813880636872825
|
||||||
|
257,city_baghdad,2020,MONTH_Aug,0.5428448381939682
|
||||||
|
258,city_baghdad,2020,MONTH_Nov,0.9196449942226893
|
||||||
|
259,city_baghdad,2020,MONTH_Dec,0.40125352418748994
|
||||||
|
260,city_baghdad,2021,MONTH_Feb,0.33369599729325594
|
||||||
|
261,city_baghdad,2021,MONTH_Apr,0.17961977212424662
|
||||||
|
262,city_baghdad,2021,MONTH_Jun,0.8287427670166482
|
||||||
|
263,city_baghdad,2021,MONTH_Oct,0.18435480122550651
|
||||||
|
264,city_tokyo,2019,MONTH_May,0.1558911089926377
|
||||||
|
265,city_tokyo,2019,MONTH_Aug,0.7103297441558276
|
||||||
|
266,city_tokyo,2019,MONTH_Nov,0.7670372958998607
|
||||||
|
267,city_tokyo,2019,MONTH_Dec,0.34552140914704765
|
||||||
|
268,city_tokyo,2020,MONTH_Feb,0.34744339811029146
|
||||||
|
269,city_tokyo,2020,MONTH_Apr,0.9456312160307011
|
||||||
|
270,city_tokyo,2020,MONTH_Jun,0.6966696315201248
|
||||||
|
271,city_tokyo,2020,MONTH_Oct,0.7221513702811281
|
||||||
|
272,city_tokyo,2021,MONTH_Apr,0.1247446921008375
|
||||||
|
273,city_tokyo,2021,MONTH_Jul,0.7802487336558712
|
||||||
|
274,city_tokyo,2021,MONTH_Sep,0.8026525028301382
|
||||||
|
275,city_tokyo,2022,MONTH_Jan,0.19500309318308984
|
||||||
|
276,city_amman,2019,MONTH_Apr,0.9135647763017481
|
||||||
|
277,city_amman,2019,MONTH_Jul,0.519959651824404
|
||||||
|
278,city_amman,2019,MONTH_Sep,0.07349623710797859
|
||||||
|
279,city_amman,2020,MONTH_Jan,0.8209280523427239
|
||||||
|
280,city_amman,2020,MONTH_Feb,0.8580494733125601
|
||||||
|
281,city_amman,2020,MONTH_Apr,0.4722288209752745
|
||||||
|
282,city_amman,2020,MONTH_Jun,0.8594503298528673
|
||||||
|
283,city_amman,2020,MONTH_Oct,0.7343971570872213
|
||||||
|
284,city_amman,2021,MONTH_Feb,0.4715316911875882
|
||||||
|
285,city_amman,2021,MONTH_Apr,0.746664117982623
|
||||||
|
286,city_amman,2021,MONTH_Jun,0.04497553004647725
|
||||||
|
287,city_amman,2021,MONTH_Oct,0.9897280982388877
|
||||||
|
288,city_nairobi,2019,MONTH_May,0.3532584699087581
|
||||||
|
289,city_nairobi,2019,MONTH_Aug,0.6372658032245778
|
||||||
|
290,city_nairobi,2019,MONTH_Nov,0.6529632981666209
|
||||||
|
291,city_nairobi,2019,MONTH_Dec,0.9801366674005787
|
||||||
|
292,city_nairobi,2020,MONTH_May,0.11232544995237859
|
||||||
|
293,city_nairobi,2020,MONTH_Aug,0.6363406749343267
|
||||||
|
294,city_nairobi,2020,MONTH_Nov,0.4572050517602766
|
||||||
|
295,city_nairobi,2020,MONTH_Dec,0.5016838053742663
|
||||||
|
296,city_nairobi,2021,MONTH_May,0.2871335451015594
|
||||||
|
297,city_nairobi,2021,MONTH_Aug,0.6134863745452062
|
||||||
|
298,city_nairobi,2021,MONTH_Nov,0.6646687928232157
|
||||||
|
299,city_nairobi,2021,MONTH_Dec,0.4604603108510942
|
||||||
|
300,city_beirut,2019,MONTH_May,0.20657079280157575
|
||||||
|
301,city_beirut,2019,MONTH_Aug,0.08060512516532647
|
||||||
|
302,city_beirut,2019,MONTH_Nov,0.3121758077040654
|
||||||
|
303,city_beirut,2019,MONTH_Dec,0.5704450329632651
|
||||||
|
304,city_beirut,2020,MONTH_May,0.49711298135083226
|
||||||
|
305,city_beirut,2020,MONTH_Aug,0.2651799515773383
|
||||||
|
306,city_beirut,2020,MONTH_Nov,0.37582969737955385
|
||||||
|
307,city_beirut,2020,MONTH_Dec,0.23214191453836386
|
||||||
|
308,city_beirut,2021,MONTH_Feb,0.9769205528039658
|
||||||
|
309,city_beirut,2021,MONTH_Apr,0.5714471639055412
|
||||||
|
310,city_beirut,2021,MONTH_Jun,0.7866510539409003
|
||||||
|
311,city_beirut,2021,MONTH_Oct,0.10968686507430592
|
||||||
|
312,city_tripoli,2019,MONTH_Apr,0.3459256866028718
|
||||||
|
313,city_tripoli,2019,MONTH_Jul,0.8762903773435768
|
||||||
|
314,city_tripoli,2019,MONTH_Sep,0.7902752440774569
|
||||||
|
315,city_tripoli,2020,MONTH_Jan,0.39655891397903786
|
||||||
|
316,city_tripoli,2020,MONTH_Mar,0.2853487707159261
|
||||||
|
317,city_tripoli,2020,MONTH_May,0.4963336260125154
|
||||||
|
318,city_tripoli,2020,MONTH_Oct,0.017927444716766217
|
||||||
|
319,city_tripoli,2020,MONTH_Dec,0.49479276214492607
|
||||||
|
320,city_tripoli,2021,MONTH_May,0.13084483339218256
|
||||||
|
321,city_tripoli,2021,MONTH_Aug,0.3972967126563762
|
||||||
|
322,city_tripoli,2021,MONTH_Nov,0.44945112228561657
|
||||||
|
323,city_tripoli,2021,MONTH_Dec,0.9189092853708906
|
||||||
|
324,city_kuala_lumpur,2019,MONTH_Feb,0.16756258334398821
|
||||||
|
325,city_kuala_lumpur,2019,MONTH_Apr,0.7292001698733792
|
||||||
|
326,city_kuala_lumpur,2019,MONTH_Jun,0.5157281213252976
|
||||||
|
327,city_kuala_lumpur,2019,MONTH_Oct,0.8014958747496247
|
||||||
|
328,city_kuala_lumpur,2020,MONTH_May,0.8602854104400254
|
||||||
|
329,city_kuala_lumpur,2020,MONTH_Aug,0.43333673199642
|
||||||
|
330,city_kuala_lumpur,2020,MONTH_Nov,0.3736418013982573
|
||||||
|
331,city_kuala_lumpur,2020,MONTH_Dec,0.9933212143240009
|
||||||
|
332,city_kuala_lumpur,2021,MONTH_May,0.9558969606204645
|
||||||
|
333,city_kuala_lumpur,2021,MONTH_Aug,0.8474663747876059
|
||||||
|
334,city_kuala_lumpur,2021,MONTH_Nov,0.7259309917369569
|
||||||
|
335,city_kuala_lumpur,2021,MONTH_Dec,0.07716765857962526
|
||||||
|
336,city_male,2019,MONTH_May,0.11859194162248121
|
||||||
|
337,city_male,2019,MONTH_Aug,0.10933036332271562
|
||||||
|
338,city_male,2019,MONTH_Nov,0.3512985312079444
|
||||||
|
339,city_male,2019,MONTH_Dec,0.9390140198052906
|
||||||
|
340,city_male,2020,MONTH_May,0.9058257181974001
|
||||||
|
341,city_male,2020,MONTH_Aug,0.47744511584315097
|
||||||
|
342,city_male,2020,MONTH_Nov,0.8658614942065163
|
||||||
|
343,city_male,2020,MONTH_Dec,0.38798872766896986
|
||||||
|
344,city_male,2021,MONTH_Feb,0.7620947026588929
|
||||||
|
345,city_male,2021,MONTH_Apr,0.9307031365367027
|
||||||
|
346,city_male,2021,MONTH_Jun,0.4132674715381708
|
||||||
|
347,city_male,2021,MONTH_Oct,0.07150772598482613
|
||||||
|
348,city_mexico_city,2019,MONTH_Mar,0.2826892717581577
|
||||||
|
349,city_mexico_city,2019,MONTH_May,0.6928013923863494
|
||||||
|
350,city_mexico_city,2019,MONTH_Oct,0.8563008311643129
|
||||||
|
351,city_mexico_city,2019,MONTH_Dec,0.627526483522628
|
||||||
|
352,city_mexico_city,2020,MONTH_Apr,0.9928776824550084
|
||||||
|
353,city_mexico_city,2020,MONTH_Jul,0.32889448012572653
|
||||||
|
354,city_mexico_city,2020,MONTH_Sep,0.5673016627623955
|
||||||
|
355,city_mexico_city,2021,MONTH_Jan,0.6536524032020574
|
||||||
|
356,city_mexico_city,2021,MONTH_Feb,0.36173684152563834
|
||||||
|
357,city_mexico_city,2021,MONTH_Apr,0.19990517830323706
|
||||||
|
358,city_mexico_city,2021,MONTH_Jun,0.22345205229744747
|
||||||
|
359,city_mexico_city,2021,MONTH_Oct,0.22492657039602948
|
||||||
|
360,city_ulan_bator,2019,MONTH_Feb,0.09731115691626857
|
||||||
|
361,city_ulan_bator,2019,MONTH_Apr,0.7176250351822594
|
||||||
|
362,city_ulan_bator,2019,MONTH_Jun,0.688881154365618
|
||||||
|
363,city_ulan_bator,2019,MONTH_Oct,0.3175980682827121
|
||||||
|
364,city_ulan_bator,2020,MONTH_Mar,0.5320422814207855
|
||||||
|
365,city_ulan_bator,2020,MONTH_May,0.9377318205081451
|
||||||
|
366,city_ulan_bator,2020,MONTH_Oct,0.15075146061048983
|
||||||
|
367,city_ulan_bator,2020,MONTH_Dec,0.02105164967117734
|
||||||
|
368,city_ulan_bator,2021,MONTH_Feb,0.6952583644077902
|
||||||
|
369,city_ulan_bator,2021,MONTH_Apr,0.21333687792373945
|
||||||
|
370,city_ulan_bator,2021,MONTH_Jun,0.43504532964375053
|
||||||
|
371,city_ulan_bator,2021,MONTH_Oct,0.8872324146983761
|
||||||
|
372,city_rabat,2019,MONTH_Apr,0.48486845571004145
|
||||||
|
373,city_rabat,2019,MONTH_Jul,0.8303783897079856
|
||||||
|
374,city_rabat,2019,MONTH_Sep,0.2679469126786186
|
||||||
|
375,city_rabat,2020,MONTH_Jan,0.216862086460625
|
||||||
|
376,city_rabat,2020,MONTH_Feb,0.6394841852490968
|
||||||
|
377,city_rabat,2020,MONTH_Apr,0.7957348864256418
|
||||||
|
378,city_rabat,2020,MONTH_Jun,0.35449913609838557
|
||||||
|
379,city_rabat,2020,MONTH_Oct,0.884786543583512
|
||||||
|
380,city_rabat,2021,MONTH_Feb,0.7545998323649945
|
||||||
|
381,city_rabat,2021,MONTH_Apr,0.44179928991617634
|
||||||
|
382,city_rabat,2021,MONTH_Jun,0.6071167209468333
|
||||||
|
383,city_rabat,2021,MONTH_Oct,0.3586237763278812
|
||||||
|
384,city_amsterdam,2019,MONTH_Feb,0.7316252644430535
|
||||||
|
385,city_amsterdam,2019,MONTH_Apr,0.5668687381660837
|
||||||
|
386,city_amsterdam,2019,MONTH_Jun,0.5576670888299602
|
||||||
|
387,city_amsterdam,2019,MONTH_Oct,0.41651402253597936
|
||||||
|
388,city_amsterdam,2020,MONTH_Mar,0.13691185457089883
|
||||||
|
389,city_amsterdam,2020,MONTH_May,0.9963811450585627
|
||||||
|
390,city_amsterdam,2020,MONTH_Oct,0.5678846559952594
|
||||||
|
391,city_amsterdam,2020,MONTH_Dec,0.35998249466652255
|
||||||
|
392,city_amsterdam,2021,MONTH_May,0.36176124559912815
|
||||||
|
393,city_amsterdam,2021,MONTH_Aug,0.1452082631177628
|
||||||
|
394,city_amsterdam,2021,MONTH_Nov,0.4059250184669765
|
||||||
|
395,city_amsterdam,2021,MONTH_Dec,0.4668655836718629
|
||||||
|
396,city_wellington,2019,MONTH_Mar,0.23997903684052424
|
||||||
|
397,city_wellington,2019,MONTH_May,0.05133126394973464
|
||||||
|
398,city_wellington,2019,MONTH_Oct,0.1548202784687026
|
||||||
|
399,city_wellington,2019,MONTH_Dec,0.3424800359478265
|
||||||
|
400,city_wellington,2020,MONTH_Feb,0.022701964101586536
|
||||||
|
401,city_wellington,2020,MONTH_Apr,0.5499770964284553
|
||||||
|
402,city_wellington,2020,MONTH_Jun,0.8253524794233187
|
||||||
|
403,city_wellington,2020,MONTH_Oct,0.005331477335972168
|
||||||
|
404,city_wellington,2021,MONTH_May,0.921657139441937
|
||||||
|
405,city_wellington,2021,MONTH_Aug,0.10309395870694193
|
||||||
|
406,city_wellington,2021,MONTH_Nov,0.6263565227069673
|
||||||
|
407,city_wellington,2021,MONTH_Dec,0.2020818627729063
|
||||||
|
408,city_managua,2019,MONTH_Apr,0.05582787287624136
|
||||||
|
409,city_managua,2019,MONTH_Jul,0.48382759592973157
|
||||||
|
410,city_managua,2019,MONTH_Sep,0.9827871188806075
|
||||||
|
411,city_managua,2020,MONTH_Jan,0.00017714421442871497
|
||||||
|
412,city_managua,2020,MONTH_Feb,0.9249580344693701
|
||||||
|
413,city_managua,2020,MONTH_Apr,0.8044975554446903
|
||||||
|
414,city_managua,2020,MONTH_Jun,0.5627263957766564
|
||||||
|
415,city_managua,2020,MONTH_Oct,0.3237250276194914
|
||||||
|
416,city_managua,2021,MONTH_Mar,0.020448801084839263
|
||||||
|
417,city_managua,2021,MONTH_May,0.8901304537407349
|
||||||
|
418,city_managua,2021,MONTH_Oct,0.7318410443954749
|
||||||
|
419,city_managua,2021,MONTH_Dec,0.8843814008259293
|
||||||
|
420,city_abuja,2019,MONTH_May,0.664788190346494
|
||||||
|
421,city_abuja,2019,MONTH_Aug,0.34573866676735254
|
||||||
|
422,city_abuja,2019,MONTH_Nov,0.0929888238353932
|
||||||
|
423,city_abuja,2019,MONTH_Dec,0.8242625289595346
|
||||||
|
424,city_abuja,2020,MONTH_Apr,0.610497664130435
|
||||||
|
425,city_abuja,2020,MONTH_Jul,0.13045928363070136
|
||||||
|
426,city_abuja,2020,MONTH_Sep,0.5931871800066496
|
||||||
|
427,city_abuja,2021,MONTH_Jan,0.8761990727326217
|
||||||
|
428,city_abuja,2021,MONTH_Mar,0.03297221593215882
|
||||||
|
429,city_abuja,2021,MONTH_May,0.2663683106261656
|
||||||
|
430,city_abuja,2021,MONTH_Oct,0.4752472559097941
|
||||||
|
431,city_abuja,2021,MONTH_Dec,0.21817891455498406
|
||||||
|
432,city_islamabad,2019,MONTH_Feb,0.6894565356869449
|
||||||
|
433,city_islamabad,2019,MONTH_Apr,0.04473733639784894
|
||||||
|
434,city_islamabad,2019,MONTH_Jun,0.8225140958795525
|
||||||
|
435,city_islamabad,2019,MONTH_Oct,0.9167038764499388
|
||||||
|
436,city_islamabad,2020,MONTH_Mar,0.18931156178758168
|
||||||
|
437,city_islamabad,2020,MONTH_May,0.867263067708257
|
||||||
|
438,city_islamabad,2020,MONTH_Oct,0.9052158492439835
|
||||||
|
439,city_islamabad,2020,MONTH_Dec,0.2549403768974773
|
||||||
|
440,city_islamabad,2021,MONTH_Mar,0.2810396842292088
|
||||||
|
441,city_islamabad,2021,MONTH_May,0.8873391067395595
|
||||||
|
442,city_islamabad,2021,MONTH_Oct,0.9330488657790148
|
||||||
|
443,city_islamabad,2021,MONTH_Dec,0.03407368582674841
|
||||||
|
444,city_lima,2019,MONTH_Feb,0.3283465777695367
|
||||||
|
445,city_lima,2019,MONTH_Apr,0.27567241572636514
|
||||||
|
446,city_lima,2019,MONTH_Jun,0.6098150878639521
|
||||||
|
447,city_lima,2019,MONTH_Oct,0.7827311559088742
|
||||||
|
448,city_lima,2020,MONTH_May,0.0004780110203138621
|
||||||
|
449,city_lima,2020,MONTH_Aug,0.32359176810859613
|
||||||
|
450,city_lima,2020,MONTH_Nov,0.7920164552383919
|
||||||
|
451,city_lima,2020,MONTH_Dec,0.08680504053296734
|
||||||
|
452,city_lima,2021,MONTH_Feb,0.2815552061774018
|
||||||
|
453,city_lima,2021,MONTH_Apr,0.7946567665550932
|
||||||
|
454,city_lima,2021,MONTH_Jun,0.9348739114080165
|
||||||
|
455,city_lima,2021,MONTH_Oct,0.9664448937706452
|
||||||
|
456,city_bucharest,2019,MONTH_Apr,0.2754215240255594
|
||||||
|
457,city_bucharest,2019,MONTH_Jul,0.9342575547213549
|
||||||
|
458,city_bucharest,2019,MONTH_Sep,0.4561755717169159
|
||||||
|
459,city_bucharest,2020,MONTH_Jan,0.5815353517023211
|
||||||
|
460,city_bucharest,2020,MONTH_Feb,0.09553696230313513
|
||||||
|
461,city_bucharest,2020,MONTH_Apr,0.7977241274060681
|
||||||
|
462,city_bucharest,2020,MONTH_Jun,0.11581142188629723
|
||||||
|
463,city_bucharest,2020,MONTH_Oct,0.609366463954831
|
||||||
|
464,city_bucharest,2021,MONTH_May,0.7786493748178472
|
||||||
|
465,city_bucharest,2021,MONTH_Aug,0.3709475494848148
|
||||||
|
466,city_bucharest,2021,MONTH_Nov,0.06409631979509034
|
||||||
|
467,city_bucharest,2021,MONTH_Dec,0.6435411634892579
|
||||||
|
468,city_moscow,2019,MONTH_Mar,0.3010106354277793
|
||||||
|
469,city_moscow,2019,MONTH_May,0.4560783213170011
|
||||||
|
470,city_moscow,2019,MONTH_Oct,0.05383312030625198
|
||||||
|
471,city_moscow,2019,MONTH_Dec,0.751924840138458
|
||||||
|
472,city_moscow,2020,MONTH_May,0.8723060880532295
|
||||||
|
473,city_moscow,2020,MONTH_Aug,0.12394020657703886
|
||||||
|
474,city_moscow,2020,MONTH_Nov,0.20202634410012543
|
||||||
|
475,city_moscow,2020,MONTH_Dec,0.2782740134125702
|
||||||
|
476,city_moscow,2021,MONTH_May,0.24885715310109735
|
||||||
|
477,city_moscow,2021,MONTH_Aug,0.04896170267358957
|
||||||
|
478,city_moscow,2021,MONTH_Nov,0.8684557906574781
|
||||||
|
479,city_moscow,2021,MONTH_Dec,0.543114638108053
|
||||||
|
480,city_belgrade,2019,MONTH_May,0.5522466531644503
|
||||||
|
481,city_belgrade,2019,MONTH_Aug,0.6084457342690707
|
||||||
|
482,city_belgrade,2019,MONTH_Nov,0.9044174074753157
|
||||||
|
483,city_belgrade,2019,MONTH_Dec,0.07066906245830429
|
||||||
|
484,city_belgrade,2020,MONTH_May,0.0008637322170093054
|
||||||
|
485,city_belgrade,2020,MONTH_Aug,0.3288244897831679
|
||||||
|
486,city_belgrade,2020,MONTH_Nov,0.369768435670744
|
||||||
|
487,city_belgrade,2020,MONTH_Dec,0.9619642633301051
|
||||||
|
488,city_belgrade,2021,MONTH_Mar,0.30571888815406045
|
||||||
|
489,city_belgrade,2021,MONTH_May,0.4498184700674681
|
||||||
|
490,city_belgrade,2021,MONTH_Oct,0.711549047351862
|
||||||
|
491,city_belgrade,2021,MONTH_Dec,0.13085939624289578
|
||||||
|
492,city_singapore,2019,MONTH_Feb,0.1936942927803761
|
||||||
|
493,city_singapore,2019,MONTH_Apr,0.3187029298909052
|
||||||
|
494,city_singapore,2019,MONTH_Jun,0.6452157990829956
|
||||||
|
495,city_singapore,2019,MONTH_Oct,0.5911879699181295
|
||||||
|
496,city_singapore,2020,MONTH_May,0.6993965342569872
|
||||||
|
497,city_singapore,2020,MONTH_Aug,0.27809776213878035
|
||||||
|
498,city_singapore,2020,MONTH_Nov,0.4554896687696134
|
||||||
|
499,city_singapore,2020,MONTH_Dec,0.7243723676795923
|
||||||
|
500,city_singapore,2021,MONTH_Apr,0.02299799672926217
|
||||||
|
501,city_singapore,2021,MONTH_Jul,0.02496694790370424
|
||||||
|
502,city_singapore,2021,MONTH_Sep,0.8791086402875006
|
||||||
|
503,city_singapore,2022,MONTH_Jan,0.6120899910207525
|
||||||
|
504,city_seoul,2019,MONTH_May,0.2771508217854315
|
||||||
|
505,city_seoul,2019,MONTH_Aug,0.33484783290436804
|
||||||
|
506,city_seoul,2019,MONTH_Nov,0.45034878076078355
|
||||||
|
507,city_seoul,2019,MONTH_Dec,0.21034420206658822
|
||||||
|
508,city_seoul,2020,MONTH_May,0.36401409053803546
|
||||||
|
509,city_seoul,2020,MONTH_Aug,0.7067291614998081
|
||||||
|
510,city_seoul,2020,MONTH_Nov,0.8856122368081336
|
||||||
|
511,city_seoul,2020,MONTH_Dec,0.5197758093680719
|
||||||
|
512,city_seoul,2021,MONTH_Apr,0.7328358817323198
|
||||||
|
513,city_seoul,2021,MONTH_Jul,0.9037127128689783
|
||||||
|
514,city_seoul,2021,MONTH_Sep,0.5799119578817793
|
||||||
|
515,city_seoul,2022,MONTH_Jan,0.5237934258414012
|
||||||
|
516,city_tunis,2019,MONTH_Mar,0.09827353604234723
|
||||||
|
517,city_tunis,2019,MONTH_May,0.27835171289138416
|
||||||
|
518,city_tunis,2019,MONTH_Oct,0.01798652216085228
|
||||||
|
519,city_tunis,2019,MONTH_Dec,0.5949113607489287
|
||||||
|
520,city_tunis,2020,MONTH_Mar,0.44924299463957973
|
||||||
|
521,city_tunis,2020,MONTH_May,0.2858608027590416
|
||||||
|
522,city_tunis,2020,MONTH_Oct,0.5320218904968578
|
||||||
|
523,city_tunis,2020,MONTH_Dec,0.6648999091609407
|
||||||
|
524,city_tunis,2021,MONTH_Apr,0.3736650716340366
|
||||||
|
525,city_tunis,2021,MONTH_Jul,0.9657763373669
|
||||||
|
526,city_tunis,2021,MONTH_Sep,0.6595606201567045
|
||||||
|
527,city_tunis,2022,MONTH_Jan,0.6243212038969197
|
||||||
|
528,city_bangkok,2019,MONTH_Feb,0.2578456608769377
|
||||||
|
529,city_bangkok,2019,MONTH_Apr,0.2248885416702492
|
||||||
|
530,city_bangkok,2019,MONTH_Jun,0.6198473912429538
|
||||||
|
531,city_bangkok,2019,MONTH_Oct,0.8505515150984757
|
||||||
|
532,city_bangkok,2020,MONTH_Feb,0.9118617849799147
|
||||||
|
533,city_bangkok,2020,MONTH_Apr,0.8543453671326979
|
||||||
|
534,city_bangkok,2020,MONTH_Jun,0.9765808850300658
|
||||||
|
535,city_bangkok,2020,MONTH_Oct,0.5158800233414695
|
||||||
|
536,city_bangkok,2021,MONTH_Apr,0.050747029721519676
|
||||||
|
537,city_bangkok,2021,MONTH_Jul,0.42532679178785726
|
||||||
|
538,city_bangkok,2021,MONTH_Sep,0.9152877310128299
|
||||||
|
539,city_bangkok,2022,MONTH_Jan,0.2583064313996952
|
||||||
|
540,city_washington_dc,2019,MONTH_May,0.6433596169157464
|
||||||
|
541,city_washington_dc,2019,MONTH_Aug,0.3702060052617322
|
||||||
|
542,city_washington_dc,2019,MONTH_Nov,0.06234400404581297
|
||||||
|
543,city_washington_dc,2019,MONTH_Dec,0.8164574817344272
|
||||||
|
544,city_washington_dc,2020,MONTH_May,0.5387086257630082
|
||||||
|
545,city_washington_dc,2020,MONTH_Aug,0.6503845339241877
|
||||||
|
546,city_washington_dc,2020,MONTH_Nov,0.1169515450758295
|
||||||
|
547,city_washington_dc,2020,MONTH_Dec,0.1482196412729787
|
||||||
|
548,city_washington_dc,2021,MONTH_Apr,0.021006555605136645
|
||||||
|
549,city_washington_dc,2021,MONTH_Jul,0.8719805902905939
|
||||||
|
550,city_washington_dc,2021,MONTH_Sep,0.2823182323390435
|
||||||
|
551,city_washington_dc,2022,MONTH_Jan,0.8058292769346758
|
||||||
|
552,city_hanoi,2019,MONTH_May,0.416591132604722
|
||||||
|
553,city_hanoi,2019,MONTH_Aug,0.11526419958273892
|
||||||
|
554,city_hanoi,2019,MONTH_Nov,0.3600359652946916
|
||||||
|
555,city_hanoi,2019,MONTH_Dec,0.7841960773324388
|
||||||
|
556,city_hanoi,2020,MONTH_May,0.7614140625646568
|
||||||
|
557,city_hanoi,2020,MONTH_Aug,0.9722495866270668
|
||||||
|
558,city_hanoi,2020,MONTH_Nov,0.4772429269877435
|
||||||
|
559,city_hanoi,2020,MONTH_Dec,0.5484266496681606
|
||||||
|
560,city_hanoi,2021,MONTH_May,0.5482481929764795
|
||||||
|
561,city_hanoi,2021,MONTH_Aug,0.5910165431201254
|
||||||
|
562,city_hanoi,2021,MONTH_Nov,0.7883174579363615
|
||||||
|
563,city_hanoi,2021,MONTH_Dec,0.8001325713399826
|
||||||
|
564,city_harare,2019,MONTH_Mar,0.7297867595027538
|
||||||
|
565,city_harare,2019,MONTH_May,0.9072865854787621
|
||||||
|
566,city_harare,2019,MONTH_Oct,0.7502614309817123
|
||||||
|
567,city_harare,2019,MONTH_Dec,0.4934380718142153
|
||||||
|
568,city_harare,2020,MONTH_Feb,0.651326952527076
|
||||||
|
569,city_harare,2020,MONTH_Apr,0.6744095138584462
|
||||||
|
570,city_harare,2020,MONTH_Jun,0.6135341540484665
|
||||||
|
571,city_harare,2020,MONTH_Oct,0.3326984860429695
|
||||||
|
572,city_harare,2021,MONTH_Apr,0.3268433775218048
|
||||||
|
573,city_harare,2021,MONTH_Jul,0.952598360887876
|
||||||
|
574,city_harare,2021,MONTH_Sep,0.6345983070473546
|
||||||
|
575,city_harare,2022,MONTH_Jan,0.9701301800993941
|
||||||
|
576,city_ankara,2019,MONTH_Feb,0.10677390573021461
|
||||||
|
577,city_ankara,2019,MONTH_Apr,0.6365782948222759
|
||||||
|
578,city_ankara,2019,MONTH_Jun,0.10650019877719086
|
||||||
|
579,city_ankara,2019,MONTH_Oct,0.3950462306735656
|
||||||
|
580,city_ankara,2020,MONTH_May,0.5166268720639717
|
||||||
|
581,city_ankara,2020,MONTH_Aug,0.7077116044418617
|
||||||
|
582,city_ankara,2020,MONTH_Nov,0.4929785255773451
|
||||||
|
583,city_ankara,2020,MONTH_Dec,0.4176154831799538
|
||||||
|
584,city_ankara,2021,MONTH_Mar,0.39164017521306327
|
||||||
|
585,city_ankara,2021,MONTH_May,0.6425737678224106
|
||||||
|
586,city_ankara,2021,MONTH_Oct,0.23326853444427909
|
||||||
|
587,city_ankara,2021,MONTH_Dec,0.3483021408358088
|
|
|
@ -0,0 +1,490 @@
|
||||||
|
0,city_kiev,2019-Jan,0.4135864139,0.01956557108,0.3199632899
|
||||||
|
1,city_kiev,2019-May,0.5108363835,0.8589876789,0.2033754817
|
||||||
|
2,city_kiev,2019-Sep,0.3098831619,0.2965779176,0.8780642384
|
||||||
|
3,city_kiev,2020-Jan,0.6513288588,0.969807378,0.4734936057
|
||||||
|
4,city_kiev,2020-May,0.4017988233,0.08149953656,0.1917572298
|
||||||
|
5,city_kiev,2020-Sep,0.2700455917,0.6525809233,0.3808256497
|
||||||
|
6,city_kiev,2021-Jan,0.9957073392,0.8955640153,0.08200560685
|
||||||
|
7,city_kiev,2021-May,0.08359383932,0.878866307,0.2737393541
|
||||||
|
8,city_kiev,2021-Sep,0.3864062227,0.8355196902,0.1672691656
|
||||||
|
9,city_kiev,2022-Jan,0.03859181836,0.8382749998,0.8116680932
|
||||||
|
10,city_buenos_aires,2019-Jan,0.9308313567,0.6466857107,0.8641769833
|
||||||
|
11,city_buenos_aires,2019-May,0.3700134984,0.7837693637,0.4343937489
|
||||||
|
12,city_buenos_aires,2019-Sep,0.5994078053,0.2148970716,0.2135238874
|
||||||
|
13,city_buenos_aires,2020-Jan,0.4941897857,0.9995185631,0.4317838305
|
||||||
|
14,city_buenos_aires,2020-May,0.3257251742,0.1786902536,0.9581480625
|
||||||
|
15,city_buenos_aires,2020-Sep,0.4133663483,0.4895787017,0.3266269703
|
||||||
|
16,city_buenos_aires,2021-Jan,0.4185051363,0.6196468097,0.8595087401
|
||||||
|
17,city_buenos_aires,2021-May,0.967209952,0.9684863108,0.1240276343
|
||||||
|
18,city_buenos_aires,2021-Sep,0.9547593981,0.4235904569,0.7747874597
|
||||||
|
19,city_buenos_aires,2022-Jan,0.7438244778,0.63418064,0.08865491745
|
||||||
|
20,city_canberra,2019-Jan,0.642174332,0.2388107887,0.4174561786
|
||||||
|
21,city_canberra,2019-May,0.275049574,0.5548509861,0.6932049183
|
||||||
|
22,city_canberra,2019-Sep,0.7137277005,0.2288560273,0.3374528905
|
||||||
|
23,city_canberra,2020-Jan,0.7776833239,0.2323082658,0.412349501
|
||||||
|
24,city_canberra,2020-May,0.240911076,0.7393032141,0.03500517153
|
||||||
|
25,city_canberra,2020-Sep,0.3222924521,0.6443196701,0.8722973134
|
||||||
|
26,city_canberra,2021-Jan,0.03333787808,0.942723093,0.9307922515
|
||||||
|
27,city_canberra,2021-May,0.6754651903,0.8715185605,0.7317628479
|
||||||
|
28,city_canberra,2021-Sep,0.6679682277,0.3739222301,0.1775886144
|
||||||
|
29,city_canberra,2022-Jan,0.5068355685,0.1635081943,0.1361671877
|
||||||
|
30,city_yerevan,2019-Jan,0.2147489967,0.1612449722,0.8831791504
|
||||||
|
31,city_yerevan,2019-May,0.9215334967,0.5782146645,0.4315847514
|
||||||
|
32,city_yerevan,2019-Sep,0.08998384769,0.243931627,0.9968073448
|
||||||
|
33,city_yerevan,2020-Jan,0.6352732643,0.1800861503,0.09468051361
|
||||||
|
34,city_yerevan,2020-May,0.9732926191,0.3591501359,0.2549700998
|
||||||
|
35,city_yerevan,2020-Sep,0.8958159719,0.9162956265,0.1139302618
|
||||||
|
36,city_yerevan,2021-Jan,0.03360279599,0.999251994,0.6504557519
|
||||||
|
37,city_yerevan,2021-May,0.2320210872,0.7948166485,0.3111218033
|
||||||
|
38,city_yerevan,2021-Sep,0.7518920271,0.2746721747,0.1822453912
|
||||||
|
39,city_yerevan,2022-Jan,0.9828234148,0.07410452188,0.8394608475
|
||||||
|
40,city_bishkek,2019-Jan,0.1452622254,0.7491750047,0.9541456661
|
||||||
|
41,city_bishkek,2019-May,0.5750325423,0.03818584404,0.4018200559
|
||||||
|
42,city_bishkek,2019-Sep,0.2234510709,0.8535100292,0.2897079852
|
||||||
|
43,city_bishkek,2020-Jan,0.5124122989,0.5110659435,0.3112428697
|
||||||
|
44,city_bishkek,2020-May,0.6543130255,0.04240204986,0.622299684
|
||||||
|
45,city_bishkek,2020-Sep,0.291880605,0.4159968733,0.2820567858
|
||||||
|
46,city_bishkek,2021-Jan,0.04837900082,0.6784619452,0.1266086804
|
||||||
|
47,city_bishkek,2021-May,0.7297099912,0.5149978596,0.5162051605
|
||||||
|
48,city_bishkek,2021-Sep,0.5357617635,0.1818118381,0.8049034964
|
||||||
|
49,city_bishkek,2022-Jan,0.8776874504,0.526233849,0.5263148206
|
||||||
|
50,city_dhaka,2019-Jan,0.6751063458,0.1258686413,0.1016408419
|
||||||
|
51,city_dhaka,2019-May,0.1479538758,0.137851628,0.5491982115
|
||||||
|
52,city_dhaka,2019-Sep,0.0975619112,0.07457551448,0.03538831459
|
||||||
|
53,city_dhaka,2020-Jan,0.4430038543,0.1828778611,0.2944631539
|
||||||
|
54,city_dhaka,2020-May,0.4983727344,0.2630854991,0.3943451107
|
||||||
|
55,city_dhaka,2020-Sep,0.4484292451,0.2339481189,0.2726949863
|
||||||
|
56,city_dhaka,2021-Jan,0.5386010889,0.6933623389,0.4272398241
|
||||||
|
57,city_dhaka,2021-May,0.8000427347,0.1994170511,0.390616751
|
||||||
|
58,city_dhaka,2021-Sep,0.6004021175,0.3635764249,0.7907815985
|
||||||
|
59,city_dhaka,2022-Jan,0.7859317154,0.9442375658,0.4927301142
|
||||||
|
60,city_sucre,2019-Jan,0.5256472928,0.6907740522,0.615610268
|
||||||
|
61,city_sucre,2019-May,0.09963983779,0.7664825572,0.06144303964
|
||||||
|
62,city_sucre,2019-Sep,0.2666295548,0.8243600228,0.9654478129
|
||||||
|
63,city_sucre,2020-Jan,0.8832832537,0.8316651207,0.506107938
|
||||||
|
64,city_sucre,2020-May,0.5119837485,0.8836395641,0.5570675648
|
||||||
|
65,city_sucre,2020-Sep,0.2845784627,0.9690913465,0.8959150557
|
||||||
|
66,city_sucre,2021-Jan,0.6332564923,0.6389759815,0.1370995872
|
||||||
|
67,city_sucre,2021-May,0.3936684553,0.5841123856,0.7516655319
|
||||||
|
68,city_sucre,2021-Sep,0.2701367573,0.3501915684,0.6336972499
|
||||||
|
69,city_sucre,2022-Jan,0.5919516162,0.4011786881,0.401258499
|
||||||
|
70,city_brasilia,2019-Jan,0.9362317028,0.7884664385,0.422647608
|
||||||
|
71,city_brasilia,2019-May,0.8524471342,0.430337496,0.6524337378
|
||||||
|
72,city_brasilia,2019-Sep,0.3174124746,0.2555113355,0.7316351622
|
||||||
|
73,city_brasilia,2020-Jan,0.7486195535,0.9015460575,0.7223646562
|
||||||
|
74,city_brasilia,2020-May,0.3439380221,0.4736994161,0.2520318998
|
||||||
|
75,city_brasilia,2020-Sep,0.3628079446,0.8676514395,0.03414644115
|
||||||
|
76,city_brasilia,2021-Jan,0.7881248045,0.07831938111,0.1207919623
|
||||||
|
77,city_brasilia,2021-May,0.9250479078,0.8901303748,0.07106044929
|
||||||
|
78,city_brasilia,2021-Sep,0.4424696223,0.1006045971,0.5623995233
|
||||||
|
79,city_brasilia,2022-Jan,0.774905499,0.2060788813,0.8296158878
|
||||||
|
80,city_ottawa,2019-Jan,0.415154305,0.1059680177,0.3308787448
|
||||||
|
81,city_ottawa,2019-May,0.6493463515,0.8937871978,0.3920436129
|
||||||
|
82,city_ottawa,2019-Sep,0.7302853507,0.959377626,0.6185701564
|
||||||
|
83,city_ottawa,2020-Jan,0.7511642768,0.9351348965,0.3946346882
|
||||||
|
84,city_ottawa,2020-May,0.7724624372,0.9600619198,0.7859329103
|
||||||
|
85,city_ottawa,2020-Sep,0.3041129836,0.7255126855,0.5221992715
|
||||||
|
86,city_ottawa,2021-Jan,0.2503068936,0.3966644239,0.9602804747
|
||||||
|
87,city_ottawa,2021-May,0.9312852988,0.3889126695,0.7929940878
|
||||||
|
88,city_ottawa,2021-Sep,0.4981112549,0.1059935693,0.8574743066
|
||||||
|
89,city_ottawa,2022-Jan,0.2752719283,0.719554905,0.6726537328
|
||||||
|
90,city_santiago,2019-Jan,0.7354927387,0.4213001179,0.8802422329
|
||||||
|
91,city_santiago,2019-May,0.7656384917,0.04327784254,0.4415898581
|
||||||
|
92,city_santiago,2019-Sep,0.9611505259,0.6413038085,0.3379016843
|
||||||
|
93,city_santiago,2020-Jan,0.2073040591,0.9427695446,0.6375111631
|
||||||
|
94,city_santiago,2020-May,0.3194905106,0.7217433052,0.5085047009
|
||||||
|
95,city_santiago,2020-Sep,0.3848264613,0.4960023984,0.9355666638
|
||||||
|
96,city_santiago,2021-Jan,0.8416596967,0.8012664085,0.9257390628
|
||||||
|
97,city_santiago,2021-May,0.04492334998,0.5346889758,0.7850799406
|
||||||
|
98,city_santiago,2021-Sep,0.2037147168,0.5946083862,0.2569824786
|
||||||
|
99,city_santiago,2022-Jan,0.1393061974,0.3129179343,0.952991536
|
||||||
|
100,city_beijing,2019-Jan,0.3178648282,0.6780576423,0.310220077
|
||||||
|
101,city_beijing,2019-May,0.08431258495,0.4251703457,0.325551065
|
||||||
|
102,city_beijing,2019-Sep,0.9445905243,0.6002283849,0.2930351001
|
||||||
|
103,city_beijing,2020-Jan,0.2790601521,0.6238888439,0.1195087407
|
||||||
|
104,city_beijing,2020-May,0.7794297238,0.1274087865,0.8642829933
|
||||||
|
105,city_beijing,2020-Sep,0.1180488469,0.6663626158,0.2607091672
|
||||||
|
106,city_beijing,2021-Jan,0.0704770744,0.1823784313,0.266078728
|
||||||
|
107,city_beijing,2021-May,0.6136936433,0.9076039223,0.7423526451
|
||||||
|
108,city_beijing,2021-Sep,0.1818364902,0.8480116889,0.1921589399
|
||||||
|
109,city_beijing,2022-Jan,0.9251074867,0.9359530202,0.1770008157
|
||||||
|
110,city_bogota,2019-Jan,0.624155697,0.03153673702,0.194147822
|
||||||
|
111,city_bogota,2019-May,0.6693112776,0.9194170452,0.7562801226
|
||||||
|
112,city_bogota,2019-Sep,0.2270854552,0.5727321164,0.1383067024
|
||||||
|
113,city_bogota,2020-Jan,0.1680212218,0.9342808077,0.8749805221
|
||||||
|
114,city_bogota,2020-May,0.7202858441,0.9917960947,0.6322514442
|
||||||
|
115,city_bogota,2020-Sep,0.2521898539,0.6263208583,0.4677228154
|
||||||
|
116,city_bogota,2021-Jan,0.1522785431,0.3525519967,0.7373106672
|
||||||
|
117,city_bogota,2021-May,0.5294850571,0.5696053899,0.8817775003
|
||||||
|
118,city_bogota,2021-Sep,0.4124724998,0.8456196102,0.6640041077
|
||||||
|
119,city_bogota,2022-Jan,0.3733020161,0.02006290035,0.7176733233
|
||||||
|
120,city_nicosia,2019-Jan,0.05459926779,0.5053119181,0.7161425568
|
||||||
|
121,city_nicosia,2019-May,0.1106513246,0.05436806241,0.3515319482
|
||||||
|
122,city_nicosia,2019-Sep,0.2890129589,0.5327814479,0.0564076411
|
||||||
|
123,city_nicosia,2020-Jan,0.5163181441,0.6338465939,0.6444040696
|
||||||
|
124,city_nicosia,2020-May,0.368582402,0.2737939017,0.5093951622
|
||||||
|
125,city_nicosia,2020-Sep,0.471424489,0.7035862994,0.2042673249
|
||||||
|
126,city_nicosia,2021-Jan,0.6501679348,0.3863401401,0.06039493853
|
||||||
|
127,city_nicosia,2021-May,0.8365728469,0.9942683732,0.2896511837
|
||||||
|
128,city_nicosia,2021-Sep,0.995211768,0.4426742775,0.2572311547
|
||||||
|
129,city_nicosia,2022-Jan,0.4359362671,0.3118280621,0.6705883368
|
||||||
|
130,city_quito,2019-Jan,0.008417639206,0.3014245876,0.3052574326
|
||||||
|
131,city_quito,2019-May,0.9857935547,0.1817759722,0.6952597878
|
||||||
|
132,city_quito,2019-Sep,0.5276216133,0.130251563,0.3240003865
|
||||||
|
133,city_quito,2020-Jan,0.9035196298,0.05698437866,0.7702244321
|
||||||
|
134,city_quito,2020-May,0.3066932204,0.4436222048,0.260779084
|
||||||
|
135,city_quito,2020-Sep,0.7272718268,0.5725148062,0.9164124193
|
||||||
|
136,city_quito,2021-Jan,0.1059151872,0.08895582061,0.2928971124
|
||||||
|
137,city_quito,2021-May,0.5118712419,0.3026817401,0.4279458258
|
||||||
|
138,city_quito,2021-Sep,0.3330274894,0.4468848481,0.1236207096
|
||||||
|
139,city_quito,2022-Jan,0.1244205704,0.1358899607,0.09450148278
|
||||||
|
140,city_cairo,2019-Jan,0.4615407783,0.9520223142,0.5749502467
|
||||||
|
141,city_cairo,2019-May,0.475409533,0.8210527062,0.4346789398
|
||||||
|
142,city_cairo,2019-Sep,0.8066731319,0.6534694757,0.02837567269
|
||||||
|
143,city_cairo,2020-Jan,0.8670750153,0.3625430406,0.3825884646
|
||||||
|
144,city_cairo,2020-May,0.4951683874,0.3254080811,0.3654370688
|
||||||
|
145,city_cairo,2020-Sep,0.7770142608,0.3716663152,0.7309639163
|
||||||
|
146,city_cairo,2021-Jan,0.7855635031,0.066121297,0.4673674219
|
||||||
|
147,city_cairo,2021-May,0.1730690216,0.6707204192,0.04674807743
|
||||||
|
148,city_cairo,2021-Sep,0.489859121,0.7975075822,0.4092845343
|
||||||
|
149,city_cairo,2022-Jan,0.4026321904,0.3023607084,0.4688463182
|
||||||
|
150,city_addis_ababa,2019-Jan,0.4158713422,0.723030428,0.7597643722
|
||||||
|
151,city_addis_ababa,2019-May,0.6785635739,0.1609066638,0.3381258458
|
||||||
|
152,city_addis_ababa,2019-Sep,0.4569397919,0.526164665,0.1769840336
|
||||||
|
153,city_addis_ababa,2020-Jan,0.6383916423,0.9232172286,0.1182792853
|
||||||
|
154,city_addis_ababa,2020-May,0.7178022526,0.2387936324,0.02385348652
|
||||||
|
155,city_addis_ababa,2020-Sep,0.9849294332,0.7956996228,0.4222712868
|
||||||
|
156,city_addis_ababa,2021-Jan,0.07887778219,0.69387249,0.1295531304
|
||||||
|
157,city_addis_ababa,2021-May,0.1808748003,0.06275186687,0.07472647253
|
||||||
|
158,city_addis_ababa,2021-Sep,0.4839227903,0.4053925375,0.5147437288
|
||||||
|
159,city_addis_ababa,2022-Jan,0.7803588092,0.727980068,0.6142244773
|
||||||
|
160,city_berlin,2019-Jan,0.8326116144,0.1655051488,0.9828841108
|
||||||
|
161,city_berlin,2019-May,0.250598596,0.8092499198,0.2239228888
|
||||||
|
162,city_berlin,2019-Sep,0.8741896975,0.2665338382,0.1668458375
|
||||||
|
163,city_berlin,2020-Jan,0.8399662922,0.7424132106,0.7362431642
|
||||||
|
164,city_berlin,2020-May,0.6234997751,0.1409901662,0.1120024816
|
||||||
|
165,city_berlin,2020-Sep,0.5161994486,0.5217599377,0.2535940892
|
||||||
|
166,city_berlin,2021-Jan,0.1199007456,0.4344814743,0.1242415921
|
||||||
|
167,city_berlin,2021-May,0.7303554923,0.3020973192,0.07171730289
|
||||||
|
168,city_berlin,2021-Sep,0.7721955593,0.1087218774,0.6464209647
|
||||||
|
169,city_berlin,2022-Jan,0.7614676523,0.08317084863,0.2325090714
|
||||||
|
170,city_athens,2019-Jan,0.5327877289,0.9744463465,0.08180874782
|
||||||
|
171,city_athens,2019-May,0.3652119168,0.01078413186,0.3276447375
|
||||||
|
172,city_athens,2019-Sep,0.02943374111,0.9488744953,0.839420683
|
||||||
|
173,city_athens,2020-Jan,0.8262571714,0.3638952168,0.00987960679
|
||||||
|
174,city_athens,2020-May,0.5744768806,0.345623497,0.02740369312
|
||||||
|
175,city_athens,2020-Sep,0.1795134643,0.3635695132,0.5559708634
|
||||||
|
176,city_athens,2021-Jan,0.7699177565,0.392814441,0.61825789
|
||||||
|
177,city_athens,2021-May,0.2212081657,0.9191236281,0.2313453472
|
||||||
|
178,city_athens,2021-Sep,0.6074897578,0.7022955185,0.9424673176
|
||||||
|
179,city_athens,2022-Jan,0.8794169545,0.3645845791,0.03908482265
|
||||||
|
180,city_guatemala_city,2019-Jan,0.2898139176,0.763974548,0.1414512253
|
||||||
|
181,city_guatemala_city,2019-May,0.6106569652,0.8240962332,0.6939830925
|
||||||
|
182,city_guatemala_city,2019-Sep,0.5861384162,0.04609006852,0.8409472079
|
||||||
|
183,city_guatemala_city,2020-Jan,0.7872155024,0.1606561264,0.2650589027
|
||||||
|
184,city_guatemala_city,2020-May,0.1910735766,0.557900717,0.600110758
|
||||||
|
185,city_guatemala_city,2020-Sep,0.6290094549,0.2562474722,0.7560094788
|
||||||
|
186,city_guatemala_city,2021-Jan,0.4257358075,0.1027767675,0.4144983414
|
||||||
|
187,city_guatemala_city,2021-May,0.7099732679,0.08313104975,0.284854386
|
||||||
|
188,city_guatemala_city,2021-Sep,0.892413365,0.5532906407,0.2968339741
|
||||||
|
189,city_guatemala_city,2022-Jan,0.8273477199,0.7395492724,0.9457886281
|
||||||
|
190,city_jakarta,2019-Jan,0.9193766389,0.562096263,0.08597256563
|
||||||
|
191,city_jakarta,2019-May,0.9613467154,0.6769316276,0.6942166445
|
||||||
|
192,city_jakarta,2019-Sep,0.8911849078,0.7562774935,0.931896191
|
||||||
|
193,city_jakarta,2020-Jan,0.4624306474,0.2038734797,0.9108010452
|
||||||
|
194,city_jakarta,2020-May,0.7789672101,0.4319469274,0.5955267956
|
||||||
|
195,city_jakarta,2020-Sep,0.937567279,0.5425494534,0.1971329509
|
||||||
|
196,city_jakarta,2021-Jan,0.05969973106,0.8612950096,0.1110350332
|
||||||
|
197,city_jakarta,2021-May,0.2180583953,0.129191418,0.8485609101
|
||||||
|
198,city_jakarta,2021-Sep,0.5603349001,0.4438715596,0.3221066821
|
||||||
|
199,city_jakarta,2022-Jan,0.5924979531,0.7839538361,0.9407650221
|
||||||
|
200,city_tehran,2019-Jan,0.5292539582,0.9150355842,0.5624261915
|
||||||
|
201,city_tehran,2019-May,0.7509693779,0.2702537133,0.05959118151
|
||||||
|
202,city_tehran,2019-Sep,0.0004306332507,0.5449529067,0.7126608061
|
||||||
|
203,city_tehran,2020-Jan,0.1082794742,0.4536112847,0.9691479921
|
||||||
|
204,city_tehran,2020-May,0.3819988509,0.6632068954,0.5233308183
|
||||||
|
205,city_tehran,2020-Sep,0.9333775196,0.6158183662,0.6980507813
|
||||||
|
206,city_tehran,2021-Jan,0.4710513182,0.05454750359,0.5645271704
|
||||||
|
207,city_tehran,2021-May,0.2485026502,0.7312942592,0.2627718368
|
||||||
|
208,city_tehran,2021-Sep,0.01302679826,0.336700741,0.6003091579
|
||||||
|
209,city_tehran,2022-Jan,0.819297579,0.9598619279,0.6779261352
|
||||||
|
210,city_baghdad,2019-Jan,0.6571740151,0.7467470149,0.6081817043
|
||||||
|
211,city_baghdad,2019-May,0.8853581326,0.7189311143,0.7448624368
|
||||||
|
212,city_baghdad,2019-Sep,0.6146196468,0.6768913331,0.7571456788
|
||||||
|
213,city_baghdad,2020-Jan,0.08117439619,0.8747030021,0.7191705185
|
||||||
|
214,city_baghdad,2020-May,0.3522675259,0.8238104615,0.1537342642
|
||||||
|
215,city_baghdad,2020-Sep,0.2356301438,0.3576600925,0.6118789786
|
||||||
|
216,city_baghdad,2021-Jan,0.4391707399,0.4474647074,0.6430828897
|
||||||
|
217,city_baghdad,2021-May,0.268736745,0.394059054,0.119349115
|
||||||
|
218,city_baghdad,2021-Sep,0.2073373839,0.407147767,0.8267744414
|
||||||
|
219,city_baghdad,2022-Jan,0.01562994523,0.7208303197,0.3132938272
|
||||||
|
220,city_tokyo,2019-Jan,0.8352048365,0.4889643586,0.5708637608
|
||||||
|
221,city_tokyo,2019-May,0.07092244122,0.7175987454,0.548696431
|
||||||
|
222,city_tokyo,2019-Sep,0.435831484,0.7019761931,0.8220189625
|
||||||
|
223,city_tokyo,2020-Jan,0.5223738584,0.9554340802,0.7499007696
|
||||||
|
224,city_tokyo,2020-May,0.303390769,0.9935451138,0.9673256357
|
||||||
|
225,city_tokyo,2020-Sep,0.4384910546,0.06373422983,0.9278227045
|
||||||
|
226,city_tokyo,2021-Jan,0.4244047664,0.8205993601,0.3039457448
|
||||||
|
227,city_tokyo,2021-May,0.01059055428,0.1387852586,0.202489681
|
||||||
|
228,city_tokyo,2021-Sep,0.8243603537,0.01143751208,0.6110956967
|
||||||
|
229,city_tokyo,2022-Jan,0.9934216564,0.5012722622,0.8378971436
|
||||||
|
230,city_amman,2019-Jan,0.1540357106,0.6803451745,0.7406204618
|
||||||
|
231,city_amman,2019-May,0.3376841081,0.8528543434,0.8947938379
|
||||||
|
232,city_amman,2019-Sep,0.8652355208,0.7611803277,0.4579395501
|
||||||
|
233,city_amman,2020-Jan,0.9236248973,0.597652822,0.3755196877
|
||||||
|
234,city_amman,2020-May,0.4995982826,0.924389631,0.306112936
|
||||||
|
235,city_amman,2020-Sep,0.5400326648,0.09029500814,0.474054147
|
||||||
|
236,city_amman,2021-Jan,0.08564701964,0.3066904227,0.7320517679
|
||||||
|
237,city_amman,2021-May,0.4889587211,0.2702591115,0.7290170229
|
||||||
|
238,city_amman,2021-Sep,0.0335487674,0.2504805992,0.7181076944
|
||||||
|
239,city_amman,2022-Jan,0.3418902923,0.8970783354,0.1739518732
|
||||||
|
240,city_nairobi,2019-Jan,0.8272692723,0.2193240076,0.02060070785
|
||||||
|
241,city_nairobi,2019-May,0.25413013,0.273279121,0.9193914915
|
||||||
|
242,city_nairobi,2019-Sep,0.2576763868,0.8634612874,0.4355158525
|
||||||
|
243,city_nairobi,2020-Jan,0.9763060138,0.1430317922,0.6483186049
|
||||||
|
244,city_nairobi,2020-May,0.6939313329,0.5892953211,0.9663935709
|
||||||
|
245,city_nairobi,2020-Sep,0.2764149061,0.1774120717,0.7812622959
|
||||||
|
246,city_nairobi,2021-Jan,0.7707636847,0.8689268495,0.1363146058
|
||||||
|
247,city_nairobi,2021-May,0.9163507683,0.2515377182,0.07565517255
|
||||||
|
248,city_nairobi,2021-Sep,0.7513935872,0.1532284207,0.7363183336
|
||||||
|
249,city_nairobi,2022-Jan,0.1767128894,0.1454489297,0.3971665474
|
||||||
|
250,city_beirut,2019-Jan,0.788339519,0.5127333364,0.8333304991
|
||||||
|
251,city_beirut,2019-May,0.7230935424,0.2298084849,0.5472381483
|
||||||
|
252,city_beirut,2019-Sep,0.5909867246,0.02179296134,0.7592174254
|
||||||
|
253,city_beirut,2020-Jan,0.9340891126,0.8696574846,0.5400465709
|
||||||
|
254,city_beirut,2020-May,0.0276754093,0.8986496952,0.5265469731
|
||||||
|
255,city_beirut,2020-Sep,0.4649235896,0.3356422036,0.5517011162
|
||||||
|
256,city_beirut,2021-Jan,0.7389463326,0.947502386,0.6815278477
|
||||||
|
257,city_beirut,2021-May,0.7670585948,0.6473540111,0.5277366776
|
||||||
|
258,city_beirut,2021-Sep,0.5942151705,0.4821676255,0.1016388854
|
||||||
|
259,city_beirut,2022-Jan,0.5882001691,0.361997451,0.293222771
|
||||||
|
260,city_tripoli,2019-Jan,0.2677810804,0.2357072677,0.3565856652
|
||||||
|
261,city_tripoli,2019-May,0.07104588209,0.5513605839,0.0451456715
|
||||||
|
262,city_tripoli,2019-Sep,0.4257855731,0.616771154,0.5592935074
|
||||||
|
263,city_tripoli,2020-Jan,0.3449656127,0.687252387,0.2071332881
|
||||||
|
264,city_tripoli,2020-May,0.05954930585,0.08429442185,0.5561507364
|
||||||
|
265,city_tripoli,2020-Sep,0.5287426821,0.7518475156,0.605454666
|
||||||
|
266,city_tripoli,2021-Jan,0.926167857,0.4054919777,0.01780159166
|
||||||
|
267,city_tripoli,2021-May,0.1158836845,0.1263661794,0.5107072656
|
||||||
|
268,city_tripoli,2021-Sep,0.3098832321,0.8877507511,0.9402516681
|
||||||
|
269,city_tripoli,2022-Jan,0.2471150536,0.9391734631,0.05978336229
|
||||||
|
270,city_kuala_lumpur,2019-Jan,0.6863528274,0.8697980657,0.2282523362
|
||||||
|
271,city_kuala_lumpur,2019-May,0.8358905297,0.9856091378,0.9827359299
|
||||||
|
272,city_kuala_lumpur,2019-Sep,0.8423115828,0.8475761347,0.6705055844
|
||||||
|
273,city_kuala_lumpur,2020-Jan,0.352567735,0.1954722531,0.2030722961
|
||||||
|
274,city_kuala_lumpur,2020-May,0.04741808923,0.210640203,0.01469151867
|
||||||
|
275,city_kuala_lumpur,2020-Sep,0.957184061,0.4772033411,0.06693120676
|
||||||
|
276,city_kuala_lumpur,2021-Jan,0.8694608057,0.4899108808,0.6298810317
|
||||||
|
277,city_kuala_lumpur,2021-May,0.03785739177,0.215056941,0.4898345725
|
||||||
|
278,city_kuala_lumpur,2021-Sep,0.8474861196,0.8203214118,0.9639926419
|
||||||
|
279,city_kuala_lumpur,2022-Jan,0.09388447049,0.8918711252,0.8982826914
|
||||||
|
280,city_male,2019-Jan,0.9535318247,0.150372675,0.945000347
|
||||||
|
281,city_male,2019-May,0.7412962727,0.003038298983,0.4180035581
|
||||||
|
282,city_male,2019-Sep,0.2345256191,0.9034615199,0.4484671987
|
||||||
|
283,city_male,2020-Jan,0.04034677353,0.1748185368,0.4505723828
|
||||||
|
284,city_male,2020-May,0.5639263503,0.2796195837,0.2018342222
|
||||||
|
285,city_male,2020-Sep,0.2502278203,0.5534360568,0.4339739447
|
||||||
|
286,city_male,2021-Jan,0.3031630191,0.07439445923,0.4700919847
|
||||||
|
287,city_male,2021-May,0.8624679204,0.2578625741,0.09027702491
|
||||||
|
288,city_male,2021-Sep,0.2454379645,0.9075344381,0.05214485101
|
||||||
|
289,city_male,2022-Jan,0.3611491011,0.9851549825,0.4531224627
|
||||||
|
290,city_mexico_city,2019-Jan,0.5367583915,0.258080948,0.6816746827
|
||||||
|
291,city_mexico_city,2019-May,0.9853964418,0.6359366543,0.4883879642
|
||||||
|
292,city_mexico_city,2019-Sep,0.9563011498,0.0299396029,0.9594745399
|
||||||
|
293,city_mexico_city,2020-Jan,0.4688441336,0.8191478053,0.8617118239
|
||||||
|
294,city_mexico_city,2020-May,0.1927625183,0.5748900138,0.8513407749
|
||||||
|
295,city_mexico_city,2020-Sep,0.4454512258,0.5824312156,0.9636387659
|
||||||
|
296,city_mexico_city,2021-Jan,0.9859257045,0.1759599736,0.4286920936
|
||||||
|
297,city_mexico_city,2021-May,0.363776648,0.1809230842,0.2368178691
|
||||||
|
298,city_mexico_city,2021-Sep,0.6824795264,0.2990136144,0.0405011663
|
||||||
|
299,city_mexico_city,2022-Jan,0.8905587395,0.1905990529,0.4882507814
|
||||||
|
300,city_ulan_bator,2019-Jan,0.6741485464,0.717576578,0.4293573811
|
||||||
|
301,city_ulan_bator,2019-May,0.3262047159,0.8716206568,0.5458236269
|
||||||
|
302,city_ulan_bator,2019-Sep,0.6265632177,0.2317454106,0.7036908001
|
||||||
|
303,city_ulan_bator,2020-Jan,0.5113218116,0.221105242,0.888826252
|
||||||
|
304,city_ulan_bator,2020-May,0.3906062072,0.66427438,0.2935980572
|
||||||
|
305,city_ulan_bator,2020-Sep,0.3971036952,0.01783759712,0.8998790336
|
||||||
|
306,city_ulan_bator,2021-Jan,0.2637427101,0.2385390121,0.6249611526
|
||||||
|
307,city_ulan_bator,2021-May,0.912242776,0.08731497158,0.6532080205
|
||||||
|
308,city_ulan_bator,2021-Sep,0.397708583,0.8048328144,0.7926631264
|
||||||
|
309,city_ulan_bator,2022-Jan,0.9942061508,0.2470806419,0.4383188216
|
||||||
|
310,city_rabat,2019-Jan,0.2230411495,0.3676032952,0.4107616888
|
||||||
|
311,city_rabat,2019-May,0.1492052294,0.3892316663,0.1094391123
|
||||||
|
312,city_rabat,2019-Sep,0.5472040034,0.9976653002,0.1954636489
|
||||||
|
313,city_rabat,2020-Jan,0.9966868022,0.2096797583,0.3057921875
|
||||||
|
314,city_rabat,2020-May,0.2045133008,0.2371876672,0.4427255118
|
||||||
|
315,city_rabat,2020-Sep,0.925035033,0.584423711,0.6622095958
|
||||||
|
316,city_rabat,2021-Jan,0.09596785333,0.1155214101,0.9929036089
|
||||||
|
317,city_rabat,2021-May,0.5279036078,0.2882972716,0.2605861754
|
||||||
|
318,city_rabat,2021-Sep,0.9105437212,0.3634054264,0.5256147774
|
||||||
|
319,city_rabat,2022-Jan,0.7458623714,0.1574213382,0.6264820458
|
||||||
|
320,city_amsterdam,2019-Jan,0.799256021,0.3395427351,0.4031577596
|
||||||
|
321,city_amsterdam,2019-May,0.1804581241,0.845954797,0.3228938347
|
||||||
|
322,city_amsterdam,2019-Sep,0.1970508803,0.04130658614,0.5235063506
|
||||||
|
323,city_amsterdam,2020-Jan,0.9242590394,0.1852741273,0.3749524614
|
||||||
|
324,city_amsterdam,2020-May,0.8783562576,0.08261349126,0.3541495132
|
||||||
|
325,city_amsterdam,2020-Sep,0.8995390999,0.8467088641,0.8145635751
|
||||||
|
326,city_amsterdam,2021-Jan,0.6193291884,0.3946284311,0.6509909684
|
||||||
|
327,city_amsterdam,2021-May,0.7058310687,0.2254146029,0.3006021917
|
||||||
|
328,city_amsterdam,2021-Sep,0.6448915078,0.2207063867,0.7670154359
|
||||||
|
329,city_amsterdam,2022-Jan,0.6566724581,0.4963253272,0.5882010246
|
||||||
|
330,city_wellington,2019-Jan,0.975771214,0.7828569709,0.8579568289
|
||||||
|
331,city_wellington,2019-May,0.4808303848,0.2147995042,0.5427822914
|
||||||
|
332,city_wellington,2019-Sep,0.982612098,0.2017583263,0.6818840957
|
||||||
|
333,city_wellington,2020-Jan,0.8282939128,0.0173039828,0.8484000112
|
||||||
|
334,city_wellington,2020-May,0.7067879274,0.1232934138,0.1583243715
|
||||||
|
335,city_wellington,2020-Sep,0.05426185515,0.9523095362,0.8600642333
|
||||||
|
336,city_wellington,2021-Jan,0.849837313,0.6723412286,0.3539009568
|
||||||
|
337,city_wellington,2021-May,0.851419205,0.08734822939,0.3631028432
|
||||||
|
338,city_wellington,2021-Sep,0.5211397365,0.601091111,0.8736619915
|
||||||
|
339,city_wellington,2022-Jan,0.0004370141048,0.7856350051,0.7967341982
|
||||||
|
340,city_managua,2019-Jan,0.4449076437,0.07095081666,0.2226768192
|
||||||
|
341,city_managua,2019-May,0.9058054532,0.9825352592,0.8801532619
|
||||||
|
342,city_managua,2019-Sep,0.4664849351,0.1507856153,0.6859989836
|
||||||
|
343,city_managua,2020-Jan,0.7063256142,0.8480495571,0.6506210446
|
||||||
|
344,city_managua,2020-May,0.5672273277,0.1732735134,0.0473325036
|
||||||
|
345,city_managua,2020-Sep,0.6152126641,0.262875193,0.06784724677
|
||||||
|
346,city_managua,2021-Jan,0.5630548661,0.139303683,0.2497055152
|
||||||
|
347,city_managua,2021-May,0.7090141669,0.6050612033,0.717160999
|
||||||
|
348,city_managua,2021-Sep,0.6726886326,0.3955881513,0.05659926761
|
||||||
|
349,city_managua,2022-Jan,0.5118331134,0.9697227523,0.6694463186
|
||||||
|
350,city_abuja,2019-Jan,0.7215577985,0.8069645818,0.2144030138
|
||||||
|
351,city_abuja,2019-May,0.2389187672,0.1132551265,0.6855980263
|
||||||
|
352,city_abuja,2019-Sep,0.3713433464,0.8430974465,0.7186428163
|
||||||
|
353,city_abuja,2020-Jan,0.3213201344,0.9099336087,0.8449178856
|
||||||
|
354,city_abuja,2020-May,0.8469259071,0.5524627768,0.9260609535
|
||||||
|
355,city_abuja,2020-Sep,0.4366534985,0.4725483191,0.6004087497
|
||||||
|
356,city_abuja,2021-Jan,0.6629119774,0.2245666268,0.2164730197
|
||||||
|
357,city_abuja,2021-May,0.7151602496,0.852215806,0.9994776477
|
||||||
|
358,city_abuja,2021-Sep,0.2657906656,0.8775827085,0.02569985435
|
||||||
|
359,city_abuja,2022-Jan,0.6656366265,0.5595354603,0.3052805174
|
||||||
|
360,city_islamabad,2019-Jan,0.5657435109,0.06594882308,0.05639372024
|
||||||
|
361,city_islamabad,2019-May,0.3617440488,0.8182270972,0.5020515613
|
||||||
|
362,city_islamabad,2019-Sep,0.8972054882,0.5389161919,0.08204922443
|
||||||
|
363,city_islamabad,2020-Jan,0.6361910136,0.7719467598,0.3555156382
|
||||||
|
364,city_islamabad,2020-May,0.5658655482,0.9978291866,0.9204755129
|
||||||
|
365,city_islamabad,2020-Sep,0.5229417395,0.4433901007,0.3977836013
|
||||||
|
366,city_islamabad,2021-Jan,0.9304358199,0.5494074576,0.689688983
|
||||||
|
367,city_islamabad,2021-May,0.04229158644,0.4005375448,0.4328307124
|
||||||
|
368,city_islamabad,2021-Sep,0.3071366189,0.4742819877,0.8376670766
|
||||||
|
369,city_islamabad,2022-Jan,0.9667463886,0.8263189953,0.9260605166
|
||||||
|
370,city_lima,2019-Jan,0.004449000129,0.5359554688,0.5170556156
|
||||||
|
371,city_lima,2019-May,0.0040391066,0.727889608,0.3979039803
|
||||||
|
372,city_lima,2019-Sep,0.4752783789,0.286290551,0.9038587969
|
||||||
|
373,city_lima,2020-Jan,0.5243305401,0.9542521021,0.8437255443
|
||||||
|
374,city_lima,2020-May,0.5189281056,0.9532682341,0.04858519966
|
||||||
|
375,city_lima,2020-Sep,0.9698181754,0.2626736181,0.07547748485
|
||||||
|
376,city_lima,2021-Jan,0.42487374,0.7219955088,0.03794786379
|
||||||
|
377,city_lima,2021-May,0.1580065461,0.7412839844,0.78239396
|
||||||
|
378,city_lima,2021-Sep,0.5313078226,0.6906399598,0.1497155574
|
||||||
|
379,city_lima,2022-Jan,0.7137341222,0.9608880466,0.7117129761
|
||||||
|
380,city_bucharest,2019-Jan,0.9989856747,0.3173551828,0.3589126521
|
||||||
|
381,city_bucharest,2019-May,0.7987576639,0.431771908,0.1180147721
|
||||||
|
382,city_bucharest,2019-Sep,0.4474069189,0.716171076,0.3027452883
|
||||||
|
383,city_bucharest,2020-Jan,0.9724268855,0.3257941961,0.8441895702
|
||||||
|
384,city_bucharest,2020-May,0.9980411751,0.1256631536,0.07115468458
|
||||||
|
385,city_bucharest,2020-Sep,0.1213183636,0.3941146639,0.06092239127
|
||||||
|
386,city_bucharest,2021-Jan,0.4205241143,0.1941809277,0.4877147348
|
||||||
|
387,city_bucharest,2021-May,0.3360387926,0.3922642193,0.2054573166
|
||||||
|
388,city_bucharest,2021-Sep,0.06667197523,0.1235198397,0.5762869522
|
||||||
|
389,city_bucharest,2022-Jan,0.306929458,0.7091646997,0.8807736754
|
||||||
|
390,city_moscow,2019-Jan,0.4884820054,0.3664299465,0.5947931914
|
||||||
|
391,city_moscow,2019-May,0.8045965787,0.645890862,0.6135267009
|
||||||
|
392,city_moscow,2019-Sep,0.5168853064,0.005617348514,0.03449093575
|
||||||
|
393,city_moscow,2020-Jan,0.5083457969,0.1835582116,0.9683744996
|
||||||
|
394,city_moscow,2020-May,0.1155265419,0.02495497214,0.9077392365
|
||||||
|
395,city_moscow,2020-Sep,0.3679246739,0.4012096928,0.1788263876
|
||||||
|
396,city_moscow,2021-Jan,0.04563746129,0.5524970339,0.2758883611
|
||||||
|
397,city_moscow,2021-May,0.874515788,0.5738406989,0.4389562884
|
||||||
|
398,city_moscow,2021-Sep,0.5644210913,0.1248259343,0.3045741317
|
||||||
|
399,city_moscow,2022-Jan,0.02472030916,0.5212881284,0.6865817501
|
||||||
|
400,city_belgrade,2019-Jan,0.2054378336,0.3388140331,0.1560520775
|
||||||
|
401,city_belgrade,2019-May,0.8233419498,0.06099252492,0.3285799916
|
||||||
|
402,city_belgrade,2019-Sep,0.737910215,0.0218623579,0.8147299491
|
||||||
|
403,city_belgrade,2020-Jan,0.9112117631,0.9656860025,0.3786632918
|
||||||
|
404,city_belgrade,2020-May,0.7803837773,0.09974279125,0.003345917394
|
||||||
|
405,city_belgrade,2020-Sep,0.2159103445,0.4208667863,0.306492557
|
||||||
|
406,city_belgrade,2021-Jan,0.8099756545,0.1659555892,0.5686013193
|
||||||
|
407,city_belgrade,2021-May,0.9153223024,0.7262449027,0.5551206235
|
||||||
|
408,city_belgrade,2021-Sep,0.5130398179,0.01271602991,0.9210065704
|
||||||
|
409,city_belgrade,2022-Jan,0.815222032,0.2659741857,0.2871871833
|
||||||
|
410,city_singapore,2019-Jan,0.2134172681,0.8580276605,0.9601842113
|
||||||
|
411,city_singapore,2019-May,0.6023894791,0.4216392972,0.7161700994
|
||||||
|
412,city_singapore,2019-Sep,0.6858661731,0.7862881275,0.2316293129
|
||||||
|
413,city_singapore,2020-Jan,0.6841130768,0.2949128642,0.5366420271
|
||||||
|
414,city_singapore,2020-May,0.498180307,0.47856757,0.5634083248
|
||||||
|
415,city_singapore,2020-Sep,0.005418301445,0.6835751602,0.5749891016
|
||||||
|
416,city_singapore,2021-Jan,0.2189054618,0.9144602713,0.7515237128
|
||||||
|
417,city_singapore,2021-May,0.4224346227,0.2277588726,0.5884623504
|
||||||
|
418,city_singapore,2021-Sep,0.00726630776,0.4287783353,0.9893778021
|
||||||
|
419,city_singapore,2022-Jan,0.415505623,0.5043323742,0.04127731435
|
||||||
|
420,city_seoul,2019-Jan,0.4158292137,0.3235311166,0.3313557261
|
||||||
|
421,city_seoul,2019-May,0.3720615125,0.5183966398,0.5281903814
|
||||||
|
422,city_seoul,2019-Sep,0.2898671082,0.1498256654,0.6543104049
|
||||||
|
423,city_seoul,2020-Jan,0.2590961078,0.03198788857,0.7939989818
|
||||||
|
424,city_seoul,2020-May,0.158505935,0.646670114,0.8497340793
|
||||||
|
425,city_seoul,2020-Sep,0.7733778533,0.8329950401,0.6951126836
|
||||||
|
426,city_seoul,2021-Jan,0.2333382418,0.3836525618,0.7553079657
|
||||||
|
427,city_seoul,2021-May,0.7819967758,0.974315225,0.07959266939
|
||||||
|
428,city_seoul,2021-Sep,0.5964142264,0.248241969,0.6541351389
|
||||||
|
429,city_seoul,2022-Jan,0.90841441,0.1943781343,0.09601869236
|
||||||
|
430,city_tunis,2019-Jan,0.6652183138,0.4894266427,0.4240159206
|
||||||
|
431,city_tunis,2019-May,0.9884960516,0.9755110617,0.06384271908
|
||||||
|
432,city_tunis,2019-Sep,0.680123991,0.3601116984,0.5918194417
|
||||||
|
433,city_tunis,2020-Jan,0.1473826674,0.9219684102,0.513104658
|
||||||
|
434,city_tunis,2020-May,0.7317874879,0.7317059155,0.5088701786
|
||||||
|
435,city_tunis,2020-Sep,0.978750762,0.8405181067,0.9071571207
|
||||||
|
436,city_tunis,2021-Jan,0.4223105477,0.182839254,0.9445235115
|
||||||
|
437,city_tunis,2021-May,0.1376962812,0.3380520816,0.9820850094
|
||||||
|
438,city_tunis,2021-Sep,0.9888050345,0.7938678388,0.4087101449
|
||||||
|
439,city_tunis,2022-Jan,0.08062628741,0.811235545,0.6412991336
|
||||||
|
440,city_bangkok,2019-Jan,0.7740886353,0.00393096204,0.9355208309
|
||||||
|
441,city_bangkok,2019-May,0.9261865051,0.5543156401,0.2301005313
|
||||||
|
442,city_bangkok,2019-Sep,0.0036399897,0.5151920906,0.7759955482
|
||||||
|
443,city_bangkok,2020-Jan,0.4058027436,0.03111692238,0.5575806328
|
||||||
|
444,city_bangkok,2020-May,0.657934059,0.5883429191,0.4110502161
|
||||||
|
445,city_bangkok,2020-Sep,0.2211613657,0.8307157083,0.5495225194
|
||||||
|
446,city_bangkok,2021-Jan,0.9381384113,0.3390859316,0.3941873429
|
||||||
|
447,city_bangkok,2021-May,0.1913245397,0.8985675591,0.1613629563
|
||||||
|
448,city_bangkok,2021-Sep,0.4849294818,0.07434437657,0.212956493
|
||||||
|
449,city_bangkok,2022-Jan,0.5632024472,0.05342124515,0.608214207
|
||||||
|
450,city_washington_d.c.,2019-Jan,0.706354796,0.5566582481,0.3888501308
|
||||||
|
451,city_washington_d.c.,2019-May,0.3967146921,0.6871371398,0.3749746333
|
||||||
|
452,city_washington_d.c.,2019-Sep,0.1461645524,0.07178227096,0.008434495791
|
||||||
|
453,city_washington_d.c.,2020-Jan,0.7767257209,0.6806659613,0.2452377716
|
||||||
|
454,city_washington_d.c.,2020-May,0.03369730849,0.4195955155,0.8280863275
|
||||||
|
455,city_washington_d.c.,2020-Sep,0.7276129361,0.1779246857,0.1500722549
|
||||||
|
456,city_washington_d.c.,2021-Jan,0.9155963204,0.9973251079,0.701925965
|
||||||
|
457,city_washington_d.c.,2021-May,0.1160842378,0.1693766214,0.6736147037
|
||||||
|
458,city_washington_d.c.,2021-Sep,0.4549449302,0.9554399549,0.7586370391
|
||||||
|
459,city_washington_d.c.,2022-Jan,0.4006997702,0.955893003,0.1364601882
|
||||||
|
460,city_hanoi,2019-Jan,0.4131646918,0.6762825725,0.5131651918
|
||||||
|
461,city_hanoi,2019-May,0.219613407,0.4764566921,0.5947576005
|
||||||
|
462,city_hanoi,2019-Sep,0.7775954747,0.5535598775,0.9161480338
|
||||||
|
463,city_hanoi,2020-Jan,0.1749110224,0.03153303649,0.2325527303
|
||||||
|
464,city_hanoi,2020-May,0.6513750193,0.9378385276,0.6723599033
|
||||||
|
465,city_hanoi,2020-Sep,0.8846442259,0.5905572431,0.8375318419
|
||||||
|
466,city_hanoi,2021-Jan,0.04438681781,0.7197215338,0.5135403183
|
||||||
|
467,city_hanoi,2021-May,0.8841873451,0.01386415254,0.9290412269
|
||||||
|
468,city_hanoi,2021-Sep,0.9471121112,0.8845281879,0.4825962156
|
||||||
|
469,city_hanoi,2022-Jan,0.6399693588,0.3162389532,0.351121779
|
||||||
|
470,city_harare,2019-Jan,0.05113965261,0.6079969608,0.7127907344
|
||||||
|
471,city_harare,2019-May,0.5499694149,0.7112740295,0.8657201091
|
||||||
|
472,city_harare,2019-Sep,0.6705953617,0.8481746283,0.7781915229
|
||||||
|
473,city_harare,2020-Jan,0.5448455637,0.761481783,0.3161047732
|
||||||
|
474,city_harare,2020-May,0.02555600558,0.8157707267,0.05503697195
|
||||||
|
475,city_harare,2020-Sep,0.627355327,0.5530698033,0.5992110078
|
||||||
|
476,city_harare,2021-Jan,0.6049262896,0.527575273,0.5758586976
|
||||||
|
477,city_harare,2021-May,0.4274464672,0.22878636,0.1059028406
|
||||||
|
478,city_harare,2021-Sep,0.3598503868,0.4448781561,0.1940659583
|
||||||
|
479,city_harare,2022-Jan,0.2554936994,0.04221218981,0.8283157554
|
||||||
|
480,city_ankara,2019-Jan,0.5773037837,0.2326703291,0.5464883464
|
||||||
|
481,city_ankara,2019-May,0.7535813143,0.4992113773,0.9809685139
|
||||||
|
482,city_ankara,2019-Sep,0.5976797307,0.794414639,0.8742555726
|
||||||
|
483,city_ankara,2020-Jan,0.08520386108,0.8773860695,0.3858137862
|
||||||
|
484,city_ankara,2020-May,0.004111445517,0.8040046923,0.1569392782
|
||||||
|
485,city_ankara,2020-Sep,0.2601369272,0.2083602167,0.8048114997
|
||||||
|
486,city_ankara,2021-Jan,0.06646180846,0.1508074934,0.7621242697
|
||||||
|
487,city_ankara,2021-May,0.2056833359,0.4014711821,0.5422262985
|
||||||
|
488,city_ankara,2021-Sep,0.2211609615,0.7420965859,0.9192380563
|
||||||
|
489,city_ankara,2022-Jan,0.5664276514,0.1191242719,0.5142831272
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,12 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas id="gl_canvas" width="640" height="480"></canvas>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="lumenarium_wasm_imports.js"></script>
|
||||||
|
<script type="text/javascript" src="loader.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,39 @@
|
||||||
|
|
||||||
|
let module = null;
|
||||||
|
let instance = null;
|
||||||
|
|
||||||
|
|
||||||
|
async function load_webassembly_module ()
|
||||||
|
{
|
||||||
|
lumenarium_wasm_imports = webgl_add_imports("#gl_canvas", lumenarium_wasm_imports);
|
||||||
|
|
||||||
|
const path = "lumenarium.wasm";
|
||||||
|
const promise = fetch(path);
|
||||||
|
const module = await WebAssembly.compileStreaming(promise);
|
||||||
|
|
||||||
|
let memory = new WebAssembly.Memory({ initial: 2 });
|
||||||
|
const env = {
|
||||||
|
memory,
|
||||||
|
...lumenarium_wasm_imports,
|
||||||
|
};
|
||||||
|
|
||||||
|
let table = new WebAssembly.Table({ element: "anyfunc", initial: 32, });
|
||||||
|
|
||||||
|
instance = await WebAssembly.instantiate(module, { env })
|
||||||
|
.then((res, err) => {
|
||||||
|
return res;
|
||||||
|
})
|
||||||
|
.catch((a, b) => {
|
||||||
|
console.log(a,b);
|
||||||
|
});
|
||||||
|
lumenarium_wasm_instance = instance;
|
||||||
|
|
||||||
|
// If function '__wasm_call_ctors' (global C++ constructors) exists, call it
|
||||||
|
if (instance.exports.__wasm_call_ctors) instance.exports.__wasm_call_ctors();
|
||||||
|
|
||||||
|
// If function 'main' exists, call it with dummy arguments
|
||||||
|
let result = 0;
|
||||||
|
if (instance.exports.main) result = instance.exports.main();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("load", load_webassembly_module)
|
|
@ -0,0 +1,507 @@
|
||||||
|
var lumenarium_wasm_module = null;
|
||||||
|
var lumenarium_wasm_instance = null;
|
||||||
|
|
||||||
|
var WASM_PAGE_SIZE = 65536;
|
||||||
|
|
||||||
|
function wasm_mem_get_u8_arr(inst, ptr, size)
|
||||||
|
{
|
||||||
|
let view = new Uint8Array(inst.exports.memory.buffer, ptr, size);
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wasm_read_string(inst, ptr, len)
|
||||||
|
{
|
||||||
|
let view = wasm_mem_get_u8_arr(inst, ptr, len);
|
||||||
|
let string = '';
|
||||||
|
for (let i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
string += String.fromCharCode(view[i]);
|
||||||
|
}
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wasm_write_bytes(inst, src, ptr, len)
|
||||||
|
{
|
||||||
|
let view = wasm_mem_get_u8_arr(inst, ptr, len);
|
||||||
|
for (let i = 0; i < len; i++) view[i] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
function wasm_get_proc(inst, proc_ptr)
|
||||||
|
{
|
||||||
|
let result = inst.exports.__indirect_function_table.get(proc_ptr);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fract (v) { return v % 1; }
|
||||||
|
|
||||||
|
function u32_to_byte_array_32 (v)
|
||||||
|
{
|
||||||
|
let result = [0, 0, 0, 0];
|
||||||
|
result[0] = (v & 0xff);
|
||||||
|
result[1] = (((v - result[0]) >> 8 ) & 0xff);
|
||||||
|
result[2] = (((v - result[1]) >> 16) & 0xff);
|
||||||
|
result[3] = (((v - result[2]) >> 24) & 0xff);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function byte_array_32_to_u32 (arr)
|
||||||
|
{
|
||||||
|
// NOTE(PS): the '>>>' operators in this function deal with the fact
|
||||||
|
// that bit shift operators convert numbers to s32's. The >>> just
|
||||||
|
// converts them back to u32s
|
||||||
|
let r0 = ((arr[0] & 0xff) << 0 );
|
||||||
|
let r1 = ((arr[1] & 0xff) << 8 );
|
||||||
|
let r2 = ((arr[2] & 0xff) << 16);
|
||||||
|
let r3 = (((arr[3] & 0xff) << 24) >>> 0);
|
||||||
|
let result = (r0 | r1 | r2 | r3) >>> 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function put_u32 (ptr, value)
|
||||||
|
{
|
||||||
|
let src = u32_to_byte_array_32(value);
|
||||||
|
wasm_write_bytes(lumenarium_wasm_instance, src, ptr, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
var lumenarium_wasm_imports = {
|
||||||
|
|
||||||
|
memset: (dst, size, value) => {
|
||||||
|
let view_dst = wasm_mem_get_u8_arr(lumenarium_wasm_instance, dst, size);
|
||||||
|
for (let i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
view_dst[i] = value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
memcpy: (dst, src, size) => {
|
||||||
|
let view_dst = wasm_mem_get_u8_arr(lumenarium_wasm_instance, dst, size);
|
||||||
|
let view_src = wasm_mem_get_u8_arr(lumenarium_wasm_instance, src, size);
|
||||||
|
for (let i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
view_dst[i] = view_src[i];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_assert_always: (file, file_len, line) => {
|
||||||
|
let file_str = wasm_read_string(lumenarium_wasm_instance, file, file_len);
|
||||||
|
console.assert(false, "At: " + file_str + "::" + line);
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_get_memory_size: () => {
|
||||||
|
return instance.exports.memory.buffer.byteLength;
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_mem_grow: (new_size) => {
|
||||||
|
let new_size_ = new_size >>> 0;
|
||||||
|
let pages = new_size_ / WASM_PAGE_SIZE;
|
||||||
|
let pages_rem = fract(pages);
|
||||||
|
if (pages_rem > 0) pages = Math.floor(pages) + 1;
|
||||||
|
let size_before = lumenarium_wasm_instance.exports.memory.buffer.byteLength;
|
||||||
|
let old_page_count = lumenarium_wasm_instance.exports.memory.grow(pages);
|
||||||
|
|
||||||
|
console.log("mem_grow\n",
|
||||||
|
"req size: ", new_size_, "\n",
|
||||||
|
"old size: ", (old_page_count * WASM_PAGE_SIZE), "\n",
|
||||||
|
"old size: ", size_before, "\n",
|
||||||
|
"grew by: ", (pages * WASM_PAGE_SIZE), "\n",
|
||||||
|
"new size: ", lumenarium_wasm_instance.exports.memory.buffer.byteLength, "");
|
||||||
|
},
|
||||||
|
|
||||||
|
malloc: (size) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
free: (base) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
sin: Math.sin,
|
||||||
|
sinf: Math.sin,
|
||||||
|
cos: Math.cos,
|
||||||
|
cosf: Math.cos,
|
||||||
|
tan: Math.tan,
|
||||||
|
tanf: Math.tan,
|
||||||
|
asin: Math.asin,
|
||||||
|
asinf: Math.asin,
|
||||||
|
acos: Math.acos,
|
||||||
|
acosf: Math.acos,
|
||||||
|
atan: Math.atan,
|
||||||
|
atanf: Math.atan,
|
||||||
|
pow: Math.pow,
|
||||||
|
powf: Math.pow,
|
||||||
|
fmodf: (f,d) => { return f % d; },
|
||||||
|
strlen: (ptr) => {
|
||||||
|
let len = 0;
|
||||||
|
let len_checked = 0;
|
||||||
|
let len_to_check = 256;
|
||||||
|
let found_end = false;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
let string = wasm_mem_get_u8_arr(lumenarium_wasm_instance, ptr, len_checked);
|
||||||
|
for (let i = len_checked; i < len_to_check; i++)
|
||||||
|
{
|
||||||
|
if (string[i] == 0)
|
||||||
|
{
|
||||||
|
len = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
len_checked *= 2;
|
||||||
|
}
|
||||||
|
return len_checked;
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_platform_file_async_work_on_job: (path, path_len, data, data_size, read, write) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_performance_now: () => {
|
||||||
|
return performance.now();
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_sleep: (milliseconds) => {
|
||||||
|
let start = Date.now();
|
||||||
|
for (let at = Date.now(); (at - start) < milliseconds; at = Date.now()) {}
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_fetch: async (file_path, file_path_len, dest, dest_size) => {
|
||||||
|
let path = wasm_read_string(lumenarium_wasm_instance, file_path, file_path_len);
|
||||||
|
fetch(path)
|
||||||
|
.then(async (res) => {
|
||||||
|
// TODO(PS): success checking
|
||||||
|
let reader = res.body.getReader();
|
||||||
|
let read_res = { done: false };
|
||||||
|
|
||||||
|
let view = wasm_mem_get_u8_arr(lumenarium_wasm_instance, dest, dest_size);
|
||||||
|
let last_write = 0;
|
||||||
|
while (!read_res.done)
|
||||||
|
{
|
||||||
|
read_res = await reader.read();
|
||||||
|
if (read_res.done) break;
|
||||||
|
|
||||||
|
let len = read_res.value.length;
|
||||||
|
let write_end = last_write + len;
|
||||||
|
for (let i = last_write; i < write_end; i++)
|
||||||
|
{
|
||||||
|
view[i] = read_res.value[i - last_write];
|
||||||
|
}
|
||||||
|
last_write = write_end + 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_request_animation_frame: (cb) => {
|
||||||
|
let cb_proc = wasm_get_proc(lumenarium_wasm_instance, cb);
|
||||||
|
window.requestAnimationFrame(cb_proc);
|
||||||
|
},
|
||||||
|
|
||||||
|
print: (str_base, len) => {
|
||||||
|
let string = wasm_read_string(lumenarium_wasm_instance, str_base, len);
|
||||||
|
console.log(string);
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_get_canvas_dim: (w_ptr, h_ptr) => {
|
||||||
|
const canvas = document.querySelector("#gl_canvas");
|
||||||
|
|
||||||
|
let w_view = wasm_mem_get_u8_arr(lumenarium_wasm_instance, w_ptr, 4);
|
||||||
|
let w = canvas.width;
|
||||||
|
let wb = u32_to_byte_array_32(w);
|
||||||
|
for (let i = 0; i < 4; i++) w_view[i] = wb[i];
|
||||||
|
|
||||||
|
let h_view = wasm_mem_get_u8_arr(lumenarium_wasm_instance, h_ptr, 4);
|
||||||
|
let h = canvas.height;
|
||||||
|
let hb = u32_to_byte_array_32(h);
|
||||||
|
for (let i = 0; i < 4; i++) h_view[i] = hb[i];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Web GL Imports
|
||||||
|
|
||||||
|
let gl = null;
|
||||||
|
let gl_error = false;
|
||||||
|
|
||||||
|
function glErrorReport(outer_args) {
|
||||||
|
const err = gl.getError();
|
||||||
|
if (err == gl.NO_ERROR) return;
|
||||||
|
|
||||||
|
gl_error = true;
|
||||||
|
let msg = "";
|
||||||
|
switch (err) {
|
||||||
|
case gl.NO_ERROR: { msg = "NO_ERROR"; } break;
|
||||||
|
case gl.INVALID_ENUM: { msg = "INVALID_ENUM"; } break;
|
||||||
|
case gl.INVALID_VALUE: { msg = "INVALID_VALUE"; } break;
|
||||||
|
case gl.INVALID_OPERATION: { msg = "INVALID_OPERATION"; } break;
|
||||||
|
case gl.INVALID_FRAMEBUFFER_OPERATION: { msg = "INVALID_FRAMEBUFFER_OPERATION"; } break;
|
||||||
|
case gl.OUT_OF_MEMORY: { msg = "OUT_OF_MEMORY"; } break;
|
||||||
|
case gl.CONTEXT_LOST_WEBGL: { msg = "CONTEXT_LOST_WEBGL"; } break;
|
||||||
|
default: { msg = "Uknown error"; } break;
|
||||||
|
}
|
||||||
|
console.error(`WebGL Error: ${msg} ${err}`, outer_args);
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE(PS): it seems like its not enough to set
|
||||||
|
// the values of imports to gl.function
|
||||||
|
// ie. imports.glClearColor = gl.clearColor
|
||||||
|
// instead we need to wrap them for some reason.
|
||||||
|
// Not sure why
|
||||||
|
function glClearColor (r, g, b, a) { return gl.clearColor(r,g,b,a); }
|
||||||
|
function glEnable(v) {
|
||||||
|
const r = gl.enable(v);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
function glDisable(v) {
|
||||||
|
const r = gl.disable(v);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
function glBlendFunc(a,b) {
|
||||||
|
const r = gl.blendFunc(a,b);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
function glViewport(xmin, ymin, xmax, ymax) { return gl.viewport(xmin,ymin,xmax,ymax); }
|
||||||
|
function glDepthFunc(v) {
|
||||||
|
const r = gl.depthFunc(v);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
function glClear(mask) {
|
||||||
|
const r = gl.clear(mask);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
let glBuffers = [];
|
||||||
|
let glShaders = [];
|
||||||
|
let glPrograms = [];
|
||||||
|
let glTextures = [];
|
||||||
|
function gl_get_managed_resource(arr, id) {
|
||||||
|
if (id == 0) return null;
|
||||||
|
return arr[id - 1];
|
||||||
|
}
|
||||||
|
function gl_get_buffer(id) { return gl_get_managed_resource(glBuffers, id); }
|
||||||
|
function gl_get_shader(id) { return gl_get_managed_resource(glShaders, id); }
|
||||||
|
function gl_get_program(id) { return gl_get_managed_resource(glPrograms, id); }
|
||||||
|
function gl_get_texture(id) { return gl_get_managed_resource(glTextures, id); }
|
||||||
|
|
||||||
|
function glCreateBuffer() {
|
||||||
|
let buffer = gl.createBuffer();
|
||||||
|
glErrorReport(arguments);
|
||||||
|
let new_len = glBuffers.push(buffer);
|
||||||
|
return new_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glBindBuffer(buffer_kind, buffer_id)
|
||||||
|
{
|
||||||
|
const r = gl.bindBuffer(buffer_kind, gl_get_buffer(buffer_id));
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glBufferData(target, size, ptr, usage)
|
||||||
|
{
|
||||||
|
let data = wasm_mem_get_u8_arr(lumenarium_wasm_instance, ptr, size);
|
||||||
|
const r = gl.bufferData(target, data, usage);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glBufferSubData(target, offset, size, ptr)
|
||||||
|
{
|
||||||
|
let data = wasm_mem_get_u8_arr(lumenarium_wasm_instance, ptr, size);
|
||||||
|
const r = gl.bufferSubData(target, offset, data, 0, size);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glCreateShader(kind)
|
||||||
|
{
|
||||||
|
let shader = gl.createShader(kind);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
let new_len = glShaders.push(shader);
|
||||||
|
return new_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glShaderSource(shader_id, shader_code, shader_code_len)
|
||||||
|
{
|
||||||
|
let str = wasm_read_string(lumenarium_wasm_instance, shader_code, shader_code_len);
|
||||||
|
const r = gl.shaderSource(gl_get_shader(shader_id), str);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glCompileShader(shader_id)
|
||||||
|
{
|
||||||
|
let s = gl_get_shader(shader_id);
|
||||||
|
let r = gl.compileShader(s);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
let m = gl.getShaderInfoLog(s);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
if (m.length > 0)
|
||||||
|
{
|
||||||
|
console.error("glCompileShader: \n\n" + m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function glCreateProgram()
|
||||||
|
{
|
||||||
|
let prog = gl.createProgram();
|
||||||
|
glErrorReport(arguments);
|
||||||
|
let new_len = glPrograms.push(prog);
|
||||||
|
return new_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glAttachShader(program, shader)
|
||||||
|
{
|
||||||
|
let s = gl_get_shader(shader);
|
||||||
|
let p = gl_get_program(program);
|
||||||
|
const r = gl.attachShader(p, s);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glLinkProgram(program)
|
||||||
|
{
|
||||||
|
let p = gl_get_program(program);
|
||||||
|
gl.linkProgram(p);
|
||||||
|
if (!gl.getProgramParameter(p, gl.LINK_STATUS)) {
|
||||||
|
var info = gl.getProgramInfoLog(p);
|
||||||
|
console.error("Failed to compile WebGL program. \n\n"+info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function glUseProgram(program)
|
||||||
|
{
|
||||||
|
let p = gl_get_program(program);
|
||||||
|
const r = gl.useProgram(p);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glGetAttribLocation(program, name, name_len)
|
||||||
|
{
|
||||||
|
let str = wasm_read_string(lumenarium_wasm_instance, name, name_len);
|
||||||
|
const r = gl.getAttribLocation(gl_get_program(program), str);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glVertexAttribPointer(attr, size, type, normalized, stride, pointer)
|
||||||
|
{
|
||||||
|
const r = gl.vertexAttribPointer(attr, size, type, normalized, stride, pointer);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glEnableVertexAttribArray(index)
|
||||||
|
{
|
||||||
|
const r = gl.enableVertexAttribArray(index);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glDrawElements(type, index_count, ele_type, indices)
|
||||||
|
{
|
||||||
|
const r = gl.drawElements(type, index_count, ele_type, indices);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glGenTextures(count, ids_ptr, ids_size)
|
||||||
|
{
|
||||||
|
for (let i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
const tex = gl.createTexture();
|
||||||
|
glErrorReport(arguments);
|
||||||
|
let new_len = glTextures.push(tex);
|
||||||
|
put_u32(ids_ptr + (i * 4), new_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function glBindTexture(slot, id)
|
||||||
|
{
|
||||||
|
let tex = gl_get_texture(id);
|
||||||
|
const r = gl.bindTexture(slot, tex);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glTexParameteri(slot, param, value)
|
||||||
|
{
|
||||||
|
const r = gl.texParameteri(slot, param, value);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glTexImage2D(target, level, internalformat, width, height, border, format, type, data_ptr, data_size)
|
||||||
|
{
|
||||||
|
const data = wasm_mem_get_u8_arr(lumenarium_wasm_instance, data_ptr, data_size);
|
||||||
|
const r = gl.texImage2D(target, level, internalformat, width, height, border, format, type, data);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glTexSubImage2D(target, level, offsetx, offsety, width, height, format, type, data_ptr, data_size)
|
||||||
|
{
|
||||||
|
const data = wasm_mem_get_u8_arr(lumenarium_wasm_instance, data_ptr, data_size);
|
||||||
|
const r = gl.texSubImage2D(target, level, offsetx, offsety, width, height, format, type, data);
|
||||||
|
glErrorReport(arguments);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glGetUniformLocation(program, name, name_len)
|
||||||
|
{
|
||||||
|
// TODO(PS): complete
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function glUniformMatrix4fv()
|
||||||
|
{
|
||||||
|
// TODO(PS):
|
||||||
|
}
|
||||||
|
|
||||||
|
function webgl_add_imports (canvas_selector, imports) {
|
||||||
|
const canvas = document.querySelector(canvas_selector);
|
||||||
|
if (!canvas) return console.error("no canvas");
|
||||||
|
|
||||||
|
gl = canvas.getContext("webgl2");
|
||||||
|
if (gl === null) return console.error("no webgl ctx");
|
||||||
|
|
||||||
|
imports.glHadError = () => { return gl_error; };
|
||||||
|
imports.glClearColor = glClearColor;
|
||||||
|
imports.glEnable = glEnable;
|
||||||
|
imports.glDisable = glDisable;
|
||||||
|
imports.glBlendFunc = glBlendFunc;
|
||||||
|
imports.glViewport = glViewport;
|
||||||
|
imports.glDepthFunc = glDepthFunc;
|
||||||
|
imports.glClear = glClear;
|
||||||
|
|
||||||
|
imports.glCreateBuffer = glCreateBuffer;
|
||||||
|
imports.glBindBuffer = glBindBuffer;
|
||||||
|
imports.glBufferData = glBufferData;
|
||||||
|
imports.glBufferSubData = glBufferSubData;
|
||||||
|
imports.glCreateShader = glCreateShader;
|
||||||
|
imports.glShaderSource = glShaderSource;
|
||||||
|
imports.glCompileShader = glCompileShader;
|
||||||
|
imports.glCreateProgram = glCreateProgram;
|
||||||
|
imports.glAttachShader = glAttachShader;
|
||||||
|
imports.glLinkProgram = glLinkProgram;
|
||||||
|
imports.glUseProgram = glUseProgram;
|
||||||
|
imports.glGetAttribLocation = glGetAttribLocation;
|
||||||
|
imports.glVertexAttribPointer = glVertexAttribPointer;
|
||||||
|
imports.glEnableVertexAttribArray = glEnableVertexAttribArray;
|
||||||
|
imports.glDrawElements = glDrawElements;
|
||||||
|
imports.glGenTextures = glGenTextures;
|
||||||
|
imports.glBindTexture = glBindTexture;
|
||||||
|
imports.glTexParameteri = glTexParameteri;
|
||||||
|
imports.glTexImage2D = glTexImage2D;
|
||||||
|
imports.glTexSubImage2D = glTexSubImage2D;
|
||||||
|
imports.glBindTexture = glBindTexture;
|
||||||
|
imports.glGetUniformLocation = glGetUniformLocation;
|
||||||
|
imports.glUniformMatrix4fv = glUniformMatrix4fv;
|
||||||
|
|
||||||
|
return imports;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,167 @@
|
||||||
|
var lumenarium_wasm_module = null;
|
||||||
|
var lumenarium_wasm_instance = null;
|
||||||
|
|
||||||
|
var WASM_PAGE_SIZE = 65536;
|
||||||
|
|
||||||
|
function wasm_mem_get_u8_arr(inst, ptr, size)
|
||||||
|
{
|
||||||
|
let view = new Uint8Array(inst.exports.memory.buffer, ptr, size);
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wasm_read_string(inst, ptr, len)
|
||||||
|
{
|
||||||
|
let view = wasm_mem_get_u8_arr(inst, ptr, len);
|
||||||
|
let string = '';
|
||||||
|
for (let i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
string += String.fromCharCode(view[i]);
|
||||||
|
}
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wasm_write_bytes(inst, src, ptr, len)
|
||||||
|
{
|
||||||
|
let view = wasm_mem_get_u8_arr(inst, ptr, len);
|
||||||
|
for (let i = 0; i < len; i++) view[i] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
function wasm_get_proc(inst, proc_ptr)
|
||||||
|
{
|
||||||
|
let result = inst.exports.__indirect_function_table.get(proc_ptr);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fract (v) { return v % 1; }
|
||||||
|
|
||||||
|
var lumenarium_wasm_imports = {
|
||||||
|
|
||||||
|
memset: (dst, size, value) => {
|
||||||
|
let view_dst = wasm_mem_get_u8_arr(lumenarium_wasm_instance, dst, size);
|
||||||
|
for (let i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
view_dst[i] = value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
memcpy: (dst, src, size) => {
|
||||||
|
let view_dst = wasm_mem_get_u8_arr(lumenarium_wasm_instance, dst, size);
|
||||||
|
let view_src = wasm_mem_get_u8_arr(lumenarium_wasm_instance, src, size);
|
||||||
|
for (let i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
view_dst[i] = view_src[i];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_assert_always: () => {
|
||||||
|
console.assert(false);
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_get_memory_size: () => {
|
||||||
|
return instance.exports.memory.buffer.byteLength;
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_mem_grow: (new_size) => {
|
||||||
|
let pages = new_size / WASM_PAGE_SIZE;
|
||||||
|
let pages_rem = fract(pages);
|
||||||
|
if (pages_rem > 0) pages = Math.floor(pages) + 1;
|
||||||
|
let size_before = lumenarium_wasm_instance.exports.memory.buffer.byteLength;
|
||||||
|
let old_page_count = lumenarium_wasm_instance.exports.memory.grow(pages);
|
||||||
|
|
||||||
|
console.log("mem_grow\n",
|
||||||
|
"req size: ", new_size, "\n",
|
||||||
|
"old size: ", (old_page_count * WASM_PAGE_SIZE), "\n",
|
||||||
|
"old size: ", size_before, "\n",
|
||||||
|
"grew by: ", (pages * WASM_PAGE_SIZE), "\n",
|
||||||
|
"new size: ", lumenarium_wasm_instance.exports.memory.buffer.byteLength, "");
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_performance_now: () => {
|
||||||
|
return performance.now();
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_sleep: (milliseconds) => {
|
||||||
|
let start = Date.now();
|
||||||
|
for (let at = Date.now(); (at - start) < milliseconds; at = Date.now()) {}
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_fetch: async (file_path, file_path_len, dest, dest_size) => {
|
||||||
|
let path = wasm_read_string(lumenarium_wasm_instance, file_path, file_path_len);
|
||||||
|
fetch(path)
|
||||||
|
.then(async (res) => {
|
||||||
|
// TODO(PS): success checking
|
||||||
|
let reader = res.body.getReader();
|
||||||
|
let read_res = { done: false };
|
||||||
|
|
||||||
|
let view = wasm_mem_get_u8_arr(lumenarium_wasm_instance, dest, dest_size);
|
||||||
|
let last_write = 0;
|
||||||
|
while (!read_res.done)
|
||||||
|
{
|
||||||
|
read_res = await reader.read();
|
||||||
|
if (read_res.done) break;
|
||||||
|
|
||||||
|
let len = read_res.value.length;
|
||||||
|
let write_end = last_write + len;
|
||||||
|
for (let i = last_write; i < write_end; i++)
|
||||||
|
{
|
||||||
|
view[i] = read_res.value[i - last_write];
|
||||||
|
}
|
||||||
|
last_write = write_end + 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
wasm_request_animation_frame: (cb) => {
|
||||||
|
let cb_proc = wasm_get_proc(lumenarium_wasm_instance, cb);
|
||||||
|
window.requestAnimationFrame(cb_proc);
|
||||||
|
},
|
||||||
|
|
||||||
|
print: (str_base, len) => {
|
||||||
|
let string = wasm_read_string(lumenarium_wasm_instance, str_base, len);
|
||||||
|
console.log(string);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let gl = null;
|
||||||
|
|
||||||
|
function glClearColor (r, g, b, a) { gl.clearColor(r,g,b,a); }
|
||||||
|
function glEnable(v) { gl.enable(v); }
|
||||||
|
function glDisable(v) { gl.disable(v); }
|
||||||
|
function glBlendFunc(a,b) { gl.blendFunc(a,b); }
|
||||||
|
function glViewport(xmin, ymin, xmax, ymax) { gl.viewport(xmin,ymin,xmax,ymax); }
|
||||||
|
function glDepthFunc(v) { gl.depthFunc(v); }
|
||||||
|
function glClear(mask) { gl.clear(mask); }
|
||||||
|
|
||||||
|
function webgl_add_imports (canvas_selector, imports) {
|
||||||
|
const canvas = document.querySelector(canvas_selector);
|
||||||
|
if (!canvas) return console.error("no canvas");
|
||||||
|
|
||||||
|
gl = canvas.getContext("webgl");
|
||||||
|
if (gl === null) return console.error("no webgl ctx");
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
|
||||||
|
imports.GL_TEXTURE_2D = gl.TEXTURE_2D;
|
||||||
|
imports.GL_BLEND = gl.BLEND;
|
||||||
|
imports.GL_SRC_ALPHA = gl.SRC_ALPHA;
|
||||||
|
imports.GL_ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA;
|
||||||
|
imports.GL_DEPTH_TEST = gl.DEPTH_TEST;
|
||||||
|
imports.GL_LESS = gl.LESS;
|
||||||
|
imports.GL_COLOR_BUFFER_BIT = gl.COLOR_BUFFER_BIT;
|
||||||
|
imports.GL_DEPTH_BUFFER_BIT = gl.DEPTH_BUFFER_BIT;
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Functions
|
||||||
|
|
||||||
|
imports.glClearColor = glClearColor;
|
||||||
|
imports.glEnable = glEnable;
|
||||||
|
imports.glDisable = glDisable;
|
||||||
|
imports.glBlendFunc = glBlendFunc;
|
||||||
|
imports.glViewport = glViewport;
|
||||||
|
imports.glDepthFunc = glDepthFunc;
|
||||||
|
imports.glClear = glClear;
|
||||||
|
|
||||||
|
return imports;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
OpenGL Version: 3.3.0 - Build 27.20.100.9778
|
Binary file not shown.
Binary file not shown.
|
@ -1,280 +0,0 @@
|
||||||
//
|
|
||||||
// File: blumen_lumen.cpp
|
|
||||||
// Author: Peter Slattery
|
|
||||||
// Creation Date: 2021-01-23
|
|
||||||
//
|
|
||||||
#ifndef BLUMEN_LUMEN_CPP
|
|
||||||
|
|
||||||
internal void
|
|
||||||
BlumenLumen_MicListenJob(gs_thread_context* Ctx, u8* UserData)
|
|
||||||
{
|
|
||||||
mic_listen_job_data* Data = (mic_listen_job_data*)UserData;
|
|
||||||
|
|
||||||
gs_data Msg = {};
|
|
||||||
|
|
||||||
u8 WeathermanIPAddr[4] = {};
|
|
||||||
WeathermanIPAddr[0] = 127;
|
|
||||||
WeathermanIPAddr[1] = 0;
|
|
||||||
WeathermanIPAddr[2] = 0;
|
|
||||||
WeathermanIPAddr[3] = 1;
|
|
||||||
|
|
||||||
u32 WeathermanIPV4 = (u32)UpackB4(WeathermanIPAddr);
|
|
||||||
u32 WeathermanPort = 20185;
|
|
||||||
|
|
||||||
while (*Data->Running)
|
|
||||||
{
|
|
||||||
#if 1
|
|
||||||
if (SocketQueryStatus(Data->SocketManager, Data->ListenSocket))
|
|
||||||
{
|
|
||||||
// TODO(pjs): Removing this block for now - nothing is wrong with it except that SocketPeek is still blocking for some reason
|
|
||||||
if (SocketPeek(Data->SocketManager, Data->ListenSocket))
|
|
||||||
{
|
|
||||||
// TODO(pjs): Make this a peek operation
|
|
||||||
Msg = SocketRecieve(Data->SocketManager, Data->ListenSocket, Ctx->Transient);
|
|
||||||
if (Msg.Size > 0)
|
|
||||||
{
|
|
||||||
Data->MicPacketBuffer->Values[Data->MicPacketBuffer->WriteHead++] = Msg;
|
|
||||||
if (Data->MicPacketBuffer->WriteHead >= PACKETS_MAX)
|
|
||||||
{
|
|
||||||
Data->MicPacketBuffer->WriteHead = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (Data->OutgoingMsgQueue->ReadHead != Data->OutgoingMsgQueue->WriteHead)
|
|
||||||
{
|
|
||||||
u32 ReadIndex = Data->OutgoingMsgQueue->ReadHead++;
|
|
||||||
if (Data->OutgoingMsgQueue->ReadHead >= BLUMEN_MESSAGE_QUEUE_COUNT)
|
|
||||||
{
|
|
||||||
Data->OutgoingMsgQueue->ReadHead = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Msg = Data->OutgoingMsgQueue->Buffers[ReadIndex];
|
|
||||||
u32 Address = WeathermanIPV4;
|
|
||||||
u32 Port = WeathermanPort;
|
|
||||||
s32 Flags = 0;
|
|
||||||
SocketSend(Data->SocketManager, Data->ListenSocket, Address, Port, Msg, Flags);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseSocket(Data->SocketManager, Data->ListenSocket);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
|
||||||
BlumenLumen_LoadPatterns(app_state* State)
|
|
||||||
{
|
|
||||||
animation_pattern_array* Patterns = &State->Patterns;
|
|
||||||
if (Patterns->CountMax == 0)
|
|
||||||
{
|
|
||||||
*Patterns = Patterns_Create(&State->Permanent, 32);
|
|
||||||
}
|
|
||||||
|
|
||||||
Patterns->Count = 0;
|
|
||||||
Patterns_PushPattern(Patterns, TestPatternOne);
|
|
||||||
Patterns_PushPattern(Patterns, TestPatternTwo);
|
|
||||||
Patterns_PushPattern(Patterns, TestPatternThree);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_AllGreen);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_HueShift);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_HueFade);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_Spots);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_LighthouseRainbow);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_SmoothGrowRainbow);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_GrowAndFade);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_ColorToWhite);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_Blue);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_Green);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_FlowerColors);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_FlowerColorToWhite);
|
|
||||||
Patterns_PushPattern(Patterns, Pattern_BasicFlowers);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal pixel
|
|
||||||
TEMP_Saturate(pixel P)
|
|
||||||
{
|
|
||||||
v4 CRGB = v4{ (r32)P.R / 255.f, (r32)P.G / 255.f, (r32)P.B / 255.f, 1.f };
|
|
||||||
v4 CHSV = RGBToHSV(CRGB);
|
|
||||||
if (CHSV.g > .3f)
|
|
||||||
{
|
|
||||||
CHSV.g = 1;
|
|
||||||
CRGB = HSVToRGB(CHSV);
|
|
||||||
}
|
|
||||||
return V4ToRGBPixel(CRGB);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal gs_data
|
|
||||||
BlumenLumen_CustomInit(app_state* State, context Context)
|
|
||||||
{
|
|
||||||
// This is memory for any custom data that we want to use
|
|
||||||
// as a part of a particular sculpture.
|
|
||||||
// By returning it from here, it will be sent as an argument to
|
|
||||||
// the sculpture's CustomUpdate function;
|
|
||||||
gs_data Result = {};
|
|
||||||
|
|
||||||
Result = PushSizeToData(&State->Permanent, sizeof(blumen_lumen_state));
|
|
||||||
|
|
||||||
blumen_lumen_state* BLState = (blumen_lumen_state*)Result.Memory;
|
|
||||||
BLState->Running = true;
|
|
||||||
|
|
||||||
BLState->MicListenJobData.Running = &BLState->Running;
|
|
||||||
BLState->MicListenJobData.SocketManager = Context.SocketManager;
|
|
||||||
BLState->MicListenJobData.MicPacketBuffer = &BLState->MicPacketBuffer;
|
|
||||||
BLState->MicListenJobData.OutgoingMsgQueue = &BLState->OutgoingMsgQueue;
|
|
||||||
BLState->MicListenJobData.ListenSocket = CreateSocket(Context.SocketManager, "127.0.0.1", "20185");
|
|
||||||
|
|
||||||
//BLState->MicListenThread = CreateThread(Context.ThreadManager, BlumenLumen_MicListenJob, (u8*)&BLState->MicListenJobData);
|
|
||||||
|
|
||||||
gs_const_string SculpturePath = ConstString("data/test_blumen.fold");
|
|
||||||
LoadAssembly(&State->Assemblies, &State->LedSystem, State->Transient, Context, SculpturePath, State->GlobalLog);
|
|
||||||
|
|
||||||
{ // Animation PLAYGROUND
|
|
||||||
animation Anim0 = {0};
|
|
||||||
Anim0.Name = PushStringF(&State->Permanent, 256, "test_anim_zero");
|
|
||||||
Anim0.Layers = AnimLayerArray_Create(State->AnimationSystem.Storage, 8);
|
|
||||||
Anim0.Blocks_ = AnimBlockArray_Create(State->AnimationSystem.Storage, 8);
|
|
||||||
Anim0.PlayableRange.Min = 0;
|
|
||||||
Anim0.PlayableRange.Max = SecondsToFrames(15, State->AnimationSystem);
|
|
||||||
Animation_AddLayer(&Anim0, MakeString("Base Layer"), BlendMode_Overwrite, &State->AnimationSystem);
|
|
||||||
|
|
||||||
Animation_AddBlock(&Anim0, 0, Anim0.PlayableRange.Max, Patterns_IndexToHandle(15), 0);
|
|
||||||
|
|
||||||
AnimationArray_Push(&State->AnimationSystem.Animations, Anim0);
|
|
||||||
|
|
||||||
animation Anim1 = {0};
|
|
||||||
Anim1.Name = PushStringF(&State->Permanent, 256, "test_anim_one");
|
|
||||||
Anim1.Layers = AnimLayerArray_Create(State->AnimationSystem.Storage, 8);
|
|
||||||
Anim1.Blocks_ = AnimBlockArray_Create(State->AnimationSystem.Storage, 8);
|
|
||||||
Anim1.PlayableRange.Min = 0;
|
|
||||||
Anim1.PlayableRange.Max = SecondsToFrames(15, State->AnimationSystem);
|
|
||||||
Animation_AddLayer(&Anim1, MakeString("Base Layer"), BlendMode_Overwrite, &State->AnimationSystem);
|
|
||||||
|
|
||||||
Animation_AddBlock(&Anim1, 0, Anim0.PlayableRange.Max, Patterns_IndexToHandle(12), 0);
|
|
||||||
|
|
||||||
AnimationArray_Push(&State->AnimationSystem.Animations, Anim1);
|
|
||||||
|
|
||||||
animation Anim2 = {0};
|
|
||||||
Anim2.Name = PushStringF(&State->Permanent, 256, "i_love_you");
|
|
||||||
Anim2.Layers = AnimLayerArray_Create(State->AnimationSystem.Storage, 8);
|
|
||||||
Anim2.Blocks_ = AnimBlockArray_Create(State->AnimationSystem.Storage, 8);
|
|
||||||
Anim2.PlayableRange.Min = 0;
|
|
||||||
Anim2.PlayableRange.Max = SecondsToFrames(15, State->AnimationSystem);
|
|
||||||
Animation_AddLayer(&Anim2, MakeString("Base Layer"), BlendMode_Overwrite, &State->AnimationSystem);
|
|
||||||
|
|
||||||
Animation_AddBlock(&Anim2, 0, Anim0.PlayableRange.Max, Patterns_IndexToHandle(10), 0);
|
|
||||||
|
|
||||||
AnimationArray_Push(&State->AnimationSystem.Animations, Anim2);
|
|
||||||
|
|
||||||
State->AnimationSystem.TimelineShouldAdvance = true;
|
|
||||||
} // End Animation Playground
|
|
||||||
|
|
||||||
for (u32 i = 0; i < FLOWER_COLORS_COUNT; i++)
|
|
||||||
{
|
|
||||||
FlowerAColors[i] = TEMP_Saturate(FlowerAColors[i]);
|
|
||||||
FlowerBColors[i] = TEMP_Saturate(FlowerBColors[i]);
|
|
||||||
FlowerCColors[i] = TEMP_Saturate(FlowerCColors[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
|
||||||
BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
|
||||||
{
|
|
||||||
blumen_lumen_state* BLState = (blumen_lumen_state*)UserData.Memory;
|
|
||||||
|
|
||||||
MotorTimeElapsed += Context->DeltaTime;
|
|
||||||
|
|
||||||
gs_string BlueString = MakeString("blue");
|
|
||||||
gs_string GreenString = MakeString("green");
|
|
||||||
gs_string ILoveYouString = MakeString("i_love_you");
|
|
||||||
|
|
||||||
while (BLState->MicPacketBuffer.ReadHead != BLState->MicPacketBuffer.WriteHead)
|
|
||||||
{
|
|
||||||
gs_data PacketData = BLState->MicPacketBuffer.Values[BLState->MicPacketBuffer.ReadHead++];
|
|
||||||
microphone_packet Packet = *(microphone_packet*)PacketData.Memory;
|
|
||||||
|
|
||||||
u32 NameLen = CStringLength(Packet.AnimationFileName);
|
|
||||||
if (StringEqualsCharArray(BlueString.ConstString, Packet.AnimationFileName, NameLen))
|
|
||||||
{
|
|
||||||
State->AnimationSystem.ActiveAnimationIndex = 0;
|
|
||||||
}
|
|
||||||
else if (StringEqualsCharArray(GreenString.ConstString, Packet.AnimationFileName, NameLen))
|
|
||||||
{
|
|
||||||
State->AnimationSystem.ActiveAnimationIndex = 1;
|
|
||||||
}
|
|
||||||
else if (StringEqualsCharArray(ILoveYouString.ConstString, Packet.AnimationFileName, NameLen))
|
|
||||||
{
|
|
||||||
State->AnimationSystem.ActiveAnimationIndex = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (BLState->MicPacketBuffer.ReadHead >= PACKETS_MAX)
|
|
||||||
{
|
|
||||||
BLState->MicPacketBuffer.ReadHead = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MotorTimeElapsed > 60)
|
|
||||||
{
|
|
||||||
// NOTE(pjs):
|
|
||||||
MotorTimeElapsed = 0;
|
|
||||||
u8 Position = LastPosition;
|
|
||||||
if (LastPosition == 2)
|
|
||||||
{
|
|
||||||
LastPosition = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LastPosition = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((BLState->OutgoingMsgQueue.WriteHead >= BLState->OutgoingMsgQueue.ReadHead) ||
|
|
||||||
(BLState->OutgoingMsgQueue.WriteHead < BLState->OutgoingMsgQueue.ReadHead))
|
|
||||||
{
|
|
||||||
u32 WriteIndex = BLState->OutgoingMsgQueue.WriteHead;
|
|
||||||
|
|
||||||
gs_data* Msg = BLState->OutgoingMsgQueue.Buffers + WriteIndex;
|
|
||||||
if (Msg->Size == 0)
|
|
||||||
{
|
|
||||||
*Msg = PushSizeToData(&State->Permanent, sizeof(motor_packet));
|
|
||||||
}
|
|
||||||
motor_packet* Packet = (motor_packet*)Msg->Memory;
|
|
||||||
Packet->FlowerPositions[0] = Position;
|
|
||||||
Packet->FlowerPositions[1] = Position;
|
|
||||||
Packet->FlowerPositions[2] = Position;
|
|
||||||
|
|
||||||
// NOTE(pjs): We increment the write head AFTER we've written so that
|
|
||||||
// the network thread doesn't think the buffer is ready to send before
|
|
||||||
// the data is set. We want to avoid the case of:
|
|
||||||
// 1. Main Thread increments write head to 1
|
|
||||||
// 2. Network Thread thinks theres a new message to send at 0
|
|
||||||
// 3. Network Thread sends the message at 0
|
|
||||||
// 4. Main Thread sets the message at 0
|
|
||||||
BLState->OutgoingMsgQueue.WriteHead += 1;
|
|
||||||
if (BLState->OutgoingMsgQueue.WriteHead >= BLUMEN_MESSAGE_QUEUE_COUNT)
|
|
||||||
{
|
|
||||||
BLState->OutgoingMsgQueue.WriteHead = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
US_CUSTOM_CLEANUP(BlumenLumen_CustomCleanup)
|
|
||||||
{
|
|
||||||
blumen_lumen_state* BLState = (blumen_lumen_state*)UserData.Memory;
|
|
||||||
BLState->Running = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal user_space_desc
|
|
||||||
BlumenLumen_UserSpaceCreate()
|
|
||||||
{
|
|
||||||
user_space_desc Result = {};
|
|
||||||
Result.LoadPatterns = BlumenLumen_LoadPatterns;
|
|
||||||
Result.CustomInit = BlumenLumen_CustomInit;
|
|
||||||
Result.CustomUpdate = BlumenLumen_CustomUpdate;
|
|
||||||
Result.CustomCleanup = BlumenLumen_CustomCleanup;
|
|
||||||
return Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define BLUMEN_LUMEN_CPP
|
|
||||||
#endif // BLUMEN_LUMEN_CPP
|
|
|
@ -1,119 +0,0 @@
|
||||||
//
|
|
||||||
// File: blumen_lumen.h
|
|
||||||
// Author: Peter Slattery
|
|
||||||
// Creation Date: 2021-01-15
|
|
||||||
//
|
|
||||||
#ifndef BLUMEN_LUMEN_H
|
|
||||||
|
|
||||||
typedef struct motor_packet
|
|
||||||
{
|
|
||||||
u8 FlowerPositions[3];
|
|
||||||
} motor_packet;
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
|
||||||
struct microphone_packet
|
|
||||||
{
|
|
||||||
b8 ChangeAnimation;
|
|
||||||
char AnimationFileName[32];
|
|
||||||
b8 SetLayer;
|
|
||||||
char LayerName[32];
|
|
||||||
r32 LayerOpacity;
|
|
||||||
b8 SetLayerParamColor;
|
|
||||||
char LayerParamColor[7];
|
|
||||||
r32 OverrideDuration;
|
|
||||||
};
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
#define BLUMEN_MESSAGE_QUEUE_COUNT 32
|
|
||||||
typedef struct blumen_network_msg_queue
|
|
||||||
{
|
|
||||||
gs_data Buffers[BLUMEN_MESSAGE_QUEUE_COUNT];
|
|
||||||
u32 WriteHead;
|
|
||||||
u32 ReadHead;
|
|
||||||
} blumen_network_msg_queue;
|
|
||||||
|
|
||||||
// TODO(pjs): Refactor this -> blumen_network_job_state
|
|
||||||
struct mic_listen_job_data
|
|
||||||
{
|
|
||||||
bool* Running;
|
|
||||||
|
|
||||||
platform_socket_manager* SocketManager;
|
|
||||||
packet_ringbuffer* MicPacketBuffer;
|
|
||||||
platform_socket_handle_ ListenSocket;
|
|
||||||
|
|
||||||
blumen_network_msg_queue* OutgoingMsgQueue;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct blumen_lumen_state
|
|
||||||
{
|
|
||||||
bool Running;
|
|
||||||
|
|
||||||
packet_ringbuffer MicPacketBuffer;
|
|
||||||
blumen_network_msg_queue OutgoingMsgQueue;
|
|
||||||
|
|
||||||
temp_job_req JobReq;
|
|
||||||
|
|
||||||
|
|
||||||
platform_thread_handle MicListenThread;
|
|
||||||
mic_listen_job_data MicListenJobData;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// If you change anything, exit lumenarium if its running
|
|
||||||
// then in this application hit f1 to compile then
|
|
||||||
// go to remedybg (the debugger) and hit f5
|
|
||||||
|
|
||||||
|
|
||||||
// don't touch this
|
|
||||||
u8 LastPosition = 1;
|
|
||||||
|
|
||||||
u8 ClosedValue = 1;
|
|
||||||
u8 OpenValue = 2;
|
|
||||||
|
|
||||||
|
|
||||||
r64 MotorTimeElapsed = 0;
|
|
||||||
r64 OpenClosePeriod = 15.0f;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BLUMEN_LUMEN_H
|
|
||||||
#endif // BLUMEN_LUMEN_H
|
|
|
@ -144,13 +144,11 @@ Editor_Render(app_state* State, context* Context, render_command_buffer* RenderB
|
||||||
// Draw the Interface
|
// Draw the Interface
|
||||||
if (State->Interface.DrawOrderRoot != 0)
|
if (State->Interface.DrawOrderRoot != 0)
|
||||||
{
|
{
|
||||||
ui_widget Widget = *State->Interface.DrawOrderRoot;
|
ui_widget* Widget = State->Interface.DrawOrderRoot;
|
||||||
Editor_DrawWidget(State, Context, RenderBuffer, Widget, Context->WindowBounds);
|
Editor_DrawWidgetList(State, Context, RenderBuffer, Widget, Context->WindowBounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
Context->GeneralWorkQueue->CompleteQueueWork(Context->GeneralWorkQueue, Context->ThreadContext);
|
Context->GeneralWorkQueue->CompleteQueueWork(Context->GeneralWorkQueue, Context->ThreadContext);
|
||||||
ResetWorkQueue(Context->GeneralWorkQueue);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
#ifndef FOLDHAUS_EDITOR_DRAW_H
|
#ifndef FOLDHAUS_EDITOR_DRAW_H
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
Editor_DrawWidgetString(app_state* State, context* Context, render_command_buffer* RenderBuffer, ui_widget Widget, rect2 ClippingBox, v4 Color)
|
Editor_DrawWidgetString(app_state* State, context* Context, render_command_buffer* RenderBuffer, ui_widget Widget, rect2 ClippingBox, v4 Color, s32 CursorPosition)
|
||||||
{
|
{
|
||||||
gs_string Temp = PushString(State->Transient, 256);
|
gs_string Temp = PushString(State->Transient, 256);
|
||||||
PrintF(&Temp, "%d", Widget.Id.Id);
|
PrintF(&Temp, "%d", Widget.Id.Id);
|
||||||
render_quad_batch_constructor BatchConstructor = PushRenderTexture2DBatch(RenderBuffer,
|
render_quad_batch_constructor BatchConstructor = PushRenderTexture2DBatch(RenderBuffer,
|
||||||
Widget.String.Length,
|
Widget.String.Length + 1,
|
||||||
State->Interface.Style.Font->BitmapMemory,
|
State->Interface.Style.Font->BitmapMemory,
|
||||||
State->Interface.Style.Font->BitmapTextureHandle,
|
State->Interface.Style.Font->BitmapTextureHandle,
|
||||||
State->Interface.Style.Font->BitmapWidth,
|
State->Interface.Style.Font->BitmapWidth,
|
||||||
|
@ -25,7 +25,8 @@ Editor_DrawWidgetString(app_state* State, context* Context, render_command_buffe
|
||||||
{
|
{
|
||||||
case Align_Left:
|
case Align_Left:
|
||||||
{
|
{
|
||||||
RegisterPosition = DrawStringLeftAligned(&BatchConstructor, StringExpand(Widget.String), RegisterPosition, State->Interface.Style.Font, ClippingBox, Color);
|
RegisterPosition = DrawStringLeftAligned(RenderBuffer,
|
||||||
|
&BatchConstructor, StringExpand(Widget.String), RegisterPosition, State->Interface.Style.Font, ClippingBox, Color, CursorPosition, GreenV4);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case Align_Right:
|
case Align_Right:
|
||||||
|
@ -76,12 +77,13 @@ Editor_GetWidgetFillBounds(ui_widget Widget)
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void Editor_DrawWidgetList(app_state* State, context* Context, render_command_buffer* RenderBuffer, ui_widget Widget, rect2 ParentClipBounds);
|
||||||
Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* RenderBuffer, ui_widget Widget, rect2 ParentClipBounds)
|
|
||||||
{
|
|
||||||
rect2 WidgetParentUnion = Widget.Bounds;
|
|
||||||
WidgetParentUnion = Rect2Union(Widget.Bounds, ParentClipBounds);
|
|
||||||
|
|
||||||
|
internal void
|
||||||
|
Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* RenderBuffer, ui_widget Widget, rect2 WidgetParentUnion)
|
||||||
|
{
|
||||||
|
bool IsActiveWidget = ui_WidgetIdsEqual(Widget.Id, State->Interface.ActiveWidget);
|
||||||
|
;
|
||||||
if (!Widget.Parent || (Rect2Area(WidgetParentUnion) > 0))
|
if (!Widget.Parent || (Rect2Area(WidgetParentUnion) > 0))
|
||||||
{
|
{
|
||||||
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawBackground))
|
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawBackground))
|
||||||
|
@ -101,7 +103,13 @@ Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* Ren
|
||||||
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawString) && Widget.String.Length > 0)
|
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawString) && Widget.String.Length > 0)
|
||||||
{
|
{
|
||||||
v4 Color = State->Interface.Style.TextColor;
|
v4 Color = State->Interface.Style.TextColor;
|
||||||
Editor_DrawWidgetString(State, Context, RenderBuffer, Widget, WidgetParentUnion, Color);
|
s32 CursorPosition = -1;
|
||||||
|
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_Typable) && IsActiveWidget)
|
||||||
|
{
|
||||||
|
CursorPosition = State->Interface.CursorPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
Editor_DrawWidgetString(State, Context, RenderBuffer, Widget, WidgetParentUnion, Color, CursorPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawHorizontalFill) ||
|
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawHorizontalFill) ||
|
||||||
|
@ -120,13 +128,15 @@ Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* Ren
|
||||||
|
|
||||||
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawString) && Widget.String.Length > 0)
|
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawString) && Widget.String.Length > 0)
|
||||||
{
|
{
|
||||||
// TODO(pjs): add this color to the style
|
|
||||||
v4 TextColor = BlackV4;
|
v4 TextColor = BlackV4;
|
||||||
Editor_DrawWidgetString(State, Context, RenderBuffer, Widget, ClippedFillBounds, TextColor);
|
Editor_DrawWidgetString(State, Context, RenderBuffer, Widget, ClippedFillBounds, TextColor, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawOutline))
|
bool DrawOutline = ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawOutline);
|
||||||
|
DrawOutline |= ui_WidgetIsFlagSet(Widget, UIWidgetFlag_Typable) && IsActiveWidget;
|
||||||
|
|
||||||
|
if (DrawOutline)
|
||||||
{
|
{
|
||||||
// TODO(pjs): replace these with values from the style
|
// TODO(pjs): replace these with values from the style
|
||||||
r32 Thickness = 1.0f;
|
r32 Thickness = 1.0f;
|
||||||
|
@ -134,18 +144,27 @@ Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* Ren
|
||||||
PushRenderBoundingBox2D(RenderBuffer, WidgetParentUnion.Min, WidgetParentUnion.Max, Thickness, Color);
|
PushRenderBoundingBox2D(RenderBuffer, WidgetParentUnion.Min, WidgetParentUnion.Max, Thickness, Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Widget.ChildrenRoot)
|
|
||||||
|
internal void Editor_DrawWidgetList(app_state* State, context* Context, render_command_buffer* RenderBuffer, ui_widget* Widget, rect2 ParentClipBounds)
|
||||||
{
|
{
|
||||||
Editor_DrawWidget(State, Context, RenderBuffer, *Widget.ChildrenRoot, WidgetParentUnion);
|
ui_widget* WidgetAt = Widget;
|
||||||
}
|
while (WidgetAt)
|
||||||
|
|
||||||
if (Widget.Next)
|
|
||||||
{
|
{
|
||||||
Editor_DrawWidget(State, Context, RenderBuffer, *Widget.Next, ParentClipBounds);
|
rect2 WidgetParentUnion = WidgetAt->Bounds;
|
||||||
}
|
WidgetParentUnion = Rect2Union(WidgetAt->Bounds, ParentClipBounds);
|
||||||
|
|
||||||
|
Editor_DrawWidget(State, Context, RenderBuffer, *WidgetAt, WidgetParentUnion);
|
||||||
|
|
||||||
|
if (WidgetAt->ChildrenRoot)
|
||||||
|
{
|
||||||
|
Editor_DrawWidgetList(State, Context, RenderBuffer, WidgetAt->ChildrenRoot, WidgetParentUnion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WidgetAt = WidgetAt->Next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define FOLDHAUS_EDITOR_DRAW_H
|
#define FOLDHAUS_EDITOR_DRAW_H
|
||||||
#endif // FOLDHAUS_EDITOR_DRAW_H
|
#endif // FOLDHAUS_EDITOR_DRAW_H
|
|
@ -40,12 +40,11 @@ OperationModeSystemInit(gs_memory_arena* Storage, gs_thread_context ThreadContex
|
||||||
// TODO(Peter): Do we really need an arena? Can this just operate in constant memory footprint?
|
// TODO(Peter): Do we really need an arena? Can this just operate in constant memory footprint?
|
||||||
Result.Arena.Allocator = ThreadContext.Allocator;
|
Result.Arena.Allocator = ThreadContext.Allocator;
|
||||||
|
|
||||||
Result.ModeMemoryPagesFreeList.CountMax = 32; // TODO(Peter): Static number of modes that can be active simultaneously
|
Result.ModeMemoryPagesFreeList.CountMax = 8;
|
||||||
Result.ModeMemoryPagesFreeList.Data = PushArray(Storage, gs_data, Result.ModeMemoryPagesFreeList.CountMax);
|
Result.ModeMemoryPagesFreeList.Data = PushArray(Storage, gs_data, Result.ModeMemoryPagesFreeList.CountMax);
|
||||||
for (u32 Page = 0; Page < Result.ModeMemoryPagesFreeList.CountMax; Page++)
|
for (u32 Page = 0; Page < Result.ModeMemoryPagesFreeList.CountMax; Page++)
|
||||||
{
|
{
|
||||||
// TODO(Peter): 4k pages = page size on windows
|
Result.ModeMemoryPagesFreeList.Data[Page] = PushSize(Storage, KB(4));
|
||||||
Result.ModeMemoryPagesFreeList.Data[Page] = PushSizeToData(Storage, KB(4));
|
|
||||||
}
|
}
|
||||||
Result.ModeMemoryPagesFreeList.Count = Result.ModeMemoryPagesFreeList.CountMax;
|
Result.ModeMemoryPagesFreeList.Count = Result.ModeMemoryPagesFreeList.CountMax;
|
||||||
|
|
||||||
|
@ -82,7 +81,7 @@ ActivateOperationMode (operation_mode_system* System, operation_render_proc* Ren
|
||||||
//System->ModeMemorySnapshots[ModeIndex] = TakeSnapshotOfArena(&System->Arena);
|
//System->ModeMemorySnapshots[ModeIndex] = TakeSnapshotOfArena(&System->Arena);
|
||||||
|
|
||||||
Result = &System->ActiveModes[ModeIndex];
|
Result = &System->ActiveModes[ModeIndex];
|
||||||
Result->Memory = CreateMemoryCursor(OperationModeTakeMemoryPage(System));
|
Result->Memory = MemoryCursorCreateFromData(OperationModeTakeMemoryPage(System));
|
||||||
Result->Render = RenderProc;
|
Result->Render = RenderProc;
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
|
@ -133,7 +132,7 @@ CreateOperationState_ (operation_mode* Mode, operation_mode_system* System, s32
|
||||||
// NOTE(Peter): This isn't a problem if this fires, it just means our page size is too small,
|
// NOTE(Peter): This isn't a problem if this fires, it just means our page size is too small,
|
||||||
// and its time to make the pages dynamically sized
|
// and its time to make the pages dynamically sized
|
||||||
Assert(Mode->Memory.Data.Size >= StateSize);
|
Assert(Mode->Memory.Data.Size >= StateSize);
|
||||||
u8* Result = PushSizeOnCursor(&Mode->Memory, StateSize).Memory;
|
u8* Result = MemoryCursorPushSize(&Mode->Memory, StateSize).Memory;
|
||||||
Mode->OpStateMemory = Result;
|
Mode->OpStateMemory = Result;
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -411,7 +411,7 @@ GetPanelContainingPoint(panel* Panel, v2 Point)
|
||||||
|
|
||||||
case PanelSplit_Vertical:
|
case PanelSplit_Vertical:
|
||||||
case PanelSplit_Horizontal:
|
case PanelSplit_Horizontal:
|
||||||
{
|
{asdfasdfasdfasdfasdf
|
||||||
if (PointIsInRect(Panel->Left->Bounds, Point))
|
if (PointIsInRect(Panel->Left->Bounds, Point))
|
||||||
{
|
{
|
||||||
Result = GetPanelContainingPoint(Panel->Left, Point);
|
Result = GetPanelContainingPoint(Panel->Left, Point);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -13,9 +13,18 @@ struct animation_timeline_state
|
||||||
{
|
{
|
||||||
frame_range VisibleRange;
|
frame_range VisibleRange;
|
||||||
handle SelectedBlockHandle;
|
handle SelectedBlockHandle;
|
||||||
u32 SelectedAnimationLayer;
|
animation_handle EditingAnimationHandle;
|
||||||
|
s32 SelectedAnimationLayer;
|
||||||
|
|
||||||
|
animation_handle NextActiveAnim;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
internal void
|
||||||
|
AnimationTimeline_SelectLayer(animation_timeline_state* TLState, s32 Layer)
|
||||||
|
{
|
||||||
|
TLState->SelectedAnimationLayer = Layer;
|
||||||
|
}
|
||||||
|
|
||||||
inline u32
|
inline u32
|
||||||
GetFrameFromPointInAnimationPanel(v2 Point, rect2 PanelBounds, frame_range VisibleRange)
|
GetFrameFromPointInAnimationPanel(v2 Point, rect2 PanelBounds, frame_range VisibleRange)
|
||||||
{
|
{
|
||||||
|
@ -33,22 +42,13 @@ GetXPositionFromFrameInAnimationPanel (u32 Frame, rect2 PanelBounds, frame_range
|
||||||
return XPositionAtFrame;
|
return XPositionAtFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal handle
|
|
||||||
AddAnimationBlockAtCurrentTime (animation_pattern_handle AnimationProcHandle, u32 LayerHandle, animation_system* System)
|
|
||||||
{
|
|
||||||
u32 NewBlockStart = System->CurrentFrame;
|
|
||||||
u32 NewBlockEnd = NewBlockStart + SecondsToFrames(3, *System);
|
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(System);
|
|
||||||
handle AnimHandle = Animation_AddBlock(ActiveAnim, NewBlockStart, NewBlockEnd, AnimationProcHandle, LayerHandle);
|
|
||||||
return AnimHandle;
|
|
||||||
}
|
|
||||||
|
|
||||||
FOLDHAUS_INPUT_COMMAND_PROC(DeleteAnimationBlockCommand)
|
FOLDHAUS_INPUT_COMMAND_PROC(DeleteAnimationBlockCommand)
|
||||||
{
|
{
|
||||||
animation_timeline_state* PanelState = Panel_GetStateStruct(Panel, animation_timeline_state);
|
animation_timeline_state* PanelState = Panel_GetStateStruct(Panel, animation_timeline_state);
|
||||||
|
|
||||||
handle SelectedBlockHandle = PanelState->SelectedBlockHandle;
|
handle SelectedBlockHandle = PanelState->SelectedBlockHandle;
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
animation* ActiveAnim = AnimationArray_GetSafe(State->AnimationSystem.Animations, PanelState->EditingAnimationHandle);
|
||||||
|
|
||||||
if(SelectedBlockHandle.Index < ActiveAnim->Blocks_.Count &&
|
if(SelectedBlockHandle.Index < ActiveAnim->Blocks_.Count &&
|
||||||
ActiveAnim->Blocks_.Generations[SelectedBlockHandle.Index] == SelectedBlockHandle.Generation)
|
ActiveAnim->Blocks_.Generations[SelectedBlockHandle.Index] == SelectedBlockHandle.Generation)
|
||||||
{
|
{
|
||||||
|
@ -112,6 +112,7 @@ StartDragTimeMarker(rect2 TimelineBounds, frame_range VisibleFrames, app_state*
|
||||||
OPERATION_STATE_DEF(drag_animation_block_state)
|
OPERATION_STATE_DEF(drag_animation_block_state)
|
||||||
{
|
{
|
||||||
rect2 TimelineBounds;
|
rect2 TimelineBounds;
|
||||||
|
animation_handle EditingAnimationHandle;
|
||||||
handle BlockHandle;
|
handle BlockHandle;
|
||||||
frame_range VisibleRange;
|
frame_range VisibleRange;
|
||||||
frame_range ClipRange;
|
frame_range ClipRange;
|
||||||
|
@ -133,7 +134,9 @@ OPERATION_RENDER_PROC(UpdateDragAnimationBlock)
|
||||||
{
|
{
|
||||||
drag_animation_block_state* OpState = (drag_animation_block_state*)Operation.OpStateMemory;
|
drag_animation_block_state* OpState = (drag_animation_block_state*)Operation.OpStateMemory;
|
||||||
|
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
animation_array Animations = State->AnimationSystem.Animations;
|
||||||
|
animation_handle Handle = OpState->EditingAnimationHandle;
|
||||||
|
animation* ActiveAnim = AnimationArray_GetSafe(Animations, Handle);
|
||||||
|
|
||||||
r32 ClipInitialStartFrameXPercent = FrameToPercentRange(OpState->ClipRange.Min, OpState->VisibleRange);
|
r32 ClipInitialStartFrameXPercent = FrameToPercentRange(OpState->ClipRange.Min, OpState->VisibleRange);
|
||||||
u32 ClipInitialStartFrameXPosition = LerpR32(ClipInitialStartFrameXPercent,
|
u32 ClipInitialStartFrameXPosition = LerpR32(ClipInitialStartFrameXPercent,
|
||||||
|
@ -237,7 +240,10 @@ SelectAndBeginDragAnimationBlock(animation_timeline_state* TimelineState, handle
|
||||||
{
|
{
|
||||||
TimelineState->SelectedBlockHandle = BlockHandle;
|
TimelineState->SelectedBlockHandle = BlockHandle;
|
||||||
|
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
animation_handle Handle = TimelineState->EditingAnimationHandle;
|
||||||
|
animation_array Animations = State->AnimationSystem.Animations;
|
||||||
|
animation* ActiveAnim = AnimationArray_GetSafe(Animations, Handle);
|
||||||
|
|
||||||
operation_mode* DragAnimationBlockMode = ActivateOperationModeWithCommands(&State->Modes, DragAnimationBlockCommands, UpdateDragAnimationBlock);
|
operation_mode* DragAnimationBlockMode = ActivateOperationModeWithCommands(&State->Modes, DragAnimationBlockCommands, UpdateDragAnimationBlock);
|
||||||
|
|
||||||
animation_block* SelectedBlock = Animation_GetBlockFromHandle(ActiveAnim, BlockHandle);
|
animation_block* SelectedBlock = Animation_GetBlockFromHandle(ActiveAnim, BlockHandle);
|
||||||
|
@ -245,29 +251,45 @@ SelectAndBeginDragAnimationBlock(animation_timeline_state* TimelineState, handle
|
||||||
&State->Modes,
|
&State->Modes,
|
||||||
drag_animation_block_state);
|
drag_animation_block_state);
|
||||||
OpState->TimelineBounds = TimelineBounds;
|
OpState->TimelineBounds = TimelineBounds;
|
||||||
|
OpState->EditingAnimationHandle = Handle;
|
||||||
OpState->BlockHandle = BlockHandle;
|
OpState->BlockHandle = BlockHandle;
|
||||||
OpState->VisibleRange = VisibleRange;
|
OpState->VisibleRange = VisibleRange;
|
||||||
OpState->ClipRange = SelectedBlock->Range;
|
OpState->ClipRange = SelectedBlock->Range;
|
||||||
}
|
}
|
||||||
// -------------------
|
// -------------------
|
||||||
|
|
||||||
FOLDHAUS_INPUT_COMMAND_PROC(AddAnimationBlockCommand)
|
internal void
|
||||||
|
AnimationTimeline_AddAnimationBlockCommand(animation_timeline_state* TimelineState, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
animation_timeline_state* TimelineState = Panel_GetStateStruct(Panel, animation_timeline_state);
|
animation_handle Handle = TimelineState->EditingAnimationHandle;
|
||||||
|
animation_array Animations = State->AnimationSystem.Animations;
|
||||||
|
animation* ActiveAnim = AnimationArray_GetSafe(Animations, Handle);
|
||||||
|
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
s32 StartFrame = State->AnimationSystem.CurrentFrame;
|
||||||
|
s32 EndFrame = StartFrame + SecondsToFrames(3, State->AnimationSystem);
|
||||||
|
EndFrame = Clamp(0, EndFrame, ActiveAnim->PlayableRange.Max);
|
||||||
|
if ((EndFrame - StartFrame) > 0)
|
||||||
|
{
|
||||||
|
animation_pattern_handle PatternHandle = Patterns_IndexToHandle(0);
|
||||||
|
s32 Layer = TimelineState->SelectedAnimationLayer;
|
||||||
|
if (Layer < 0)
|
||||||
|
{
|
||||||
|
Layer = Animation_AddLayer(ActiveAnim, MakeString("[New Layer]"), BlendMode_Add, &State->AnimationSystem);
|
||||||
|
AnimationTimeline_SelectLayer(TimelineState, Layer);
|
||||||
|
}
|
||||||
|
Assert(Layer >= 0);
|
||||||
|
|
||||||
frame_range Range = ActiveAnim->PlayableRange;
|
handle NewBlockHandle = Animation_AddBlock(ActiveAnim, StartFrame, EndFrame, PatternHandle, Layer);
|
||||||
u32 MouseDownFrame = GetFrameFromPointInAnimationPanel(Mouse.Pos, Panel->Bounds, Range);
|
|
||||||
|
|
||||||
animation_pattern_handle PatternHandle = Patterns_IndexToHandle(4);
|
|
||||||
handle NewBlockHandle = Animation_AddBlock(ActiveAnim, MouseDownFrame, MouseDownFrame + SecondsToFrames(3, State->AnimationSystem), PatternHandle, TimelineState->SelectedAnimationLayer);
|
|
||||||
TimelineState->SelectedBlockHandle = NewBlockHandle;
|
TimelineState->SelectedBlockHandle = NewBlockHandle;
|
||||||
|
} else {
|
||||||
|
// TODO(pjs): we don't want to create a block of zero frames
|
||||||
|
// since you won't be able to delete it. What do we do here??
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input_command AnimationTimeline_Commands[] = {
|
input_command AnimationTimeline_Commands[] = {
|
||||||
{ KeyCode_X, KeyCode_Invalid, Command_Began, DeleteAnimationBlockCommand },
|
{ KeyCode_X, KeyCode_Invalid, Command_Began, DeleteAnimationBlockCommand },
|
||||||
{ KeyCode_A, KeyCode_Invalid, Command_Began, AddAnimationBlockCommand },
|
|
||||||
};
|
};
|
||||||
s32 AnimationTimeline_CommandsCount = 2;
|
s32 AnimationTimeline_CommandsCount = 2;
|
||||||
|
|
||||||
|
@ -276,10 +298,17 @@ GSMetaTag(panel_type_animation_timeline);
|
||||||
internal void
|
internal void
|
||||||
AnimationTimeline_Init(panel* Panel, app_state* State, context Context)
|
AnimationTimeline_Init(panel* Panel, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
|
animation_handle Handle = State->AnimationSystem.ActiveFadeGroup.From;
|
||||||
|
|
||||||
// TODO: :FreePanelMemory
|
// TODO: :FreePanelMemory
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
|
||||||
animation_timeline_state* TimelineState = PushStruct(&State->Permanent, animation_timeline_state);
|
animation_timeline_state* TimelineState = PushStruct(&State->Permanent, animation_timeline_state);
|
||||||
|
TimelineState->EditingAnimationHandle = Handle;
|
||||||
|
|
||||||
|
if (IsValid(Handle)) {
|
||||||
|
animation_array Animations = State->AnimationSystem.Animations;
|
||||||
|
animation* ActiveAnim = AnimationArray_GetSafe(Animations, Handle);
|
||||||
TimelineState->VisibleRange = ActiveAnim->PlayableRange;
|
TimelineState->VisibleRange = ActiveAnim->PlayableRange;
|
||||||
|
}
|
||||||
|
|
||||||
Panel->StateMemory = StructToData(TimelineState, animation_timeline_state);
|
Panel->StateMemory = StructToData(TimelineState, animation_timeline_state);
|
||||||
}
|
}
|
||||||
|
@ -320,7 +349,7 @@ DrawFrameBar (animation_system* AnimationSystem, ui_interface Interface, frame_r
|
||||||
r32 FramePercent = FrameToPercentRange(Frame, VisibleFrames);
|
r32 FramePercent = FrameToPercentRange(Frame, VisibleFrames);
|
||||||
r32 FrameX = LerpR32(FramePercent, BarBounds.Min.x, BarBounds.Max.x);
|
r32 FrameX = LerpR32(FramePercent, BarBounds.Min.x, BarBounds.Max.x);
|
||||||
v2 FrameTextPos = v2{FrameX, BarBounds.Min.y + 2};
|
v2 FrameTextPos = v2{FrameX, BarBounds.Min.y + 2};
|
||||||
DrawString(Interface.RenderBuffer, TempString, Interface.Style.Font, FrameTextPos, WhiteV4);
|
DrawString(Interface.RenderBuffer, TempString, Interface.Style.Font, FrameTextPos, WhiteV4, -1, GreenV4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Time Slider
|
// Time Slider
|
||||||
|
@ -337,7 +366,7 @@ DrawFrameBar (animation_system* AnimationSystem, ui_interface Interface, frame_r
|
||||||
v2 HeadMin = v2{SliderX - SliderHalfWidth, BarBounds.Min.y};
|
v2 HeadMin = v2{SliderX - SliderHalfWidth, BarBounds.Min.y};
|
||||||
v2 HeadMax = v2{SliderX + SliderHalfWidth, BarBounds.Max.y};
|
v2 HeadMax = v2{SliderX + SliderHalfWidth, BarBounds.Max.y};
|
||||||
PushRenderQuad2D(Interface.RenderBuffer, HeadMin, HeadMax, TimeSliderColor);
|
PushRenderQuad2D(Interface.RenderBuffer, HeadMin, HeadMax, TimeSliderColor);
|
||||||
DrawString(Interface.RenderBuffer, TempString, Interface.Style.Font, HeadMin + v2{6, 4}, WhiteV4);
|
DrawString(Interface.RenderBuffer, TempString, Interface.Style.Font, HeadMin + v2{6, 4}, WhiteV4, -1, GreenV4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -450,123 +479,10 @@ DrawLayerMenu(animation_system* AnimationSystem, animation ActiveAnim, ui_interf
|
||||||
{
|
{
|
||||||
PushRenderBoundingBox2D(Interface.RenderBuffer, LayerBounds.Min, LayerBounds.Max, 1, WhiteV4);
|
PushRenderBoundingBox2D(Interface.RenderBuffer, LayerBounds.Min, LayerBounds.Max, 1, WhiteV4);
|
||||||
}
|
}
|
||||||
DrawString(Interface.RenderBuffer, Layer->Name, Interface.Style.Font, LayerTextPos, WhiteV4);
|
DrawString(Interface.RenderBuffer, Layer->Name, Interface.Style.Font, LayerTextPos, WhiteV4, -1, GreenV4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal rect2
|
|
||||||
DrawAnimationBlock (animation_block AnimationBlock, v4 BlockColor, frame_range VisibleFrames, rect2 TimelineBounds, render_command_buffer* RenderBuffer)
|
|
||||||
{
|
|
||||||
rect2 BlockBounds = {};
|
|
||||||
|
|
||||||
r32 TimelineWidth = Rect2Width(TimelineBounds);
|
|
||||||
|
|
||||||
u32 ClampedBlockStartFrame = ClampFrameToRange(AnimationBlock.Range.Min, VisibleFrames);
|
|
||||||
r32 StartFramePercent = FrameToPercentRange(ClampedBlockStartFrame, VisibleFrames);
|
|
||||||
r32 StartPosition = TimelineWidth * StartFramePercent;
|
|
||||||
|
|
||||||
u32 ClampedBlockEndFrame = ClampFrameToRange(AnimationBlock.Range.Max, VisibleFrames);
|
|
||||||
r32 EndFramePercent = FrameToPercentRange(ClampedBlockEndFrame, VisibleFrames);
|
|
||||||
r32 EndPosition = TimelineWidth * EndFramePercent;
|
|
||||||
|
|
||||||
r32 LayerYOffset = LAYER_HEIGHT * AnimationBlock.Layer;
|
|
||||||
BlockBounds.Min = TimelineBounds.Min + v2{StartPosition, LayerYOffset};
|
|
||||||
BlockBounds.Max = TimelineBounds.Min + v2{EndPosition, LayerYOffset + LAYER_HEIGHT};
|
|
||||||
|
|
||||||
PushRenderQuad2D(RenderBuffer, BlockBounds.Min, BlockBounds.Max, BlockColor);
|
|
||||||
PushRenderBoundingBox2D(RenderBuffer, BlockBounds.Min, BlockBounds.Max, 1, WhiteV4);
|
|
||||||
|
|
||||||
// TODO(pjs): If mouse is on one of the border hot spots, render an off colored square to signal the region is hot
|
|
||||||
|
|
||||||
return BlockBounds;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal handle
|
|
||||||
DrawAnimationTimeline (animation_system* AnimationSystem, animation_timeline_state* TimelineState, rect2 PanelBounds, handle SelectedBlockHandle, ui_interface* Interface, app_state* State)
|
|
||||||
{
|
|
||||||
gs_string Tempgs_string = PushString(State->Transient, 256);
|
|
||||||
handle Result = SelectedBlockHandle;
|
|
||||||
|
|
||||||
animation CurrAnimation = *AnimationSystem_GetActiveAnimation(AnimationSystem);
|
|
||||||
|
|
||||||
rect2 LayerMenuBounds, TimelineBounds;
|
|
||||||
RectVSplitAtDistanceFromLeft(PanelBounds, 256, &LayerMenuBounds, &TimelineBounds);
|
|
||||||
|
|
||||||
// In Top To Bottom Order
|
|
||||||
rect2 TimelineFrameBarBounds;
|
|
||||||
rect2 TimelineBlockDisplayBounds;
|
|
||||||
rect2 TimelineRangeBarBounds;
|
|
||||||
RectHSplitAtDistanceFromTop(TimelineBounds, 32, &TimelineFrameBarBounds, &TimelineBounds);
|
|
||||||
RectHSplitAtDistanceFromBottom(TimelineBounds, 24, &TimelineBlockDisplayBounds, &TimelineRangeBarBounds);
|
|
||||||
|
|
||||||
DrawLayerMenu(AnimationSystem, CurrAnimation, *Interface, LayerMenuBounds, &TimelineState->SelectedAnimationLayer);
|
|
||||||
|
|
||||||
frame_range AdjustedViewRange = DrawTimelineRangeBar(AnimationSystem, CurrAnimation, TimelineState, *Interface, TimelineRangeBarBounds);
|
|
||||||
|
|
||||||
DrawFrameBar(AnimationSystem, *Interface, AdjustedViewRange, TimelineFrameBarBounds, State);
|
|
||||||
|
|
||||||
ui_FillRect(Interface, TimelineBlockDisplayBounds, v4{.25f, .25f, .25f, 1.0f});
|
|
||||||
|
|
||||||
// Animation Blocks
|
|
||||||
b32 MouseDownAndNotHandled = MouseButtonTransitionedDown(Interface->Mouse.LeftButtonState);
|
|
||||||
handle DragBlockHandle = {0};
|
|
||||||
for (u32 i = 0; i < CurrAnimation.Blocks_.Count; i++)
|
|
||||||
{
|
|
||||||
animation_block* AnimationBlockAt = CurrAnimation.Blocks_.Values + i;
|
|
||||||
|
|
||||||
// If either end is in the range, we should draw it
|
|
||||||
b32 RangeIsVisible = (FrameIsInRange(AdjustedViewRange, AnimationBlockAt->Range.Min) ||
|
|
||||||
FrameIsInRange(AdjustedViewRange, AnimationBlockAt->Range.Max));
|
|
||||||
// If neither end is in the range, but the ends surround the visible range,
|
|
||||||
// we should still draw it.
|
|
||||||
RangeIsVisible |= (AnimationBlockAt->Range.Min <= AdjustedViewRange.Min &&
|
|
||||||
AnimationBlockAt->Range.Max>= AdjustedViewRange.Max);
|
|
||||||
if (RangeIsVisible)
|
|
||||||
{
|
|
||||||
v4 BlockColor = BlackV4;
|
|
||||||
if (SelectedBlockHandle.Index == i && SelectedBlockHandle.Generation == CurrAnimation.Blocks_.Generations[i])
|
|
||||||
{
|
|
||||||
BlockColor = PinkV4;
|
|
||||||
}
|
|
||||||
rect2 BlockBounds = DrawAnimationBlock(*AnimationBlockAt, BlockColor, AdjustedViewRange, TimelineBounds, Interface->RenderBuffer);
|
|
||||||
if (PointIsInRect(BlockBounds, Interface->Mouse.Pos))
|
|
||||||
{
|
|
||||||
DragBlockHandle.Index = i;
|
|
||||||
DragBlockHandle.Generation = CurrAnimation.Blocks_.Generations[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MouseDownAndNotHandled && Handle_IsValid(DragBlockHandle))
|
|
||||||
{
|
|
||||||
MouseDownAndNotHandled = false;
|
|
||||||
SelectAndBeginDragAnimationBlock(TimelineState, DragBlockHandle, AdjustedViewRange, TimelineBounds, State);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Time Slider
|
|
||||||
if (FrameIsInRange(AdjustedViewRange, AnimationSystem->CurrentFrame))
|
|
||||||
{
|
|
||||||
r32 FrameAtPercentVisibleRange = FrameToPercentRange(AnimationSystem->CurrentFrame, AdjustedViewRange);
|
|
||||||
r32 SliderX = LerpR32(FrameAtPercentVisibleRange, TimelineBounds.Min.x, TimelineBounds.Max.x);
|
|
||||||
rect2 SliderBounds = {
|
|
||||||
v2{ SliderX, TimelineBounds.Min.y },
|
|
||||||
v2{ SliderX + 1, TimelineBounds.Max.y }
|
|
||||||
};
|
|
||||||
ui_FillRect(Interface, SliderBounds, TimeSliderColor);
|
|
||||||
}
|
|
||||||
|
|
||||||
ui_OutlineRect(Interface, TimelineRangeBarBounds, 1.f, RedV4);
|
|
||||||
ui_OutlineRect(Interface, TimelineFrameBarBounds, 1.f, RedV4);
|
|
||||||
ui_OutlineRect(Interface, TimelineBlockDisplayBounds, 1.f, RedV4);
|
|
||||||
|
|
||||||
if (MouseDownAndNotHandled && PointIsInRect(TimelineBounds, Interface->Mouse.Pos))
|
|
||||||
{
|
|
||||||
TimelineState->SelectedBlockHandle = {0};
|
|
||||||
}
|
|
||||||
|
|
||||||
return Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
PANEL_MODAL_OVERRIDE_CALLBACK(LoadAnimationFileCallback)
|
PANEL_MODAL_OVERRIDE_CALLBACK(LoadAnimationFileCallback)
|
||||||
{
|
{
|
||||||
Assert(ReturningFrom->TypeIndex == PanelType_FileView);
|
Assert(ReturningFrom->TypeIndex == PanelType_FileView);
|
||||||
|
@ -575,37 +491,19 @@ PANEL_MODAL_OVERRIDE_CALLBACK(LoadAnimationFileCallback)
|
||||||
|
|
||||||
if (FileInfo.Path.Length > 0)
|
if (FileInfo.Path.Length > 0)
|
||||||
{
|
{
|
||||||
gs_file AnimFile = ReadEntireFile(Context.ThreadContext.FileHandler, FileInfo.Path);
|
animation_handle NewAnimHandle = AnimationSystem_LoadAnimationFromFile(&State->AnimationSystem,
|
||||||
|
State->Patterns,
|
||||||
gs_string AnimFileString = MakeString((char*)AnimFile.Data.Memory, AnimFile.Data.Size);
|
Context,
|
||||||
animation NewAnim = AnimParser_Parse(AnimFileString, State->AnimationSystem.Storage, State->Patterns);
|
FileInfo.Path);
|
||||||
NewAnim.FileInfo = AnimFile.FileInfo;
|
State->AnimationSystem.ActiveFadeGroup.From = NewAnimHandle;
|
||||||
|
|
||||||
u32 NewAnimIndex = AnimationArray_Push(&State->AnimationSystem.Animations, NewAnim);
|
|
||||||
State->AnimationSystem.ActiveAnimationIndex = NewAnimIndex;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
|
||||||
DrawAnimationPatternList(rect2 PanelBounds, ui_interface* Interface, u32 SelectedAnimationLayerHandle, animation_system* AnimationSystem, animation_pattern_array Patterns)
|
|
||||||
{
|
|
||||||
ui_PushLayout(Interface, PanelBounds, LayoutDirection_TopDown, MakeString("AnimClips Layout"));
|
|
||||||
for (u32 i = 0; i < Patterns.Count; i++)
|
|
||||||
{
|
|
||||||
animation_pattern Pattern = Patterns.Values[i];
|
|
||||||
gs_string PatternName = MakeString(Pattern.Name, Pattern.NameLength);
|
|
||||||
if (ui_Button(Interface, PatternName))
|
|
||||||
{
|
|
||||||
animation_pattern_handle PatternHandle = Patterns_IndexToHandle(i);
|
|
||||||
AddAnimationBlockAtCurrentTime(PatternHandle, SelectedAnimationLayerHandle, AnimationSystem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ui_PopLayout(Interface, MakeString("AnimClips Layout"));
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
PlayBar_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel* Panel, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
PlayBar_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel* Panel, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
|
DEBUG_TRACK_FUNCTION;
|
||||||
|
|
||||||
animation_system* AnimSystem = &State->AnimationSystem;
|
animation_system* AnimSystem = &State->AnimationSystem;
|
||||||
ui_interface* Interface = &State->Interface;
|
ui_interface* Interface = &State->Interface;
|
||||||
ui_PushLayout(Interface, Bounds, LayoutDirection_TopDown, MakeString("PlayBar Layout"));
|
ui_PushLayout(Interface, Bounds, LayoutDirection_TopDown, MakeString("PlayBar Layout"));
|
||||||
|
@ -634,14 +532,20 @@ PlayBar_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel* Pan
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
FrameCount_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
FrameCount_Render(animation_timeline_state* TimelineState, animation* ActiveAnim, rect2 Bounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
|
DEBUG_TRACK_FUNCTION;
|
||||||
|
|
||||||
ui_interface* Interface = &State->Interface;
|
ui_interface* Interface = &State->Interface;
|
||||||
gs_string TempString = PushString(State->Transient, 256);
|
gs_string TempString = PushString(State->Transient, 256);
|
||||||
|
|
||||||
// :FrameRange
|
// :FrameRange
|
||||||
// frame_range VisibleFrames = TimelineState->VisibleRange;
|
// frame_range VisibleFrames = TimelineState->VisibleRange;
|
||||||
animation ActiveAnim = *AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
|
||||||
frame_range VisibleFrames = ActiveAnim.PlayableRange;
|
frame_range VisibleFrames = {};
|
||||||
|
if (ActiveAnim) {
|
||||||
|
VisibleFrames = ActiveAnim->PlayableRange;
|
||||||
|
}
|
||||||
|
|
||||||
s32 VisibleFrameCount = VisibleFrames.Max - VisibleFrames.Min;
|
s32 VisibleFrameCount = VisibleFrames.Max - VisibleFrames.Min;
|
||||||
|
|
||||||
|
@ -657,7 +561,7 @@ FrameCount_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_
|
||||||
r32 FramePercent = FrameToPercentRange(Frame, VisibleFrames);
|
r32 FramePercent = FrameToPercentRange(Frame, VisibleFrames);
|
||||||
r32 FrameX = LerpR32(FramePercent, Bounds.Min.x, Bounds.Max.x);
|
r32 FrameX = LerpR32(FramePercent, Bounds.Min.x, Bounds.Max.x);
|
||||||
v2 FrameTextPos = v2{FrameX, Bounds.Min.y + 2};
|
v2 FrameTextPos = v2{FrameX, Bounds.Min.y + 2};
|
||||||
DrawString(Interface->RenderBuffer, TempString, Interface->Style.Font, FrameTextPos, WhiteV4);
|
DrawString(Interface->RenderBuffer, TempString, Interface->Style.Font, FrameTextPos, WhiteV4, -1, GreenV4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Time Slider
|
// Time Slider
|
||||||
|
@ -675,7 +579,7 @@ FrameCount_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_
|
||||||
v2 HeadMin = v2{SliderX - SliderHalfWidth, Bounds.Min.y};
|
v2 HeadMin = v2{SliderX - SliderHalfWidth, Bounds.Min.y};
|
||||||
v2 HeadMax = v2{SliderX + SliderHalfWidth, Bounds.Max.y};
|
v2 HeadMax = v2{SliderX + SliderHalfWidth, Bounds.Max.y};
|
||||||
PushRenderQuad2D(Interface->RenderBuffer, HeadMin, HeadMax, TimeSliderColor);
|
PushRenderQuad2D(Interface->RenderBuffer, HeadMin, HeadMax, TimeSliderColor);
|
||||||
DrawString(Interface->RenderBuffer, TempString, Interface->Style.Font, HeadMin + v2{6, 4}, WhiteV4);
|
DrawString(Interface->RenderBuffer, TempString, Interface->Style.Font, HeadMin + v2{6, 4}, WhiteV4, -1, GreenV4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Interaction
|
// Interaction
|
||||||
|
@ -686,11 +590,33 @@ FrameCount_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal bool
|
||||||
LayerList_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel* Panel, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
LayerList_DrawLayerButton (ui_interface* Interface, gs_string Name, rect2 Bounds, bool Selected)
|
||||||
{
|
{
|
||||||
|
bool Result = ui_MouseClickedRect(*Interface, Bounds);
|
||||||
|
v2 TextPos = { Bounds.Min.x + 6, Bounds.Max.y - 16};
|
||||||
|
|
||||||
|
v4 BoxColor = WhiteV4;
|
||||||
|
bool DrawBox = Selected;
|
||||||
|
if (PointIsInRect(Bounds, Interface->Mouse.Pos))
|
||||||
|
{
|
||||||
|
DrawBox = true;
|
||||||
|
BoxColor = PinkV4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DrawBox)
|
||||||
|
{
|
||||||
|
PushRenderBoundingBox2D(Interface->RenderBuffer, Bounds.Min, Bounds.Max, 1, BoxColor);
|
||||||
|
}
|
||||||
|
DrawString(Interface->RenderBuffer, Name, Interface->Style.Font, TextPos, WhiteV4, -1, GreenV4);
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
LayerList_Render(animation_timeline_state* TimelineState, animation* ActiveAnim, rect2 Bounds, panel* Panel, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
|
{
|
||||||
|
DEBUG_TRACK_FUNCTION;
|
||||||
ui_interface* Interface = &State->Interface;
|
ui_interface* Interface = &State->Interface;
|
||||||
animation ActiveAnim = *AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
|
||||||
|
|
||||||
ui_FillRect(Interface, Bounds, Interface->Style.PanelBG);
|
ui_FillRect(Interface, Bounds, Interface->Style.PanelBG);
|
||||||
|
|
||||||
|
@ -698,38 +624,84 @@ LayerList_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel* P
|
||||||
rect2 LayerBounds = {0};
|
rect2 LayerBounds = {0};
|
||||||
LayerBounds.Min = Bounds.Min;
|
LayerBounds.Min = Bounds.Min;
|
||||||
LayerBounds.Max = LayerBounds.Min + LayerDim;
|
LayerBounds.Max = LayerBounds.Min + LayerDim;
|
||||||
for (u32 i = 0; i < ActiveAnim.Layers.Count; i++)
|
|
||||||
{
|
|
||||||
anim_layer* Layer = ActiveAnim.Layers.Values + i;
|
|
||||||
|
|
||||||
if (ui_MouseClickedRect(*Interface, LayerBounds))
|
if (ActiveAnim)
|
||||||
|
{
|
||||||
|
v2 LayerTextPos = {};
|
||||||
|
for (s32 i = 0; i < (s32)ActiveAnim->Layers.Count; i++)
|
||||||
|
{
|
||||||
|
anim_layer* Layer = ActiveAnim->Layers.Values + i;
|
||||||
|
|
||||||
|
bool Selected = (TimelineState->SelectedAnimationLayer == i);
|
||||||
|
if (LayerList_DrawLayerButton(Interface, Layer->Name, LayerBounds, Selected))
|
||||||
{
|
{
|
||||||
TimelineState->SelectedAnimationLayer = i;
|
TimelineState->SelectedAnimationLayer = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
v2 LayerTextPos = { LayerBounds.Min.x + 6, LayerBounds.Max.y - 16};
|
|
||||||
if (TimelineState->SelectedAnimationLayer == i)
|
|
||||||
{
|
|
||||||
PushRenderBoundingBox2D(Interface->RenderBuffer, LayerBounds.Min, LayerBounds.Max, 1, WhiteV4);
|
|
||||||
}
|
|
||||||
DrawString(Interface->RenderBuffer, Layer->Name, Interface->Style.Font, LayerTextPos, WhiteV4);
|
|
||||||
|
|
||||||
LayerBounds = Rect2TranslateY(LayerBounds, LayerDim.y);
|
LayerBounds = Rect2TranslateY(LayerBounds, LayerDim.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (LayerList_DrawLayerButton(Interface, MakeString("+ Add Layer"), LayerBounds, false))
|
||||||
|
{
|
||||||
|
u32 NewLayer = Animation_AddLayer(ActiveAnim, MakeString("[New Layer]"), BlendMode_Add, &State->AnimationSystem);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
TimeRange_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
TimeRange_RenderBlock (rect2 BlockBounds, u32 BlockIndex, animation* ActiveAnim, handle SelectedBlockHandle, ui_interface* Interface, render_command_buffer* RenderBuffer)
|
||||||
{
|
{
|
||||||
|
v4 BlockColor = BlackV4;
|
||||||
|
if (SelectedBlockHandle.Index == BlockIndex && SelectedBlockHandle.Generation == ActiveAnim->Blocks_.Generations[BlockIndex])
|
||||||
|
{
|
||||||
|
BlockColor = TealV4;
|
||||||
|
}
|
||||||
|
|
||||||
|
PushRenderQuad2D(RenderBuffer, BlockBounds.Min, BlockBounds.Max, BlockColor);
|
||||||
|
PushRenderBoundingBox2D(RenderBuffer, BlockBounds.Min, BlockBounds.Max, 1, WhiteV4);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct block_bounds_lut_entry
|
||||||
|
{
|
||||||
|
rect2 Bounds;
|
||||||
|
u32 Index;
|
||||||
|
};
|
||||||
|
|
||||||
|
internal void
|
||||||
|
TimeRange_RenderBlockArray(block_bounds_lut_entry* Blocks, u32* LUT, u32 LUTCount, r32 HeightOffset, animation* ActiveAnim, handle SelectedBlockHandle, handle* DragBlockHandle, ui_interface* Interface, render_command_buffer* RenderBuffer)
|
||||||
|
{
|
||||||
|
for (u32 i = 0; i < LUTCount; i++)
|
||||||
|
{
|
||||||
|
u32 BlockBoundsIndex = LUT[i];
|
||||||
|
block_bounds_lut_entry Block = Blocks[BlockBoundsIndex];
|
||||||
|
Block.Bounds.Max.y += HeightOffset;
|
||||||
|
|
||||||
|
TimeRange_RenderBlock(Block.Bounds, Block.Index, ActiveAnim, SelectedBlockHandle, Interface, RenderBuffer);
|
||||||
|
|
||||||
|
if (PointIsInRect(Block.Bounds, Interface->Mouse.Pos))
|
||||||
|
{
|
||||||
|
DragBlockHandle->Index = Block.Index;
|
||||||
|
DragBlockHandle->Generation = ActiveAnim->Blocks_.Generations[Block.Index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
TimeRange_Render(animation_timeline_state* TimelineState, animation* ActiveAnim, rect2 Bounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
|
{
|
||||||
|
DEBUG_TRACK_FUNCTION;
|
||||||
|
|
||||||
ui_interface* Interface = &State->Interface;
|
ui_interface* Interface = &State->Interface;
|
||||||
animation ActiveAnim = *AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
|
||||||
|
|
||||||
// TODO(pjs): setting the timeline to show the entire range
|
// TODO(pjs): setting the timeline to show the entire range
|
||||||
// of the current animation until I reimplement the range
|
// of the current animation until I reimplement the range
|
||||||
// slider bars
|
// slider bars
|
||||||
// :FrameRange
|
// :FrameRange
|
||||||
// frame_range ViewRange = TimelineState->VisibleRange;
|
// frame_range ViewRange = TimelineState->VisibleRange;
|
||||||
frame_range ViewRange = ActiveAnim.PlayableRange;
|
frame_range ViewRange = {};
|
||||||
|
if (ActiveAnim)
|
||||||
|
{
|
||||||
|
ViewRange = ActiveAnim->PlayableRange;
|
||||||
|
}
|
||||||
|
|
||||||
handle SelectedBlockHandle = TimelineState->SelectedBlockHandle;
|
handle SelectedBlockHandle = TimelineState->SelectedBlockHandle;
|
||||||
s32 CurrentFrame = State->AnimationSystem.CurrentFrame;
|
s32 CurrentFrame = State->AnimationSystem.CurrentFrame;
|
||||||
|
@ -737,9 +709,27 @@ TimeRange_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_c
|
||||||
// Animation Blocks
|
// Animation Blocks
|
||||||
b32 MouseDownAndNotHandled = MouseButtonTransitionedDown(Interface->Mouse.LeftButtonState);
|
b32 MouseDownAndNotHandled = MouseButtonTransitionedDown(Interface->Mouse.LeftButtonState);
|
||||||
handle DragBlockHandle = {0};
|
handle DragBlockHandle = {0};
|
||||||
for (u32 i = 0; i < ActiveAnim.Blocks_.Count; i++)
|
if (ActiveAnim)
|
||||||
{
|
{
|
||||||
animation_block* AnimationBlockAt = ActiveAnim.Blocks_.Values + i;
|
u32 BlocksCountMax = ActiveAnim->Blocks_.Count;
|
||||||
|
u32 BlocksCount = 0;
|
||||||
|
block_bounds_lut_entry* Blocks = PushArray(State->Transient, block_bounds_lut_entry, BlocksCountMax);
|
||||||
|
|
||||||
|
u32 FrontBlocksCount = 0;
|
||||||
|
u32* FrontBlocks = PushArray(State->Transient, u32, BlocksCountMax);
|
||||||
|
u32 BackBlocksCount = 0;
|
||||||
|
u32* BackBlocks = PushArray(State->Transient, u32, BlocksCountMax);
|
||||||
|
|
||||||
|
for (u32 l = 0; l < ActiveAnim->Layers.Count; l++)
|
||||||
|
{
|
||||||
|
BlocksCount = 0;
|
||||||
|
FrontBlocksCount = 0;
|
||||||
|
BackBlocksCount = 0;
|
||||||
|
|
||||||
|
for (u32 i = 0; i < ActiveAnim->Blocks_.Count; i++)
|
||||||
|
{
|
||||||
|
animation_block* AnimationBlockAt = ActiveAnim->Blocks_.Values + i;
|
||||||
|
if (AnimationBlockAt->Layer != l) continue;
|
||||||
|
|
||||||
// If either end is in the range, we should draw it
|
// If either end is in the range, we should draw it
|
||||||
b32 RangeIsVisible = (FrameIsInRange(ViewRange, AnimationBlockAt->Range.Min) ||
|
b32 RangeIsVisible = (FrameIsInRange(ViewRange, AnimationBlockAt->Range.Min) ||
|
||||||
|
@ -748,21 +738,82 @@ TimeRange_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_c
|
||||||
// we should still draw it.
|
// we should still draw it.
|
||||||
RangeIsVisible |= (AnimationBlockAt->Range.Min <= ViewRange.Min &&
|
RangeIsVisible |= (AnimationBlockAt->Range.Min <= ViewRange.Min &&
|
||||||
AnimationBlockAt->Range.Max>= ViewRange.Max);
|
AnimationBlockAt->Range.Max>= ViewRange.Max);
|
||||||
if (RangeIsVisible)
|
if (!RangeIsVisible) continue;
|
||||||
{
|
|
||||||
v4 BlockColor = BlackV4;
|
|
||||||
if (SelectedBlockHandle.Index == i && SelectedBlockHandle.Generation == ActiveAnim.Blocks_.Generations[i])
|
|
||||||
{
|
|
||||||
BlockColor = PinkV4;
|
|
||||||
}
|
|
||||||
rect2 BlockBounds = DrawAnimationBlock(*AnimationBlockAt, BlockColor, ViewRange, Bounds, Interface->RenderBuffer);
|
|
||||||
|
|
||||||
if (PointIsInRect(BlockBounds, Interface->Mouse.Pos))
|
r32 TimelineWidth = Rect2Width(Bounds);
|
||||||
|
|
||||||
|
frame_range BlockAtRange = AnimationBlockAt->Range;
|
||||||
|
u32 ClampedBlockStartFrame = ClampFrameToRange(BlockAtRange.Min, ViewRange);
|
||||||
|
r32 StartFramePercent = FrameToPercentRange(ClampedBlockStartFrame, ViewRange);
|
||||||
|
r32 StartPosition = TimelineWidth * StartFramePercent;
|
||||||
|
|
||||||
|
u32 ClampedBlockEndFrame = ClampFrameToRange(BlockAtRange.Max, ViewRange);
|
||||||
|
r32 EndFramePercent = FrameToPercentRange(ClampedBlockEndFrame, ViewRange);
|
||||||
|
r32 EndPosition = TimelineWidth * EndFramePercent;
|
||||||
|
|
||||||
|
r32 LayerYOffset = LAYER_HEIGHT * AnimationBlockAt->Layer;
|
||||||
|
|
||||||
|
rect2 NewBlockBounds = {};
|
||||||
|
NewBlockBounds.Min = Bounds.Min + v2{StartPosition, LayerYOffset};
|
||||||
|
NewBlockBounds.Max = Bounds.Min + v2{EndPosition, LayerYOffset + LAYER_HEIGHT};
|
||||||
|
|
||||||
|
block_bounds_lut_entry NewBlock = {};
|
||||||
|
NewBlock.Bounds = NewBlockBounds;
|
||||||
|
NewBlock.Index = i;
|
||||||
|
|
||||||
|
// fast (implementation-wise) insert sort.
|
||||||
|
// TODO(PS): probably not great
|
||||||
|
for (u32 j = 0; j < BlocksCount; j++)
|
||||||
{
|
{
|
||||||
DragBlockHandle.Index = i;
|
if (Blocks[j].Bounds.Min.x > NewBlock.Bounds.Min.x)
|
||||||
DragBlockHandle.Generation = ActiveAnim.Blocks_.Generations[i];
|
{
|
||||||
|
block_bounds_lut_entry Old = Blocks[j];
|
||||||
|
Blocks[j] = NewBlock;
|
||||||
|
NewBlock = Old;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Blocks[BlocksCount++] = NewBlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BlockBounds are sorted by their render bounds from left to right
|
||||||
|
// This iterates over them to see if any on the same layer overlap, and if
|
||||||
|
// so, shrinks one of them, putting it in a new list
|
||||||
|
for (u32 i = 0; i < BlocksCount; i++)
|
||||||
|
{
|
||||||
|
if (i % 2 == 0)
|
||||||
|
{
|
||||||
|
BackBlocks[BackBlocksCount++] = i;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ShortCandidate = false;
|
||||||
|
block_bounds_lut_entry Block = Blocks[i];
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
block_bounds_lut_entry PrevBlock = Blocks[i - 1];
|
||||||
|
rect2 Union = Rect2Union(PrevBlock.Bounds, Block.Bounds);
|
||||||
|
ShortCandidate |= Rect2Width(Union) > 0;
|
||||||
|
}
|
||||||
|
if (i < BlocksCount - 1)
|
||||||
|
{
|
||||||
|
block_bounds_lut_entry NextBlock = Blocks[i + 1];
|
||||||
|
rect2 Union = Rect2Union(NextBlock.Bounds, Block.Bounds);
|
||||||
|
ShortCandidate |= Rect2Width(Union) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ShortCandidate)
|
||||||
|
{
|
||||||
|
FrontBlocks[FrontBlocksCount++] = i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BackBlocks[BackBlocksCount++] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeRange_RenderBlockArray(Blocks, BackBlocks, BackBlocksCount, 0, ActiveAnim, SelectedBlockHandle, &DragBlockHandle, Interface, RenderBuffer);
|
||||||
|
TimeRange_RenderBlockArray(Blocks, FrontBlocks, FrontBlocksCount, -15, ActiveAnim, SelectedBlockHandle, &DragBlockHandle, Interface, RenderBuffer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Time Slider
|
// Time Slider
|
||||||
|
@ -793,24 +844,64 @@ TimeRange_Render(animation_timeline_state* TimelineState, rect2 Bounds, render_c
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
AnimInfoView_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel* Panel, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
AnimInfoView_SaveAnimFile (gs_const_string Path, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
animation_system* AnimSystem = &State->AnimationSystem;
|
animation_handle ActiveAnimHandle = State->AnimationSystem.ActiveFadeGroup.From;
|
||||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(AnimSystem);
|
animation ActiveAnim = *AnimationArray_GetSafe(State->AnimationSystem.Animations, ActiveAnimHandle);
|
||||||
|
|
||||||
|
gs_string FileText = AnimSerializer_Serialize(ActiveAnim, State->Patterns, State->Transient);
|
||||||
|
|
||||||
|
if (!WriteEntireFile(Context.ThreadContext.FileHandler, Path, StringToData(FileText)))
|
||||||
|
{
|
||||||
|
InvalidCodePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PANEL_MODAL_OVERRIDE_CALLBACK(AnimInfoView_SaveAnimFileCallback)
|
||||||
|
{
|
||||||
|
Assert(ReturningFrom->TypeIndex == PanelType_FileView);
|
||||||
|
file_view_state* FileViewState = Panel_GetStateStruct(ReturningFrom, file_view_state);
|
||||||
|
gs_file_info FileInfo = FileViewState->SelectedFile;
|
||||||
|
|
||||||
|
AnimInfoView_SaveAnimFile(FileInfo.Path, State, Context);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
AnimationTimeline_SetActiveAnimation (animation_handle Handle, animation_timeline_state* TimelineState)
|
||||||
|
{
|
||||||
|
TimelineState->NextActiveAnim = Handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
AnimInfoView_Render(animation_timeline_state* TimelineState, animation* ActiveAnim, rect2 Bounds, panel* Panel, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
|
{
|
||||||
|
DEBUG_TRACK_FUNCTION;
|
||||||
|
animation_system* AnimSystem = &State->AnimationSystem;
|
||||||
|
|
||||||
|
animation_handle ActiveAnimHandle = State->AnimationSystem.ActiveFadeGroup.From;
|
||||||
ui_interface* Interface = &State->Interface;
|
ui_interface* Interface = &State->Interface;
|
||||||
ui_PushLayout(Interface, Bounds, LayoutDirection_TopDown, MakeString("AnimInfo Layout"));
|
ui_PushLayout(Interface, Bounds, LayoutDirection_TopDown, MakeString("AnimInfo Layout"), ActiveAnimHandle.Index);
|
||||||
|
|
||||||
ui_FillRect(&State->Interface, Bounds, Interface->Style.PanelBG);
|
ui_FillRect(&State->Interface, Bounds, Interface->Style.PanelBG);
|
||||||
|
|
||||||
if (ui_BeginLabeledDropdown(Interface, MakeString("Active Animation"), ActiveAnim->Name))
|
gs_string AnimName = {};
|
||||||
|
if (ActiveAnim)
|
||||||
|
{
|
||||||
|
AnimName = ActiveAnim->Name;
|
||||||
|
} else {
|
||||||
|
AnimName = MakeString("[None]");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ui_BeginLabeledDropdown(Interface, MakeString("Active Animation"), AnimName))
|
||||||
{
|
{
|
||||||
for (u32 i = 0; i < AnimSystem->Animations.Count; i++)
|
for (u32 i = 0; i < AnimSystem->Animations.Count; i++)
|
||||||
{
|
{
|
||||||
animation Animation = AnimSystem->Animations.Values[i];
|
animation Animation = AnimSystem->Animations.Values[i];
|
||||||
if (ui_Button(Interface, Animation.Name))
|
if (ui_Button(Interface, Animation.Name))
|
||||||
{
|
{
|
||||||
AnimSystem->ActiveAnimationIndex = i;
|
animation_handle NewHandle = {};
|
||||||
|
NewHandle.Index = i;
|
||||||
|
AnimationTimeline_SetActiveAnimation(NewHandle, TimelineState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -820,23 +911,31 @@ AnimInfoView_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel
|
||||||
{
|
{
|
||||||
if (ui_Button(Interface, MakeString("New")))
|
if (ui_Button(Interface, MakeString("New")))
|
||||||
{
|
{
|
||||||
animation NewAnim = {};
|
animation_desc Desc = {};
|
||||||
NewAnim.Name = PushString(State->AnimationSystem.Storage, 256);
|
Desc.NameSize = 256;
|
||||||
|
Desc.LayersCount = 8;
|
||||||
|
Desc.BlocksCount = 8;
|
||||||
|
Desc.MinFrames = 0;
|
||||||
|
Desc.MaxFrames = SecondsToFrames(15, State->AnimationSystem);
|
||||||
|
|
||||||
u32 NewAnimIndex = AnimationArray_Push(&State->AnimationSystem.Animations, NewAnim);
|
animation NewAnim = Animation_Create(Desc, &State->AnimationSystem);
|
||||||
State->AnimationSystem.ActiveAnimationIndex = NewAnimIndex;
|
animation_handle NewAnimHandle = AnimationArray_Push(&State->AnimationSystem.Animations, NewAnim);
|
||||||
|
AnimationTimeline_SetActiveAnimation(NewAnimHandle, TimelineState);
|
||||||
}
|
}
|
||||||
if (ui_Button(Interface, MakeString("Save")))
|
if (ActiveAnim && ui_Button(Interface, MakeString("Save")))
|
||||||
{
|
{
|
||||||
// Save Animation File
|
// Save Animation File
|
||||||
// TODO(pjs): If you created the animation via the "new" button, there won't be a file attached.
|
// TODO(pjs): If you created the animation via the "new" button, there won't be a file attached.
|
||||||
// need to use the file browser to create a file
|
// need to use the file browser to create a file
|
||||||
u32 ActiveAnimIndex = State->AnimationSystem.ActiveAnimationIndex;
|
animation ActiveAnimation = *AnimationArray_GetSafe(State->AnimationSystem.Animations, ActiveAnimHandle);
|
||||||
animation ActiveAnimation = State->AnimationSystem.Animations.Values[ActiveAnimIndex];
|
|
||||||
gs_string FileText = AnimSerializer_Serialize(ActiveAnimation, State->Patterns, State->Transient);
|
if (!ActiveAnimation.FileInfo.Path.Str)
|
||||||
if (WriteEntireFile(Context.ThreadContext.FileHandler, ActiveAnimation.FileInfo.Path, StringToData(FileText)))
|
|
||||||
{
|
{
|
||||||
InvalidCodePath;
|
panel* FileBrowser = PanelSystem_PushPanel(&State->PanelSystem, PanelType_FileView, State, Context);
|
||||||
|
FileView_SetMode(FileBrowser, FileViewMode_Save);
|
||||||
|
Panel_PushModalOverride(Panel, FileBrowser, AnimInfoView_SaveAnimFileCallback);
|
||||||
|
} else {
|
||||||
|
AnimInfoView_SaveAnimFile(ActiveAnimation.FileInfo.Path, State, Context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ui_Button(Interface, MakeString("Load")))
|
if (ui_Button(Interface, MakeString("Load")))
|
||||||
|
@ -848,6 +947,8 @@ AnimInfoView_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel
|
||||||
}
|
}
|
||||||
ui_EndRow(Interface);
|
ui_EndRow(Interface);
|
||||||
|
|
||||||
|
if (ActiveAnim)
|
||||||
|
{
|
||||||
ui_TextEntry(Interface, MakeString("Anim Name"), &ActiveAnim->Name);
|
ui_TextEntry(Interface, MakeString("Anim Name"), &ActiveAnim->Name);
|
||||||
|
|
||||||
ui_Label(Interface, MakeString("Frame Range"));
|
ui_Label(Interface, MakeString("Frame Range"));
|
||||||
|
@ -859,16 +960,44 @@ AnimInfoView_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel
|
||||||
}
|
}
|
||||||
ui_EndRow(Interface);
|
ui_EndRow(Interface);
|
||||||
|
|
||||||
|
ui_Label(Interface, MakeString("Layer"));
|
||||||
|
|
||||||
|
s32 LayerIndex = TimelineState->SelectedAnimationLayer;
|
||||||
|
anim_layer* SelectedLayer = 0;
|
||||||
|
if (LayerIndex >= 0)
|
||||||
|
{
|
||||||
|
SelectedLayer = ActiveAnim->Layers.Values + LayerIndex;
|
||||||
|
|
||||||
|
ui_TextEntry(Interface, MakeString("Layer Name"), &SelectedLayer->Name);
|
||||||
|
gs_string BlendStr = BlendModeStrings[SelectedLayer->BlendMode];
|
||||||
|
if (ui_BeginLabeledDropdown(Interface, MakeString("Blend Mode"), BlendStr))
|
||||||
|
{
|
||||||
|
for (u32 i = 0; i < BlendMode_Count; i++)
|
||||||
|
{
|
||||||
|
if (ui_Button(Interface, BlendModeStrings[i]))
|
||||||
|
{
|
||||||
|
SelectedLayer->BlendMode = (blend_mode)i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui_EndLabeledDropdown(Interface);
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_Label(Interface, MakeString("Pattern"));
|
||||||
|
|
||||||
animation_block* SelectedBlock = Animation_GetBlockFromHandle(ActiveAnim, TimelineState->SelectedBlockHandle);
|
animation_block* SelectedBlock = Animation_GetBlockFromHandle(ActiveAnim, TimelineState->SelectedBlockHandle);
|
||||||
if (SelectedBlock)
|
if (SelectedBlock)
|
||||||
{
|
{
|
||||||
animation_pattern BlockPattern = Patterns_GetPattern(State->Patterns, SelectedBlock->AnimationProcHandle);
|
animation_pattern BlockPattern = Patterns_GetPattern(State->Patterns, SelectedBlock->AnimationProcHandle);
|
||||||
|
|
||||||
ui_BeginRow(Interface, 3);
|
ui_BeginRow(Interface, 2);
|
||||||
ui_Label(Interface, MakeString("Selected Pattern"));
|
ui_Label(Interface, MakeString("Selected Pattern"));
|
||||||
//if (ui_BeginLabeledDropdown(Interface, MakeString("Selected Pattern"), MakeString(BlockPattern.Name, BlockPattern.NameLength)))
|
|
||||||
if (ui_BeginDropdown(Interface, MakeString(BlockPattern.Name, BlockPattern.NameLength)))
|
if (ui_BeginDropdown(Interface, MakeString(BlockPattern.Name, BlockPattern.NameLength)))
|
||||||
{
|
{
|
||||||
|
Interface->ActiveLayout->Bounds.Max.x += 128.0f;
|
||||||
|
Interface->ActiveLayout->Columns[0].XMax += 128.0f;
|
||||||
|
|
||||||
|
ui_BeginList(Interface, MakeString("Patterns List"), 5, State->Patterns.Count);
|
||||||
for (u32 i = 0; i < State->Patterns.Count; i++)
|
for (u32 i = 0; i < State->Patterns.Count; i++)
|
||||||
{
|
{
|
||||||
animation_pattern Pattern = State->Patterns.Values[i];
|
animation_pattern Pattern = State->Patterns.Values[i];
|
||||||
|
@ -877,10 +1006,16 @@ AnimInfoView_Render(animation_timeline_state* TimelineState, rect2 Bounds, panel
|
||||||
SelectedBlock->AnimationProcHandle = Patterns_IndexToHandle(i);
|
SelectedBlock->AnimationProcHandle = Patterns_IndexToHandle(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ui_EndList(Interface);
|
||||||
}
|
}
|
||||||
ui_EndLabeledDropdown(Interface);
|
ui_EndLabeledDropdown(Interface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ui_Button(Interface, MakeString("+ Add Block")))
|
||||||
|
{
|
||||||
|
AnimationTimeline_AddAnimationBlockCommand(TimelineState, State, Context);
|
||||||
|
}
|
||||||
|
}
|
||||||
ui_PopLayout(Interface, MakeString("AnimInfo Layout"));
|
ui_PopLayout(Interface, MakeString("AnimInfo Layout"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -895,8 +1030,20 @@ GSMetaTag(panel_type_animation_timeline);
|
||||||
internal void
|
internal void
|
||||||
AnimationTimeline_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
AnimationTimeline_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
|
DEBUG_TRACK_FUNCTION;
|
||||||
|
|
||||||
animation_timeline_state* TimelineState = Panel_GetStateStruct(Panel, animation_timeline_state);
|
animation_timeline_state* TimelineState = Panel_GetStateStruct(Panel, animation_timeline_state);
|
||||||
|
|
||||||
|
animation* ActiveAnim = 0;
|
||||||
|
animation_handle Handle = State->AnimationSystem.ActiveFadeGroup.From;
|
||||||
|
TimelineState->NextActiveAnim = Handle;
|
||||||
|
if (IsValid(Handle))
|
||||||
|
{
|
||||||
|
animation_array Animations = State->AnimationSystem.Animations;
|
||||||
|
ActiveAnim = AnimationArray_GetSafe(Animations, Handle);
|
||||||
|
TimelineState->EditingAnimationHandle = Handle;
|
||||||
|
}
|
||||||
|
|
||||||
ui_FillRect(&State->Interface, PanelBounds, v4{.1f,.1f,.1f,1.f});
|
ui_FillRect(&State->Interface, PanelBounds, v4{.1f,.1f,.1f,1.f});
|
||||||
|
|
||||||
rect2 TimelineBounds, InfoBounds;
|
rect2 TimelineBounds, InfoBounds;
|
||||||
|
@ -913,10 +1060,18 @@ AnimationTimeline_Render(panel* Panel, rect2 PanelBounds, render_command_buffer*
|
||||||
RectHSplitAtDistanceFromTop(TimeRangePanelBounds, TitleBarHeight, &FrameCountBounds, &TimeRangeBounds);
|
RectHSplitAtDistanceFromTop(TimeRangePanelBounds, TitleBarHeight, &FrameCountBounds, &TimeRangeBounds);
|
||||||
|
|
||||||
PlayBar_Render(TimelineState, PlayBarBounds, Panel, RenderBuffer, State, Context);
|
PlayBar_Render(TimelineState, PlayBarBounds, Panel, RenderBuffer, State, Context);
|
||||||
FrameCount_Render(TimelineState, FrameCountBounds, RenderBuffer, State, Context);
|
FrameCount_Render(TimelineState, ActiveAnim, FrameCountBounds, RenderBuffer, State, Context);
|
||||||
LayerList_Render(TimelineState, LayersBounds, Panel, RenderBuffer, State, Context);
|
LayerList_Render(TimelineState, ActiveAnim, LayersBounds, Panel, RenderBuffer, State, Context);
|
||||||
TimeRange_Render(TimelineState, TimeRangeBounds, RenderBuffer, State, Context);
|
TimeRange_Render(TimelineState, ActiveAnim, TimeRangeBounds, RenderBuffer, State, Context);
|
||||||
AnimInfoView_Render(TimelineState, InfoBounds, Panel, RenderBuffer, State, Context);
|
AnimInfoView_Render(TimelineState, ActiveAnim, InfoBounds, Panel, RenderBuffer, State, Context);
|
||||||
|
|
||||||
|
if (!AnimHandlesAreEqual(TimelineState->NextActiveAnim,
|
||||||
|
Handle))
|
||||||
|
{
|
||||||
|
State->AnimationSystem.ActiveFadeGroup.From = TimelineState->NextActiveAnim;
|
||||||
|
TimelineState->EditingAnimationHandle = TimelineState->NextActiveAnim;
|
||||||
|
TimelineState->SelectedAnimationLayer = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FOLDHAUS_PANEL_ANIMATION_TIMELINE_H
|
#define FOLDHAUS_PANEL_ANIMATION_TIMELINE_H
|
||||||
|
|
|
@ -43,8 +43,31 @@ AssemblyDebug_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* Ren
|
||||||
ui_interface* Interface = &State->Interface;
|
ui_interface* Interface = &State->Interface;
|
||||||
ui_PushLayout(Interface, PanelBounds, LayoutDirection_TopDown, MakeString("Assembly Debug Layout"));
|
ui_PushLayout(Interface, PanelBounds, LayoutDirection_TopDown, MakeString("Assembly Debug Layout"));
|
||||||
|
|
||||||
|
ui_BeginRow(Interface, 2);
|
||||||
|
{
|
||||||
|
if (ui_Button(Interface, MakeString("Assembly")))
|
||||||
|
{
|
||||||
|
State->ShowingUserSpaceDebug = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ui_Button(Interface, MakeString("User Space")))
|
||||||
|
{
|
||||||
|
State->ShowingUserSpaceDebug = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui_EndRow(Interface);
|
||||||
|
|
||||||
|
if (State->ShowingUserSpaceDebug && State->UserSpaceDesc.CustomDebugUI)
|
||||||
|
{
|
||||||
|
US_CustomDebugUI(&State->UserSpaceDesc, Panel, PanelBounds, RenderBuffer,
|
||||||
|
State, Context);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
InterfaceAssert(Interface->PerFrameMemory);
|
InterfaceAssert(Interface->PerFrameMemory);
|
||||||
|
|
||||||
|
State->AssemblyDebugState.AllAssemblies = ui_ToggleText(Interface, MakeString("All Assemblies"), State->AssemblyDebugState.AllAssemblies);
|
||||||
|
|
||||||
gs_string OverrideStr = MakeString(OverrideTypeStrings[State->AssemblyDebugState.Override]);
|
gs_string OverrideStr = MakeString(OverrideTypeStrings[State->AssemblyDebugState.Override]);
|
||||||
if (ui_BeginLabeledDropdown(Interface, MakeString("Override"), OverrideStr))
|
if (ui_BeginLabeledDropdown(Interface, MakeString("Override"), OverrideStr))
|
||||||
{
|
{
|
||||||
|
@ -85,12 +108,19 @@ AssemblyDebug_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* Ren
|
||||||
State->AssemblyDebugState.TargetChannel = FSC(Board, Strip);
|
State->AssemblyDebugState.TargetChannel = FSC(Board, Strip);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
case ADS_Override_AllOff:
|
||||||
case ADS_Override_AllRed:
|
case ADS_Override_AllRed:
|
||||||
case ADS_Override_AllGreen:
|
case ADS_Override_AllGreen:
|
||||||
case ADS_Override_AllBlue:
|
case ADS_Override_AllBlue:
|
||||||
case ADS_Override_AllWhite:
|
case ADS_Override_AllWhite:
|
||||||
{
|
{
|
||||||
State->AssemblyDebugState.Brightness = (u8)ui_LabeledRangeSlider(Interface, MakeString("Brightness"), (r32)State->AssemblyDebugState.Brightness, 0, 255);
|
State->AssemblyDebugState.Brightness = (u8)ui_LabeledRangeSlider(Interface, MakeString("Brightness"), (r32)State->AssemblyDebugState.Brightness, 0, 255);
|
||||||
|
State->AssemblyDebugState.TargetAssembly = ui_LabeledTextEntryU64(Interface, MakeString("Assembly"), State->AssemblyDebugState.TargetAssembly);
|
||||||
|
}break;
|
||||||
|
|
||||||
|
case ADS_Override_AllHue:
|
||||||
|
{
|
||||||
|
State->AssemblyDebugState.TargetHue = (u32)ui_LabeledRangeSlider(Interface, MakeString("Hue"), (r32)State->AssemblyDebugState.TargetHue, 0, 360);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -106,9 +136,9 @@ AssemblyDebug_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* Ren
|
||||||
InterfaceAssert(Interface->PerFrameMemory);
|
InterfaceAssert(Interface->PerFrameMemory);
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ui_RangeSlider(Interface, MakeString("Test"), .5f, 0, 1);
|
State->SendEmptyPackets = ui_LabeledToggle(Interface, MakeString("Send Empty Packets"), State->SendEmptyPackets);
|
||||||
|
|
||||||
ui_PopLayout(Interface, MakeString("Assembly Debug Layout"));
|
ui_PopLayout(Interface, MakeString("Assembly Debug Layout"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ struct file_view_state
|
||||||
file_view_mode Mode;
|
file_view_mode Mode;
|
||||||
|
|
||||||
gs_string WorkingDirectory;
|
gs_string WorkingDirectory;
|
||||||
|
gs_string DisplayDirectory;
|
||||||
|
|
||||||
gs_memory_arena FileNamesArena;
|
gs_memory_arena FileNamesArena;
|
||||||
gs_file_info_array FileNames;
|
gs_file_info_array FileNames;
|
||||||
|
|
||||||
|
@ -49,30 +51,34 @@ s32 FileView_CommandsCount = 0;
|
||||||
internal void
|
internal void
|
||||||
FileView_UpdateWorkingDirectory(gs_const_string WorkingDirectory, file_view_state* State, context Context)
|
FileView_UpdateWorkingDirectory(gs_const_string WorkingDirectory, file_view_state* State, context Context)
|
||||||
{
|
{
|
||||||
ClearArena(&State->FileNamesArena);
|
// NOTE(pjs): make sure we're only passing valid directory paths to the
|
||||||
|
// function
|
||||||
|
char LastChar = WorkingDirectory.Str[WorkingDirectory.Length - 1];
|
||||||
|
Assert(LastChar == '\\' || LastChar == '/');
|
||||||
|
MemoryArenaClear(&State->FileNamesArena);
|
||||||
|
|
||||||
gs_const_string SanitizedDirectory = WorkingDirectory;
|
|
||||||
|
|
||||||
u32 LastSlashIndex = FindLast(SanitizedDirectory, '\\');
|
gs_string SanitizedDir = PushString(Context.ThreadContext.Transient, WorkingDirectory.Length + 2);
|
||||||
gs_const_string LastDir = Substring(SanitizedDirectory, LastSlashIndex + 1, SanitizedDirectory.Length);
|
SanitizePath(WorkingDirectory, &SanitizedDir, Context.ThreadContext.Transient);
|
||||||
if (StringsEqual(LastDir, ConstString("..")))
|
if (SanitizedDir.Str[SanitizedDir.Length - 1] != '\\')
|
||||||
{
|
{
|
||||||
u32 SecondLastSlashIndex = FindLast(SanitizedDirectory, LastSlashIndex - 1, '\\');
|
AppendPrintF(&SanitizedDir, "\\");
|
||||||
SanitizedDirectory = Substring(SanitizedDirectory, 0, SecondLastSlashIndex);
|
|
||||||
}
|
|
||||||
else if (StringsEqual(LastDir, ConstString(".")) && LastDir.Length > 1)
|
|
||||||
{
|
|
||||||
SanitizedDirectory = Substring(SanitizedDirectory, 0, LastSlashIndex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gs_file_info NewWorkingDirectory = GetFileInfo(Context.ThreadContext.FileHandler, SanitizedDirectory);
|
gs_const_string SanitizedDisplayDir = SanitizedDir.ConstString;
|
||||||
if (NewWorkingDirectory.IsDirectory)
|
|
||||||
|
gs_file_info NewWorkingDir = GetFileInfo(Context.ThreadContext.FileHandler, SanitizedDir.ConstString);
|
||||||
|
if (NewWorkingDir.IsDirectory)
|
||||||
{
|
{
|
||||||
|
AppendPrintF(&SanitizedDir, "*");
|
||||||
|
NullTerminate(&SanitizedDir);
|
||||||
|
|
||||||
|
State->FileNames = EnumerateDirectory(Context.ThreadContext.FileHandler, &State->FileNamesArena, SanitizedDir.ConstString, EnumerateDirectory_IncludeDirectories);
|
||||||
|
|
||||||
// NOTE(pjs): we might be printing from State->WorkingDirectory to State->WorkingDirectory
|
// NOTE(pjs): we might be printing from State->WorkingDirectory to State->WorkingDirectory
|
||||||
// in some cases. Shouldn't be a problem but it is unnecessary
|
// in some cases. Shouldn't be a problem but it is unnecessary
|
||||||
PrintF(&State->WorkingDirectory, "%S", WorkingDirectory);
|
PrintF(&State->WorkingDirectory, "%S", SanitizedDir.ConstString);
|
||||||
|
PrintF(&State->DisplayDirectory, "%S", SanitizedDisplayDir);
|
||||||
State->FileNames = EnumerateDirectory(Context.ThreadContext.FileHandler, &State->FileNamesArena, State->WorkingDirectory.ConstString, EnumerateDirectory_IncludeDirectories);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,11 +90,13 @@ FileView_Init(panel* Panel, app_state* State, context Context)
|
||||||
// TODO: :FreePanelMemory
|
// TODO: :FreePanelMemory
|
||||||
file_view_state* FileViewState = PushStruct(&State->Permanent, file_view_state);
|
file_view_state* FileViewState = PushStruct(&State->Permanent, file_view_state);
|
||||||
Panel->StateMemory = StructToData(FileViewState, file_view_state);
|
Panel->StateMemory = StructToData(FileViewState, file_view_state);
|
||||||
FileViewState->FileNamesArena = CreateMemoryArena(Context.ThreadContext.Allocator);
|
FileViewState->FileNamesArena = MemoryArenaCreate(MB(4), Bytes(8), Context.ThreadContext.Allocator, 0, 0, "File View - File Names Arena");
|
||||||
|
|
||||||
// TODO(pjs): this shouldn't be stored in permanent
|
// TODO(pjs): this shouldn't be stored in permanent
|
||||||
FileViewState->WorkingDirectory = PushString(&State->Permanent, 256);
|
FileViewState->DisplayDirectory = PushString(&State->Permanent, 1024);
|
||||||
FileView_UpdateWorkingDirectory(ConstString("."), FileViewState, Context);
|
FileViewState->WorkingDirectory = PushString(&State->Permanent, 1024);
|
||||||
|
|
||||||
|
FileView_UpdateWorkingDirectory(ConstString(".\\"), FileViewState, Context);
|
||||||
}
|
}
|
||||||
|
|
||||||
GSMetaTag(panel_cleanup);
|
GSMetaTag(panel_cleanup);
|
||||||
|
@ -105,21 +113,37 @@ internal void
|
||||||
FileView_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
FileView_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
|
||||||
{
|
{
|
||||||
file_view_state* FileViewState = Panel_GetStateStruct(Panel, file_view_state);
|
file_view_state* FileViewState = Panel_GetStateStruct(Panel, file_view_state);
|
||||||
Assert(FileViewState->Mode == FileViewMode_Save);
|
|
||||||
|
|
||||||
ui_PushLayout(&State->Interface, PanelBounds, LayoutDirection_TopDown, MakeString("FileView Layout"));
|
ui_PushLayout(&State->Interface, PanelBounds, LayoutDirection_TopDown, MakeString("FileView Layout"));
|
||||||
{
|
{
|
||||||
|
ui_BeginRow(&State->Interface, 3);
|
||||||
|
{
|
||||||
|
if (FileViewState->Mode == FileViewMode_Save)
|
||||||
|
{
|
||||||
|
if (ui_Button(&State->Interface, MakeString("Save")))
|
||||||
|
{
|
||||||
|
if (!FileViewState->SelectedFile.Path.Str)
|
||||||
|
{
|
||||||
|
FileViewState->SelectedFile.Path = FileViewState->DisplayDirectory.ConstString;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileView_Exit_(Panel, State, Context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ui_Button(&State->Interface, MakeString("Exit")))
|
if (ui_Button(&State->Interface, MakeString("Exit")))
|
||||||
{
|
{
|
||||||
FileView_Exit_(Panel, State, Context);
|
FileView_Exit_(Panel, State, Context);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
ui_EndRow(&State->Interface);
|
||||||
|
|
||||||
// Header
|
// Header
|
||||||
if (ui_TextEntry(&State->Interface, MakeString("pwd"), &FileViewState->WorkingDirectory))
|
if (ui_TextEntry(&State->Interface, MakeString("pwd"), &FileViewState->DisplayDirectory))
|
||||||
{
|
{
|
||||||
// if last character is a slash, update pwd, and clear the filter string
|
// if last character is a slash, update pwd, and clear the filter string
|
||||||
// otherwise update the filter string
|
// otherwise update the filter string
|
||||||
gs_string Pwd = FileViewState->WorkingDirectory;
|
gs_string Pwd = FileViewState->DisplayDirectory;
|
||||||
char LastChar = Pwd.Str[Pwd.Length - 1];
|
char LastChar = Pwd.Str[Pwd.Length - 1];
|
||||||
if (LastChar == '\\' || LastChar == '/')
|
if (LastChar == '\\' || LastChar == '/')
|
||||||
{
|
{
|
||||||
|
@ -137,7 +161,7 @@ FileView_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBu
|
||||||
{
|
{
|
||||||
gs_file_info File = FileViewState->FileNames.Values[i];
|
gs_file_info File = FileViewState->FileNames.Values[i];
|
||||||
|
|
||||||
u32 LastSlashIndex = FindLast(File.Path, '\\');
|
u32 LastSlashIndex = FindLast(File.Path, File.Path.Length - 2, '\\');
|
||||||
gs_const_string FileName = Substring(File.Path, LastSlashIndex + 1, File.Path.Length);
|
gs_const_string FileName = Substring(File.Path, LastSlashIndex + 1, File.Path.Length);
|
||||||
gs_string PathString = PushString(State->Transient, FileName.Length);
|
gs_string PathString = PushString(State->Transient, FileName.Length);
|
||||||
PrintF(&PathString, "%S", FileName);
|
PrintF(&PathString, "%S", FileName);
|
||||||
|
@ -151,7 +175,18 @@ FileView_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBu
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FileViewState->SelectedFile = File;
|
FileViewState->SelectedFile = File;
|
||||||
|
switch (FileViewState->Mode)
|
||||||
|
{
|
||||||
|
case FileViewMode_Load:
|
||||||
|
{
|
||||||
FileView_Exit_(Panel, State, Context);
|
FileView_Exit_(Panel, State, Context);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FileViewMode_Save:
|
||||||
|
{
|
||||||
|
|
||||||
|
} break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ PANEL_MODAL_OVERRIDE_CALLBACK(LoadAssemblyCallback)
|
||||||
file_view_state* FileViewState = Panel_GetStateStruct(ReturningFrom, file_view_state);
|
file_view_state* FileViewState = Panel_GetStateStruct(ReturningFrom, file_view_state);
|
||||||
gs_file_info FileInfo = FileViewState->SelectedFile;
|
gs_file_info FileInfo = FileViewState->SelectedFile;
|
||||||
|
|
||||||
LoadAssembly(&State->Assemblies, &State->LedSystem, State->Transient, Context, FileInfo.Path, State->GlobalLog);
|
LoadAssembly(&State->Assemblies, &State->LedSystem, State->Transient, Context, FileInfo.Path, GlobalLogBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
GSMetaTag(panel_render);
|
GSMetaTag(panel_render);
|
||||||
|
@ -69,7 +69,7 @@ HierarchyView_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* Ren
|
||||||
if (ui_Button(&State->Interface, MakeString("+ Add Assembly")))
|
if (ui_Button(&State->Interface, MakeString("+ Add Assembly")))
|
||||||
{
|
{
|
||||||
panel* FileBrowser = PanelSystem_PushPanel(&State->PanelSystem, PanelType_FileView, State, Context);
|
panel* FileBrowser = PanelSystem_PushPanel(&State->PanelSystem, PanelType_FileView, State, Context);
|
||||||
FileView_SetMode(FileBrowser, FileViewMode_Save);
|
FileView_SetMode(FileBrowser, FileViewMode_Load);
|
||||||
Panel_PushModalOverride(Panel, FileBrowser, LoadAssemblyCallback);
|
Panel_PushModalOverride(Panel, FileBrowser, LoadAssemblyCallback);
|
||||||
}
|
}
|
||||||
ui_EndRow(&State->Interface);
|
ui_EndRow(&State->Interface);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue