From f2304db358a38c6f64cc563eddc9f0c7539937fb Mon Sep 17 00:00:00 2001 From: renderexpert Date: Fri, 10 Jan 2025 20:03:39 +0000 Subject: [PATCH 01/73] Add imGui shaders Signed-off-by: renderexpert --- data/vulkan_shaders/reflection.json | 2 +- data/vulkan_shaders/shaders_pack.spv | Bin 338652 -> 341244 bytes shaders/GL/imgui.fsh.glsl | 10 +++++++ shaders/GL/imgui.vsh.glsl | 19 +++++++++++++ shaders/GL/shader_index.txt | 1 + shaders/Metal/imgui.metal | 39 +++++++++++++++++++++++++++ shaders/gl_program_params.cpp | 10 +++++++ shaders/gl_program_params.hpp | 2 ++ shaders/metal_program_params.hpp | 2 ++ shaders/metal_program_params.mm | 7 +++++ shaders/metal_program_pool.mm | 1 + shaders/program_params.cpp | 1 + shaders/program_params.hpp | 10 +++++++ shaders/programs.hpp | 2 ++ shaders/vulkan_program_params.cpp | 7 +++++ shaders/vulkan_program_params.hpp | 2 ++ 16 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 shaders/GL/imgui.fsh.glsl create mode 100644 shaders/GL/imgui.vsh.glsl create mode 100644 shaders/Metal/imgui.metal diff --git a/data/vulkan_shaders/reflection.json b/data/vulkan_shaders/reflection.json index bca74ae8eb..b428a2a4eb 100644 --- a/data/vulkan_shaders/reflection.json +++ b/data/vulkan_shaders/reflection.json @@ -1 +1 @@ -[{"prg":0,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":0,"vs_size":3772,"fs_off":3772,"fs_size":2552},{"prg":1,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":6324,"vs_size":3412,"fs_off":9736,"fs_size":1508},{"prg":2,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":11244,"vs_size":3560,"fs_off":14804,"fs_size":1756},{"prg":3,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":16560,"vs_size":4468,"fs_off":21028,"fs_size":2508},{"prg":4,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":23536,"vs_size":4468,"fs_off":28004,"fs_size":2508},{"prg":5,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":30512,"vs_size":4440,"fs_off":34952,"fs_size":2084},{"prg":6,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":37036,"vs_size":3768,"fs_off":40804,"fs_size":2084},{"prg":7,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":42888,"vs_size":3104,"fs_off":45992,"fs_size":1992},{"prg":8,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":47984,"vs_size":3104,"fs_off":51088,"fs_size":1992},{"prg":9,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":53080,"vs_size":3352,"fs_off":56432,"fs_size":1336},{"prg":10,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":57768,"vs_size":3352,"fs_off":61120,"fs_size":1336},{"prg":11,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":62456,"vs_size":3692,"fs_off":66148,"fs_size":1904},{"prg":12,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":68052,"vs_size":2716,"fs_off":70768,"fs_size":1336},{"prg":13,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":72104,"vs_size":5084,"fs_off":77188,"fs_size":1332},{"prg":14,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":78520,"vs_size":5436,"fs_off":83956,"fs_size":1800},{"prg":15,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":85756,"vs_size":5452,"fs_off":91208,"fs_size":1828},{"prg":16,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":93036,"vs_size":3988,"fs_off":97024,"fs_size":1508},{"prg":17,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":98532,"vs_size":3352,"fs_off":101884,"fs_size":1336},{"prg":18,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":103220,"vs_size":3696,"fs_off":106916,"fs_size":2092},{"prg":19,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":109008,"vs_size":3516,"fs_off":112524,"fs_size":1716},{"prg":20,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":114240,"vs_size":1820,"fs_off":116060,"fs_size":1416},{"prg":21,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":117476,"vs_size":2064,"fs_off":119540,"fs_size":1416},{"prg":22,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":120956,"vs_size":3640,"fs_off":124596,"fs_size":1540},{"prg":23,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":126136,"vs_size":4140,"fs_off":130276,"fs_size":1540},{"prg":24,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":131816,"vs_size":5812,"fs_off":137628,"fs_size":1868},{"prg":25,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":139496,"vs_size":4976,"fs_off":144472,"fs_size":832},{"prg":26,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":145304,"vs_size":4440,"fs_off":149744,"fs_size":1984},{"prg":27,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":151728,"vs_size":5928,"fs_off":157656,"fs_size":4644},{"prg":28,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":162300,"vs_size":5928,"fs_off":168228,"fs_size":4240},{"prg":29,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":172468,"vs_size":5228,"fs_off":177696,"fs_size":2332},{"prg":30,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":180028,"vs_size":4772,"fs_off":184800,"fs_size":3332},{"prg":31,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":188132,"vs_size":3624,"fs_off":191756,"fs_size":2344},{"prg":32,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":194100,"vs_size":4468,"fs_off":198568,"fs_size":2508},{"prg":33,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":201076,"vs_size":4468,"fs_off":205544,"fs_size":2508},{"prg":34,"info":{"vs_uni":-1,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":208052,"vs_size":1104,"fs_off":209156,"fs_size":992},{"prg":35,"info":{"vs_uni":-1,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":210148,"vs_size":920,"fs_off":211068,"fs_size":1180},{"prg":36,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":212248,"vs_size":2044,"fs_off":214292,"fs_size":1904},{"prg":37,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":216196,"vs_size":2416,"fs_off":218612,"fs_size":1856},{"prg":38,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":220468,"vs_size":1880,"fs_off":222348,"fs_size":1628},{"prg":39,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":223976,"vs_size":1880,"fs_off":225856,"fs_size":1692},{"prg":40,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":227548,"vs_size":4280,"fs_off":231828,"fs_size":2552},{"prg":41,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":234380,"vs_size":4056,"fs_off":238436,"fs_size":1508},{"prg":42,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":239944,"vs_size":4204,"fs_off":244148,"fs_size":1756},{"prg":43,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":245904,"vs_size":4904,"fs_off":250808,"fs_size":2508},{"prg":44,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":253316,"vs_size":4904,"fs_off":258220,"fs_size":2508},{"prg":45,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":260728,"vs_size":4904,"fs_off":265632,"fs_size":2508},{"prg":46,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":268140,"vs_size":4904,"fs_off":273044,"fs_size":2508},{"prg":47,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":275552,"vs_size":4928,"fs_off":280480,"fs_size":2084},{"prg":48,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":282564,"vs_size":4412,"fs_off":286976,"fs_size":2084},{"prg":49,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":289060,"vs_size":6368,"fs_off":295428,"fs_size":3820},{"prg":50,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":299248,"vs_size":3492,"fs_off":302740,"fs_size":1616},{"prg":51,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":304356,"vs_size":5984,"fs_off":310340,"fs_size":2428},{"prg":52,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":312768,"vs_size":1924,"fs_off":314692,"fs_size":4236},{"prg":53,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_smaaArea","idx":2,"frag":1},{"name":"u_smaaSearch","idx":3,"frag":1}]},"vs_off":318928,"vs_size":2300,"fs_off":321228,"fs_size":12356},{"prg":54,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_blendingWeightTex","idx":2,"frag":1}]},"vs_off":333584,"vs_size":1372,"fs_off":334956,"fs_size":3696}] \ No newline at end of file +[{"prg":0,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":0,"vs_size":3772,"fs_off":3772,"fs_size":2552},{"prg":1,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":6324,"vs_size":3412,"fs_off":9736,"fs_size":1508},{"prg":2,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":11244,"vs_size":3560,"fs_off":14804,"fs_size":1756},{"prg":3,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":16560,"vs_size":4468,"fs_off":21028,"fs_size":2508},{"prg":4,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":23536,"vs_size":4468,"fs_off":28004,"fs_size":2508},{"prg":5,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":30512,"vs_size":4440,"fs_off":34952,"fs_size":2084},{"prg":6,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":37036,"vs_size":3768,"fs_off":40804,"fs_size":2084},{"prg":7,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":42888,"vs_size":3104,"fs_off":45992,"fs_size":1992},{"prg":8,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":47984,"vs_size":3104,"fs_off":51088,"fs_size":1992},{"prg":9,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":53080,"vs_size":3352,"fs_off":56432,"fs_size":1336},{"prg":10,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":57768,"vs_size":3352,"fs_off":61120,"fs_size":1336},{"prg":11,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":62456,"vs_size":3692,"fs_off":66148,"fs_size":1904},{"prg":12,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":68052,"vs_size":2716,"fs_off":70768,"fs_size":1336},{"prg":13,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":72104,"vs_size":5084,"fs_off":77188,"fs_size":1332},{"prg":14,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":78520,"vs_size":5436,"fs_off":83956,"fs_size":1800},{"prg":15,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":85756,"vs_size":5452,"fs_off":91208,"fs_size":1828},{"prg":16,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":93036,"vs_size":3988,"fs_off":97024,"fs_size":1508},{"prg":17,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":98532,"vs_size":3352,"fs_off":101884,"fs_size":1336},{"prg":18,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":103220,"vs_size":3696,"fs_off":106916,"fs_size":2092},{"prg":19,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":109008,"vs_size":3516,"fs_off":112524,"fs_size":1716},{"prg":20,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":114240,"vs_size":1820,"fs_off":116060,"fs_size":1416},{"prg":21,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":117476,"vs_size":2064,"fs_off":119540,"fs_size":1416},{"prg":22,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":120956,"vs_size":3640,"fs_off":124596,"fs_size":1540},{"prg":23,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":126136,"vs_size":4140,"fs_off":130276,"fs_size":1540},{"prg":24,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":131816,"vs_size":5812,"fs_off":137628,"fs_size":1868},{"prg":25,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":139496,"vs_size":4976,"fs_off":144472,"fs_size":832},{"prg":26,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":145304,"vs_size":4440,"fs_off":149744,"fs_size":1984},{"prg":27,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":151728,"vs_size":5928,"fs_off":157656,"fs_size":4644},{"prg":28,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":162300,"vs_size":5928,"fs_off":168228,"fs_size":4240},{"prg":29,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":172468,"vs_size":5228,"fs_off":177696,"fs_size":2332},{"prg":30,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":180028,"vs_size":4772,"fs_off":184800,"fs_size":3332},{"prg":31,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":188132,"vs_size":3624,"fs_off":191756,"fs_size":2344},{"prg":32,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":194100,"vs_size":4468,"fs_off":198568,"fs_size":2508},{"prg":33,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":201076,"vs_size":4468,"fs_off":205544,"fs_size":2508},{"prg":34,"info":{"vs_uni":-1,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":208052,"vs_size":1104,"fs_off":209156,"fs_size":992},{"prg":35,"info":{"vs_uni":-1,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":210148,"vs_size":920,"fs_off":211068,"fs_size":1180},{"prg":36,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":212248,"vs_size":2044,"fs_off":214292,"fs_size":1904},{"prg":37,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":216196,"vs_size":2416,"fs_off":218612,"fs_size":1856},{"prg":38,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":220468,"vs_size":1880,"fs_off":222348,"fs_size":1628},{"prg":39,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":223976,"vs_size":1880,"fs_off":225856,"fs_size":1692},{"prg":40,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0}],"fs_uni":0},"vs_off":227548,"vs_size":4280,"fs_off":231828,"fs_size":2552},{"prg":41,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":234380,"vs_size":4056,"fs_off":238436,"fs_size":1508},{"prg":42,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":239944,"vs_size":4204,"fs_off":244148,"fs_size":1756},{"prg":43,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":245904,"vs_size":4904,"fs_off":250808,"fs_size":2508},{"prg":44,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":253316,"vs_size":4904,"fs_off":258220,"fs_size":2508},{"prg":45,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":260728,"vs_size":4904,"fs_off":265632,"fs_size":2508},{"prg":46,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":268140,"vs_size":4904,"fs_off":273044,"fs_size":2508},{"prg":47,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":275552,"vs_size":4928,"fs_off":280480,"fs_size":2084},{"prg":48,"info":{"vs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":0},{"name":"u_maskTex","idx":2,"frag":1}],"fs_uni":0},"vs_off":282564,"vs_size":4412,"fs_off":286976,"fs_size":2084},{"prg":49,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_maskTex","idx":2,"frag":1}]},"vs_off":289060,"vs_size":6368,"fs_off":295428,"fs_size":3820},{"prg":50,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":299248,"vs_size":3492,"fs_off":302740,"fs_size":1616},{"prg":51,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":304356,"vs_size":5984,"fs_off":310340,"fs_size":2428},{"prg":52,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":312768,"vs_size":1924,"fs_off":314692,"fs_size":4236},{"prg":53,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_smaaArea","idx":2,"frag":1},{"name":"u_smaaSearch","idx":3,"frag":1}]},"vs_off":318928,"vs_size":2300,"fs_off":321228,"fs_size":12356},{"prg":54,"info":{"vs_uni":0,"fs_uni":0,"tex":[{"name":"u_colorTex","idx":1,"frag":1},{"name":"u_blendingWeightTex","idx":2,"frag":1}]},"vs_off":333584,"vs_size":1372,"fs_off":334956,"fs_size":3696},{"prg":55,"info":{"vs_uni":0,"fs_uni":-1,"tex":[{"name":"u_colorTex","idx":1,"frag":1}]},"vs_off":338652,"vs_size":1700,"fs_off":340352,"fs_size":892}] \ No newline at end of file diff --git a/data/vulkan_shaders/shaders_pack.spv b/data/vulkan_shaders/shaders_pack.spv index 2e8dcdff7c0c64cc2d500cef5459aa409ab63e9d..ac7f25de5b3e6a87c72af7f9194ece320d2b3d63 100644 GIT binary patch delta 1161 zcmZ8hO-xfk5Z--nAH|>6w#&1nMQlYyDJm#b5>%`|5xr1M^khPaNMfQ^K#eDXq(*Ow zFJTish(-_IJb3Zs!5E{#8|tN(MlU8_Ffs9f#_xOdVd6GlXXl&Qnc10bD<2z{zBNph zW!Wm*W%a_Tw0YliYt3a#=FN>)R@_}BgjfTt17d&+B)!GkCG$0h!9 zK`~nxr~~NI0BIXpu=S*ktqW?sZ(2T?tLX`FT)og&LnZ-6rk$Zu09T-=eQl~Q3HwIu znNk7G!uD@Sj_I?IY)VE5^Eu^&y)*MsMWczvRnrmao0MpSWO+=*6x$$o0X!P$yRoNF zP(mJitUlB6T6UPZ_bTZXU#dw~5(hYv1319LiWyy2Fb;VzsQU@O2N~_{n!?Y)H8TsA z4zc<8m70flr0XrT7ENVNMa{1tcEo%dl@YU4kq1rjv6}OrI6K2Jgv`tdsb`Pd^`?@y p+VAE1P3DQJpZ%iLKK@nwKi-?T2*=G)@xgQKtd>=g`;DkQz+Zv%i%S3i delta 19 acmezKQsmB6k%kt=7N!>F7M3lnceDUq=Li@8 diff --git a/shaders/GL/imgui.fsh.glsl b/shaders/GL/imgui.fsh.glsl new file mode 100644 index 0000000000..4c4fcb13ff --- /dev/null +++ b/shaders/GL/imgui.fsh.glsl @@ -0,0 +1,10 @@ +varying vec2 v_texCoords; +varying vec4 v_color; + +uniform sampler2D u_colorTex; + +void main() +{ + LOW_P vec4 color = texture2D(u_colorTex, v_texCoords); + gl_FragColor = color * v_color; +} diff --git a/shaders/GL/imgui.vsh.glsl b/shaders/GL/imgui.vsh.glsl new file mode 100644 index 0000000000..977894c4ff --- /dev/null +++ b/shaders/GL/imgui.vsh.glsl @@ -0,0 +1,19 @@ +attribute vec2 a_position; +attribute vec2 a_texCoords; +attribute vec4 a_color; + +varying vec2 v_texCoords; +varying vec4 v_color; + +uniform mat4 u_projection; + +void main() +{ + v_texCoords = a_texCoords; + v_color = a_color; + gl_Position = vec4(a_position, 0, 1) * u_projection; +#ifdef VULKAN + gl_Position.y = -gl_Position.y; + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; +#endif +} diff --git a/shaders/GL/shader_index.txt b/shaders/GL/shader_index.txt index 6103d27589..9decc59502 100644 --- a/shaders/GL/shader_index.txt +++ b/shaders/GL/shader_index.txt @@ -53,3 +53,4 @@ TrafficCircle traffic_circle.vsh.glsl traffic_circle.fsh.glsl SmaaEdges smaa_edges.vsh.glsl smaa_edges.fsh.glsl SmaaBlendingWeight smaa_blending_weight.vsh.glsl smaa_blending_weight.fsh.glsl SmaaFinal smaa_final.vsh.glsl smaa_final.fsh.glsl +ImGui imgui.vsh.glsl imgui.fsh.glsl diff --git a/shaders/Metal/imgui.metal b/shaders/Metal/imgui.metal new file mode 100644 index 0000000000..932fb5ca9a --- /dev/null +++ b/shaders/Metal/imgui.metal @@ -0,0 +1,39 @@ +#include +#include +using namespace metal; + +typedef struct +{ + float2 a_position [[attribute(0)]]; + float2 a_texCoords [[attribute(1)]]; + float4 a_color [[attribute(2)]]; +} Vertex_T; + +typedef struct +{ + float4 position [[position]]; + float2 texCoords; + float4 color; +} Fragment_T; + +typedef struct +{ + float4x4 u_projection; +} Uniforms_T; + +vertex Fragment_T vsImGui(const Vertex_T in [[stage_in]], + constant Uniforms_T & uniforms [[buffer(1)]]) +{ + Fragment_T out; + out.position = float4(in.a_position, 0.0, 1.0) * uniforms.u_projection; + out.texCoords = in.a_texCoords; + out.color = in.a_color; + return out; +} + +fragment float4 fsImGui(const Fragment_T in [[stage_in]], + texture2d u_colorTex [[texture(0)]], + sampler u_colorTexSampler [[sampler(0)]]) +{ + return in.color * u_colorTex.sample(u_colorTexSampler, in.texCoords); +} diff --git a/shaders/gl_program_params.cpp b/shaders/gl_program_params.cpp index 59f13ea7dc..cf372db3e6 100644 --- a/shaders/gl_program_params.cpp +++ b/shaders/gl_program_params.cpp @@ -230,4 +230,14 @@ void GLProgramParamsSetter::Apply(ref_ptr context, Parameter::CheckApply(guard, "u_framebufferMetrics", params.m_framebufferMetrics); } + +void GLProgramParamsSetter::Apply(ref_ptr context, + ref_ptr program, + ImGuiProgramParams const & params) +{ + UNUSED_VALUE(context); + UniformsGuard guard(program, params); + + Parameter::CheckApply(guard, "u_projection", params.m_projection); +} } // namespace gpu diff --git a/shaders/gl_program_params.hpp b/shaders/gl_program_params.hpp index 2ce8fe028d..20626abdc7 100644 --- a/shaders/gl_program_params.hpp +++ b/shaders/gl_program_params.hpp @@ -29,5 +29,7 @@ public: ref_ptr program, ScreenQuadProgramParams const & params) override; void Apply(ref_ptr context, ref_ptr program, SMAAProgramParams const & params) override; + void Apply(ref_ptr context, + ref_ptr program, ImGuiProgramParams const & params) override; }; } // namespace gpu diff --git a/shaders/metal_program_params.hpp b/shaders/metal_program_params.hpp index 4134e770b0..fa0cc09752 100644 --- a/shaders/metal_program_params.hpp +++ b/shaders/metal_program_params.hpp @@ -31,6 +31,8 @@ public: ScreenQuadProgramParams const & params) override; void Apply(ref_ptr context, ref_ptr program, SMAAProgramParams const & params) override; + void Apply(ref_ptr context, ref_ptr program, + ImGuiProgramParams const & params) override; }; } // namespace metal } // namespace gpu diff --git a/shaders/metal_program_params.mm b/shaders/metal_program_params.mm index d5da8217d7..d63396d258 100644 --- a/shaders/metal_program_params.mm +++ b/shaders/metal_program_params.mm @@ -101,5 +101,12 @@ void MetalProgramParamsSetter::Apply(ref_ptr context, { ApplyBytes(context, program, params); } + +void MetalProgramParamsSetter::Apply(ref_ptr context, + ref_ptr program, + ImGuiProgramParams const & params) +{ + ApplyBytes(context, program, params); +} } // namespace metal } // namespace gpu diff --git a/shaders/metal_program_pool.mm b/shaders/metal_program_pool.mm index 11dca8c56f..9926082ba4 100644 --- a/shaders/metal_program_pool.mm +++ b/shaders/metal_program_pool.mm @@ -102,6 +102,7 @@ std::array(Program::ProgramsCount)> const kMeta ProgramInfo("vsSmaaEdges", "fsSmaaEdges", {{0, 1}}), // SmaaEdges ProgramInfo("vsSmaaBlendingWeight", "fsSmaaBlendingWeight", {{0, 1}}), // SmaaBlendingWeight ProgramInfo("vsSmaaFinal", "fsSmaaFinal", {{0, 1}}), // SmaaFinal + ProgramInfo("vsImGui", "fsImGui", {{0, 2}}), // ImGui }}; MTLVertexFormat GetFormatByDataType(MTLDataType dataType) diff --git a/shaders/program_params.cpp b/shaders/program_params.cpp index e9119948f3..a774b2eec3 100644 --- a/shaders/program_params.cpp +++ b/shaders/program_params.cpp @@ -18,6 +18,7 @@ void ProgramParams::Init() DebugRectProgramParams::BindPrograms(m_boundParams); ScreenQuadProgramParams::BindPrograms(m_boundParams); SMAAProgramParams::BindPrograms(m_boundParams); + ImGuiProgramParams::BindPrograms(m_boundParams); } // static diff --git a/shaders/program_params.hpp b/shaders/program_params.hpp index c2bea7925a..fa17305b74 100644 --- a/shaders/program_params.hpp +++ b/shaders/program_params.hpp @@ -222,6 +222,14 @@ struct ALIGNMENT SMAAProgramParams Program::SmaaFinal) }; +struct ALIGNMENT ImGuiProgramParams +{ + glsl::mat4 m_projection; + + BIND_PROGRAMS(ImGuiProgramParams, + Program::ImGui) +}; + #undef ALIGNMENT class ProgramParamsSetter @@ -248,5 +256,7 @@ public: ref_ptr program, ScreenQuadProgramParams const & params) = 0; virtual void Apply(ref_ptr context, ref_ptr program, SMAAProgramParams const & params) = 0; + virtual void Apply(ref_ptr context, + ref_ptr program, ImGuiProgramParams const & params) = 0; }; } // namespace gpu diff --git a/shaders/programs.hpp b/shaders/programs.hpp index ca74e7a067..2804d29a06 100644 --- a/shaders/programs.hpp +++ b/shaders/programs.hpp @@ -65,6 +65,7 @@ enum class Program SmaaEdges, SmaaBlendingWeight, SmaaFinal, + ImGui, ProgramsCount }; @@ -128,6 +129,7 @@ inline std::string DebugPrint(Program p) case Program::SmaaEdges: return "SmaaEdges"; case Program::SmaaBlendingWeight: return "SmaaBlendingWeight"; case Program::SmaaFinal: return "SmaaFinal"; + case Program::ImGui: return "ImGui"; case Program::ProgramsCount: CHECK(false, ("Try to output ProgramsCount")); diff --git a/shaders/vulkan_program_params.cpp b/shaders/vulkan_program_params.cpp index a764e3a9e5..58dd83ffac 100644 --- a/shaders/vulkan_program_params.cpp +++ b/shaders/vulkan_program_params.cpp @@ -229,5 +229,12 @@ void VulkanProgramParamsSetter::Apply(ref_ptr context, { ApplyImpl(context, program, params); } + +void VulkanProgramParamsSetter::Apply(ref_ptr context, + ref_ptr program, + ImGuiProgramParams const & params) +{ + ApplyImpl(context, program, params); +} } // namespace vulkan } // namespace gpu diff --git a/shaders/vulkan_program_params.hpp b/shaders/vulkan_program_params.hpp index 91ab62f50b..25a2dcf8f9 100644 --- a/shaders/vulkan_program_params.hpp +++ b/shaders/vulkan_program_params.hpp @@ -55,6 +55,8 @@ public: ScreenQuadProgramParams const & params) override; void Apply(ref_ptr context, ref_ptr program, SMAAProgramParams const & params) override; + void Apply(ref_ptr context, ref_ptr program, + ImGuiProgramParams const & params) override; private: template -- 2.45.3 From 5e0b24302734ac05633b1c0b98c28a050136b7f7 Mon Sep 17 00:00:00 2001 From: renderexpert Date: Fri, 10 Jan 2025 19:56:37 +0000 Subject: [PATCH 02/73] Add glfw, imgui and cmake metal dependencies Signed-off-by: renderexpert --- .github/workflows/linux-check.yaml | 8 +++++ .gitmodules | 9 +++++ 3party/CMake-MetalShaderSupport | 1 + 3party/CMakeLists.txt | 14 ++++++++ 3party/glfw | 1 + 3party/imgui/CMakeLists.txt | 16 +++++++++ 3party/imgui/imgui | 1 + data/copyright.html | 57 ++++++++++++++++++++++++++++++ docs/INSTALL.md | 4 +++ 9 files changed, 111 insertions(+) create mode 160000 3party/CMake-MetalShaderSupport create mode 160000 3party/glfw create mode 100644 3party/imgui/CMakeLists.txt create mode 160000 3party/imgui/imgui diff --git a/.github/workflows/linux-check.yaml b/.github/workflows/linux-check.yaml index 17adeecbd2..bce6b20487 100644 --- a/.github/workflows/linux-check.yaml +++ b/.github/workflows/linux-check.yaml @@ -61,6 +61,10 @@ jobs: libgl1-mesa-dev \ libglvnd-dev \ libharfbuzz-dev \ + libxrandr-dev \ + libxinerama-dev \ + libxcursor-dev \ + libxi-dev \ qt6-base-dev \ libqt6svg6-dev \ qt6-positioning-dev \ @@ -128,6 +132,10 @@ jobs: libgl1-mesa-dev \ libglvnd-dev \ libharfbuzz-dev \ + libxrandr-dev \ + libxinerama-dev \ + libxcursor-dev \ + libxi-dev \ qt6-base-dev \ libqt6svg6-dev \ qt6-positioning-dev \ diff --git a/.gitmodules b/.gitmodules index 7d35fe8264..b059cf9425 100644 --- a/.gitmodules +++ b/.gitmodules @@ -59,3 +59,12 @@ [submodule "3party/utfcpp"] path = 3party/utfcpp url = https://github.com/nemtrif/utfcpp.git +[submodule "3party/glfw"] + path = 3party/glfw + url = https://github.com/glfw/glfw.git +[submodule "3party/CMake-MetalShaderSupport"] + path = 3party/CMake-MetalShaderSupport + url = https://github.com/dpogue/CMake-MetalShaderSupport.git +[submodule "3party/imgui/imgui"] + path = 3party/imgui/imgui + url = https://github.com/ocornut/imgui diff --git a/3party/CMake-MetalShaderSupport b/3party/CMake-MetalShaderSupport new file mode 160000 index 0000000000..989857d2e5 --- /dev/null +++ b/3party/CMake-MetalShaderSupport @@ -0,0 +1 @@ +Subproject commit 989857d2e5e54869c35ad06fb21a67d12a2dbc67 diff --git a/3party/CMakeLists.txt b/3party/CMakeLists.txt index 57d0592dc3..e232703b2c 100644 --- a/3party/CMakeLists.txt +++ b/3party/CMakeLists.txt @@ -66,4 +66,18 @@ add_subdirectory(vulkan_wrapper) if (PLATFORM_DESKTOP) add_subdirectory(libtess2) + + set(GLFW_BUILD_DOCS OFF CACHE BOOL "") + set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "") + set(GLFW_BUILD_TESTS OFF CACHE BOOL "") + set(GLFW_INSTALL OFF CACHE BOOL "") + set(GLFW_VULKAN_STATIC OFF CACHE BOOL "") + set(GLFW_BUILD_WAYLAND OFF CACHE BOOL "") + # Disable ARC for glfw and re-enable after it because it's globally set in the root CMakeLists.txt + set(CMAKE_OBJC_FLAGS "") + add_subdirectory(glfw) + set_target_properties(glfw PROPERTIES UNITY_BUILD OFF) + set(CMAKE_OBJC_FLAGS -fobjc-arc) + + add_subdirectory(imgui) endif() diff --git a/3party/glfw b/3party/glfw new file mode 160000 index 0000000000..21fea01161 --- /dev/null +++ b/3party/glfw @@ -0,0 +1 @@ +Subproject commit 21fea01161e0d6b70c0c5c1f52dc8e7a7df14a50 diff --git a/3party/imgui/CMakeLists.txt b/3party/imgui/CMakeLists.txt new file mode 100644 index 0000000000..ebbdde8c48 --- /dev/null +++ b/3party/imgui/CMakeLists.txt @@ -0,0 +1,16 @@ +project(imgui) + +set(SRC + imgui/imgui_draw.cpp + imgui/imgui_tables.cpp + imgui/imgui_widgets.cpp + imgui/imgui.cpp + imgui/backends/imgui_impl_glfw.cpp +) + +add_library(${PROJECT_NAME} ${SRC}) +target_include_directories(${PROJECT_NAME} + PRIVATE ${OMIM_ROOT}/3party/glfw/include + PUBLIC ${OMIM_ROOT}/3party/imgui/imgui + PUBLIC . +) diff --git a/3party/imgui/imgui b/3party/imgui/imgui new file mode 160000 index 0000000000..6982ce43f5 --- /dev/null +++ b/3party/imgui/imgui @@ -0,0 +1 @@ +Subproject commit 6982ce43f5b143c5dce5fab0ce07dd4867b705ae diff --git a/data/copyright.html b/data/copyright.html index b83b74ae60..c517a2b17c 100644 --- a/data/copyright.html +++ b/data/copyright.html @@ -155,6 +155,12 @@
  • Chromium's Courgette; BSD License
  • +
  • CMake Metal support files
    + © 2024 Darryl Pogue and Contributors;License
  • + +
  • Dear ImGui
    + © 2014-2025 Omar Cornut; MIT License
  • +
  • Expat
    © 1998–2000 Thai Open Source Software Center Ltd and Clark Cooper, © 2001–2019 Expat maintainers; MIT License
  • @@ -164,6 +170,9 @@
  • FreeType
    © 2013 The FreeType Project; FTL
  • +
  • GLFW
    + © 2002-2006 Marcus Geelnard;2006-2019 Camilla Löwy; Zlib License
  • +
  • GLM
    © 2005–2014 G-Truc Creation; MIT License
  • @@ -1058,6 +1067,54 @@ of the copyright holder.

    +
    + +

    CMake Metal support files

    +

    Copyright 2024 Darryl Pogue and Contributors

    +

    All rights reserved.

    + +

    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    + +

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

    + +

    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

    + +

    * Neither the name of Kitware, Inc. nor the names of Contributors may be used to endorse or promote products derived from this software without specific prior written permission.

    + +

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    + +

    ------------------------------------------------------------------------------

    + +

    See version control history for details of individual contributions.

    + +

    The above copyright and license notice applies to distributions of + CMake in source and binary form. Third-party software packages supplied + with CMake under compatible licenses provide their own copyright notices + documented in corresponding subdirectories or source files.

    + +

    ------------------------------------------------------------------------------

    + +

    CMake was initially developed by Kitware with the following sponsorship:

    + +

    * National Library of Medicine at the National Institutes of Health as part of the Insight Segmentation and Registration Toolkit (ITK).

    + +

    * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel Visualization Initiative.

    + +

    * National Alliance for Medical Image Computing (NAMIC) is funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149.

    + +

    * Kitware, Inc.

    +
    +

    The FreeType Project License

    diff --git a/docs/INSTALL.md b/docs/INSTALL.md index dc9375be16..281dfe84ad 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -115,6 +115,10 @@ sudo apt update && sudo apt install -y \ libqt6positioning6-plugins \ libqt6positioning6 \ libsqlite3-dev \ + libxrandr-dev \ + libxinerama-dev \ + libxcursor-dev \ + libxi-dev \ zlib1g-dev ``` -- 2.45.3 From 1ea96c406900bff00ade12784ef6d3dc547ce20f Mon Sep 17 00:00:00 2001 From: Konstantin Pastbin Date: Mon, 24 Feb 2025 19:08:48 +0700 Subject: [PATCH 03/73] [styles] Add captions to linear cliffs, city walls, embankments Signed-off-by: Konstantin Pastbin --- .../default/include/Basemap_label.mapcss | 19 +++++++++++++++++++ .../include/priorities_4_overlays.prio.txt | 6 ++++++ .../outdoors/include/Basemap_label.mapcss | 6 ++++++ .../include/priorities_4_overlays.prio.txt | 6 ++++++ 4 files changed, 37 insertions(+) diff --git a/data/styles/default/include/Basemap_label.mapcss b/data/styles/default/include/Basemap_label.mapcss index e5ecac4f97..b284c50099 100644 --- a/data/styles/default/include/Basemap_label.mapcss +++ b/data/styles/default/include/Basemap_label.mapcss @@ -496,6 +496,25 @@ node|z15-[natural=beach], area|z16-[leisure=beach_resort], {text: name; font-size: 10; text-color: @poi_label; text-offset: 1;} +/* Barriers, cliffs */ + +line[natural=cliff], +line[barrier=city_wall], +line[historic=citywalls], +line[man_made=embankment], +{text-position: line;} + +line|z16-[natural=cliff], +line|z16-[barrier=city_wall], +line|z16-[historic=citywalls], +line|z18-[man_made=embankment], +{text: name; font-size: 9; text-color: @label_light; text-halo-opacity: 0.8; text-halo-radius: 1; text-halo-color: @label_halo_medium;} +line|z18-[natural=cliff], +line|z18-[barrier=city_wall], +line|z18-[historic=citywalls], +line|z18-[man_made=embankment], +{font-size: 10;} + /* 6.WATER */ node|z1-[place=ocean], diff --git a/data/styles/default/include/priorities_4_overlays.prio.txt b/data/styles/default/include/priorities_4_overlays.prio.txt index 39c51a10f3..25fcb087d4 100644 --- a/data/styles/default/include/priorities_4_overlays.prio.txt +++ b/data/styles/default/include/priorities_4_overlays.prio.txt @@ -656,6 +656,10 @@ highway-tertiary-bridge::shield # shield::shield z13- (also highway-tertiary-tunnel::shield # shield::shield z13- (also has pathtext z12-, line z11-, line(casing) z16-) === 2960 +barrier-city_wall +historic-citywalls +=== 2957 + highway-residential::shield # shield::shield z15- (also has pathtext z13-, line z12-) highway-residential-area::shield # shield::shield z15- (also has pathtext z13-, line z12-) highway-residential-bridge::shield # shield::shield z15- (also has pathtext z13-, line z12-, line::bridgeblack z14-, line::bridgewhite z14-) @@ -998,6 +1002,7 @@ amenity-shelter-public_transport # icon z17- (also has captio emergency-lifeguard # icon z17- (also has caption(optional) z18-) leisure-fitness_station # icon z17- (also has caption(optional) z17-) leisure-playground # icon z17- (also has caption(optional) z17-, area z16-) +natural-cliff === 1500 sport-american_football # icon z17- (also has caption(optional) z17-) @@ -1157,6 +1162,7 @@ shop-wholesale # icon z18- (also has captio amenity-shower # icon z17- (also has caption(optional) z17-) amenity-toilets # icon z18- (also has caption(optional) z18-) +man_made-embankment office # icon z18- (also has caption(optional) z18-) shop # icon z18- (also has caption(optional) z18-) === 470 diff --git a/data/styles/outdoors/include/Basemap_label.mapcss b/data/styles/outdoors/include/Basemap_label.mapcss index d2b4b6edb0..f879434beb 100644 --- a/data/styles/outdoors/include/Basemap_label.mapcss +++ b/data/styles/outdoors/include/Basemap_label.mapcss @@ -1,6 +1,12 @@ /* Keep here changes of the base map style file only. */ @import("../../default/include/Basemap_label.mapcss"); +/* Barriers, cliffs */ + +line|z14-[natural=cliff], +{text: name; font-size: 11; text-color: @label_light; text-halo-opacity: 0.8; text-halo-radius: 1; text-halo-color: @label_halo_medium;} +line|z16-[natural=cliff], +{font-size: 12; text-color: @label_medium; text-halo-color: @label_halo_light;} /* 9. ISOLINES */ diff --git a/data/styles/outdoors/include/priorities_4_overlays.prio.txt b/data/styles/outdoors/include/priorities_4_overlays.prio.txt index 6dfc8b70c9..7723c53cd7 100644 --- a/data/styles/outdoors/include/priorities_4_overlays.prio.txt +++ b/data/styles/outdoors/include/priorities_4_overlays.prio.txt @@ -656,6 +656,10 @@ highway-tertiary-bridge::shield # shield::shield z13- (also highway-tertiary-tunnel::shield # shield::shield z13- (also has pathtext z12-, line z11-, line(casing) z16-) === 2960 +barrier-city_wall +historic-citywalls +=== 2957 + highway-residential::shield # shield::shield z15- (also has pathtext z13-, line z12-) highway-residential-area::shield # shield::shield z15- (also has pathtext z13-, line z12-) highway-residential-bridge::shield # shield::shield z15- (also has pathtext z13-, line z12-, line::bridgeblack z14-, line::bridgewhite z14-) @@ -998,6 +1002,7 @@ amenity-shelter-public_transport # icon z14- (also has captio emergency-lifeguard # icon z14- (also has caption(optional) z18-) leisure-fitness_station # icon z17- (also has caption(optional) z17-) leisure-playground # icon z17- (also has caption(optional) z17-, area z16-) +natural-cliff === 1500 sport-american_football # icon z17- (also has caption(optional) z17-) @@ -1157,6 +1162,7 @@ shop-wholesale # icon z18- (also has captio amenity-shower # icon z17- (also has caption(optional) z17-) amenity-toilets # icon z15- (also has caption(optional) z18-) +man_made-embankment office # icon z18- (also has caption(optional) z18-) shop # icon z18- (also has caption(optional) z18-) === 470 -- 2.45.3 From cf7a71b5907e4fe022b246942afd48e390a7229b Mon Sep 17 00:00:00 2001 From: Konstantin Pastbin Date: Mon, 24 Feb 2025 19:23:59 +0700 Subject: [PATCH 04/73] [styles] Add pathtexts to power lines Signed-off-by: Konstantin Pastbin --- data/styles/outdoors/include/Basemap_label.mapcss | 8 ++++++++ .../outdoors/include/priorities_4_overlays.prio.txt | 1 + 2 files changed, 9 insertions(+) diff --git a/data/styles/outdoors/include/Basemap_label.mapcss b/data/styles/outdoors/include/Basemap_label.mapcss index f879434beb..e158bcd2e5 100644 --- a/data/styles/outdoors/include/Basemap_label.mapcss +++ b/data/styles/outdoors/include/Basemap_label.mapcss @@ -8,6 +8,14 @@ line|z14-[natural=cliff], line|z16-[natural=cliff], {font-size: 12; text-color: @label_medium; text-halo-color: @label_halo_light;} +line[power=line], +{text-position: line;} +line|z15-[power=line], +{text: name; font-size: 10; text-color: @label_light; text-halo-opacity: 0.7; text-halo-radius: 1; text-halo-color: @label_halo_medium;} +line|z16-[power=line], +{font-size: 11;} + + /* 9. ISOLINES */ line[isoline] diff --git a/data/styles/outdoors/include/priorities_4_overlays.prio.txt b/data/styles/outdoors/include/priorities_4_overlays.prio.txt index 7723c53cd7..74068f4bef 100644 --- a/data/styles/outdoors/include/priorities_4_overlays.prio.txt +++ b/data/styles/outdoors/include/priorities_4_overlays.prio.txt @@ -1073,6 +1073,7 @@ natural-spring-drinking_water_no # icon z12- (also has captio isoline-step_10 # pathtext z16- (also has line z15-) isoline-zero # pathtext z15- (also has line z15-) +power-line === 1000 amenity-grave_yard # icon z17- (also has caption(optional) z17-, area z14-) -- 2.45.3 From b9d0138cd1c926c222f2f322b78f62fb1df2f284 Mon Sep 17 00:00:00 2001 From: Konstantin Pastbin Date: Mon, 24 Feb 2025 19:14:04 +0700 Subject: [PATCH 05/73] [styles] Regenerate for pathtexts Signed-off-by: Konstantin Pastbin --- data/drules_proto.bin | Bin 430538 -> 430898 bytes data/drules_proto.txt | 144 ++++++++++++ data/drules_proto_default_dark.bin | Bin 413840 -> 414200 bytes data/drules_proto_default_dark.txt | 144 ++++++++++++ data/drules_proto_default_light.bin | Bin 415197 -> 415557 bytes data/drules_proto_default_light.txt | 144 ++++++++++++ data/drules_proto_outdoors_dark.bin | Bin 432726 -> 433246 bytes data/drules_proto_outdoors_dark.txt | 208 ++++++++++++++++++ data/drules_proto_outdoors_light.bin | Bin 434194 -> 434714 bytes data/drules_proto_outdoors_light.txt | 208 ++++++++++++++++++ .../default/include/priorities_3_FG.prio.txt | 8 +- .../include/priorities_4_overlays.prio.txt | 8 +- .../outdoors/include/priorities_3_FG.prio.txt | 12 +- .../include/priorities_4_overlays.prio.txt | 10 +- 14 files changed, 867 insertions(+), 19 deletions(-) diff --git a/data/drules_proto.bin b/data/drules_proto.bin index 3e0b3a964072085508680308604df06c0701bb59..70b4c4df445e66ab7a89c236077692241cf45821 100644 GIT binary patch delta 583 zcmX@LSZdQUsSSk}n65KVF23Nw=r?)K1uHQtAue7HPJtsG6PYA#U*A5TS)x~5$Zzrw z+)^eNp}M#*bQR#1T657#1Z)?YuI6VKw?Dhcs1?R^gL%4;29qbF-}D#_CR`4iJ_C>3 z6}TLlB|?7F1vFu1V#@gd<*+(#dz&WH%znln(-n3y^)mWSU$>LVQUcQ#*O-NTIfSQg z*vVv$OI8Fdi^Y;_%-dskG5wHZI>$0S{3g>8pe-`Dm@Kix%N=eZ-|69aTnQCRsx*00mho9#bm*BfT`K* z(sr*)j9Ot#UznzsX)t+0Ot6CL2h%{^U>c|wL<4nNZTHh+n%U2|XZnksOudYj)5~@- zS+WROatKea*u`WHVu^rR+Y@&){g7jN#XLRw7SoaK1rM3j8QWLgVFF@iAZFRV>JDqi FHUK6SLGb_p diff --git a/data/drules_proto.txt b/data/drules_proto.txt index 5fb3a8f910..84305e5227 100644 --- a/data/drules_proto.txt +++ b/data/drules_proto.txt @@ -16053,6 +16053,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 9 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 17 @@ -16067,6 +16075,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 9 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 18 @@ -16081,6 +16097,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 19 @@ -16095,6 +16119,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 20 @@ -16109,6 +16141,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } } cont { @@ -44069,6 +44109,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 9 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 17 @@ -44083,6 +44131,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 9 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 18 @@ -44097,6 +44153,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 19 @@ -44111,6 +44175,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } element { scale: 20 @@ -44125,6 +44197,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 2957 + } } } cont { @@ -55893,6 +55973,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 470 + } } element { scale: 19 @@ -55907,6 +55995,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 470 + } } element { scale: 20 @@ -55921,6 +56017,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 470 + } } } cont { @@ -58611,6 +58715,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 9 + color: 4473924 + stroke_color: 871230427 + } + priority: 1500 + } } element { scale: 17 @@ -58625,6 +58737,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 9 + color: 4473924 + stroke_color: 871230427 + } + priority: 1500 + } } element { scale: 18 @@ -58639,6 +58759,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 1500 + } } element { scale: 19 @@ -58653,6 +58781,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 1500 + } } element { scale: 20 @@ -58667,6 +58803,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 4473924 + stroke_color: 871230427 + } + priority: 1500 + } } } cont { diff --git a/data/drules_proto_default_dark.bin b/data/drules_proto_default_dark.bin index 0613990dbcec173a0a3765925326d04a1f442ae6..dbc81ebb5eb2d2f54f5311d4687e82f682b02d1e 100644 GIT binary patch delta 593 zcmbQRQ1ZuO$qj3cFqu=zi>`WFC2bipcxOh1@1)iOm$t=;Z=*SFaiC%Fb zzv-MDcw{H%AGZ<%YvjVv*odSNQ+6*nryS;iS3Ff7!&N7ZZJ=8W@qw*xDjd* zRu|%u1G>*b;swNOXtn^o26Q1#*8|;WC4$Xo+rM)#m2@-yn4U9*sh81r`mZTWmJ*l> zuQ3bxatKfVGlj_c_$N&HU delta 195 zcmeydSaQNb$qj3cF@0v5yzZC>qt$dn4kinh1583z(;MNei*S}ACrq{w$YMIc)ZBVv zd+Q0t1be10Ow*sUGkHRcu!0%@rh(eQG*B~`25Pn1zMqq+q?>Wibd#w}y^NOA4^3sV zWD>HRE;tQBCjjZ~Yo{?uOE6BDesUdC_V)K%nA92D_itbVVrC#_*}i`RtK~ufI_5tp diff --git a/data/drules_proto_default_dark.txt b/data/drules_proto_default_dark.txt index cfab49fbb8..c292431800 100644 --- a/data/drules_proto_default_dark.txt +++ b/data/drules_proto_default_dark.txt @@ -15307,6 +15307,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 17 @@ -15321,6 +15329,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 18 @@ -15335,6 +15351,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 19 @@ -15349,6 +15373,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 20 @@ -15363,6 +15395,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } } cont { @@ -41542,6 +41582,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 17 @@ -41556,6 +41604,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 18 @@ -41570,6 +41626,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 19 @@ -41584,6 +41648,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 20 @@ -41598,6 +41670,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } } cont { @@ -53172,6 +53252,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 470 + } } element { scale: 19 @@ -53186,6 +53274,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 470 + } } element { scale: 20 @@ -53200,6 +53296,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 470 + } } } cont { @@ -55318,6 +55422,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } element { scale: 17 @@ -55332,6 +55444,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } element { scale: 18 @@ -55346,6 +55466,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } element { scale: 19 @@ -55360,6 +55488,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } element { scale: 20 @@ -55374,6 +55510,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } } cont { diff --git a/data/drules_proto_default_light.bin b/data/drules_proto_default_light.bin index 04fe60c5b6c176aeef791f3040cac0b0cdfbcc2f..0f7cc76ad354740a661ff2d8481f694e58b35ab6 100644 GIT binary patch delta 591 zcmcb+TJq>R$qgLGnXWTW<~r`d=r=j|xRscd5Em~8r@)bpiA)l=uWz5vEYT}2gr_7heTU;{CvI7B9Mp0E(XCfQtjVtefgMo(*|8_d&BFf)0AU1lNif(fVF z@JOCM4wuAm#ANmp7E(}SF(kn*G!w%vz1@bDX>u>)kLedCG4(R~PLG?+WQoP6*O-NT zIfSPtOlC62B`X4!#S#$Ln78vzVe*$?{4zau4O2GIl9)|QmRREF4!4l+^yzry?AOBd rp?DIkk9RXxhlAueM5gm^W-`a(v^(7G@76K_F*6XeY=5_w_5E@HamK^v delta 203 zcmX@QPV(+*$qgLGnLaa3<~r`dXf?fzg~@{D0F#i_^kZ-ap{P4u~hbI_4t(m?sP1j*z@`M;-1vLUp0}TMvKNkT}2u*2smSaRN*urqr2pRwCGRHM5=H&UT)0O9;~q=IMKsnLNQxvygZJ zu>+gqa7%)m2X#883nrX{Ys8d1bIw8xY9*TFb^}$WkbcG=(_6PN^)mZ%2u%;z%47}+ zIuxbXn1y_&`)y^il)&^SNRC4UtP@KpTw~sTXe$$kDpLpR^fR}Zav1HW|9QZqJ-zu6 zqcAhKkpFbehfLNmp6~RuhfJ2!58eXH`A%Pm!n*_Gv2p`#6rMiu4wE@TZT}spPDbwS zC+;w%ZW8EV;o>UDFHbGf&B@G56$+bf+t2JYU3nv;5X%d8p`huF{mga{zjDK4`vr>x oSnePmImQXN^*Q2^YXr(cLI};i_Wcu>ftUq|S-0<>z&4!|0Pq*{T>t<8 delta 275 zcmcb&L+aWVsSOj)GJR&6Jo&5#qt)a)XRVlotS0N615-5+>dZMS79lGRk;&)ISu|&z z-=1}zaZ3o(7pCb7DombWO%^OKAljgensZRbnR6CwAStkBGo}|z+kdDsh4eG-neMxl zsh81m`t7YumMlV+9KzG@Ze=nDu|&YE?Z>t;ai}u=VV-{BHdD^_?ng`$8MjB?V@la1 zFoBtit02ETwMaK7GcQ%hY5Lg-%uZ}Vb{qmiYSS-HU{;&%Kap941t=gm{rp5`8zv#U k>1QW0+kt4sNz8U284<8d`|(N4K+FQftlN)IVw=th0IStxuK)l5 diff --git a/data/drules_proto_outdoors_dark.txt b/data/drules_proto_outdoors_dark.txt index 372276a8a4..2d797f1462 100644 --- a/data/drules_proto_outdoors_dark.txt +++ b/data/drules_proto_outdoors_dark.txt @@ -15864,6 +15864,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 17 @@ -15878,6 +15886,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 18 @@ -15892,6 +15908,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 19 @@ -15906,6 +15930,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 20 @@ -15920,6 +15952,14 @@ cont { } priority: 320 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } } cont { @@ -43987,6 +44027,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 17 @@ -44001,6 +44049,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 9 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 18 @@ -44015,6 +44071,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 19 @@ -44029,6 +44093,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } element { scale: 20 @@ -44043,6 +44115,14 @@ cont { } priority: 360 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 2957 + } } } cont { @@ -55921,6 +56001,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 470 + } } element { scale: 19 @@ -55935,6 +56023,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 470 + } } element { scale: 20 @@ -55949,6 +56045,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 856756480 + } + priority: 470 + } } } cont { @@ -59118,6 +59222,14 @@ cont { priority: 100 cap: BUTTCAP } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } element { scale: 15 @@ -59133,6 +59245,14 @@ cont { priority: 100 cap: BUTTCAP } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 856756480 + } + priority: 1500 + } } element { scale: 16 @@ -59147,6 +59267,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 12 + color: 7829367 + stroke_color: 856032768 + } + priority: 1500 + } } element { scale: 17 @@ -59161,6 +59289,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 12 + color: 7829367 + stroke_color: 856032768 + } + priority: 1500 + } } element { scale: 18 @@ -59175,6 +59311,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 12 + color: 7829367 + stroke_color: 856032768 + } + priority: 1500 + } } element { scale: 19 @@ -59189,6 +59333,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 12 + color: 7829367 + stroke_color: 856032768 + } + priority: 1500 + } } element { scale: 20 @@ -59203,6 +59355,14 @@ cont { } priority: 100 } + path_text { + primary { + height: 12 + color: 7829367 + stroke_color: 856032768 + } + priority: 1500 + } } } cont { @@ -74231,6 +74391,14 @@ cont { priority: 350 cap: BUTTCAP } + path_text { + primary { + height: 10 + color: 6710886 + stroke_color: 1292964096 + } + priority: 1000 + } } element { scale: 16 @@ -74248,6 +74416,14 @@ cont { color: 2150839091 priority: 350 } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 1292964096 + } + priority: 1000 + } } element { scale: 17 @@ -74265,6 +74441,14 @@ cont { color: 1714631475 priority: 350 } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 1292964096 + } + priority: 1000 + } } element { scale: 18 @@ -74282,6 +74466,14 @@ cont { color: 1714631475 priority: 350 } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 1292964096 + } + priority: 1000 + } } element { scale: 19 @@ -74299,6 +74491,14 @@ cont { color: 1714631475 priority: 350 } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 1292964096 + } + priority: 1000 + } } element { scale: 20 @@ -74316,6 +74516,14 @@ cont { color: 1714631475 priority: 350 } + path_text { + primary { + height: 11 + color: 6710886 + stroke_color: 1292964096 + } + priority: 1000 + } } } cont { diff --git a/data/drules_proto_outdoors_light.bin b/data/drules_proto_outdoors_light.bin index f96035dfd4c08819ae3a78d2cfad5408feadce43..93f4a765500c5a9dbde5f97c8e733434f8305066 100644 GIT binary patch delta 738 zcmbPqKx)GF@k${Qj&5qu+FI1ttrL158#zT)Z5d0!KO~GD+ONzI{HkM6bAz z-}H8TvXeKQvl0Vq zm#;GlGjj|1PiK6$1j4&obbc$B|q zkpRo7PGPo#gad{ghtPEODaGJR&6{Qj&5qt*2F3QQI(2bhGcrvHbt{1sth^MNcjkSvGD^o5E{ zW=sc|nvb2|e(XHs+yJI8Ow&^pm^>kdSV4^d(?A2jG*G)03rw@cc3UN;@`;Rlrf=QM z)XQi&-FXX>C5wP Date: Fri, 10 Jan 2025 20:07:05 +0000 Subject: [PATCH 06/73] Add developer sandbox desktop app Signed-off-by: renderexpert --- 3party/CMakeLists.txt | 1 + CMakeLists.txt | 14 + dev_sandbox/CMakeLists.txt | 134 +++++++ dev_sandbox/imgui_renderer.cpp | 257 +++++++++++++ dev_sandbox/imgui_renderer.hpp | 72 ++++ dev_sandbox/main.cpp | 682 +++++++++++++++++++++++++++++++++ dev_sandbox/main.mm | 370 ++++++++++++++++++ dev_sandbox/main_linux.cpp | 411 ++++++++++++++++++++ docs/STRUCTURE.md | 1 + indexer/edit_journal.hpp | 1 + 10 files changed, 1943 insertions(+) create mode 100644 dev_sandbox/CMakeLists.txt create mode 100644 dev_sandbox/imgui_renderer.cpp create mode 100644 dev_sandbox/imgui_renderer.hpp create mode 100644 dev_sandbox/main.cpp create mode 100644 dev_sandbox/main.mm create mode 100644 dev_sandbox/main_linux.cpp diff --git a/3party/CMakeLists.txt b/3party/CMakeLists.txt index e232703b2c..d5635d56fb 100644 --- a/3party/CMakeLists.txt +++ b/3party/CMakeLists.txt @@ -77,6 +77,7 @@ if (PLATFORM_DESKTOP) set(CMAKE_OBJC_FLAGS "") add_subdirectory(glfw) set_target_properties(glfw PROPERTIES UNITY_BUILD OFF) + set_target_properties(glfw PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC NO) set(CMAKE_OBJC_FLAGS -fobjc-arc) add_subdirectory(imgui) diff --git a/CMakeLists.txt b/CMakeLists.txt index 95913ee8c2..40a056580b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,19 @@ else() message(FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME}") endif() +if(${PLATFORM_MAC}) + set(XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) + + # Metal language support + list(APPEND CMAKE_MODULE_PATH ${OMIM_ROOT}/3party/CMake-MetalShaderSupport/cmake) + include(CheckLanguage) + include(MetalShaderSupport) + check_language(Metal) + if(CMAKE_Metal_COMPILER) + enable_language(Metal) + endif() +endif() + # Sanitizer if (PLATFORM_DESKTOP) # https://clang.llvm.org/docs/UsersManual.html#controlling-code-generation @@ -384,6 +397,7 @@ if (PLATFORM_DESKTOP) add_subdirectory(qt) omim_add_tool_subdirectory(skin_generator) endif() + add_subdirectory(dev_sandbox) endif() omim_add_test_subdirectory(qt_tstfrm) diff --git a/dev_sandbox/CMakeLists.txt b/dev_sandbox/CMakeLists.txt new file mode 100644 index 0000000000..84d921caef --- /dev/null +++ b/dev_sandbox/CMakeLists.txt @@ -0,0 +1,134 @@ +project(dev_sandbox) + +set(SRC + main.cpp + imgui_renderer.cpp + imgui_renderer.hpp +) + +if (${PLATFORM_MAC}) + append(SRC + main.mm + ../iphone/Maps/Classes/MetalContextFactory.h + ../iphone/Maps/Classes/MetalContextFactory.mm + ) + + file(GLOB_RECURSE SHADER_SOURCES_FILES ${OMIM_ROOT}/shaders/Metal/*.metal) + add_metal_shader_library(shaders_metal + ${SHADER_SOURCES_FILES} + ) +endif() + +if (${PLATFORM_LINUX}) + append(SRC + main_linux.cpp + ) +endif() + +omim_add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${SRC}) + +target_link_libraries(${PROJECT_NAME} + generator # For borders::LoadBorders + map + gflags::gflags + glfw + imgui +) + +# Installing Vulkan SDK is optional, however without it Vulkan dynamic libraries +# should be discovered via system paths and validation layers may not be available +find_package(Vulkan QUIET) +if (Vulkan_FOUND) + message(STATUS "Vulkan found") + target_link_libraries(${PROJECT_NAME} Vulkan::Vulkan) +endif() + +if(PLATFORM_MAC) + target_embed_metal_shader_libraries(${PROJECT_NAME} shaders_metal) +endif() + +target_compile_definitions(${PROJECT_NAME} PUBLIC GL_SILENCE_DEPRECATION) +if (PLATFORM_MAC) + set_target_properties(${PROJECT_NAME} PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) +endif() + +if (PLATFORM_LINUX) + target_compile_definitions(${PROJECT_NAME} PRIVATE VK_USE_PLATFORM_XLIB_KHR) +endif() + +target_include_directories(${PROJECT_NAME} PUBLIC ${OMIM_ROOT}/3party/glfw/include) +target_include_directories(${PROJECT_NAME} PUBLIC ${OMIM_ROOT}/3party/imgui) + +set(BUNDLE_NAME "OMapsDevSandbox") +set(BUNDLE_DISPLAY_NAME "Organic Maps: Developer Sandbox") + +set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${BUNDLE_NAME}) + +set(BUNDLE_EXECUTABLE ${BUNDLE_NAME}) + +set(BUNDLE_FOLDER ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${BUNDLE_NAME}.app) +set(RESOURCES_FOLDER ${BUNDLE_FOLDER}/Contents/Resources) +set(DATA_DIR ${OMIM_ROOT}/data) + +execute_process( + COMMAND mkdir -p ${RESOURCES_FOLDER}/shaders_compiler +) + +function(copy_resources) + foreach(file ${ARGN}) + execute_process( + COMMAND cp -r ${DATA_DIR}/${file} ${RESOURCES_FOLDER} + ) + endforeach() +endfunction() + +copy_resources( + countries-strings + resources-default + resources-mdpi_light + resources-hdpi_light + resources-xhdpi_light + resources-xxhdpi_light + resources-xxxhdpi_light + resources-6plus_light + vulkan_shaders + + categories.txt + categories_cuisines.txt + classificator.txt + colors.txt + countries.txt + drules_proto_default_light.bin + drules_proto_default_dark.bin + drules_proto_vehicle_light.bin + drules_proto_vehicle_dark.bin + editor.config + fonts_blacklist.txt + fonts_whitelist.txt + packed_polygons.bin + patterns.txt + transit_colors.txt + types.txt + unicode_blocks.txt + World.mwm + WorldCoasts.mwm + + 00_NotoNaskhArabic-Regular.ttf + 00_NotoSansBengali-Regular.ttf + 00_NotoSansHebrew-Regular.ttf + 00_NotoSansMalayalam-Regular.ttf + 00_NotoSansThai-Regular.ttf + 00_NotoSerifDevanagari-Regular.ttf + 01_dejavusans.ttf + 02_droidsans-fallback.ttf + 03_jomolhari-id-a3d.ttf + 04_padauk.ttf + 05_khmeros.ttf + 06_code2000.ttf + 07_roboto_medium.ttf +) + +if (NOT PLATFORM_LINUX) + # On Linux, ICU data is loaded from the shared library. + copy_resources(icudt75l.dat) +endif() diff --git a/dev_sandbox/imgui_renderer.cpp b/dev_sandbox/imgui_renderer.cpp new file mode 100644 index 0000000000..689b2cb471 --- /dev/null +++ b/dev_sandbox/imgui_renderer.cpp @@ -0,0 +1,257 @@ +#include "imgui_renderer.hpp" + +#include "base/logging.hpp" +#include "base/macros.hpp" + +#include + +#include + +#include + +#include +#include + +ImguiRenderer::ImguiRenderer() + : m_state(df::CreateRenderState(gpu::Program::ImGui, df::DepthLayer::GuiLayer)) +{ + m_state.SetDepthTestEnabled(false); + m_state.SetBlending(dp::Blending(true)); +} + +void ImguiRenderer::Render(ref_ptr context, ref_ptr textureManager, + ref_ptr programManager) +{ + std::lock_guard lock(m_bufferMutex); + size_t renderDataIndex = (m_updateIndex + 1) % m_uiDataBuffer.size(); + UiDataBuffer & dataBuffer = m_uiDataBuffer[renderDataIndex]; + + auto gpuProgram = programManager->GetProgram(m_state.GetProgram()); + + bool needUpdate = true; + if (!m_mesh || dataBuffer.m_vertices.size() > m_vertexCount || dataBuffer.m_indices.size() > m_indexCount) + { + while (dataBuffer.m_vertices.size() > m_vertexCount) + m_vertexCount *= 2; + while (dataBuffer.m_indices.size() > m_indexCount) + m_indexCount *= 2; + m_indexCount = std::min(m_indexCount, static_cast(std::numeric_limits::max())); + + dataBuffer.m_vertices.resize(m_vertexCount); + dataBuffer.m_indices.resize(m_indexCount); + + m_mesh = make_unique_dp(context, dp::MeshObject::DrawPrimitive::Triangles, "imGui"); + + m_mesh->SetBuffer(0, std::move(dataBuffer.m_vertices)); + m_mesh->SetAttribute("a_position", 0, 0 /* offset */, 2); + m_mesh->SetAttribute("a_texCoords", 0, 2 * sizeof(float) /* offset */, 2); + m_mesh->SetAttribute("a_color", 0, 4 * sizeof(float) /* offset */, 4); + m_mesh->SetIndexBuffer(std::move(dataBuffer.m_indices)); + m_mesh->Build(context, gpuProgram); + + dataBuffer.m_vertices.clear(); + dataBuffer.m_indices.clear(); + needUpdate = false; + } + + if (!m_texture) + { + std::lock_guard lock(m_textureMutex); + if (!m_textureData.empty()) + { + m_texture = make_unique_dp(); + m_texture->Create(context, + dp::Texture::Params{ + .m_width = m_textureWidth, + .m_height = m_textureHeight, + .m_format = dp::TextureFormat::RGBA8, + .m_allocator = textureManager->GetTextureAllocator(), + }, + m_textureData.data()); + m_textureData.clear(); + m_state.SetColorTexture(make_ref(m_texture)); + } + else + { + // Can't render without texture. + return; + } + } + + if (dataBuffer.m_drawCalls.empty()) + return; + + if (needUpdate && !dataBuffer.m_vertices.empty() && !dataBuffer.m_indices.empty()) + { + m_mesh->UpdateBuffer(context, 0, dataBuffer.m_vertices); + m_mesh->UpdateIndexBuffer(context, dataBuffer.m_indices); + dataBuffer.m_vertices.clear(); + dataBuffer.m_indices.clear(); + } + + gpu::ImGuiProgramParams const params{.m_projection = m_projection}; + context->PushDebugLabel("ImGui Rendering"); + m_mesh->Render(context, gpuProgram, m_state, programManager->GetParamsSetter(), params, + [&, this]() + { + context->SetCullingEnabled(false); + for (auto const & drawCall : dataBuffer.m_drawCalls) + { + uint32_t y = drawCall.clipRect.y; + if (context->GetApiVersion() == dp::ApiVersion::OpenGLES3) + y = dataBuffer.m_height - y - drawCall.clipRect.w; + context->SetScissor(drawCall.clipRect.x, y, drawCall.clipRect.z, drawCall.clipRect.w); + m_mesh->DrawPrimitivesSubsetIndexed(context, drawCall.indexCount, drawCall.startIndex); + } + context->SetCullingEnabled(true); + context->SetScissor(0, 0, dataBuffer.m_width, dataBuffer.m_height); + }); + context->PopDebugLabel(); +} + +void ImguiRenderer::Update(std::function const & uiCallback) +{ + CHECK(uiCallback, ()); + ImGuiIO & io = ImGui::GetIO(); + if (!io.Fonts->IsBuilt()) + io.Fonts->Build(); + if (!m_texture) + UpdateTexture(); + + ImGui::NewFrame(); + uiCallback(); + ImGui::Render(); + UpdateBuffers(); +} + +void ImguiRenderer::Reset() +{ + { + std::lock_guard lock(m_textureMutex); + m_texture.reset(); + } + + { + std::lock_guard lock(m_bufferMutex); + m_mesh.reset(); + } +} + +void ImguiRenderer::UpdateTexture() +{ + std::lock_guard lock(m_textureMutex); + unsigned char * pixels; + int width, height; + ImGui::GetIO().Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); + + auto const sizeInBytes = width * height * sizeof(uint32_t); + m_textureData.resize(sizeInBytes); + memcpy(m_textureData.data(), pixels, sizeInBytes); + m_textureWidth = static_cast(width); + m_textureHeight = static_cast(height); +} + +void ImguiRenderer::UpdateBuffers() +{ + UiDataBuffer & dataBuffer = m_uiDataBuffer[m_updateIndex]; + dataBuffer.m_drawCalls.clear(); + + ImDrawData * dd = ImGui::GetDrawData(); + auto const fbWidth = static_cast(dd->DisplaySize.x * dd->FramebufferScale.x); + auto const fbHeight = static_cast(dd->DisplaySize.y * dd->FramebufferScale.y); + if (fbWidth <= 0 || fbHeight <= 0 || dd->CmdListsCount == 0 || dd->TotalIdxCount == 0 || dd->TotalVtxCount == 0) + return; + dataBuffer.m_width = static_cast(fbWidth); + dataBuffer.m_height = static_cast(fbHeight); + + CHECK(dd->TotalVtxCount <= std::numeric_limits::max(), + ("UI is so complex and now requires 32-bit indices. You need to improve dp::MeshObject or simplify UI")); + + CHECK((ImGui::GetIO().BackendFlags & ImGuiBackendFlags_RendererHasVtxOffset) == 0, ()); + + dataBuffer.m_vertices.resize(dd->TotalVtxCount); + dataBuffer.m_indices.resize(dd->TotalIdxCount); + + int totalDrawCallsCount = 0; + for (int i = 0; i < dd->CmdListsCount; ++i) + totalDrawCallsCount += dd->CmdLists[i]->CmdBuffer.Size; + dataBuffer.m_drawCalls.reserve(totalDrawCallsCount); + + ImVec2 const clipOff = dd->DisplayPos; + ImVec2 const clipScale = dd->FramebufferScale; + + uint32_t vertexOffset = 0; + uint32_t indexOffset = 0; + for (int i = 0; i < dd->CmdListsCount; ++i) + { + ImDrawList const * cmdList = dd->CmdLists[i]; + for (int j = 0; j < cmdList->VtxBuffer.Size; ++j) + { + dp::Color color(cmdList->VtxBuffer.Data[j].col); + dataBuffer.m_vertices[j + vertexOffset] = { + .position = {cmdList->VtxBuffer.Data[j].pos.x, cmdList->VtxBuffer.Data[j].pos.y}, + .texCoords = {cmdList->VtxBuffer.Data[j].uv.x, cmdList->VtxBuffer.Data[j].uv.y}, + .color = {color.GetAlphaF(), color.GetBlueF(), color.GetGreenF(), + color.GetRedF()} // Byte order is reversed in imGui + }; + } + + static_assert(sizeof(uint16_t) == sizeof(ImDrawIdx)); + memcpy(dataBuffer.m_indices.data() + indexOffset, cmdList->IdxBuffer.Data, + cmdList->IdxBuffer.Size * sizeof(ImDrawIdx)); + for (int j = 0; j < cmdList->IdxBuffer.Size; ++j) + { + uint32_t indexValue = dataBuffer.m_indices[j + indexOffset]; + indexValue += vertexOffset; + CHECK(indexValue <= std::numeric_limits::max(), ()); + dataBuffer.m_indices[j + indexOffset] = static_cast(indexValue); + } + + for (int cmdIndex = 0; cmdIndex < cmdList->CmdBuffer.Size; ++cmdIndex) + { + const ImDrawCmd cmd = cmdList->CmdBuffer[cmdIndex]; + ImVec2 clipMin((cmd.ClipRect.x - clipOff.x) * clipScale.x, (cmd.ClipRect.y - clipOff.y) * clipScale.y); + ImVec2 clipMax((cmd.ClipRect.z - clipOff.x) * clipScale.x, (cmd.ClipRect.w - clipOff.y) * clipScale.y); + if (clipMin.x < 0.0f) + clipMin.x = 0.0f; + if (clipMin.y < 0.0f) + clipMin.y = 0.0f; + if (clipMax.x > fbWidth) + clipMax.x = static_cast(fbWidth); + if (clipMax.y > fbHeight) + clipMax.y = static_cast(fbHeight); + if (clipMax.x <= clipMin.x || clipMax.y <= clipMin.y) + continue; + + dataBuffer.m_drawCalls.emplace_back(DrawCall{ + .indexCount = static_cast(cmd.ElemCount), + .startIndex = static_cast(indexOffset + cmd.IdxOffset), + .clipRect = {static_cast(clipMin.x), static_cast(clipMin.y), + static_cast(clipMax.x - clipMin.x), static_cast(clipMax.y - clipMin.y)}}); + } + + vertexOffset += static_cast(cmdList->VtxBuffer.Size); + indexOffset += static_cast(cmdList->IdxBuffer.Size); + } + CHECK(vertexOffset == dataBuffer.m_vertices.size(), ()); + CHECK(indexOffset == dataBuffer.m_indices.size(), ()); + + { + std::lock_guard lock(m_bufferMutex); + + // Projection + float const left = dd->DisplayPos.x; + float const right = dd->DisplayPos.x + dd->DisplaySize.x; + float const top = dd->DisplayPos.y; + float const bottom = dd->DisplayPos.y + dd->DisplaySize.y; + m_projection[0][0] = 2.0f / (right - left); + m_projection[1][1] = 2.0f / (top - bottom); + m_projection[2][2] = -1.0f; + m_projection[3][3] = 1.0f; + m_projection[0][3] = -(right + left) / (right - left); + m_projection[1][3] = -(top + bottom) / (top - bottom); + + // Swap buffers + m_updateIndex = (m_updateIndex + 1) % m_uiDataBuffer.size(); + } +} diff --git a/dev_sandbox/imgui_renderer.hpp b/dev_sandbox/imgui_renderer.hpp new file mode 100644 index 0000000000..6e048c8e0c --- /dev/null +++ b/dev_sandbox/imgui_renderer.hpp @@ -0,0 +1,72 @@ +#pragma once + +#include "drape/glsl_types.hpp" +#include "drape/graphics_context.hpp" +#include "drape/mesh_object.hpp" +#include "drape/pointers.hpp" +#include "drape/render_state.hpp" +#include "drape/static_texture.hpp" +#include "drape/texture_manager.hpp" + +#include +#include +#include +#include +#include + +class ImguiRenderer +{ +public: + ImguiRenderer(); + void Render(ref_ptr context, + ref_ptr textureManager, + ref_ptr programManager); + void Update(std::function const & uiCallback); + void Reset(); + +private: + void UpdateTexture(); + void UpdateBuffers(); + + struct ImguiVertex + { + glsl::vec2 position; + glsl::vec2 texCoords; + glsl::vec4 color; + }; + static_assert(sizeof(ImguiVertex) == 2 * sizeof(glsl::vec4)); + + struct DrawCall + { + uint32_t indexCount = 0; + uint32_t startIndex = 0; + glsl::uvec4 clipRect{}; + }; + + drape_ptr m_mesh; + uint32_t m_vertexCount = 2000; + uint32_t m_indexCount = 3000; + + drape_ptr m_texture; + std::vector m_textureData; + uint32_t m_textureWidth = 0; + uint32_t m_textureHeight = 0; + + dp::RenderState m_state; + + struct UiDataBuffer + { + std::vector m_vertices; + std::vector m_indices; + std::vector m_drawCalls; + uint32_t m_width; + uint32_t m_height; + }; + std::array m_uiDataBuffer; + size_t m_updateIndex = 0; + + glsl::mat4 m_projection; + + std::mutex m_bufferMutex; + std::mutex m_textureMutex; +}; diff --git a/dev_sandbox/main.cpp b/dev_sandbox/main.cpp new file mode 100644 index 0000000000..0cd1c9e85c --- /dev/null +++ b/dev_sandbox/main.cpp @@ -0,0 +1,682 @@ +#include "dev_sandbox/imgui_renderer.hpp" + +#include "map/framework.hpp" + +#include "platform/platform.hpp" +#include "platform/settings.hpp" + +#include "coding/reader.hpp" + +#include "base/logging.hpp" +#include "base/macros.hpp" + +#include "std/target_os.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(OMIM_OS_WINDOWS) +#define GLFW_EXPOSE_NATIVE_WIN32 +#elif defined(OMIM_OS_LINUX) +#define GLFW_EXPOSE_NATIVE_X11 +#elif defined(OMIM_OS_MAC) +#define GLFW_EXPOSE_NATIVE_COCOA +#else +#error Unsupported plaform +#endif +#define GLFW_INCLUDE_NONE +#include +#include +#include +#include + +DEFINE_string(data_path, "", "Path to data directory."); +DEFINE_string(log_abort_level, base::ToString(base::GetDefaultLogAbortLevel()), + "Log messages severity that causes termination."); +DEFINE_string(resources_path, "", "Path to resources directory."); +DEFINE_string(lang, "", "Device language."); + +#if defined(OMIM_OS_MAC) || defined(OMIM_OS_LINUX) +drape_ptr CreateContextFactory(GLFWwindow * window, dp::ApiVersion api, m2::PointU size); +void PrepareDestroyContextFactory(ref_ptr contextFactory); +void OnCreateDrapeEngine(GLFWwindow * window, dp::ApiVersion api, ref_ptr contextFactory); +void UpdateContentScale(GLFWwindow * window, float scale); +void UpdateSize(ref_ptr contextFactory, int w, int h); +#endif + +#if defined(OMIM_OS_LINUX) +// Workaround for storage::Status compilation issue: +// /usr/include/X11/Xlib.h:83:16: note: expanded from macro 'Status' +#undef Status +#endif + +namespace +{ +bool ValidateLogAbortLevel(char const * flagname, std::string const & value) +{ + if (auto level = base::FromString(value); !level) + { + std::cerr << "Invalid value for --" << flagname << ": " << value << ", must be one of: "; + auto const & names = base::GetLogLevelNames(); + for (size_t i = 0; i < names.size(); ++i) + { + if (i != 0) + std::cerr << ", "; + std::cerr << names[i]; + } + std::cerr << '\n'; + return false; + } + return true; +} + +bool const g_logAbortLevelDummy = gflags::RegisterFlagValidator(&FLAGS_log_abort_level, &ValidateLogAbortLevel); + +void errorCallback(int error, char const * description) { LOG(LERROR, ("GLFW (", error, "):", description)); } + +struct WindowHandlers +{ + std::function onResize; + std::function onMouseButton; + std::function onMouseMove; + std::function onScroll; + std::function onKeyboardButton; + std::function onContentScale; +} handlers; + +df::Touch GetTouch(double x, double y) +{ + return df::Touch{.m_location = m2::PointF(static_cast(x), static_cast(y)), .m_id = 0}; +} + +df::Touch GetSymmetricalTouch(Framework & framework, df::Touch const & touch) +{ + m2::PointD const pixelCenter = framework.GetVisiblePixelCenter(); + m2::PointD const symmetricalLocation = pixelCenter + pixelCenter - m2::PointD(touch.m_location); + + df::Touch result; + result.m_id = touch.m_id + 1; + result.m_location = symmetricalLocation; + + return result; +} + +df::TouchEvent GetTouchEvent(Framework & framework, double x, double y, int mods, df::TouchEvent::ETouchType type) +{ + df::TouchEvent event; + event.SetTouchType(type); + event.SetFirstTouch(GetTouch(x, y)); + if (mods & GLFW_MOD_SUPER) + event.SetSecondTouch(GetSymmetricalTouch(framework, event.GetFirstTouch())); + return event; +} + +void FormatMapSize(uint64_t sizeInBytes, std::string & units, size_t & sizeToDownload) +{ + int const mbInBytes = 1024 * 1024; + int const kbInBytes = 1024; + if (sizeInBytes > mbInBytes) + { + sizeToDownload = (sizeInBytes + mbInBytes - 1) / mbInBytes; + units = "MB"; + } + else if (sizeInBytes > kbInBytes) + { + sizeToDownload = (sizeInBytes + kbInBytes - 1) / kbInBytes; + units = "KB"; + } + else + { + sizeToDownload = sizeInBytes; + units = "B"; + } +} + +std::string_view GetMyPoisitionText(location::EMyPositionMode mode) +{ + switch(mode) + { + case location::EMyPositionMode::PendingPosition: return "Pending"; + case location::EMyPositionMode::NotFollowNoPosition: return "No position"; + case location::EMyPositionMode::NotFollow: return "Not follow"; + case location::EMyPositionMode::Follow: return "Follow"; + case location::EMyPositionMode::FollowAndRotate: return "Follow and Rotate"; + } + return ""; +} + +dp::ApiVersion GetApiVersion(char const * apiLabel) +{ + std::string_view v(apiLabel); + if (v == "Metal") return dp::ApiVersion::Metal; + if (v == "Vulkan") return dp::ApiVersion::Vulkan; + if (v == "OpenGL") return dp::ApiVersion::OpenGLES3; + return dp::ApiVersion::Invalid; +} + +#if defined(OMIM_OS_LINUX) +class LinuxGuiThread : public base::TaskLoop +{ +public: + PushResult Push(Task && task) override + { + std::lock_guard lock(m_mutex); + m_tasks.emplace_back(std::move(task)); + return {true, base::TaskLoop::kNoId}; + } + + PushResult Push(Task const & task) override + { + std::lock_guard lock(m_mutex); + m_tasks.emplace_back(task); + return {true, base::TaskLoop::kNoId}; + } + + void ExecuteTasks() + { + std::lock_guard lock(m_mutex); + for (auto & task : m_tasks) + task(); + m_tasks.clear(); + } + +private: + std::vector m_tasks; + std::mutex m_mutex; +}; +#endif +} // namespace + +int main(int argc, char * argv[]) +{ + // Our double parsing code (base/string_utils.hpp) needs dots as a floating point delimiters, not commas. + // TODO: Refactor our doubles parsing code to use locale-independent delimiters. + // For example, https://github.com/google/double-conversion can be used. + // See http://dbaron.org/log/20121222-locale for more details. + (void)::setenv("LC_NUMERIC", "C", 1); + + Platform & platform = GetPlatform(); + + LOG(LINFO, ("Organic Maps: Developer Sandbox", platform.Version(), "detected CPU cores:", platform.CpuCores())); + + gflags::SetUsageMessage("Developer Sandbox."); + gflags::SetVersionString(platform.Version()); + gflags::ParseCommandLineFlags(&argc, &argv, true); + + if (!FLAGS_resources_path.empty()) + platform.SetResourceDir(FLAGS_resources_path); + if (!FLAGS_data_path.empty()) + platform.SetWritableDirForTests(FLAGS_data_path); + + if (auto const logLevel = base::FromString(FLAGS_log_abort_level); logLevel) + base::g_LogAbortLevel = *logLevel; + else + LOG(LCRITICAL, ("Invalid log level:", FLAGS_log_abort_level)); + +#if defined(OMIM_OS_LINUX) + auto guiThread = std::make_unique(); + auto guiThreadPtr = guiThread.get(); + platform.SetGuiThread(std::move(guiThread)); +#endif + + // Init GLFW. + glfwSetErrorCallback(errorCallback); + if (!glfwInit()) + { + return -1; + } + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); +#if defined(OMIM_OS_WINDOWS) + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); +#endif + auto monitor = glfwGetPrimaryMonitor(); + auto mode = glfwGetVideoMode(monitor); + GLFWwindow * window = + glfwCreateWindow(mode->width, mode->height, "Organic Maps: Developer Sandbox", nullptr, nullptr); + int fbWidth = 0, fbHeight = 0; + glfwGetFramebufferSize(window, &fbWidth, &fbHeight); + float xs = 1.0f, ys = 1.0f; + glfwGetWindowContentScale(window, &xs, &ys); + float visualScale = std::max(xs, ys); + + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + ImGui::StyleColorsClassic(); + glfwMaximizeWindow(window); + + platform.SetupMeasurementSystem(); + + bool outvalue; + if (!settings::Get(settings::kDeveloperMode, outvalue)) + settings::Set(settings::kDeveloperMode, true); + + if (!FLAGS_lang.empty()) + (void)::setenv("LANGUAGE", FLAGS_lang.c_str(), 1); + + FrameworkParams frameworkParams; + Framework framework(frameworkParams); + + ImguiRenderer imguiRenderer; + Framework::DrapeCreationParams drapeParams{ +#if defined(OMIM_OS_MAC) + .m_apiVersion = dp::ApiVersion::Metal, +#else + .m_apiVersion = dp::ApiVersion::Vulkan, +#endif + .m_visualScale = visualScale, + .m_surfaceWidth = fbWidth, + .m_surfaceHeight = fbHeight, + .m_renderInjectionHandler = [&](ref_ptr context, + ref_ptr textureManager, + ref_ptr programManager, + bool shutdown) + { + if (shutdown) + imguiRenderer.Reset(); + else + imguiRenderer.Render(context, textureManager, programManager); + }}; + gui::Skin guiSkin(gui::ResolveGuiSkinFile("default"), visualScale); + guiSkin.Resize(fbWidth, fbHeight); + guiSkin.ForEach([&](gui::EWidget widget, gui::Position const & pos) { drapeParams.m_widgetsInitInfo[widget] = pos; }); + drapeParams.m_widgetsInitInfo[gui::WIDGET_SCALE_FPS_LABEL] = gui::Position(dp::LeftTop); + + drape_ptr contextFactory; + auto CreateDrapeEngine = [&](dp::ApiVersion version) + { + drapeParams.m_apiVersion = version; + drapeParams.m_visualScale = visualScale; + drapeParams.m_surfaceWidth = fbWidth; + drapeParams.m_surfaceHeight = fbHeight; + contextFactory = CreateContextFactory(window, drapeParams.m_apiVersion, + m2::PointU(static_cast(drapeParams.m_surfaceWidth), + static_cast(drapeParams.m_surfaceHeight))); + auto params = drapeParams; + framework.CreateDrapeEngine(make_ref(contextFactory), std::move(params)); + OnCreateDrapeEngine(window, version, make_ref(contextFactory)); + framework.SetRenderingEnabled(nullptr); + }; + CreateDrapeEngine(drapeParams.m_apiVersion); + + auto DestroyDrapeEngine = [&]() + { + framework.SetRenderingDisabled(true); + framework.DestroyDrapeEngine(); + PrepareDestroyContextFactory(make_ref(contextFactory)); + contextFactory.reset(); + }; + + // Process resizing. + handlers.onResize = [&](int w, int h) + { + fbWidth = w; + fbHeight = h; + if (fbWidth > 0 && fbHeight > 0) + { + UpdateSize(make_ref(contextFactory), fbWidth, fbHeight); + framework.OnSize(fbWidth, fbHeight); + + guiSkin.Resize(w, h); + gui::TWidgetsLayoutInfo layout; + guiSkin.ForEach([&layout](gui::EWidget w, gui::Position const & pos) { layout[w] = pos.m_pixelPivot; }); + framework.SetWidgetLayout(std::move(layout)); + framework.MakeFrameActive(); + } + }; + glfwSetFramebufferSizeCallback(window, [](GLFWwindow * wnd, int w, int h) { handlers.onResize(w, h); }); + + // Process change content scale. + handlers.onContentScale = [&](float xscale, float yscale) + { + visualScale = std::max(xscale, yscale); + framework.UpdateVisualScale(visualScale); + + int w = 0, h = 0; + glfwGetWindowSize(window, &w, &h); +#if defined(OMIM_OS_MAC) + w *= xscale; + h *= yscale; +#endif + + if (w != fbWidth || h != fbHeight) + { +#if defined(OMIM_OS_MAC) + UpdateContentScale(window, xscale); +#endif + fbWidth = w; + fbHeight = h; + UpdateSize(make_ref(contextFactory), fbWidth, fbHeight); + framework.OnSize(fbWidth, fbHeight); + } + }; + glfwSetWindowContentScaleCallback(window, [](GLFWwindow *, float xscale, float yscale) + { + handlers.onContentScale(xscale, yscale); + }); + + // Location handler + std::optional lastLatLon; + bool bearingEnabled = false; + float bearing = 0.0f; + auto setUserLocation = [&]() + { + if (lastLatLon) + { + framework.OnLocationUpdate( + location::GpsInfo{.m_source = location::EUser, + .m_timestamp = static_cast(std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count()) / + 1000, + .m_latitude = lastLatLon->m_lat, + .m_longitude = lastLatLon->m_lon, + .m_horizontalAccuracy = 10, + .m_bearing = bearingEnabled ? bearing : -1.0f}); + if (bearingEnabled) + { + framework.OnCompassUpdate(location::CompassInfo{.m_bearing = base::DegToRad(bearing)}); + } + } + }; + + // Download maps handler + std::string downloadButtonLabel; + std::string retryButtonLabel; + std::string downloadStatusLabel; + storage::CountryId lastCountry; + auto const onCountryChanged = [&](storage::CountryId const & countryId) + { + downloadButtonLabel.clear(); + retryButtonLabel.clear(); + downloadStatusLabel.clear(); + lastCountry = countryId; + // Called by Framework in World zoom level. + if (countryId.empty()) + return; + + auto const & storage = framework.GetStorage(); + auto status = storage.CountryStatusEx(countryId); + auto const & countryName = countryId; + + if (status == storage::Status::NotDownloaded) + { + std::string units; + size_t sizeToDownload = 0; + FormatMapSize(storage.CountrySizeInBytes(countryId).second, units, sizeToDownload); + std::stringstream str; + str << "Download (" << countryName << ") " << sizeToDownload << units; + downloadButtonLabel = str.str(); + } + else if (status == storage::Status::InQueue) + { + std::stringstream str; + str << countryName << " is waiting for downloading"; + downloadStatusLabel = str.str(); + } + else if (status != storage::Status::Downloading && status != storage::Status::OnDisk && + status != storage::Status::OnDiskOutOfDate) + { + std::stringstream str; + str << "Retry to download " << countryName; + retryButtonLabel = str.str(); + } + }; + framework.SetCurrentCountryChangedListener(onCountryChanged); + + framework.GetStorage().Subscribe( + [&](storage::CountryId const & countryId) + { + // Storage also calls notifications for parents, but we are interested in leafs only. + if (framework.GetStorage().IsLeaf(countryId)) + onCountryChanged(countryId); + }, + [&](storage::CountryId const & countryId, downloader::Progress const & progress) + { + std::stringstream str; + str << "Downloading (" << countryId << ") " << (progress.m_bytesDownloaded * 100 / progress.m_bytesTotal) + << "%"; + downloadStatusLabel = str.str(); + framework.MakeFrameActive(); + }); + + // Handle mouse buttons. + bool touchActive = false; + int touchMods = 0; + bool setUpLocationByLeftClick = false; + handlers.onMouseButton = [&](double x, double y, int button, int action, int mods) + { +#if defined(OMIM_OS_LINUX) + ImGui::GetIO().MousePos = ImVec2(x / visualScale, y / visualScale); +#endif + if (ImGui::GetIO().WantCaptureMouse) + { + framework.MakeFrameActive(); + return; + } + +#if defined(OMIM_OS_MAC) + x *= visualScale; + y *= visualScale; +#endif + lastLatLon = mercator::ToLatLon(framework.PtoG(m2::PointD(x, y))); + + if (setUpLocationByLeftClick) + { + setUserLocation(); + return; + } + + if (button == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS) + { + framework.TouchEvent(GetTouchEvent(framework, x, y, mods, df::TouchEvent::TOUCH_DOWN)); + touchActive = true; + touchMods = mods; + } + + if (touchActive && action == GLFW_RELEASE) + { + framework.TouchEvent(GetTouchEvent(framework, x, y, 0, df::TouchEvent::TOUCH_UP)); + touchActive = false; + touchMods = 0; + } + }; + glfwSetMouseButtonCallback(window, + [](GLFWwindow * wnd, int button, int action, int mods) + { + double x, y; + glfwGetCursorPos(wnd, &x, &y); + handlers.onMouseButton(x, y, button, action, mods); + }); + + // Handle mouse moving. + handlers.onMouseMove = [&](double x, double y) + { +#if defined(OMIM_OS_LINUX) + ImGui::GetIO().MousePos = ImVec2(x / visualScale, y / visualScale); +#endif + if (ImGui::GetIO().WantCaptureMouse) + framework.MakeFrameActive(); + + if (touchActive) + { +#if defined(OMIM_OS_MAC) + x *= visualScale; + y *= visualScale; +#endif + framework.TouchEvent( + GetTouchEvent(framework, x, y, touchMods, df::TouchEvent::TOUCH_MOVE)); + } + }; + glfwSetCursorPosCallback(window, [](GLFWwindow *, double x, double y) + { + handlers.onMouseMove(x, y); + }); + + // Handle scroll. + handlers.onScroll = [&](double x, double y, double xOffset, double yOffset) + { +#if defined(OMIM_OS_LINUX) + ImGui::GetIO().MousePos = ImVec2(x / visualScale, y / visualScale); +#endif + if (ImGui::GetIO().WantCaptureMouse) + { + framework.MakeFrameActive(); + return; + } + +#if defined(OMIM_OS_MAC) + x *= visualScale; + y *= visualScale; +#endif + constexpr double kSensitivity = 0.01; + double const factor = yOffset * kSensitivity; + framework.Scale(exp(factor), m2::PointD(x, y), false); + }; + glfwSetScrollCallback(window, + [](GLFWwindow * wnd, double xoffset, double yoffset) + { + double x, y; + glfwGetCursorPos(wnd, &x, &y); + handlers.onScroll(x, y, xoffset, yoffset); + }); + + // Keys. + handlers.onKeyboardButton = [&](int key, int scancode, int action, int mods) {}; + glfwSetKeyCallback(window, [](GLFWwindow *, int key, int scancode, int action, int mods) + { + handlers.onKeyboardButton(key, scancode, action, mods); + }); + + // imGui UI + bool enableDebugRectRendering = false; + bool enableAA = false; + auto imGuiUI = [&]() + { + ImGui::SetNextWindowPos(ImVec2(5, 20), ImGuiCond_Appearing); + ImGui::Begin("Controls", nullptr, ImGuiWindowFlags_AlwaysAutoResize); + + // Drape controls + char const * apiLabels[] = { +#if defined(OMIM_OS_MAC) + "Metal", + "Vulkan", + "OpenGL" +#elif defined(OMIM_OS_LINUX) + "Vulkan", + "OpenGL" +#endif + }; + static int currentAPI = 0; + if (ImGui::Combo("API", ¤tAPI, apiLabels, IM_ARRAYSIZE(apiLabels))) + { + auto const apiVersion = GetApiVersion(apiLabels[currentAPI]); + if (framework.GetDrapeEngine()->GetApiVersion() != apiVersion) + { + DestroyDrapeEngine(); + CreateDrapeEngine(apiVersion); + } + } + if (ImGui::Checkbox("Debug rect rendering", &enableDebugRectRendering)) + framework.EnableDebugRectRendering(enableDebugRectRendering); + if (ImGui::Checkbox("Antialiasing", &enableAA)) + framework.GetDrapeEngine()->SetPosteffectEnabled(df::PostprocessRenderer::Antialiasing, enableAA); + ImGui::NewLine(); + ImGui::Separator(); + ImGui::NewLine(); + + // Map controls + if (ImGui::Button("Scale +")) + framework.Scale(Framework::SCALE_MAG, true); + ImGui::SameLine(); + if (ImGui::Button("Scale -")) + framework.Scale(Framework::SCALE_MIN, true); + ImGui::Checkbox("Set up location by left click", &setUpLocationByLeftClick); + if (setUpLocationByLeftClick) + { + if (ImGui::Checkbox("Bearing", &bearingEnabled)) + setUserLocation(); + ImGui::SameLine(); + if (ImGui::SliderFloat(" ", &bearing, 0.0f, 360.0f, "%.1f")) + setUserLocation(); + } + ImGui::Text("My positon mode: %s", GetMyPoisitionText(framework.GetMyPositionMode()).data()); + if (ImGui::Button("Next Position Mode")) + framework.SwitchMyPositionNextMode(); + ImGui::NewLine(); + ImGui::Separator(); + ImGui::NewLine(); + + // No downloading on Linux at the moment, need to implement http_thread without Qt. +#if !defined(OMIM_OS_LINUX) + // Download controls + if (!downloadButtonLabel.empty()) + { + if (ImGui::Button(downloadButtonLabel.c_str())) + framework.GetStorage().DownloadNode(lastCountry); + } + if (!retryButtonLabel.empty()) + { + if (ImGui::Button(retryButtonLabel.c_str())) + framework.GetStorage().RetryDownloadNode(lastCountry); + } + if (!downloadStatusLabel.empty()) + ImGui::Text("%s", downloadStatusLabel.c_str()); + if (!downloadButtonLabel.empty() || !retryButtonLabel.empty() || !downloadStatusLabel.empty()) + { + ImGui::NewLine(); + ImGui::Separator(); + ImGui::NewLine(); + } +#endif + + ImGui::End(); + }; + + ImGui_ImplGlfw_InitForOther(window, true); + + // Main loop. + while (!glfwWindowShouldClose(window)) + { + glfwPollEvents(); + +#if defined(OMIM_OS_LINUX) + guiThreadPtr->ExecuteTasks(); +#endif + + // Render imGui UI + ImGui_ImplGlfw_NewFrame(); + ImGuiIO& io = ImGui::GetIO(); +#if defined(OMIM_OS_LINUX) + // Apply correct visual scale on Linux + // In glfw for Linux, window size and framebuffer size are the same, + // even if visual scale is not 1.0. It's different from behaviour on Mac. + io.DisplaySize = ImVec2(fbWidth / visualScale, fbHeight / visualScale); + io.DisplayFramebufferScale = ImVec2(visualScale, visualScale); + double mouseX, mouseY; + glfwGetCursorPos(window, &mouseX, &mouseY); + io.AddMousePosEvent((float)mouseX / visualScale, (float)mouseY / visualScale); +#endif + io.IniFilename = nullptr; + imguiRenderer.Update(imGuiUI); + std::this_thread::sleep_for(std::chrono::milliseconds(1000 / 30)); + } + + framework.EnterBackground(); + DestroyDrapeEngine(); + + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); + + glfwDestroyWindow(window); + glfwTerminate(); + return 0; +} diff --git a/dev_sandbox/main.mm b/dev_sandbox/main.mm new file mode 100644 index 0000000000..8ad4d03c7e --- /dev/null +++ b/dev_sandbox/main.mm @@ -0,0 +1,370 @@ +#include "iphone/Maps/Classes/MetalContextFactory.h" + +#include "drape/gl_functions.hpp" +#include "drape/oglcontext.hpp" +#include "drape/metal/metal_base_context.hpp" +#include "drape/vulkan/vulkan_context_factory.hpp" + +#define GLFW_INCLUDE_NONE +#include + +#if __APPLE__ +#define GLFW_EXPOSE_NATIVE_COCOA +#else +#error Unsupported OS +#endif +#include + +#import +#import +#import +#import + +#include + +#include +#include + +class MacOSVulkanContextFactory : public dp::vulkan::VulkanContextFactory +{ +public: + MacOSVulkanContextFactory() + : dp::vulkan::VulkanContextFactory(1, 33, false) {} + + void SetSurface(CAMetalLayer *layer) + { + VkMacOSSurfaceCreateInfoMVK createInfo = { + .sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK, + .flags = 0, + .pView = static_cast(CFBridgingRetain(layer)), + }; + + VkResult statusCode; + CHECK(vkCreateMacOSSurfaceMVK, ()); + statusCode = vkCreateMacOSSurfaceMVK(m_vulkanInstance, &createInfo, nullptr, + &m_surface); + if (statusCode != VK_SUCCESS) + { + LOG_ERROR_VK_CALL(vkCreateMacOSSurfaceMVK, statusCode); + return; + } + + uint32_t const renderingQueueIndex = m_drawContext->GetRenderingQueueFamilyIndex(); + VkBool32 supportsPresent; + statusCode = vkGetPhysicalDeviceSurfaceSupportKHR(m_gpu, renderingQueueIndex, m_surface, &supportsPresent); + if (statusCode != VK_SUCCESS) + { + LOG_ERROR_VK_CALL(vkGetPhysicalDeviceSurfaceSupportKHR, statusCode); + return; + } + CHECK_EQUAL(supportsPresent, VK_TRUE, ()); + + CHECK(QuerySurfaceSize(), ()); + + if (m_drawContext) + m_drawContext->SetSurface(m_surface, m_surfaceFormat, m_surfaceCapabilities); + } + + void ResetSurface() + { + if (m_drawContext) + m_drawContext->ResetSurface(false); + + vkDestroySurfaceKHR(m_vulkanInstance, m_surface, nullptr); + } +}; + +class MacGLContext : public dp::OGLContext +{ +public: + MacGLContext(MacGLContext * contextToShareWith) + : m_viewSet(false) + { + NSOpenGLPixelFormatAttribute attributes[] = { + NSOpenGLPFAAccelerated, + NSOpenGLPFAOpenGLProfile, + NSOpenGLProfileVersion4_1Core, + NSOpenGLPFADoubleBuffer, + NSOpenGLPFAColorSize, + 24, + NSOpenGLPFAAlphaSize, + 8, + NSOpenGLPFADepthSize, + 24, + NSOpenGLPFAStencilSize, + 8, + 0 + }; + m_pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]; + CHECK(m_pixelFormat, ("Pixel format is not found")); + m_context = [[NSOpenGLContext alloc] initWithFormat:m_pixelFormat + shareContext:(contextToShareWith ? contextToShareWith->m_context : nil)]; + int interval = 1; + [m_context getValues:&interval forParameter:NSOpenGLContextParameterSwapInterval]; + } + + ~MacGLContext() + { + @autoreleasepool { + [m_context clearDrawable]; + m_pixelFormat = nil; + m_context = nil; + } + } + + bool BeginRendering() override { return m_viewSet; } + + void Present() override + { + if (m_viewSet) + { + std::lock_guard lock(m_updateSizeMutex); + [m_context flushBuffer]; + } + } + + void MakeCurrent() override + { + [m_context makeCurrentContext]; + } + + void DoneCurrent() override + { + [NSOpenGLContext clearCurrentContext]; + } + + void SetFramebuffer(ref_ptr framebuffer) override + { + if (framebuffer) + framebuffer->Bind(); + else + GLFunctions::glBindFramebuffer(0); + } + + void SetView(NSView* view) + { + [m_context setView: view]; + [m_context update]; + m_viewSet = true; + } + + void UpdateSize(int w, int h) + { + std::lock_guard lock(m_updateSizeMutex); + [m_context update]; + } + +private: + NSOpenGLPixelFormat * m_pixelFormat = nil; + NSOpenGLContext* m_context = nil; + std::atomic m_viewSet; + + std::mutex m_updateSizeMutex; +}; + +class MacGLContextFactory: public dp::GraphicsContextFactory +{ +public: + dp::GraphicsContext * GetDrawContext() override + { + bool needNotify = false; + { + std::lock_guard lock(m_contextAccess); + if (m_drawContext == nullptr) + { + m_drawContext = std::make_unique(m_uploadContext.get()); + needNotify = true; + } + } + if (needNotify) + NotifyView(); + + std::lock_guard lock(m_contextAccess); + return m_drawContext.get(); + } + + dp::GraphicsContext * GetResourcesUploadContext() override + { + std::lock_guard lock(m_contextAccess); + if (m_uploadContext == nullptr) + m_uploadContext = std::make_unique(m_drawContext.get()); + return m_uploadContext.get(); + } + + void WaitForInitialization(dp::GraphicsContext *) override + { + std::unique_lock lock(m_initializationMutex); + if (m_isInitialized) + return; + + m_initializationCounter++; + if (m_initializationCounter >= kGLThreadsCount) + { + m_isInitialized = true; + m_initializationCondition.notify_all(); + } + else + { + m_initializationCondition.wait(lock, [this] { return m_isInitialized; }); + } + } + + bool IsDrawContextCreated() const override + { + std::lock_guard lock(m_contextAccess); + return m_drawContext != nullptr; + } + + bool IsUploadContextCreated() const override + { + std::lock_guard lock(m_contextAccess); + return m_uploadContext != nullptr; + } + + void SetView(NSView* view) + { + bool needWait; + { + std::lock_guard lock(m_contextAccess); + needWait = (m_drawContext == nullptr); + } + if (needWait) + { + std::unique_lock lock(m_viewSetMutex); + m_viewSetCondition.wait(lock, [this] { return m_viewSet; }); + } + + std::lock_guard lock(m_contextAccess); + CHECK(m_drawContext, ()); + m_drawContext->SetView(view); + } + + void UpdateSize(int w, int h) + { + std::lock_guard lock(m_contextAccess); + if (m_drawContext) + m_drawContext->UpdateSize(w, h); + } + +private: + void NotifyView() + { + std::lock_guard lock(m_viewSetMutex); + m_viewSet = true; + m_viewSetCondition.notify_all(); + } + + static size_t constexpr kGLThreadsCount = 2; + + std::unique_ptr m_drawContext; + std::unique_ptr m_uploadContext; + + mutable std::mutex m_contextAccess; + + bool m_isInitialized = false; + size_t m_initializationCounter = 0; + std::condition_variable m_initializationCondition; + std::mutex m_initializationMutex; + + bool m_viewSet = false; + std::condition_variable m_viewSetCondition; + std::mutex m_viewSetMutex; +}; + +drape_ptr CreateContextFactory(GLFWwindow *window, dp::ApiVersion api, m2::PointU size) +{ + if (api == dp::ApiVersion::Metal) + { + CAMetalLayer *layer = [CAMetalLayer layer]; + layer.device = MTLCreateSystemDefaultDevice(); + layer.opaque = YES; + layer.displaySyncEnabled = YES; + + NSWindow *nswindow = glfwGetCocoaWindow(window); + NSScreen *screen = [NSScreen mainScreen]; + CGFloat factor = [screen backingScaleFactor]; + layer.contentsScale = factor; + nswindow.contentView.layer = layer; + nswindow.contentView.wantsLayer = YES; + + return make_unique_dp(layer, size); + } + + if (api == dp::ApiVersion::Vulkan) + { + CAMetalLayer *layer = [CAMetalLayer layer]; + layer.device = MTLCreateSystemDefaultDevice(); + layer.opaque = YES; + layer.displaySyncEnabled = YES; + + NSWindow *nswindow = glfwGetCocoaWindow(window); + NSScreen *screen = [NSScreen mainScreen]; + CGFloat factor = [screen backingScaleFactor]; + layer.contentsScale = factor; + nswindow.contentView.layer = layer; + nswindow.contentView.wantsLayer = YES; + + auto contextFactory = make_unique_dp(); + contextFactory->SetSurface(layer); + return contextFactory; + } + + if (api == dp::ApiVersion::OpenGLES3) + { + NSWindow *nswindow = glfwGetCocoaWindow(window); + [nswindow.contentView setWantsBestResolutionOpenGLSurface:YES]; + return make_unique_dp(); + } + + ASSERT(false, ("API is not available yet")); + return nullptr; +} + +void OnCreateDrapeEngine(GLFWwindow *window, dp::ApiVersion api, + ref_ptr contextFactory) +{ + if (api == dp::ApiVersion::OpenGLES3) + { + NSWindow *nswindow = glfwGetCocoaWindow(window); + ref_ptr macosContextFactory = contextFactory; + macosContextFactory->SetView(nswindow.contentView); + } +} + +void PrepareDestroyContextFactory(ref_ptr contextFactory) +{ + auto const api = contextFactory->GetDrawContext()->GetApiVersion(); + if (api == dp::ApiVersion::Metal || api == dp::ApiVersion::OpenGLES3) + { + // Do nothing + } + else if (api == dp::ApiVersion::Vulkan) + { + ref_ptr macosContextFactory = contextFactory; + macosContextFactory->ResetSurface(); + } + else + { + ASSERT(false, ("API is not available yet")); + } +} + +void UpdateContentScale(GLFWwindow *window, float scale) +{ + NSWindow *nswindow = glfwGetCocoaWindow(window); + if (nswindow.contentView.layer) + nswindow.contentView.layer.contentsScale = scale; +} + +void UpdateSize(ref_ptr contextFactory, int w, int h) +{ + if (!contextFactory || !contextFactory->GetDrawContext()) + return; + + auto const api = contextFactory->GetDrawContext()->GetApiVersion(); + if (api == dp::ApiVersion::OpenGLES3) + { + ref_ptr macosContextFactory = contextFactory; + macosContextFactory->UpdateSize(w, h); + } +} diff --git a/dev_sandbox/main_linux.cpp b/dev_sandbox/main_linux.cpp new file mode 100644 index 0000000000..286a5183e8 --- /dev/null +++ b/dev_sandbox/main_linux.cpp @@ -0,0 +1,411 @@ +#include "std/target_os.hpp" +#if !defined(OMIM_OS_LINUX) +#error Unsupported OS +#endif + +#define GLFW_INCLUDE_NONE +#include +#define GLFW_EXPOSE_NATIVE_X11 +#include + +#include +#include + +#include +#include +// Workaround for TestFunction::Always compilation issue: +// /usr/include/X11/X.h:441:33: note: expanded from macro 'Always' +#undef Always +// Workaround for storage::Status compilation issue: +// /usr/include/X11/Xlib.h:83:16: note: expanded from macro 'Status' +#undef Status + +#include "drape/vulkan/vulkan_context_factory.hpp" + +#include "drape/gl_functions.hpp" +#include "drape/gl_includes.hpp" +#include "drape/oglcontext.hpp" + +#include +#include +#include + +class LinuxVulkanContextFactory : public dp::vulkan::VulkanContextFactory +{ +public: + LinuxVulkanContextFactory() : dp::vulkan::VulkanContextFactory(1, 33, false) {} + + void SetSurface(Display * display, Window window) + { + VkXlibSurfaceCreateInfoKHR const createInfo = { + .sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, + .pNext = nullptr, + .flags = 0, + .dpy = display, + .window = window, + }; + + VkResult statusCode; + CHECK(vkCreateXlibSurfaceKHR, ()); + statusCode = vkCreateXlibSurfaceKHR(m_vulkanInstance, &createInfo, nullptr, &m_surface); + if (statusCode != VK_SUCCESS) + { + LOG_ERROR_VK_CALL(vkCreateXlibSurfaceKHR, statusCode); + return; + } + + uint32_t const renderingQueueIndex = m_drawContext->GetRenderingQueueFamilyIndex(); + VkBool32 supportsPresent; + statusCode = vkGetPhysicalDeviceSurfaceSupportKHR(m_gpu, renderingQueueIndex, m_surface, &supportsPresent); + if (statusCode != VK_SUCCESS) + { + LOG_ERROR_VK_CALL(vkGetPhysicalDeviceSurfaceSupportKHR, statusCode); + return; + } + CHECK_EQUAL(supportsPresent, VK_TRUE, ()); + + CHECK(QuerySurfaceSize(), ()); + + if (m_drawContext) + m_drawContext->SetSurface(m_surface, m_surfaceFormat, m_surfaceCapabilities); + } + + void ResetSurface() + { + if (m_drawContext) + m_drawContext->ResetSurface(false); + + vkDestroySurfaceKHR(m_vulkanInstance, m_surface, nullptr); + } +}; + +// Based on: https://github.com/glfw/glfw/blob/master/src/glx_context.c +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_DOUBLEBUFFER 5 +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 + +typedef XID GLXDrawable; +typedef struct __GLXcontext * GLXContext; +typedef XID GLXPbuffer; +typedef struct __GLXFBConfig * GLXFBConfig; +typedef void (*__GLXextproc)(void); + +typedef __GLXextproc (*PFNGLXGETPROCADDRESSPROC)(const GLubyte * procName); + +typedef int (*PFNXFREE)(void *); +typedef GLXFBConfig * (*PFNGLXCHOOSEFBCONFIGPROC)(Display *, int, const int *, int *); +typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARB)(Display *, GLXFBConfig, GLXContext, Bool, const int *); +typedef void (*PFNGLXDESTROYCONTEXT)(Display *, GLXContext); +typedef GLXPbuffer (*PFNGLXCREATEPBUFFERPROC)(Display *, GLXFBConfig, const int *); +typedef void (*PFNGLXDESTROYPBUFFER)(Display *, GLXPbuffer); +typedef Bool (*PFNGLXMAKECURRENTPROC)(Display *, GLXDrawable, GLXContext); +typedef void (*PFNGLXSWAPBUFFERSPROC)(Display *, GLXDrawable); + +struct GLXFunctions +{ + GLXFunctions() + { + std::array libs = { + "libGLX.so.0", + "libGL.so.1", + "libGL.so", + }; + + for (char const * lib : libs) + { + m_module = dlopen(lib, RTLD_LAZY | RTLD_LOCAL); + if (m_module) + { + break; + } + } + + CHECK(m_module != nullptr, ("Failed to initialize GLX")); + + XFree = loadFunction("XFree"); + + glXGetProcAddress = loadFunction("glXGetProcAddress"); + glXGetProcAddressARB = loadFunction("glXGetProcAddressARB"); + + glXChooseFBConfig = loadGlxFunction("glXChooseFBConfig"); + glXCreateContextAttribsARB = loadGlxFunction("glXCreateContextAttribsARB"); + + glXDestroyContext = loadGlxFunction("glXDestroyContext"); + glXCreatePbuffer = loadGlxFunction("glXCreatePbuffer"); + glXDestroyPbuffer = loadGlxFunction("glXDestroyPbuffer"); + glXMakeCurrent = loadGlxFunction("glXMakeCurrent"); + glXSwapBuffers = loadGlxFunction("glXSwapBuffers"); + } + + ~GLXFunctions() + { + if (m_module) + { + dlclose(m_module); + } + } + + PFNXFREE XFree = nullptr; + + PFNGLXGETPROCADDRESSPROC glXGetProcAddress = nullptr; + PFNGLXGETPROCADDRESSPROC glXGetProcAddressARB = nullptr; + + PFNGLXCHOOSEFBCONFIGPROC glXChooseFBConfig = nullptr; + PFNGLXCREATECONTEXTATTRIBSARB glXCreateContextAttribsARB = nullptr; + PFNGLXDESTROYCONTEXT glXDestroyContext = nullptr; + PFNGLXCREATEPBUFFERPROC glXCreatePbuffer = nullptr; + PFNGLXDESTROYPBUFFER glXDestroyPbuffer = nullptr; + PFNGLXMAKECURRENTPROC glXMakeCurrent = nullptr; + PFNGLXSWAPBUFFERSPROC glXSwapBuffers = nullptr; + +private: + template + T loadFunction(char const * func) + { + auto f = reinterpret_cast(dlsym(m_module, func)); + ASSERT(f, ("Failed to initialize GLX:", func, "is not found")); + return f; + } + + template + T loadGlxFunction(char const * func) + { + if (auto f = reinterpret_cast(glXGetProcAddress(reinterpret_cast(func)))) + return f; + + if (auto f = reinterpret_cast(glXGetProcAddressARB(reinterpret_cast(func)))) + return f; + + return loadFunction(func); + } + + void * m_module = nullptr; +}; + +class LinuxGLContext : public dp::OGLContext +{ +public: + LinuxGLContext(GLXFunctions const & glx, Display * display, Window window, LinuxGLContext * contextToShareWith, + bool usePixelBuffer) + : m_glx(glx), m_display(display), m_window(window) + { + int visualAttribs[] = { + GLX_DOUBLEBUFFER, True, + GLX_RENDER_TYPE, GLX_RGBA_BIT, + GLX_DRAWABLE_TYPE, (usePixelBuffer ? GLX_PBUFFER_BIT : GLX_WINDOW_BIT), + GLX_RED_SIZE, 8, + GLX_GREEN_SIZE, 8, + GLX_BLUE_SIZE, 8, + GLX_ALPHA_SIZE, 8, + GLX_DEPTH_SIZE, 24, + GLX_STENCIL_SIZE, 8, + None + }; + int contextAttribs[] = { + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + GLX_CONTEXT_MAJOR_VERSION_ARB, 4, + GLX_CONTEXT_MINOR_VERSION_ARB, 1, + None}; + int fbcount = 0; + if (GLXFBConfig * config = m_glx.glXChooseFBConfig(display, DefaultScreen(display), visualAttribs, &fbcount)) + { + m_context = + m_glx.glXCreateContextAttribsARB(display, config[0], contextToShareWith ? contextToShareWith->m_context : 0, True, contextAttribs); + CHECK(m_context != nullptr, ("Failed to create GLX context")); + + if (usePixelBuffer) + { + int pbufferAttribs[] = {GLX_PBUFFER_WIDTH, 1, GLX_PBUFFER_HEIGHT, 1, None}; + + m_pixelBufferHandle = m_glx.glXCreatePbuffer(display, config[0], pbufferAttribs); + CHECK(m_pixelBufferHandle != 0, ("Failed to create GLX pbuffer")); + } + + m_glx.XFree(config); + } + } + + ~LinuxGLContext() override + { + if (m_pixelBufferHandle) + { + m_glx.glXDestroyPbuffer(m_display, m_pixelBufferHandle); + m_pixelBufferHandle = 0; + } + if (m_context) + { + m_glx.glXDestroyContext(m_display, m_context); + m_context = nullptr; + } + } + + void Present() override + { + if (!m_pixelBufferHandle) + m_glx.glXSwapBuffers(m_display, m_window); + } + + void MakeCurrent() override + { + if (!m_glx.glXMakeCurrent(m_display, m_pixelBufferHandle ? m_pixelBufferHandle : m_window, m_context)) + LOG(LERROR, ("MakeCurrent(): glXMakeCurrent failed")); + } + + void DoneCurrent() override + { + if (!m_glx.glXMakeCurrent(m_display, None, nullptr)) + LOG(LERROR, ("DoneCurrent(): glXMakeCurrent failed")); + } + + void SetFramebuffer(ref_ptr framebuffer) override + { + if (framebuffer) + framebuffer->Bind(); + else + GLFunctions::glBindFramebuffer(0); + } + +private: + GLXFunctions const & m_glx; + + Display * m_display = nullptr; + Window m_window = 0; + GLXDrawable m_pixelBufferHandle = 0; + GLXContext m_context = nullptr; +}; + +class LinuxContextFactory : public dp::GraphicsContextFactory +{ +public: + LinuxContextFactory(Display * display, Window window) : m_display(display), m_window(window) {} + + dp::GraphicsContext * GetDrawContext() override + { + std::lock_guard lock(m_contextAccess); + if (m_drawContext == nullptr) + m_drawContext = std::make_unique(m_glx, m_display, m_window, m_uploadContext.get(), false); + return m_drawContext.get(); + } + + dp::GraphicsContext * GetResourcesUploadContext() override + { + std::lock_guard lock(m_contextAccess); + if (m_uploadContext == nullptr) + m_uploadContext = std::make_unique(m_glx, m_display, 0, m_drawContext.get(), true); + return m_uploadContext.get(); + } + + void WaitForInitialization(dp::GraphicsContext *) override + { + std::unique_lock lock(m_initializationMutex); + if (m_isInitialized) + return; + + m_initializationCounter++; + if (m_initializationCounter >= kGLThreadsCount) + { + m_isInitialized = true; + m_initializationCondition.notify_all(); + } + else + { + m_initializationCondition.wait(lock, [this] { return m_isInitialized; }); + } + } + + bool IsDrawContextCreated() const override + { + std::lock_guard lock(m_contextAccess); + return m_drawContext != nullptr; + } + + bool IsUploadContextCreated() const override + { + std::lock_guard lock(m_contextAccess); + return m_uploadContext != nullptr; + } + +private: + static size_t constexpr kGLThreadsCount = 2; + + GLXFunctions m_glx; + + Display * m_display = nullptr; + Window m_window = 0; + + std::unique_ptr m_drawContext; + std::unique_ptr m_uploadContext; + + mutable std::mutex m_contextAccess; + + bool m_isInitialized = false; + size_t m_initializationCounter = 0; + std::condition_variable m_initializationCondition; + std::mutex m_initializationMutex; +}; + +drape_ptr CreateContextFactory(GLFWwindow * window, dp::ApiVersion api, m2::PointU size) +{ + if (api == dp::ApiVersion::Vulkan) + { + auto contextFactory = make_unique_dp(); + contextFactory->SetSurface(glfwGetX11Display(), glfwGetX11Window(window)); + return contextFactory; + } + + if (api == dp::ApiVersion::OpenGLES3) + { + return make_unique_dp(glfwGetX11Display(), glfwGetX11Window(window)); + } + + ASSERT(false, ("API is not available yet")); + return nullptr; +} + +void OnCreateDrapeEngine(GLFWwindow * window, dp::ApiVersion api, ref_ptr contextFactory) +{ + // Do nothing +} + +void PrepareDestroyContextFactory(ref_ptr contextFactory) +{ + auto const api = contextFactory->GetDrawContext()->GetApiVersion(); + if (api == dp::ApiVersion::OpenGLES3) + { + // Do nothing + } + else if (api == dp::ApiVersion::Vulkan) + { + ref_ptr linuxContextFactory = contextFactory; + linuxContextFactory->ResetSurface(); + } + else + { + ASSERT(false, ("API is not available yet")); + } +} + +void UpdateContentScale(GLFWwindow * window, float scale) +{ + // Do nothing +} + +void UpdateSize(ref_ptr contextFactory, int w, int h) +{ + // Do nothing +} diff --git a/docs/STRUCTURE.md b/docs/STRUCTURE.md index c7a6ee092e..8b56d8e489 100644 --- a/docs/STRUCTURE.md +++ b/docs/STRUCTURE.md @@ -84,6 +84,7 @@ Automatically [generated](TRANSLATIONS.md#technical-details): - `cmake/` - CMake helper files. - `coding/` - I/O classes and data processing. - `descriptions/` - +- `dev_sandbox/` - developer tool for debugging rendering. - `drape_frontend/` - scene and resource manager for the Drape library. - `drape/` - the new graphics library core. - `editor/` - built-in OSM data editor. diff --git a/indexer/edit_journal.hpp b/indexer/edit_journal.hpp index 4c0ad42e07..44d0e25fd1 100644 --- a/indexer/edit_journal.hpp +++ b/indexer/edit_journal.hpp @@ -6,6 +6,7 @@ #include #include +#include #include namespace osm -- 2.45.3 From 0687642095a5a82084dd4bc2fb4b6564e83c9ee9 Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Tue, 11 Feb 2025 22:05:58 +0400 Subject: [PATCH 07/73] [ios] fix memory leak in the PlacePageInfoViewController Signed-off-by: Kiryl Kaveryn --- .../PlacePageInfoViewController.swift | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift index 746659484a..c22551590a 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift @@ -131,7 +131,7 @@ class PlacePageInfoViewController: UIViewController { private var driveThroughView: InfoItemViewController? private var networkView: InfoItemViewController? - var placePageInfoData: PlacePageInfoData! + weak var placePageInfoData: PlacePageInfoData! weak var delegate: PlacePageInfoViewControllerDelegate? var coordinatesFormatId: Int { get { UserDefaults.standard.integer(forKey: Constants.coordFormatIdKey) } @@ -366,33 +366,22 @@ class PlacePageInfoViewController: UIViewController { if formatId >= coordFormats.count { formatId = 0 } - - func setCoordinatesSelected(formatId: Int) { - coordinatesFormatId = formatId - let coordinates: String = coordFormats[formatId] - coordinatesView?.infoLabel.text = coordinates - } - - func copyCoordinatesToPasteboard() { - let coordinates: String = coordFormats[coordinatesFormatId] - self.delegate?.didCopy(coordinates) - } - coordinatesView = createInfoItem(coordFormats[formatId], icon: UIImage(named: "ic_placepage_coordinate"), accessoryImage: UIImage(named: "ic_placepage_change"), - tapHandler: { [unowned self] in + tapHandler: { [weak self] in + guard let self else { return } let formatId = (self.coordinatesFormatId + 1) % coordFormats.count - setCoordinatesSelected(formatId: formatId) + self.setCoordinatesSelected(formatId: formatId) }, - longPressHandler: { - copyCoordinatesToPasteboard() + longPressHandler: { [weak self] in + self?.copyCoordinatesToPasteboard() }) if #available(iOS 14.0, *) { let menu = UIMenu(children: coordFormats.enumerated().map { (index, format) in - UIAction(title: format, handler: { _ in - setCoordinatesSelected(formatId: index) - copyCoordinatesToPasteboard() + UIAction(title: format, handler: { [weak self] _ in + self?.setCoordinatesSelected(formatId: index) + self?.copyCoordinatesToPasteboard() }) }) coordinatesView?.accessoryButton.menu = menu @@ -400,6 +389,19 @@ class PlacePageInfoViewController: UIViewController { } } + private func setCoordinatesSelected(formatId: Int) { + guard let coordFormats = placePageInfoData.coordFormats as? Array else { return } + coordinatesFormatId = formatId + let coordinates: String = coordFormats[formatId] + coordinatesView?.infoLabel.text = coordinates + } + + private func copyCoordinatesToPasteboard() { + guard let coordFormats = placePageInfoData.coordFormats as? Array else { return } + let coordinates: String = coordFormats[coordinatesFormatId] + delegate?.didCopy(coordinates) + } + private func setupOpenWithAppView() { guard let delegate, delegate.shouldShowOpenInApp else { return } openWithAppView = createInfoItem(L("open_in_app"), -- 2.45.3 From 34510b8f1c35fa0a9ccaddcf7ca7573631038b93 Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Thu, 26 Dec 2024 18:04:43 +0400 Subject: [PATCH 08/73] [map] clear the gps tracker on save The prev solution was to clean up the tracker points before the new track recording starting. It was not fully correct solution because: 1. it causes the bug, when if we starts a recording, the `TrackRecordingUpdateHandler` is called by subscribers but receives the old `track info` from the previous track. It happens because the starting is an async call and it cleans up the gps collection a little bit later. 2. when the user finishes the track recording the collection is not properly cleared. The data will stay in the memory `forewer` until the next recording is started. And this data will be recovered on the next app launch too. There are no reason to store all the recorded data in memory until the new recording begins. This approach was Ok for the `previous path` feature (removed) but not for the TR. The data lifecycle for the both feature should be handled separately. Signed-off-by: Kiryl Kaveryn --- map/framework.cpp | 1 + map/gps_tracker.cpp | 5 +++++ map/gps_tracker.hpp | 1 + 3 files changed, 7 insertions(+) diff --git a/map/framework.cpp b/map/framework.cpp index b20207f3ff..8781e204e0 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1752,6 +1752,7 @@ void Framework::StopTrackRecording() void Framework::SaveTrackRecordingWithName(std::string const & name) { GetBookmarkManager().SaveTrackRecording(name); + GpsTracker::Instance().Clear(); if (m_drapeEngine) m_drapeEngine->ClearGpsTrackPoints(); } diff --git a/map/gps_tracker.cpp b/map/gps_tracker.cpp index 23080815ed..9fa961adf4 100644 --- a/map/gps_tracker.cpp +++ b/map/gps_tracker.cpp @@ -60,6 +60,11 @@ void GpsTracker::SetEnabled(bool enabled) m_track.Clear(); } +void GpsTracker::Clear() +{ + m_track.Clear(); +} + bool GpsTracker::IsEnabled() const { return m_enabled; diff --git a/map/gps_tracker.hpp b/map/gps_tracker.hpp index 8cce4eab0f..6840ec0c63 100644 --- a/map/gps_tracker.hpp +++ b/map/gps_tracker.hpp @@ -14,6 +14,7 @@ public: bool IsEnabled() const; void SetEnabled(bool enabled); + void Clear(); bool IsEmpty() const; size_t GetTrackSize() const; -- 2.45.3 From 524f3fe35841b47fc85522ae7d3ecc3b0a071b4c Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Thu, 20 Feb 2025 13:51:13 +0400 Subject: [PATCH 09/73] [ios] show `add stop` button to the selected track point during the nav mode Signed-off-by: Kiryl Kaveryn --- .../UI/PlacePage/Components/ActionBarViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift b/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift index 78bd180373..1954964d90 100644 --- a/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift @@ -82,11 +82,11 @@ final class ActionBarViewController: UIViewController { private func configButton2() { var buttons: [ActionBarButtonType] = [] + if canAddStop { + buttons.append(.routeAddStop) + } switch placePageData.objectType { case .POI, .bookmark: - if canAddStop { - buttons.append(.routeAddStop) - } buttons.append(.bookmark) case .track: buttons.append(.track) -- 2.45.3 From 98ef2d61fbacd70cb8b5377bdb2c49828eae495b Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Wed, 19 Feb 2025 19:51:32 +0400 Subject: [PATCH 10/73] [ios] export single track from the place page as kml/gpx Signed-off-by: Kiryl Kaveryn --- .../CoreApi/Bookmarks/MWMBookmarksManager.h | 8 ++++ .../CoreApi/Bookmarks/MWMBookmarksManager.mm | 6 +++ .../PlacePageHeaderBuilder.swift | 5 ++- .../PlacePageHeaderPresenter.swift | 13 +++++- .../PlacePageHeaderViewController.swift | 41 +++++++++++++++++++ .../Maps/UI/PlacePage/PlacePageBuilder.swift | 4 +- .../UI/PlacePage/PlacePageInteractor.swift | 38 ++++++++++++++++- .../Layouts/IPlacePageLayout.swift | 1 + .../Layouts/PlacePageCommonLayout.swift | 4 +- .../Layouts/PlacePageTrackLayout.swift | 4 +- .../UI/PlacePage/PlacePagePresenter.swift | 11 ++++- 11 files changed, 122 insertions(+), 13 deletions(-) diff --git a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h index 47cd173dbc..5d9e537f6b 100644 --- a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h +++ b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h @@ -116,6 +116,14 @@ NS_SWIFT_NAME(BookmarksManager) - urlToALocalFile: The local file URL containing the shared data. This parameter is guaranteed to be non-nil only if `status` is `MWMBookmarksShareStatusSuccess`. In other cases, it will be nil. */ - (void)shareAllCategoriesWithCompletion:(SharingResultCompletionHandler)completion; + +/** + Shares a specific track with the given track ID. + + @param trackId The identifier for the track to be shared. + @param fileType Text/Binary/GPX + */ +- (void)shareTrack:(MWMTrackID)trackId fileType:(MWMKmlFileType)fileType completion:(SharingResultCompletionHandler)completion; - (void)finishShareCategory; - (void)setNotificationsEnabled:(BOOL)enabled; diff --git a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm index acfa3d617b..17fa862c22 100644 --- a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm +++ b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm @@ -622,6 +622,12 @@ static KmlFileType convertFileTypeToCore(MWMKmlFileType fileType) { }); } +- (void)shareTrack:(MWMTrackID)trackId fileType:(MWMKmlFileType)fileType completion:(SharingResultCompletionHandler)completion { + self.bm.PrepareTrackFileForSharing(trackId, [self, completion](auto sharingResult) { + [self handleSharingResult:sharingResult completion:completion]; + }, convertFileTypeToCore(fileType)); +} + - (void)handleSharingResult:(BookmarkManager::SharingResult)sharingResult completion:(SharingResultCompletionHandler)completion { NSURL *urlToALocalFile = nil; MWMBookmarksShareStatus status; diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderBuilder.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderBuilder.swift index cdd6f2ea76..73d52a8e5a 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderBuilder.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderBuilder.swift @@ -1,11 +1,12 @@ class PlacePageHeaderBuilder { - static func build(data: PlacePagePreviewData, + static func build(data: PlacePageData, delegate: PlacePageHeaderViewControllerDelegate?, headerType: PlacePageHeaderPresenter.HeaderType) -> PlacePageHeaderViewController { let storyboard = UIStoryboard.instance(.placePage) let viewController = storyboard.instantiateViewController(ofType: PlacePageHeaderViewController.self); let presenter = PlacePageHeaderPresenter(view: viewController, - placePagePreviewData: data, + placePagePreviewData: data.previewData, + objectType: data.objectType, delegate: delegate, headerType: headerType) diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderPresenter.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderPresenter.swift index 60c59c123b..8278ae5e67 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderPresenter.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderPresenter.swift @@ -1,14 +1,18 @@ protocol PlacePageHeaderPresenterProtocol: AnyObject { + var objectType: PlacePageObjectType { get } + func configure() func onClosePress() func onExpandPress() func onShareButtonPress(from sourceView: UIView) + func onExportTrackButtonPress(_ type: KmlFileType, from sourceView: UIView) } protocol PlacePageHeaderViewControllerDelegate: AnyObject { func previewDidPressClose() func previewDidPressExpand() func previewDidPressShare(from sourceView: UIView) + func previewDidPressExportTrack(_ type: KmlFileType, from sourceView: UIView) } class PlacePageHeaderPresenter { @@ -19,16 +23,19 @@ class PlacePageHeaderPresenter { private weak var view: PlacePageHeaderViewProtocol? private let placePagePreviewData: PlacePagePreviewData + let objectType: PlacePageObjectType private weak var delegate: PlacePageHeaderViewControllerDelegate? private let headerType: HeaderType init(view: PlacePageHeaderViewProtocol, placePagePreviewData: PlacePagePreviewData, + objectType: PlacePageObjectType, delegate: PlacePageHeaderViewControllerDelegate?, headerType: HeaderType) { self.view = view self.delegate = delegate self.placePagePreviewData = placePagePreviewData + self.objectType = objectType self.headerType = headerType } } @@ -45,7 +52,7 @@ extension PlacePageHeaderPresenter: PlacePageHeaderPresenterProtocol { view?.isShadowViewHidden = false } // TODO: (KK) Enable share button for the tracks to share the whole track gpx/kml - view?.isShareButtonHidden = placePagePreviewData.coordinates == nil + view?.isShareButtonHidden = false } func onClosePress() { @@ -59,4 +66,8 @@ extension PlacePageHeaderPresenter: PlacePageHeaderPresenterProtocol { func onShareButtonPress(from sourceView: UIView) { delegate?.previewDidPressShare(from: sourceView) } + + func onExportTrackButtonPress(_ type: KmlFileType, from sourceView: UIView) { + delegate?.previewDidPressExportTrack(type, from: sourceView) + } } diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderViewController.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderViewController.swift index 94069e1c7c..04c05e7a76 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/PlacePageHeaderViewController.swift @@ -5,6 +5,7 @@ protocol PlacePageHeaderViewProtocol: AnyObject { var isShareButtonHidden: Bool { get set } func setTitle(_ title: String?, secondaryTitle: String?) + func showShareTrackMenu() } class PlacePageHeaderViewController: UIViewController { @@ -33,6 +34,10 @@ class PlacePageHeaderViewController: UIViewController { } closeButton.setImage(UIImage(named: "ic_close")!) shareButton.setImage(UIImage(named: "ic_share")!) + + if presenter?.objectType == .track { + configureTrackSharingMenu() + } } @objc func onExpandPressed(sender: UITapGestureRecognizer) { @@ -114,4 +119,40 @@ extension PlacePageHeaderViewController: PlacePageHeaderViewProtocol { attributedText.append(NSAttributedString(string: "\n" + unwrappedSecondaryTitle, attributes: secondaryTitleAttributes)) titleLabel?.attributedText = attributedText } + + func showShareTrackMenu() { + if #available(iOS 14.0, *) { + // The menu will be shown by the shareButton itself + } else { + let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) + let kmlAction = UIAlertAction(title: L("export_file"), style: .default) { [weak self] _ in + guard let self else { return } + self.presenter?.onExportTrackButtonPress(.text, from: self.shareButton) + } + let gpxAction = UIAlertAction(title: L("export_file_gpx"), style: .default) { [weak self] _ in + guard let self else { return } + self.presenter?.onExportTrackButtonPress(.gpx, from: self.shareButton) + } + alert.addAction(kmlAction) + alert.addAction(gpxAction) + present(alert, animated: true, completion: nil) + } + } + + private func configureTrackSharingMenu() { + if #available(iOS 14.0, *) { + let menu = UIMenu(title: "", image: nil, children: [ + UIAction(title: L("export_file"), image: nil, handler: { [weak self] _ in + guard let self else { return } + self.presenter?.onExportTrackButtonPress(.text, from: self.shareButton) + }), + UIAction(title: L("export_file_gpx"), image: nil, handler: { [weak self] _ in + guard let self else { return } + self.presenter?.onExportTrackButtonPress(.gpx, from: self.shareButton) + }), + ]) + shareButton.menu = menu + shareButton.showsMenuAsPrimaryAction = true + } + } } diff --git a/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift b/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift index 0f7795f5d3..cac8307f61 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift @@ -20,7 +20,7 @@ @unknown default: fatalError() } - let presenter = PlacePagePresenter(view: viewController) + let presenter = PlacePagePresenter(view: viewController, headerView: layout.headerViewController) viewController.setLayout(layout) viewController.interactor = interactor interactor.presenter = presenter @@ -45,7 +45,7 @@ @unknown default: fatalError() } - let presenter = PlacePagePresenter(view: viewController) + let presenter = PlacePagePresenter(view: viewController, headerView: layout.headerViewController) viewController.interactor = interactor interactor.presenter = presenter layout.presenter = presenter diff --git a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift index a7a657e205..78195ed680 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift @@ -295,8 +295,42 @@ extension PlacePageInteractor: PlacePageHeaderViewControllerDelegate { func previewDidPressShare(from sourceView: UIView) { guard let mapViewController else { return } - let shareViewController = ActivityViewController.share(forPlacePage: placePageData) - shareViewController.present(inParentViewController: mapViewController, anchorView: sourceView) + switch placePageData.objectType { + case .POI, .bookmark: + let shareViewController = ActivityViewController.share(forPlacePage: placePageData) + shareViewController.present(inParentViewController: mapViewController, anchorView: sourceView) + case .track: + presenter?.showShareTrackMenu() + default: + fatalError() + } + } + + func previewDidPressExportTrack(_ type: KmlFileType, from sourceView: UIView) { + guard let trackId = placePageData.trackData?.trackId else { + fatalError("Track data should not be nil during the track export") + } + bookmarksManager.shareTrack(trackId, fileType: type) { [weak self] status, url in + guard let self, let mapViewController else { return } + switch status { + case .success: + guard let url else { fatalError("Invalid sharing url") } + let shareViewController = ActivityViewController.share(for: url, message: self.placePageData.previewData.title!) { _,_,_,_ in + self.bookmarksManager.finishShareCategory() + } + shareViewController.present(inParentViewController: mapViewController, anchorView: sourceView) + case .emptyCategory: + self.showAlert(withTitle: L("bookmarks_error_title_share_empty"), + message: L("bookmarks_error_message_share_empty")) + case .archiveError, .fileError: + self.showAlert(withTitle: L("dialog_routing_system_error"), + message: L("bookmarks_error_message_share_general")) + } + } + } + + private func showAlert(withTitle title: String, message: String) { + MWMAlertViewController.activeAlert().presentInfoAlert(title, text: message) } } diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/IPlacePageLayout.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/IPlacePageLayout.swift index 8189c97a76..ca8cc89456 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/IPlacePageLayout.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/IPlacePageLayout.swift @@ -24,6 +24,7 @@ enum PlacePageState { protocol IPlacePageLayout: AnyObject { var presenter: PlacePagePresenterProtocol? { get set } var headerViewControllers: [UIViewController] { get } + var headerViewController: PlacePageHeaderViewController { get } var bodyViewControllers: [UIViewController] { get } var actionBar: ActionBarViewController? { get } var navigationBar: UIViewController? { get } diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift index cc9f44096e..a49e96e3c1 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift @@ -27,7 +27,7 @@ class PlacePageCommonLayout: NSObject, IPlacePageLayout { } lazy var headerViewController: PlacePageHeaderViewController = { - PlacePageHeaderBuilder.build(data: placePageData.previewData, delegate: interactor, headerType: .flexible) + PlacePageHeaderBuilder.build(data: placePageData, delegate: interactor, headerType: .flexible) }() lazy var previewViewController: PlacePagePreviewViewController = { @@ -81,7 +81,7 @@ class PlacePageCommonLayout: NSObject, IPlacePageLayout { } () lazy var placePageNavigationViewController: PlacePageHeaderViewController = { - return PlacePageHeaderBuilder.build(data: placePageData.previewData, delegate: interactor, headerType: .fixed) + return PlacePageHeaderBuilder.build(data: placePageData, delegate: interactor, headerType: .fixed) } () init(interactor: PlacePageInteractor, storyboard: UIStoryboard, data: PlacePageData) { diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageTrackLayout.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageTrackLayout.swift index 7faf58fcb4..0c6e55c6eb 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageTrackLayout.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageTrackLayout.swift @@ -22,7 +22,7 @@ class PlacePageTrackLayout: IPlacePageLayout { }() lazy var headerViewController: PlacePageHeaderViewController = { - PlacePageHeaderBuilder.build(data: placePageData.previewData, delegate: interactor, headerType: .flexible) + PlacePageHeaderBuilder.build(data: placePageData, delegate: interactor, headerType: .flexible) }() lazy var previewViewController: PlacePagePreviewViewController = { @@ -32,7 +32,7 @@ class PlacePageTrackLayout: IPlacePageLayout { }() lazy var placePageNavigationViewController: PlacePageHeaderViewController = { - return PlacePageHeaderBuilder.build(data: placePageData.previewData, delegate: interactor, headerType: .fixed) + return PlacePageHeaderBuilder.build(data: placePageData, delegate: interactor, headerType: .fixed) }() lazy var editTrackViewController: PlacePageEditBookmarkOrTrackViewController = { diff --git a/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift b/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift index 133e550f83..4bc4b63bfa 100644 --- a/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift +++ b/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift @@ -4,13 +4,16 @@ protocol PlacePagePresenterProtocol: AnyObject { func showNextStop() func closeAnimated() func showAlert(_ alert: UIAlertController) + func showShareTrackMenu() } -class PlacePagePresenter: NSObject { +final class PlacePagePresenter: NSObject { private weak var view: PlacePageViewProtocol! + private weak var headerView: PlacePageHeaderViewProtocol! - init(view: PlacePageViewProtocol) { + init(view: PlacePageViewProtocol, headerView: PlacePageHeaderViewProtocol) { self.view = view + self.headerView = headerView } } @@ -36,4 +39,8 @@ extension PlacePagePresenter: PlacePagePresenterProtocol { func showAlert(_ alert: UIAlertController) { view.showAlert(alert) } + + func showShareTrackMenu() { + headerView.showShareTrackMenu() + } } -- 2.45.3 From 83994a247e2b1749bbb313c58f861d873797a5f9 Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Wed, 19 Feb 2025 19:56:01 +0400 Subject: [PATCH 11/73] [ios] rename `finishShareCategory` to `finishSharing` Signed-off-by: Kiryl Kaveryn --- iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h | 2 +- iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm | 2 +- .../Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift | 2 +- .../Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift | 2 +- iphone/Maps/UI/PlacePage/PlacePageInteractor.swift | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h index 5d9e537f6b..6c02ab31b9 100644 --- a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h +++ b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.h @@ -124,7 +124,7 @@ NS_SWIFT_NAME(BookmarksManager) @param fileType Text/Binary/GPX */ - (void)shareTrack:(MWMTrackID)trackId fileType:(MWMKmlFileType)fileType completion:(SharingResultCompletionHandler)completion; -- (void)finishShareCategory; +- (void)finishSharing; - (void)setNotificationsEnabled:(BOOL)enabled; - (BOOL)areNotificationsEnabled; diff --git a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm index 17fa862c22..bf9b0ba2db 100644 --- a/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm +++ b/iphone/CoreApi/CoreApi/Bookmarks/MWMBookmarksManager.mm @@ -651,7 +651,7 @@ static KmlFileType convertFileTypeToCore(MWMKmlFileType fileType) { completion(status, urlToALocalFile); } -- (void)finishShareCategory { +- (void)finishSharing { if (!self.shareCategoryURL) return; diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift index af144e5151..fb4dff1d24 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift @@ -158,7 +158,7 @@ extension BookmarksListInteractor: IBookmarksListInteractor { } func finishExportFile() { - bookmarksManager.finishShareCategory() + bookmarksManager.finishSharing() } func addToBookmarksManagerObserverList() { diff --git a/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift b/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift index 42baa86d67..6198d693e2 100644 --- a/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift +++ b/iphone/Maps/Bookmarks/Categories/BMCViewModel/BMCDefaultViewModel.swift @@ -163,7 +163,7 @@ extension BMCDefaultViewModel { } func finishShareCategory() { - manager.finishShareCategory() + manager.finishSharing() } func addToObserverList() { diff --git a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift index 78195ed680..bb2e8161b3 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift @@ -316,7 +316,7 @@ extension PlacePageInteractor: PlacePageHeaderViewControllerDelegate { case .success: guard let url else { fatalError("Invalid sharing url") } let shareViewController = ActivityViewController.share(for: url, message: self.placePageData.previewData.title!) { _,_,_,_ in - self.bookmarksManager.finishShareCategory() + self.bookmarksManager.finishSharing() } shareViewController.present(inParentViewController: mapViewController, anchorView: sourceView) case .emptyCategory: -- 2.45.3 From 9e47a49ec01a8eef931575de3c79a2e8970afc3d Mon Sep 17 00:00:00 2001 From: varad64 Date: Tue, 1 Oct 2024 19:49:54 +0530 Subject: [PATCH 12/73] Use SharedPreferences to restore the last selected search tab on app restart. Code refactor to change LastSelectedTab to LastSearchedTab. Signed-off-by: varad64 Code refactor to change LastSelectedTab to LastSearchedTab --- .../java/app/organicmaps/search/SearchFragment.java | 6 +++++- .../main/java/app/organicmaps/search/TabAdapter.java | 10 +++++++++- .../app/src/main/java/app/organicmaps/util/Config.java | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/search/SearchFragment.java b/android/app/src/main/java/app/organicmaps/search/SearchFragment.java index 6135ec444b..054560b4cc 100644 --- a/android/app/src/main/java/app/organicmaps/search/SearchFragment.java +++ b/android/app/src/main/java/app/organicmaps/search/SearchFragment.java @@ -3,6 +3,7 @@ package app.organicmaps.search; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.location.Location; import android.os.Bundle; import android.text.TextUtils; @@ -22,6 +23,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import app.organicmaps.Framework; import app.organicmaps.MwmActivity; +import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.base.BaseMwmFragment; import app.organicmaps.bookmarks.data.FeatureId; @@ -299,8 +301,10 @@ public class SearchFragment extends BaseMwmFragment SearchEngine.INSTANCE.addListener(this); + SharedPreferences preferences = MwmApplication.prefs(requireContext()); + int lastSelectedTabPosition = preferences.getInt(Config.KEY_PREF_LAST_SEARCHED_TAB, 0); if (SearchRecents.getSize() == 0 && Config.isSearchHistoryEnabled()) - pager.setCurrentItem(TabAdapter.Tab.CATEGORIES.ordinal()); + pager.setCurrentItem(lastSelectedTabPosition); tabAdapter.setTabSelectedListener(tab -> mToolbarController.deactivate()); diff --git a/android/app/src/main/java/app/organicmaps/search/TabAdapter.java b/android/app/src/main/java/app/organicmaps/search/TabAdapter.java index a803e2a582..5de16dfd38 100644 --- a/android/app/src/main/java/app/organicmaps/search/TabAdapter.java +++ b/android/app/src/main/java/app/organicmaps/search/TabAdapter.java @@ -1,6 +1,7 @@ package app.organicmaps.search; import android.content.Context; +import android.content.SharedPreferences; import android.util.SparseArray; import android.view.View; @@ -11,6 +12,8 @@ import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; + +import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.util.Graphics; import app.organicmaps.util.Config; @@ -91,6 +94,9 @@ class TabAdapter extends FragmentPagerAdapter @Override public void onTabSelected(TabLayout.Tab tab) { + SharedPreferences.Editor editor = MwmApplication.prefs(mContext).edit(); + editor.putInt(Config.KEY_PREF_LAST_SEARCHED_TAB, tab.getPosition()); + editor.apply(); super.onTabSelected(tab); Graphics.tint(mContext, tab.getIcon(), androidx.appcompat.R.attr.colorAccent); } @@ -151,7 +157,9 @@ class TabAdapter extends FragmentPagerAdapter ViewPager.OnPageChangeListener listener = new PageChangedListener(tabs); mPager.addOnPageChangeListener(listener); tabs.setOnTabSelectedListener(new OnTabSelectedListenerForViewPager(mPager)); - listener.onPageSelected(0); + SharedPreferences preferences = MwmApplication.prefs(mPager.getContext()); + int lastSelectedTabPosition = preferences.getInt(Config.KEY_PREF_LAST_SEARCHED_TAB, 0); + listener.onPageSelected(lastSelectedTabPosition); } void setTabSelectedListener(OnTabSelectedListener listener) diff --git a/android/app/src/main/java/app/organicmaps/util/Config.java b/android/app/src/main/java/app/organicmaps/util/Config.java index 14eccbcead..2f9cdbf882 100644 --- a/android/app/src/main/java/app/organicmaps/util/Config.java +++ b/android/app/src/main/java/app/organicmaps/util/Config.java @@ -7,7 +7,6 @@ import android.os.Build; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import app.organicmaps.BuildConfig; -import app.organicmaps.MwmActivity; import app.organicmaps.MwmApplication; import app.organicmaps.R; @@ -36,6 +35,8 @@ public final class Config private static final String KEY_DONATE_URL = "DonateUrl"; private static final String KEY_PREF_SEARCH_HISTORY = "SearchHistoryEnabled"; + public static final String KEY_PREF_LAST_SEARCHED_TAB = "LastSearchTab"; + /** * The total number of app launches. */ -- 2.45.3 From db4371e2c38a49d9702750af7688e1b4ee915df2 Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Mon, 24 Feb 2025 17:47:17 +0400 Subject: [PATCH 13/73] [ios] refactor search screen cells and tab bar - remove xibs where possible - update cells style (fonts, colors, icons) Signed-off-by: Kiryl Kaveryn --- .../Categories/UIImage+FilledWithColor.swift | 9 ++ iphone/Maps/Classes/MWMTableViewCell.m | 9 +- iphone/Maps/Core/Search/SearchResult.h | 4 + iphone/Maps/Core/Search/SearchResult.mm | 21 +++++ .../Maps/Core/Theme/Components/IFonts.swift | 1 + iphone/Maps/Core/Theme/FontStyleSheet.swift | 2 + iphone/Maps/Core/Theme/Fonts.swift | 1 + iphone/Maps/Core/Theme/GlobalStyleSheet.swift | 5 ++ iphone/Maps/Maps.xcodeproj/project.pbxproj | 32 +++---- .../Maps/UI/Search/TableView/MWMSearchCell.h | 4 +- .../Maps/UI/Search/TableView/MWMSearchCell.mm | 5 +- .../UI/Search/TableView/MWMSearchCommonCell.h | 2 +- .../Search/TableView/MWMSearchCommonCell.mm | 29 +++---- .../Search/TableView/MWMSearchCommonCell.xib | 86 ++++++++++--------- .../TableView/MWMSearchSuggestionCell.mm | 3 +- .../TableView/MWMSearchSuggestionCell.xib | 33 +++---- .../TableView/MWMSearchTableViewController.mm | 4 +- .../MWMSearchTableViewController.xib | 6 +- .../SearchCategoriesViewController.swift | 17 ++-- .../CategoriesTab/SearchCategoryCell.swift | 27 ++++-- .../Tabs/CategoriesTab/SearchCategoryCell.xib | 66 -------------- .../Tabs/HistoryTab/SearchHistoryCell.swift | 34 ++++++++ .../HistoryTab/SearchHistoryClearCell.xib | 66 -------------- .../HistoryTab/SearchHistoryQueryCell.swift | 7 -- .../HistoryTab/SearchHistoryQueryCell.xib | 68 --------------- .../SearchHistoryViewController.swift | 15 ++-- .../SearchHistoryViewController.xib | 14 +-- .../Search/Tabs/SearchTabViewController.swift | 3 +- 28 files changed, 220 insertions(+), 353 deletions(-) create mode 100644 iphone/Maps/Categories/UIImage+FilledWithColor.swift delete mode 100644 iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.xib create mode 100644 iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryCell.swift delete mode 100644 iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryClearCell.xib delete mode 100644 iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.swift delete mode 100644 iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.xib diff --git a/iphone/Maps/Categories/UIImage+FilledWithColor.swift b/iphone/Maps/Categories/UIImage+FilledWithColor.swift new file mode 100644 index 0000000000..7973ff3c03 --- /dev/null +++ b/iphone/Maps/Categories/UIImage+FilledWithColor.swift @@ -0,0 +1,9 @@ +extension UIImage { + static func filled(with color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) -> UIImage { + let renderer = UIGraphicsImageRenderer(size: size) + return renderer.image { context in + color.setFill() + context.fill(CGRect(origin: .zero, size: size)) + } + } +} diff --git a/iphone/Maps/Classes/MWMTableViewCell.m b/iphone/Maps/Classes/MWMTableViewCell.m index 2072f19369..279c208c4c 100644 --- a/iphone/Maps/Classes/MWMTableViewCell.m +++ b/iphone/Maps/Classes/MWMTableViewCell.m @@ -23,8 +23,7 @@ - (void)setIsSeparatorHidden:(BOOL)isSeparatorHidden { _isSeparatorHidden = isSeparatorHidden; - if (isSeparatorHidden) - [self hideSeparators]; + isSeparatorHidden ? [self hideSeparators] : [self showSeparators]; } - (void)hideSeparators @@ -33,6 +32,12 @@ view.hidden = [[[view class] className] isEqualToString:@"_UITableViewCellSeparatorView"]; } +- (void)showSeparators +{ + for (UIView * view in self.subviews) + view.hidden = NO; +} + - (void)layoutSubviews { [super layoutSubviews]; diff --git a/iphone/Maps/Core/Search/SearchResult.h b/iphone/Maps/Core/Search/SearchResult.h index 64a717c02b..c06eaa695a 100644 --- a/iphone/Maps/Core/Search/SearchResult.h +++ b/iphone/Maps/Core/Search/SearchResult.h @@ -8,6 +8,7 @@ NS_ASSUME_NONNULL_BEGIN @interface SearchResult : NSObject @property (nonatomic, readonly) NSString * titleText; +@property (nonatomic, readonly) NSString * iconImageName; @property (nonatomic, readonly) NSString * addressText; @property (nonatomic, readonly) NSString * infoText; @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; @@ -21,6 +22,9 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) NSArray * highlightRanges; @property (nonatomic, readonly) SearchItemType itemType; +/// This initializer is intended only for testing purposes. +- (instancetype)initWithTitleText:(NSString *)titleText type:(SearchItemType)type suggestion:(NSString *)suggestion; + @end NS_ASSUME_NONNULL_END diff --git a/iphone/Maps/Core/Search/SearchResult.mm b/iphone/Maps/Core/Search/SearchResult.mm index c176652c2c..0cd9373cc6 100644 --- a/iphone/Maps/Core/Search/SearchResult.mm +++ b/iphone/Maps/Core/Search/SearchResult.mm @@ -6,9 +6,22 @@ #import "platform/localization.hpp" #import "platform/distance.hpp" +#include "map/bookmark_helpers.hpp" + #import "geometry/mercator.hpp" @implementation SearchResult + +- (instancetype)initWithTitleText:(NSString *)titleText type:(SearchItemType)type suggestion:(NSString *)suggestion { + self = [super init]; + if (self) { + _titleText = titleText; + _itemType = type; + _suggestion = suggestion; + }; + return self; +} + @end @implementation SearchResult(Core) @@ -80,6 +93,14 @@ _highlightRanges = [ranges copy]; _itemType = itemType; + + if (result.GetResultType() == search::Result::Type::Feature) { + auto const featureType = result.GetFeatureType(); + auto const bookmarkImage = GetBookmarkIconByFeatureType(featureType); + _iconImageName = [NSString stringWithFormat:@"%@%@", + @"ic_bm_", + [@(kml::ToString(bookmarkImage).c_str()) lowercaseString]]; + } } return self; } diff --git a/iphone/Maps/Core/Theme/Components/IFonts.swift b/iphone/Maps/Core/Theme/Components/IFonts.swift index c82c4a1359..6bcdadef66 100644 --- a/iphone/Maps/Core/Theme/Components/IFonts.swift +++ b/iphone/Maps/Core/Theme/Components/IFonts.swift @@ -17,6 +17,7 @@ var medium9: UIFont { get } var medium10: UIFont { get } var medium12: UIFont { get } + var medium13: UIFont { get } var medium14: UIFont { get } var medium16: UIFont { get } var medium17: UIFont { get } diff --git a/iphone/Maps/Core/Theme/FontStyleSheet.swift b/iphone/Maps/Core/Theme/FontStyleSheet.swift index b687482d2d..fc7da2766b 100644 --- a/iphone/Maps/Core/Theme/FontStyleSheet.swift +++ b/iphone/Maps/Core/Theme/FontStyleSheet.swift @@ -17,6 +17,7 @@ enum FontStyleSheet: String, CaseIterable { case medium9 case medium10 case medium12 + case medium13 case medium14 case medium16 case medium17 @@ -83,6 +84,7 @@ extension FontStyleSheet: IStyleSheet { case .medium9: return fonts.medium9 case .medium10: return fonts.medium10 case .medium12: return fonts.medium12 + case .medium13: return fonts.medium13 case .medium14: return fonts.medium14 case .medium16: return fonts.medium16 case .medium17: return fonts.medium17 diff --git a/iphone/Maps/Core/Theme/Fonts.swift b/iphone/Maps/Core/Theme/Fonts.swift index 40eae432d7..718b0d7b70 100644 --- a/iphone/Maps/Core/Theme/Fonts.swift +++ b/iphone/Maps/Core/Theme/Fonts.swift @@ -16,6 +16,7 @@ class Fonts: IFonts { var medium9 = UIFont.systemFont(ofSize: 9, weight:UIFont.Weight.medium) var medium10 = UIFont.systemFont(ofSize: 10, weight:UIFont.Weight.medium) var medium12 = UIFont.systemFont(ofSize: 12, weight:UIFont.Weight.medium) + var medium13 = UIFont.systemFont(ofSize: 13, weight:UIFont.Weight.medium) var medium14 = UIFont.systemFont(ofSize: 14, weight:UIFont.Weight.medium) var medium16 = UIFont.systemFont(ofSize: 16, weight:UIFont.Weight.medium) var medium17 = UIFont.systemFont(ofSize: 17, weight:UIFont.Weight.medium) diff --git a/iphone/Maps/Core/Theme/GlobalStyleSheet.swift b/iphone/Maps/Core/Theme/GlobalStyleSheet.swift index d609df62cd..60590d985b 100644 --- a/iphone/Maps/Core/Theme/GlobalStyleSheet.swift +++ b/iphone/Maps/Core/Theme/GlobalStyleSheet.swift @@ -2,6 +2,7 @@ enum GlobalStyleSheet: String, CaseIterable { case tableView = "TableView" case tableCell = "TableCell" case tableViewCell = "MWMTableViewCell" + case defaultTableViewCell case tableViewHeaderFooterView = "TableViewHeaderFooterView" case searchBar = "SearchBar" case navigationBar = "NavigationBar" @@ -81,6 +82,10 @@ extension GlobalStyleSheet: IStyleSheet { case .tableViewCell: return .addFrom(Self.tableCell) { s in } + case .defaultTableViewCell: + return .add { s in + s.backgroundColor = colors.white + } case .tableViewHeaderFooterView: return .add { s in s.font = fonts.medium14 diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 95869c9cc6..ec78d74d37 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -11,11 +11,10 @@ 1DFA2F6A20D3B57400FB2C66 /* UIColor+PartnerColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DFA2F6920D3B57400FB2C66 /* UIColor+PartnerColor.m */; }; 3304306D21D4EAFB00317CA3 /* SearchCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */; }; 33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */; }; - 337F98A321D37B5800C8AC27 /* SearchHistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 337F98A021D37B5700C8AC27 /* SearchHistoryViewController.xib */; }; 337F98A621D37B7400C8AC27 /* SearchTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98A521D37B7400C8AC27 /* SearchTabViewController.swift */; }; 337F98B221D3BAE600C8AC27 /* SearchCategoriesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98B121D3BAE600C8AC27 /* SearchCategoriesViewController.swift */; }; 337F98B421D3C9F200C8AC27 /* SearchHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98B321D3C9F200C8AC27 /* SearchHistoryViewController.swift */; }; - 337F98B821D3D67E00C8AC27 /* SearchHistoryQueryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98B721D3D67E00C8AC27 /* SearchHistoryQueryCell.swift */; }; + 337F98B821D3D67E00C8AC27 /* SearchHistoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 337F98B721D3D67E00C8AC27 /* SearchHistoryCell.swift */; }; 340416481E7BF28E00E2B6D6 /* UIView+Snapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340416461E7BF28E00E2B6D6 /* UIView+Snapshot.swift */; }; 3404164C1E7BF42E00E2B6D6 /* UIView+Coordinates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3404164A1E7BF42D00E2B6D6 /* UIView+Coordinates.swift */; }; 3404754D1E081A4600C92850 /* MWMKeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 340475191E081A4600C92850 /* MWMKeyboard.m */; }; @@ -508,6 +507,7 @@ ED7CCC4F2C1362E300E2A737 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7CCC4E2C1362E300E2A737 /* FileType.swift */; }; ED808D0F2C38407800D52585 /* CircleImageButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED808D0E2C38407800D52585 /* CircleImageButton.swift */; }; ED8270F02C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8270EF2C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift */; }; + ED83880F2D54DEB3002A0536 /* UIImage+FilledWithColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */; }; ED914AB22D35063A00973C45 /* TextColorStyleSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED914AB12D35063A00973C45 /* TextColorStyleSheet.swift */; }; ED914AB82D351DF000973C45 /* StyleApplicable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED914AB72D351DF000973C45 /* StyleApplicable.swift */; }; ED914ABE2D351FF800973C45 /* UILabel+SetFontStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED914ABD2D351FF800973C45 /* UILabel+SetFontStyle.swift */; }; @@ -523,6 +523,7 @@ EDC4E3612C5E2576009286A2 /* RecentlyDeletedCategoriesViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC4E3412C5D1BD3009286A2 /* RecentlyDeletedCategoriesViewModelTests.swift */; }; EDC4E3692C5E6F5B009286A2 /* MockRecentlyDeletedCategoriesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC4E3402C5D1BD3009286A2 /* MockRecentlyDeletedCategoriesManager.swift */; }; EDCA7CDF2D317DF9003366CE /* StyleSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDCA7CDE2D317DF9003366CE /* StyleSheet.swift */; }; + EDDE060E2D6CAEAF000C328A /* SearchHistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDDE060D2D6CAEAF000C328A /* SearchHistoryViewController.xib */; }; EDE243DD2B6D2E640057369B /* AboutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDE243D52B6CF3980057369B /* AboutController.swift */; }; EDE243E52B6D3F400057369B /* OSMView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDE243E42B6D3F400057369B /* OSMView.swift */; }; EDE243E72B6D55610057369B /* InfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDE243E02B6D3EA00057369B /* InfoView.swift */; }; @@ -622,9 +623,6 @@ F6E2FEE51E097BA00083EBEC /* MWMSearchNoResults.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCFD1E097B9F0083EBEC /* MWMSearchNoResults.m */; }; F6E2FEE81E097BA00083EBEC /* MWMSearchNoResults.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCFE1E097B9F0083EBEC /* MWMSearchNoResults.xib */; }; F6E2FEEE1E097BA00083EBEC /* MWMSearchView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD011E097B9F0083EBEC /* MWMSearchView.xib */; }; - F6E2FF001E097BA00083EBEC /* SearchCategoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD0E1E097B9F0083EBEC /* SearchCategoryCell.xib */; }; - F6E2FF061E097BA00083EBEC /* SearchHistoryClearCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD121E097B9F0083EBEC /* SearchHistoryClearCell.xib */; }; - F6E2FF151E097BA00083EBEC /* SearchHistoryQueryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD1A1E097B9F0083EBEC /* SearchHistoryQueryCell.xib */; }; F6E2FF2D1E097BA00083EBEC /* MWMSearchCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD2A1E097BA00083EBEC /* MWMSearchCell.mm */; }; F6E2FF301E097BA00083EBEC /* MWMSearchCommonCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD2C1E097BA00083EBEC /* MWMSearchCommonCell.mm */; }; F6E2FF331E097BA00083EBEC /* MWMSearchCommonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD2D1E097BA00083EBEC /* MWMSearchCommonCell.xib */; }; @@ -797,11 +795,10 @@ 30034C602B3F0B8A005D961A /* az */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = az; path = az.lproj/InfoPlist.strings; sourceTree = ""; }; 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchCategoryCell.swift; sourceTree = ""; }; 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategorySettingsViewController.swift; sourceTree = ""; }; - 337F98A021D37B5700C8AC27 /* SearchHistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchHistoryViewController.xib; sourceTree = ""; }; 337F98A521D37B7400C8AC27 /* SearchTabViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchTabViewController.swift; sourceTree = ""; }; 337F98B121D3BAE600C8AC27 /* SearchCategoriesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchCategoriesViewController.swift; sourceTree = ""; }; 337F98B321D3C9F200C8AC27 /* SearchHistoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryViewController.swift; sourceTree = ""; }; - 337F98B721D3D67E00C8AC27 /* SearchHistoryQueryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryQueryCell.swift; sourceTree = ""; }; + 337F98B721D3D67E00C8AC27 /* SearchHistoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryCell.swift; sourceTree = ""; }; 340416461E7BF28E00E2B6D6 /* UIView+Snapshot.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Snapshot.swift"; sourceTree = ""; }; 3404164A1E7BF42D00E2B6D6 /* UIView+Coordinates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Coordinates.swift"; sourceTree = ""; }; 340475181E081A4600C92850 /* MWMKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMKeyboard.h; sourceTree = ""; }; @@ -1475,6 +1472,7 @@ ED7CCC4E2C1362E300E2A737 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; ED808D0E2C38407800D52585 /* CircleImageButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleImageButton.swift; sourceTree = ""; }; ED8270EF2C2071A3005966DA /* SettingsTableViewDetailedSwitchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTableViewDetailedSwitchCell.swift; sourceTree = ""; }; + ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+FilledWithColor.swift"; sourceTree = ""; }; ED914AB12D35063A00973C45 /* TextColorStyleSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextColorStyleSheet.swift; sourceTree = ""; }; ED914AB72D351DF000973C45 /* StyleApplicable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StyleApplicable.swift; sourceTree = ""; }; ED914ABD2D351FF800973C45 /* UILabel+SetFontStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+SetFontStyle.swift"; sourceTree = ""; }; @@ -1490,6 +1488,7 @@ EDC4E3482C5D1BEF009286A2 /* RecentlyDeletedCategoriesViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentlyDeletedCategoriesViewModel.swift; sourceTree = ""; }; EDC4E3492C5D1BEF009286A2 /* RecentlyDeletedTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentlyDeletedTableViewCell.swift; sourceTree = ""; }; EDCA7CDE2D317DF9003366CE /* StyleSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StyleSheet.swift; sourceTree = ""; }; + EDDE060D2D6CAEAF000C328A /* SearchHistoryViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchHistoryViewController.xib; sourceTree = ""; }; EDE243D52B6CF3980057369B /* AboutController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutController.swift; sourceTree = ""; }; EDE243E02B6D3EA00057369B /* InfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoView.swift; sourceTree = ""; }; EDE243E42B6D3F400057369B /* OSMView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OSMView.swift; sourceTree = ""; }; @@ -1675,9 +1674,6 @@ F6E2FCFD1E097B9F0083EBEC /* MWMSearchNoResults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = MWMSearchNoResults.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6E2FCFE1E097B9F0083EBEC /* MWMSearchNoResults.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchNoResults.xib; sourceTree = ""; }; F6E2FD011E097B9F0083EBEC /* MWMSearchView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchView.xib; sourceTree = ""; }; - F6E2FD0E1E097B9F0083EBEC /* SearchCategoryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchCategoryCell.xib; sourceTree = ""; }; - F6E2FD121E097B9F0083EBEC /* SearchHistoryClearCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchHistoryClearCell.xib; sourceTree = ""; }; - F6E2FD1A1E097B9F0083EBEC /* SearchHistoryQueryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchHistoryQueryCell.xib; sourceTree = ""; }; F6E2FD231E097BA00083EBEC /* MWMSearchTabbedViewProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchTabbedViewProtocol.h; sourceTree = ""; }; F6E2FD291E097BA00083EBEC /* MWMSearchCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchCell.h; sourceTree = ""; }; F6E2FD2A1E097BA00083EBEC /* MWMSearchCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchCell.mm; sourceTree = ""; }; @@ -2240,6 +2236,7 @@ 3454D7981E07F045004AF2AD /* Categories */ = { isa = PBXGroup; children = ( + ED83880E2D54DEA4002A0536 /* UIImage+FilledWithColor.swift */, 99A614E223CDD1D900D8D8D0 /* UIButton+RuntimeAttributes.h */, 99A614E323CDD1D900D8D8D0 /* UIButton+RuntimeAttributes.m */, 34D3B04D1E38A20C004100F9 /* Bundle+Init.swift */, @@ -3864,7 +3861,6 @@ children = ( 337F98B121D3BAE600C8AC27 /* SearchCategoriesViewController.swift */, 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */, - F6E2FD0E1E097B9F0083EBEC /* SearchCategoryCell.xib */, ); path = CategoriesTab; sourceTree = ""; @@ -3872,11 +3868,9 @@ F6E2FD0F1E097B9F0083EBEC /* HistoryTab */ = { isa = PBXGroup; children = ( - F6E2FD121E097B9F0083EBEC /* SearchHistoryClearCell.xib */, - 337F98B721D3D67E00C8AC27 /* SearchHistoryQueryCell.swift */, - F6E2FD1A1E097B9F0083EBEC /* SearchHistoryQueryCell.xib */, + EDDE060D2D6CAEAF000C328A /* SearchHistoryViewController.xib */, + 337F98B721D3D67E00C8AC27 /* SearchHistoryCell.swift */, 337F98B321D3C9F200C8AC27 /* SearchHistoryViewController.swift */, - 337F98A021D37B5700C8AC27 /* SearchHistoryViewController.xib */, ); path = HistoryTab; sourceTree = ""; @@ -4272,6 +4266,7 @@ 6741A9991BF340DE002C974C /* MWMAlertViewController.xib in Resources */, 4501B1942077C35A001B9173 /* resources-xxxhdpi_light in Resources */, 3467CEB7202C6FA900D3C670 /* BMCNotificationsCell.xib in Resources */, + EDDE060E2D6CAEAF000C328A /* SearchHistoryViewController.xib in Resources */, 4761BE2B252D3DB900EE2DE4 /* SubgroupCell.xib in Resources */, 99F9A0E72462CA1700AE21E0 /* DownloadAllView.xib in Resources */, 349D1AD51E2E325B004A2006 /* BottomMenuItemCell.xib in Resources */, @@ -4318,7 +4313,6 @@ FA637ED529A500BE00D8921A /* drules_proto_outdoors_dark.bin in Resources */, 4554B6EC1E55F0EF0084017F /* drules_proto_vehicle_light.bin in Resources */, 47CA68F2250B54AF00671019 /* BookmarksListCell.xib in Resources */, - 337F98A321D37B5800C8AC27 /* SearchHistoryViewController.xib in Resources */, F6E2FE761E097BA00083EBEC /* MWMOpeningHoursCell.xib in Resources */, 34AB66351FC5AA330078E451 /* RouteManagerCell.xib in Resources */, F6E2FE011E097BA00083EBEC /* MWMOpeningHoursClosedSpanTableViewCell.xib in Resources */, @@ -4335,12 +4329,9 @@ F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */, 6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */, B3E3B4FD20D463B700DA8C13 /* BMCCategoriesHeader.xib in Resources */, - F6E2FF001E097BA00083EBEC /* SearchCategoryCell.xib in Resources */, F6E2FF331E097BA00083EBEC /* MWMSearchCommonCell.xib in Resources */, - F6E2FF061E097BA00083EBEC /* SearchHistoryClearCell.xib in Resources */, BB7626B61E85599C0031D71C /* icudt75l.dat in Resources */, 34AB665C1FC5AA330078E451 /* TransportTransitIntermediatePoint.xib in Resources */, - F6E2FF151E097BA00083EBEC /* SearchHistoryQueryCell.xib in Resources */, F6E2FEE81E097BA00083EBEC /* MWMSearchNoResults.xib in Resources */, 34AB660E1FC5AA320078E451 /* NavigationControlView.xib in Resources */, 408645FC21495EB1000A4A1D /* categories_cuisines.txt in Resources */, @@ -4679,6 +4670,7 @@ 99012852244732DB00C72B10 /* BottomTabBarBuilder.swift in Sources */, 99012847243F0D6900C72B10 /* UIViewController+alternative.swift in Sources */, 995739062355CAC40019AEE7 /* ImageViewCrossDisolve.swift in Sources */, + ED83880F2D54DEB3002A0536 /* UIImage+FilledWithColor.swift in Sources */, 47B9065221C7FA400079C85E /* MWMWebImage.m in Sources */, 47A13CAD24BE9AA500027D4F /* DatePickerViewRenderer.swift in Sources */, ED2E328E2D10500900807A08 /* TrackRecordingButtonArea.swift in Sources */, @@ -4767,7 +4759,7 @@ 47E460AD240D737D00385B45 /* OpeinigHoursLocalization.swift in Sources */, 99F9A0E52462CA0E00AE21E0 /* DownloadAllView.swift in Sources */, F6E2FF301E097BA00083EBEC /* MWMSearchCommonCell.mm in Sources */, - 337F98B821D3D67E00C8AC27 /* SearchHistoryQueryCell.swift in Sources */, + 337F98B821D3D67E00C8AC27 /* SearchHistoryCell.swift in Sources */, 34AB66621FC5AA330078E451 /* TransportTransitSeparator.swift in Sources */, CDCA2743223F8D1E00167D87 /* ListItemInfo.swift in Sources */, 993DF11F23F6BDB100AC231A /* UITableViewCellRenderer.swift in Sources */, diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchCell.h b/iphone/Maps/UI/Search/TableView/MWMSearchCell.h index 97d873854c..cff502b8a3 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchCell.h +++ b/iphone/Maps/UI/Search/TableView/MWMSearchCell.h @@ -2,8 +2,10 @@ @class SearchResult; +static CGFloat const kSearchCellSeparatorInset = 48; + @interface MWMSearchCell : MWMTableViewCell -- (void)configureWith:(SearchResult * _Nonnull)result; +- (void)configureWith:(SearchResult * _Nonnull)result isPartialMatching:(BOOL)isPartialMatching; @end diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchCell.mm b/iphone/Maps/UI/Search/TableView/MWMSearchCell.mm index 8bb51f8bc2..e447d19f70 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchCell.mm +++ b/iphone/Maps/UI/Search/TableView/MWMSearchCell.mm @@ -9,7 +9,7 @@ @implementation MWMSearchCell -- (void)configureWith:(SearchResult * _Nonnull)result { +- (void)configureWith:(SearchResult * _Nonnull)result isPartialMatching:(BOOL)isPartialMatching { NSString * title = result.titleText; if (title.length == 0) @@ -27,9 +27,10 @@ } NSMutableAttributedString * attributedTitle = [[NSMutableAttributedString alloc] initWithString:title]; - [attributedTitle addAttributes:unselectedTitleAttributes range:NSMakeRange(0, title.length)]; + NSDictionary * titleAttributes = isPartialMatching ? unselectedTitleAttributes : selectedTitleAttributes; NSArray *highlightRanges = result.highlightRanges; + [attributedTitle addAttributes:titleAttributes range:NSMakeRange(0, title.length)]; for (NSValue *rangeValue in highlightRanges) { NSRange range = [rangeValue rangeValue]; diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.h b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.h index 6ed78b127d..a66d784289 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.h +++ b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.h @@ -5,6 +5,6 @@ NS_SWIFT_NAME(SearchCommonCell) @interface MWMSearchCommonCell : MWMSearchCell -- (void)configureWith:(SearchResult * _Nonnull)result; +- (void)configureWith:(SearchResult * _Nonnull)result isPartialMatching:(BOOL)isPartialMatching; @end diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm index 4e999303c8..15a60cdb51 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm +++ b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.mm @@ -4,13 +4,6 @@ #import "SwiftBridge.h" #import "SearchResult.h" -#include "map/place_page_info.hpp" - -#include "geometry/mercator.hpp" - -#include "platform/localization.hpp" -#include "platform/distance.hpp" - @interface MWMSearchCommonCell () @property(weak, nonatomic) IBOutlet UILabel * distanceLabel; @@ -18,35 +11,41 @@ @property(weak, nonatomic) IBOutlet UILabel * locationLabel; @property(weak, nonatomic) IBOutlet UILabel * openLabel; @property(weak, nonatomic) IBOutlet UIView * popularView; +@property(weak, nonatomic) IBOutlet UIImageView * iconImageView; @end @implementation MWMSearchCommonCell -- (void)configureWith:(SearchResult * _Nonnull)result { - [super configureWith:result]; +- (void)configureWith:(SearchResult * _Nonnull)result isPartialMatching:(BOOL)isPartialMatching { + [super configureWith:result isPartialMatching:isPartialMatching]; self.locationLabel.text = result.addressText; [self.locationLabel sizeToFit]; - self.infoLabel.text = result.infoText; self.distanceLabel.text = result.distanceText; self.popularView.hidden = YES; self.openLabel.text = result.openStatusText; self.openLabel.textColor = result.openStatusColor; [self.openLabel setHidden:result.openStatusText.length == 0]; - [self setStyleNameAndApply: @"Background"]; + [self setStyleNameAndApply:@"Background"]; + [self.iconImageView setStyleNameAndApply:@"BlueBackground"]; + self.iconImageView.image = [UIImage imageNamed:result.iconImageName]; + self.separatorInset = UIEdgeInsetsMake(0, kSearchCellSeparatorInset, 0, 0); } -- (NSDictionary *)selectedTitleAttributes -{ +- (void)layoutSubviews { + [super layoutSubviews]; + [self.iconImageView.layer setCornerRadius:self.iconImageView.height / 2]; +} + +- (NSDictionary *)selectedTitleAttributes { return @{ NSForegroundColorAttributeName : [UIColor blackPrimaryText], NSFontAttributeName : [UIFont bold17] }; } -- (NSDictionary *)unselectedTitleAttributes -{ +- (NSDictionary *)unselectedTitleAttributes { return @{ NSForegroundColorAttributeName : [UIColor blackPrimaryText], NSFontAttributeName : [UIFont regular17] diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.xib b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.xib index e951d0195f..073542c1e0 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.xib +++ b/iphone/Maps/UI/Search/TableView/MWMSearchCommonCell.xib @@ -1,50 +1,41 @@ - + - + + - - + + - + - - - - - - - - - - - - - + + + + + - - + - - - + - @@ -132,13 +130,19 @@ + + - - + + + + + + diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.mm b/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.mm index 26851843af..b8c5174702 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.mm +++ b/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.mm @@ -3,7 +3,6 @@ @interface MWMSearchSuggestionCell () @property (weak, nonatomic) IBOutlet UIImageView * icon; -@property (weak, nonatomic) IBOutlet NSLayoutConstraint * separatorLeftOffset; @end @@ -31,7 +30,7 @@ - (void)setIsLastCell:(BOOL)isLastCell { _isLastCell = isLastCell; - self.separatorLeftOffset.constant = isLastCell ? 0.0 : 60.0; + self.separatorInset = UIEdgeInsetsMake(0, isLastCell ? 0 : kSearchCellSeparatorInset, 0, 0); } @end diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.xib b/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.xib index 82bd5e4ee7..e269b2d272 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.xib +++ b/iphone/Maps/UI/Search/TableView/MWMSearchSuggestionCell.xib @@ -1,9 +1,9 @@ - + - + @@ -12,44 +12,34 @@ - + - + - - + + - - - - - - - - - - - + - + - - + + @@ -57,7 +47,6 @@ - diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm index 44f81b2b8d..eff7961360 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm +++ b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm @@ -90,14 +90,14 @@ NSString *GetLocalizedTypeName(search::Result const &result) { { auto cell = static_cast( [tableView dequeueReusableCellWithCellClass:[MWMSearchCommonCell class] indexPath:indexPath]); - [cell configureWith:result]; + [cell configureWith:result isPartialMatching:YES]; return cell; } case SearchItemTypeSuggestion: { auto cell = static_cast( [tableView dequeueReusableCellWithCellClass:[MWMSearchSuggestionCell class] indexPath:indexPath]); - [cell configureWith:result]; + [cell configureWith:result isPartialMatching:YES]; cell.isLastCell = row == [MWMSearch suggestionsCount] - 1; return cell; } diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.xib b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.xib index f9db80e653..5de7e20d67 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.xib +++ b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.xib @@ -1,9 +1,9 @@ - + - + @@ -37,7 +37,7 @@ - + diff --git a/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoriesViewController.swift b/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoriesViewController.swift index 830b9f5a06..e9ab1f5998 100644 --- a/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoriesViewController.swift +++ b/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoriesViewController.swift @@ -12,34 +12,35 @@ final class SearchCategoriesViewController: MWMTableViewController { categories = frameworkHelper.searchCategories() super.init(nibName: nil, bundle: nil) } - + + @available(*, unavailable) required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } - + override func viewDidLoad() { super.viewDidLoad() - - tableView.registerNib(cellClass: SearchCategoryCell.self) - tableView.separatorStyle = .none + tableView.setStyle(.background) + tableView.register(cell: SearchCategoryCell.self) tableView.keyboardDismissMode = .onDrag } - + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return categories.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(cell: SearchCategoryCell.self, indexPath: indexPath) - cell.update(with: category(at: indexPath)) + cell.configure(with: category(at: indexPath)) return cell } override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedCategory = category(at: indexPath) delegate?.categoriesViewController(self, didSelect: selectedCategory) + tableView.deselectRow(at: indexPath, animated: true) } - + func category(at indexPath: IndexPath) -> String { let index = indexPath.row return categories[index] diff --git a/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.swift b/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.swift index fb96f27922..b9ccf3ae9f 100644 --- a/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.swift +++ b/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.swift @@ -1,16 +1,25 @@ -final class SearchCategoryCell: MWMTableViewCell { - @IBOutlet weak var iconImageView: UIImageView! - @IBOutlet weak var titleLabel: UILabel! +final class SearchCategoryCell: UITableViewCell { - private var category: String = "" - func update(with category: String) { - self.category = category - iconImageView.mwm_name = String(format: "ic_%@", category) - titleLabel.text = L(category) + private var categoryName: String = "" + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: .default, reuseIdentifier: reuseIdentifier) + setStyle(.defaultTableViewCell) + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(with categoryName: String) { + self.categoryName = categoryName + textLabel?.text = L(categoryName) + imageView?.mwm_name = String(format: "ic_%@", categoryName) } override func applyTheme() { super.applyTheme() - iconImageView.mwm_name = String(format: "ic_%@", category) + imageView?.mwm_name = String(format: "ic_%@", categoryName) } } diff --git a/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.xib b/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.xib deleted file mode 100644 index fa090e4142..0000000000 --- a/iphone/Maps/UI/Search/Tabs/CategoriesTab/SearchCategoryCell.xib +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryCell.swift b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryCell.swift new file mode 100644 index 0000000000..202edb2fe9 --- /dev/null +++ b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryCell.swift @@ -0,0 +1,34 @@ +final class SearchHistoryCell: MWMTableViewCell { + enum Content { + case query(String) + case clear + } + + static private let placeholderImage = UIImage.filled(with: .clear, size: CGSize(width: 28, height: 28)) + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: .default, reuseIdentifier: reuseIdentifier) + setStyle(.defaultTableViewCell) + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(for content: Content) { + switch content { + case .query(let query): + textLabel?.text = query + textLabel?.setFontStyleAndApply(.regular17, color: .blackSecondary) + imageView?.image = UIImage(resource: .icSearch) + imageView?.setStyleAndApply(.black) + isSeparatorHidden = false + case .clear: + textLabel?.text = L("clear_search") + textLabel?.setFontStyleAndApply(.regular14, color: .linkBlue) + imageView?.image = Self.placeholderImage + isSeparatorHidden = true + } + } +} diff --git a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryClearCell.xib b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryClearCell.xib deleted file mode 100644 index c22b6c3ab5..0000000000 --- a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryClearCell.xib +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.swift b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.swift deleted file mode 100644 index 83f7890318..0000000000 --- a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.swift +++ /dev/null @@ -1,7 +0,0 @@ -final class SearchHistoryQueryCell: MWMTableViewCell { - @IBOutlet weak var queryLabel: UILabel! - - func update(with query: String) { - queryLabel.text = query - } -} diff --git a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.xib b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.xib deleted file mode 100644 index 9873a4db20..0000000000 --- a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryQueryCell.xib +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.swift b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.swift index 3b504ee1d7..01eba9fcd2 100644 --- a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.swift +++ b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.swift @@ -29,9 +29,7 @@ final class SearchHistoryViewController: MWMViewController { if frameworkHelper.isSearchHistoryEmpty() { showNoResultsView() } else { - tableView.registerNib(cellClass: SearchHistoryQueryCell.self) - let nib = UINib(nibName: "SearchHistoryClearCell", bundle: nil) - tableView.register(nib, forCellReuseIdentifier: SearchHistoryViewController.clearCellIdentifier) + tableView.register(cell: SearchHistoryCell.self) } tableView.keyboardDismissMode = .onDrag } @@ -59,14 +57,12 @@ extension SearchHistoryViewController: UITableViewDataSource { } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(cell: SearchHistoryCell.self, indexPath: indexPath) if indexPath.row == lastQueries.count { - let cell = tableView.dequeueReusableCell(withIdentifier: SearchHistoryViewController.clearCellIdentifier, - for: indexPath) - return cell + cell.configure(for: .clear) + } else { + cell.configure(for: .query(lastQueries[indexPath.row])) } - - let cell = tableView.dequeueReusableCell(cell: SearchHistoryQueryCell.self, indexPath: indexPath) - cell.update(with: lastQueries[indexPath.row]) return cell } } @@ -85,5 +81,6 @@ extension SearchHistoryViewController: UITableViewDelegate { let query = lastQueries[indexPath.row] delegate?.searchHistoryViewController(self, didSelect: query) } + tableView.deselectRow(at: indexPath, animated: true) } } diff --git a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.xib b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.xib index 2d589dfac8..952a4e3cdb 100644 --- a/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.xib +++ b/iphone/Maps/UI/Search/Tabs/HistoryTab/SearchHistoryViewController.xib @@ -1,14 +1,14 @@ - + - + - + @@ -20,8 +20,8 @@ - - + + @@ -29,7 +29,7 @@ - + @@ -37,6 +37,7 @@ + @@ -46,7 +47,6 @@ - diff --git a/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift b/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift index 5d60214d05..205d0a793a 100644 --- a/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift +++ b/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift @@ -1,7 +1,6 @@ -import CoreFoundation @objc(MWMSearchTabViewControllerDelegate) protocol SearchTabViewControllerDelegate: AnyObject { - func searchTabController(_ viewContoller: SearchTabViewController, didSearch: String, withCategory: Bool) + func searchTabController(_ viewController: SearchTabViewController, didSearch: String, withCategory: Bool) } @objc(MWMSearchTabViewController) -- 2.45.3 From 1cbe25e5bc6ca9dd0662b029d45c6ff2b15f5fe4 Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Thu, 13 Feb 2025 17:18:18 +0400 Subject: [PATCH 14/73] [ios] fix route planning reloading ui bug The bottom route status view sometimes jumps from the top to the bottom during the 1st rendering. It happens because the view's frame is not calculated on the isVisible because the view is not init/deinit multiple times during the route building state changing. The bottom view now only changes its visibility and constraints, not the init/deinit on every update. Signed-off-by: Kiryl Kaveryn --- .../NavigationDashboard/MWMNavigationDashboardManager.mm | 8 +++----- .../RoutePreviewStatus/BaseRoutePreviewStatus.swift | 9 +++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm index 42551ba1dc..43c06fb061 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm @@ -134,8 +134,7 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView"; self.navigationInfoView = nil; _navigationControlView.isVisible = NO; _navigationControlView = nil; - [_baseRoutePreviewStatus hide]; - _baseRoutePreviewStatus = nil; + [self.baseRoutePreviewStatus hide]; [_transportRoutePreviewStatus hide]; _transportRoutePreviewStatus = nil; } @@ -147,7 +146,7 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView"; [routePreview statePrepare]; [routePreview selectRouter:[MWMRouter type]]; [self updateGoButtonTitle]; - [_baseRoutePreviewStatus hide]; + [self.baseRoutePreviewStatus hide]; [_transportRoutePreviewStatus hide]; for (MWMRouteStartButton *button in self.goButtons) [button statePrepare]; @@ -204,8 +203,7 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView"; self.routePreview = nil; self.navigationInfoView.state = MWMNavigationInfoViewStateNavigation; self.navigationControlView.isVisible = YES; - [_baseRoutePreviewStatus hide]; - _baseRoutePreviewStatus = nil; + [self.baseRoutePreviewStatus hide]; [_transportRoutePreviewStatus hide]; _transportRoutePreviewStatus = nil; [self onNavigationInfoUpdated]; diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift index 73cd7a798f..d01a7897c1 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift @@ -51,12 +51,8 @@ final class BaseRoutePreviewStatus: SolidTouchView { private var isVisible = false { didSet { - guard isVisible != oldValue else { return } - if isVisible { - addView() - } else { - self.removeFromSuperview() - } + addView() + isHidden = !isVisible } } @@ -68,6 +64,7 @@ final class BaseRoutePreviewStatus: SolidTouchView { leadingAnchor.constraint(equalTo: lg.leadingAnchor).isActive = true trailingAnchor.constraint(equalTo: lg.trailingAnchor).isActive = true bottomAnchor.constraint(equalTo: lg.bottomAnchor).isActive = true + ownerView.layoutIfNeeded() } private func updateHeight() { -- 2.45.3 From cd832b94b6604801e04cef05ecae2983ded31b04 Mon Sep 17 00:00:00 2001 From: Alexey Krasilnikov Date: Tue, 18 Feb 2025 17:32:31 +0300 Subject: [PATCH 15/73] Add foreground service to indicate about ongoing downloads Signed-off-by: Alexey Krasilnikov --- android/app/src/main/AndroidManifest.xml | 8 + .../DownloadResourcesLegacyActivity.java | 2 +- .../java/app/organicmaps/MwmApplication.java | 45 ++---- .../screens/download/DownloaderScreen.java | 2 +- .../downloader/DownloaderAdapter.java | 4 +- .../downloader/DownloaderNotifier.java | 90 ++++++++--- .../downloader/DownloaderService.java | 142 ++++++++++++++++++ .../ExpandRetryConfirmationListener.java | 10 +- .../organicmaps/downloader/MapManager.java | 39 ++++- .../downloader/OnmapDownloader.java | 7 +- ...tryFailedDownloadConfirmationListener.java | 22 --- .../routing/RoutingMapsDownloadFragment.java | 3 +- 12 files changed, 274 insertions(+), 100 deletions(-) create mode 100644 android/app/src/main/java/app/organicmaps/downloader/DownloaderService.java delete mode 100644 android/app/src/main/java/app/organicmaps/downloader/RetryFailedDownloadConfirmationListener.java diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 42bf79fe7b..86bdadc494 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -37,6 +37,7 @@ + + Motociklu noma Velosipēdu uzlāde diff --git a/android/app/src/main/res/values-mr/strings.xml b/android/app/src/main/res/values-mr/strings.xml index 7fef432a80..b821e8905b 100644 --- a/android/app/src/main/res/values-mr/strings.xml +++ b/android/app/src/main/res/values-mr/strings.xml @@ -883,6 +883,7 @@ बस स्थानक अमृततुल्य भाड्याची गाडी + मटरसयकल भडयन कार शेअरिंग कार धुणे जुगारगृह diff --git a/android/app/src/main/res/values-nb/strings.xml b/android/app/src/main/res/values-nb/strings.xml index 36b89fe931..42ba19fd38 100644 --- a/android/app/src/main/res/values-nb/strings.xml +++ b/android/app/src/main/res/values-nb/strings.xml @@ -910,6 +910,7 @@ Busstasjon Kafé Bilutleie + Utleie av motorsykkel Bildeling Bilvask Kasino diff --git a/android/app/src/main/res/values-nl/strings.xml b/android/app/src/main/res/values-nl/strings.xml index 19050b270d..10ad3fdce5 100644 --- a/android/app/src/main/res/values-nl/strings.xml +++ b/android/app/src/main/res/values-nl/strings.xml @@ -923,6 +923,7 @@ Busstation Café Autoverhuur + Motorverhuur Autodelen Car Wash Casino diff --git a/android/app/src/main/res/values-pl/strings.xml b/android/app/src/main/res/values-pl/strings.xml index 811dfec0a4..aa536007bd 100644 --- a/android/app/src/main/res/values-pl/strings.xml +++ b/android/app/src/main/res/values-pl/strings.xml @@ -930,6 +930,7 @@ Dworzec autobusowy Kawiarnia Wynajem samochodów + Wynajem motocykli Współdzielenie samochodów Myjnia samochodowa Kasyno diff --git a/android/app/src/main/res/values-pt-rBR/strings.xml b/android/app/src/main/res/values-pt-rBR/strings.xml index ce7b4314ed..c38ff37725 100644 --- a/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/android/app/src/main/res/values-pt-rBR/strings.xml @@ -833,6 +833,7 @@ Rodoviária Café Aluguel de automóveis + Aluguel de motocicletas Compartilhamento de carro Lava-jato Cassino diff --git a/android/app/src/main/res/values-pt/strings.xml b/android/app/src/main/res/values-pt/strings.xml index 418fed853f..d9a784be6e 100644 --- a/android/app/src/main/res/values-pt/strings.xml +++ b/android/app/src/main/res/values-pt/strings.xml @@ -887,6 +887,7 @@ Estação de autocarros Café Aluguer de automóveis + Aluguer de motociclos Partilha de carro Lavagem de veículos Casino diff --git a/android/app/src/main/res/values-ro/strings.xml b/android/app/src/main/res/values-ro/strings.xml index 9d95d1d3cb..0ca2b6a267 100644 --- a/android/app/src/main/res/values-ro/strings.xml +++ b/android/app/src/main/res/values-ro/strings.xml @@ -889,6 +889,7 @@ Gara de autobuz Cafenea Închiriere mașini + Închiriere motociclete Spălătorie auto Divertisment Jocuri de noroc diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index 0ff9f9e038..7e455a1d78 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -941,6 +941,7 @@ Автовокзал Кафе Прокат авто + Прокат мотоциклов Каршеринг Автомойка Казино diff --git a/android/app/src/main/res/values-sk/strings.xml b/android/app/src/main/res/values-sk/strings.xml index af87aa4f09..5037f88e15 100644 --- a/android/app/src/main/res/values-sk/strings.xml +++ b/android/app/src/main/res/values-sk/strings.xml @@ -912,6 +912,7 @@ Autobusové nástupište Kaviareň Autopožičovňa + Požičovňa motocyklov Zdieľanie automobilov Autoumývareň Kasíno diff --git a/android/app/src/main/res/values-sv/strings.xml b/android/app/src/main/res/values-sv/strings.xml index 9880c483b2..19eb69d39e 100644 --- a/android/app/src/main/res/values-sv/strings.xml +++ b/android/app/src/main/res/values-sv/strings.xml @@ -856,6 +856,7 @@ Busstation Café Biluthyrning + Motorcykeluthyrning Samåkning Biltvätt Kasino diff --git a/android/app/src/main/res/values-sw/strings.xml b/android/app/src/main/res/values-sw/strings.xml index db148c59a2..1a890fbb8a 100644 --- a/android/app/src/main/res/values-sw/strings.xml +++ b/android/app/src/main/res/values-sw/strings.xml @@ -420,6 +420,7 @@ Kituo cha sanaa Grill ya barbeque Cykelreparationsstation + Kukodisha pikipiki Kamari Kituo cha Michezo ya Watu Wazima Ukumbi wa michezo diff --git a/android/app/src/main/res/values-th/strings.xml b/android/app/src/main/res/values-th/strings.xml index 9ee3ff2cd1..6d8a30ac86 100644 --- a/android/app/src/main/res/values-th/strings.xml +++ b/android/app/src/main/res/values-th/strings.xml @@ -860,6 +860,7 @@ สถานีขนส่ง คาเฟ่ รถยนต์ + รถมอเตอรไซค การใช้รถร่วมกัน ล้างรถ คาสิโน diff --git a/android/app/src/main/res/values-tr/strings.xml b/android/app/src/main/res/values-tr/strings.xml index 05aa777f14..78b5621073 100644 --- a/android/app/src/main/res/values-tr/strings.xml +++ b/android/app/src/main/res/values-tr/strings.xml @@ -930,6 +930,7 @@ Otogar Kafe Araç Kiralama + Motosiklet Kiralama Araç Paylaşımı Araba Yıkama Kumarhane diff --git a/android/app/src/main/res/values-uk/strings.xml b/android/app/src/main/res/values-uk/strings.xml index ae39fd6b6c..b29070dee1 100644 --- a/android/app/src/main/res/values-uk/strings.xml +++ b/android/app/src/main/res/values-uk/strings.xml @@ -934,6 +934,7 @@ Автовокзал Кафе Прокат авто + Оренда мотоциклів Каршерінг Автомийка Казино diff --git a/android/app/src/main/res/values-vi/strings.xml b/android/app/src/main/res/values-vi/strings.xml index 683961ad37..826fdcfe32 100644 --- a/android/app/src/main/res/values-vi/strings.xml +++ b/android/app/src/main/res/values-vi/strings.xml @@ -857,6 +857,7 @@ Trạm xe buýt Cà phê Ô tô + Cho thuê xe máy Chia sẻ Xe Rửa Xe Giải trí diff --git a/android/app/src/main/res/values-zh-rTW/strings.xml b/android/app/src/main/res/values-zh-rTW/strings.xml index 5f81d3e886..36ae8577eb 100644 --- a/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/android/app/src/main/res/values-zh-rTW/strings.xml @@ -936,6 +936,7 @@ 公車站 咖啡廳 租車 + 摩托車租賃 汽車共用 洗車 賭場 diff --git a/android/app/src/main/res/values-zh/strings.xml b/android/app/src/main/res/values-zh/strings.xml index adf2f32621..5c36817cdc 100644 --- a/android/app/src/main/res/values-zh/strings.xml +++ b/android/app/src/main/res/values-zh/strings.xml @@ -936,6 +936,7 @@ 公交车站 咖啡馆่ 汽车出租์ + 摩托车租赁 拼车点 洗车 赌场 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index f97df4a5df..da9f58e594 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -964,6 +964,7 @@ Bus Station Cafe Car Rental + Motorcycle Rental Car Sharing Car Wash Casino diff --git a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings index 6bdef6a5bb..04ba181295 100644 --- a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "محطة حافلات"; "type.amenity.cafe" = "مقهى"; "type.amenity.car_rental" = "تأجير سيارات"; +"type.amenity.motorcycle_rental" = "تأجير الدراجات النارية"; "type.amenity.car_sharing" = "مشاركة السيارة"; "type.amenity.car_wash" = "مغسلة سيارات"; "type.amenity.casino" = "كازينو"; diff --git a/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings index 68640b3ba6..1c21046516 100644 --- a/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Avtobus dayanacağı"; "type.amenity.cafe" = "Kafe"; "type.amenity.car_rental" = "Avtomobil icarəsi"; +"type.amenity.motorcycle_rental" = "Motosiklet Kirayəsi"; "type.amenity.car_sharing" = "Avtomobil Paylaşımı"; "type.amenity.car_wash" = "Avtomobil yuma"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings index 1b09565b34..63bda5dfe5 100644 --- a/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bus Station"; "type.amenity.cafe" = "Cafe"; "type.amenity.car_rental" = "Car Rental"; +"type.amenity.motorcycle_rental" = "Пракат матацыклаў"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings index a9516cbd32..9175787172 100644 --- a/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bus Station"; "type.amenity.cafe" = "Cafe"; "type.amenity.car_rental" = "Car Rental"; +"type.amenity.motorcycle_rental" = "Мотоциклети под наем"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings index 7046183375..a84e96652f 100644 --- a/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Estació d’autobusos"; "type.amenity.cafe" = "Cafè"; "type.amenity.car_rental" = "Lloguer de cotxes"; +"type.amenity.motorcycle_rental" = "Lloguer de motos"; "type.amenity.car_sharing" = "Cotxe multiusuari"; "type.amenity.car_wash" = "Rentatge de cotxes"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings index 5e65f6f0df..7046807fa0 100644 --- a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Autobusové nádraží"; "type.amenity.cafe" = "Kavárna"; "type.amenity.car_rental" = "Půjčovna aut"; +"type.amenity.motorcycle_rental" = "Půjčovna motocyklů"; "type.amenity.car_sharing" = "Sdílení aut"; "type.amenity.car_wash" = "Myčka aut"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings index 704804195b..1abcfdc10e 100644 --- a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Busstation"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Biludlejning"; +"type.amenity.motorcycle_rental" = "Udlejning af motorcykler"; "type.amenity.car_sharing" = "Delebiler"; "type.amenity.car_wash" = "Bilvask"; "type.amenity.casino" = "Kasino"; diff --git a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings index d306512106..07f59ff816 100644 --- a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Busbahnhof"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Autovermietung"; +"type.amenity.motorcycle_rental" = "Motorradvermietung"; "type.amenity.car_sharing" = "Carsharing"; "type.amenity.car_wash" = "Autowaschanlage"; "type.amenity.casino" = "Kasino"; diff --git a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings index 376ef7cd42..3960c54518 100644 --- a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Σταθμός λεωφορείων"; "type.amenity.cafe" = "Καφετέρια"; "type.amenity.car_rental" = "Ενοικίαση αυτοκινήτου"; +"type.amenity.motorcycle_rental" = "Ενοικίαση μοτοσικλέτας"; "type.amenity.car_sharing" = "Παραχώρηση αυτοκινήτου"; "type.amenity.car_wash" = "Καθαρισμός αυτοκινήτων"; "type.amenity.casino" = "Καζίνο"; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings index a8a8963bbc..4e30cb93a3 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bus Station"; "type.amenity.cafe" = "Cafe"; "type.amenity.car_rental" = "Car Rental"; +"type.amenity.motorcycle_rental" = "Motorcycle Rental"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings index fd56334e2a..d363dfdf31 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bus Station"; "type.amenity.cafe" = "Cafe"; "type.amenity.car_rental" = "Car Rental"; +"type.amenity.motorcycle_rental" = "Motorcycle Rental"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings index 2f307beb1f..7d3cc23f5a 100644 --- a/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Estación de autobuses"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Renta de coches"; +"type.amenity.motorcycle_rental" = "Alquiler de motos"; "type.amenity.car_sharing" = "Compartir coche"; "type.amenity.car_wash" = "Autolavado"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings index 88c14bbf37..614abed6cc 100644 --- a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Estación de autobuses"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Alquiler de coches"; +"type.amenity.motorcycle_rental" = "Alquiler de motos"; "type.amenity.car_sharing" = "Compartir coche"; "type.amenity.car_wash" = "Lavado de coches"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings index bc14d7426e..b2aa9ff662 100644 --- a/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bussijaam"; "type.amenity.cafe" = "Kohvik"; "type.amenity.car_rental" = "Autorent"; +"type.amenity.motorcycle_rental" = "Mootorratta rentimine"; "type.amenity.car_sharing" = "Autojagamine"; "type.amenity.car_wash" = "Autopesula"; "type.amenity.casino" = "Kasiino"; diff --git a/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings index bb41300fd1..d501a9a3f1 100644 --- a/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Autobus geltokia"; "type.amenity.cafe" = "Kafea"; "type.amenity.car_rental" = "Alokairuko autoa"; +"type.amenity.motorcycle_rental" = "Motorren alokairua"; "type.amenity.car_sharing" = "Partekatu autoa"; "type.amenity.car_wash" = "Kotxe garbiketa"; "type.amenity.casino" = "Kasinoa"; diff --git a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings index d7ec2e134b..5dcde4aea8 100644 --- a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "حمل و نقل"; "type.amenity.cafe" = "کافه"; "type.amenity.car_rental" = "مکان اجاره ماشین"; +"type.amenity.motorcycle_rental" = "اجاره موتور سیکلت"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "کارواش"; "type.amenity.casino" = "قمارخانه"; diff --git a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings index 1e9e60e4cf..60d1cca8ac 100644 --- a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Linja-autoasema"; "type.amenity.cafe" = "Kahvila"; "type.amenity.car_rental" = "Autovuokraamo"; +"type.amenity.motorcycle_rental" = "Moottoripyörän vuokraus"; "type.amenity.car_sharing" = "Autojen yhteiskäyttö"; "type.amenity.car_wash" = "Autopesula"; "type.amenity.casino" = "Kasino"; diff --git a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings index 42b3d58ff2..f7dc08449f 100644 --- a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Gare routière"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Location de voitures"; +"type.amenity.motorcycle_rental" = "Location de motos"; "type.amenity.car_sharing" = "Station d'autopartage"; "type.amenity.car_wash" = "Station de lavage"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings index 03247c98cc..59d812a596 100644 --- a/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "תחנת אוטובוס"; "type.amenity.cafe" = "בית קפה"; "type.amenity.car_rental" = "השכרת רכב"; +"type.amenity.motorcycle_rental" = "השכרת אופנועים"; "type.amenity.car_sharing" = "רכב שיתופי"; "type.amenity.car_wash" = "שטיפת רכב"; "type.amenity.casino" = "קזינו"; diff --git a/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings index e5a3b4d65e..a428d57cfd 100644 --- a/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "बस स्टेशन"; "type.amenity.cafe" = "कॉफ़ीख़ाना"; "type.amenity.car_rental" = "किराए पर गाड़ियाँ"; +"type.amenity.motorcycle_rental" = "मटरसइकल करय"; "type.amenity.car_sharing" = "गाड़ी साँझा"; "type.amenity.car_wash" = "कार धुलाई"; "type.amenity.casino" = "कैसीनो"; diff --git a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings index 5e46ccc524..30d55e1807 100644 --- a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Buszpályaudvar"; "type.amenity.cafe" = "Kávézó"; "type.amenity.car_rental" = "Autókölcsönző"; +"type.amenity.motorcycle_rental" = "Motorkerékpár bérlés"; "type.amenity.car_sharing" = "Közösségi autóbérlés"; "type.amenity.car_wash" = "Autómosó"; "type.amenity.casino" = "Kaszinó"; diff --git a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings index 386828e9a4..978b8c347b 100644 --- a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Stasiun bus"; "type.amenity.cafe" = "Kafe"; "type.amenity.car_rental" = "Rental mobil"; +"type.amenity.motorcycle_rental" = "Penyewaan Sepeda Motor"; "type.amenity.car_sharing" = "Berbagi mobil"; "type.amenity.car_wash" = "Cuci Mobil"; "type.amenity.casino" = "Hiburan"; diff --git a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings index 625b5554f9..321ef5d036 100644 --- a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Autostazione"; "type.amenity.cafe" = "Caffè"; "type.amenity.car_rental" = "Noleggio automobili"; +"type.amenity.motorcycle_rental" = "Noleggio moto"; "type.amenity.car_sharing" = "Car sharing"; "type.amenity.car_wash" = "Lavaggio auto"; "type.amenity.casino" = "Casinò"; diff --git a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings index 903612fde0..3356166e9a 100644 --- a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "バスステーション"; "type.amenity.cafe" = "カフェ"; "type.amenity.car_rental" = "レンタカー"; +"type.amenity.motorcycle_rental" = "レンタルバイク"; "type.amenity.car_sharing" = "カーシェアリング"; "type.amenity.car_wash" = "洗車場"; "type.amenity.casino" = "カジノ"; diff --git a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings index e422c9a203..cf6c80f1f4 100644 --- a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "버스 터미널"; "type.amenity.cafe" = "카페"; "type.amenity.car_rental" = "카 렌탈"; +"type.amenity.motorcycle_rental" = "오토바이 대여"; "type.amenity.car_sharing" = "카 셰어링"; "type.amenity.car_wash" = "세차"; "type.amenity.casino" = "카지노"; diff --git a/iphone/Maps/LocalizedStrings/lv.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/lv.lproj/Localizable.strings index c45323ff99..5b23ce6605 100644 --- a/iphone/Maps/LocalizedStrings/lv.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/lv.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bus Station"; "type.amenity.cafe" = "Cafe"; "type.amenity.car_rental" = "Car Rental"; +"type.amenity.motorcycle_rental" = "Motociklu noma"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings index 31b509e2a9..e931484dd2 100644 --- a/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "बस स्थानक"; "type.amenity.cafe" = "अमृततुल्य"; "type.amenity.car_rental" = "भाड्याची गाडी"; +"type.amenity.motorcycle_rental" = "मटरसयकल भडयन"; "type.amenity.car_sharing" = "कार शेअरिंग"; "type.amenity.car_wash" = "कार धुणे"; "type.amenity.casino" = "जुगारगृह"; diff --git a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings index 81aae0144e..e08371d608 100644 --- a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Busstasjon"; "type.amenity.cafe" = "Kafé"; "type.amenity.car_rental" = "Bilutleie"; +"type.amenity.motorcycle_rental" = "Utleie av motorsykkel"; "type.amenity.car_sharing" = "Bildeling"; "type.amenity.car_wash" = "Bilvask"; "type.amenity.casino" = "Kasino"; diff --git a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings index 4c158359b1..ccea8dce7a 100644 --- a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Busstation"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Autoverhuur"; +"type.amenity.motorcycle_rental" = "Motorverhuur"; "type.amenity.car_sharing" = "Autodelen"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings index 7d1d49aa65..fefa73917a 100644 --- a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Dworzec autobusowy"; "type.amenity.cafe" = "Kawiarnia"; "type.amenity.car_rental" = "Wynajem samochodów"; +"type.amenity.motorcycle_rental" = "Wynajem motocykli"; "type.amenity.car_sharing" = "Współdzielenie samochodów"; "type.amenity.car_wash" = "Myjnia samochodowa"; "type.amenity.casino" = "Kasyno"; diff --git a/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings index 5f4548811e..4b49953ecb 100644 --- a/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Rodoviária"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Aluguel de automóveis"; +"type.amenity.motorcycle_rental" = "Aluguel de motocicletas"; "type.amenity.car_sharing" = "Compartilhamento de carro"; "type.amenity.car_wash" = "Lava-jato"; "type.amenity.casino" = "Cassino"; diff --git a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings index 2fa3cbcc27..0b2f20edc0 100644 --- a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Estação de autocarros"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Aluguer de automóveis"; +"type.amenity.motorcycle_rental" = "Aluguer de motociclos"; "type.amenity.car_sharing" = "Partilha de carro"; "type.amenity.car_wash" = "Lavagem de veículos"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings index e631d0f050..964e603b26 100644 --- a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Gara de autobuz"; "type.amenity.cafe" = "Cafenea"; "type.amenity.car_rental" = "Închiriere mașini"; +"type.amenity.motorcycle_rental" = "Închiriere motociclete"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Spălătorie auto"; "type.amenity.casino" = "Divertisment"; diff --git a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings index d163efca4c..4337eb66de 100644 --- a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Автовокзал"; "type.amenity.cafe" = "Кафе"; "type.amenity.car_rental" = "Прокат авто"; +"type.amenity.motorcycle_rental" = "Прокат мотоциклов"; "type.amenity.car_sharing" = "Каршеринг"; "type.amenity.car_wash" = "Автомойка"; "type.amenity.casino" = "Казино"; diff --git a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings index d06171bc5f..a70c6de829 100644 --- a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Autobusové nástupište"; "type.amenity.cafe" = "Kaviareň"; "type.amenity.car_rental" = "Autopožičovňa"; +"type.amenity.motorcycle_rental" = "Požičovňa motocyklov"; "type.amenity.car_sharing" = "Zdieľanie automobilov"; "type.amenity.car_wash" = "Autoumývareň"; "type.amenity.casino" = "Kasíno"; diff --git a/iphone/Maps/LocalizedStrings/sr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sr.lproj/Localizable.strings index 2217403bcb..1b7c2882e9 100644 --- a/iphone/Maps/LocalizedStrings/sr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sr.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Аутобуска станица"; "type.amenity.cafe" = "Кафе"; "type.amenity.car_rental" = "Рентакар"; +"type.amenity.motorcycle_rental" = "Motorcycle Rental"; "type.amenity.car_sharing" = "Дељење аутомобила"; "type.amenity.car_wash" = "Ауто-перионица"; "type.amenity.casino" = "Казино"; diff --git a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings index 681e04ac97..50dbc4aa50 100644 --- a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Busstation"; "type.amenity.cafe" = "Café"; "type.amenity.car_rental" = "Biluthyrning"; +"type.amenity.motorcycle_rental" = "Motorcykeluthyrning"; "type.amenity.car_sharing" = "Samåkning"; "type.amenity.car_wash" = "Biltvätt"; "type.amenity.casino" = "Kasino"; diff --git a/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings index ea1a2058c4..092341925b 100644 --- a/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Bus Station"; "type.amenity.cafe" = "Cafe"; "type.amenity.car_rental" = "Car Rental"; +"type.amenity.motorcycle_rental" = "Kukodisha pikipiki"; "type.amenity.car_sharing" = "Car Sharing"; "type.amenity.car_wash" = "Car Wash"; "type.amenity.casino" = "Casino"; diff --git a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings index 433de8b448..80abc83444 100644 --- a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "สถานีขนส่ง"; "type.amenity.cafe" = "คาเฟ่"; "type.amenity.car_rental" = "รถยนต์"; +"type.amenity.motorcycle_rental" = "รถมอเตอรไซค"; "type.amenity.car_sharing" = "การใช้รถร่วมกัน"; "type.amenity.car_wash" = "ล้างรถ"; "type.amenity.casino" = "คาสิโน"; diff --git a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings index 1798bce45e..1ee4a072f3 100644 --- a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Otogar"; "type.amenity.cafe" = "Kafe"; "type.amenity.car_rental" = "Araç Kiralama"; +"type.amenity.motorcycle_rental" = "Motosiklet Kiralama"; "type.amenity.car_sharing" = "Araç Paylaşımı"; "type.amenity.car_wash" = "Araba Yıkama"; "type.amenity.casino" = "Kumarhane"; diff --git a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings index a20764c2c0..bc6dd5a945 100644 --- a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Автовокзал"; "type.amenity.cafe" = "Кафе"; "type.amenity.car_rental" = "Прокат авто"; +"type.amenity.motorcycle_rental" = "Оренда мотоциклів"; "type.amenity.car_sharing" = "Каршерінг"; "type.amenity.car_wash" = "Автомийка"; "type.amenity.casino" = "Казино"; diff --git a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings index 9930c79bd1..ed8bb97821 100644 --- a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "Trạm xe buýt"; "type.amenity.cafe" = "Cà phê"; "type.amenity.car_rental" = "Ô tô"; +"type.amenity.motorcycle_rental" = "Cho thuê xe máy"; "type.amenity.car_sharing" = "Chia sẻ Xe"; "type.amenity.car_wash" = "Rửa Xe"; "type.amenity.casino" = "Giải trí"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings index d01a00d022..1725c0628a 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "公交车站"; "type.amenity.cafe" = "咖啡馆่"; "type.amenity.car_rental" = "汽车出租์"; +"type.amenity.motorcycle_rental" = "摩托车租赁"; "type.amenity.car_sharing" = "拼车点"; "type.amenity.car_wash" = "洗车"; "type.amenity.casino" = "赌场"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings index 021fe4e0d4..03b2c9a30c 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings @@ -1140,6 +1140,7 @@ "type.amenity.bus_station" = "公車站"; "type.amenity.cafe" = "咖啡廳"; "type.amenity.car_rental" = "租車"; +"type.amenity.motorcycle_rental" = "摩托車租賃"; "type.amenity.car_sharing" = "汽車共用"; "type.amenity.car_wash" = "洗車"; "type.amenity.casino" = "賭場"; -- 2.45.3 From 3925b423a188f119db0c5a9042ea0b7581c028c2 Mon Sep 17 00:00:00 2001 From: Konstantin Pastbin Date: Mon, 24 Feb 2025 13:47:31 +0700 Subject: [PATCH 30/73] [styles] Regenerate for amenity-motorcycle_rental Signed-off-by: Konstantin Pastbin --- data/classificator.txt | 1 + data/drules_proto.bin | Bin 430898 -> 431152 bytes data/drules_proto.txt | 67 ++++++++++++++++++ data/drules_proto_default_dark.bin | Bin 414200 -> 414454 bytes data/drules_proto_default_dark.txt | 67 ++++++++++++++++++ data/drules_proto_default_light.bin | Bin 415557 -> 415811 bytes data/drules_proto_default_light.txt | 67 ++++++++++++++++++ data/drules_proto_outdoors_dark.bin | Bin 433246 -> 433500 bytes data/drules_proto_outdoors_dark.txt | 67 ++++++++++++++++++ data/drules_proto_outdoors_light.bin | Bin 434714 -> 434968 bytes data/drules_proto_outdoors_light.txt | 67 ++++++++++++++++++ data/drules_proto_vehicle_dark.bin | Bin 278739 -> 278937 bytes data/drules_proto_vehicle_dark.txt | 51 +++++++++++++ data/drules_proto_vehicle_light.bin | Bin 278554 -> 278752 bytes data/drules_proto_vehicle_light.txt | 51 +++++++++++++ .../include/priorities_4_overlays.prio.txt | 3 +- .../include/priorities_4_overlays.prio.txt | 3 +- .../include/priorities_4_overlays.prio.txt | 3 +- data/types.txt | 2 +- data/visibility.txt | 1 + 20 files changed, 446 insertions(+), 4 deletions(-) diff --git a/data/classificator.txt b/data/classificator.txt index c60bc3caae..f06b49867e 100644 --- a/data/classificator.txt +++ b/data/classificator.txt @@ -86,6 +86,7 @@ world + marketplace - money_transfer - motorcycle_parking - + motorcycle_rental - music_school - nightclub - nursing_home - diff --git a/data/drules_proto.bin b/data/drules_proto.bin index 70b4c4df445e66ab7a89c236077692241cf45821..2d42a39b0e672e137d57d2cc4ffa296336b76136 100644 GIT binary patch delta 192 zcmdnAOlrdlsSUbGX1^J^BolK}^D;{+b#wDe@{5uylXFtzi&FDS5_5#iI0Tg>xP&nz zCO=S7kTT;C!YZkoJ6YF2RvM^Tn1H+pZh5(8-K2KiBt{@+0%B$$W&vW>?Yc>9tcC!; Cc0N4- delta 38 ncmdn6LTb}8sSUbG&DzQB+R2PS%ml>DK+FQftlPDd*;ow$5ljp& diff --git a/data/drules_proto.txt b/data/drules_proto.txt index 84305e5227..395dfbc17f 100644 --- a/data/drules_proto.txt +++ b/data/drules_proto.txt @@ -7674,6 +7674,73 @@ cont { } } } +cont { + name: "amenity-motorcycle_rental" + element { + scale: 17 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 10 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 18 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 19 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 20 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } +} cont { name: "amenity-music_school" element { diff --git a/data/drules_proto_default_dark.bin b/data/drules_proto_default_dark.bin index dbc81ebb5eb2d2f54f5311d4687e82f682b02d1e..c3d886cffbe1698b78b3a309d5532813082bc3f3 100644 GIT binary patch delta 180 zcmeydSn}Ia$ql**X1^J^BolK}^D;{+b#wDe@{5uylXFtzi&FDS5_5#iI0Tg>xP&nz vCO=S7kTByA!Y+Bh6eKB(Pf`SzqtIF*6XeY}ZL(J@XL&!Tdh$ delta 34 lcmeyiRPx7S$ql**&Dx3W+KG%n%ml>DK+LjTJCXJDM*#CE4G#bS diff --git a/data/drules_proto_default_dark.txt b/data/drules_proto_default_dark.txt index c292431800..1d9579e7df 100644 --- a/data/drules_proto_default_dark.txt +++ b/data/drules_proto_default_dark.txt @@ -7516,6 +7516,73 @@ cont { } } } +cont { + name: "amenity-motorcycle_rental" + element { + scale: 17 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 10 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 18 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 19 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 20 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } +} cont { name: "amenity-music_school" element { diff --git a/data/drules_proto_default_light.bin b/data/drules_proto_default_light.bin index 0f7cc76ad354740a661ff2d8481f694e58b35ab6..e979141227abe5bc0a46aeff7c2d7b03e7b75777 100644 GIT binary patch delta 180 zcmX@QPV(>u$qmj4X1^J^BolK}^D;{+b#wDe@{5uylXFtzi&FDS5_5#iI0Tg>xP&nz vCO=S7kTByA!Y+Bh6eKB(Pf`SzqtIF*6XeYDK+Lk;F_D$&I{@)k43+=@ diff --git a/data/drules_proto_default_light.txt b/data/drules_proto_default_light.txt index d530faed13..746f61f01e 100644 --- a/data/drules_proto_default_light.txt +++ b/data/drules_proto_default_light.txt @@ -7516,6 +7516,73 @@ cont { } } } +cont { + name: "amenity-motorcycle_rental" + element { + scale: 17 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 10 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 18 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 19 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 20 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } +} cont { name: "amenity-music_school" element { diff --git a/data/drules_proto_outdoors_dark.bin b/data/drules_proto_outdoors_dark.bin index 2a522f87f144d2d8ad600fa34607d0e878093da9..06285bc01b35409fef4de9ccf094bbac587f0335 100644 GIT binary patch delta 192 zcmcb&L+Z{hsSVsoX1^J^BolK}^D;{+b#wDe@{5uylXFtzi&FDS5_5#iI0Tg>xP&nz zCO=S7kTT;C!YZkoJ6YF2RvM^Tn1H+pZh5(8?xc3^Bt{@+0%B$$W&vW>?c7Oh!BznC C|2_Z! delta 38 ncmcb!OX}VZsSVso&78^YoXLzp%ml>DK+FQftlK%0*@CSA53vjJ diff --git a/data/drules_proto_outdoors_dark.txt b/data/drules_proto_outdoors_dark.txt index 2d797f1462..56f0edd1c7 100644 --- a/data/drules_proto_outdoors_dark.txt +++ b/data/drules_proto_outdoors_dark.txt @@ -7667,6 +7667,73 @@ cont { } } } +cont { + name: "amenity-motorcycle_rental" + element { + scale: 17 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 10 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 18 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 19 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 20 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 9211020 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } +} cont { name: "amenity-music_school" element { diff --git a/data/drules_proto_outdoors_light.bin b/data/drules_proto_outdoors_light.bin index 93f4a765500c5a9dbde5f97c8e733434f8305066..edc607b653342d3272589472dd6fbfafbb756bda 100644 GIT binary patch delta 192 zcmbPrL~6z{sSS!rX1^J^BolK}^D;{+b#wDe@{5uylXFtzi&FDS5_5#iI0Tg>xP&nz zCO=S7kTT;C!YZkoJ6YF2RvM^Tn1H+pZh5(8#iVw{Bt{@+0%B$$W&vW>?TSfkKkWg# C>OSiL delta 38 ocmbPnOlsBDK+FQftlQ<2*?!ss01dzl+yDRo diff --git a/data/drules_proto_outdoors_light.txt b/data/drules_proto_outdoors_light.txt index 1dae4b09de..a9e01b2821 100644 --- a/data/drules_proto_outdoors_light.txt +++ b/data/drules_proto_outdoors_light.txt @@ -7667,6 +7667,73 @@ cont { } } } +cont { + name: "amenity-motorcycle_rental" + element { + scale: 17 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 10 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 18 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 19 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } + element { + scale: 20 + symbol { + name: "motorcycle_rental-m" + priority: 2500 + } + caption { + primary { + height: 11 + color: 4473924 + offset_y: 1 + is_optional: true + } + priority: -7500 + } + } +} cont { name: "amenity-music_school" element { diff --git a/data/drules_proto_vehicle_dark.bin b/data/drules_proto_vehicle_dark.bin index 5ca7fcbacdcfd0e8962cfab0a162acdf416af2c9..94daed3e8c50b9f99562965e0afafe52f1e690f8 100644 GIT binary patch delta 147 zcmccIC^)lOaKl{6eAEb0WtITHBv0IwA# diff --git a/data/drules_proto_vehicle_dark.txt b/data/drules_proto_vehicle_dark.txt index f703d3d5bc..6868d3d5a5 100644 --- a/data/drules_proto_vehicle_dark.txt +++ b/data/drules_proto_vehicle_dark.txt @@ -2104,6 +2104,57 @@ cont { } } } +cont { + name: "amenity-motorcycle_rental" + element { + scale: 18 + symbol { + name: "motorcycle_rental-m" + priority: 2400 + } + caption { + primary { + height: 14 + color: 6710886 + offset_y: 1 + is_optional: true + } + priority: -7600 + } + } + element { + scale: 19 + symbol { + name: "motorcycle_rental-m" + priority: 2400 + } + caption { + primary { + height: 14 + color: 6710886 + offset_y: 1 + is_optional: true + } + priority: -7600 + } + } + element { + scale: 20 + symbol { + name: "motorcycle_rental-m" + priority: 2400 + } + caption { + primary { + height: 14 + color: 6710886 + offset_y: 1 + is_optional: true + } + priority: -7600 + } + } +} cont { name: "amenity-parcel_locker" element { diff --git a/data/drules_proto_vehicle_light.bin b/data/drules_proto_vehicle_light.bin index 75dd50bdae29bf800cae471591f26c8ae9a3bd6e..2c48ecaab0f41f4446304288afde10f96235ced2 100644 GIT binary patch delta 149 zcmbQ$Ao!qBaKl|Gv%`#Bl8L#gd6^}Zy1Dr!`9;Z<$vLU Date: Mon, 24 Feb 2025 13:48:45 +0700 Subject: [PATCH 31/73] [symbols] Regenerate for amenity-motorcycle_rental Signed-off-by: Konstantin Pastbin --- data/resources-6plus_dark/symbols.png | Bin 723371 -> 724679 bytes data/resources-6plus_dark/symbols.sdf | 581 +++++++------- data/resources-6plus_light/symbols.png | Bin 720586 -> 721618 bytes data/resources-6plus_light/symbols.sdf | 953 ++++++++++++----------- data/resources-hdpi_dark/symbols.png | Bin 409828 -> 410138 bytes data/resources-hdpi_dark/symbols.sdf | 953 ++++++++++++----------- data/resources-hdpi_light/symbols.png | Bin 408391 -> 408636 bytes data/resources-hdpi_light/symbols.sdf | 953 ++++++++++++----------- data/resources-mdpi_dark/symbols.png | Bin 244964 -> 245214 bytes data/resources-mdpi_dark/symbols.sdf | 953 ++++++++++++----------- data/resources-mdpi_light/symbols.png | Bin 243208 -> 243475 bytes data/resources-mdpi_light/symbols.sdf | 953 ++++++++++++----------- data/resources-xhdpi_dark/symbols.png | Bin 564956 -> 565590 bytes data/resources-xhdpi_dark/symbols.sdf | 953 ++++++++++++----------- data/resources-xhdpi_light/symbols.png | Bin 558437 -> 559068 bytes data/resources-xhdpi_light/symbols.sdf | 953 ++++++++++++----------- data/resources-xxhdpi_dark/symbols.png | Bin 906045 -> 907190 bytes data/resources-xxhdpi_dark/symbols.sdf | 953 ++++++++++++----------- data/resources-xxhdpi_light/symbols.png | Bin 898619 -> 899607 bytes data/resources-xxhdpi_light/symbols.sdf | 953 ++++++++++++----------- data/resources-xxxhdpi_dark/symbols.png | Bin 1125321 -> 1126353 bytes data/resources-xxxhdpi_dark/symbols.sdf | 953 ++++++++++++----------- data/resources-xxxhdpi_light/symbols.png | Bin 1108636 -> 1109956 bytes data/resources-xxxhdpi_light/symbols.sdf | 953 ++++++++++++----------- 24 files changed, 5538 insertions(+), 5526 deletions(-) diff --git a/data/resources-6plus_dark/symbols.png b/data/resources-6plus_dark/symbols.png index d4f898d0e511276ce2431c02439bb7e5f992d4ca..ba4bc031d70d8e4f5a04fac054743a37ae4cd74b 100644 GIT binary patch delta 679156 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

    u3Y{$%(S~3MH8lbYrOcJMg0B+&JDau?3bG5T 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%0AgJ|}VH0yZW$ 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%0D`O)gu+Nh_zCJJ$tc9l-?x0t3KQ$%EU^&RQM=cEX ze)*{_WdmNyxBt99@ke`F)$)97V=d`kMMov4hjVWiXUaM7=tMke59ac+Z>M0`_ejb9 zqB=-wvXY4m6-+OyEk}u8=5i+$dXF}$Z@pS^;}puZJ%^i3&SUmW@ak!~$CX{zpZhoM zJNG{rP>nAyFWF}u$rr7)D;8Uo+MRy~&-hWbMu);^V+76l<;toAk^S||=(ZOEiAJeH*8TV?o%GdZ?L8KXujpk!%yUyqCBB#G z4_A#%lj03lV=f^>tmLTrrB{b$f*mIAyb4*F0yk|LxQ~q^G0ROEzN$8QHXfhnlG(ky zxVI*Y+a361!~O)-raWCBvlw*$h$D*2OPjLidPEpe1Cgv-Yw~{>(mj4BOm{phIzXWs z3>UrbDXuo3C?L$5*Lzt7qC*S1WT}r;ui1vJ58>94e`_pzzB%cq1+5}Y>WNld*sk5b zKcLdQ|2aLaD2xPvl|MVh5ALU0u0N0~jIG3V>azX}z@l-!2#h+NM_M~g(V%N`E~Vcl z-=fQ8U#6`PG6D;SC)c@YY=H9|#n)^19*)2oB?4 zER71<9I0v#QF?AWiw3Pu+@yDu+f$uhE56af#t*o6YhHlzX}>a3Y+FS$Nun1lT#2y@R-Ai2t+yiIJSm zwQS?HT0`AFnx`6QnCL(?NZ-XhI5swmT{1NI6j%Z!1TPj@_x*8EZEeS*UQDC?1Aehs zfQxz7{y7>lP*gpf3wSHeP)sZ?*~MwPC7;YhB6s$$;s}-sd@OJgx|MwMWXA$M(^Cd- zq&DE5Z!C`Ar=$cCnOuYNO26u%QHbaB*cDws{Z%M-Zhj`Cf0TVy!7y-EjI)fz|mvm#}Z}z9B?-sv%fV z6d}wPu^s9ERb8fJo5aWRQ@?*g6`wXE;`@31b4zD?X3_=MwgCl5d}bghsTn~JoNU!g zuBu!}{DP>x-@R$*dXG%uRi?g5EpI`{wiUop-V8lX_SxhR3X$33>YGFGq2J^J{fFgm zj}nf8gGC{CJvi@YMPqktcP;vc4>!IujirW-FC-n$+=g85A5qxn2J z?;l@jc(|tT;`LC1m;2I{-o7n3WQ&!bkYj%v6^=?Z4P6$WXI7JB$?o+y|vEdITNWLOmTw}GC z@S26v*87G&qD7Zg>_Y+uQ0bC1RBB`w?{|w078x^r`1wBE9cE;7l{5%4u2%k&e1*Ax zSWIP%I~y&q_Le#_3VkX8uV6J=(7SxQP{I9rsd2+)c~wrZ(GCQ>g--eE_R0j3Oe z2NO|F$*hh#wgrE_Kvnc7BBQxpaWV|2PIE+EEs>|WUVq0Vs_UHbJa{(1onmX4^u0Jj zKWz}DbY8EK9L!aNUDVE(i*__Km6P}aRDkTx-AJs%1}V$vC^3H0CdY*YzuL=Cu%$+) zDD6^sy5b+2Bgt)e35m0%81!iLuTU$0%*(g$ERc_q2|$}G^NaL{+rW_n4e0r>mvAJN z53w=kE1FjfLuZF<#C8w8hMYa%^;OlaAGY^%*1;A*=g(LWj_U}(36Bi;RY)4nF+On> z*gRIun2_V!Y$V2O=9kfK8Tx|@)-y`u7nf-ErKoq{baiBf@TDXF-*S=qYCf4!SEf#a zXnIEI)f8XJ1>t)^zD5b?)mUgFhJdoIpLO5V+^y97WCW}a^Y?6N;7M93EQMsQ3tU6s zv-ujwq4L=zJn6VEbG;rdzu0i)EehR}6rCP|pR)~l?N?8IGPs&|Ui2)OFdLp8MLGZG z*_n$efgJx@C#fR_v+q(|9>s(6;773nBeiwWaLhpGZK_N#6=3`@9JYo)MH-I?ORiLa z3;k_9GVsBMIw1+Du;!V_4ISpuwW|Q9ms9C`I-(t3uOuQ-2`e(lqi|qtCfe0x&o1Gg zx$?rEz2Zi*=zF4%FNc0|TIFO|({P0X2+MAIA-(7oZ0~nS7kNQ2!#25(7SpcdsHDmc zWSj*AaHAg*ddWJA=H+r6s@@7l){s^T=eD-5pZBjh5bBLzukH!rYrHq;E%4I|N2757c-K&%QbgMz(r1p3T(7axA+(C zHu2T_@DpUDZ<}7UyK;oN^WK7-4S#75edjhMOoW!}eW`^ac5O6`qAmB<)s`Skwg=zB z7$;4(@D)zEbUk|b0(c91%Ubi6yECiLFCxlF0Nt2r`rBypkR4{G$^G5w62Uq}bBSny z7!KcMD8a*>l6s6x3I=B{-+xJliG+z)m(iHm5Z1l7&uAAAL*G4r51KkMq7wRX(k|_f z)7bq5q8cmiq6FM=G6dHtoW7k`T$I8}d*-xZE zQ1gTw9a<@Ph}Mcg)kHg8r#InWq>eNyz=-CqcUc!TR6+(U;oM>KqN~iGKDwGhnoN0A zDf`Q=-goFP+xr&_7-oB6XEQG(8ZqLIvC?BF$8;QPj0GhhoQ5IL9gwa5;@dtSkEPzn z;(;D21`uc?bkHRlrX+smT-sOFOg>Q{4!gSL^cU6YI4_R3K)2X$`d~Hd{1n#30tl0G zOi7xIpX2f>a5|gt%?4>xWakWkYGbbZ^&eIgF1dvlp|@l(i|(HJX=ZNO6)%l?8a{&r z1b$#nw)kH<0|3r>5A1`YMR03SOmD#R{a~mKDx{01a+JrW+!=6Y3qW?0+Q|}VCm!Nt z`Lzmj(FS|85V28k(KJyoGQQCLKU-1Cz0n^jdRy|ND9*`J!Ft-|DSl^e(nl^@Yq_}T zz6)lGD*-sN%N*`%A4Qqopa*Xsp5^51`oL?8jRve`HLKi{|AbLWe*k$eqv4sEYd9|v z@pl5O`p;b@Oy+u2!MvTKslI!p zG!}{sb;CNjq{8ykujTql@-M@-e4l4S;yu_e%%r<70Qj${Nfr&kDhhf>98y)&@C679 z7`Eq})s%w8*4{wU6qxyi&=#+F+3fE+nla3|#7MMU{A_{sThGYP_t>U57^CXgfc^;) z2H@f@ncIEJN8BRe+TP_b%Kno3lzb^^CP|klSM~ExZKw%HjnPQD7ss?5sHb;E+`MV2 zKXC*dQ#-6NTHk+bIZxhAKEQR1O+6$nvMejDz86?qFA=<$jZ`ey@q>?q<7_0IuVOw` z_xLGeliZ0}>-Ti51v5xp>KhQ|s^$S*wHMhuGc#Timhka? z%dwz6_r_}B8qZ*D9RycBc|++FYm50e=gwwqVxE2annP{13v@X@o{+i>EKoa{faMYH zx7DSs-{&O9a8$&D%UTYj>Us%eMx)+^3TkV&#Jml6N#8S{lEP>8SulGShJ7N-MT~Wy zV*f1>Kh6H1+wz0s(dSKt2m`;;hR+om1J=B{S`$S`fM%-Y;i$~9m&JjBED~U52}U}a zJ>^>*bLE*Lb6jwvEx)!=SFsibH%#_1&9O{{H6A`1iygfBKBYf!k)NMGtj~SVT-r3s z;sG__CP*-zS1|xG_J73X$29pu;j`&fv%-hD`_*x>aJO?9KF?0zeFwoZ3~42jv0xUd zsJ7@~NeBs%I_m4EK~#RyE3=wxC_e1uQ0~E7Fq>nV*PIE?<$J`-=;nUmOkGop%NB-dWT*t|ps1 z)SEXVT~v>0^r0b%Ysw`&l;k3`?h|vpB;`@k@Dshj%)AA3cdOyJ>OG2^W{T|f-V2EX z1eI{B1UpfO=A`{n>|7E(oSX0>^zr4u!lN5bZ|-S$-J=$$eEOIw#<6MzK-H6s-^QDx z90huv%Mr#74pmy_=x0Mk^Uj>J{?gP+QRbHmnsgUQRyUx9Gk*XhKz6U5XtUW5q&qSz7J7XrYIaB8_}zHV)o$#J+))32pw44Ji!VI7ZdO z7MO^1gOEZPl}-63U-5f3FV;T|x8w`URf_`SkY%d(KP1i{3e25}nwUE=aL5>(rHY)1 zGM)-gr`S|%wy#p{{vcrZ+Z+FVZce-F&m^ORqJG0gkTj*|IFufX|h1TEe(- z$>_`F*D+ErR3Ky0`N~iI{XI2XY z${V|}qK7)QOrsX52p`OM_+jJsd21iQ7W6q3jPv!h?AsKMRRjXjdU1YEaas!A$*(`Y zzP!X@Vq{eB<9wh#WT3Q>iU=?jP0|EQ}O-mE_txX*72T zDe7~(LKux0SlT(8QAGyk6k#xIz(zIIU-xnVHa|sto&Nk`#YJR3-u)K&8>ljU-gIQk zlgehNtMI$%v2NqxLswv+i2|+uQd(?^nmOmbR&nd1@^}4EDODOk+?wjA?u$lw5T&P9 ziEj)f7_$-=VtH0mw<}j)R8b#2gr&z<3vcgTUz;W;7qIdzQ~q0R$9ZSc(t#!JJU&B$ z0zibF782lXFgtw5l$%iwDjE|&0Jf9HxFZ76vSJ8IF2#nyo_PEIBFy!^+~9neF~(nP z2Bhqq=Tf#g_PZjJ`x5Ct?3M~`VOpx5(_Z^6Zvqe4%0slma&%I$P(`MhEK40Jo0vmYkezMA|f%4|>M z-KpL2$yvlzXGyF0RHAs1j@r7qVVL(HzTdZZ$OzX5+K!J`FCoctw={y6{bzf`@k zwR`U_@kHZ^X4R^!c}IOO0RggBvxJY4NxMhbkxC@9SSj!ERt6FgJjVnn*ZJ+@g2wgE z&YAE!xJUvzmbs;|W_M(m41zgH|Fe34|9l}rLbk7tcv!s@{>c|a`o3{R?pO*^qp&nw z3JC3tGX-xpyEnMYrQZxzGM>Pr21lxLhn;Nd z0_Wq5`2eh5Bb49u$NCX@TNb!fxXKWi(=-48&m}@R#0|kHG>T@54zD%ck~oXQ>n!y% zLIA++pI4~&(b_g-cT|XEn~@4IvB*Wc`Th-pbuek7(nkci>zaFw>^1KlM9x7GT@%~e zY{^@B_WyLq-poddVOQ$|cZRuso5!KL)Onl*J-c4mHx4r?Gj$%nNp~%3+3q<2ylE9>Wf_85d7|cRxAyhcuf#D%D-s zgMsMZ9NQ#(e{YYZe!F9ZcET2ywsz_@{$WigKc>+>}4RHWhs zDtE0`S)WBSBZJ4g){i%ZM0M|NbNsJB&oQZr(s_8(O|UGb&(jR;UyE#lf7Gn{C^)Mw zQ6Z)q>LRHl| z#5wz%Ud+0NN&Yxuy~VNZ#r< zSTD^#-5yyX$#Kl(+4r7F`IVPLJa&*<3GFu^3iJ(|hm-E>%IW7)J3;RTEK@s=8(+uw zdM&S-30}Zs-<`5Vw{D&X*n67aiG28Kv_bT^Mt@XaYEMElBlbNN8sZJbIg*t^MM`=5 zgNH1*>a-*T=bW!;MUr?nRos-3?nbBVplLt;d;hOd!Ie41LaDuz+s`3Zd}!tsgcAUO z6z7FYP5mC^S5_M(xz<616LK%yq8i;C^N0CEg*6)$4;u^<8AbZhkq{0;GiJkH;tE=!BHe$cIb{H94)^XGUy81-I%Odoue&!KJe74Q~pWb$QzE8-l$o8Q#WT8!T?(9sRJ ztjDS~JzRhfYA^k5EDQ`*6zsrpvFy7(loDjkX~Q^Llgi%0)`jw9Pp7Ya4YFJkfPxz( z<>Uz}(x>Pe(t{bD8VProymi5iAA-TbR6{YJc-1EU$%LZ_{CyxN4`d?)|Ba$#gXZVx zNIn0y0_B3?k9*4#iS~R2`HZZ;of99x3JHQ`Hx)^;yC<E}Ih~MQ z>IE5y&IjL*d)!}X{@8MowC3K~Okuv1wFAUMYKr}?xkqT;*9}GFjbDAdv;HA)k)ezo9$gStm z7AuY^95Cz5PktIV)Vzn@R#O@2$uAl+Cn1j-4sVI0YMxH)lo|K3gWAAOec z9+qPJMyITsNvvdA+x;g1ar3Yn0H8XHX9VY+?|xwI zJ#xvbyPCZ5Z%XjU#8OXB4Lrz494(P`?y_fZ_X;}Cq)2e5%*ugLMd!sr1;`{+d_mY~!!b@iC z(v>_{@3wZZvhM;K*IHZWYLa!45*2fIV_%>iIXZY5CPm|FJVMg``zgBit}_;Y2yN&G ziVZB?Ni|g!N#m{cC$J?N6=FL-^sV&?#>=E20k7M;vY&GDatDUYPKjS)Ey^|vzbAs0 ziDR@$N_USxjTcO@avZ4j zPsI`9)#7U3!M#~l|{WCT3au&$OOB4x1elK=#diw6M+gm0!5_OMx=%0V{=F{cM zeK`5}-FpOcFVjZr3U3|e;ksQ|IF){HGMAVNS~pGROWK>Xqe_suUZn0d6ctq?3wo4h zn{Jv4h6Fd?_%Ug6=@oF?uU1DXp5J@Xax(Y!Ol!;LBD#-V>3+3|>SYe;7o|N*uYGf} z1y(x+gm9bj zFEfiAV!0<2Xs_f9OScR`%xvxZ$Ugz}afZqOaMR{qT>x%B~E-5j{A`q+FCcw)`5+iHZa)aHpx}^VN zHTcBd5d0-Z+IFbap#5d>V?ooy)J)NGrIe0=(v` z={`E5TeaA`SC*G&j;eq+yYo2%{FV`6mjfx8cb`9vXMdL?93J$1Ab+`rLhQAuO5|~w zChsE3OggM_Avr^g+1S+1qm#`{`E_n=&fbt7R8}uLiVn9zs}vk^&LpE+)$dvHbw-3; z?9_|0G54pi*nGagq(k3ad;dzfC6}vlmDYMr!01pYB{4b=RXUfs=EZOLK|{#<^T+Gf zwJp<82_(x{Epp3G^aMuYDPSIY(*p#i&Z8+jzia0`U2&Lq!U!+(DhYEE!M6tKLCdlN zpcL^#;X67eHLJ~SPmj-TfA9B)L$C6bQg_b!m`g8PFIR%;MY=??@k1Wy#jF_~t;F8m z-o81W8nxbhrFV~C+{AO>Gp`+R9MF@j1Qs0%B4y7p*G>fexuJiFPEZkZK`)h9+^>d( zQuh5%nSs`D|HA9d+HSq~ziGIzNXaq>--Efdj>k>{4D$n##t}gc&;0M_ycCzYns(X3 zTAfQ*gu6QmXxZ4%je`7OME>_IcHPxA0>HQ~v2`^|c6l$7w@4*p?@ZkMXbFvQBjXt? zGIG=8!=xu>duu=r|0%hBT(jzs)@x&?iqXlf0UDl?=pUXMLqdijhX}^X{J#3VB2b=U ziZEYNWq&xEZ;o~|7B*V^;{Jh;c|+IjR@d$%;GHx8J(+v^Fx!`79D%on7A!J%GsHEW z_$a0_LtUQe=6+rC%;>Gnr$U!Ze=e?fOUDkt=aFU6chW+$IcO))QJ7qr{sSlrX{Ew_ zkxJya+JOEkz;Al|d#1nTdSz!0yjb}BM*q@?tUwS|eFg3JB3hC;8df)Q7ec)rA$Gmw zG@cL{Jm`13c^e&k_7bq4y1a3^a#y*TAFinFQ*cF4+eW3m!9C2_4uVJgA#60SGJZGobf@getDf!fE{|j9VV&fbWuJPg*)bdR zBD-6S8`@71sYlPa^Ps}0D4JBMk<$9OH1tEf;F_^!c_u|M;nuL~z zy+Sza?Yrl>a&i4*vMwOYNr(0E*~1z4Fv_*g-6+m;O-p$){AHcx z{x*6ShK{R^lvRNy$rjR<-q0HnPzIfV9yi(+4P7KGwvox0pF_v=sYQ^|g)4KIOP+|Gi z`Ymk~JQ@5QO;qVV6~cY%3rlJKGDK?Vm$$!Igwsjv?DOScWHrG86p|_j1wS;&e%0_er8fzrPdX>d<|Vo9eTLau3kwyq7l&JwzD zB*#}wcO=0)`;&C9($RF94i~zkvoH=EHDIK)tS2V@5;JvyFv8gTJ?y<;yAp~Qg$}wf z_jJdYV=Up|Ypyd`*4o@x)29BL;^q)R6)^XHk4a!k=NU|0@0|u6Y-gAbwis9GqD?jl zQtAVDUnXBBBjQtCWi^UyQNUJu(7c*THZ{GIn{zDHRcPgi^FM%1Grp|JNxbLh?|4vR<{rbnbxDR z@UhydLQj6%b{_%PT5GM@V=+}nIhQdMH-!7dd*d3b`l&H`Y2~Cc{j-ObV6>9@kWDxh zX3rOj)ftw%2FgBN!O>p?G-p^}*Rp+HdlyA9RK3Uvt;>Q5HF0SFl$Gu=Yo%TTL z+-;F4dWn(^QS>XC<-ckUfVV{*OE#l-b6*(dt{&+?lcSKFM zr5lE1ary+{QZ8IVN4$7`gqZI%3PS+-t*}&{aymtkCAmV&X^8!~jlTeg)BcA=;#if4 z?hlDP&;PuVxEaHEL6lSm5XK zOg_pPY?vcH@(mIZ7%Wx)Cg5Qvo-8hQ62Fb2!%<~tm{OrB0}Jl;PQbm>?QPvrPx5$r z>R-~(_%3G5Fg@q*q->!K0?}TN-WiJALA#l+znrN>9&Qor2Ado;o!%#Y>255NDtS=k zj4isi%yZ&M3Ipw_q>plnXGmbH;9tW(sO<&d^4&S4k+u%@()i7%Ba}#tJg+EU=TeHi_?kr~ z#eR?5+st?1@- zUmPd&A)EIeeDI>fM!an1YR2<9KJI za4AzQ)BaAZoPlXXU$SA!Y6VwTY@4N8j7WK+++66M52B;(GSoa_?T(#!c6&1e63@nY zV-tJo3_TdyQ8e6@q^u@d;6o6#w2$N>B4Dj(SPx4nlxZvQ;Hz--btNp`TN>#(_^#yX z)2t%K>0?UEgt?Yu-rA#pKXsZ$2xs)F(H++9vIjj(+_f zq;Hn6J1odNz=k>T6s+|IbXr)SV1`YbY?1%DWR=A-dr2H`Bs{6vjHsyebs8_V zw>cLw!oZqyt4QcSu>5~qy>&p8;j;$1D+(wjAYB5YbV`>3f;6afmvl=muqZ7{Ni0YS zNJuwJ_ktiGA>BwwcgKA>zjMzy_x_2(e*3*K^UO2P%y4TUel>czmPeH54WJ(VY^`$1 zdz7{tKPHFEA=U@Dyw!_wDv$nVYpEo&gRA#rhW*`C6r@xH8kGdT~n zwvLbBB%bXSp)W4?FJkUFD=PCy`n#zsT>lB#DhA?!8x~^Sxo_7>E(x;z!cmgfLON>( zO6l-xVGoGsOt63#iM8a}-&h7NK^e*}b!;VCYX@#--$Kg29F$gE%Be&m8(TGTUejy6 zyvVO zhxlE>cakSqSYivip|W)X2qPw8lpH=(FAht|B#Z{ZopvJP3Or9-Am zL9yYYuYMv9Dk>^|D(pykFGUEVFj|NOD(^?$S2OfGTV~*@iHm#0SrhBP%SvLV|J9if zP3-33ySjX@s6<=h3zbjpAlXgH_4Sm{=7SpJwa)(e6ACiq460-Ol-d27ciWPM;Z6$e zr+Ye1a-oT}6#*RGCY6+|SB_7xPI@zjf>C4e2<~qIRQ8JaVlMo)@HD?Q&vs@}E=gNO z)AusVyMa*IktyI@RpXZjRZ*pLk1QKTsMGk%C=?E*Uwp-NsdEf4z!MGkZo zY4QU448HlCrp?=1NeNfypTX;Fh4?nkV?FmuMVr0F&hQ2^^hXRV6vhh_7D6eT9NzAk zIO>#K=X*fMH^*7@3%1I^bUMR(555N<`qEk9hG=k-J^!@FH)~^V>UJZ#g!Y!*ROZj8 zO)u(!iiKPmo*yB9zNe+`W@Kez4a+D7jp)U|%yerw=C&qh|iLhFM( zob~T=xb3vY^vIXOPzq#}925^;L0^fz@ek&fPhDhA==U6`gB=Fus-U7afnjaxoYw$J4f%BljpEzIL?@1StN2Tl zM9nbA-I=T59A(>9wCq#yG#)cq9Qp?>R85;0YWu*e7Ew}B!K6y~vxc{s<5yn6e4_Qd zW|@|UszmF=BmZ0paYLXux1N#ib}g{sco}Hzw?HXRud{C8*gj_`b zT~puP$a8#cMBlc%@wu;V_b*;YQgR=YP4SD1onALYBaQFR-yOSReV(6JUI+dNZ@RqP z->gw26Osb{ZfkRzO7Q7Mcjoh-FFA!TD+TuGa!Las?RcAr0(&KLq2S|K>?{CkyI ze%l>yiL8;ST9*2^<<$hD3CAI9>+f0??l)^{lbt1EohxCW1v!4sZys%4X2=acx^XhY zyAiT6J`A%}kb3Ws7XMy|po;CR{saec4l3ap(_q`eH@DQ?f5pL|6`0@NfwT7)yhj`9 zl5oFf!-AE+%WSbHh8nY^G#)BvW8HiX7GlH$vNRuH)CGL&__#v980j*j1jjtSHyo9@7x?aEDz36q%Ht0{K?+}Iv_ZnY2{5%?+ z47)o2o@Al0+RyS@jT0IYZp)*-gQ)W(|g3`@(@32Bp3X{4?q;@pn?@P`S zIhi;9EMnVu1jiII#1l5kC)qPUd-dp$KX8S==8Vk7{f!=^JCmhp&e>G{`KJ6}|G-|Y z*2&82-M+{6{i?K=&0r?X5@;aUVICGE>jrs|_RMGI{(N=_ogZp;q5W});8)v)K&lA^ zWYztiq6ja( zW5{kk{JRB8zhmMI&i0pUH|t)T`m7i5uQ}u!9*zI1nSH0}b26t*W45D)?!5Ft#MN7l zk+psGS|5p{04sBP?_hPUdr|aDK!eL})a$%W{AZA;gPiZGOkh~|LyEh()Z>|02mA4t z6=OSa=7qf^1t)XwR+a0tixSqeKS_cE@?WU|@7`HBntMa^WSzHk4o z>OO+ab5K<4;pk1(m|=l_{yUafCRxe_a(`aGSN?`<>X|Z)K{#an-MzhhqHT!Aw4%Fq zN^c~n;VNGC9oEtm7MYu4MqRERF5pp(db69;h1I;DUq_x)8-Z2kp8HKyqLLkANl42RfTvRt# z?TgLG!W%K&E>GMgc7h)hGU!xtdK0W_gY4XQZ@HbK0d_gf`rgJ!Z{U~ z)ss5sCE4<9+UV5elE73|Es>%yEs1oW*@adP5M=?Xf`f29ur4FgP$cQ`|Cmu+xZ{@t zrNWXMa53(gY=oucM$(A7FdoxBo3tSBY2mp8y7a!1a^T_N>4{a9NGj1U#o3?#X#`DQVnXX#S2Eyhwv>L@8&mYtvLa%+yi4NzGg~up!9*$6#W@VFf8=d`EXi$FcAzWkzAo&@i* z2h~yPo6qmm^(&cg=S3Gjl^gDyhCKc(eTY9t4+cp)(faRxc+_FG9Ql|Tb+F0D)_fU~ zS+j5oEtAV{WX+BPP62+##>TPWu6-G^=?gX+4uo{K7hys3*M)e3v> zK>D!15gzq-Ufcy+Ep9QV^e((a@LKN4y+i>f-}UUPe1wZfZWCc8a&OLOEpVfShzPq`uOtt>SRuf%di0jfNQ(> zpVO$y?5od0jq|zQji1;w@<*I|6F7Q#d3lS;uXyB=k_8UV5BPVD1CqG*-lI&%z=>-}wFds|I2~(HSCiEP)y*{v(VJx8 znEw&WI*xi6no%!(^PXuvEol<6GD9ilJ4=T8Nf23CNYEtkYH6U3ngI7;-$sTA z7HXJ#`yITyyStP%1cgF*m!Dv{j+iSRwqKj<<$Q`hC!)H(YA3p|N@O5v!Uxx>>A8@} z)oMB-YwKN^9);w3Z-7AX4h&6vPr5n5c?TxRFazakGrN3(`x@tTP>#;NCC&*6dQe9J zgks+f?6W3~$Oq=zVG*LOAdW|cJpWUmwSy3wbQvk1V>TuJ-zCR{ACn5Vzqn`S+Pb|- zX5_;I-<@ym0aLZY8y4v3Pr>Myl7_3}scC<_+4!6Ii2#zsAXA4m@p z6v&>w;qDH{ggb14#z>xbsL9Ds|8|5Cr{7Uc6*>C%Dx6fjfA_eebi=o;H2~`-=n(kx zmr2a^;E2KrY3`_Daj(D2kO~U9mA!)k<%#RvN!t>*PF(xeRLwJ7%I9lFM8{b5-IXHS z*$Py|dOxi$OUM({a(njIp82>Lx1AF*M9EC#*$DFZeP_lUC-2X7ntrf!jd=EB+Nkk3 zjxI*ylhk=A=;hg(->9$7u^~^y_A}|PlFL)!*cADGnJ1QC`2PE6;u!D`|NS$3ljP75 zZ42IZoOP%9rfH~9r{Yf50VtJ-1Eav%4ps-W5;zU=!7MQaoo2sAB0@s-Qc+*v>v}*N z$vEGOW0nvCI!%>yiJ}fPnl!M_LvW_aS1&9oN~=FbIP11%?wd;96sSAIS^q4OwOyc9 zqWREN^7-?3Ny4rFGOhVheUoo8vqd z;0q|+Twle5hqD2Vk*3X9anZXUZ(gw&HTk@Z`=n*$8&4Mje@q)&8nH*f8Al*^DDkaa zSelDGSi9)siS@^HlS}rcRdPu>8XALF`~qR<*>58wBRQbPdCk?P&hn2>1ETrt${Io% z(LB9-5jvMHI~Q{KAOzu|i$4br42H35Fr56aNg_z_zoie5L|mniap)c@frk4PY+A)W z4qKB|0~K(ILj^-aL!+WW(Pz&rKj`aE=e`yM4HPUVL=SPf%nsKE;Y;|?Og@OmUG5~M zD5qzj{gB;vYW+dFanWqH5WO0Q2>ko^&)$_^&vP$eV+{wN5-2UmH@`01kQ8f@?~LFn zAqj%s-%#b^i>%E2(oTWQT%d|!42(QbMbq(Kmx#cfiuzHJ+=)e5h6Q;!XKH=YsgeJ4 zXr5Ry{Li6@O$mGb{~j78mt(^_IVOm#tGfXed>}E*#YV#VPOZ*kr}$T@XiW>ZJ>smeyg&n{0)~4s+0<+0JfjZEXz=2hO8dJ4Y!A{(77)BnwP<^ zshrS`1VB(MF@Fl}@XiShY$mJvh#h+oju=Q%@1r7@RBGpE(0V9|3=F;9D~A8Q;e`LW z;m zM`oP%3C_I(`r(YtnfkG9nsopQ6x7tB_uC01nVA&ge)FlcJHgv_iZgr|m#Pq2`EL3h zLUGRAOFD=fW3i8WPG~4{R|U#KCh{R~g7GdO8sl18UM&B}O(Rjsq|#i3!Tfq?uCbZtOjLz!xOnrjC;)0uq$=#*nE`(CS)e@pRX=2 zvw-XNt|x(`U}gb8=wggJxU<;&H`HMl5}!U2#<00N)m~l9-Ds+$2&unDgKYl0>x1;0 z(8x!6S4gB9)Q+EJo9UK8x?b4ByY-SnX1gVTn=OFLyy3WskWWvnej=fqf39lEdM2D_ zp&?#ke)(8F2+8vfN{Uobhhj<9U%d<9lj`%>99OReSXn&lc_s$CKC1MwssCJh@V`gR z_3GHHr!)M!gcB-su1S)o^8sf-(8Lja0E}^m+6{~xiByLQV1NP0$lvNvKE=vBnLiPG zsv5fKYLucUSAtKIl}zOM0Uvs#OenAH?Bfsj^dY|44XgvySpG!_lSUpj>4{FfGRsYV zx!C!AYQ7h&6Jk7PV(p%Hkt%PXk9m0eO$)`YPnXUB^VtLJe*CR1etwyLP*3&BzwNQ8 z95?sz$=fK*yf@hokdCxVt;qB@Py-BHihbnG8|VvaT**K4Mh%|MO^jD@b2AT*JLP49 zhg1=c1-$*nNWHgE1m;0~J!4~Y&DL9}H55C5BI>=E{PG~uPy;H4HJ$Dp9WZT#%m6=7 zlxt>W=jIaBd+wPIfT5_BGbm@XUVt71k;fX)7xzrW443JVqMA@j8ORb3A~zq7l{eN~ z@b5E-G8rbK?Rq+ou&T07LePEx)0mLH^=+>mo>Ag9 zXB*m+&85rtESBIpwA*)Q6~O-g>&eTn_^jH?Ol*NetM2(;=YKz2t$=xPh^KnQjJk+i zb|IRE z(dW8*))WIR6?Yx;&SeESk%Ogxaq-uH-hIu)$4Qd{w`@>#7GI!%Kl`thnJp14?4F-P z5HN3NUwIajjmyakJfTV#xc2y~fNdEM+Mrc`E{IPjCk+y>X#RFrlrrP)|E~9a(In@8 z^Os+oKT}0;2$9a?l#4#(Y+G*hZhvq+N3p8&_AZ5o151I5off8J;*aNPV@523WvTm} zdGC9$J|erdp|qs2&s5!iXqBWj*T>OWiX8waYapY_{J-mgq|*Vp3-nMpU2MX4rRnO| zXU=b6%M1NREPh)OWl1qjmw)l^ovBBXNQu+Nc5^C}(@&f>?A_=Ue*lJHaAF3mvJ%vT zG;Y2oFx-idbFTdlxQ+QBKGgo2n(8YqDJjV%E`GI{uTkLr7DmWhSH2XEgK=&3e*d-rt`d8Gq=3^hm6 z>Ox65vcG@d9J1L3N}6dV#e~D}#|--5@n@99z+Os67NY*Hti0E6^6^pyFyb51L>DRu z|KZK$`N1Z0$hhB8Aq+pA!nEZNZ;!o@;J10<_t;10{Q>UkxBI;saYMjEi~lM%CWhzE zYP6^BS(s&}`TO^g@8Tb?pFRW!rQZplDcd5$#yZDz3E%a%uv#pwBHgMFSnq%}x|%4& zR8nQl%W;%EO5Ui}rF0Djtd`}Tc?o@?Xo%aG??;;9oGxG`67v&fyNFMgR*z|Nsi|%N8 zegG65zJ!I~)94bry^Wt&1&biu7D36M@AJ1i=0|O9?Z0)0o@6lE$WeA{Syw+JBV(r2 z^#~L^PiaX>Nr{A?w6(WmCH|S!(b;PnA^oLlROB|EB2|f z&6e%fpB&}nb-76Dvn-HOs1nZ>WS{qoac=W95qGJG&uPV&F>QhWajBSpso?GqnHCvl zdHIRT{y%HWeSH(Zr_GGyv+Vy+pjq_wC++*sqK^dx+zkNW^bXACN8+DEV_L^_&90`1 z!>W_>A?jnzC`x3#Hl{xKn@y)Bbj0xSJ{ZP>_ELlu8Pr$b05)Z@a?<2vd&bP%t^|sK z`5c`z00$|JzRk|{*M?e)pN8)tJ#=*^P4;F%U@;qr=dgeD+~dugAwcyvw+Qu44P7iM zql|x+W{chQdeStoEsPW}7$?wat<>&$M@OWpd;)YqUgLBW&d%pqXY&MR9v)}5fjJPw)E3iYlx6;TWf448X<-RQT_w3h5vZLJvOI%;_Ph4<`*6Z~jr zu6eN5b(OUI%(<{uB@S2$ehCQ)>KHuVj7H;=H#EHi?qI}k^|QlZis@|fo#7ryCUNC6 zmv^pFE$#Xn#l`HtfW++Nz8ZXw7>uql|!nmqmEZEn6s{yUzDp25LEw#qM& z5fOO9Iqg*!{h`KQTV9%=Wk)_dGcup3@SlSIwmF3phe2H>l95s3xHW|f1~V}=Z5{t2 z2|M2G=dB(CoS_PK@Gb`kn2R=g8j3rr00Y$27AS#*LBHo`ZvNL)9AgmRUcHO9i+gBO zF{)Epulia415(_`1VqehM$uvrQQ^0m-<1`)oU5=LI49#W)Gu>_FSHqXQF=b*qanj( z%ue(e$y4VjQ;YIrgTY!`SHPf_VNUR+g8z8jhml>JO`a&O!bX#;?3q*W_Q-C`oQERjZHN>I1vE64vno!jG@^bNt2uzu*njhhLFkQI#!u0E_CjGuv3q)o3(Z zC^(O@*)ouVQ#v|ukw-hu)ZH8KumB!8%SU4XCdw)EVDJKeo^o3qR!c^f@}Bza*wioJ z(yq7);|9!ub}25YB5N81l*x~$jGR6JS(%v$WqYy&exPNdHO+XU2L}~K@z^b4Xi_+Y zVeyT9VhZP+M)WC^TN0SEPH zT<2>0zCO8N3b0quURZLoA}Isq`|u@WJLdiO;&h~>0@~UHC>KE0z2;s?M6KF1nqb0R zdC;vVeXt7NxEjnqhk1lZ*Q8c{ob@c}12s6=q%`o*$qZ(faKxSrb36tXeq{+*>Ytiv zAX}xSNNk#>^8DKRzQy=~(ulf-f8K$a?0g&6?III%0l11AAZkgDnZ3KaJGa+*@SGDi zPJso{aW)yGiS=>j{c-f%+#b%~5mP?%QStd=!I83bo~71`8%Z&k4nIP+aVu4enS73Y zFaGOS??Ajr&W_GbdvYFA8P}}yn%p@qc24I_?$2IqoI+npo8o#dMnJ+K|CV8{7 zawBpQ+$s^?rA0S`Dw{u!r#FB|9^R9Lc|;yO$1aJqZEbD6H}?Y$;I#(2gHVMXl@=Qt z%jpVB1>1{XQh;u8`U?zq?8Mc?ZyfFEqm`5Jin=MEW{Rv?9qJPX98N`ih?Ss_{KpVn zilGm!pYF{Nx}1VouDqtO~I7vYMKjUpSVqN8e-J(ym10SoqZA9aQJ^q)+FK zO@C4-eE1BP(iN)oI=HZS4!eUa!iUTj5)jZyh~X_63el8%aNkpLn3afZBgcr;4;>G( zQrH+RqS~EuZ00|Fub;^Fbt3?^y0v8JI80@SDW#;HRNHJ@{J!Uh?trT0A>UzmRBeYcz6}0F=mnP}H=-%aS&a$Kl{0ixX4D=%{uJv1 zMz`coPfshkCOQ#VM~~_q1&=~ov__#m*3_M2Dhtoy=}bbbHp1Ip7@TX>z)KzlE)h^= zh3N6Be0EpZd?QQy_Z3AkFm>aGG3k@FJ=@=ECVuNk&BdQxwI!07c~PhKY=E&Hvah{< z!Alw!uG)%k4i67q*JFyqv=swf*{&Dik>PzBnS?LzdI1LW4``^Qx!SJ-LTl=!B5%VF zkl#9F-EEk!3cdV``Yfpjsop!)j5;@{`F$Odf56CTInt%%G_T278TQ5QwZJPhbRNs^ zSRQz>{CD~9ewyQy=v2Iiq;vlxeEL}pzHNLdfW!w^R4+YTI9RD3M()0*g?G{Mz zJ!;j(@(^ICHls0GK#;TA8)^&Ynv%Wv zfpr8VauF<`@$cWi2C_#6j-JgxOy`bGNa60u#wjro@)8HlzU8aGgbC;Q9#27b!`T|` ze{<`psBVm!{jQ#?GK$#G-vBO+Yt(Pm+`a^~;qN0|_o5N)n2_0QNOCP1_*a!%(_l0Y zD0By0OUx4n%bjV%Q7o;p=K9)IVT1{wiV8R|I0d%3Hz5A<&4#o-74zZ_oVWf8-7{o3 z>Cvg#=FGjf2j3%f68KU?S1yl|L@RhAsi`Sf7`aIC)Dr|7jhglig8gbnUoQ%_OdXm4 zvSj@wLED)d@UdIF67+WvHPvH)I{wP%TPij zo8^PdWkl>{G`jMrR+1e`Mi!QF2a7Ch3by@0JylJ+#Bo1wf7msP{NNn%u>WPgG$hIn zP8C^ALbFbo{l%GdWvsfecOqP|MTFB&cuLxCp|d$UKm;va%xBlek_z;npJDu@;Oh-y1b|q?Y?93<0QF zHhD_O_+PSp$t-uknOC0WmMh$V#}LlS$hk_(_H0e%!oU6AvD&Q*e=Q6-{KzY>qO$E+ z9`kT^LY7NDne3H%PSJp+8_hS?mf8NrHaWTH(X+t7v1&i3HS_N-38yp1eKJz{uWiyT zVbs4Wg zz)XO3_wI9NH$$z3x)1+`yax{mF}38#F<#<&Ti9~B2EOE;lP_is)A#J8)MyfQ-YacO z#7$Ogf7bV!jgNB>3b_f#hloY2K_IEj)r=mHXgo69a6r;h_K?{paSGjrLhF|j2qtZm zF>%GCKVe)(_9b^^is5^~etAsfHxxN~`FzsvK+ceF&ky(yDsExwc3<*X^A?LfXp6qY z=BKLCER$^Zt$UU@mY6}^lBOM@3A~5Wl!uw@nk(3G92XbM3NC`2dNhy* zJS2C&Zn&@_hzZu`;cKEkxjLn>7$y?U}SRzir@!Xaf} z6Ly$J3CxZf`mB~Gt=Y8lR+A+UUuX1#jLO&9hcpm??(oB~#`a)xQM9T5 zkkgjX*U&^HlNI#IU33)P4N}<(N(;3?+F3yv;f3H%N7qDTRpLWzM%3U!j%!uVk`L}u zWDEW>ZW<6MKkb&y*1k~9e*QPpFfZNkwFlYwe;hB#HQnbYp)8{bBy5_`C)%`)1-(03 zdK!#34g~GSe}5U%I$aHHc3-j;r4~%bNe*i39k7v_54o}+$De3$IWh|P0_yAym z*{EGcXlz|Akh|7UGg83mrA2mH3Hj{XiVo_FAcCV=X3yc!t472r)A0&()q+2#L>}5extRp- znXTI+N)AU~b-K-ixAs_deP7k+u-;dZ+M3-;zV-?qBCU^;y!<1Hd`oNb`U#uE+<#RL?o=qoG;h4T?uJVFK$s{z=MV!<|V4+-W0g=sSE0h!?9 zQi2`iy;$7s9s|+a z#uNO6hjqOFrS$e-K{L1xU5zbvA*n|a6$gmqEI=e9+V$5mu2cECNX4`Ixvoj{EGa23}H;5^W zZ!vNk-sU<*kn^-H<3m6=<-oWhln;_5{2hCb-8tvK#td*1je!c|H&{zUAUSd5jk_vJ zB{gQqhorMuq5y|vjf*|nZGGg2->ojt-|MxDjPBx?kOx3V(6$@~7oz6ihL$9-U2^cJ z;&b0#2CPq>VI^yE@Ok$$4qxJIRao>U5E@@5P>`KVdO%uktf(3d(&3kTa&l|;VQmxn z;Rn*vgrDzli8N;U*;*O`f@e=W)rdr7=KaoaoaPKVZhY_Mb`=sPW zlDK+OEy1a2f@b2=Iyym5)0)3ya67ld#eZih6c#@-1-a7&Z4e)U6$z0QhIHqw(g5|D zVS_90;wLj=s(~(%DMRg&HcwqleQS1xx?Qhu)38XU4YDeo5)K^c7{;`QhB$ zB=v98(JMxy(&NY8z!YR-|WHfzbkv>y^E4_?vQegFr<7{r6o-wf`;U#v-y_jrB}k2FK%?S8sCNr5rw-V)mTUmn zRA%>SQ>5rpdwd=utPg|)ufxT8oaCmgpWwaP}|ERgK5=#z697h=gizf)$Y^h{~xq-F91$2(vy z`MLEQQG0U?KUM13Zh^=l(SnEJYO)gT%y513gNbr!G{kb5&od!+(iSuyY;Mu^2IS>L zL)0P)cT-3Ji6s&wTCo5ZIL1b!6nFF%e)^$6BJszhBRe&zzWA#1$;CZs$w-n?p9h-e_j+yXWAbh7dE(!rG2a(twa4U(`dmQtVI>56Z|3n1Ehb+7cvpZDV2o>cUNZ2gr@1fA^p_p!}^5_(Bx01 zq{*oots63X9#Z>opBa245m{7D`y3%RHOx6MrN};r=Uv}d{(=VwzhSnK+PyB%IH~d2 zMQYmAdo^_)Q|^HSs;7MYf04Yj`vb29*PJ@KT4b!|2tqb1n5q zbb8Hr0@U_~+kEVzRw$SW!$}+5br_ja#xQH`iD$!@uR?Urf%!3lNK-c`3kK!$JY=LBl;Q#S zKdj25WI)~^%iN%3Z^CHOSEwP>Ue#<)CWO*cm?;^AH&gYJAB2&|_QGY1L*Mm@~Hl&LozG#4lNUQTR4GCLW>omUB zzn5_lmY(^Iht!b8rKOtP3y_`B^G0@fLKzkQMT$*npic3L*f%jTF{@d%ic=)nEWa^| z3MJZ^ev0FYXk$PzD* zpbvdE**o~VZSjP1j#V7X4tCfWgW?`Fv3J9)pAlv}C%KVre<%PD1M=JpN`3e9XI(QS zr8iXlo>M0fn<1UNLE+pO4=vi4=bV>{Dl%Ef*%XU>@@P~_E#aB7J;;PG8(9v{CIhOd zq}u(l@kkQYqe3$pVHfj+dS`lukBnS*R`~29t10Ze$A-W1+iHeaEolomlg|+JHMo{c zudaCtk6H&@($y!BMNUS0Nn6)DCBAVm6}4!qZhL7;czhiJ{R2<&rp?4ooKU|hCw5mu zcFTs}tZe=Ilm)pKTp-K7*x&0Z+HCtcjCQ!sK~(;)=ILvST9$FvT#IXAM2}f}EBsPZ zo^|5%69&Y+2#bel)$=Yv~k*50M?*Tj~n% zI=iKm`b(C6X`6a1+!0-Z7%Li5+Zrp1BhVHRW&S2xmy)>HJl{$yognS$qR#XPHqyRB z#4~J?yIf|Q=WUV9fznc^TK~}!N6hLdf`srAMR^rj;vaZb_OWR|E(AFZgR;LicUW{( zrO}@us0S2P^?A7ViRlBgocYagg6v;-;Q3w=xv(j8+fo%|lY&3AoX8m>XO zJF)8nI1tP-D*|FalIa(@kuYCSi6kdiLUP~$i2J+E9>CisZKDAhQi86gW-||SvTMH$ zij@<&Ga3udGm<=te^hg335EzYwu`gX?_T$mbXBs)VFv3nrr(#P5E<#XFPgVd4wW-t zDg2__f7AH;DxD0Uqrr=lDW|&|P1#JREmS%^l$D$v8^I+6QTjxbB#P(Z5DUa7qvnyh z%E_ZhPSD954q{Dh4gXl`&U^Uy_yW^VNV)pJV0|&AD-Nmp!qxjC3E71^bdr8PO;*@L zoGJ$()SXcvCG(~y<|(12Z%_r0jB?@)L6&op*|EuC$g^UOfG58}D()!;Myb_~iAfen zGscU3+yHHK^AWCT6A&u{kalCy>o*>;PRITG3QhsM>*QN3k4j`WkPwui0?fvW4PrYF zK?b|&h!{$U_gz;3)$fOo#_uC}TwJlXXQ zxyT1A+cYw{g?`~;Bq|?5;RCDU*vU3V`vxguc}g3@%C;Rea$HA1J3$z<8P?(*9vzm*cjGf zpvap}pjFF-GFO z0_Trp;_XITMnbgfK3E^zTr}VCCBexc&EMY*{#_<0-2YHGva!C2lOJ~?5##JeZ4wT`g%naVq3?l@j9^xNu zfhttoc$%~%W5)05Xbin3$-PbALDYuTI!uI^Lj}WL2UK=5CVT|33Hw&I#o+5)IgoNs z%IX^iakj`UYq7wzVXd$I%Oc><4Cdxg{-c`tB&$VFbk{9p*kXkNOzO)#k zV(0=BhV$V4l7rqS83)Esu%xkEupn}2%QpIJ(w9OI7&RnX3-I06`c567HU{klD{a|x z0P=?-uko8Z1XHf73Bs(Z;KOZ9@aD?oW1qUk-6M-+<#w44?8MiZ$rNLfyc3z?1D=ThJWr94k27>U!$$p-RHWwIyW{b=F2tBq$Z=h zD0e|Gz;Zk4?VFBW0*jK!J&QzAodE~KJs8d&8%0&OAQ zTF%4pN1Jfy`H%tD3o!FWOa5iFH%rOiDSO}k@=fN(L=!TO_K?y*#LoPj+o{oTDLedf zTHK{5j{ZzBaiexA5N+VW+!ZHz5+>Q}CGG<3jNqJ$M^Ou3KcEsY?_6dDAG`1=fYg2A z^UmE5e3ni45&SO;ZFhZ6`^N6`?2sLV?y&Zt`BFNW=Bc)V0F#kYB|6@#4JV3Pe6{8# zx7xWqN(Efoie7Hyr=ts zZbVP}-IyZTqemmJaNmX-jC1b?bkaj#k!8Xro$rB?buTy_bVr!C2wOILBd zv>jG`xbAyjyD!JnYNEKs7iyRndFNTpZXlyn_RQG;3FP#p+I=v*P){Op^ZcGZFO@{W1Z2pHpYa*c5P~rx8I7hch`&$IkohQf& zWDtF6*bLlH=%a9Vka_j`%AN_&rfipc;xW{t0I*9S@#M0wKS}cZ~LrnD~FIg6{n%~#}$J{riOjM{Rb7?;qk1E(JeD-%g-Vye~ z((urb%Kn*?o2-|Y*9pyDXt`Jz+wz=pV%ch)GghQ2^wk?M|R z*>NMWHzMvg%~EVK=nPYp&$o3D;p`o+WBz?O)8&nuOji2=DLqk-(g12FMyOxQoUL0}j0YmoV$Cx9AidE6Go zTWawZGPHX*o%pHT{5MrYD&mP40~}-y=A6>@%gr--KS=SZ|}$IkdZYZmFRJKn;z2 zKyS}8gG6}~MhV0Z297izt65}g>V9ccZwZ%PwH;(2cT7ti#DXRUv??dB|=(^b>&eAL# z{^&4{<*9brMItX?lA2rABIM)xx4Ut)zlFTKgGhaY%9(MCnAtC%m!fn26FNP4u@QNE z$E@||EME_ym(+@1-eADTlE++(m4egbSB4amw%}m_)c4zM*)r_J+J~TLN{y!fEM9dt54Es9i0RK zmSN-c5QYFFoZ<|5;Ri6Yw)BKmNs}NEat-2t15n3hRH$G6o>=d!9}{?+{i{WMNa$>5 z36Fv2q;5Suo@!LXH1q{&qe&oRHg^vE^FF38_9*zpHZB2c zydz}h;S_g!BQgblQN$A}6P%REMgZz|@yxrb_BD*TcNq2maP<~YRcKw;@Iks!x&@^q zr5hCikyMmU>F$n$gs7y{0V$Dgr2EjFf^?^JcbtD8pXYnu@B10!UdOn4Ik;o(wdR_0 zu4Jw9r{$E;hqy^ACKlWoAkWzg5fwHVm2|&r!B?hM>r=9EPrH9TrN4%g^}Gf#)=&LO z3=%|#H%h!wKrs1CkCA#1Wab&VwU$$9cyj0z48-;^;dJME5?RB?4*fyj)~K1N4ICjC zIIn~7ZL$FaI;R(C=!|~zhTUuJ$}P~R8q_2irGWl+Zbu=(vgC;SX#N=kyOBS)ApfS> zK=ePS(v5Fv9z^ZkA?D94Ht*M8_4WOkkwMl}2AqF7Ug<7^HW7w38CQwX?-JA9h&({H zIW1MMlCa_Dk^tuL_QznHNu}nnqLPvX9TnB|kghhM$tiv=0R3BOW?d|ut^E5?Ph=g| zH>|(h-lyK%-TnC#kOZ2p%Xd56f!J@VY{@AO)!$~9X;Gq+Jh?E7lon#L8xkQ5dAI;t zQBFfBhTuqryfSqyu3)~90);z2fm-uHdrDj25u6cOD!Z+d>O|fh0dn!)0 za{sj_a2~mZU+>kw=7lbc0?94|>d4lg0@RLcfY~12j`+>IiMR231fZ_j#5qb{C`@F= ziX!^-_Qhi^;XEU9Dw;I&P@eT+GK>90+&+Y`~``e{eRL3 zp)JosdIHcTJq6lBF(hfRJRWGogDmjw%Kp>-OA`PI^hy8&spz-;Dzb1W0tp-z>y38W zSCA)Z6qAg0_&JZ10YM+Rcy6%TISJL5Kkr{+5Z5k~;b-v^~{b@g9-=j|p3Mk+xY zO&wb=UA_&&pfa!vjqIqjuEm|+nMa=4ED^~7u|xS8-}75vws-{4E?pZ&YFr%ra((wI z^w^UHvn6LQ*`aGzvP;j}ynm{&(i0Swi2q)L_iAM5%vN91pFB5|$Vrp%J%26X=(p&P z4^a7~o3{&Tv88DIrtdnE0ue;_nhxl_wP1C^zP{)I456jq~ut19LhU{q?^C_(zDCWN|cN zaakO2PTZzNKja9*x#(i%M{{4VIK+*N==CUT2>L7#F*pvxl{v`9zxRhqQ_-O`tqe z*99l_vwQn&y`|mW{??gOCko^e#O7V9fTF8;3-G%TuEai^nn3wc zT~SA9J+D32lahRKO3b3nF&5@~Y&-Jt3`h==ksJ?VPzDP3g6nNRLLDF0`!{X!Vf*NE zbry7Apf?(YoVqWiEN9ek4x50#tQw}Tv(!y4%%=IlaTYuw6yXY(8(q^I%5$~-M1fYI zUAn7I0Nvl%KXHBorM;R&q0a3yIktLc%CzLQ^sKAed5?7@?+bdT?Y9rVqhmF$67f8X zg}P-Uq58rV!{zHcI@T9_VbS5-A}DyD7@D z{3dRRmh~9WB`tUs5{r~;c)zKa;Kg!&+G{UA{VgLWcm6(Z!BEceO9Rj*ys`OR9TsvE z@>GDIpC2L?_fck!wwBcLBw=6m8devw-;7RwrFv<;9CuF0HF{ru9xEZ!AxfwvMZQh79vhtZE=n3G?gT zM#|Pjt16z7y*CBXpT;QTlI*eH@qkdAcsOq7!{qn2){RJ3(TnkYSke9j60D%Sr9E4{ zehcS`Kki}l>EGVOmH zm|Fb@r8#Mydl1YTYxd!U0_H_bhdpW7CJ)3jX5O&wXZjiSr_YQ$1S_e6zMQgvLuT0D zR&h%>Ve%(Lyo_c&LU!9ulD-2O;UhqAeE;;@BRL!z$Rv%c1h?A1V)2W$uvdlk1hhC0 z$s4g$E?Jo*Vt6~nv3m;$V0dRI*Bx6mler=|z0vaaxr3_Yv>m{ipiSq5LGvF6QvYQ% z--d;Gc%vJ`ceWv)TOW!(ZezgO&bW~rm%o&_S)Z6F)Z%*=X4l#KO0EJk zV+PR6rMR6StlNciEpIw$pfMWv;Egi&78{?uwgVHa1B!~ce{xVd80n?XsMs(R;(ADX zZ&s4p+#f&sGExC6dO(e;t87 ziS3OB4rcA8g{E{{nsKa+PY=qEhsjuKhH8E{hh4AJe2%`z_t})XY0ffz*89DD3-~&c zSS&1xKgcZmh*&Hp!^6avePh3r1*0q*HP!(zBAs_D|4H)`z);}DTc4Vm0y6FsT| zT%SnxB9U+Ck&VVuz^~cVZ`2s@s<8=mK^zzy4t3=yUIgognz@7+ay%T_<*23GJhqL}_p1lL+ z|D@cb9;i^~7jhe2STg%c$0UCrIA0cuKwj~d&}2f!p?bkj^rX48 zkv}+)Cs-r;P=K4~PI@DrzjeXm+`0nt2g8q?5{Ah0$-6U{+021iIzpasf3=Xpp*gY zfT28vCY`jKazUD>9oO$cl0Pa0JWZ>Z<3t4IufGc}uOBV@HT#8{yq4sy?3R%sA_?k2 ztl{?7d*ym{d*i*O^Y$gGlOAgt?VU=F!=sLH(mTrQ_X1A>pMAa_3fCuhq*t=Y@U~m6 z82Gs)yZg|im2x+?BRusU1G`mw&< z$WIw+OWF$p_?NzA%`t|ZMrNl^GU-YpI))jnxAJ~+4n1t@fyP-+lh3iN3<-Ovzw=xE z?wxjI4J>O8GS;FEnM7A|tRHOc$P`dNWv_)S0B-S*x88bRaA#i|6zXVKBF)=W4T`SsrB>-*o0x*6`B6V@$U;9YCZ@L6nRFgdT2+=@wBT-90*d4o3n%%52fSzz z&^NWzX})J#$0vV7UX%E~-~0IBm}ZcW1koq)Y}vG0Y{^L-40ulA{#EArh!gGp1d4(w zkl7qn6RoaA+!9$?Lz;nl>?~_T++GQatp2-oU)Dx357CwwoQ0KuE(W(MwSre9_w(D^ z+i)=Bi_JfS_wp(`#tG?l8Ep`*l@(J!taZ z=j=c3He)4+814!;7{t(Z)g-P2cs_b$w-lDjz4ubMqXmkSbCx8%P05Seo#l$y916~_ zI3AkAiqUzOE$Mb4mC~v-K`KQ-S-rPoCqrO~_V#ZIbuA=Xt(uFHa@J~zC+9?^vSvhw z=$XAD>*3*HIUtXY6@KXW+VmFL+Jn3NDb^h`0Y_)LmzJ=@p4B*ypkf3FV~d@-kZwx@ zllahS8o#6MEDSDpRr8frT;2wr^7d4a&rD19H3 z+j^zh;zT-?<8cYw4D!^1hFD^v))}#Xh+bau?1n@*L0@pfe zDH8T%&*g^^fD0L-dHA?XPEoO+^DvaU@ViUSA(V-=^8vi)GrcR-M zeSmg7OA(x47a)`-FWY;#sI3hCZ;6>%$BThk$K27mp@~>FwJW_Q9}!zzP~mzWtu_@) z8axO?ofU@sfS2D8@DEwjlh3cD0x;kyHDajWWUN^**KaREVL9^EF@vVqAUGGH>-aIY z!F?)we@VKe)Lp9e!~^Q@+J&L_kCSiVd2gY?Jt?boL!y{BY5C4-?t|`~l!?(XHOo?! zf=|>w_)v4Pb$H-!=ahT>O{LD;yExB%bGu;weK*!GPf*AU_uk*nJxm}Y^H*}<1gy9X zYbDTQ`lBl^BCzGJR2rTJ5fdebu?t8zoNoQ;LmIo@6iX0uE~F5jIV*{leK;*U19Z0+90G8s_J+?D{TgNQD^PwWj+v+)7Kjr1jN=;s6?=C zJ=4pLS@&#(%GC5~;X{VEFI!J_6UdRKZc2L*1t2{$_+XmLR|%B&yOut+7!$}7+HE`f zD1ugovS=s-DZ~hQZ^b`U&%%W!rRALw!Rykb8-jbxBV4^UPgYRus6@P#t6gcOhV~73 z*QACp+KM%093y4TyuN2US~WaP2U02Atn-GRL3f7l#veTk=ITtcSLGloraPuWwr!_6A4gm}A<4y)~e>t!oa8n_RGCgBCJqVlGZx@_s3z=mxs<^$9Q znI89ZfRa}x3?GaJ_x%eUPDcmk0Sut-kXLhFTMRNGU-_{BOjkb%Z~$=M?j!CwfK*35 z4Z^N!yv}x}g6AgNvC9uZW~}j@-Fv;CGNbV=;Qre!-wa>;vud!!hsBM3$NhJ$)@XDm z?JxcsPf0jcH+N96I@7wmpUXX z!}j}2F)rGbr?XgfN0}p6DqIK6UOBe%>EM#!-OKG$;cWp7AWB^Tw=bNi3;PbG3Ih`~ zLvowPNSBFC%n5*{b^;@>`HuN*uu?mQ#WeSXGOvFFiJ)rYE zN#Tb5dXGX3J<`>E5VkVgd?^)wLjeA|wTOn62!xiX2mIQ$>R9@7wF4ckZiaSGHegY53m+Uv^o}HVFPzliotKP28>1b-Z-sez08A^;D(y z5ikgnwZUI>!YkhWHd~=DoU8+NQ~9nuU)gV2fJo^O2&Y4Z_#_aJFsDRC5g~w$ShtXb z3wTfOe)bRwUIP0QnHq6w4Uj5+w+C!-VKj`hL2K~q?rcN0#%qSOyL7P$6tCNWsjfVpJsoviUx%u_yRyiu! z|L3#RhwL^D>1vF!nQ3YR1qWl3Lhs%>-Z9vHrhaf21n)S(G^+M*O)j68d2@u+mM>Jc=7Mh@P8?&a(O1#dsc>ay;oAAA z$IBZGb`q4KDp>beTTaLsUT+>OwV?tN(Ev%g>5_`L{rYbOHgU<}jV;)l{*fLop?wk+#X7={3pCo1^+y*~vkfk@i8}d2Lhblp zE(xL{H$9Ag*LfbV6UIGxZ>663>b`*v2}r6&RzpOOVGM;ROnM6U2dxw{b{y_j60BC; zAL<4vq}6D8qXT`?exirGz3$>X<&>~qN{t1*+pFLyZ`iFT@G84LF8@z0?!=pS?uaHYFb9RivL>yn*jWTt8Nm0-;L5l_M=P zJG)bX#lL=t&M_|ARf(L1Yg*=-S9un;Gt`A#_`z9^Af6X|ytmp3?Wy9Pyp(U0&~eF5 zDlP4$cmzk1HDMcgu($fCGg5)-rbDFDMo$69}5y8{iKvM^1gmui~G(k|=sSt23r_0C5@_fsP+iI{6ZQ_>B9(57v7 z`INRFHRMQm@cY3oTpoO$*CO)sq{w1sfx_*o2^fYpedut%K@*Puw|0-^ zm0Kp{I^BQEwRz;yKL8hvi)l*i&&Ftr2MxWjapKRk5*wn79`Z5}j2F9G2aJDC{$ zwA}5*Fdg#yBvQ}eh+#_^N6$2PI+p=y7nFA1V+G&f*Rt4>dn^+yT^)r68SbzY zVOtc{-52kwEJ*%y&U8aYSvWWf2LRkr1zvN>iZ0L46$kOH=f3))_d!fO)LhEI30zrT zHX~(KZRQ3Q6LP&SK%N{z^zTx@=!#G<^gRd|L3$((`*W(oONcBk&+5<0&h+~5vSFIIJKKkyfdKUcHI;A@lrvay99D`pyWLhC`oIX4mg6Hf|dIYH=u;|IqYPbU*jmA3xR z`yBsbHY4!3lkdVV&5Rn)v>5q008*ZHYxy^_u^4NQ{>MEGlS?Fs8+DWw9R>16d(t}b ze?L+TWxUlS9vI6-0lk3%)7P>aG|ia*95Z%;rM^}+7zb6e^lcQ#+W<@(?UD?Uy3hC> zhxEx9KWM5q#gmx6ysw(}pJf(6#vTTrZpgvAkH?5SSzgG$s}KtKdyi>ZnyZ7cZGUIV z-zD;z9#v)nfccDE$>07zuQg1i7zKm#m=p~X^naquEAaK(^8rl+HYa$<#(`vMa<;3h zOGEjPy7wSv!Qp={9+ptRzEbu%r!Zpw=|B;K`2Vvk!lMrrZ9x5(q6ui|>htsS|2-Nv zs#U`O`?&DGYt#I+xxhOJ_0f)(c#I=oeHhO#lvF71t1+ESN%eQS>e__Z+%#RJX479c zRkIls-JeRdoG^|iHR!LxXF6b%z4U4c6p!E3N)fDHPjX}%@D+8Q;Kyy9nQ4dZ*Q+I9 z@ZQE-GG$M_vwB248ktaKa)lbnlwc_-ww3=_^o~7yf6~K;E1NT6&{z~^X`O99rP<|u z}JWnAv;{UWWRFEU03bUS9LK z3zH|Dhw^X^o$zHF9684iDEQSxhsqh?fmiOdLJ&0-^kes`N!tjAS~ZMi8MG=sNAGZ zRZnXAR<0x@-tjBfIuK6oyjI)YT){E4hR1H~jbT8rCL!{S1clW#k-&tin_p9vo__z* zbD_KHr^Q|J_5pcX2mE*q^Qg<*nR~`}eWNGFTV@G3oPuEH#y9hR|7PB2m5yuq_97`K z@dn+88Bt4*xb{vZK>}}=;CaSAed(lrAg6K5EJt; zAa5h^I3O>DJAW`XhDJn0(47H2f*=srvQ7X~HyYu=KH-PWD*-5)^q2mdXxZfN9Ilc^ zaeb)iJ-$Uv&dYg!hzPBBW;saPhZ|g->`Zx*(VQ_fsF6*vHW@>w!`+upj6{?7L!LWz zF-bw`NDlkBkB0zUv3yzU96$Z6xtU^qlOV)PBU{1)^Gby*`Ih0!n>WujQ11nlaBC7h z#^C`|oGzgihT9!ajmen0+PjS?hi2~8d-2hlFQ2H$V`GdTu&I${K4!*9%F7TM(vwP6 zGv@gA?IXEtgzi14&c(hgd*k}S$LB4gzd!N6m4ECjE+)nNQ{?pV_Yyt{b(ZT`YO3L~ z=`j4rOy%3H@@nVG05|7K@*pSIc)GQ%VsTT|o5=kG>fQu2)Y3ZD92jodJ)XhW2Q3Pp zo+d>{KX3uP&k^v?Ht;>aO9chp_9ys7*#2R?1t246&q9Ixlc<~vIv|~$Aab*idUIZk zm(VQnGTL}Y5Bh`l}B8u66ny-(!A8-lgQJLg=LjqSb!x~jI3 zh0^D{F$R~_zLWJD6Ez=Eo0c-a?jMTvru&Fa6vj*g7XcoGQtMDhc^cR9S9_T@SrL?J6p2yTT)GCW@aN8P_Y6$3E909 zF;HKjqMVGEl;+!}6Q|s*li0?eGBUgwS1}+?o-p@5)vhhk79gmD%K~P%PUSQP=2`h@ z4r(D9TEd^)3^`P;2&&49gN?NP1%o2(WK}7CV2BMxNZkI>fX{1{GY^Ml%;k4V`A~QO zLf#L)1)uVD!xT{#E$S~A*Vf|==q%y}#Z51`tZ+~1?EhG?+ncZEap{dqPS?AqKJX@* zJWxU0u~R@NMr#W7Z&4hc4bV~VaYt_|L1^>`B& zsc1v1U6bmc>;$IV)W$q9z4!1r;%sTZcF%Dz#@mOw_*G6?`f77tWxk>oHJ97`L~?at zLHP~ZgoQKOdB>plR}xc4ya>{X;JT4de0!A_wz6JWD<{BCUaA;aQ96UGlmwW0(-XNd~*&#FkR8WG6X)O&nB`hH&W~sAU zu#YtWXy|dFFJZad-^pViPQ4wH|2=5@3D9Zao&Ygq1i2O)eh1=0S!MGpW&HO5XORlo z@T3ozjW5$$TKo!?k~q!1&UAep+dp?`m<XP=N|)fIfu!ML)@X$-TE7o z9OZ316m$Wr*-3D8@@qx!Q#2b>=lO?BTyP4!Ac`{V>=bk8L`WDm^BR&n7*Gh>^n8h+ z71}9z&#s7~EKR$CiLdP@z{*PDilucw;^K1G1TGcV(Q32&tGRQ6W3l@~^cmu=jR}e^ zr6@+TP&p)1WU(AMO3-4LxC<#8-dP>XHLmE>T{M{S6t|bq@?`FLH8jsLlgj7GFw~ky{c+3YW$g!Kcm!3PZ9mm(0 z*n2*PnA%(60~hRddSlZz75GC2`MEi=r?1n0+TI(h(u*4m>dxR!Om#oXbWXMJl9MLp z`*#+gF?S#AI-uiVoLLhk$X0=w)LKMLttTBhxsWR$p9DAD;i3^$VGP?4LC&rAb#~nS zw9*6pxX+)Yc=Bau3FESb)N15KC>)wXmm}Z*?lhfeR+%@@7^$uII<-m!PsBNp)*|9I zYk}NfGdr0wT!u2XZa{q^TcFlGmucDkc8L%Dr}>RNcf|ENdJ671O;K}y3Z|Za zzt|uzxhkQo3AL_y+HZthS(Ys_bJS-uPm&3R5jlps^8i7us3b*%MC zJYE%vA@AZ!q|~Ps>gQPB2QZo!SB>hlKT7+toImNtxORCxLF zWd~S5Eg;q+imYSh0fe6S5{vHg^Urq$mn!)`2<2eDV{Ij{d@ z+lP@QADybFsLvg8zpr5E#UR3`rV*x3OpItvXmD6+Z3am1rO5IPImzh{Nx#C3J4LtY zjUj%mEaynC8(Q(TnhClN{+f47vpTXBc?TB1DF>m?-$+@TmrtdV81AjZ? z08|drn?ngdIgwb6hipFAl6Jyu#NgFJo@OfOUQ77oC3oS~kRZ^s`+)ZCHtEM#N^8n< zD$DUV#6#gCL|v}eE9et;&UhQulAo*_**+aF+yzkAamV9IQV;FI6T3TD*k>djvaxNh z0xU=Bw>C!92THlY`KLt__GyWK6NvuE8!znq`(9Au1 zQ?3;%cW%gI>#bwa4a>skXeR2X6vYlFNafHIAHPWOEBbxP2CuFb+BtSzRy{YhJ*isr z=g=zS51w|yTliE$yq>3=eEqrYITX@xjEH-52jkRjJ4J}jU8cq3`&R}F2A}QX-!l|< zY4d0R=2#Y$$%y5L5cPcuzXtd6wyHV+*mXRIxYE=h1PfD3-t!{%ei^7MI%Xdms8$4? zHQebarM29j0Rr$+?`McTwn3LW+^=rKse%8t?1fW(mcAq3mZT83%R|ly)*sw3S3~^4 z0u`o?uSaQ^XM6xhDa6|Gm{*0|T&BHkbp$j_D)Lc0eD7GcGpP#F0G+CZ9KJ zFhN|);B8!sqmb$xjGD$a{@^&xabeG+#TH9tF|{K{yAR{w0D!Wtjrv6=BZ@>2zQ(7c z+hoamSj89J!Dl}0)s};Flhc!GDTu5M73(H^0rGK!ULeqUs`?U@>dr1vu;&};t)=Wkezt~NZxsH9716Irp32u z?Q35$BH*V|1*gfqQdcp^Cj^ut6yPce<3KiNW+jS1mubvRqd!KJw^X$%K1y-fds8Ce z3{oqh!W;LvV*?trhrMXS{rWS%juzezLLG_xS&5(VX)Mr?8hefC(y0hT_i-lpO?Y7G z_NGa6R0C`POv#-HXioiU=dcprfx-X{K-GJ7Nw|Tq25G%T?Dy|i-8RfY?eF$r#N4%! zWa8yLoA$~JgkEM?j5YMePqC$MR=Og+d9TYn8+%n3$Dc#`=OYyN6C5iH45xW%ZLND| z9-33z?ERIGKmf

    ekj)_1fV>?mzEKTkx+BcqDgk85=PmL4H@8G7NnvqwY{s;as*G zI_-jSxLst(6l<%R8itB?-A$&ePW2`O1R~sCL*izyyIu7$8aYKyy;wJqSY$6fr}0il z@9RTan?J{rql}8*in0Vp?GqRm7n2=yKjBfn1r(fGFi`IE_E*y@vC+eZw#FxFXnv$0 zv;){^IyIG~zHf?V69yUcnL>MGx3;(0$70$mQoc&xC^RW^fl4UPhZ@^Q^(Eo_;Q8g^ zr=f%hQ?HNQuwM2qs8Bq2V42LNvG;*1)2nG!bj(h6=s=l5ROR2n(8qgeEQhmq-i{a` zQzC$iJUm}rf3Q7|I4@IAEECk#yiB9}w?$Fd5WyBf>cKvuur??#p>tDT?oShT{D}af z4ydHx&4unwhdEOh@G#HklUfg%G@NdI!C*<0>8^&mytK z^gp}2EKV+}+89VOkCU)Oh*j7Rl5*W}!B#4FK+$0{3?y<$=%jkYqB30Yv zsx26Qys07cAP!S5@8|qrUl--{(?=>auVkM8r#}1}LY;R^&+Xw11~8_Tl zyP<)Y0x{?ey!G@#on+JY|4YR@Ip1DTv2~`6y9Awc&#cWzD zm|;G#gq_qC^kWjJ!T2YbgtuEkRXmj2AXUugqV)M8yz(fQ*fj&c(&0cyD5auH+I#Cz z!EQV_M>oWmuwS$pz*Ij9Q=EQx+NSWnyYn0nWH@bNAHCC=CGfAttYWL}`jDVth$ky6 z8v%p{l?K3N*>}Lw!NH*fjO<8`Zp1cQSaDbAdW7X4m((12{Q$>?eLnz?2%0Bovk?@g zL+sPgxN&Z;E&5hz0~%_zPu-~>QJ7exuk>1*Q|gE1W>;w-;oIKaNjLhmO9OXnddq^9 zCY@^TT7Y0t4iJNa)3zwI5<%fMX;?2UBpcVCMUzV-~ zNfrRC$hO#je}OGDqoBiv2f)8<8d0#I-(2s&*pnhY#Jy2|ftD4M;IgPF44$^(4d)fSmOGX}BXQ zI0vO!iAg8nA6j1@-Bwx!Zwf;EH*bq{P(2C_dJYV+0)&Ci-MS(mWa^4Nk_9@PhXRp+ z!((|I$1B@KaP62mH9f^Fd%lZ(jf?AY6s9|^;ekMo_vuvM6l(q&1CLFQtw@_*gU2_W zN~^dQw)t!&>f+~t7&K*QK7g;Q3#2`@Kzr#7%%oRAOtGY>&m&V0E8ivs+MefjK%S`! zV8j{#ayWs;=JJzw&|JfdP|`af_*w!(Z(4U}Yh%1mUP)dKfQ#AO|!^Cp-kr9u(T##`-(OZ#@^gsoDS0TxH5NjqxF| zbu{9-V9{$0HzFM^Jne-xhHdluJ0=&7IB^hI9R02Gn zuh#@{%35Ar%%@&iy(=*Z-E~_aAvN^U@Tww?Cax_}zgvw4QN&G0BvnCCIeI(j)!JzU zu06&7W&$`+hr2e*h(Elqf|FOkAjV42_%U9?yF9jH)bP3Eg9#%#M9*U{|G0yZ&F3&Q zluU0jh?%-$w#I<)SO}kMR}l{HK~>Kb9!JON-y5WlPY?f}@MHu=uu|y&{*?@>@He%$ zc;1~k4p;F^;H_`KBYYux+eg*vtW`Qgi2}iX1Z9zZT(aOMbvb;P8`~Da{_h#=L4k-Q z(n0XSfS^}8dL>NHn?F`pS4a85VYJfJU73KGmL)^8bFfpDd8eYRv=+cE;XFwhAsTHv zLj@5u(}48Iy}C8vbAZhVBhZ7DEOk&C>L$uuxSuA@$zgy5x-t>?@Pp0)pjS#k*<*4o zL?qae?xB9`TQ9^c2zRyX;2+?o{IJtL>;SjIqL*Eb+hK)TK4b*;dXnk`5dTl4IN2g& zg!Le)T1lE`EGeczZOWYY`fg|^dPC|&Ds{*a}FJfsHhy5dYs7-1!bpMnrS~ zkByDhal+^qz5Klv0sVD0McUV>811`B=ML&w?VG+P#Z6kYW-%s$1jkJ1?jC{Tq($c$ zDozT8w$t5^qfi%I@nLha%O0U-59JXDv!wqhyl{hd{khpa$UTA2Y^u8u{~&ve+oTGw z6$yc4fFhk{(6XRGR-qrfNJwJ2^uBvv9Hg6xZBJKPi_p{4GrUJUqy8k&OBEqQtKHE; zKwDH1PX2{$HaF&5zDU~}@~w*JvN~;Qb{5b2D#j4hZL?euh#>Y^i#qPcnqC+j&?>_& zmqWRI)?&XHxVX3^aH9PbkKohT07SH|BV&XfZq*+*$Md_fUNcLf!XM`aZ!c=T43JDF;mnzCxW*5=oy$2rVSJtkL9t(biEtgD19RJUs+2E8nf&B9GkAqS0( zuB~+FRWr0q)(^N&Z`N>&+b;w+uMSxM$`Maf?0ox1Iv6I-3~LzxlT-!=K+y=A%3rBl zE(y&=)CbK0b>eUaGzz*_spv?lV8x)G(y{-#^dMR(5CTlQ_iPuM8d>SlqDHpiMG##& zG=EKOK7tcAZO5=Sbv_ES&5lbbc=zn*<}SHeZIrs2hRF$5`4EzLR1(~=qvc%F7w7u8 z?Ca8ub`rQ_RLqlwW)SGJ7w~UJJm-}T1KB&8bj>%Z zv`8H4O(S&2GwAFc9>gPNldV~9`nJ3K)qq?faMe!ii)D*h6sIpXe3cQlL_t&Vo@OU% z_5hn*@3I7x7Bpyv(#(*_?=$x@6+t_|18w6fhv9m55d4%-8$L7?9-T{ng<5AdvXy-> zzQlLRH>)K1!zofOz-N7+x5+oyeXQ8DN;a$iUevTR;g>UCFqy96Vw4be{CN zIp^$^*hu+{S~N9ZZoXmRopL(-I0#wpnhDq7_cD{4k{2 z!-It6EMW>YG&=-F-;crxod7K=vmSw(lQfTNhdW$RkI0=pG~Ev$7|)#j29WFBphpX7 z?$0&ubZmP5{E4PJ4y3z#h9e{^0@lgI$hce%s`kf4Xpm<0$z)|;l!7PH@wO813u!o! z@{o2(*H&o!JxDgU)UUVJ35Mm`fLip8+wG1egw8Wsm~U0q2U>lHn2sr1c&R0kOL$6! zj>6iHX2=P72u5D8pxlDtz)L@W{&b0{T0UQZZt$89atIHJ=}-)&pl?V;jPMYg7(la5 z^S_-f{C0x~euj&Pn_jCFFcucuSFC-V!GJUiwkS{9tk3%3Oe1cNhwOna@-KT1U{h(C zsL;1Ku5Zmke;LaW`t3}V4cjx<)##{{4u?C!sWkbagRY?dxEA7UyYw)Bg$uDz%gEI` zZAg>a(4Gv*8%^E~#)a1p-ZyXjF$cFBs2gd{?d3t@ zG8td%lyb=CAiTu5J5Kp!|_erpQMMjJHxw=_ilff+mS*bdJbIr zXG+_^ZK>{v`$o5k6k;ujJNk&1z}e)zhnlsr(`5e)R|jgCR>js0m|f#E0`}t-z6b(6 zJZN`wm@o>T(PX?ghW&&NqMEgGGy`@6LvgNL=D)kKT!H9;?n0A!JZzvfPa>d}KTrzD zPeZFwRoPJe8BTqHaCQKF(()~regkXfaHP>yaq!X&!RQ8PG3Mo{q>b|uoGd84-V&#e zTXe}0o>pZ|>R-we_v_$x$OnjVn{5grpjCDfCuty=+8_*$!~=^A;7ujTzzVse_=H$^ zP&Wk>-6tDeO(k~0e&yXAb6)Aec43gOi)Qb?Ccoo@{CL?S^g9_LQf|83>7zAL?DbvU zcRy&NAnqh?U}_$T|3`>!W1j2}`kuZQE4GFSf|P&9A_bpntjeTbPv`}Ern%eP)ST|8 zrntEylm~7tlC|%glxyT4|G%*)kos^7(SP$KbruNYW?5`k*N;hx`+siOZQO)3k)MR& zHpa15lQz!*tIUQq(>hXrcABhP)8sXwg!tk7a+<1Rip-iT>-#DI#)=0Ua7+aN1TQ)Y z-C0bt){o*0s|O`sgpk}}GsnyYvcbR`gJa$YSnf-(A6EnWUf;7AC<1KP)S9~4~9V^gKak#*L z!;|TqVFQRi{GoxQ1D*Wp@+lyJa;uZ3v1KKhOjas301dY#w&X3>_%w%W2xRi&32yVJ zoSTGbXlfb;1r%gq`|4ogl7WcnM49W^$$c90;z2;S^cje}#UQ&Hv>|u5R+wRS{TNeM zVz3!vC4#VyyW&2TIw|Kx-zmm*J5)a5TDL*;!gr+;vEPM;mL!9f9Jh5{P0e0GW&j>uxtn|q}Q zlAMa}FOU?t$wVo4smdLW%hSDhZ=6QE?E#p_BHIQ9&rMg&#SLcjNAVBiclcnZSf_lR zH-Md5zn!2T{qIg4UD=+an>R4*!igw`t-F~H?ExY9x$lcP3%Q#l927{DtiJ&m8m1?V z0P|TGg$MV%5~pJH7;Ekf+Ma4UmdMZ)dZ;nErh47{HdS`4$Ws0O`q1aE)X$gN&@05i zeLH#xgc{x3sJ{O)FX#|>-Zbe0ChJ+;DA0r6eNd4?2CJ9eHIHUv;$|ax=Ozx}a0_(B2|?I`ouU_e$Ly-M#*9FR;Xpn0BRKTXPIZmpd_T7a}=F zr<3cvYX{g(PJY|-o)x^l?NqKb@ArHllq#J4S5yYsRSU0oFy0rKSG&TmN#7<3XRCvc zD8aw!+#=S2`^#Oly5F*Xw2l}8UGK!bL6^*b2FwNX8jaI}XhO?MXo~cjb z&6o}jVNyUhhSCsC>P6a3PSc>56tSbv*%L1r060#%DHf6R*NF0A_v!i?Yp7*9y9z*R zQ}=UM;5xURD?YhO)wuxms)|h*8hgDMZfESQ&cdoPMACQ5A-VF8rfW2mmYAxHlf+&+=<%beit`+9z@m!xe9eKSa!1Ox*U5 zlI{m__p5QHHlJ94h(>M-C0=RpnfN!)Y8yGR$PC7+ zM$*GP&x@8vX8Ds464g@BW&ZP$DZ&vCRmY)?J z=K4L_m3B3Q_My{HH}7Ig_2`8*^yxJ~2Of33YxDHA*%Df8R=W=WVM`uax|ym~GD||W z(x)_E872nZ|2iT-H{s(`Vj@$jU)yqQzOlAa(+E>>d@A0Q8Ee7?y;)KUEa%_<{E4nF zJh@4#m{Q0~Cko6q+dTKPCBxrvyYU`7NM<@o!aXl`lG@k(;CAbRBnd1^9tL4OdG!G93IgXLE9J0;3*AL%gWdyrmEzd;$61T&Nx&to(5L=MQHQ zDTfMqz&u#TEc`bn{>F>NHu!E;WMa(aF2|Ij*$on)mR1R?!f$RjD9$5-EOwOOt*sBG zm0Us~CcKNZW`Arc#z`IfS<-xd%F`5Hq^YNLmDE}G z9o>|nHE7>?l?({mfE{>NfqLCPX*Y^L{BTq2_AnAXU$#GTma1Fg>lfZl33ipcyzkDM zcHShUb_6M{1N-CzY;;BrCteSPoV2~wRdP;fIUNJZHJ)P%Y3_2nr%LjoVS7v`l*tq* zBEE(yU2tc8vp;yI2Vf7|)lhTwjl?Tw@9nAu=;9jF;PveA0$_wAWXk;nuXRGZ)+lt7 zu6Iui$ZBVfz<^3$RnEv24DQ6G(#pqgevRnXcRZ5#M6C+7U_DrL_6QfGU6y z%7Gnl@2V(i&vEv%z)lueZYi z)Ysmh8FJO4=QK!u99$&g+R8Ha3u|Qv(Pbk#NOdRcx+II z0drDG3^}K*l_3VD&1ooNdj{WOkwA;crUS*G^w0SXceL&viCog_n@Q+faU^Ssz}#yW zJ^ed2#J{MNvMNbL4)rNU2tM_A)&ED=TL4x0M%|+?T>>Hk(kLp@2*RO56p)ezX$b-8 zF5yK{P?3_7Mn$@jLw5=YNOyO4pL6cR@B8lm&Ye3KXBZu47|#3dXFq$dz4ltKhjKuI z1&qI8K+dVpdH)Cy3S8a4Gx|@GtM$QQ62WB-h7`Xzvg)E{I3^iHKP1B2au1kZhJpRhQ2NR^zL(^V!oPN`KP5KcY*3xh=4m;* zVdV2q=xxuZ9HR!t>rscdPtH$L*S;poVfj^RSwv^l8?g1x`bZ5o2|_zvIuvpy(!r94_ZI(NZT z3%qsRr}d!#ri)OmNcHZNx}R(gtNk zCUcX_FYiGOKxVmoD+ij0ugEn!gzow`^@y;!4pZ~Y9 zVyXL}P^4_&`Y&U!7MJrYBjozi%#fMzDptf}I-8EbRW|(0w<3aZbb5u8umTmTO+x>|fY)Q^9M`ar+ zcbeCqx4lJ?uI&^`)|n3+WW}ar>T}&P8(nVrnneqxVIv+xP|}=2_<7rpry71OveW6byz4SA1m(pWDmyAB%?qo0yWN5!g4^%65pPybPHrm$ zqCxl(H3TU)z{}X^T^H^}b*;Q@97yi3z!Mr)h(&=1noVTJOnx6q!w<%WV)M>;NiiL% ztnYX7MGm77m^~K%-O(<&qvGDvY5fN2t61Hs-y#^ERA+~vuMq-PswxCf-iuN>rwF{! zhrd_mN5KfjmW)8`Zliwk#ZGJG|HSIMo6q4g+C;NC<-+Ry=&NAmvQ-KkiIsQvqhvGuYycucYwx z&}YLnjaEzh_7m+~tw-l%fIBjnnQnBIBU=$tCeL~~j%BqLzB>#er5Az=PxZDhR7$nS zZ1q)NmVY^|rbmqaoLZfCdYw6toUA`5m-FjBGRi3C$E#yPZYNeorSBA0%EyeD*Gtdk zEQ@lcK&hs&RqrpCz^I@NhYhLu%*!P$LGNPJ6l@&Xmwx}Gm7n~S_^TZ$c6j6TG?YZn zGT1)ewxsNxp6X=9>cdGcF?6;1i#JH>-_edwSV5jlFiY{i#b|l+<|l4r@ehg5t&aF! z3Ao%2!K2y0t(e9VXk0R$EeaMeOA+n5%F9{S(- zN{KP}`Zq<>l{`N;WQ84<`~~HIskH4b3ik3kHMOyvD7^c+=ZrkrZP1NA08s8T+{dAoUSi?le~G+GW)B%9|(cHSniHDDx;~;v=}R~ zeCKMHz$oj>aRnkb%YdbKW~d>R&E!in7_yTUsC|du6_(ySIxt6*&==S;CQasxJ>WAZ z9GJbLUa~v4A+pr^GN1qe0=svdN!7TY36HifcJb_@zjNc(KPT zyf2ln-KsXM0YQMiVlx|Xn-v0h(oe?UY-Ly;FN%zu*&fC-ZV2z18T6gB2?@GP&Rg!l zD{oOr>)o26tlsLqTiDNApit7_9)w|u_iz6;k_E% zAXZW`Im5sfG9e}2w~_tYT%$}fbS&_la+g2)9C{K?I8*Lx-_&1JQcd*7WG>xz-z9X& zv*{I#`m+A`dKlXm_LtqJG5LB$Q~{a2h<8nIIXj9sR&02LepWaNc{*l2f~3hOqf;mU ztxgxUC!|{b*Pdia;*tURg}hya3uG*O*FZHv=KKC5IQ*6-NMj|^jsL>CVM5SrxjlfS zc_$UhNg>_gk}}h!8m5%y4-mvPuIKxz{C4iYujUg;bkHmd$bQoL=a?%2zy8j1G*#{& zD4st-Cf z7mjSlWzfsiU4j3=prgKjKNGA-`@3L42mTVJhPD+M+#+?ILs(Ey3}!hA1FmD&c*yW3 zbUh9%P+TQ8z2e7CAODt^TQA&_1!2|rj~a5Q#|yCjh0^-c8W0e`19W{4v<=jGrKU4E z^qhH-+<}t^Zxu^!9&z&hBuN_dLn%sW%}4C0UBK|?WQ^oAZN)aJk}wd4sPp>ajR zOEbsc2hWU4 z$s2+t{*<+-3|wEpW7P9IXp5*KJ2>v0!Wa{qF?)i`OL$laQ!AyC+j}~meod$P6CM_| z53QyNE-7D4Hw{4(3svpcxCR9ZE@}&$2+s2JL9(ANtC>D4_@8N-%^H==vw!MVos^Vm zXZp;weLX+SHM{xfUA{p&r^ivZN*V3cmrf?Q%BN>eTCmnBO7<%wvH6!}GtGRy$|#Bq z@9(x-p!9x!CZ}eD#QiUh?EbLUVa|MpyvAG*Key?Jg1gOA`W*MetgT1M6l+{+kDBJl z@SxSViC{sSHYVh`VnnUn99o}i!9TSy#Om*7O;LKJXoHYVljrF4pLi^Y%w^#(T==g2 zwO6`bFAWWir;h%Mv8TO)w4hLAv~Nf^5=H_B6ixzZc|tP|QV_wS)Vy zmPJbd3o07A4mH@7yA(*8(S5v$0wZiYgRAB7GB=?AZ+|w3`L-ZgvQQNSeF)_6T)`2- zy`u#n%NH?s*kXhi+kfYFSav1-Yr#URf1fl=On6%P^#hDCu*c{Re<91nIO-qOQr1w` zmWWKy3uXEBgIir^mxeMLBOtj;_KFD)+b+tAT3*|ZC6j8#JtPqPHf?c`5OzQkxTN0sffJy%_PocOm{4g zBjFJBTiNsc4s|ai{&h&_Y0!cdx(P1_<`dmf=jK=lHLRk$c(acl@s9e|P>Z!==dSPDt8z@|$MOn;Rke21*qqh<<0BMy8Cg`NUET;%6F>!7{7FA-#pfbrKzq4R2+3 zKcdOI)&c63fx11Nu_VGpJy}VWRNuhG8;4lNqP^$jRoecAT|^!m8+HAWYd|Qk;Q__< zy&crX?Q;eRPHV7Hd-wtGw%S7y*Q2Tp|H@?(jItq zn*P)M-g>a~jQaNSZzBP83hKRvdht3==OE^T{z~X4?tzhk&NN)90USU-uZ^BL_FZjg zxHpP8ew^5fzR6QznAocBa}D?y9Hq9_9KcnRNgT7hQ)V)GI(&YEcK%-@h8nc7AhVTP z?Wfcbr@Js{OL!hwPgWFX;6T7E`krv(oy~YAXRh@=Ix>%r)ZumIXDUmgo4&LB!NTK; z&$Oe}=AW~}DV>zM_|5UgoYv+4cfm&7Gh%fs{7Os*AB-LfK&Mg{whrt-C%yv$>4?kh zcx<9gmZA|Y*7r(#Yo^BRw@(jN3^NDWO>(vTDXqNoH2_mF*XW$_=Z>!+`;r>eaB=2Z z@WD^HG_kbSY0h)xS@Mp59ccx>rJ@tC3H0k0w9`x6xa~5Ja6A^#&C{b8`;B(_?D8Od z;r%SuV6cz6)VPeV2L07IN_X(#G(T-6O}Oyo_241g{=q*AmakO-rWJj)f6hT3QDh>w z52B|p6>XShoel(F9;W;2Zp`VE067BmCKGErg^q==03@w6NtnH{_k(O4wmcJ#Lh(e( zjgG%I$afALQk;*T*UR6r4#Ih$BmHSkmv)h4a5GrcKQ) zc5}t5_S!zHZlVIzFme#?qeS$l(H@Xv*n=(;gt8Y8kWLJlmLc5=Jq@s-L*W_I zg4WtO(8@SRd2$N~m*F*f*!edGiu?0WFPmH7U+=nXP83g|7X(s3J*3Mwe-7zvR?7aN zrt~5k*boTh#D*AV!Iwb{85og|K16WW9T1cfH_66&d)W(HK@s9cTP{0lT z+&LO=X{g~2?c}}5e^*OG<%a=KKrD~&%Gvv&JtuXnxnDl=4BEb=9-OG|E#O2GJIo`}`@yJd7k#%^@{8!{pa_9bFt9y6K5oHpewR`#Z z>#Ch_Vzz%-J&U-pBS3Y0I6#c(dv#Ec$f4(LT{1>q^?XzgxcMRn^ap32Oj9KZveVkR zlZ!xfps4p1sJte0Xs_nY1*;TxaGMUJxCC7D@pIOpqK+vgebTpayla;7Xt_*H)vb zX)T133Wv%3Q!D3N6!T}#*-!f%#WSSkv7v6!9is@W25RkFP=IZtpBmt(NBFAc%W&7Osq+>M)2*Ft_||rP zB*1p4j}6d7OLh8Zlp`K{gw3yE#3=~o zS%XGd$>rAQCQrURwhT$Yg7jzQY#^v#?T&0frt?Dmyu8E32iaF;VexT(gt6DVB2--6 zCP1{<%eTDqQ!OqpnZ5|+=Iw~Ie9U!{Do=MT*J?b~3ct1={b|5aJED3-=#bVidC)bj zO})bq*;D(2^aU(<*cAE|{r=+ib2`mYO+601$ePtvYFSen9WHZDqU>3p6(SV=Y3qrU zl|!(z--wDp-fElsvxI!SM!}shhk1(0StdPk|LdzCx$a)wm(Fz$X`le^HbqryCD(@o zY}bS7I@G6%?@5jzh4kjJuplKvx9J(0q(yTa@`9m|gL;dQ54@?ZEhM>^ z3xkGmzaNk9q_*O*l+|6BC#L$GsCSDqjX=71kn{pUcx_%5nU3nV7aIX|h<^zfcd)b1 zbs@BfqvMWN5IfzN-_2{5(VyBL0`0WnyJR}z^aFbLj>trhN7u-le}7jqbrq_-D1AME z5dR=s+p|yk-@wxZ53=*>oG}=8Va)Du<7ry~!c6D>yNv|?t)Hn5$}%2+@^HHDa!w=wXFkeJ!au(~_~|lwGW`$v zvi{4PO`ge*Cl5bp;$A2#!Lr0IYa!W+164k_2v=FmL^#UE@b~xBiaU@rCrWNozKLm? zZ}o511wPwnJqIbjtZ`~ce-6J(Jk0&IgD>pRc#^Oy(7ss<-`@7aME?K z^OiC8PN=^Z?=eik9zxWUAUF7xxyB*hcr)?yW%#= zOU!4LpZ4^Q0L0PFb8%M&8okj0rnC%Gqj3zJWdcWquMQ`!)C7|zJvru zT!Z@7|M&XD=e3DUxw*DGgFYHDp;zQQ+xm(G=-P(_e8{lgpOLH6rW zmG@#LCxoo;2Kq*bjnh$6BcJYIK@F=-t~1O7s|Vjs8~V9vS^y*7^mG$N|1=kavBJ85 zwX-~&sL4Oi4UI9ZW9bHVR3lA9-AiK&l3tVd64}`dFjcYr7 zQPJZ2!uCC{zP>)gxoAEydeB>vqw#-2R4Be#)BEzX$*fkPh-2^sNN!ium93gE(;cEs z?OQ-Fa_+6uZaoHl@rtUx)CI;lbq-zlEOI7#B4|9KFA{fJo2aNlr_(>eX~Hs?;EL{g z9zxruP5r?Oxqp11my^W*^TxhJ<2%Z!keL3t3eKxY^SLFvgO#Nm5*e)bzR zKGy<}yP$tNumY;!ZdbVRd8pPu;nojW15r;43X+mfJracK-EG0HC&nE#lpbi>c? zXFPxN=8Z<7aczzz!)pC!)>~IB*#rRw_X!sC@^18&RKDW45M)qL;dl_4mc8Aijz-gFP(u-{voxmH*&v9nh*0UlV5ulc1u^EO>pM_Zn;X20jB z&z^GnpliHZ=8(U9^$))G8dVfqCPKxtrPGzg$hhAkjVVQgjvTP_7{L(#i=o5DaBeUR z6-KUnC=krm`^)WVI8D(O@-*YJ%&;7lv7NMYjT36+2b1y~yN5rh95z7`TZr2ZIvnVD zWnLks_-xL@NVLuGRFhK{Nhwsds-%!Y7jD27^j;dev`qb*f9WX$l92RFi6u!U!UpuIvn;mO-$~#wev>zQ@P}dN zG|ciVy8QH>#X&6x(Af zGp0~U{x6{g?oyB5Aa4TH5oW&G(dwu5pxg|of<3(e$;<^go`P^p(XRD9tB)34j_j#d z`;Lv@?l+uQc$n#nHThm;yu<&?` z%dtnr4`r-+6X8Xt3Cv_@gonlKfisOmG)GdzvFN?B&QLccLR}ctOuuFnG}%~h1y>a3 z^$$tvz08((;NvyV`-tc3IFS%!xG^cb|BfNdF@26&hvZI7(N{Z!&jNmr|2^K0V22cQ zR}WH&l zX4z58nNl=#LomX;mm{1`(~;bJYV@s#n6mnP+~?~EFlw<*PUOOQearHvtSQ?z zD$nvELm9VPd9P*xA>P<}>|AgFu4!XV$s<-bvk{FSA)nM1Nmlk%?@LFuhkFwRv9YN<6<~wZOwjV|X4%o9~ z(PZ$g-S0D(TAnQ)i<8MLOf<%P7Opywbmw+o`?~>2o5s!wB37^xU_W{+-Sa)Q#(qTB z77NFwbKPA7lD;)CxVmbs>d0?D{;1Jevf(ie(?@=RSKWQ0WZ%idbv6l}DXR+-LSWAW zrnmU5&AZ+g5ZknV9t7CuV8)S%dtsWZI6{f*qWr3tQf9{Q#Hbn@kNA}MiXi22%ETkd z*+|(_HS8@AQ)f8F8K?gAo((>MM|M+X`4?1)+2=tSsSKm14i*!{a;fsavl~KR!F%4n zyI0hI?8n~RD)vAekR84{9yhM>D&~f9&OM(;D)sJgJ@svs;#&T=^-8P(&qmQ)p7F7Q zNc^{?XdO0muV8xEQ1lcQ!LZ0+!DN@^{gtUtiR%J&Lj2n^!2Qx5E5NPOXGQMZr3U~* z`m@WkF{Orp9Ab06md8}G6gI>6I>DBXU+-j6I0vwgY;m^}hbX}mR^u+~7F?+3FHx&> z{40ZQy=O9ONv~09e&B1>e*ng0^sSk;EJNitd3Gjr_2!Z4l^^7hfNmwz@KJadKMb$Z zjwppcqi9}-3+(+CuP-8(NBeLPSLn1hn$*WdNUe=B%A_gP4{ZQ zS3+{am-e7F9WeZ|0zY3Xqw6&$Bu=}acgKN1GjiztdorEuzU38TDN9*^6Kh1@KgGoZ z3J9EJfmj3v7?fws^o4KVZhS!Cq(NN0Lpg;Qsf`} z%_H1RS*z`dMTb!zOwER;x~VKBi7*2hbUg|6CphdWQSK!LZd%75M;Z0PC~WA535;@A z4KD$k^dQ#$K0Zkf;|KO||E^-qYNb%>Gj8tD&?p(?K3cS&x?ta3uqc_|8C^E#R5WsJ z5?=BEa4-?FQ4XD=k-tGyLX1~xJC=2Mc5p%bx%X19;9Jj$n3?mk1k?6&-^NIzTnqG+ ziwx9rwebryRXjbW*)qof5&6SZ0Wr3;n02qr#NU+5BV@t1Vz!ux_lzMbI$qBhHMps- zIcNPPjuQK$qPzhV{WcLiet$xKPinv`pM?XkHJlZ#rd$K5I*(S4g>w5J6)D(!-q{eY z;8!G>v=c5L8LcR-Rxv)*ibu!%%c1JPFic`MOjW#Hu-k2W5#%?v^=u;NE+vuIpi(`B zaP`S$v3e~bUx|CKLG2fIfKKu0-abNJ4Lv(7H+6?tD;hmm`#1E!cwZSC3ua}S;wPh+ zre1VL;eTr_0s3@I5*a~u{5`~P^91Le1HGS#BJ)HzkD5rAuNQwoNwiof8+pH($WpF% zA8_v_Md}y3Ietu&C>H+`rg-tUUx(gjRxTlk0VPZ46q=7H3a`|wDomNBFee_#!O`uZ zi>asfj`Q_&qpYfTehdW|!xfRDHNVC}cJ1!f5j1%SxsWjaKJAWRx|%Aml0pxF=1u8T zf2Y2~mw)L8^^5PU@?cu22_StpV60F+J2WPKhan<$bc=_~13nm7*GlsluFsT+Alv-ZpG z;@p7m-@6CnEq2BA?rfFM9Jl_bp(eq&<5{BEW2wW2_;fB$6c2UV6Qsrd@c-9|QGatm zHW8)_xlCYXWoMcE-k(vQuzZe&))bgZB}V6hD_;v##dlv133pf;=V59*G8T)e<{1lq zxH(4}%&6h@f`b(`6`B~shI#Zt;?rT0o`k6N0<27FH3cS+jMG02I4AY`C2ccl%Ltf; zvUI_qbW-8oqxowi_Dfy`z{wy;D|%JF-yaZ#ig>Ml6S9^tW)+WH_7`9rsEe`hxnkC< z)(|^i?CiY8xT$eJaY-Pjb{`KU{V-W`R~|cfcZqWTdkuyA7U2@F$anl1GdTXUA`<@$ zzHLn!rr#}3*w;8LrO_Bmlrrd8LYik&QWjc^W$OcgwQ}ZmaX}*N)tWa+w?8hXwY&%x zsT?Ke7JrwRVtYS6KzjI^A*S9~a5}xf${BEzu>n%tZCOD%TX|HjW6?d?lY9FfwOjkAvEHTr-L|Tn`!K6hZGO3C#*-IP!CQ0cGj<{?2zjEw=nn+DMNc zrCEv;To*Oh-F4_*s5`-Yng!U!8f_Gk9XMcb;?JzZS{M?j=wVi|Xd!=CInzJlgNcMA zA@(X_tWep2q6E+wkEu&i9eN+lP1EG~TMQ);(L~1plCB1mefKdwRCPAG>EgXLSc#+ug}xRy`@cE7QLID~7%>SskO8I=VaB z*Ux|B_SoK%iAB@cjJs&v97FWmlKcHuEfw5(4C96HQo0Xk06bEU^k0WLaM;K@?%PJY zFJUUM`cZ)gGcz+V-sXkL%T0j5Q2`==%Ij*+!pJli8;d=uWEC)7#`k> zK}KLbXe7|qx>rr{3K5~WjN~>L4rM1n2_at>T{tFMAK1fN=Y(b$kel09x67 zO~yGd9qZ1PZ@sjf!DzpZg8~+G%YN?H0Utbu^Q5;qpYsS5A;|10!(4R^7GxUN;o3g_ zBTu&wHcnO>!h&|c=={cG?zC-OGnDi0EGh3D%{iza+ofSLI^QX*_U^&p3Z(k6=#FfU z@Guu0AJ|Jct?})Q$tgt4yn&$f%hb|cdP%|t!xgDPs~oNyVE#V$&(+m6mjOxxsxL_k zHNR5o8G9nXeY*w1<2(1reK|Wkmh_T+mwmWv=J_8CYVTvx#SvEXE@N0sOkxZlwndJ; z+sX~9r5<~{KAQ>We#~jPjw`ykRtDc41WO|JPULm#!ureoE;VKEYs z&^DdoHgHiXqOWeZ?0^FqxJ1Wl%fV*>%>^7|S3!p?pcerfAkVOnrP&2lYYG>%vOC4{ z&zS{GrDbXTa}pdH;yIN^9A3W)%^A&L`Ks})Opfpx-b(%Lh9}wsq%{M^7b7--_Qd_u zy7JYLB#>H+8;(70TYHoJPz(Q%vc&J4@l`n@NLt%ba~Xobk2AHU>u7*~g!|W@5ZIJk zD#oM+a}q%jG6)C?xOvJHZL3a}ty^gPv!sMSA4_hs>twU@%!GG`tnxy^HxdnG@56rf zt`+8V_{`=&P+G=E*2}=x5OgZNSZR9|S_Oum^6?Fz7X2|M><5n6?XEVoe-f*jj-{dN zXE6F8^>~+Ik!!Pf zs2zi=6?w99ecY9xliYsQSvr<1YUxqKovQEp;BSe=1&sR_ikU`$)mbjWQ(!?_I!U6Me&KU z^JTNUQ*Cv~fbp<*T~NM>_t@0baa+4*H4y(y_stMS&xuw{|NZ+{qa>Hqv=&%lY0w_0 zbDqMhD);|NrSGCk7n!2!=rx9D6=m6DZr@8K%rCW^3J5gatoyb2m$xS}6@8ifDWe8; z!nptM#DtGR!au}E*I?@7Ucgi~aN32_mIp`5b(E$Wrla~&>dv=(T~6j^x_|I+={;6- zaN?`X^vo{tz`0<=Y-BoiRN7+rMPh_fDaqkHtuAPb9KzE6;{ZvwI0|TtB_S<0s>a?d zr?r*J71G=8(mA=oo*Oh7j{au{C*Q1aSFqPJz-9H_NhC^#mVZJTJ{$@3UBncauvV@Z zv(9ni>ncqJXnr+855cvLE;EKyTllvc1fUxqBpL1S+k#Cn$2i{Gm$qL8n6pw?fv#s1|A>u#Rjq< zUHEm6%_B1Ho?mXvRKsO|^j^5+MfSQqF>+_YB-J%1ZM;4cdUI{Z5z>`4xn{o+#f(;p zO`cSFL({4q;(hu%PRDkY4EZZE_kjbg+d>02#Bzg4V_x?4We3nbsJ)lxHjzmV=m~sV zgEQl^9qr+T{c#8aY*rW$k|wlA&)`HoXV@Yo<@P{BjrG?0PLd4F&vWs(lO`&cG7q=9x%~o#?+HbixzY zi@4Rrp{Gran6 zqAzTDTZ7O)*g)^*t?H8>ms}f{J-PJr?iSYVKo^nxQ)Q$?&JxbUU@3;+12wWv*O8K= zL$i&ticNV6in8#Q_LEb$@xh0P<(~L`>Fzo5_BrwBze%P*y$g?Mh^1EXq0nE?7qQ$BI^KxSNzS-W*Qt%n#3^7t&=LZI^!YLJdxnX>8P z2c#qBT#$vlgy>5`$GJv7JIk5WTy~{Uv!0+VRaP+RzZ~JyU3GS;efWl@e0=JJK`rTH znD&p-#ATzilElnqXy#0iZ%Hry#o8I&ZBKUqp(90LO`e%rUqrDLHi5sPAp?ydrl947 zKH8h0;H|Aa7Ov^M>naYGo&aTotVj|D`+9>!55>&IZv9P9bhE@@1CEd5uO!SShKk(& z2yi$ABqSsVNNB@Kw?w9icYX_sq8H2rb$tFd=~43={L1A(3d|+VcMD-*O>YOUfAC`b z@Z8u34)ZJ>X)Qh)4ck;z#Y3a(g74gU&HUg0Ohhp9qlma!P@^8z-=tsF6dQF1JpbvS zhRC8H42@pJ7@T0fCWYe072d$U6~|4CO?lKv2rxw#}dTOIkg1=!vbbE0p~+ zr=$I0nB||wH5W}A7@kED^lcnz8oX3`q|9jd)K1w+VNIW1%XF}!gh}ZfuecB0QgWfm zq6D*r389e2@;WgDy_4J^%DOEm7!x-}j4c8WM4I)m&$yplr0>w{E{30Hx<8(p^qWml z{DoRU={A4QUtU~P_HcEj=UN1MKdNRE2Tq(dy=3dBspMk~8`N!kTkOv>Y9japjIq8{ z2BRihm{PlA4}O3D{?6}@DrT4IF-d^ip(Kg#*x@3@;z03^rRVCI))#oa{U4@4W9zSK6A7K&nqH;s~7WLkLGp%M2n>Ze*>+HN2 z$Z-pW0nZkHs|AkSCroh_#cWzhZLf(Q^_44%p%ckCy{fD)#t=KP;$wfSr7Z4!ENXBi z&@lcpbu#`O-d>OPT7_Mt%-f$4_*d=MPgLXDU;!VgjnzK4y#(B2-GkmjY z53~A@wZwHrb$(-`OXTm2rnW`Z!&uX6(7$74BQ>@`dpNlFdsm%psllP%=UL-2stwa0 zKPD$Yk$#t#Kh>>QO6i;tGi=u`HHhWDw-MyqD8b$5=n;(c0qc(5JYXpJ;mzggUZtJy zw!;U{7YSh)QKJu9wI9)IEAMrR_E0!N5^pEn^lvt}kbzWi^*mc{9pA;A71FQ!Zi}CA zIDdm@nErnsy*#4H9=c>7v5{K?WC_Fvgoyu9F__B?`yWaxBYss@R!V45D`0v{a}iII z=83eOPy#ZGA~U}U#zI0uObXu7LSz#awZGr<#JXz9=A73$zEL0bcsy6AD2&eJ^1bLj zN<2A(!<=XDb|{)QT6z2u53R-o%Kxe!Su}Yg_^O5E-m;{*auW%8%9!h(U{=)08-WMa z@egd>2_R@lw>WaQ0VurQ6%$KbTv>_IHSvo9*2wQ_K;gZ3xHhl|@QX!&(gOCqz%Eq(~-=S6Zt3|Rtn=H6km5bPqKfpQ%{ewb0Re) zahJY&ulWtGt0m5Co$SO`IHxhS!BKcsw}M}-C06g1V)4-e(d_U;(Np%dlVMnJO%>Ls z2C41L{pzRwYE!y{p|Ja2vaq+%4kU#~9HXP6228`|5DZoV0f5*qjPDQ`QXU}rZ=j^*`HvL zbo~E0U22H9Ee32NxR`fpw;U^g@JK)UcCGCcSc2rHsvhekA-C&4lRE!VyaLx8OqJ0=SNCKZ$Zn=J?9G(_R|~Y7iKE`!_)L4a<^Y z%7Ez300xcpZ44S%{7T-r@xs%EwaRoQ9>0m{~r9CvMM!A$g~N7^XZ|`C^bQGg#hj ziBYV0^>X~)9#dL8t1Fe$O38KuWf!b<8*1?NcqJtnU0Itn6n5UmZqJ1awJ5kvg5n*@+vf(kCQn@zP;89k!zALfE(3B}YtK6|i)(91l! zh?e^KCU|Gi!^!Ev&UCGqh{xtF9G=BhuugLqfq>(HY*mOz6GpyLK|3-G!`<2bpjk*L zV$NL3(kpB$T33y!Fb67Uf2wwZ+quDB-_hxuwEv>BHF`+>BBH83EiH}Tyl-#e?xRQ1 z%tIzU?>Kr&+-ur~D^qHN>#4@md6%;7hEr}(CZX?bmZ=37lDY}-6lWWV{x)&7HpsLJ zM@jrz8boxoqu<$nC-ca&_=~~&}nP=d5fodl8Q1D ziu&mO%=Gz-yo0LrxU?JCk6^GPnO0I#QvU%_dytjnCiSNGeiBB7cpLE2m0I02fhO{| zRuurBClD*U2X{8VV2SPXPKE0i{}c=`VWjqlJw5XS(vlaXUB|d218yGFDQ?HhzIOXFx)Z)OmART@QK{ILfTtc z3|ZuEGOdQhcs-;EdK>L1dj}`hv9x{Kvg?|*iya4!h+slh`muHJIUw!?}sgMtwdLch_wV%2j2WL$d@AZ)Vk8ilPYP9@1dnhP|ggT4L>5F|HiV z`0hw3IOk9qV-}|P`!A?A-a%$2HA-l2RJOI=^vMiN?n@}IMyBzC?>yB?^LyHT3bwQN z97WS2GK-b|zn>VyBz_JFInlv_8m2i+HN&DeG?`?)&|RB zNn0jgl`q))n{y0H+P|2M-_(LCuCv$pO)>#AYEH_=we&DrO4mm2EU=W}$84^~BUfGR zr^ndaw3xJ{0H(*l%RYw;+ggduGW1AoGP~6-tYz7!q zoQbc$)AP`!bYVkbE*~G`wu=b&(fge(#Z5d#)c6^yX4KgyZ$alZKH*rmKmG&qG+rgXQKx?ugFs2d1vVZM@r{&NAunzEte2dWW8C^ zl4bp+jvf^REuM#>#K9Px6EkFyo&hMF=xuO=z);`Hs)WXymnN@ZJ$hh`?CJbf{j$EfN_E{7&Y_OqF%_R}DokSCaf zO`@bFlMvyqm%XOB+l99C2NgvnB&jR5zW9QMwLWDRpzuu@y$#J0br`D*4~s}k>-u`0 z(tGKsjvBLmbMfum8r_M-=K7VByku$V9iBS29|`0FQ}f1MC{h9mAceBG^%WEs{`s9Z z({iBeS8gcU%s+VJz0KGM0;bRB89o^!bpCx}9V9>bC&Mx#9*1=c#O`3|s1D>G-TYuA zGzS-2_Q#he8Y7( zL=Jo|cJ-E*WHqg1BSPh?Ua?PnP0E2$i7K*r6=PxOEdRCG?_^e_>!8CCaV(|y=dy_h z3(|6kFj??kJ>Z+G{{l==-lyM^@H_tv+t{oDg>*OCF;GR^by-q-!4{@wGAA_?bm;UW ziZy~@@$pq_$pRZp5td^IWO;u~3GQ(Cm{F(;5TWHOyzrqB3lxFU+cWP!>oa=6i23Kc z6EPLX92xw)%Y7K*VVQ&fc^!SJ@Cx|@5tcMdFqOm>mY?7xp;F}QlNmF zcynUxXEmJ!a2j2=I?hrQMwb0MD*s&yF(cj20UtbaaEK06|tRUDYP12~P^B-k~1obbI`FmX@q|>(Ga*pQ4bR zEX*D33KzZ3oR^-FS6(ArNBl>=z_SR?ECAB>->b$%{9^Nny6sJy4%Y5ktX}fY*QBuu zsK0*>@QDAA1E=KMW;;8Ww8-nNp*nrG zP4o5%0-|5v+1C|* z#F|`p1i238JHc@AD2N<*LmK_J?a#;O|pFqCj$z`TzaK@ZmWMm=k(< zUHaBiRW!ZTt5{n=&ke17z0pyw_km^ln0(Xk4uh81Xp{dFkBC~x&4%H-pxv#W@Fy|KTmp< z1)K)nPIUC`E#LHR~`iOr~F;C-?ICGj4wm@={)8r|}f}jpQI^BPfT$AJ#>f16RG5mHHCGBmD zXkR@M%@>tZyCzTm`_+ifsX(_92&8Dy49R?`+bb=E>w!Ms{jbsvGfcWJhyCd-G|4`q zrJX)TAaZ-335jdHxxP;4w?3GS2N=Dm@*80oP#~js&sI_kUjw@&S8dBq7`g+oV3kmM zmGF<}9WZ|k&6~+;uS82Owdq6`KI9DKITO;!d~gW%gUUE~c+mZyBQYlLu2r~%T_qXt zWwG*v;Gb#$&HCk9W@=bmbo3;jr3UUufvC&slIs z1SE~yp$Lr;*-fAE7Nv4Ys2-=X7p5CFzuO-)-8m~|sw~M_)6YKuTi>PDVzrJkD;U2D zHpxkP-LC(R8aQn^)6l@26z1&tqosIIYxSalL>=Z7Ts~5$g>b35Dj;NjvP)DyC!7@Q zqE;u$;;bGgLxoLwm07OApQCWXv2Y=>XHH1j775{*Mj~?d(`GFyX{dv+FTzE$^B?Fv zcAU=-*FGFpo=jIbFDO5I_NNTA4U=4)oYmxFOntos&r>C9k9Ox|`vyMj0AA}XU?0`o z5fiJHs;!I9!PbIi-#yTN+J@C34yj{65+e|SZW!u~Z8n|t@|Gq(>6BV`u7Lk!lpgD- z;X58PnXE_RSSV|0yZ#VjZ~}FI+2KLhI|_{Fs4s3-oJ=tm1ALQ3l2Dq99um$HVSy}g zA$h;_oEz65)i)n!34;9}E#1PBFI`C}v82!DNJ6`_2j_A$;Js;=vXgBHKQ9+sk&=HO zK^=|BZa*V?6SGg<33}(yqKWHnrW-Y{XQx>VNbIm<0Lxc!XMTR(qVs8Vm!;ErT&ep# z*{Q6TS9v_Hl^L4`R*JZe+hB<^8vsR6q{ZemsgtvxV_k#R&Kp0G2S84%Bj%NoU6YQ& zG{15>?m!TB&l-7TAH)N-KUg{S)chomny^F?2@y+;1hA$o^s+l0)imjEuE4F zLqy_}(2I*3|yJ6;kyr1WOzdfH`KCoB=>o9As`dxeP-`)_$nRmyzuJHgL zsR7pSNjDPjNWJ=ZivJ&9y1`x5D9#YEG1xf;tQ2AP@C2gVy?LVQ*NYF}-xGe5@uvKl zfnzp+5(uOr3~D7Ow}+Q<`-KpnWU;nouhV2V#U#a%-u)HoOUmBN1HQB7n|StowB58a z%+EcbJPes>Xc6(}E?hzwAw2}N6at-ILKvG_xOUi(3+Mmw)%Q)2gb<)SGtdS?r$PpS zm97w|nGYK%4B$k$tsIoQ?&MFKSbmi+`Wr5zrOEcR>(hyBeEZr|jmZC5 zrisinuty;D^P77`EHpw?ROeZg1+9d3K*FtO@l66gNRm)60f#WOPhAE3G)mVW(J7J4 zGrq#v!u0>gr}dwgQG|=!QDH*rffAm7tCA*`vqjhv2p`D_ho6v>01 zVxQ5#9{m6Kh7RT_WyFiBXQ+5TU4IqtrLoi*;Aj@DW;NiQ({CS5%xy&33Ps!fvElo7 zY+V`sLQpvrr1Txg3kRL>?fIYD2VPd5FjSss$<0=knd!^DNR^&_?HNyH+2Bt&W$ge%?pc6{9Ii0s9Cg8H=7LGV(oilqEy^?c1x5^FR2I!1i6 zCUt+mNMwRP`K>RDFLnP9=&>3pVk|wcRSR2EB}d&|Tv@TopZFA++Qj8TI}tkS*y5gt zi@ms_b{-U_ce%H>cMh4mwY`M<<_yt7!|=yfi)(fP>O^ExpbN?3_tR-_Ibpgv zE>05+g2NB9Lqq2j{tyMshY#s=ESa8E#g;6$YHvwr9?h6fS;Yij4zg?g4R5&M5Utk| zJzP$=0jb{%tg5#XR^%RSf4mpHIJ|J;)2c1|n*{7r-Fl&a7m55eY84aXe2~pjr8-L5 zAFR8XJ@?uVzBaZOjW`VXRnZE1^F!|N0U(L98P_o8n^7YlnWoHA{R32$h>;6})1bJy) z4V%o2j5Xz;tL@ly1(hLQ=8?V$lz|ITiEbW_C5k6;e7BEgu(>f563nSvo_BkKN_QNh zrt6U&MD=1byo`xrqU*x^olZjdo7t4{A-gjq12y*k!$o=n6OggVUnoH2j??mmH{l#E z6iN7~?d_{X!vxGI#IJpG2~n}i-AJ!Tf2q?b<`dI4dG0>1I#c&cd-wGBF1kLQZ*L(E0H}Ii*_Gg)B%=a^ zbA!3ff}0tAN_?jmv_0cx!)!0`bi)60SXyV0c|0zU8?cIqSq$=6V0KkK<~9}q zTQ<%g=BjP*+uYno1y=g%zq?74)bEUT#{J(THe*v=&0^QBD9Yi9l98RXH)ji)*rM2F z)WLJacySfQ!Lc!=23dLVZZ`Ere)YF9nm$;3Lc)_;$ke*Cbd~0cWezvC?DYyFTJMI$ zD2b{OX&`u@V}p30CPeJK^5W4w_&uNs{jm`#T2C;xWYGv!@ZsP&<_LkT10A$%glAh9 z3@*6rr}xH>|A-%^lL+1AKQq9bmJy$UD^E8!H_tC!T{$K~7XI#P_AbkW5MwPqX>OZZ z#p4Tp*6ppWlG8{0<-Cm;dBZciURj7F)zP_Xcyb%dHU|GM*^TiZw!14aj0wgKQVOAh zaDOjE(l72dvMHxo&LGs+kN)$}P7#tG%_!d2Txh@y3)E1hIcycc;!cFs6LhEVSv**JSXXmhW zw7srbKOJ2AF>M($m%v^N5wyTB4+|uZ_siE1TXJ9ix=~XScipJBL#H zVAl#Jiuv%q+h}@=kAA7^+LPwl&ojyA+xade%P9ZMktjYxqQuim@1(1?c01i(UCgWB zEi1QT)p+x$`fG`!vj1x-@?@TL=Gc@2BfUtmUgjhVe8U_rob%6PH?t)D_7`o6)pNQ{ z%TPQ4G!yRlTA*`PxZZ>>m1&ksLo{~xe4uM(Rvz)Ry$nwNrhrdr>$N8tKOJ{hIQwEGsi&+-0k5B zs$UBJ0K*?il0ekYn=kYPcP`%;tZSdJX`=tyh)+c9B# zn&c^`;=ek$J!p!GjrDn3z6peXU;LmEx-;@cp7`EIfiHxX+-gHrjJ#uHarI2&>8lQ6 zD0$7#O*M|X6+Rj-Z%4!D+C_+OfBHwpycPsZR-|H=zsE5#Gxn{{fFnbU*NaWIQ+Str zM8Ig>ySGqY&0{=jD8j_W**WHS6~TEVwYc7{ku#V8d6BdY`Q0siXce^+jt^Q52&wqe z5}!xMOhE2@v->yr-|SQIuQe)Kew;c+-^{lzp}u)psK!12WbCMkG75Yu)2c4XF1j$H zJ6!K`aQc_={BtRIr-c7+PA=hO8tc;)E;)RLeC7>!$7AcQ^B6bt3z;fvJ4pI?w^sD0 z9Q^$jyEqB5R}ZIM3B$09mFM`kq~yJ*)wHAM8FuatCyTk z6rEM=KXG=iwMMIVXR9OCv%8@Y3~ym6w6wN1&hnT0u88cg76PgJJ3WfTy>AsYbvGn5 zIDHL3+1}$z`HO&}kEfZdUJBjfdrzn%%wZWz6oTcT-$B}U0uRn9D3_xzqGDljq4&;v zLPhT=;BiaC9qVb0;>f5)j6-q>So02`y5pcReJpt`r9KP-!504ph z^~K+qWoMd0*ahaT7yXTwu+DeHBECbn38+6rRudJm^(+OYaNbV8&N{V2VqE0HXz}JU zUpWzD;(A-4zu|n)G#q8naigqw?%yo*lr`C${2W)rd02Qyy$)(3nAZhaHZ`bYk$2WK(C6J!r+g6AW>{f36I;JNquJJ(vD)h7uM#`eqVfUP0xd8UM9%IS zGjflgn4O=!?DMa@?fo=VYR)5FZ2p=Xpyh~Io1i1#J5W6lbl{}{Mw=Tv7o8;`^O=>8 zBLf2yf1&2*K5U=}ax&lYUqP@Dp#XlV!or2~+htsAC#At(_SDqB65Xn}-{D+cwSBqC zGAcrLEgT$DyyFwGz}!SS7wv*I`#Za*Q)paC#1qB-d7msp@A46H1}=(b#b3tg~z z%8(hX4!^lr==p6qgb2un73-fcKM~>~d#r0<59f0~(eL)Sp(6L3vZ+*!Qq7ae9k#eG z`n^LUlQ|QBA&RDesle+b)zpoHet>$Zsg=_|nrz23hO#Ww&qx=SUI^;y>Q;TLBpXsh zrmMIkt)_m!lM%zDu|qS#qw*sB2QLR4r$w=<>W3@}7$e^{7y~DH%+WF>aUt(t-#2Sn zdy@g!;ZyC$Su&fVZapvp1IqSzah>=+s**aSJtx#%O;TOq+6*wldm*u20!sPC}nt znpaWnVe1ThH?dW}CWeo_r;dxy^Elu|G=@C))xUo-0|zM%mW2i?mv3>aaOL8KNbWwZ07^-K2Oa3Hfy_{>N>UTUKpE2n7 zib#T&^Q?Mm*>Y$*ICL-B{Q3E5v1lrL^ai%x5$Le`NlBDkVzi!VLf{IoagM%FUv z9GD&HoM{?qxSM9AKa_T(0D<%M{3F+D`^?K79XbE8u^zw%0&gHG@{z;F`X4+*w9@op zHeCf*e9tkrMG?tP$Zh+5L=_p;3Ex-b;fOLfxUlm?y&w;odyONvr+gQXyO&D5en}bI z_TA=8e7zkr_rdq4c9>>65y=ZK04g*K@-2olrv|ajcy4=uFDiR-u&=Yao!?@m9X@}J z(aTop^zd|jN-rA4$lgAu#hjWYn3!$KGrWNG3;NyA2gSMj=IrBDwQ^4R#hcwx+f?&->YN*-FTX^r+5T&I5sDp!b{ZO$RFA zNMy#&{O#M;VK9o~trg09=t{d-Efb%~igTabX&zQmL*GaF@ZIrxk+Cxw6 ztix}0U}n5f>?A(U>&uDZVbwhIo+%4N%Qlm!`})>0-t6E>Ras;;ChNLoCD~YgiU>?%`OY-H0=xee)R*loP~&Pq(RbkxZVvOMwHq*<)L!P{ zQC}5k4fs+fN$-%m$_h%a-{aRGRzjR7CezL>YMO7T$dh@Ov91?jh*?+rx`mF9#O(1& zNY3zG*Z_8zR|7`@ho7omfK=_mR4`3U5RPYDWxzl!Wq8ZhU(YX)wwZ+E+0Zro9Z4Sn z-jfPVX`uadL{hD#wbjxEAtTeE@A#ue|;xJTA~E z+@o4zv#o76%Sdy+cu`$mPebq1=`&j|AD@@TH$QTCbA&82KK-&qp%UIZq+|SqD`d@l znI`Qg_KpWnNR0NUNeD2HN&1qrbKbb%QyKv#YwT9mCLQQcCRva<5kVQMVqMXUbv|>| z{w%2fCNV0gSD%;LeY-AsNYl0N%jp-6RGx!3-TI& zH=nVRT3;$#R%42Z&YlR+&sp)sDtr+^>JFhn<$?(AE;P5emUV|ee#R~Z?)jj zxrDvy95Pp?DQ+V7CaHxASTHU}q$5U9S(cxi5$fK|)Q9W2;MDi-HkX5C288AJdnFNr)O5~Py}K=dpq!LOyqL??D&|j^YaCta9y+TeX~TWZqn$7Nu2LV zr`MCtjGDfJEi2MKI1`e!WcGy<<(z@LD)780wqE(r% z)-I(5Y)gDsSfk|jMJp@V?R^`ezzPGfa2c*gB%Q?mT@MyL*s!3yhi4{%96(^u8JYWH zC*%id%|~;XRzos=;&l0D>3RecMT!Y%JnR|aoMHcEg;pKX$-fM-7%Ikdpz{qpPAt{0 z))V#GW>FrGORw%*3%@5FD#kN(w8~D&y+dRxXvNCz+eqmE*8RSU9Q33xyIUyPJc9u% zE#>dB|7U^w__z`*4tM1}58bGbVIf3m`KI~-=Ub$K$9xh=`;JR0X|33dQjFTOum{nM ze-IBJ}D+sn#Q?9O``8O8U@XgMYB`DDbPGfk%(Or8-;i8qQH=u@Zx;5LxE>2^7_J`F( zFe@Ozo3Q*Du}JdnsWSf@xhh6_XNk6So^h9w4wLj-G6}HE7&FkE1#j z2dK0_4i8&rJ{&an8VfKur2c)@Lf>pG;$`T{j}DMp@`WqZGf+`rPVlq@Go&85yIDb9 z%Dk;Q<5qiv*OKvbn=(Hj{Gryrv@XGVU~n)ZkGC~PX3D9QlO~n_gfx})R9S$1!#^nP za(2}q*&N$4@%fbzdd&S^08Z~7;=9#I;ksYNqZgE5v%l9c9DZ%9f4Mym8QRvqpc<+O z@4Vq+v>l-)@;JkZ&UX@*e_`wGf8KGw(k8xjFO3gD%&}AeAod=tbQwlIVOMO6i~9`) z-w4>#Mny$gl@Ya{QwTc7;{gB?Z{6h|{N${_8B%RcRXc&m6w0FWcBs7`+RPKaCQun| z^F%sBQ+}mQ)Q_qkadmOZ5u=bfbYu~7c5R-q0GITAE8DqiHhk?+_n|K=OtUTxk<;Rd z>Roqea$^4q1aqYUXXHNsUy3?R-}spixA&QacI#7i@KHTI)V~zCOVD@yU@fNDE0uxN z-pXRo{%dkZ+Dq?f`7>vq6Z{!vF-}g#$)9FHaZFAoyV;wsyix2`7F1KF!mP+oV(RG! z1F~^##Mi_`)%O`Y10PVn^^(JQ>|FW-Z6$D~&g&ZpnX=3q%mORYyAKM_J*+NC`m<20 z&);l_#~bIvksVf?LNd`bh0DfP=>)3`Gi0=>%d2aK)fP(h%JYL8eWG%?Z-1iF_4SYK zCQ0{ocRApyo2V2%uo${}#ULW4ef9}9k13_AJQE>QWY$fHBDHyqj$_r;E_^kpsO)Vt z@jU|+BSirUz9NHis8-quB(A>ttWdt+`b!GE#}#`1#-C2h*UnR8@UNi1iRqZ@)4=u= z*?Hq{L18-I_}9!P5aDtNBE@&*1b~!xoO4jxzS}o!K9te6l8o4quiw6D;}HA2AM?}0 zxe27*tSa|k=+B}q8qx4)uox$s@TRlXs^A2}a7zbdGsyJ)T{U3$S|caXy0eFeYj728)4KLh(WtMxqz_s*)Oyff?wmHSiU;8^*n_F0v!HJSuBcP7n~iK?6L~fB=yJi-6B3Got*i7Qd<*-H zL~x8Jvf+_{c@ZdB|Ek`W=-s2%Y@~Pw6`4JD~qsckQgmTuiav}M{%bAGp@09Dayr9iQc=oZc;9E~&5CFbyEze%t zzw21wnhzEBp(9ub$V-6%4D%{4;RRg-GHwIYdi;w?Hpud!7m5vAgyUl4(R~1IZKM

    `EreK*M>NtbZOkXiP4>+r<=h3_s)7X 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

    Ie9igQ4Qm+vWefaEog^)u^yNj}LXD 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%0A-QdOM@96berSKcQ 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

    pwhqT%uuqlORp8#%vBN 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