From ef711ca481a83e7fbc1b10bcca7a2e296ce32348 Mon Sep 17 00:00:00 2001 From: Brian Julian <bjj@google.com> Date: Sat, 26 Nov 2022 23:30:58 +0000 Subject: [PATCH] Adds complete U implementation of AltitudeConverter. Relnote: N/A Bug: 231327615 Test: atest CtsLocationNoneTestCases Change-Id: I7bac8b12ddd68732f99ff04e30f169657c2d2e71 --- core/api/current.txt | 9 + core/res/Android.bp | 4 +- core/res/assets/geoid_height_map/README.md | 2 + .../res/assets/geoid_height_map/map-params.pb | Bin 0 -> 33 bytes core/res/assets/geoid_height_map/tile-1.pb | Bin 0 -> 10772 bytes core/res/assets/geoid_height_map/tile-3.pb | Bin 0 -> 13831 bytes core/res/assets/geoid_height_map/tile-5.pb | Bin 0 -> 12293 bytes core/res/assets/geoid_height_map/tile-7.pb | Bin 0 -> 12025 bytes core/res/assets/geoid_height_map/tile-9.pb | Bin 0 -> 10792 bytes core/res/assets/geoid_height_map/tile-b.pb | Bin 0 -> 9921 bytes core/res/geoid_height_map_assets/README.md | 8 + .../geoid_height_map_assets/map-params.textpb | 6 + .../res/geoid_height_map_assets/tile-1.textpb | 3 + .../res/geoid_height_map_assets/tile-3.textpb | 3 + .../res/geoid_height_map_assets/tile-5.textpb | 3 + .../res/geoid_height_map_assets/tile-7.textpb | 3 + .../res/geoid_height_map_assets/tile-9.textpb | 3 + .../res/geoid_height_map_assets/tile-b.textpb | 3 + .../location/altitude/AltitudeConverter.java | 175 +++++ .../location/altitude/GeoidHeightMap.java | 369 ++++++++++ .../location/altitude/S2CellIdUtils.java | 653 ++++++++++++++++++ proto/src/OWNERS | 1 + proto/src/altitude.proto | 54 ++ 23 files changed, 1298 insertions(+), 1 deletion(-) create mode 100644 core/res/assets/geoid_height_map/README.md create mode 100644 core/res/assets/geoid_height_map/map-params.pb create mode 100644 core/res/assets/geoid_height_map/tile-1.pb create mode 100644 core/res/assets/geoid_height_map/tile-3.pb create mode 100644 core/res/assets/geoid_height_map/tile-5.pb create mode 100644 core/res/assets/geoid_height_map/tile-7.pb create mode 100644 core/res/assets/geoid_height_map/tile-9.pb create mode 100644 core/res/assets/geoid_height_map/tile-b.pb create mode 100644 core/res/geoid_height_map_assets/README.md create mode 100644 core/res/geoid_height_map_assets/map-params.textpb create mode 100644 core/res/geoid_height_map_assets/tile-1.textpb create mode 100644 core/res/geoid_height_map_assets/tile-3.textpb create mode 100644 core/res/geoid_height_map_assets/tile-5.textpb create mode 100644 core/res/geoid_height_map_assets/tile-7.textpb create mode 100644 core/res/geoid_height_map_assets/tile-9.textpb create mode 100644 core/res/geoid_height_map_assets/tile-b.textpb create mode 100644 location/java/android/location/altitude/AltitudeConverter.java create mode 100644 location/java/com/android/internal/location/altitude/GeoidHeightMap.java create mode 100644 location/java/com/android/internal/location/altitude/S2CellIdUtils.java create mode 100644 proto/src/altitude.proto diff --git a/core/api/current.txt b/core/api/current.txt index fc319ce6891e..15ef7734317a 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -20129,6 +20129,15 @@ package android.location { } +package android.location.altitude { + + public final class AltitudeConverter { + ctor public AltitudeConverter(); + method @WorkerThread public void addMslAltitude(@NonNull android.content.Context, @NonNull android.location.Location) throws java.io.IOException; + } + +} + package android.location.provider { public final class ProviderProperties implements android.os.Parcelable { diff --git a/core/res/Android.bp b/core/res/Android.bp index 7e17840445ab..3c4bac8156d2 100644 --- a/core/res/Android.bp +++ b/core/res/Android.bp @@ -107,7 +107,9 @@ android_app { sdk_version: "core_platform", certificate: "platform", - srcs: [":remote-color-resources-arsc"], + srcs: [ + ":remote-color-resources-arsc", + ], // Disable dexpreopt and verify_uses_libraries check as the app // contains no Java code to be dexpreopted. diff --git a/core/res/assets/geoid_height_map/README.md b/core/res/assets/geoid_height_map/README.md new file mode 100644 index 000000000000..849d32ec34aa --- /dev/null +++ b/core/res/assets/geoid_height_map/README.md @@ -0,0 +1,2 @@ +These binary protos are generated at runtime from the text protos in ../../geoid_height_map_assets +and using aprotoc. \ No newline at end of file diff --git a/core/res/assets/geoid_height_map/map-params.pb b/core/res/assets/geoid_height_map/map-params.pb new file mode 100644 index 0000000000000000000000000000000000000000..6fd4022fa32667bc79528cc88a467f00dd963538 GIT binary patch literal 33 jcmd<!6kwHLP-Fms2l)<~U<O0N0Yk3qiwkVIuG<3uN;?L+ literal 0 HcmV?d00001 diff --git a/core/res/assets/geoid_height_map/tile-1.pb b/core/res/assets/geoid_height_map/tile-1.pb new file mode 100644 index 0000000000000000000000000000000000000000..546dd0d46616a175ce1b399c98ac30bb817126d0 GIT binary patch literal 10772 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 RKZEn&Qs~^|(@C2T{y%4=jbH!( literal 0 HcmV?d00001 diff --git a/core/res/assets/geoid_height_map/tile-3.pb b/core/res/assets/geoid_height_map/tile-3.pb new file mode 100644 index 0000000000000000000000000000000000000000..eb3fe465e27416c49ba24bd1bd8d3a3f344fcf23 GIT binary patch literal 13831 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 literal 0 HcmV?d00001 diff --git a/core/res/assets/geoid_height_map/tile-5.pb b/core/res/assets/geoid_height_map/tile-5.pb new file mode 100644 index 0000000000000000000000000000000000000000..0243d6d082aaef49284f0c345bc633fc9cda0728 GIT binary patch literal 12293 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 literal 0 HcmV?d00001 diff --git a/core/res/assets/geoid_height_map/tile-7.pb b/core/res/assets/geoid_height_map/tile-7.pb new file mode 100644 index 0000000000000000000000000000000000000000..3c2f777ad77e592007dbb22b1a87ed7c38dc330e GIT binary patch literal 12025 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 K`?dM*I{JSUjF=bz literal 0 HcmV?d00001 diff --git a/core/res/assets/geoid_height_map/tile-9.pb b/core/res/assets/geoid_height_map/tile-9.pb new file mode 100644 index 0000000000000000000000000000000000000000..5e9a4808eae7fc50e173a8142bd870e2367a44a6 GIT binary patch literal 10792 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%0A704?tW|$NG&_->vUqohh|%6fhReE^}hc} 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 G9r`~t0qLy( literal 0 HcmV?d00001 diff --git a/core/res/assets/geoid_height_map/tile-b.pb b/core/res/assets/geoid_height_map/tile-b.pb new file mode 100644 index 0000000000000000000000000000000000000000..c57e8732b61ddffa25cb80a29b4593d788dd012a GIT binary patch literal 9921 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 literal 0 HcmV?d00001 diff --git a/core/res/geoid_height_map_assets/README.md b/core/res/geoid_height_map_assets/README.md new file mode 100644 index 000000000000..800b3e50795a --- /dev/null +++ b/core/res/geoid_height_map_assets/README.md @@ -0,0 +1,8 @@ +These text protos contain composite JPEG/PNG images representing the EGM2008 Earth Gravitational +Model[^1] published by the National Geospatial-Intelligence Agency.[^2] + +[^1]: Pavlis, Nikolaos K., et al. "The development and evaluation of the Earth Gravitational Model +2008 (EGM2008)." Journal of geophysical research: solid earth 117.B4 (2012). + +[^2]: National Geospatial-Intelligence Agency. “Office of Geomatics.†2022. +URL: https://earth-info.nga.mil. \ No newline at end of file diff --git a/core/res/geoid_height_map_assets/map-params.textpb b/core/res/geoid_height_map_assets/map-params.textpb new file mode 100644 index 000000000000..3f504d4f89f3 --- /dev/null +++ b/core/res/geoid_height_map_assets/map-params.textpb @@ -0,0 +1,6 @@ +map_s2_level: 9 +cache_tile_s2_level: 5 +disk_tile_s2_level: 0 +model_a_meters: 255.0 +model_b_meters: -128.0 +model_rmse_meters: 0.36 diff --git a/core/res/geoid_height_map_assets/tile-1.textpb b/core/res/geoid_height_map_assets/tile-1.textpb new file mode 100644 index 000000000000..7fac2347daa3 --- /dev/null +++ b/core/res/geoid_height_map_assets/tile-1.textpb @@ -0,0 +1,3 @@ +tile_key: "1" +byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\004\003\003\004\004\003\004\005\004\004\005\006\n\007\006\006\006\006\r\t\n\010\n\017\r\020\020\017\r\017\016\021\023\030\024\021\022\027\022\016\017\025\034\025\027\031\031\033\033\033\020\024\035\037\035\032\037\030\032\033\032\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\244i(\242\224R\216\264\361OZ\221je\251V\246Z\225jE\251V\245Z\225jE\247\216\324\361N\317\024f\214\322\023I\2323I\232L\322f\220\232LdqM\316:\321E\024\354\344sJ)\364\340i\340S\200\315(\030\243\255:\224\032p4\264\340i\300\324\213\315:\232EFz\320\0174\244\323I\246\223M-F\3527R\026\244\rR+S\353\314\r%\024QN\247\212z\324\253R\255J\2652\324\253R\255H*U\251\024\324\213O\006\244\024\264QM4RRRt\244$\342\220{\322a\201\312\363M,I\344P\017\255;\214\360h\245\006\234\r<5(4\365cO\006\226\227\024\264\nPiisNSS)\245&\232M0\232J3Fj65\031j7Rn\244\335F\352\225\033\212\224\036+\314\215!8\242\212)\303\245<S\326\245Z\225jU\251\226\245Z\221jU5\"\324\202\244\006\236)\342\235\2323HNh\2434\204\322SI\244\3154\322\t\n\364\241e\301\346\234]X\360(\371{Ss\315(4\340i\340\323\305<S\251A\365\247\216zQE.i3J\017\255(8\251U\251\305\251\204\323wRg4f\226\243sQ\023M\335I\272\223u\033\252x\232\236\322W\232\346\201\315)\351H\r-8S\305<\n\221jU\251V\246Z\225MJ\265\"\232\221jQO\024\360i\340\323\263I\232;\321\232Bi3IHO\024\302i3M4\334R\216)E-:\214\323\301\251\024\323\301\247\203K\326\201\221\305(4\273\251C\003KE&j@iwSKSKR\006\247f\226\230\325\003\034Te\251\245\250\335K\272\244G\300\241\236\274\374\212J\t\245\024\264\341O\002\244\025 \251TT\252*Q\305H\246\245SR\255<T\200\342\236\r<\032x4\271\2434f\214\322g\336\214\322n\3074\326bi\224\322i3I\232PiE:\235J\0058S\205<\032x4\340psN\316\356\264\224\240f\214R\200{sN\036\364\204zP\033\024\026\246\346\220\265\000\323\324\323\211\246\267J\253!\346\241-M\335I\276\215\364\345\227\212S%p\331\244\315!4\240\342\2349\251\000\251\022\244\002\236\005H\016*E\004\367\251\000>\265\"\232\225MJ\246\244SR\003N\006\236\r?4f\215\324\002)3Fh\315!>\264\204\323M7\223M9\024f\226\224S\201\247\212p\024\340)\324\242\234)\302\235\232\0058\014\323\302\346\244\000\001H\334\216*\022\r\' \323\261\232i\024\332L\322\356\3058=\014\374UYZ\2533sM-M-I\276\220\311\203K\346W\036\335i\271\245\315-<T\212jd\000\324\300\nv\332]\264\365\251\024\323\305H\246\244V\251\025\252P\324\360\324\340\324\354\322\346\214\322n\244\315\031\2434\231\367\2439\242\233\315&\t\240\nZu(\024\341\322\236)\340\323\207ZZu--(\251\024T\200S\361M \322\021\212\215\215\013\232v3\326\243u\305Bi\271\243v)\013UyZ\253\026\246\026\244\335HZ\243g\305\n\371\025\313\223\223E\'J\003T\201\263N\rS\306\370\251\321\352]\364\006\247\n\221i\300\323\301\251\026\244\025 4\360i\340\323\263J\r)4\334\321\232L\321E(\243\036\224}h\3074c\326\224\016)\300R\342\226\234:R\212p\247\212u:\212P*t\\u\251\024sO\307\2454\203M*M\"\305\334\323\304`\016\224\205)\214\271\025VE\301\250I\346\232M4\265V\225\252\271j\214\265&\352\013Tl\324\212Nk\235u\301\244\006\226\232G4\345\034S\226\246SR\251\251T\324\200\323\301\251\001\342\224\032p5 5\"\265H\032\236\032\236\032\234\r(4\354\322\032i4QE8R\343\024\244n?-(\030\034\322\355\357J)\301sF)qK\212p\024\242\235N\002\236\005(\024\365^jQ\351R\016*D\030\0314\270\024\234f\220\221J\016)O\"\242u\300\252\317\212\251/\025\\\2651\232\240\220\346\2533TE\2517PZ\230Z\244OZ\304u\315W*E%\031\346\2274\340jE5*\232\221MJ\032\244\016)CS\203S\203T\212\325 jxjxjxjx4\340i\331\2434Rd\032>\224\242\224\032p\247t\373\264\240f\234\247\035E.=*D\311\030\244\307<\322\342\214S\200\245\3058\np\247\201N\002\244Q\3058\nxS\326\235\272\223u!jM\334\346\202\371\251#\177Z\212y;\n\250\354j\274\247+UKb\242f\250]\262\rUc\223Q\261\246\346\220\2657v[\025aH\305d\221Q\262\203Q\264~\225\021\0304\242\234\005<T\200\323\301\247\203O\rN\rO\rO\006\236\rH\r<\032\220\032x4\360i\300\323\301\245&\222\212)E(\247\212p4\341N\034\365\247\004=\251\300`\323\331r3M\242\234\0058\nu\002\244Z\221Fi\346\225E<\275FZ\224P\302\231\2323NV\3051\2335VV\305V\221\370\252\214\334\324.\325\013>\005BMFM4\232ajj\037\232\246\316*\211\031\246\021M<\036j)S\270\250\207\006\236)\300\323\201\247\003O\rN\rN\rO\rR+T\201\252@i\340\323\301\247\203R\003O\006\234\r;4f\226\212QN\035i\302\234)\302\234*@i\300R\266q\326\220R\322\212Zu(\251\026\245N\224\340(\346\2028\250\363\315.\361H\322SKSKR\027\244.1Tg\227\223U\336O\226\253\226\250\335\270\252\356\325\021zc50\2651\232\225\033\034\323\214\225X7\024\3074\314\322\365\025\t\034\320)E:\235J\r(4\340i\341\251\341\252Uj\2205<\032\2205<\032\220\032x5 4\354\321J)iE8R\216\264\361\326\234)\300\323\205<\032x\346\215\270\240\nZ)A\245\025*\324\240b\244QI\'\025\031~\324\322j6ni\244\323wTm.)\215!=*3)\031\315S\222M\315QH\374T%\351\217\'\025Y\236\241g\244-\221Q\231)\245\350\3631F\372\256\257\212\035\371\247+\002)H\300\372\324\r\301\240\002FiA\247\003N\024\341KE(4\360\325\"\265H\255R+T\200\324\200\324\212j@j@i\324\240\322\322\203J\r8S\2058S\251\300\323\201\247\203OS\212\220`\365\247l\006\243<\032(\240\032\225\rN\247\232\225M6S\232\256i\245\2526j\214\265F\317P\273\032h|S\036@{\325f\340\325y_\232\204\265E$\225]\244\250\313\324m\'\2753}&\374\232\031\251w\361\212\210\032\010\315 8\342\245\r\221H\311\270\344S\261\260u\241B\261\347\212xU\'\031\240\250\354h\002\212(\245\006\234\rH\246\244SR\253T\212\325*\265H\246\244SO\3158\034\321\232Pis\212p4\340i\300\323\301\247\003N\024\340i\340\324\213R\251\300\250\336\243\315\031\247\n\231*PjE4\217U\337\203Q\263b\242g\250\331\252\"\325\0335B\315Q3TM \025\003\2605\003\266*\273\266j\274\204\212\207\314$\323Y\351\273\351CsAl\232pj\211Z\244\315;\002\224qR)\024\222\214\257\035\2521N\025 \247\216:R\032\000\024\231\242\224\032x5\"\232\221MJ\246\244SR\251\251T\324\200\322\212u\024\240\322\203N\006\234)\324\341N\006\236\r<\032\221Z\244\335Lza\3068\244\024\3455:\036*@i\340\342\225\216EWaP\311\305Vf\346\232\315Q3Te\251\214j\007\252\316\rC\236\271\250]\372\324\005\361Lr\030Uv\030\250\230\323\013b\205|\323\225\275i\302Nh\024\240\346\236\265 \024\003@\2239\030\315\"\343w\315\300\247\034\003\3058\032x4\264\204SM&i\300\323\201\251\026\244Z\225jU\251\026\245SR)\247\322\322\321J)E<\032p4\271\247\003N\006\236\r<\032xj]\324\323I\364\247\n\224\034\npj\2205!|To \305V\221\352\2635F\317\305D\315Q3\324fJa|\323\030\344Ug\030\315Tr9\252\356\324\315\370\250\344q\332\243$\032\206F\3051_\013I\347`\322\371\340\016\265p\232\007Z\221H\247\223@\246\276\027\225<\323U\311\353R\016i\302\234\016)\300\321\232Bi(\024\365\251V\245QR-J\242\244Z\221jU\247\322\212\\\321Fi\324\341N\024\np4\271\245\rO\rO\rK\272\234\034R\202\r9y\247\223\232Pi\013\342\232d\250\231\252\027j\254[\232\215\232\230Z\240v#\245@\322Sw\344\3224\230\025RisU\267TNs\322\253\273\021Q\026\246\371\225\034\255\221\232\214\036)\214\334\324l\325\262M74\240\234\324\212r9\251\007\000\324\017\311\241x\251T\323\301\3158R\321\232)3J*E\251EH\265*\324\242\244\024\361R\003N\006\235N\242\2123N\006\236\r.h\315\024\271\245\rN\rN\335I\272\2245N\217\305H\264\342x\250\\\324d\323\031\252\031\033\212\256Z\230MD\307\024\322\303\034\325Iz\234TFP\243\336\253IrI\300\250\231\311\034\232\207q&\220\266\006*\0275\013TD\323$o\227\024\302p*&jh\311<V\306\354\323\t\251\243\373\274\323\324\323\363L#\212h\340\323\301\251\026\236)h\242\212QR\n\220T\213R\251\251EH*@i\302\234)\331\245\006\235E\024\242\234\r-\024f\2274f\2245.\3523OSS\257\"\236\246\225\215B\315L&\242f\250\035\252\026j\210\2654\265B\315P\263UIO\245W\315F\315@\340d\324,\331\311\250\213Td\323\r@\347\006\241g\315\0107\034S\300\330s\236\225\177\'4\365\251T\366\247\322\364\024v\244\305(\251\026\236)sFiiE8u\247\n\220T\212*U\251V\244\025 \247\001N\024\264\341J)\331\030\351IJ)h\242\2123K\2323@9\245\247\255N\215\305H\0174\3622*\026\025\021\025\013T/U\331\252&5\0335D\315P;TM\316j\244\200\255F\0334\331\037\013P\253dT.\374\361Q\226\244\335QHj#\3159\030(>\265\033=l\200\r4\360i\350y\251A\241\216\005,|\2574\273M \353O\006\244\007\024f\200iE:\234)\342\244Z\225jU\025*\212\221E<S\205(\247S\201\315(\245\243\351E\024Q\2323Fh\245\006\224\034S\251EJ\246\246\034\214\323\201\241\205B\343\025]\352\007<UF=j&j\214\265D\355U\334\323\013T/\363US\36256^V\241\034-B\375j3Gj\216R\002\324!\276Z\214\2754\265n\253\323\261\232p\030\251\001\247\021\305:1\201O\307\345L<\032)\331\245\006\224S\251E<T\213R\250\251TT\252*@*@*AKE(\247\np4\354\203\332\222\214\372\322\023I\2323Fh\315\024\271\247\003N\024\361O\034T\250\335\251\343\031\247\023U\345`*\243\275Ww\252\356j\0064\306\346\242cPHs\322\241-\353M&\253\3102i$\000\'\275@zsQ=ELv\300\252\222K\232a~*2\324\205\253l5L\215S)\315H\026\236\005=W\025 \034SY8\250\250\247\nu:\234)\342\244QS(\251\224T\252*@*E\024\360)\333h\305&)\302\224\nZ)\246\212L\014u\244\242\214\321\232Pi\300\323\203S\203S\301\251\024\323\303\363C>\005S\226L\232\256\355P;T,\325ZG\346\243\3631Q\273\347\2450\236*\273\2674\200\346\220\214\232c&[\223\300\250g\340qU\230\361P\261\305C/CU\030b\243&\233\232ij\334\006\244SV#j\264\234\212x\342\244Z\220\nR\274Ug\034\361M\245\025 \024\243\255<S\300\251\026\246AS\255L\242\244\002\236\005H\242\237\212LQ\266\227m\030\243\024b\223m\030\246\220;SN1M\242\214\321\232]\324\340\324\340\324\360\365\"\267\024\026\346\221\334m\252r?5\0135@\355P\263\324\016rj\007\342\242\3630y\241\233\212\205\201\355LRKb\207s\273\002\230M5\210\306\rVu\306qP7Z\205\370\252\322T\004\323\t\246\223[\240\324\212j\304f\255!\251\001\251Tb\246ZRj\263\016i1@\024\360)\300S\200\251\000\251\024T\312*e\0252\324\242\244\025\"\212~(\305&\3321K\212LQ\2121AZiZa\\\347\024\302)\244RQF}\350\335N\rN\004\324\212\330\034\323\032L\232Fo\226\252\273TL\334Uy\036\253\264\225\023I\3151\233\212\254\347\232M\365 \341y\250\207\031\367\246\232k\032\201\330\223M \221PH*\263\236*\263\234\325v<\323\t\246\223[\252je5<ue\017J\235je\247\203J\307\212\212\214R\201J\0058\nx\025\"\255H\242\245QS-L\242\245\002\244\002\236\253O\002\235\2121HE!\036\224b\226\214Q\212\n\324l\246\242a\212a\024\332C\326\233\2323N\006\246Zk\266*\271~i\314\374T\016\325\004\217U]\352\274\215U\313\234\322o4\3269\246/Z\224\266\0056\243s\212\215\232\243=i\340qPH9\252N9\301\252\257P7Z\210\232a5\274\225:\212\236:\262\274b\254!\315J)CzP\\\343\030\244\034\322\201OQN\333N\002\236\005<\n\221EJ\242\245QS(\251\224S\300\251\000\247\201N\305\030\244+M\305\030\244\245\006\226\202)\244TN9\310\250\230S\010\246\232i\024\224\245\200\245\022\340To&\352\217<\3223\361U\336LUg\222\240y*\006z\205\233&\233\272\215\331\247(\346\234\313\315\025\024\234\232\204\365\245\305/j\205\272\223T\346\0309\252\255\311\252\362pj\003Q\265t\010*\302\234T\250j\312\363V\022\236\030\032\025\261\320\323\363\221\3159O\030\247v\247(\247\201J\005H\005<\n\221EH\242\245Z\231jU\251@\247\201R\001K\212)\r%&(\305\030\243\024\021HEF\313Q\262\324ei\204S\010\246\261\305G\313R1\300\342\233\232kTL\330\252\262\2775Y\332\240f\250\331\261Q\026\346\233\236i\353SD2j}\234\234\324.1P=DFi@8\305(\004\214\nc\256\336\265NnsU\010\353U$\250MF\325\321\"\032\231S5*\200*\302\234\nw\231\330S\303\032r\232\225NjAO\024\361O\024\360*@)\341i\340T\212*E\025*\212\231jU\025 \024\3608\245\"\223\024Q\212m\024QK\232Ji\024\302\276\225\031J\214\2550\255DS&\221\206\321Q\221\232\002b\230\342\252\313T\344\252\256j\022\365\013\276M34\n\231*\314?xU\2228&\253\311\336\25352\227\034qD|\212\216j\243%@zU\031\206\r@M1\253\250\351J[\002\205j\231Z\245S\353S)\030\251\027\232\221V\244U\251\025\rJ\261\232\221b&\236#5 B)\352)\340T\200\n\221EJ\253R*\324\200\021\326\236\265 \024QHE%!\024\224QKIE4\212i\024\302\275\351\205i\206<sP\310\274\323U;\320\303\002\240\220\3259\0175NS\212\246\3475]\215DM%*\324\351V\242\030\"\255\0221Ue\252\315M\357OQH\027nj\031\252\224\225]\370\252\322\256j\243\014\032\214\327LOzhl\232x52\232\225MJ\2652\232\235MJ\246\246Z\225EL\2652\212xZxZ\\{P\024}*@\247\352)\340\343\255L\2305(\024\270\245\315\031\245\242\220\212Ji\030\242\212L\321\2323IHi1\232k\014Tl{T/M\350)\215Ue5Q\352\224\334\232\252\374T\014)\204S)\351S\'QV\242\346\245|\214\021P?5\023-DF\rH\2074\3622*\244\243\004\212\251(\346\252\311P\236j\244\313\203U\315tE\363J\265*\212\231jU\034\324\312*eZ\231T\324\310\246\247U5:!\251UjP)\342\236>\224\341N\306h\000\216\224\340\304u\251\025\324\366\305J\030v4\241\251w\212p#\265-&)(\244\'4\224\021\232m\024\231\245\315&x\244\007\0249/\315DEDW&\220\214TRUIj\243\203T\344\035j\263\212\205\2051\2050\255*\212\235\005X\214\342\236_\327\221Q1\007\245\'Z\214\216x\247\001\265M&x\252\322\034\346\251\310j\273\212\200\214T2.\341U$\\V\332\324\253S(\251\224T\313S\245N\265:T\350*t\025:\212x\031\247\201N\002\236)qJ)\334\322\322\201N\024\365\315H\006i\333\005.\334t\244\311\024\231\245\315\024\322)\264QHi3I\232:\322\206\300#\035j3M\353LqU\336\253H3U\334dUI\022\252\310\265\\\212\217\0314\2453@J\231F\005<u\247\3435\013\251C\354h\246\363\221J[\203M\317\006\253Jj\253\014\324.*\"\264\306Z\253*f\264\326\245Z\231jU5:\324\351V\022\247AS\240\253\010*e\247\212x\247\016\224\372p\024\340)\300R\205\247\205\245\013O\013O\002\235\212Z\nR\025\244\331\355M \212NM!\024\332)\247\336\232i@&\244T\241\222\233\345\226\031\364\2462\355\250\330T\016\271\250\031*\273\307U\244N*\244\211U\236:\214G\315?e\033iqKO\007\212d\274\212\214PG\024\303L\317\006\240~j&\025\003\212\205\2054\212\201\305\\SR\251\251\222\246J\235*t\253\tV\022\247J\260\225*\324\213N\024\360)\340S\300\247\201N\305(\024\340)\340S\261O\002\234\026\245H\367\032\227\311\002\232\321q\3050\307\216\325\033% \212\220\307\352*6OJn\332c\n`\0252-HN\0054\363H\006\r1\223\'\232\215\223\025\031AQ2\n\255\"\325YW\345\252\016*\026\031\244)\307\024\230\246\342\232x\240\034\322\366\246\236\234\322\001JG\025\021\025\031\351L+Q:b\253\270\252\357L\353Q\270\251\301\251\226\246SS-N\225a*\302U\204\253\tV\026\244Z\221i\340S\305H*@)\352)\370\243\024\340)\300S\300\247\252\324\251\036MXU\300\247\342\232E4\212\214\2504m\024\233i\245\001\246\030\207j\201\3415\037\226\300\323\324\021\326\220\344\232r\255;\024\240T.\274\324\0141P\260\252\356\265^Q\305Q\2219\250\n\321\212iZ\215\306*#J\253KH\302\231F\354\212k\n\214\n1\326\242q\315V\225j\233\216i\240b\243z\225MJ\246\247J\231*\302T\351VR\254%YJ\231jU\251\001\251\026\236\242\236:T\252*@;\323\326\227\024\340)\301jEBzU\210\340<f\247\010\007\002\234\022\224\2454\212a\024\314R\n\r7\255%\004\003M()\245)\246:M\270\246\232BqL$w\353Q8\025\013\255V\222\2538\315U\221sP4t\2051L+Q8\3153e.\321MaM9\"\230E ZR\271\024\2018\244+\324T2.*\254\235\rTu\346\242#\025\023sOJ\231jt5:T\350*\312\n\260\234U\2048\251\325\205J\257R\253T\200\324\212jE5*\232\221MJ\265 \366\024\242\236\242\245U\315[\202<\014\232\225\260\243\212\022\246\002\224\364\250\030\363Q\223LcM\3154\232L\323wS\201\342\214\321\232ajN\325\031\036\224\326\250\315F\325\013\232\257%VcQ5Bi\244f\230\313Q\224\246\221L\"\230E0\214\322\021H\005=W=\2516\342\232G4\307\213p\342\251I\0363\232\253 \252\354)\205i\026\245SS\245X@j\302\n\262\203\0252\324\352jU5*\232\225MJ\246\245SR\255J\265\"\324\252}j@\376\224\345\253\021\256j\312 \0258\245a\220)@\305.\354P[\212\211\215Fi\246\232i\246\232M0\365\247\003JM74\003\203\315)!\272P1QH3\322\240\"\230\302\241aP8\250\031j\007J\205\201\024\332\017Ja\031\250\330TdTl9\240-!\024\3209\251T`R\021L+\221M?v\252\3123\232\246\351\315B\321\346\242d\250\026\246A\232\261\032\325\244\025:T\313S-J\246\245SR\251\251\226\245Z\231jU\251TT\252)\364\340*E\025n\016\225d\032z\232\225H&\236j2)\246\2434\001M4\302)\270\342\230E4\212i\310\240\236)\205\216i\300\322\346\214\323\032\242jcT-\315B\3035\023\n\211\226\241d\250\312R\025\246\025\2462\346\243\"\231\262\224\255F\303\024*\323\310\307Zn3F*\'\\\016*\273\256E@\361\324-\035D\351Y\351VPU\210\352\302\324\252jUj\221Z\246SR\251\251\224\324\313S\240\251\324T\312\2652\212x\251\000\247\205\251\000\253p\217\226\246\013O\002\234\016\r.\352\\\323MFi\r\'ji\246PE0\323M0\323\010\244\316)CS\263\3055\215Fj&\250\332\243j\215\206j\"*2)\245)\245)\214\225\023%0\245\0331Me\250\331h\013M#\'\232\\\036\324\214\204\014\323\010\312\234\325r1Q\260\317Z\211\226\240u\315e\240\251\320U\204\310\251\224\324\213R\255L\246\245SS\245N\225:\n\235\005XAS\250\251Ui\341jEZ\220\n\225S5f5\300\346\246\006\2349\245a\3050\032\\\322\023L4\207\245(\2468\364\250\311\246\026\246\226\2439\246\236)\206\232E\002\234\r\006\230\334T/Q\036\264\323Q\232k\014\324eh\tF\332c\257\245B\313L+M+\212a\025\031\034\323H\246\323\227\255\0142)\254>^\225Y\205D\302\241qU\333\203Y\310\2652\216\225*\324\253R-L\265*\324\310*\302\n\260\202\254 \253\010\265a\026\254\"\325\210\342-\322\245\3733c4\2331OU\251Pb\254\257LR\201\315H\242\211\016\005C\272\227u4\232J)E-0\250\250\331*2\224\241i\214)\230\240\212LR\205\240\212\215\252&\025\031\024\302)\204SqM+J\005!\024\3223P\262\323\n\342\232EF\313Q\221L\"\232V\2000i\3148\342\230\303+U\330Tl*\t\005Wu\254\325\034T\253R-L\265*\212\231EL\202\247AV\021j\302-YE\253(\265a\026\254*\325\210\320\366\253pr\n\277J\212E\033\270\024\005\247\201R\3069\251v\363OQQK\311\250H9\245\353IFh\315\000\323\201\243\024\230\315!Za\025\033-7m&(\305=S\"\221\226\242e\250\331j&Z\211\205F\302\233K\214\212\000\241\205FE4\212\215\226\243\"\232ED\313L+M\"\220\214P\t9\305\005p\rVa\315F\303\025\013\014\324N\225\222\005=EJ\265*\212\231EL\202\254\"\325\204Z\263\032\325\224J\262\211V\021jtZ\2361\310\315\\\014\252\240/Z\025\210<Q\214\320F)sO\214\363V\200\340\032x\030\025\013/4\322\242\230V\232E!\244\242\200i\342\236\006h\333\315!L\324n\225\036\312iZLsR\240\244aP\260\250\210\250\310\250\312S\031*\"\224\230\305\000\320Ni\244SJ\323\010\250\330S\010\250\310\2462\323\010\244\333\232ENi_\345\004Ub*\026\246c\232\032<\212\300\006\244Q\232\225EL\202\247AS\240\253(*\302\n\263\032\325\250\326\254\242\324\352*U\0252T\242\244\024\374\322\023\232J\2325\357V\024\361O\3154\256i\245i\204S\010\246R\021\2121\305 \034\324\2128\247S\363\221F)\031A\250\331*2\224\302\264\345\024\244TL*\026\024\322(\331\232C\021#\245E$[G5Y\206)\270\315\030\244#4b\243aQ\232a\024\322)\2148\246\025\246\221GN\225\013\222MD\302\243+M\013\3159\206\005sj*U\0252\212\231EL\202\247AVPU\230\305Z\214U\250\326\254\242\324\312\264\361R\251\247\203O\006\235\272\2234\344<\325\264\344\014T\341x\245\333N\333Me\250\210\2460\250\332\243&\223u\000\346\236\r<\032}8R\342\223m#%DR\200\230\246\260\250\331j&\024\300\265,i\223S\004\030\306*\033\230\376Z\314t\346\243\306(\245\333I\214Tl*6Zf)\244S\010\246\221M)\221Q\343\002\243aQ\260\250\312\321\216i\262g\025\316\250\251Uje\0252\212\231V\247AVPU\230\305[\214U\250\305YQR\n3O\006\236\r<S\351qOU\253p\203\212\264\2434\340\224\3420*6\025\021\025\023\n\214\212c%0\255\030\305(4\365\251\001\247\346\234\r8\n\220 \"\243h\361L)Q2\324n1P\232@*P=)\335\2529\016\340A\2522\2475]\3053\024\365\031\244e\250\210\250\310\246\221I\267\"\230\313L\305\0140*\006\246\021Q\260\246\204\'\240\245\331\216\265\004\247\002\260UjUZ\225V\246U\251\325jdZ\262\213VcZ\265\030\253IS)\247R\212z\212\221EH\005<\n\221V\246T\251\223\345\251C`\325\205pE\014)\245i\214\265\013-D\302\233\212B\264\322\264\3221FiC\322\371\225*6je5 jBsHF*\'\"\240a\232\211\226\243\350jT4\346\2467J\255(\252\222\n\212\244Z\030TL\265\031\024\303I\315!\024\322\264\306\034T\004S\010\246\225\245\215y\311\244\223\212\245)\306k\031V\246U\251UjeZ\231\026\247E\253\010\265e\026\254\245N\265*\323\300\247\205\247\201R-H\242\244QS\242\324\341qMn\r9[5*f\247\316E(\244a\221Q2f\241d\3057m\033i\245j\027Z\214\323y\240\023R+\021R\254\206\245\022R\031h2f\230Ni\206\230\302\230V\234\274S\310\342\242j\201\352\273\214\324%piV\202i\206\230\302\243\"\223\024b\232\303\212\215\272T$R\005\243\313\356hn\007\025VJ\25175\230\253R\252\324\312\2652-N\213S\"\324\350*\302\n\235EL\202\247QR\205\251\002\323\302S\202\323\300\251TT\351\305L9\244d&\205\201\210\310\025*#\016\2650\024\243\203A\2445\023.i6Q\345\323\031*\026CP\262Rm\246\221\3158-/AFx\244\0074\271\245\245\353\326\202\264\322\264\233i\370\342\241a\315B\300TEj\007^j3M&\233\232\t\246\342\232E&)\2568\250H\246\021@\024\343\322\243qU\234UIEg\252\324\252\2652\255N\253S*\324\352\2252%N\253S\242\324\312\265:-L\253R\252\323\302\322\343\332\200*U\025*\212\261\027$U\305\010\247\347\0314\327\230.Dc\203O\211\303\2140\0242m84\321\212\221c\315+[\236\324\337 \322\371\036\324\206,Tm\035@\311P\264u\013Fi\233M\024\322i\t\244\315(jx4\341J)i\244\ni<TOQ0\250\332\243e\252\3561Q\323H\240f\214\342\221\2104\001L\177AQc4\322\224m\305\014*&\025\003\214\325i\022\263\324f\246U\251\225*tJ\235\022\247T\251\325*eJ\231\022\254\"T\312\225(JxZp\024\355\264\241jEZ\224-H\274T\200\223R\004\006\244H\361Sc\214\036}\352&C\236*xP\236\247\025q\023\324\212\220\306;\n\215\242\250Z:\211\343\250Z:\211\243\250\031=\252&\2175\023\307\212\205\226\230E&)@\247\250\251\002\323\200\3055\251\271\244\250\332\243aQ\221\3155\207\025\004\211\232\204\256)\207\2321M\"\224-+\014\n\204\212n\332wjk\nc\n\211\206j&\025^E\254\364J\235\026\247D\251\321*tZ\235\022\247D\251\321*uJ\235\022\247T\251\002g\245)\214\257ZP\264\270\245\002\245QR*\324\201i\301i\342\245V\305<\267\245\033\260*H\334\032\2345H\256A\342\247\014\030r)\214\202\241h\352&J\205\343\252\354\224\302\225\023\307U\335*\022\264\335\264\340\265\"\2558\322c4\322\270\250\317\024\335\324\204\346\232V\242e\3050\323\030f\242t\364\250J\320E7\024\360\000\246\260\334*=\264\355\235\351\254)\245j&\025\023\212\205\215B\346\251*T\350\265a\022\247T\251\321*\302%N\211V\021*tJ\231R\245\tR \301\342\234\371f\344Rb\223m(Z\225EL\213\232\235c\315N\220\257\361\032kE\203\305FW\024\240\361Mf8\250\304\205\032\255G85:\316\007z\221nTT\242ezL\212i\025\033.j&J\215\243\025\013GU\244J\252\353\212\217\024\341\232\224\003F(4\306\250\332\243\"\201\326\244\n\rG$uY\306*2\336\264\322\300\212\205\210\246f\216\364\356\270\024\366A\267\212lj6\234\323\037\212\214\323I\246\032\205\305V\220Uv8\250\343Z\260\211V\021*\302%N\211V\021*\302GS\242T\312\2252\245J\022\236\251\203\234T\205\001\034\365\246,T\246:M\264\340\2652\014T\352jU\004\364\247b\232S4y&\230\321b\243h\201\246\204\333FqNQ\223\315Y\215\200\351S\357\243}\005\263M&\230\303=\252\026\025\004\213\236\325\t\267\334y\240Z\001A\267\307Ji\217\024\335\224\205*2\264\306J\205\2050\361M/\216E\006\347\214\032\247<\343\265Q{\203\353Q\371\344\3654\276a=\352T9\251vq@\0304\374\346\225z\232c\255B\303\025\031\250\311\250\335\252\274\225U\372\323\343Z\262\213\232\260\211V\021*\312%XD\253\010\2252%N\251R\252T\312\224\361\035/\227JW\035)\273sF\312P\230\247\001\212\220T\310\330\251G\315\322\230\310A\245\010\330\344\322\265\273c \346\243\020\261\353R\01029\024\306\266\3054B\001\346\244X\300\350jQ\037\024\306LS1\351F\342(\363=\251\013\2554\225\365\244\033OJB\0054\201Q\262f\231\262\232\313Q\354\315C7\313\300\252\304\346\243~*\244\262b\251\311>*\263;9\342\230\310\330\252\316\305\r\t6MZ\216J\271\034\231\024\245\250\006\244\003\220hqP0\250\230T\rQ1\250\034\325g\025b1V\343Z\262\211VQ*\312%XD\253\010\225:%L\251S*T\213\036j@\224\375\224\236^iD4\030\351\276]\'\227J#5\"\241\025*pjl\202*\t\t\3155e`q\232\23599\315XQK\260\032cB\rG\345c\245(CC\naQ\351Q\262S\n\232aZaZiZL\021J3\336\227\024\230\246\262g\2655W\373\302\251\\\217\234\342\252\234\324o\310\254\371\301\346\251\030\231\317\025n\336\323\035EZ6c\035+.\356\307\004\220+5\241dj\221\033\025f)*\312\266i\300\346\254 \312\212V\217#5\013&*)\026\252H*\273T\rP\275[\214U\270\305[\215j\324kV\221*\302%XD\251\321*eJ\231R\244\tR\004\247\204\247\010\363N1\2208\024\303\037\255\001\005#(\355H\006(\357J)\313\326\207L\324b0O&\254\306\212\243\203\223R\201N4\337\251\240\342\231\232Ni\254*\")3\232FL\364\250\331qL\"\233\212\220 \3051\227\024\231\2434\202\241\232\000\340\234sY\322&\302EU\220\342\241\333\270T\220\300\255\332\256\307\000\003\201S\030A\035*\254\366\201\201\342\261/l\366\202@\252?g;rE5\020\206\255(-L\213\220y\241\340h\31755\271\347\006\247t#\351P2\324\022-T\221j\254\202\253?Z\201\315_\214U\270\326\255\306*\344B\255F=*\324kV\021j\302%N\251R\252T\201)\352\231\251U)\341y\241\200\355Le\246\021\212n)6f\202\270\246\322n\"\233\274\232o9\251\341<\363V\326\224\212L\n\215\200=)\002\232\017\024\322\302\230j2)\271\"\232Nz\323)\010\346\246P1Mq\223Q\342\223m.\312\n\341O\025\233p\233\311\300\252o\006:\324\"\"3V \214\203W\221x\247\221Q\262\346\252Ml$\353U\215\222\200F*\224\226![\345\025b\010\031\007\024\351>a\206\034\325`\233_\"\254\261$sP=@\342\253H\265NQU$\030\315U\220\326\254kV\343\025j1V\343\025j1V\243\253Q\212\262\202\254\"\346\246U\251U*UJ\220 \240\2554\2554\2550\2550\256\r7\034\321\203M\"\230V\223e(\2175,i\203V@\247m\3155\206*<sA\351\311\250\330\366\024\334f\215\206\215\206\230\313P\225\246\221I\212\221\006N)XsM\333N\tK\267\035i\030\006\025VH\324sT\245\000\232j\302\032\245\020\340\323\300\305.(\3050\256j3\0350\302\t\311\024\024\000t\252\362\301\225$U=\234\363O\"\242a\305WqP8\252\262\255P\230U9\005l\306*\324b\255F*\334b\255F*\312\n\264\225e*\302\n\260\202\247QR\005\247\001A\024\204Sv\323v\323YsL)I\262\220\245FiUsR\025\013J\204T\200\212]\300R3\203Q4\212:TM \365\246\207\006\234$\002\227\315\364\244\336M!\031\246\225\024\323\036j2\244R\253m4\343\311\315(\245\310\025\013K\223@\220c\025^c\232\250\312I\253\020\307\305LS\212a\\\016)\204RSM\024\322)\244TdsPK\010\373\302\241)\305@\353P2\324.\265ZE\310\252\023%R\221+^1V\243\025n1V\243\025f1V\220U\204\253\021\212\264\202\254\240\251\324T\240R\342\214R\021I\266\220\2554\214Q\2674\322\224\306\035\251\236^i\215\307J\211\331\2155d\"\236\327\001G\0315\013]\023\320SE\303w\244iKv\241\010\357R\0021F\352PsOZ\220\014\323YiB\346\225\320\001\223U\037\031\371i\013\343\251\246\231\207\255Ff\31579\247\n\n\347\265\036Ni\352\233zS\261H@\250\230\n\215\2522Nx\244\335FsHi\206\232j7@j\264\221\343\245Wt\250\035}j\264\211T\345\216\251\274y\257\377\331" +byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\004\255IDATx^\355\335\321\226\2338\014\000\320\036\372\377\237\2749{\232m\272\035H\006BlcI\367>2\t\030ld\311$\231\037?xfYo\000\000\000`\210\217\353\261\345\343=\300\264n\353\rl\010\001\000\300\347E\005\000\000\000\031<\312Ck\353\000\000\000\323\363\204\017\020\t\3302&h\303H\342\210\233g\t\000\000\300d\324\263W\370\2738\324\003\000\000\000@0\341\2273\302\237\000\000\000\000\260\021\355\307\342\2075\3277\030\000\000\200\234\326eU\344\352g}.\ru\334\365\305\362\236\031\000\000\000\007(\013y)\362\"\021p\206)\201\277\231\005\240\004\241\237\223\226\237\353-\320U\343h\325xw\034\"\273\004\000\000`\237\352\221.\014,\200\227\254\227\003\000@1\212\000\000\000\n\363\330\020\000\200\272,\016\003p\221\321\0132O\247\274\345K;n\267\321\215\002.\36642\000\000P\213J\020\000\306\2122\367Fi\'=X6\204h\304l\310\313\375\235\314\3414\353\360\013\001`\2079\005\340MY\002\347\222\345D \367\037\000\000@2\236\333G3\2602\367\273\014\274\305x\201\310\334\301\000\014a\302Ii`\225JSz\016\000\200\246$\230\305\031\000\000\025\025X\360Mv\212M\347\353\246;\003\372s\323\206\240\233\000\n\032Tt\014:\014\2632\000\000\000\000\240\252\343\217\036\254\037\000\000@\025\235\263\377\316\273\347s\307+\305b:]\230N\273\2459=\005\000@8\007+p\271nZ;\377;\360\373\277\002\344\'\016\262og2\005 \253I\342\377\301\262~>a\033\036\322m\226\361\n\220B\2429\314\364\000@\017\346\027\222J\224\005\002\000\345\311l\000\302\020\262y\305\032\034\000\000\364%\347&\224\027\013\010}\307\361\355\353Q_\264\001\250\304\267l+\373\325\371\006\000\000\344\243\324\203\000$\342\000\360\006k\230\000\033\277\213\177\0012\000\235\004\225\211\000\000\000\344\341\203\010\331\254z\364Q\276\334\326\3376\340\177\313\372\252Q\315\310\001`I\001\000\270\222\\\204\211\030\216\343\214,y\016\233\262Q\326N\200\234\3046\000\210\310\014\376\233\013\221\307\234KAs\266\n\262\021\313\001\000\230\205\334t\270 \227<H3\001\000\000\346\263}\340\252\304\002\250\314\017\214\027\267\374\\o\001\000\312\220\010\002\000\000q\251h\342+\327\207\345Nx\207\353\001@j&:\200Wr\177b9\367\331\3255\240_\007\034\3423\235s\233\315\3567\033\022\230\276\223G\312\330\301\234g<\000\000$%\321#\261k\213\374k\217~R\310FS\324}\3762\211\001\300\365\244\220\314l|\2768\376\210@\024\342\003\000\000\314\302z\026\000\000\000@\024Vr\000\000\000\000\000\000\000\340n\211\366]\345h\355\005\000>g\376\207\366\334WD\341s\337\245\351\376\016\"\305\177\003\240\270\267\007@\244\321\3153\341\026\252\001\242y{n\005\030\357v}\254\272\276\005\000\000\000\000\000@X>\376\002P\234\'\316\347\334\\:\000h\313\314\n\000\205\230\370\001\000\200\231\004\371\350\214R\252\270\t\276\316\016\000\000\000\300\033,\347\0009\210f$\026\344!!\000\320\310\005\037\274\270\340\220\034!\017\344\356\327\r\372\317z#\005\374\t\315\213E\017(h\221\007@I\2339\177\263!\006\021\254\021\027\222\347\202F\006\336%\004\024g\000\000\000\360\214<\021\000\200\324<\002I*Q\307\216/\312\336:\342[/&\212D7\020\224&DCY\207\277\010\262\010\024I\035\034\000\000u\325\230\001\217\235\345\261W]\250m\276b\216\004&\3264\336\001\334\265M\245\276!\313\232\323\260\001\300\\\222\335\220\311N\347\205\0067\353%\027\252\347\017\0076\270&\000\325\010\235\000\274\3201q\'\262O\006\306\355\243w\037\361\310ld8g=z\250wO}\357K\377\035\353\314c\257b\353\332\256\006h\313l\000@\006r\364}\3679\337\205:)\370\205\013\336|`\000q\002\000\370\236\222\362S\255\027\342?\351\214\263\357=\373>\272h:\244\364mu{\303\311\010\231\220N\001\372\370oJ\330\233\030\200\224\"\244\027O\303S\204\206\267\223\366l\307\235\330\270#\r\326\363\267\007\000\000\000\370c\306\352\353\374\217^.\347\337\032\315\214\035\007\227+\023\001\000\000\330\220\013\326\266\314\264 0OKz\362<\037\000\340b\023\344c\0234\001\362\333/\276j\024\241;\016\\\204\307K\376\005s\343\23463\025f\327\000\000\000\000IEND\256B`\202" diff --git a/core/res/geoid_height_map_assets/tile-3.textpb b/core/res/geoid_height_map_assets/tile-3.textpb new file mode 100644 index 000000000000..486adf4a5842 --- /dev/null +++ b/core/res/geoid_height_map_assets/tile-3.textpb @@ -0,0 +1,3 @@ +tile_key: "3" +byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\004\003\003\004\004\003\004\005\004\004\005\006\n\007\006\006\006\006\r\t\n\010\n\017\r\020\020\017\r\017\016\021\023\030\024\021\022\027\022\016\017\025\034\025\027\031\031\033\033\033\020\024\035\037\035\032\037\030\032\033\032\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\364/\245.\352pz\225d\247\356\3151\316j65\0314\302i\245\251\244\323sFh\315&h\315\004\323I\246\223M\335HZ\232M4\232ija4\302i\204\324d\324d\323\t\250\311\246\023Q\223Q\263TL\325\0235D\315Q3T,\325\0135D\315Q\263T,\325\0235D\315Q\263Te\251\205\251\244\323I\244\315&h\315\031\242\2274\240\323\251\300\323\201\247\003R\242\223Vb\212\264!\213\025\353E\251\245\250\017O\017R\007\247\026\030\037Zk\032\214\232\215\215FM74\233\2513K\232L\321\2323M&\232Z\230Z\233\272\220\2654\232ijijaj\215\215FZ\230Z\243&\243-L-Q\263TL\325\0235D\315Q3T,\325\0235B\315Q3TL\325\0235D\315Q\263TE\251\205\251\204\323I\244\315&i3Fh\315.isJ\r;4\340i\302\245E\315[\215*\364H\000\253I\355^\231\276\223}\033\351\341\351\341\351\301\363O\334)\215Q1\250\211\244\315&h\315\031\2434f\220\232ijajaji4\335\324\026\246\026\246\026\246\026\246\026\250\331\2522\324\302\325\0335F\315Q\263TL\325\0235D\315P\263TL\325\0135D\315P\263TL\325\0335D\315Q\263Td\323\t\246\223M&\2234\204\322f\214\322\356\2434\240\322\203O\024\361R\242\022j\334q\364\253\221\307\264d\325\204\253q-z\000z7\322\356\245\017N\017OW\251\003\346\235\2735\033TML\315\031\2434f\214\323sHZ\230M0\2654\2650\265!j7S\031\2522\325\031jaj\214\265F\315L/Q\227\250\331\252&z\215\236\242g\250Y\352&j\211\232\241f\250Y\252&j\211\232\243f\250\213S\013S\t\246\223M&\232M7u!jM\324\233\251A4\360\rH\020\323\304u\"\305S\254F\254\305\016:\325\250\323\025co\002\245\215*\344K\212\355\003\346\215\324o\305(\222\234\036\234\036\244Y*P\371\240\267\025\0214\302i7R\346\214\322\023M&\232Z\230Z\230Z\230Z\232Z\223u\000\323\034\324L\325\0335FZ\243/Lf\250\231\2526z\215\236\242g\250\331\252&z\211\236\242g\250Y\252&j\205\232\242f\250\231\2526j\214\2654\2650\2650\2754\2653u\031\247\005&\234#8\351J#5\"\307\355R\244C\275N\261\217J\231b\036\225*\305R\004\002\244QSF9\253\210\231\253\021\307V\022:\350\326Jxz\013R\007\247\007\247o\251\025\352U\222\244\017\221\3150\236)\204\323wR\206\245\335HZ\232Z\230M0\2650\232ajijM\324\233\261HZ\240s\212\211\232\243-Q\263Te\2526j\211\232\243g\250\231\3526z\211\236\242g\250\231\352\026z\211\232\242f\250\331\252&j\214\265F_\024\302\365\031~i\013f\232h\000\232\235\"\365\253\t\037\240\251<\272M\230\355O\013OU\315J\253\212\235G\025(\034RT\252*\304K\315^\215j\312%YE\2550\324\360\324\355\324\205\2517\323\303\324\212\365 zx\222\234\030\021McL-\315\033\250\335HZ\220\2650\2654\2650\2650\2654\2654\265!jaj\215\232\240f\305F\315Q\226\250\331\252&z\215\232\242f\250\331\252&j\215\232\242f\250Y\252&j\211\232\243f\250\231\2526lT,\377\000\205F\\w\246\347=)*EJR\242\204Q\232\262\007\313V\020p)\370\243m(Jz\256\rJ\027=*@\265 \024\273y\251\221j\314C\025v<U\250\326\254*\325\260\330\245\337K\276\221\244\246\357\247\253\324\241\351\341\351\302Jz\311N\337\236\264\306<\323wQ\272\215\324\322\324\322\324\322\324\302\324\322\324\302\324\322\324\322\324\302\365\0335B\315Q3\324l\325\031j\211\232\243f\250\231\2526z\211\236\242g\250\231\252&j\211\232\243-Q\263TL\330\250X\236\246\242f\246S\200\245\035j`@\024\335\324/Z\234\036\225j#\225\251@\247\201O\013N\333O\214`\324\333)\300S\202\232\231\026\254\"\036\325b4j\271\0225[D\251G4\326\342\243/Az@\364\340\365\"\311O\017K\346S\326J\225d\343\024\026\244&\233\272\215\324\205\251\013S\013SKS\013S\013SKS\013Tl\365\033=D\317Q3\324e\3522\324\306j\205\232\242f\250\231\3526z\211\232\242f\250\231\2526j\214\2651\232\241rs\234\324li\206\223\034R\321N\240T\2129\253\n\234f\255B\277(\251\302\323\302\323\202\324\252\225(\216\236\026\244T\251\026*\263\025\271n\325r8\002\216je\n;T\311\364\253Q\256j0})\254j\00684\335\324n\245\335N\rR\007\247n\245\337OY)\341\363\212v\352Bi7Rn\246\226\246\226\246\026\246\226\246\026\246\226\250\331\352&z\211\236\243g\250\331\352&z\214\276)\245\352\'j\205\232\242f\250\231\2526j\215\232\230A=x\250\233m0\342\230Xv\024\302F*&\344\323H\243\030\242\212QR(\251Q7\036*\340N\000\253\010\230\002\246U\251\002\324\212\225*\245J\022\236#\251\243\2135j8=j\342\"\250\342\2022i\311\035Y\215*\324Q\346\250\253qC6*\t\rE\272\200\324\340iA\247\206\247\006\243u(|S\325\352@\371\247o\365\246\356\315!8\246\226\246\026\246\226\246\026\246\026\246\027\250\331\352&z\205\236\243g\250\231\3526z\215\236\233\277\024\326z\205\232\241f\367\250\213{\323I\035\3114\302\303\265F\315Q\026\246\223Q\261\246\3474\206\220\2121I\2121N\002\245E\315[\202*\274\261`\n\225R\244\013\212z\256juJ\220-J\251R\252U\204\001G\275N\274\324\240b\225FMX\2162{U\350\255\275j\354p\001\332\271\250\344\342\234NEA#qP\226\240=<58\032pjvh\335F\352]\330\247\253\323\374\312R\340\323Kb\232Z\232Z\230Z\230Z\230^\242g\250\231\352&z\211\236\2432TL\365\031zc=3}1\244\250Z^j6\222\241g\246\357\365\246\226\246\026\246\026\240\364\250\311\244\315-\006\233E\030\247\250\253Q%^\211qV\224t\251\200\245\013\223\305N\211\212\231S5 \216\244T\253\010\234T\211\036MXX\352d\2075a QV\243\214/AV\343Bj\322%p\361\276j\300<T,x5Y\233\006\2205<=H\032\227u;u\033\251CR\356\245\335K\272\215\324y\224\205\275)\205\251\245\3526z\215\236\241g\250\231\352&z\210\275F\317Q\227\250\331\3522\364\322\331\250\331\261P\227\250\231\371\246\026\246\227\246\027\246\227\244\335Jd\342\233\232)\331\242\214R\221@\031\251\243J\273\nU\245\\T\350*`8\247\242\022j\334QU\205JxJ\221c\251\3250*x\343\346\254\254u:ES\244&\255G\020\035j\302(\035*\312-y\324G\275YS\221Ls\214\325)\033\006\232\032\234\032\236\257R\256[\245\004\225\353F\374\322\206\245\rK\272\227u\033\251\013\323K\323K\323\031\352&z\215\244\250\231\352\026z\211\244\250\331\3522\365\031z\215\236\243/F\372\211\3335\013=F\315\3150\2650\2654\2654\265&\352]\324\341\203E8\032x\245\245\0035 LT\211\326\257CVUsV#J\262\261\324\311\035N\243\0252.j\312G\232\220%H\251V#\216\255\"U\204CV\0251R*\223V#\216\254\252W\230F\370\253\010\364\216sT\346\353\232\213u(jpz\265o2\251\371\205\027\022\2536W\212\204?\255H\036\227w\245\001\350\337AzizB\364\306z\215\244\250\232J\215\244\250ZJ\211\244\250\232J\214\311Q\263\324e\3526\222\230^\200\364\307z\201\236\230Z\230Z\232Z\232Z\2234\231\2405<58\032x\247\216i\336\302\246ARb\205\034\325\270Z\257C\315\\\215j\312\255<\014T\321\256j\334q\364\253J\234S\325*t\216\254$uj8\352\312GR\210\352DJ\260\211V\021+\307\204\236\2254sv\251w\346\240\224\344Um\324n\247\006\245\337H\\\232\262>h2G#\275F\262T\233\3517\373\322\356\244\337H^\230^\243g\250\232J\211\236\242i*&\222\242i*#%F\322TfJa\222\243/M/F\372c\265D\317Q\226\246\226\244\335F\352L\323I\240\032x5 5\"\342\247T\317\265.0jt\034S\261OU\251\343\\U\330[\025~#\320\325\201\315J\213\232\271\014|U\330\243\342\247\tR\244y\253\t\035X\216*\260\221\340\325\224J\224%H\211S\204\251\343Z\360\245\233wCS$\2305i\037\"\232\346\2539\301\246\346\227u;u&\354\032\235g%v\346\231\300\357K\276\215\343\265;x\355I\276\232^\2432Tm%B\322TM%B\322TM%D\322Tm%F\322Tm%Fd\2442SK\320\036\232\357\305D^\233\232ijM\324f\2279\244&\220\032z\232\225ML\206\254\253qJ\0075*\n\231V\245T\253\010\265e\022\255\302z\003WQ3\322\255D\225r$\253h*tL\325\204\216\254\244uj8\352c\037\024\344\030\251\325jdZ\231R\247H\353\347tl\032\260\222f\254\306\346\245c\300\250d\342\242\335\2127S\203PZ\233\272\245^A\244\335I\276\223\314\305\036e4\311Q\264\225\023IP\264\225\013KQ4\225\023IQ\231*&\222\243i*6\222\230d\246\231i<\332x|\323Y\252-\324o\2434\204\321\232\\\321\326\201\326\236*U\251\226\254%J\242\246QS\240\253\n\2654iV\321x\251\222>j\334y\025v\023\232\277\032f\255G\035\\\216.\225e#\305Y\216<\325\225\217\024\375\264\252\225:\245N\211V\022:\235c\257\232\310*y\247\253`\325\330OCS\261\252\362\265@Z\215\324\340\364n\246\227\251c\220r3H\347\322\2432SL\224\236e4\311Q\264\225\013KP\264\225\013KP\264\264\303%F\322TfJ\215\244\250\332J\214\311I\346f\232_\024\364\222\236\355\306j\035\364n\245\017N\316i3\212p4\361N\003\232\221EH\242\246AS\240\251\320T\350\265a\022\254\306\265a\022\255\242\000\265:\307\306sR\242\342\255@\270<\326\244\003\201Z\021%ZD\253\010\225f5\253\n\264\375\224\365\216\254,ub8\252\312GR\004\257\230\244}\346\233\320\212\271\031\332\005M\346qU\344\223&\242-I\276\224=.\372ij\217~\rX\337\362\324\014\364\303%!\222\232d\250\232J\201\344\250^Z\201\245\250\232Oza\226\232d\367\250\332J\215\244\250\332J\214\311M2R\371\231\247#\324\305\362\265\016\356iCR\251\247\251\301\247\236FE*sR\250\346\244QR\252\361OU\315N\213S\242\324\350\265f4\253H\225:%Z\215*\312\002F\000\251\322?Z\260\221{U\250\343\253\360\'J\321\204c\025q\026\254\"\324\352\2652\212\231W&\246\t\322\254G\035YD\251\325i\341y\257\224\267R\253d\365\251\326\340\214\017J\223\317\310\250\231\362i\273\251\013R\207\243}4\2751\236\244Ir\234\324L\365\031\222\232d\246\264\225\013IP\274\225\003\311U\332J\214\311L2SL\264\303%4\311L/Q\226\246\356\247\003\232\221x\247\227\342\242\r\363S\263\203OV\251\001\315J\207<\032z\256\rN\026\244QS*\324\310\225:\307S\"U\250\343\315Z\216:\266\221q\232\231#\253QGV\322!\216\225:GV\022*\263\034uz\010\375\252\342GW#\\\212\265\032T\252\2652GV\021*UNj\332\'\0252-L\027\212r\212\371\'u\001\261N\rO\017\212\013qF\352M\336\264n\244-M/Q\263\346\204~\324\326|TfJa\222\230\322T-%B\362Uw\222\240i*&\226\243ii\276m\'\231M2S|\312\013Te\371\247\254\270\251<\352x|\212f~j\223w\024\34452\032\225\0175eFj\302\n\221V\246E\253q&j\312\307\355R\244Uj8\261\212\267\034Uv8\270\305J\260\373U\230\341\366\253+\037\250\253\021\307VV:\2364\253\221\014U\224>\225n,U\225\"\247J\262\213S\252T\250\234\325\224\025:\212\230\nP\265\361\376\374u\245-\273\221\320Q\346d\323\267r*U`x\244\'\232i4\233\251\013S\031\2522\324\253\300\3156F\342\2533\342\2432\323\032J\201\344\250ZJ\205\344\252\355%D\322TM%0\311I\346\322\371\224\236e(zij\025\351\333\261S\304\324\245\271\251\024\344S\324\342\246CV\"\003<\325\330\370\351S\252\324\312\275*dNj\364)\322\255\"U\244\2078\342\247X\261V\243N\225n5\2531\240\253J\243\002\235\220\rH\216;U\204b{T\350O\245Y\2103\032\273\032b\244\335\264\342\244B\331\310\346\255G&:\365\253qL*\332J*eqS\243\n\260\246\246S\221R(\257\215\213z\232\2267\302\034TA\260\334\324\241\263\315(~})\305\275\r7y?J\013SKTl\324\300\334\323\214\230\353PI(#\212\254\362T-%1\244\315B\362T\r%D\362Ui$\250ZZ\215\244\246\031)<\312Q%\033\351D\224\375\331\024\014\346\236\017\025,MR1\311\342\244\211\275je\301\251\220b\255F*\334~\365m{T\350\275*\334q\216*\324k\212\271\032\325\350\0235d\303\200\r*\340T\310\330\251\321\316zU\224\311\251\304\031\031<\324\251\t\354*\322[\271\253p\3321#5\261ib\253\202ji\342\000|\242\250\264M\273\245^\266Q\2140\253&\327w+Q\230Y)\213#\206\305\\\216V\342\255\307!\305[\212L\342\256\306r*\302-|`i\276a^\224\007,j`\330\024\273\263C\034\n\013`b\233\272\220\267\025\03357uG#\324\016\365]\336\241i*&\222\241y*\026\222\242g\252\362IU\332J\214\311L2Ry\224\242Jv\372pzz\275J\0374\360jD\251~\265,uaz\325\204\031\2531\n\270\203\000U\270\327\"\255\"t\253\221-\\H\363V\342LU\310\260\265)\223#\002\234\210I\346\255\305\026x\002\257Ed\314>\355\\\207On7V\214V\034c\025n\033\000:\212\273\035\242\000\t\351S\013d\316EXED\357R3G\214\001\232A\0227U\251R$\037\303R\205\031\371F\005+\303\221\3275\017\331\207a\315*\246\323\310\247\026\njX\344\346\264\255\344\r\212\320N\225\361a4\323@\342\236\0374\340\3243d\nB\334\234\323Kb\233\273\212a99\246;\342\253\273\324,\365\003\275@\317Q3\324N\374Uf\223\232a|\212\255#\325v\222\2432S\013\323|\312z\311O\022S\203\324\213%J\257R\253T\361\265MR\306j\312u\2531\212\267\020\315[J\273\n\360*\364i\234U\270\322\256D\265eH\025&\342G\025=\274e\316\024d\326\315\256\230\317\202\303\025\255\005\212G\216+A!T\034\212\231B\2020*\30279\002\246POJ\225b=\352e\2074\357\263\234\325\224\266P2y\251\004c\037(\247*T\241)|\2726b\221\220\021\315f]\023\033c\265Ij\306LV\244A\243\301\355Z\2606\345\025\361ni\271\2434\241\251CR\223J\314\n\202z\324d\344\322c\202)\214\330\252\356\365\003\265@\317P;\324\014\365\013=F\317\305U\221\351\202L\212\206V\305Tg\250\214\224\205\351\273\351\301\352Epj@\342\236\257S\253T\310j\314|\325\220*D\0305f>\265r1\305Z\214U\310\3278\253\361/\025\241\n\360*\352\'\002\246^*tN\346\255End<V\355\205\232FA\3075\265\033\0000\005J\2715aA=jdJ\260\211VcJ\260\251S\242T\253\036\343Rm\344\212\220F})\351\027s\326\237\260R\204\240\306)\214\225\233{\016\3420)\326p\354\353Z\341r\200b\255Z\251\003\006\276+\315&h\316h\315(4\273\251r\017\007\2458\000\0055\333\002\252\310\371\252\356\325\003\265@\355U\335\252\006j\205\236\242g\252\322=B$\301\250\345\220\232\246\317\311\250\313\322o\246\027\245\022T\210\365.\342*Dj\265\033U\2045f#V\321\252d\253q\n\271\030\351\212\265\030\253\360\247\002\257\302\274U\370S\201V\301\300\251\341M\307&\256,E\210\013[6V\273PdV\254H\007J\264\213VQj\312-XE\253\010\225j4\251\325*A\307\025n\025\030\247\010\306\356*`\224\316\344\nz\212~\007\343HV\223h\006\240xC\222H\2428\300l\n\323\212\037\224f\247\216,\034\327\304\006\2234\231\245\315.h&\223u(\227\002\242\222M\325\0035@\355P;Ugj\201\332\241f\250\035\252\026j\255#Ugza\223\212\255#|\306\242-H^\232^\227p\251cz\234\020E=MY\211\252\322U\250\252\352\016*t\025n!\322\257B=j\354KW\241Z\320\201j\364`\001R\250\334\303\025\243\004Y\300\025\265kl\240\002\302\264c\003\265ZAVc\025f1VPU\230\326\255F\265j5\315YU\240\307\316j\334\021\222\265<Q\374\307=\251\345qP\221\226\342\244\002\245*\252\276\264\305 \212B\200\362M5\306@\002\237\005\271$\034V\200\033p*@k\341\243L&\2234f\224\032Bi7SKTL\325\0235B\355U\235\252\273\265@\355P1\250Y\252\027j\253#Ugj\210\265A+r*\"\324\302\364\205\351C\324\310j\322\221\266\234\244\346\254\304\325r3V\342\355Wc5j1V\342\034\212\277\020\253\321\014\325\370V\257D0EX\317LU\313u\307&\266,\"\334A5\260\270\030\002\254\305V\322\254\245Z\214U\230\326\255\306*\314b\254\3060EZAO8\034U\373|2b\235\267nsQHK\034\nhV\317J\231P\234qJ\352FEV(\301\370\351V\022\022\335j\302\333\201\326\254$x\245e4\252\276\265\360\333\n\204\365\246\223FisHM&i\244\324Lj\0265\013\232\254\346\253\271\252\356\325\013\265B\306\240\221\252\244\215U\235\252=\325\024\255\305BZ\243&\232Z\205j\261\033\325\205z\231\0335j#V\3428\253\321\034\342\256F*\324uv*\320\206\257\302:U\370G\"\255\216*\335\272n\344\325\330\027{\214t\255\353e\021\240\035\352\342\032\267\035[\216\254\307W\"\253q\212\267\032\325\230\326\254\306\274\325\2001A^sWm\270\305Y\312\263`\323\035\0009\035*\274\227+\031\250N\247\351\201B^\031\\\016\265\251\034a\324\020*\302\305\216\225*\246jU\2175(\204w\250\335\0247\025\360\223\032\205\2523Gj3A4\334\323I\250\232\241cP\271\252\356j\263\232\201\315@\346\241cU\244j\252\355U\2445\036j)\017\025\016x\246\023M&\224\032\225\rYZ\2363V\343\253\221\325\350j\364F\255\307\315\\\213\265_\207\265h\302:U\370\370\305N\2373\001Zp!\332\005hZ\307\206\025\250\215V\3429\253\221U\270\315Z\216\256EWb\355V\3435n>j\302\2561S\016i\315\320T\320\266*u9<\365\245\221\266\216\265\227:\231\033\212\317\2226F\255]&\r\356\t\256\215#\n8\247\242\234\373T\333x\244I6\2674\351&\335\302\324Y\311\346\276\024\"\241j\211\250\006\202qHM!4\302i\214x\250\036\253\271\250\036\240z\256\365]\352\007<UY\rU\220\325w4\300y\346\242\220\365\250\r0\232J*D5j6\342\246F\346\256D\325z#\232\277\r]\205sWc\\U\310\205_\204c\025\241\025]V\033j\335\252\344\346\265`\255\030\260\243\212\267\031\315\\\214\325\310\232\256Fj\334f\256Dj\344f\256EWb\346\255\240\315J\027\024\377\000+&\225>Y\000\253\312\200\214\212I-\367P\266H{U;\273\020\275\005K\246\257\226\370\255\325PE;\201F\340i\n\212B*&\310\351_\016:b\2538\305@\324\212y\247\036\264\323M\3150\232\215\215D\365]\352\026\252\357U\336\253\275@\346\252Jj\244\206\253\261\246u\250\330\324,j2iz\nAOZ\231\032\255E\315^\210U\330x\255\010{V\204#\030\253\2503V\343\030\025r#\216\265r)*\354J\315\327\245_\205\266\340V\255\250\316\rh!\305Z\210\325\310\215]\214\325\250\315\\\215\252\344MW#j\271\023U\330\232\257Ds\212\2621\201Rn\003\245B\315\363\325\250\346!1K\346\2615<R\034\202j[\225\014\231\252\021\270\216Q[1\311\205\006\223y,EH\264\356\364\206\230y\257\210\235A\025RT\252\216\274\3231\203JO4\323M\2465D\306\243sP=B\365]\352\007\025]\352\254\206\252Jj\253\234\325w\246\257z\211\272\324\rL\240\232L\324\212jx\352\324uv#W\242\347\025\241\017j\320\207\265hF8\2531\324\350{\n\275\016\027\031\353Z\020\313\221\201W\355\343.sZ\220\260A\216\365r3\232\271\021\253\221\232\265\033U\270\332\256F\325n6\253q\265\\\215\372U\370[5z\'\253(sO$\366\246\204\346\246E5:%Y\215*r\273\220\212\307\234\025\227\217Z\320\266\237\200\255VP\202\306\247\024\242\202j2k\342f\025\013\256ER\225pj\022\265\023\036\271\246\253v4\036\264\323Q\260\250\232\241aP\270\250\034Uy*\244\206\252\310j\244\206\252\271\305@\335i\005B\335MB\324\312c\036h\024\365\2531\325\310\205\\\217\222*\3645\241\rhC\332\264\"\346\254\216\005K\t\3475ad\313`V\275\234D\201\232\327\215\202.\005O\023sW\242j\273\023qV\321\252tj\265\033\325\350\236\255\306\325r&\253\221\265]\205\361W\241|\325\304l\324\3523R\005\305J\242\254 \251\327\212\232.s\364\254\353\210\201r})\321\240\0035j\023V\001\247)\244\315FO5\361ST&\253\310*\253u\250$\353P\323\263\221\357HzS\032\243aP\260\250XT\022\n\247%T\220\325Y\rT\220\325g\250Z\232;\324-\336\230i\204TX\311\251\222\002\325!\210\255=\005Z\216\256\304:U\370E_\207\265h\300j\364b\245-\212zK\205\253\226\274\260&\266\241\220\200\000\253\220\271\'\232\275\021\253\261\265\\\215\360*\312IV\021\352\334MWaj\271\033U\310\232\256D\371\253qI\316*\374M\214\032\277\t\357V\343~qVP\206\251\002\355\251\026\245\335\201K\024\303\232\245qq\202\331\357L\212\1770\205\025\243\027\002\246\315*\236iI\353Q\232\370\271\226\240aP\270\315T\221H\317\245U\177Z\214\212fpi\364\204TdTL*\027\025VJ\247-S\222\252IU^\253\275B\302\233\332\2414\334Pc$Tay\253\260\201\306jFPA\305F\253V#\025r!W\241\253\320\326\2045v6\300\247;f\233\031%\200\255{a\2001Z\220\267\025v\023W\242j\267\033U\224z\263\033\325\250\332\256\304\365n\'\253\261\275[\211\352\344MV\324\364\305^\267\2238\006\264\340|qVP\374\325a%\305^\211\204\213N+\264\373S\325\014\247\013J\366\376R\234\034\361X\272\211*F*]92\0015\256\235)\333\250\r\3158\2650\265|j\353P\262\324,\265\004\211\220j\204\313\216\225\\\323\030R\253v4\374qL\"\243aU\344\252rU9j\234\225VAU\\Uw\025\t\024\323\322\242\"\205\\\323\312\361L\331\315L\203\024\346n\324%X\214U\250\352\364=\005^\203\255^\216\254\253b\236\032\226&\303\214\326\265\273qZ\020?j\277\023U\310\332\255\243\342\247G\2531\275\\\215\352\334oW#j\273\023qW\"j\275\023t\253\2617J\264\234\034\212\275o!$V\202\265L\206\254E!C\221Z(D\210\rIn\n9\367\251\'\031J\306\324\340$\006\247\331\r\250+@\032\t\244\006\234O\025\021s\234\036\265\362\003-FR\243h\352\007\217\212\316\236>MTe\301\246\025\246\355\3475&8\246\225\342\242qUd\252rUI\005T\220UY\005V\220Uw\025\013-4\255D\313\3159\006\005;nW4\230\246\223\212h952\n\263\030\2531\365\253\261U\350{U\350\315M\232x<RFI\220V\275\273`\n\275\023\362+B\027\253\221\275XG\253(\365j7\253Q\275\\\215\252\344OW\242|\325\270\236\257\302\365v\'\253\261\266j\334M\202+F3\275x5<G<\036\265>p*{{\222\204/j\322I\200 \372\324\3228#\216\365\235\250\260\362\300\250mxQW\003Rn\245\315.\352%Q\267x\355_#\262TE1Q\225\250]*\224\361g5\237\"`\363P\225\246\225\247\017J\030qU\344\252\222UI\005U\220Ui\005U\221j\263\255Wu\250\212S\031j=\2314\360\231\340R\274ei\241)\222\257\034Th\265e\026\254 \251\343\034\325\330\252\3545r:\237\265*\032\222 \004\2315\247\t\343\212\267\033t\253\3617\025n6\253(\325b6\253q5ZF\253q5^\210\346\256D\330\253q\275]\211\352\364Rr+B\'\253\221\232\275n\3705qFy\035j\300\345pjkU\035\372\325\254g\247j\236\',pz\n\316\324\244\314\241i\320\034(\251\367Q\272\200\364\355\324\273\262\214\t\342\276Rd\250\214t\302\225\004\213UeL\326t\361\363U\331)\205=)v\2201Q\222T\340\364\250%\252\222\n\255 \252\262-U\221j\263\255Wu\252\356\265\036\332\215\222\221S\034\324\210\203\322\234c\315F\321\342\242e\317Zb\245N\213S\250\002\246\214d\325\270\305\\\212\255\307V\0074\252>j\220\374\244\032\277n\331\025n3W\342<U\230\332\255+T\361\265[\215\261Vcz\271\023U\370\037\025y_ T\350\374\325\310^\257B\375*\374RV\204\022\014\001V\243\223\232\320\212L\212\264\255V\"85e[\232\231[\0035\215;\371\227\'\332\255\306x\2517PZ\223u8=9[\203_-\236j29\2460\025\021Pz\325yS#\212\243,95]\355\375*/+\035i\254\265\004\251\306j\254\202\252\270\315Wu\252\316\265Y\326\253\272UgZ\201\326\243+Q\224\311\241\223\260\247\252b\234x\250\\\346\243)H\027\025*\n\223mX\211qV\220U\250\352\334uaE?\035\351G\315\305]\267\\\001Wc\253q\232\265\031\251\321\252\324f\254#{\325\230\332\256\304\365v\026\253\250\374T\350\374\325\330Z\257D\365z\'\253\2615]\215\352\344S\205<\236*\364R\206\344\032\262\222b\254$\231\247M8X\2175\231\021\313\226>\265y\033\212v\352M\324n\2405H\255_1\025\250\312\324l\265\023\n\211\327\212\256\311Q\025\333\332\240t\311\250Y*\t\027\212\245\"\365\025U\306\r@\353U\244Z\256\353U\335j\264\213P2Te)\004tyy4\273*6\\\323<\274\363OX\367R\233zO/m=V\246AVPU\224\025f1VR\244\305 \030j\277\017J\264\206\254\304j\334f\246CV\024\342\245G\2531\275\\\211\353B\007\343\236\225ie\315X\215\363W\242z\273\023\325\370_\245^\211\352\344oR\003\271\261\232\323\200\225P\005[V\251\267\0208\252SL\354v\223SC\300\025d5.\3727Q\272\22459Z\276me\250\212\324l*&Z\211\205B\313\326\242d\250Yj\027Z\253(\252R\202\017\025M\371j\215\226\253\272\325wJ\257\"UvL\232\211\322\242\331\223Jc\300\244\tA\216\233\345d\322\230\251V,\032\231\"\315#Z\363Q\030\n\366\247F\234\325\225Z\235\026\254GV\024T\242\223\034\325\2503\212\271\0375f>*\312t\251\220\363V\024\324\250jt`*\334-WRLU\230\3375j\'\301\253\360\276j\364.\001\031\253\310\300`\203Waz\275\033\361Vm\206\351FkMxc\355J\267J\247\031\251\305\300\333\234\325r\333\3375e\016\005I\272\227u.\352]\324\241\251\352k\347\246\207\212\201\243\250\314u\013\2475\013\'\265B\353P\260\250XT\022\n\251 \353U\312d\034\326s\256\030\212iZ\211\322\240d\252\322&N*#\026\005B\351\236(\020\200=\351\217\035\'\227\212<\2726zR\371t,y52E\203S\371{\227\336\230\326\371\355Q\233r\247\212x\216\244T\251\025pjt\025 \004\324\210\207\251\2531qVc\253h8\0252\364\251\022\247S\300\251W&\247\214z\325\244|t\251\343z\271\023zU\3049\372\325\270d\305]\211\352\364RU\350^\257\305%^\265\227ksZ\261\220Ww\255S\272\217k\006\007\203R\303\222\006MXQ\212\2206)\341\251CS\203R\346\234\032\236\246\274\r\333\002\253\261\250\331\261P3TMP\262\346\240u\367\250\035N*\006\004\216\225ZD89\252\344qT%O\336\032n\312\215\226\241t\315Bb\357PH\230\246,<d\3222\034\323\032>:Q\345\361Hb\243\312\366\243\3134\242<\032\220-9x\251@\004PR\233\260f\245H\201\024\361\020\251\025\000\251UG\245J\0234\021\264\200*\314c\246j\332\216)\352jU\251\324\360*t5:5J\246\245F\253\260I\212\273\033\346\255\306E[\214\325\310\236\257C%^\211\352\3442a\205lE\'\356\361Q\334I\362\250\245\205\361V\203\346\2245?u(l\323\203S\203S\303S\201\257\004qP\271\250\035\352\273IQ4\265\023\313\305Wi*&\222\231\2734\307\\\212\252\311\212\253:\014g\275C\214\212\215\226\240n)\215\310\250\032=\306\244\021|\265\031\206\230c\244\362\275\250\362\250\021\212_&\223\312\244)\212P\225\"\255?o\024\322\234\323\324b\236)\300T\213\301\251\327\326\243\335\271\352\304g\221V\225\252E5*\232\225ML\206\246S\306jEl\325\2045b3W\242n\225r6\253\221=\\\214\325\330\217J\271\023\325\244~\365~\332\344\343i54\222n\024\350\332\254+\324\241\251\341\251\301\251\301\251\301\251\301\252Ej\360\211\rU\221\252\244\215U]\352\026z\211\236\242f\246\023\232r\212y\\\212\202H\370\252\222G\236\265\003\304T\373S\032<\212\254\361\020i\2062h\021\340R\355\342\243d\250\331(\tHc\244\362\361I\202)z\323M\"\216j`\005;\024c4\230\346\235\212x\024\341R\216\225]\270\223\332\255\305\332\255)\004{\324\253R\255J\2652T\240\372\324\253S#U\210\315[\215\252\344MW#j\273\023\325\350\232\255\306\325e_\212\232\027\303\n\272\357R#T\352\365*\265J\032\234\032\234\032\234\032\236\032\236\255\315x\\\246\251\311U$5Y\315@\306\242&\232E&)V\246Q\305+G\362\232\241\"\340\325yNF)\241\306\323\270T$\206\351HPb\232R\233\345\346\220\307M0\346\232\321\342\243+\212i\250\230\3233M\335\212i\220\n<\352p\236\244YjU9\247\250\251DD\364\247\213f\245\362\266\3655\033\305\236\2254Gh\346\246C\310\253IR\250\251TT\312)\343\212z\265J\246\254Fj\334g\245[\215\252\344mW\"j\275\023U\330\216j\322\216*x\370 \324\373\363R\306\334U\204j\231Z\244\rO\rO\rN\006\236\r<5xt\225RZ\247%Vz\201\2522(\305.\332\002\363VR?Z\216\346@\243j\325\006\250\035\t\250\231\030\016\224\301\031\317\"\237\266\232\302\232\0074\2458\246\221M`\030Ui\001\006\242\'\025\003\232\205\237\025\033IQ\027&\22015*\006c\300\253Q\333\310q\301\253q\333H\007\3355e-\237\031\332i\342&\035\2158\254\200t5ZF#9\250\222|\036j\310;\271\025*d\n\271\031\340T\340T\242\244\006\236)V\246Z\231*\324f\255\306j\334f\256D\335*\364M\322\256\302\325v6\315\\\214\003\031>\225\t\233i\251b\270\025n93V\025\252e4\340i\340\323\301\247\003R\003^+\"\3259\227\255Q\220u\252\316*\002)\204Q\212Z\232\030\363\311\245w?\303U\232&s\223J-\375E\006\334SL\000\366\250\244\200\016\325Y\223\031\250Xg\2450\214\032p4\326\3053\245G\"\203U\\b\252\310*\273)4%\273Hx\025m4\247n\306\255E\242\271?t\342\265\255tE\030$\001W\377\000\263\242U\343\255=mbP8\247\030\223\267\024\326\265N\242\201j\230\346\250]X\214\235\2039\254\271,\212\234\343\024\350\240}\330\305h-\266V\244HJ\365\253\n\274T\241x\244<P$\002\244\017R\253f\254Fj\312\036*\304mV\342j\271\023U\330[\245]\210\325\310\332\256B\340\002\017z\204\304\314\307\236*E\201\207\275X\2100\351V\243\223\326\255#T\231\247\003O\006\236\r<\032\361\347J\2472U\tV\252:\324\014)\204R\021M5n\022\014|S\322\035\334\323\314@v\246\230\352&\\TG\255\014\241\205U\232.\rS\333\202j\0318\250w\363K\234\322\212cT\016\231\250\014\005\317\002\245\217N,\303ul\331\351\n0H\255d\260\215\000\342\236#U\340\nF8\246\022MF\331\246\362)7\237Z\004\236\364\355\343\275C2#\203QG\030\317J\262\024\001\236\364\207\031\245Z\220t\250\035\300\004US!\315M\034\276\265n6\310\253Q\265ZC\232\235\rY\211\252\344mW\"j\275\023U\330\333\245Z\215\252t\346\254%K\264u\035i\244\367\035EK\024\231\253hr*AN\024\361O\006\274\226E\252\223/\025\237*\3259\026\253\260\346\243\"\232E4\2415,D\250\305_\200eO\024\346\004\236)\276Y\357P\312\270\252\376]!\\SfO\220\326pB[\030\246\334A\204\310\025\232F\032\244QN#\002\230FjH\355Z^\202\264\355\264\262{V\202YG\037Q\315M\200\275)\215%1\237\322\243$\236\264\224\322i\204\323MFN)7R\026\240>:S\274\312PjE5 <Uk\210\333\250\351U9\035i\312\325j\027\307Z\275\035\\\214\234sS+U\230\332\256Fj\344G\245]\211\272U\330\333\212\265\033U\250\332\255F\3258\366\244x\311\345z\324`\0259\253p\311\221V\223\232v1N\006\234\255^W%S\230U\031\207\025FQU\210\246m\315K\0349\353S}\234c\245:;M\307\245\\Kr\203\030\2462\200x\245+\201U\234\014\363\315D\330\003\201P2\346\227fF\rD`U\344\n\255r\000\214\326)L\261\251\025qC\220)\221\251v\300\025\277\247\331\034\002\303\025\247\263`\300\250Y\252&&\243\3154\232i4\322i\214i\231\244-M&\230i\271\244-NSR\003R\003R\006\300\247\3440\301\2523\306\003eEB\005O\0305~\002E^C\305=j\314f\256Fj\344F\257Dj\334mV\320\325\250\332\255F\325j3\232\231i$L\214\325p\333\032\256\305!8\305M\311\247\000GZp\257.~ES\226\250\313T\345\025\\\216i\361C\270\364\253\211\016;U\210\355\363\324U\330\241U\035\0056\343\n\274U\0227\034\323%<qU\230f\242aM\305(\024\307\\\212\317\272S\264\326[\020\246\2432zS\222&\224\360+Z\306\304\002\t\034\326\332\3425\300\250\244\2235]\230\323\r4\221L&\243-L-L-L-I\273\024\322\364\335\324f\2239\247-H\r<5;4\345jl\204\032\210(\31752\001Vc|U\244\222\245\r\232\263\033U\270\216j\354g\025r#W#5n3Vc5i\rZ\215\252\302\232y9\025VU\301\247\301!\007\025u\0375(j\007^+\313\244<U9MT\222\252\310*!\036Mh[\301\201\234U\225\213=\252dL\nq<{UY\316\343\201\332\242\333\305C \250\030Svf\230S\024c\212\215\306*\205\3361Y\023\250\'\345\346\231\024\005\210\310\255kx6\340\001\212\325\210\010\320b\202sQ\265FsMcP\263Tl\325\031j\214\2654\2650\265!ji4\204\321\272\2245(jpjw\231\212p|\323\303R\026\024\200\363R\253\001\324T\361\310\t\025e*\302\n\260\234U\250\232\256\304sWb\253q\232\267\031\253iVP\325\2045e\rH\r5\306G5]xz\275\031\310\340\324\240\323\324\327\226\311U$\252\262T\004f\247\267\203q\316+M\"\332\240S\266zP\303h\250\334\361\216\365Y\2074\323\300\252\322\236qQ\3434`\ncS0*\0311\315P\226#)#<T_b\000\363V\342\265D\000\342\234\355\260\361\214\323\321\313\032\224\360*\031%\n\t5J[\325\\\363U\216\242\t\347\245\037o\214\322}\241\033\241\243x=)\206ALi*3(\246\371\264\307\237m@\327\200t\250\215\343\036\224\365\272jx\270cS\244\247\034\323\213\023OV u\2517\232P\371\251\343\367\247\367\251U*\314d\216\265m=j\302U\210\352\354]\252\354Un3V\3435j3VP\325\2045f3S\nq\031\025VE(\331\02542U\260r*E\025\345\222\032\251!\252\315\315\010\233\230V\234\020\355\025c\024\207\201\357Q1\342\240s\324\324-Q\310\330\252\262\034sQ\027\003\2554\315\237jkJ=j\007\271\003\245R\271\272\003\241\346\243\206\350\036\365ed\337R\006=*\'\0074,\273?\n\251q\251\225$\003Y\263_\273\367\252\215#\267SM.GZa\227\322\201pGzQz\313\336\246[\364?z\246[\204q\301\246\271\003\221P<\307\265U\222V5\017&\246\215\t5m#\030\251V1R\252\323\302\212\177\035\351\014\253\234R\207\031\251\221\352\302\266MXJ\260\230$U\310\207j\260\023\214\212\2321\203W\"\355W\"\253\221\325\250\352\324f\254\245XJ\260\206\247S\232\220sL\221r*$\0305n3S\003^U)\252\222\034\324[rj\345\254\005\233\245i\210\266\212B\270\344\324NE@\354*\273\032\211\217<TL3\326\253L@\2522IP<\270\357U\236s\330\325y&n\325RB\317\234\322\300\010`+^.\000\251\2529\016;\325\033\213\225@@\353Y2\271s\232`J\016\005W\222AU\332J\211\244\250\332Jn\372U\235\220\360jU\275q\324\346\236/3\326\227\317S\332\236\222\'z\225$L\361VU\301\357R\006\003\275)\235W\2750\334g\356\320$8\347\232\003sS!\253\t\323\212\261\031\253Q\232\265\027QW\243\343\007\265[A\221NN\265n*\275\025ZJ\265\031\2531\232\265\031\253)S\255N\225*\322\260\310\252\303\206\305N\207\025aMyT\2035\027\226X\361SEhI\344V\224\020\204\035*f\340sU\235\262MV\223$\324,\246\242~*&5\014\207\000\346\263.%\3118\252N\365]\3335\021\353N\n\034`\323M\267>\324\242\r\274\212\235\034\255;\317\342\232\356XqY\362\332\263\234\365\250~\312GQQ\310\205\007\002\263\347v\006\252\263\032\211\230\324Li1\232pBi\336Q\243\3114\322\230\245\tN\013\216\364\360\017cR\2430\357Roj\006M<\034T\212\325:T\3501S\243m\342\254\241\315Z\214U\310\305^\217\221VS\245=z\325\230\352\344F\256Dj\334ua*\314f\254\2475a*e\251\224\324\202\241h\362\331\025 N=\351\352ppk\314\266n5f;lu\034\325\250\341\305M\267\002\241\223?\205C\345g\223\322\241p\240\361U\337\212\254\3475\013\266\001\315f\334\317\270\220\247\212\240\355P75\033\na\024\200\342\232\327\005j#r\344qP5\313\203O\216g|U\264}\243\236\264\3573\'\245)\301\034\325y\242\3348\252\022\330\263d\325\tm\031{Usl\304\364\246\233F\364\2446\305\006H\244\001\207j\031\210\246y\236\246\227p4\322@\243u=ML\206\244\342\214zR\212\221jt8\251\225\252\302|\334T\311\225<\325\350Nj\344g\326\257BF*\324~\2250J\2321\212\263\035[\214\325\310\315YCVR\254!\305XCV\026\244\007\025\"\232\\s\232\224\014\212G_J\363\310b\311\253\313\026{T\2420)\257\201P\2200Y\272U\013\233\241\321zV{\316{\032\256\323\222y4\323.{\325;\211\267p\275*\213\363P\260\250\210\250\332\231\365\250\335\2608\252\315\315>%\365\251\232\335[\266)R\035\2751N8\007\223L/\375\334\032\215\213\372\322y\244pM5\3468\342\253I.z\212\256d^\324(\311\245p\270\347\025VIQx\025Q\2432\234\203M\373&:\265\006\334\216\206\220@\304\324\211o\357R\224T\036\364\300rx\251\000\247\201NU\317J\225P\324\252\2652-L\203\025j2\017Z\267\020\002\256\304GCV\343\307j\266\225a\rL\242\254F*\312\n\267\021\253IVP\325\204\251\320\325\2045.x\245W\251\224\346\245^:S\310\334+\202\206,b\256\252`R0\252\362\270S\317J\314\274\273\317\312\275+-\344\311\252\362IPn\315#\023\212\256\365\003TMQ0\250\332\242j\256\346\241=jH\363\326\244iO\255F\323\036\334S\001$\362i\031\310\350j=\355\330\322\035\346\242e\220\372\324N\204\014\271\250|\345Rr*\031/\030gh\305T\222\351\333\275W23\032\2269\034p\rN\245\217Zx\311\247g\024\231n\302\201\0339\346\245\020m\353N\tO\tOT\"\244\037J\225@\251\227\035\252U\251S\212\265\031\253Q\232\271\023U\310\332\255Fj\312U\250\371\253\010*x\3705r3V\022\254!\253\tS\245H[\212@jTj\262\255\305H=\253\377\331" +byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\010\026IDATx^\355\335\333\266\243(\020\000\320^\231\377\377\344\311\232\311\255\317\211A\243\010J\301\336O\335&\022\254*\020r\351\376\363\207q]\247\007\000\000\000\350\323ez\000\000`\216w\216\001\000\000\000\000\240y\276\007\320;\037\330\000\000\000\014\3046\037\000\000\000\002\261\221\357\231\354\002\000\000\000\000\000\000\020\224\237\247\237O\016\000\2003\370\352#\000C\370\262\351\256}?\254\335>\000\000\000la\237\272\326\2277\024\2003\031\240T\241\260\000\200\026\014\277&\271\016\037\001\250\301\300\002\000\200q\244\277\022p\271\244\217\263\235\035\026\000\000\020\200\255K\232\270\220\2440\350\225\332\006\000\000\000\000\000\000\200\306\370y\017\000\300D\344\005\222oj\026\220]\000\201\242\237}\215\335)\023\211@\251\007\240Weni\014E\321@P%\266\037\327\177\247G\3063\356$x\235)\242q#RV2\270-\222pT\001\037\224\004\014\305\220\007\310Sl\323\227?\021\347\237\311\016\037a/V\nG\t\327a\000\240\214\217e\014\000\000\0004\315Nv\007\237\005@\017\214d\000 \213\275\024@\030\246l8\235a8\250\265\211_\373<\000\000\200\265|\017\000*1\270\000 &o\304\303VF\r\0000 K \000*q\2139\316\330\261\366I\346\237\177\246\007\016u\271\304*@\005\223ic\340bU\305(nY\t\233\231\260\035o\207\020\016@\222a\025Ce\233\237E\340\306\345`\253\024\300\031\352\025\317\346\226\317.\200g\2077\367\033\316r/V\025\013\035+6\300\2135\304\261v\254\215\2469\23745}\030\350\336\216\t\205\346\310\346\300\336\223\177\335vCO=;u\254\022\205;c)0\357\371\271?\363\357\323\227\316\333\250`S\354\224\316E\372\350 \016\234\2456(\220\222\307{z\253.\257\300\253\235*z\377w\233\317\362\374#w\303G\256o\337\322\373\355\361\275\276T\037a\234\236\311\332\245\332\261\323s\027Q\007AK\r\231\313\333\205\335\277\352\237zZ@M\\F\023\235xIv\246\334\257;\236\205\264k\240\354:y<\305r\307\010\272\036]?\027WnJ\353\315\257\002\350\272\026\000xi\366\226X\362>\324\354E\236huLJ&\342L\253/x \367\334\326\nLf\273\275\324\333\350.\271\005\020\226\312\205\035F\2330\000\206\222\275Jrw\250Fh\271d\017\3142\376\326\340\311\375\240\0029\005\240\tV\274p\234\357\343\355\3733b\n\264\364m\246\253\315t\204|\257\001\375\1772o?/~\3765\177\230\'\213\"\2779\340T\311\021\r\000\014\315\372`@_\222\036{\303\367\345\342z\365\223\264\330\351\353\234\344\214\315\017\3449\314\255\326\006\275\035\002\360#\275\364x\334 \334&\016\220N@}9\257\233s\016\007\311\034\255\263\247\315>\300(\214\367C\031q\000\000\235K\254\257\217Z\003\336^:\361\362ws\307\227\034\325\357~\345D\035\000\212r;?E;ao\247\'\024$\255\300K\353\363\201MqE\333\223/\035\345Mc\272=+@H\323\301\177\214\274)&\357,\032\2646\225k\237G\001\347\314\005\234\312\010\033\314$\341\341\006\275\202\355LN\005*\202\200$\215\202r\346\r\326\020Y\240M\226\021T\244\274\356\002\205\241\314r\245L+\r+\221\321\022m\324\327}*\363\304H\036\000\000\300\273\373^\346\366\357V\333\353m\323\326&pO\366\236W\262\247\t\222\202\204\364\270R\016\022\020\000\030\213\033t1\307\255\252\226Ii\023Z)\207\251\352\375R\177\215\223\240\261]\025\300\030\344\231e\325\027\003\023\275Wd\357\327GS\224\333fG\317xU\225\310\177W\001\001\322\322\003\3752\367\000\235\221f\036T\302\340v\177\003\354\262\343\\\032\223\223\312\234s\310\'\336T\245\300:\363\270\307_[^\353\265\334\267\320\226\003[r\250\337~I\002\214hy\236!\214\334D\346\236G\'\024\000@\024\211\031\273\3517\t\250\344\261s\177O\275B\030\234\002(\372\366\0304\250B\211Wh\222\352L\367\274k\254\"L+\301\224I\330O+e\332[\322X\305\237\353\025\214\374\240\024M\235w&\026\255\213N\201<\254t\334+\361\260\256\002\310\"\270023\000c\353\177Ig\214\337\t\303\340f\n\340\232\271\007\337=q\354n`^\305\246\343\232I\263X\3018f\246\001F\241\000\000\370\253\231]@3\035\031\324\001?\370\336\370\n\326+\017\033\303\026@\177W\004\001\031\210\320\260R\003t\266\235\331\007\0060\304\002s\335E\256{\026\364c\300\251\3170\347I)\3600\340<\310/\362\017\034\312\244\003P\313\3103\254\315\355J\267\"y\025J\253A\363\177R\325\326j\346\001\000\0006zno\326\356r\326>\017\000\200#X\235\215\300\'>\207z\206\273\335\261\365\3363\325Q2S%\333\002 $\267\002\000\240+\3365H\213\037\227\330\313\326\370\361\247/\261\307\023@\014\346Z\232\024bY\372\326\311\020=\216\342o0MP+\tT\033^\225k:\330+^\004\357\377\213E\274n\003\005\271\027\227 \212P\2261\005{X\3363u\275\225E\370\302\010\177\001\'\022;\240W\366\r#X\270\213)\000\200w\013S\346>U\032N\314\342\211C\213\266>\277\204\353\031/\332\233IA\025\ti\221FV\2512\034\006\261\030\273\305\007\233\361\253\320bt\270\005\223\321\371\036\270\2310~\214\350\327\201\217\007hV\361\\\335\277\330\004\204\264yB\230\216\367{\003\323\2034\346\232\221\351:\224\312I\236\201\377)\203\234L\334\316y\235\367j)\247\035\372qidf\341`\006>\360\303\2140\n\367\374\215\014\r\030Q##\377\327\367\320\357\223\267\217oZ\223*\224\337\331I=\276\305[\332\211D\326F\267\267\002\366N\036@4\257Qo\364\277\023\217\256\364\234\316\2757\376hF\273\336\257\366\006\344q\376\3077\345\247\177/-{L\326\356\330\313\257\016\036\365\222\247h\372\342\026\252\244\351~\227\262p\375\364m\210\372\246\032\365\003\301\275\177&\367\366\207\rr\316iC\334\236\307b\235\231\253v\205^sr\263\241S\031\2553\006\245\001\000\000p\246*\273\262*\215\022\301\206\367\212\032sV\321\306\215X\302\245\257\313\201\263\2345\037m\027\247\247\241\010+\320,\377\034khU\263W\265\361z\202v\273\025\327\217\355\354\256o\232U\2605\301[\237\017\254\031\354FV\347$x\237\250\361{\374\3703j\357\331l\315l\017\324\267b\3325\\w[\021\345\272\016\313\341\351W\312@\016+kj*\232F3\320\340\024\300\331d`\352m\206\353?<>\351\345\215z\340TE\227\230\305\233\343\253\3523\310\363\277\240\370\370\247(\327\252\336A\362\345&\265\260 \353\242\030\275<Y#%\005\361\230a\000\330\343\324E\330\334V\261\263\233\333\221\2273FDYo\246\"\200.|\033\341\337\036\007\000j\330\260\375r\263\036\333\206R)h\356\235\030 \251\346@\255\3316p\276\364\030O\037=\312\271\257>\246I\314\367\245 \347\354\337\337\251\3139\177L3\221Z\273\216^\216y\342\320\321\326^\010o.{\343\266\367\374%\305\276=[\252\235\n\372\330\311\026\313\324/\345\002\363\210q\271\366\272\262=sa\003\031\266\343Um/\200C|&\253\321\216\306St\t\377\'\225\252]\n7G4\351\002\330]\246p\223./\226\030|\203Z\231\370Rc*\361r\245\232^\345\320\027\013\344\371c\371\300\266\365\277\306\033\032\215\032\347J\001\236\252M|\026\021P\201\201\005g:{\004~\274\376\307\201\031\033o\366\033\237\036\337\177\034\3615X\n\320m\016\000\000\000\000IEND\256B`\202" diff --git a/core/res/geoid_height_map_assets/tile-5.textpb b/core/res/geoid_height_map_assets/tile-5.textpb new file mode 100644 index 000000000000..0cb548900d58 --- /dev/null +++ b/core/res/geoid_height_map_assets/tile-5.textpb @@ -0,0 +1,3 @@ +tile_key: "5" +byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\004\003\003\004\004\003\004\005\004\004\005\006\n\007\006\006\006\006\r\t\n\010\n\017\r\020\020\017\r\017\016\021\023\030\024\021\022\027\022\016\017\025\034\025\027\031\031\033\033\033\020\024\035\037\035\032\037\030\032\033\032\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\325\210r*\326\332c\257\245S\272\203zq\326\271\353\244*Nj\203>*&;\272S\243OZq\217\212\253\"Ug\025\021\025\033.*\"\265\023\212\254\313M\021\344\323\230m\340TMQ\363HN\005D\304\323w\221NI\260y\251~\320\244t\250\245UpNj\250\201[5\024\226\313\216*\224\220`\324~MH\251\212\260\210jeLv\247\010\363\332\236\"\245(\007|R\205\007\2758*\216\324\274P>\224\360=\251\340T\210\2652\n\235\026\247E\253q\255Z\215j\344kW\"J\267\032U\224\\U\204\025:-[\215j\312-Y\215*p\000\247n\354)\342\244\002\245U\251A\342\245^+\224H\360j\310N)\205EB\351\3075\215\250\332\203\222+\233\271\214\2515\004g\346\346\256*\361JEV\225j\233\255DF*6\025\003T.*&Zh\030\2465D\334\232i\024\302)\214\265\023-3i\245\333A\004\212@\215\332\227\313\343\232i\266R3P\274\000S\004C5:E\236\3258\207\003\232]\241z\322\023L\306\343NU\003\245<&z\322\371b\236\020R\355\245\013R\252\324\252\265:\n\260\213V\243Z\271\022U\310\222\256\304\265i\005N\202\254\"\325\230\326\256D\265e\026\254\242`PF)V\244Z\221y\251\207\025\"\325\210\327&\271\245^j\302\307\305F\361\324.\244\203\212\315\271\214\220w\n\347\357m\216N\005d\264e\036\255\306r\005+\n\255\'5]\222\240u\250\030TL*&Z\211\205FE7mFS\232F\\TdSJ\323\nR\010\251|\272M\270\355Ml\343\212\210\356\244\332\306\224D\307\255H\260\016\365(@:\n\010\250H$\346\223\031\245\013O\tO\000S\250>\324S\224T\2503S\252\324\350\265b5\253q-\\\211j\344b\255\304*\312\212\235\005Y\215j\324kW#\025e\026\254\252\361\315F\364-J\24352\214\np\346\254D\274f\254E\367\253\237)\212\221\007\024\025\315@\311\203Un\242\014\206\262\036\000\344\202+\026\356\334+\236*\262\246\332q\034T\016\265\023/\025]\326\253\270\250XS\n\324L\265\031ZB\224\302\224\306J\217m!ZM\224\340\224\326\300\250Z\233\326\215\236\224\345^\330\251\004g\256)\3338\351M)L\332O\322\232\313\212hQ\353K\201J\0058\n\\R\201O\013J\026\246E\253\010\265:-X\215j\324kV\343\025n!W\"Z\262\213V\021j\314kVcZ\266\202\254\247\025)l-E\324\323\305M\030\251\324qNQS\257\240\251\342Z\306)\236\324\340\230\024\205j\027L\325k\205\371Mf\204\371\3533P\207\014H\025\224\313\212cTn8\250\034Ug\025\003\255FR\230R\243d\250\212\321\266\223m1\222\230c\246\371t\322\230\246\232\211\206j\"(\013R*\342\237\200)~\224\264b\243lTE3\336\223\313\367\247\005\024\360=\005;fz\321\263\024\273i\333qJ\00752-XAV\021j\302-Y\214U\250\305\\\211j\354kVQju\025b1V\243\025j5\342\247QO\3054\256\r9EJ\234T\353\315H\242\254 \253\n0++m.\332aZ\211\205W\225A\0305O\311\352k#P\307#\275bH\274\232\211\2050\256j\'Z\205\324T\014\242\233\260\036\264\326\213\025\023GP4t\315\264\025\244+L+M\"\243e\250\231i\205i\205i1\212N\224\233\21581\247\002i\371\310\246\220\r0\250\244\331\232p@)\352\276\325 L\212]\224\334{Rn\\\342\236\005L\202\254\242\324\350*\302\n\263\032\325\270\326\256\302\265u\027\212\235\026\247E\253\010*\312\n\262\203\212\231jA\3158\256G4\320*U\251V\247\214U\250\327\035idp\200\346\251\021M\"\241\225\266\203T^\340\346\2432\231\010\024L\010\210\342\260n\306\342k6H\352\006\216\243d\305@\365]\306j\026\024\312z\034\360i\255\035@\321\324L\224\320\264\205i\245i\205j6J\211\226\241aL\"\223\024m\244+F\332p\247\204\310\250\330\020x\244\301\247\001OT\024\360\230\245\342\223u79\2441\344{\323\343\007\241\253(*\304b\254\"\325\210\326\255\306\265n5\253\221-\\AV\021jtZ\235\026\254*\324\353R\255J\264\343\300\246\255J\005L\213\221V\243\000\n{\316\261\257^k*\352\3739\301\253\246\230\307\025\237r\3475E\315\020\374\315\305Y\237\0011X\2271\362k>D\250\031*\274\242\251\3109\250H\246m\3155\242\250\310 \324\313\363\255F\361\324\r\035G\267\024\025\2462\324dTl\265\013\n\211\226\230V\223e.\312M\224\205iU1Noja\244\300\245\340R\206\024\027\250\313\023N^jUZ~\336iv\340\203S\3063V\221j\302-Y\215j\324kW#Z\271\032\342\255\"\325\224Z\235\005N\202\245\025*\232\221j\314c\212k\036iTT\261\256ML\\ \252\322\337\204\350j\224\267\245\272\232\253\270\312}\253\245<TN+:\340u\252R\016\rE\014\233d\253\023J\010\254\371\271\252R/5ZU\252r\257\006\2522\234\324e)\230\307Zi\344Te\t\247\306\2705#G\232\205\343\250\032:\214\246*2\264\302\265\033-D\313Q\025\246\225\246\355\242\220\212JF8\351Q\223\2323HO\245!\367\244\335\216\224\231&\224\n\225EL\2434\374`S\212\344\212\261\032\020\325m\026\247AV#Z\267\022\325\270\305\\\214U\230\305X^\005J\225:T\303\255H\2652\216jq\302\324}MJ\253S)\300\250g\014\340\366\025\223pB\344f\252\002]\272\325\350\227\000WHG\025\024\230\000\326e\311\347\212\244\307\255V\301\335H\354sP\2775\013-W\2213T\344CU\335@\250\231sQ2R\010\271\247\210}i\255\026\332P)\032<\212\201\243\250Y*\026LTl*&\025\013\naZc-0\256)\244SH\244\305!Zn\332n(\013\232k!\246\343\024\n\225EH\005<S\327\222*\310\2178#\265N\203\326\254F\265a\026\254\242\325\230\305Z\217\265Z\216\254\245N\265:\n\262\202\237\212\221j\302\017ZWn\302\221j`jU\246J\245\201\305a\336.\3065\005\270\346\257)\342\272\031$\n*\224\323\0228\2522\261&\252\266i\270\3438\250[$\323J\323\031*\007J\257$UY\340\315@\320\221M\020\372\323\274\254R\371u\033\246j\002\204\032Q\356)\0320j\254\221\324\014\276\265\013-D\313Q\025\250\330S\010\246\021L+M+I\262\215\264\302(\t\232x\216\202\242\243(\r7e=V\245\013\305\033i\350\2705r>EL\253V#OJ\267\032T\352\270\251\343\025j5\253(\270\253\010*\302\n\262\203\212\235E>\236\202\246\007\002\230[\232z\232\2206)\301\352@r+\013Q\220\0075\005\261\310\315\\\007\212\336\237\322\2522\325y\022\230\2109\334)%A\216*\261\213\322\233\345S\035p*\253\014\232c&j\026J\211\343\250\374\272B\224\335\264\326Z\201\326\230\026\215\265\014\261\367\252\256\225\013%B\311Q\262\324,\264\302\264\302\264\302\264\233h\333F\312iNiBb\224\214t\250\230\032m.)B\324\200R\201O\013\212\2263\203W\023\006\254 \003\025e\0179\253\t\311\253Q\245YE\253\n*t\031\353VQj\302\216*@qN\0075\"\323\213qH\274\365\251\001\002\223\314\317JUl\232\260[j\023\355\\\276\2416\351\210\007\275X\265\030QVI\256\226X\362*\233\251\007\245!\213\"\242h\366\324.3Q\354\246\262\325y\026\2520\301\246\221Q2\323\n\361L\333M+M)Q\262\324.\225\036\314Q\266\221\223\"\251\310\2305\003\255B\313P\262\346\242e\246\025\310\250\312`\322\024\246\354\240%.\332M\200R\025\244+M+\232aJM\264\340\264\354R\201O\307\024\016\r[\205\262*\302\236j\324F\256\306*\334hx\315[\215*\302GV\021*T\03056q@\346\245Z~\354R\016z\322\226\240\232E5*rE\027\223yp\266=+\224i\014\267\034\372\326\274<(\251\031\253\257a\232\205\343\250\031j\027\031\250\nS\n\324l*\254\203\255Ve\346\230V\243e\246\021L#\024\230\244+M)Q\262Te)\214\265\031\340\3242\307\273\232\252\311\216\265\013GP\230\352&J\214\2450\255&\312B\224\233x\246\355\305&\332]\224\326\025\031\\\323H\244\305(\024\270\247*\324\230\243fj\304K\267\255Y\215sV\342N\225v1W\"<\n\270\235\252\302\324\302\235N\025\"\324\231\240ry\247\026\002\214\323I\315*\361R\306~a\212\253\253I\266\023\315s\226\243t\244\326\322\034\n\031\253\271+\201P\275Ts\203Q\036i\254\264\302\271\025]\324\203P:\346\2532b\242e\305F\302\243\333C-G\266\223h&\224\255FV\230\313Q2\324\0169\246{\032\202T\364\252\344Tl\242\243d\250\231*\026Z6\323J\321\266\232V\233\212R8\246l\3157m\006<\212h\212\235\345P\"\346\236#\245\331\212U\0375H\300\361\212\265\000\343\232\271\030\253iVc\253q\0360j\322\232\225i\364\340i\341\251\331\244-\212\001\247\nu(\251c\342\262\365w\314x\254\333(\361\315h\203\201Lf\257Aq\305Wq\305A\345n&\230\320\343\221Q\225\246\025\250\035*\006^j\007LT\014\242\242d\315&\312aZ\215\226\233\266\220\212a\024\3223Q8\305@W&\230\313Le\014*\007\212\240d\305D\313Q:\324%h\333HV\200\264\2333L1\322l\243e\'\227HR\224%8&i\342:_.\232\313I\262\236\007\255X\217\002\254F\325j3\232\267\035Z\217\203VS\232\235)\304\320*A\357J[\322\223\2558\nz\323\361\305\000T\313\302\223X\232\223y\222\005\024\220\307\261EHMB\355^\222\303 \324\016\264\213\036\325\317sQ\225\354j\273\256\323Q\232\211\305Us\203P\310\300\212\254\335i\204Rb\230\304S\010\244\333M S\010\024\302\265\033\246EWd\305F\302\243#m5\230b\242!Z\242x\275*\273\307\212\204\2574\233h\333M\305.)\n\342\232\027=\251\3333I\262\223\313\346\202\224\233qO\002\237\266\230R\220\2554\014\032\231*e\340\325\310NqWc\251\322\255F*\302\234\n\\\346\234\242\237\264\321\212p\024\340)\302\236:S\221w\032m\324\302\030\311?\205c\'\357d.js\300\250\231\252\006j\364\362)\247\2574\322sQ8\035\252\274\303\"\253g\326\230\334\325i\227\212\250T\346\230V\230V\232EF\313I\212c\036\324\303HE4\212i\034T,\274\324\016\274\324L\271\025\023-DS\024\231\301\250\244\346\253\224\346\223m!Zi\024\230\247\000\017ZpP)\017\024\302=)\240\034\323\266f\217.\224/\265=V\227m1\226\232#\334x\253P\301\201\310\251\032\014\364\247F\214\235E[\211\263Z\021/\002\254(\305<t\247\n\225EH)qF)@\247\201O\305=\230D\204\232\302\274\2717\022\355\007\212\2225\n\242\2075]\315B\306\275T\216*2)\206\243j\211\207\025M\324\202qQ1\250\233\232\201\222\243e\250\230TD\021M\357JG\025\004\213H\007\255!\244#\212\211\2526\250\335r3P\225\305D\302\242a\305D\303\025\023S\010\244\305\005j2\271\246\225\244\305\030\315\000{\323\200\035\350\300\317\025\"\256i\305@\246\021@\024\255\300\250\031\262j\325\274|d\325\221\307J\221\005X\010\033\265H\220\000sV\221p*e\247\201N\002\244SR\212Z\\S\200\251\000\247\242\3675\233\251\334\355R\252k2\3352w\032\267\234\n\215\332\253\273T,\325\353#\2450\212i\024\302\264\307N*\253\2575ZT\364\250\010\2460\250\234T,*&\025\t\353G4\204f\233\214Rb\2028\250\312\372\324r(=*,qP\270\250\030TL*\031\005E\212M\264\233qA\034SqMaM\305\0053\322\233\267i\245#\212j\360j`h\316iqN\013Mu\250\322\034\265]Q\265p)\300T\350*d\030\251\324\324\252ju5 \247\001N\3058\034S\201\247\2575*\255H\005\023H\"\214\375+\234\271\223\316\227\216\225$ch\247\026\250]\252\006j\205\215z\332\236)M6\232N)\255\315W\221j\254\225Y\226\243aP\275Dx\353Q\265@\303\006\233\232v)\204sJ\005\014\274S\nqQ0\305D\303\212\256\342\241aL)P\262sQ\262S6Rm\244\"\233\212B\264\335\224m\244+\232n)\n\322\212u:\236\2640\317JX\306*QR*\324\350\206\254(\002\244\003=*E\025*\324\313R\001K\216)1\353R \251\2213S\204\307Z\216i\204JI\254K\313\343&@<UhT\236OZ\261\322\243f\250\035\252\026j\211\232\275q\rJ\005.\332\215\226\231\266\241\220u\252R\214\032\200\232\211\352\023P\311Q\324L)\201y\2511\3054\255 \247\036E4\257\034T2-@\313P\262\324,\264\312C\036\352\211\243\250\312\323\n\324dSh\244\315\035i\n\321\262\224GA\217\035\250\331F\332P(\247(\251TT\3121Rg\0254{Oz\235F:sR\nz\232\225\016jQ\322\2274\001\223S \253\000\205\0243\340Vm\365\332\200T\236k\025A\221\363\3335mF\000\241\215B\306\240cQ1\250\311\257\\\214\325\210\316MH\303\002\243\316i\255PH*\234\313UY9\250\331j\006\025\003\365\250\311\301\244\"\223\024\206\222\216\264\230\245\003\212\212E\250\035j\026\025\023\n\211\222\223\030\240`\365\2441\203Q4 \364\250\0319\3057\312\246\262\342\233\2126\322\355\247\010\351\341qHE7m&\332M\264\005\247\205\247\201R\n\220sO\013\351R)+R+\023S)\251R\246\335\201M\315H\206\247CN.;\232\257qp\241\t\006\271\371\244i\245\340\325\230c\332*S\305F\306\240sP\261\250\231\2522\325\353\360\363\305]\2120\0074\222\361\322\242Z\030qP8\252\322\214\325r\265\033-@\351\212\256\351U\331i\240Rb\233E(\024m4\355\230\025\033\255B\313\232\211\222\242d\250\312S\nSq\212i\024\303P\260\346\220-!\2174\323\035\001)\302:v\312B\270\246\342\215\264m\244+@ZP\264\340)\300T\212*QO\247\255H\225:\320O4\242\246Q\305H[\002\253\317\'\312H5\213$\256\354FN*h#\000s\326\254\343\003\212\215\315@\355U\335\352\027\222\241/\232aj\366H\276Y1ZJ\006*)y\250\361KP\270\252\356\271\250\031j2*\'L\324\016\225\003G\232\214\307Ld\244X\211\243\312\346\234#\247yt\245*\'N\265\\\2550\250\2462T,\225\031ZaJiJc%D\311H\026\224\241\246\355\366\245\tK\262\223\030\2460\3153m\006\234\007\024\005\311\245+F(\305(\024\361N\025 \247\255J\275jaJ94\354\201N\rMy1\221U\244\311\3435\003\332\356\031\217\357TA\214M\265\3705:\311\221H\304T.F9\250X\002\274TE\021\201\301\250\377\000v\271\365\246*&I\'5\354\261\304K\364\253d\020\265\016\t4\270\244\"\243~\225]\373\324,)\204sLe\250\035j\"\224yY\246\230E\'\226\000\243\313\024\276]\036]F\313\351Q2u\315@\311L\331M)Q2TL\224\302\224\323\0354\2450\305\232o\225K\345\323Lt\335\224\036\005BFi1\212i\031\246\260\245\035)\300`PM&(\240u\247S\305H\265\"\324\240T\203\245&H4\240\344\323\267b\240\335\311\240\234\322+\355<Uk\245\017\363\n\254\222\02585`>i\216\001\006\240u5\001R3Q\0255\031\316+\337\002*\364\246Hs\322\242\034Rri1Q\275Uzn3Me\246\021\232\214\246i\246*\004t\326J\217fivb\233\232v3\322\243(ED\310MD\361b\230c\366\2464u\023%FR\231\345\321\345\346\232c\246\024\305\n\240\236i\216\203\265DEFE0\256i\245qM+\353Q\2650\323\227\2458\n1HE6\212p\247\212\221jE\251\226\226\202h\034\323&|\016*\020\334R\202i\245\251\205\263PN\230]\303\2556)2*\\\344TmP\265B\302\230\302\275\325\230\223M\'\327\2553u&i\t\357P\271\315Wzh\353JFi\204S\225)JRy^\324\306\212\231\345b\230c4\301nX\346\245\021\000\005\006,\324f\034v\250Z,\236\225\033G\212\211\222\242x\352\023\035/\226)\245)\214\270\250\034c\245F\006)\255Q\225\3154\256)\207\330S\010\250\332\242aM\"\225y\247\n\\R\021Q\232QJ:\323\305J\274\324\202\236\016)wQ\234\323\272\n\212R\270\371\215D\030R\027\250\313f\231\234\032\224\'\232\244\032\240\352`\223\025:\234\214\3225D\303\232\211\252&\036\225\356\254\270\250\3150\232@i\030\346\2425\023\nh\034\323\261I\212\231Tb\236\020\032R\243\025\013\255Bh\t\232]\270\024\320\271\346\235\266\215\240\324m\030\025\033C\270dUW\214\203\322\242)\236\325\031\216\233\266\243a\315E%@\313Q\225\246\354\246\025\364\2462\201Q\265D\334\324dS\010\246\021M\007\006\244\352(\315\004\323\0174\200S\200\245\251\024\342\245\rN\315&\352p4\342\340\n\241p\344\26501\247\346\223v)\240\345\252h\337k\324\027\250X\356\250\341l\255Hj&\250\230TF\275\325\352\006\250\330\322f\2239\246\236\365\031\244\305;\024b\236)\340\322\265F\336\365\036\334\322\343\003\212M\271\247\005\243m\001)\031j\"\010\250]7v\2506\020\324\311#\347\212\205\223h5Y\205FV\243+M)L`1\357P\267\035*\027\250\2150\212i\\Tl2j2\264\303\301\245V\305;9\351Hi(\006\2274\264\345\247\212v\352\\\322\346\243w\305T\221\262\324\253N\3155\215,JpX\323\315%\313~\344\343\232\243l\374\220j\331\351Q\265D\325\021\025\356%\270\250\332\2424\224\235(\3051\205 \024\360(\333K\266\234\0058\014\324n\231\245\013\305\0333K\263\002\215\264m\315;g\024\306\002\242+Q\262\324,*6\030\252\262\014\324\016\270\250\312S\010\002\243`*\027\305@\325\013\323\n\036\246\223\201Q\261\346\2439\246\032\214\212f9\247)\245\315!\244\024\242\224\361NZ\226\212L\320\0335\023\344\344\325|d\323\205:\232\3252\377\000\253\000Si]wDEe\257\311.*\3709ZcTmQ5{fsHi\270\246\221\212JP)\n\322m\247\001N\002\214S\202\323\266\342\223ni\3018\244\333\212B(\3058-\0140*\007\025\031\366\250\230\361Q1\250\217\275B\342\253\260\346\243aQ7\025\003\232\205\215Dj&\034\324m\222i\245x\246b\230E1\205FE4\255&1A\244\315\002\234\264\032U\342\245\007\212\t\246\232\024\363N\342\253\310\230<S@\247\001H\302\244\204\344m4\2450i[\345^k\036f\377\000H8\365\253\310~QCTL*&\025\355C\255:\214SXS@\247\205\245\331K\262\223m.\3326\323\302\320iB\323\261HE4\255\001i\341x\246\270\252\356*\006\030\250\232\242aQ\270\342\240l\324D\376\025\023\232\201\315@\365\023\n\214\217Jcq\365\250\210\3151\251\270\342\232\325\013\032a4\334\321M<Sz\236(\247\n\\\361H\r<\032\\\321J:\322\323Xn\250\312\021H)q\3054\214\034\212x\224\367\243%\301\315d\314\000\270\343\326\264#\037(\241\205D\325\033W\264\201N\305(\024\025\315\001)\352\224\375\264\273i6sMd\247\204\244aH\251K\214R\342\220\255&(\003\232\220\014\212\215\305WaQ0\315W\224\343\201U\036LTfBi\205\261\326\243b\010\340\324\'\223P\311\317J\200\323\010\3151\205D\302\230ED\302\232x\250\336\241j\214\322\037j94\323B\014\320\303\024\320i\335\251)\300\323\201\247\nu)\034Rc\024\244pj\035\264\264\021M#\024\341\367X\326C\374\323\3765\245\030\371E\rQ5D\302\275\245\016E<\014\322\201N\0034\360\264\365\030\024\354f\200\264b\215\242\215\264\2052i\312\264\215\035.\312M\224\233(\330\007Zq\034qP\270\250\030T\022p*\204\362c\201T]\2114)\315+.F* \204\032G\025]\315@y8\244n\005Bi\246\243aQ\265D\306\241sP\261\250\311\246\203\223Rf\232}\350\r\203C\220E0S\373Sh\025\"\212x\247\001N\002\227\031\243\030\250X\037JA\326\235\212i\024\262|\2201\365\254t\033\246\255$\351CTL*&\257dS\201S!\315J\0059E<\nv3N\002\227\024\241h\333H\306\221Fj@\264\355\264yt\205qH\026\215\264\204Uw\025\021\\u\252s\347\234Vl\334\036j\253\002\335(D \324\342>3Lu\364\252\262\034\032\204\340\217z\201\206\323Mc\221P\2650\232c\034T\016\325\0135B\315Q1\250\3157q\355N\317\255\004\323sN&\201KE\003\255J)\302\244\002\224S\300\245\307\265\0057\014Ur\273X\212\\R\005\311\250\357\316\310p+2\325r\371\255 8\246\260\250\232\241j\366E\351O^\rZ^E<\n~)@\247\001N\240\361I\270\na\303\037JT\0252\212\220\npZ\ng\265FS\024\230\2467\025\013\016\365\003\325g@A&\251=\276\366\366\250\336\334/j\213\313\013A \n\205\330b\263\356\034\202qU\274\323Am\335j6\250X\323\013TL\365\0035D\306\242cQ1\246\026\246\347\232]\324\205\361M\337OBZ\244\351M\007\232x\024\240sR\250\315;\030\247\212p\024\360)\330\245\002\253\310\270z1J\253\315S\324\217\312\005U\264\\\n\275\216)\214*&\025\013\n\366E\034S\300\253\021\2361S\250\251\002\322\355\245\305\007\000f\243-H9\316i1R\240\251\007\024\340j\302-+\n\214\212\215\252&\300\250\034\325g\3115\003\324y\002\241\221\252\254\215P\263T\016\325J~k>F\330jDp@\2476*\007aP\267\265Ws\212\205\232\242g\250\232J\210\276i\205\251\241\251\333\2513M&\237\033T\244\346\205\034\325\2208\243mH\243\212v)TT\200S\300\245\305(\246H\2319\246\355\247\204\302\223X\367\255\276B\007J\222\336<(\253\030\250\336\241j\205\253\331\224qN^\265\"\037\232\256 \310\251\000\245\305(\025\034\265\0363O\2152y\247\024\000\346\234\007\034R\323\324U\244\340R\265B\325\003\236i\2147\003UO\007\223Q;dUv\340UWl\032\205\3375Y\316MD\306\240sUf=k.v\353Kn\341\207\275H\357\212\201\244\006\242g\250Y\263Le\315@\353\212\254\324\302p*2\324\335\324\340\324\271\246\026\247\304jqR\240\346\247\307Jx\024\360\264\355\271\247\205\245\003\024\361N\305.)6\344s@L\221Q]\270\2110:\326:\251\222L\232\272\213\201Jj&\250Z\241j\366\304L\212f9\251PU\250\316\005;94\345\346\236\005G\'&\221W\234T\244`qM\344\322\343\002\224\n\224\n\231\017\024\023Q9\250\017\255\034\021UYpOz\202CU\344\351Tf<\361P1\250\034\324D\343\255F\304\032\2550\3105\225t\207\223T\321\312\036*W\230\260\346\241\337\223C\270\307Z\256\317\317\024\3174\212C.j\0269\246\021\232\211\226\242<P\032\227u%I\030\346\254\245Y\215sVB\212P1N\024\341N\247\001O\002\235\2121J\0274\343\210\324\223X\367sy\256@\242\030\260*|b\230\325\013T-P\265{x_\226\205\2175 \\S\306E(52\260\002\227w\2457\2559\0079\247\023\305 \024u4\341\326\245\002\236:R\023P\261\315D\306\243g\307\322\242f\316qUdj\253#\325Y\rWcP9\305W\221\352\271\222\243w8\252S8#\004U1\215\324\222\201\216*\253\270CP4\271\351Q\2310i\215&i\236`\246\2313H_\024\201\367\036h\221x\315@z\323\205(\025i\024\005\367\253\021DO5r8\3609\025&1J\0058\014\323\200\245\002\244\024\352SH9\251\020`\363U/\246\302\355\006\263\242\217sd\325\300\270\024\326\250\332\241j\205\252&\257s\000m\241F\r<\n\\R\342\212QR\216\224\341\305\035M\006\222\236\242\244\024\244\340TL\325\016\356i\214j23PH\330\315T\221\352\254\215P9\250d8\252r\311T\244z\256\322s\305!\220\221\315V\227-U\330\005>\365\013\270\317&\252\315\317CU\217\006\242rsQ\226\3050\265\001\270\246;\322)=ju\223\214\032M\231\351J\027\024\340\274\325\210\306p+B \025j]\330\245\0074\372x\036\224\360\236\264\273pi@\245\244\357\305H\243\271\246\314\373W5\225!2\275O\034{E<\361Q\265D\306\241j\205\252&\257vQ\223O\013\315(\024\340\264\273h\333F\332p\024u\247 \240\365\240S\324S\307\002\230\315P;\324\005\271\241\337\025\031\224b\252\310\371\252\222>*\263\275WiqP\311(#\025FBI8\252\333Y\316)\031\002\216j=\303\322\242\221\205P\231\262p*\264\2101\235\334\325f8\353P\273T,\325\003\311Q\031i<\332\024\356<\324\243\212w=\251\351&\323\203S\207SN,;T\22075y\rH\005J\202\245U\311\346\247\003h\340Uw\224\253\363OY\225\273\323\203\002i\304\201M\363\000\245\r\232\212y21U\343\217\234\232\233\2651\215D\306\242cQ5B\325\023\032\367\244\\S\300\247\005\247\001K\212\\{Q\212gCG&\2348\315%8S\305)<T\016\325]\332\242\335\315A4\265\030|\212kt\252S63T&\227\025L\313\270\343\232^\325\023\020*\274\222\355\351\305Uy3\336\243/\357U\246\233\035\rg\315+)\252\257p\335\352\006\231\215F\\\232\211\336\240\221\352\003%&\363\232\225\036\246\017N\363\005*\266ML\246\245U\315X\210m5q*\302\363S%M\030\313T\300\214\32471\003\326\241\020\205\357FpqR/4\2059\241\334(\250F\\\344\323\372R\023Q\261\250\230\324Lj65\013\032\211\215{\341\247\255I\326\224\nu\024S\010\364\243\030\244\242\234)\340\342\243v\252\3625Wf\250\367`\325y~f\300\245\013\264TR=Q\235\305f\316s\234Ud\030j{6\005V\226N\0175FY@\357U^\340\n\256\367G\267\025ZI\262\0175I\3459\344\346\240\222L\324-!\002\231\347v\246<\234\324\022=W\337\315.\372\2266\315I\273\024\34595f4\316*`1S%L\255V\342l\212\267\030\251\2623R\306y\025ch\340\367\250\2475\016Gz\000\035i\305\325\005@\323\0268Z6\347\2559@\024\214j2\324\3065\023\032\211\215F\315Q1\250\230\327\320\000d\323\302\323\261N\024\242\227\024\224\323I\236)(\245\024\244\340T\016\365Y\336\241f\2463\0002i\261\214\363D\216\000\252\023\313\214\325\007\223uU\221\211\310\2507\001\326\241\232a\214\n\245$\243\234\232\314\232}\316pj\007\220\001\315U\226\340\016\365N[\237z\254\3679\357P\264\376\365\023OL\363rhy\006*\006\2235\021|\032O2\245\212Nj\312\275M\031\031\311\253j\343\034S\303T\252\365*\022\306\264aP\024f\254\007\300\342\234\246\254Fy\025h\0163\351U&\223\3465Y\244\'\245 v\247\034\221\315:5\301\251\030\342\231\272\232\315Q\026\250\331\252&j\215\232\243f\250\330\324lk\350UZ\220\014S\261N\013F\3321HE4\212\214\360h4\235)sLv\252\316\365]\332\242\3150\234\237j\014\201G\025Zy\2532yI\357U\267\032\206I\007j\252\357\305R\232oJ\245+\2229\252\022\270^\365Fk\214w\2522\334\023\336\252<\331\357Q\0313\336\230\362c\275E\277\336\2173\025\033L}i\206Zi\2234\201\351\351&\rYI\211\253Q\271\"\247V5\"\311S\243\325\313c\226\346\264Q\270\247\006\346\245SV\021\352g\230\210\316*\233\266T\223L\006\236)I\245V\346\225\332\230[\212\215\232\243-Q\263Tl\325\031j\215\232\243&\243&\276\214Q\305<{\323\300\247Rb\220\323I\246\226\250\330\212nsE5\233\025\004\217U\235\352\006z\215\237\002\253\313)\003\212\254\327\030\030&\253\3119#\255Ty\200\252\317?\275Wyrj\255\304\373W\255Pi\300\0075F\342\357\260\254\331\256I\357T%\236\252I-Wi)\003\323\035\351\201\263J[\212\201\232\230Z\233\270\323\303f\244S\315Z\216\255FqSn\251\020\346\254\306j\334\'\006\257\243qO\rR\253\324\310\365&\340\303\031\252\316\330R)\241\251\341\250\337J\036\202\364\322\374Tl\325\031jc5F\315Q\226\246\026\250\313S\t\257\243\326\236)\340\323\251\245\2050\2650\275F^\232Z\231\277\024\031*&\222\240w\252\356\365\003\275A$\234UYd\343\255Uy=\352\264\217U\244z\253$\225\001\223\255P\272\233<\n\241#\026\035j\224\307\025Bf\252R5Vv\250\031\351\276e4\276h\337\212i\222\230\315Q\026\2405=ML\255\212\261\033\325\204z\224=L\215Vcj\265\024\234\325\324\223\212\224=H\257\232\225_\024\342\374\361QJ\334\373SCS\203\321\276\224=\033\351\245\3522\364\302\324\302\325\031jajajaji5\364\222\323\3058PZ\243-Q\263Tl\365\031zizc5Fd\250\332J\205\344\250\035\352\274\222Ug\222\252\311-Uy*\254\222\325i%\367\252\317&j\031$\n+:\342A\234\3257\237\216*\234\262\016rk>iG5M\345\252\362IU\313\022h\372\232ajM\324\233\251\214\365\031z@\365*=N\255\221S#b\246V\251C\324\321\275[\216LU\204oJ\265\034\270\340\325\205|\364\251\221\252`\324\245\275)\254r\rB\037\236i\333\3517\322\357\243}4\2750\2750\2750\2750\2654\2650\2654\232Bk\351Q\322\234\r\005\261L-Q\263\324L\365\023=0\2754\275F\317Q3\324FJ\205\244\250\036J\255$\225VI*\254\222UY%\252\222IU\236Z\201\3445VY}\3536\346\343\255gIpMWyI\252\322d\365\252\316\r@\355P\263Te\375i\246Ja\222\220\313M2S\013P\rJ\206\254#T\352\325\"\265H\032\246\215\215[\210\346\255#b\247V\315X\205\271\253j\325 z\013\322o\252\356\330\177\255.\372B\364o\243}!zizazizajijijM\324n\257\245\305\005\261L/Q\263\324L\365\033=F\317Q\263\324fJ\211\244\250ZJ\205\244\347\255D\362T\017-V\222Z\251,\265U\345\252\262KUd\222\253\274\200\014\223Ud\234\023\305S\232oz\316\232\\\346\2523\n\211\210\250\235\352\254\222Uv|\324\016\325\0135FZ\230\315Q\226\305&\352P\325*\232\225jT\253\010jU\251\026\247\216\256F8\251U\252d&\254\306pj\312\275?}\033\351\013\324r\034\256Gj`~)\013\321\276\215\364\322\364\322\364\205\351\273\251\013SKSwQ\272\215\325\364\301jc=F\317Q\263\324L\365\033=B\322Tl\365\031z\211\236\241i*\273\311P\264\265]\345\252\322IU]\362j\274\257\201\326\251\264\234\362j\264\327\n\265\237,\345\317Z\200\275T\232J\243,\225X\311\232cIP\274\225RW\252\306L\032k>j&j\2179\240\324mM\247\255L\242\245Z\225\005N\242\245Z\225jd\253(ML\265e\rJ\255S+\361N\337N\r\232B\324\335\334\021P\206\244-I\276\202\364\322\364\205\351\273\350\335I\272\232Z\223u\031\245\335_K\026\250\231\3522\364\306z\211\236\241g\250\231\352&\222\243/\232\215\232\253\311&*\264\222\372T,\304\324.\330\352j\264\222UY$\252S\314{U\t\'#\275S\222]\307\255B[\025\023\311T\245\222\251H\3715\0136*\026z\201\344\252\362>j\271=i\205\251\245\251\231\2434\207\232LS\324\032\231EN\253S\"\342\246Q\232\225V\245U\251PU\2055*\361R\251\251CT\240\361K\272\234\255C5F[\025\036\356i\013SKSKSKRn\244\335K\272\215\324\233\2517Q\272\224\032\372I\244\250Y\351\205\3526z\215\236\241g\250Y\3522\371\244\006\230\355\201T\245~\265X\266M#\266\005S\226J\254\362U9&\252\222\310\rg\316\370\'\025I\236\230d\250\235\370\252R\234\232\256\347\025]\332\253\273T\016\325\0136j75\0214\204\322P\005.)\300T\252\265*\255L\213S\250\251UjU\024\354T\211S\251\251\224\324\253R(\346\245\307JN\224\3654\255P\267z\2046sHZ\232Z\230Z\232Z\220\265&\352]\324\273\2517Q\272\215\324\273\253\350\306\222\243/L/Q\264\225\013IQ\0311Q4\231\250\313\322\254\237-C$\231=j\274\244\036I\250I\013\316j\264\323g\201T\235\352\254\322\340U\007\233\223U\244\2275VV\3105U\372T\r\221P\263T\016\325ZCU\334\325w5Y\330\212\2179\2460\3154\203M\305\030\240\n\220-=TT\252\242\245U\251\225jUZ\224\nx\025 \025\"\214T\200T\212je9\251\343\\\323\363\203M&\234\247\326\206jc\237\2275S8&\202i\244\323\030\323\t\246\356\243u.\3527Q\272\215\324n\240\267j\372)\236\242g\250\332J\211\244\250ZJ\215\244\250\332J\214\2754\311\201PI)\035*\264\223\037Z\257$\307\326\253\264\231\315@\317U&~\rf\313\'5Y\346\250\232L\324L\325\023\236*\253\266*\027j\256\346\2539\252\356j\026\250\310\240\323M7\024\240S\202\324\212\265 ZxZ\221EL\202\245\013R\001R\240\251\002\324\212\264\360\264\340*D\253qc\024\215L\3174f\232\317H\355\362UV<\320M4\232a4\302i\231\2434f\227u\033\250\335F\352@\325\364+IQ\264\225\023IP\264\225\013IQ\264\225\031\222\232e\250\314\231\250\244z\251$\225Y\244\311\346\241y*\273\313U.%\342\263e\222\2533Te\361M\3633M/U\344\3475Y\332\241v\252\362\032\256\325\013u\246\363IF)6\323\302\323\302\324\201i\341j@\265 Zz\214T\312je\\\364\251Uj@)\340b\236)\330\245Z\261\031\342\203M4\225\024\234S\031\262\225\001jM\324\231\246\223Q\261\246\223M\315\031\243u\033\250\3154\265(j\372\t\336\241i*\026\222\241i*\026\222\2432S\014\231\246\263SK\340T\022IU\036Nj\273\311\212\255$\265U\346\367\252\223M\232\252\3075\013SJdu\250_\345\342\230Z\243v\342\252\310j\026\250Z\240j\214\2126\322m\245\013F\312P\265\"\255H\253R\005\251\024S\361J\005H\253S\3061S\201R\001K\212z\2558-(\034\324\212\010\247S\t\246\026\244?0\250\266\225\353\322\241\221q\310\250\263\212\t\244&\243c\232i4\322i3Fh\335Mg\244\006\234\r{\353\311U\236J\205\244\250ZJ\211\244\250\232Za\232\217<t\250\344\233\336\252I8\035\352\253\334\201P4\331\025ZIj\2735B\347\212\200\232\214\232ij\206S\232\203&\241\221\252\271l\324lj&5\031\024l\365\245\331M+@\024\354R\205\251\002\323\302\201O\013R\005\247\205\247\005\251\225*U\025*\212\220\npZp\030\247\212r\217Zp\024\204`\323\030TMQ\346\235\234\216i\204\216\207\245W\2210x\250\263HM4\232a\246\223HN)\245\251\013SsK\234S\201\257vy*\273\311U\336J\205\244\250\332J\205\244\250\232\\T^v\016MC-\317\275Sy\211\250\231\352?7\007\025\024\217P4\224\302\331\250\211\2461\246\026\250\\\324]MG\"\212\200\212\214\255D\302\230E\030\245\240\212LR\342\224\nz\323\305=EH\005H\005<\n\225je\247\250\251qJ)\300S\200\251\002\344\322\355\305\014*6\024\302\265\023G\3157n)\244S\010\310\301\252\262\251\006\230\016i\r0\323I\246\023L-M\315.isFk\334\032J\256\362Uw\222\241i*\026\222\242ij\027\226\253<\276\365\003I\357Q3\324O.\005W2\363N\336\n\324\016y\246\027\3057~i\214\325\0314\306\351Q7\265D\315Q\261\250\311\24674\314R\355\243\030\240\322\036\264b\236\0058.*e\214\021\301\247l\3059EH8\247T\213R-J\246\245^i\340R\212x\251T\323\210\310\244\333M+L\"\243ja\250\315F\302\242q\221UXm4\302i\244\324l\330\250\213f\233K\2323FiA\257gy*\007\222\240y*\006z\211\244\250\036J\201\344\250\032J\201\344\250^Z\201\344\250\014\234\322\211\251\305\363Q\26574\023Q\223L\3150\324,9\246\021\212\214\323\0174\336\224\271\244\315\035iqF\332z\247\275L\027\326\2342:T\241r9\243m8\nZx\251\026\244\025*\032\230\036)qN\035j@02ju\301^(8\250\310\024\306\025\003\212c\n\214\323\032\2435Ve\346\253\223\212\215\237\322\2429&\222\2234\231\245\315.h\025\353\355%@\357P<\225\013IP\264\225\013\311U\336J\201\344\252\357%B\317Q3\324e\251\233\271\247\2074\355\371\024\231\346\220\2650\232a<\322\036\224\316\325\013\232\214\232ni\t\246\021F)\312)I Rn\346\236\257R+\212\220\032z\276)\371\356)\300\323\251E<qO\006\244V\251\320\346\245\307\024\243\255K!\004\014T\221\034\nV\250\233\212\215\215Fy\2465D\324\303Q\266{Uv;\270=j\264\203\025\001\246\023\212i4\334\322f\212\\\323\201\257\377\331" +byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\006\nIDATx^\355\334\331\222\343*\014\000\320\251\374\377/_\327\255^&\023\307\361\0166H\347<ug\263A\002\204\235\356?\177\026=\336\037\000\310\3439\005\016\257\217\002?\014\214\340z\t\260j\265\222^\022\200Z\376\016\255.\206\330\\\272NO~\372\010|\231\313!\200l\254\224@\010&\263\334\304\037v\351u?|\346\274M\023\000\000O)J\2433\265#\001H\200W\237\306\374\260\322E\237\336C\034\263\361\235}\242\tki\013\034\021w`\265=\2435#n\002$#\337\001\350\325\236b\344\343k-\202\313\336\373\347c\'\002\000\000\320\250\367]\035\000deM\204-\334\003\200\027\351\006D\272\006\357\224\246\226(\222\010\355\366\326\243\335S\273\330\277\216\360\325z\010\312\330f\003i\002!\030\312\225\005\336B\310\035r\3330\0026\274\204\261X]v[kn;0\000\000\000\255^\r\264U\00463a@h\215\226*\244e\321\201>\030\253\237<\327\324x\335s\331\337\005\014\001;\017\000\310\300\325\025\000\2567\267\203\236{\374\220\242\037\226\200\222\000\340\020\313Mr\022\000\240\030[\022\216YX\214\027\236\242\031C\307\203\277\3373\377\344\266\377Bz\327q\271\314\362\\,\001\000\000\202[.\007\211gs\304\177_\270\371\365\304\"\360\331u\232\001\235\2366\274\221\311\300-\032\276\027\320\360\251\305\262m\001\332\366*\256P\374\336q\351\317\003\000\000\240_\007.\000\034x\013\037T\337\236\377=@\365\003\001\000\274R-\002\375\010\271]*9\r\207\354 \000\000\000\366\262=\034i\240;~O\341\3305\200c\357\2421g\322\360\314{i\310\321\261,\001\202\220\000\000\300\026u\326\376\311_;\037-M\306\312|JD\337=3\354\350\237\367\000\365\244\347s\207jv\214\177\000 \026e@^\027\307\376\342\303\261b\020\221\344\\\034\001\312+=\263X\251j\321\263\000\364\241tm\261\327E+\346E\207\341V\367E\371\276#\323\004\t\200$\310N\002\000\020\304\335\027\010\370L\251\321$\303\005\000\000 \205\347\366\317>\020\000\000\346\204\272\231\025\2521\020\302\337QYit>\367\373\225>\237Rf\003t\356\222\315\373\273g\017CtB\017\274/\t\2045\236\362-\000@\313n\232\243n:\354uj-\372\265>\227NH\200N\010\024@\026f|\000\322\010\177%\347\234\331\356Q,\360\211\274\210hv\032\000 \021\253A^\207b?*\n\037J\304\276\274\306k\030~~_K\203b1^;PGv5e\327\213+(\026@\000 55\005p\237\331\031h\366\211\266\335v\332+\007^yz\352\356\355n5a\033\006\020\307\356E\013\000\350\2225\377\220\323\273\332\323\037\320\233(\211V*pM\365\307\025\'s\3051\340v\022=9\t\000\220\315\317\314\177f\376/\265\275\340\026gBO \3061@\034\026w\000:\365\334\226\254\355O\326\326\272\265\347I\351\353\337#\214eK\224I\007\000\220E\266%o\302\032\010o\014\212\344$@.\3432 }QpP\244Q\023\251-i\t\"\000\000k\324\214\'\331=\323\244\303#\373\360\033\001\240\013V:\000R\033\206\351\327\343\263K\333!i\033\236\335k\340%\001\000\000\267R\220f%\362\367\320\357\000\000@L\253\273\035_\364\017\332\003\2555k5\023/\326\332\371p1\t\000\000@o\036\207vy\t+\337\355M>\324\243tO\334\001j3\323\002\r\331\276= $\t@\033\232\250\216\374\337\204x\232H\254\375d\"\000\000\334\257\323\355\004u\004\332\246\311l\370\307x \227@\213\031@%j\203\276X\3316x\351\244x\371]\240E\005>\242q\001[\370lR\300\266\0010\343\247\242Q\374%7\310\201\254*\307]Q\331\262\237\340\307\215Q\334\226\225Ub\0228\362\247\001}\306\247\317\263\256\356H\002\320\200\207\214\246\016\211\005\345Xbc\020\307\344ZK\200\342\347\023|\345\037\312\367X\020o\201\017\330M\337\033\335\200\355\002\200*\202\327\204\300\275\224\345e\350\307\234\252.\321U?\2746#\"\210b\201,\366A\271\350\266\250D\026\000xuam\320\3656\023\000\000B\272pC\000e5\277\305l}t5}~\315G\267\007Y:\261\351L\006\000`\037\305\335\001Y*\177\026\254\3747\260\346s\344\367\364\233?\317\336|\367\353\320x\307\216On\364\333$\255\233n\0104\313\310IN\002\320\271I9@O\204\357rmM\372\022\340IW\314\3201k\226.\366,<\365k\375\025\177.\2306>\035\340\323c_\346\036\347\3338\240\233\302\013\264i\347\000\336\371r\000\200\306\274U3\212\233#\036\017;f\000\216\262\366\002@\233\336\327\350\367\337\273\366\322\230\274\373\331\363-\017\225\023@\n\347g>\"\350~\375\352\276\0017\323\177\000O\243)Q\241\224\211h\247\246\030b\201\364\000\200\313(\312\001\340(\233W\200:\314\257\000\204aQ\333a\347u\312\235/\007\000\332c9\007\2022\275M\244\332\034\213\377~\361\372,^\213\000\000\000\226\330\005\001\000\344\223\352\346\017\000@V\212>\026I\020\000\210\305\332\016\231Mf\200\305/\202,>\t\000\000\000\320\024W2\000\200\350&\367y\200\210\346\206\372\353\343\377\275\374Lvs\031C\022\022\000\000\000 \231\177\267\305\335 \007\000\000\200\256\270\273[N\207}\331\341)\003\000\000\264\302\226*\013\221\006\0023\305\001\300Yi\2777=\214\352\210\264\335\220\272\351\000\000\000t\306=\201\354\356\276\212!\003\201UwOT\000\000+\354k\000\016\262\337\343\213<\000\000\272\246\230\001\000\200\350T\375\200/\005\364\345w\336n1j\377\003\020\243\377\206\213\235b\021\000\000\000\000IEND\256B`\202" diff --git a/core/res/geoid_height_map_assets/tile-7.textpb b/core/res/geoid_height_map_assets/tile-7.textpb new file mode 100644 index 000000000000..83f1fcbf89c3 --- /dev/null +++ b/core/res/geoid_height_map_assets/tile-7.textpb @@ -0,0 +1,3 @@ +tile_key: "7" +byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\004\003\003\004\004\003\004\005\004\004\005\006\n\007\006\006\006\006\r\t\n\010\n\017\r\020\020\017\r\017\016\021\023\030\024\021\022\027\022\016\017\025\034\025\027\031\031\033\033\033\020\024\035\037\035\032\037\030\032\033\032\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\364\241\311\247\272\014UR\270j\221E;\024\240R\342\227\024\355\271\244\3074\341\326\234)\340S\302\324\2121O\025\"\324\202\236\265*\324\213R\016\265 \247\221\300\247!\035;\324\312)\342\235\232p4\352\rFx\346\254B\341\206\r<\257j\257 \321\022\0265<\361\205N:\325#\2321IM84\204\n\215\224TD\n\211\361U\334Uw\025\003\212\201\305VqU\334T-P\270\252\322\016*\234\253Ud\025Y\305FV\242\"\241a\232\214\245D\351Q\024\250\235k\327\2323\236)\256\016\334\032\213m8\np\024\340)@\245\3058\nP\264\273i\341i\301i\340S\200\247\201O\024\360*E\251\026\244Z\221jE\251\224\016\365\030 \310qV\024\323\301\247\003N\024\340ii\254)\250v\265[S\221\232c.\346\346\254\300\2358\242\362<(\"\263\366\322m\244+LaL5\033TdT,*\027\250\\Ug\250\030Uy\005We\250XT\016*\264\202\252\312*\234\202\240qP\221Q\262\324L\265\031\024\306\025\013\n\211\205{\010\036\265\024\200T;y\245\013N\333K\266\234\005.)\300S\200\247\005\247\001N\002\224\np\024\360)\300S\305<T\202\236)\336b\257SR\t\227\037/&\201\276C\311\300\251\321v\212\224\032p4\341N\024\341N\024\244f\243#\006\254Dr\274\320\300\203V\255\337\212}\340-\030=\2534\214RQ\212c-F\302\243+Q\270\305@\365]\352\026\250XT\014*\007\025\013-@\353U\344\030\315U\220U9\005VqU\330Tei\2053Q\262\032\210\245D\313\216\265\013\212\205\305z\363q\322\240y0phV\rR\252\322\342\212)\300R\343\322\224\nx\247\001N\305-(\247\np\247\np\247f\202r1\232b\214I\216\306\257\244`\n\225i\340\323\201\247\003O\006\234\r8\032x\247\001HW4\014\257J\221X\265O\037\006\255I\363\304@\254\366\217\232aZLSH\250\312\324o\305Wz\201\352\273\212\210\212c\n\205\326\241+Q2Uy\027\025VAU$\030\315R\222\253=@\302\230E5\216:Tg\232\215\270\252\356j\007\250\034W\255<\200\n\243<\302\2515\367\224\371\315\\\203RW\003\232\224\335\016\306\234\267 \367\245\373H\315J\223\206\251D\202\234\034z\324\313\315;\024\264\003N\247R\212p\245\315;\265F\354W\232\204\334\342A\3175\247\004\333\30758\251\001\245\024\361O\035i\302\236;S\3058S\351\030qO\203\275J\006\rJ\200\223\365\250\245]\246\2414\322)\244Tn*\026\250\034T,*\007\025\t\025\033T-Q3TLj\0075RSTe9\252\216*\273\255DV\232\313Q2Tl0*\273\232\200\324l\265\023\255z4\267\003\007\232\313\270\270\311<\325\tK9\342\230\211*\037\224\232\260\262\314\007SR\255\304\242\247K\306\376!Z6wq\271\001\216+ac\211\324\020\334\3242\304\253\321\251\022M\275\352q>;\346\246W\rN\306zR\342\224\np\247\nQN\002\231*dV;\356[\234\023[V\317\200*\3720\"\244\007\024\361O\024\361\3058\032p4\360i\342\236)q\272\236\213\264\324\246\245\214\322N\205\206@\252\244\021I\214\323J\323\031j\026J\201\326\241e\250\035j\026Z\205\226\241u\252\3561P\265W\220\3259Nj\254\225Y\226\242e\250\310\250\330TNqU\2449\250\030TdS\010\250\334q]K\\\356\025\\\202\346\246H\272T\313\030\251\004c\322\235\345\n_!Oj>\317\267\225\342\246I$A\200\306\247Id\'\3469\0251\215\230d\032\201\244\222>\271\305Y\266\273$\326\224r\206\02584\340i\302\236\0058\nv*)\030(\254\231\030I?\313ZP\214\001V\343r\rZV\315H\0168\247\003N\006\234\r8\032z\232\224\032vjd\0250ZF\351\212lNw\n\270pW\212\253\"\342\241\351IM8\250\236\241l\032\211\222\241d\250\035qP\262\324n\234U9V\2538\252\262UI\005Wu\250Yj\026Z\215\226\253\310j\273\344\324%j6\025\031\024\322*\027\256\221b\247\252\000jA\307Jp85 l\323\301\247n\247\251\315<b\246A\307\322\247\004\355\310\374i\031C\212\245*\030\216S\212\236\326\364\202\003\032\325\216`\303\203S\t*EqR\253\n\220\032R@\352qY\367\327\001\020\205\357Tl\327s\3565\265\020\030\251\024s\305YQ\3005 j~iA\247\003N\006\244SO\006\236\234\232\270\215R\001L~\225[y\215\262zU\350\246WN\265\034\247\232\200\3223\201Q\026\315B\3715\001\342\234\016W\232cTL\265\021Z\205\305T\225j\243\255U\221j\254\213U\331j\026Z\205\226\241qU\235j\026Z\205\226\243aQ\221Q\267\002\253\270\256\246\202h\335F\352p|S\303\323\267\323\325\352Uz\231_<T\253&:R\207\301\241\300qT\336\022\255\225\251\340\270)\303U\305\272\351\315J\267$\036\265f;\241\336\246\373j\201\305V\236\367\336\263\036G\270\177j\321\266\214\240\025\240\215\212\231\033\326\254#v5&y\247\003J\r<\032p4\360i\340\324\261\034\346\255G\324U\2208\246\260\252w*q\305$\014Ur;U\304o1zTrD\303\'\025M\362\247\232\001\310\250\334\324M\355L$\212\214\271\357HZ\243cP\265W\220f\253\272\325Y\022\252\310\225Y\322\253\270\250\030TL\265\003\256*\006Z\205\205D\313L\331P\313\201U\034\327M\272\220\265&\3527\321\276\234\037\232xcN\017R+\324\311%J$\251\267d\0029\247+z\323\260\032\232a\006\221\240*F\r&]i\004\222zT\352]\307Jp\267.~cVa\267\013V\200\333\214S\325\252\302\002}\252\324})\344\323\201\247\212p4\340\324\360\302\235RBy\253\221\236EZV\315;\031\250\244\2175Q\334[\003\221\326\241\267\324B\313\216\325\260\223,\313\322\253\\@95A\270\250\330\324D\340\322\036j6\025\013\002)3Q\2675\013\324\017P8\315U\224b\251\311U\330T,*\026\025\023-B\313P\272f\2421\324R\035\242\250\310rj\006\025\321f\232Z\230^\215\364\273\250\335OY=i\373\307jz\275J\257\212\231d\310\305J\222\021R\254\204\234\324\350\371\025&jD\3062FE&\325\'\216\224\341\020\364\251Q@\343\025&=iA\247\356\243uH\2221 f\257\305#*\362*A \'$\322\203\371R\371\200w\247\007\317\265<\020\335\351\341G\367\215/\314:05$nC|\325z3\337\265ZF\251\224\322\221Y\372\224d\247J\310H\210`En[\202\261\256MYl2\237Z\314\230`\232\254MF\306\224\036)\254*\027\034\032\216\230\325\023{\324\016*\273\325Yj\243\216\265\003\212\205\224\324ej2\265\023\255@\303\025\014\214*\224\315Y\357\'\315Q\264\265\320\026\246\226\250\313P\032\215\364\340\364\340\324\360\324\365z\225Z\245G\305L\255S#\35550q\236*P\334T\261\313\216\243\212\220\225\352*h\361\267=\350i\001n)w\322\356\24058\032r6\r]\023\226@\270\351J\244\324\241\370\245\r\315;u85H\256j@\364\354\325\313yr\274\232\275\033\202*ej\225Z\251j\023\2026\016MS\215G\031\255 \000E\307J3\317\025R\344s\232\244z\324mB\232SP\310j#\322\243j\205\315D\306\242|Ui\024UWJ\256\313Le\250\\b\253\261\305W\222LU)\256\000\351T\244\270&\252\311)j\254\325\023WB\315L-L-I\272\215\324\007\247\207\247\206\247\206\251U\352D|\032\235\037\336\247V\315J\215\371\324\252\365 j\230>\341\322\236\257\371\324\204\250\307\257zqe*1\326\223u8\032pj\221\r^\205\224!\365\251RA\214b\220\236y\2434\240\323\305H\264\360i\340\324\3219C\317J\277\034\230\344T\253p\007=\252\031\365 \200\205\252P\271\231\2131\315]\333\307\025f\026\334\230=\250\'\006\240\270?-S&\243jh84\273\252\'94\302x\250\232\241~*\0065\023\032\211\252\273\340\346\240b\001\250]\200\252\322\275Q\232`\277Z\317\226Fj\254\365\003\212\205\205B\302\241j\333-L-L-M\335F\352]\324\340\325\"\265<5H\034c\336\236\216*Tz\260\262qS\307&\322\rK\346\2069\003\025 \223 T\310\343\036\364\360\370\346\237\36374\241\251\301\251\301\251\352j@jdsVT\232\221NMHq\332\200*@)\343\232P)\375*Tn0E=da\307QJ]\210;\016\rUh\345rwQ\004\255\013\355qZ\221I\270U\210\376\\\232Rj)\233(j\236)\255Q\221\315!\351Q=B\315\212\214\277\255F\346\252\274\233MFe\035\352\026\225}j\027\220\016\365VI@\351U$\230\325Ief\252\257\317Z\205\305@\342\240qP\260\250\036\241j\325-L-L-M-@jp4\006\251U\251\341\251\301\251\352\3252\265J\257S\253\344T\350\330\025*H\000 \363OW\251\225\263O\363\010\030\007\212\221Yvd\236i\003\023\323\245=^\244V\251T\324\311\326\256G\265\207&\226\236\rJ\244S\201\251\001\247\216\264\341\315=jE\247m\311\310\353OV*p\303\"\244\222\3329Wp\024\220\257\226p{U\235\324\205\252\263\271v\300\351JS\002\242aQ54\216*7\351U\332\241`s\315B\344\363\203U_\336\240r\rB@\'\236*\tT\212\254\365]\352\007\252\357P\260\250\034T\017P=B\325\003\n\320-L-M-L-@4\340\324\340i\352j@iwS\203T\252\365\"\265X\215\252\300$u\251\021\206EX\334:c\232Uz\2205.MM\023\200\016ic \223\272\245FS\327\212\224\020:\034\324\310julT\310sR\212z\340S\367\np>\224\360\364\360\324\365j\2205L\2074\346 \nXe\031\332MJ\024~4\355\330\246\034\277\002\200\241hcU\330\344\323\010\250\311\250\230\324-\315D\375*\273Uy\006j\263\214T\017\232\201\311\250O\0078\252\362rs\212\205\233\003\201U\236\241z\201\333\214Uw\250\032\241j\205\252\321jijaji4\252i\304\322\253T\252\324\355\324n\247\007\251\025\252Uj\231\032\254,\234T\210\334\324\301\360\335jM\340\236*Ej\2206i\301\260jEl\234\232x8\251\221\252ej\235\033\246j\326\365\000c\255;u(l\323\201\251\003S\203\323\203\324\201\351\352\3652\2759\233\"\230\215\207\253Fb0iL\231\031\024\365\223\tM\017\232k\034\323\010\342\243cQ6OJ\214\241=\351\214\204Uy3U\3335\003\325w\250^\240aP=@\340\212\254\365]\352\0075\003\232\201\315@\365\013T\017S\223L-M&\232Z\200\324\355\364\241\271\247\207\247\007\247\206\245\006\244V\305J\255R\243\325\200\371\002\246\215\307B)\340\374\330\0257\335\305J\215\305H\247&\244\347\322\234\032\244\014*U\315H\255\216\265:=L\036\244W\355R\003N\337N\337J\032\236\036\234$\251U\352tz\227vEF\371\007\"\246\211\303\'5*\256\345 \036\224\210\340\214\032yB9SI\311\353Mj\211\215D\336\324\336E1\213\n\205\333\332\253\276*&\013\216z\325f\343<Uw\250[\245B\302\241\224n\252\262%Uu\305WqU\334T/P5B\325\013\323\213S\t\246\223I\2323I\232pj]\364\340\364\360\365\"\265I\232z\265N\246\246\rS\241\356:\324\321\311\216\243\232\220\023\336\244V\251\003T\313\'@zT\203\004R\240\311\353S\253\355\340S\367\344\212\2205J\257\212\2208\251\026J\223viwR\207\247\007\247)\251\225\252Uj\234=;9\246\357h\217\003\"\246I\207U\342\225\324\246\037\261\251\221\362:\322\223\336\242f5\033\034\324g\"\232}\350b\010\252\354*&Z\201\205@\342\253\270\250XT\rP=W\220Ui\005V\220Ug\025\003\212\205\205@\342\241aL&\232M4\232L\321\272\2234\233\250\335NV\251CT\212\325(jz\265N\255S+\342\245V\251\327\234{\324\341\370\332{T\212}jQ\202x8\247\364\034\034\323\324\364\317J\221\037i\310\251\003\356l\232~\374\267\024\360\334\324\201\252da\216M<5<585;u\000\324\212\325*5J\257R\253\324\252\365/\017\326\223\312\301\371N)e\220\354\t\327\232\2263\201R\026\342\230G\031\246\026\035\206h\013\270g\275B\352W\255G\273\025\033\021Q7\025\023T\017U\336\240z\201\352\026\250\034Ui\005VqU\234T\014\265\003\212\205\205B\302\253\023M&\232M4\265&\3523HM\000\323\201\251\024\324\252\325\"\265H\032\244V\305L\255S\243T\350\370\251\223,x\251\225\261\326\244\rR\003\351R\253\345pi\350\t\351O\r\212pjr\265J\032\236\036\244W\251\003S\303S\303Q\272\236\032\236\032\246V\251\025\371\251\203T\361\276\0075(j\205\2372\014\366\251\321\352V8\034SKn\030\246\001\212_\247\024\016xj\2574E\016GJ\256y\250\330\324,j\007j\201\315WcP=D\331\250Z\241u\252\356\265^E\252\356\270\025]\305@\302\240qT\311\246\223L&\233\232J\\\322\023E(4\360\325\"\265J\246\244SR\003R\251\251\321\252tl\324\350\307\265L\030\2202jEj\225H\357Rdg\212\221\033\007\"\244$\261\317Jr\343<\363K\236x\247\003R+T\212\325 j\2205;u.\352pjxj\221Z\245V\251\321\252Uo\230\n\262\274\324\027\n\335S\255@\223\310\207\346SV\222\3600\301\340\324\261\271bI\351R\003\232:Q\327\353J\300H\244\036\265I\320\2515\013\212\201\205W\221j\006Z\205\326\240e5\013q\326\241qQ\267J\256\342\253\275Vz\256\302\241u\252\356+<\232i5\0314\334\321\232Pi\017Zu\024\340i\352jE5 5*\232\225ML\206\247F\305Y\211\271\346\246SOB;\323\267b\254\"\202\231\3174\261\261\006\254;p1K\021\014piH\305\001\251\342\244V\247\206\251CS\203S\303R\203O\006\244\rR+T\310\325:\034\221V\221\252P\271\243\310\004\321\366A\235\330\253\n\243n\010\305A(1\237Z\204\315\203\2021NI\206jRy\014\275)\222\000\334\325WZ\201\220T\016\225\013F{T\016\225\t\030\355P\270\007\255V\221qP0\250\331sP:qU\335*\273\255VqU%\006\262w\323K\323KSwQ\272\234\032\235\232\001\247f\224S\305<\034S\301\251\024\324\312jd5:\032\231Z\247V\251\024\323\301\311\251s\267\200sR!\365\342\237\270\376\025&\010\000\323\321\371\245lg\345\247\002@\346\236\017\24585H\036\236\036\234\032\236\255R\003O\006\244V\251\025\252\3025Z\211\363V\220\324\353R\nx\024\025\r\324T\022[+d\342\263\246\267x\330\225\351K\024\344|\257\305M\272\242j\201\205B\342\242\'\025]\352\273\324\016*\027\\\212\256\302\243\"\242qU\244\025ZN\365Y\305D#\311\311\2546U\r\301\310\246\230\201\357BC\273\275G2\252q\236j\024\345\261R\310\2331\212h4\274\216\264\3455 4\341N\3158\032\221ML\246\246SS\241\251\224\324\313\310\310\251\024\324\200\323\324\324\310A\353S#\214`\324\252\343\'#\212L\363\300\342\227w9\2517\226\306iA\247\251\247S\207\024\345lS\303T\201\352Ezxj\221Z\247\215\352\3227q\326\256D\371\025eMJ\246\244\006\226\203\315D\350\017Z\245s\007\004\257Z\253\034\204pz\212y9\250\332\241qQ0\250\034T\016*\006\034T\r\301\250Xu\250\033\203P\271\252\317U\334f\241)\232F\\q\\\256\r4\222)\003\262\3645\033e\2174\344m\224\346\224\2767S\323n\340j\304\221\243.\340qQ\004\\q\326\215\244S\226\235J\rH\246\246CR\255N\206\246\\\232\263\033\014R\347\232\2205=MJ\246\246SN\r\203R\371\271\024\356\n\217Z\010\333@jxjpz~\372pjx4\340jEj\221Z\244V\251\221\252\324OV\342c\273\025q\rL\246\244\006\236\r\031\246\232\212^\225\224\343\023\034S\373S\032\242j\211\205B\342\241qQ\025\315W\2250j\263\212\256\375*\007\346\240aQ\025\246\021\212\255!\346\271\242)\244S\010\244\333M+I\266\224\np\334x\315=r\rNHd\344\363LZ~(\035i\353R\245L\2650\251TT\311\301\342\245\335\223O\006\236\rJ\206\246SO\006\234\r<7\024\273\210\024\375\300\217zvW\034u\247.\336\364\270\317\335\244\r\203R+\324\200\323\201\251T\324\212je5b6\301\253\221\276q\216\265r6\316*u5\"\232x4\354\322\023PJx5\234>g&\236j3Q5F\302\242lTOP\236\rG\"\344UI\027\232\252\342\253\313\305V2`\323K\203U\335\362MW\222\271\242qHZ\232M&h4\001KN\002\237\212Jr\324\202\223\2758T\253S\251\251\243\035\315H*d4\360zT\200\323\301\251T\324\212\325 4\340\324\355\324\271\247\003N\006\237\237JP\304\016)\353\2029\353I\312\232z\275H\247\232\224\032\231\rL\246\245V\253\220\2660j\344g\025aZ\244V\251\003R\356\244-PN~CU\020b\221\2150\232\215\252&5\023TMQ\232i\344Uy\026\252H\265B\343\200k8\276Z\230\362\021ML\221\232d\225\3160\315DA\024\334\321E:\227\212QO\035)*@0\0058t\245\305-=*d\367\253\010r8\251\000\251\024\323\305J*E\305;#\265=MJ\r85874\270=\216i\300\221\326\234\0334\340y\247n\315(<\324\231\365\353H\016\rJ\017\245J\247\212\221\032\247SS+U\270\030\021W\021\252uj\225Z\236\032\227u\005\252\t\233<T$\342\230MFM0\232\215\252&\250\310\250\310\250\311\305B\346\253Hk>\353\2258\254\365\213\004\223PL2\334S\320aj\031k\234ja\250\310\301\246\232ZQN\353J\005<t\244\247\216i\353N\245\3059je5b/Z\2274\240\324\212jE5 4\340i\340\324\200\323\272\032:\322\362:S\203\032xl\323\201\247\003N\006\235\270\223N\316i\352qR\241\'\245H\207&\247SR\253U\250[\006\257#T\352\325*\265<r(-Lg\307\326\242-\334\323\t\246\023L&\230i\206\243ja\250\333\245@\365VW\305Vy*\214\244\263{T\017\307J\252\303-O\306\005V\224\327:\324\303L4\303IN\006\236\r8S\207JJr\324\203\212x\245\245\025*\325\210\317\002\236)\342\236\016\rH\r85<\032\220\032x8\247f\224\032v\352Pi\340\322\346\236\r8\036)A\247\203O\006\236\255R\247&\247\004v\251\024\325\3301\216z\325\244j\260\255R)\251C`\363Li\007\'\265G\273\'&\232[&\232M4\232a\246\323M0\323\010\250\330UyN\005e\\\312rqU\203\356\024\326\305V~j2\270\244n\225Rc\326\271\363Q\232a\246\232i\245\024\341O\006\237\221\212JU\342\245\316qNZu8\nz\365\251\326\244\006\236)\342\234\r8qRn\315<\032xjp4\354\322\346\234\r<\032\\\323\324\323\263J\r<\032vi\353R\243b\246F\343\025<c$\003V\224c\245N\222c\212\264\215\305J\207\232s?5\031$\375(\315%\024\204SH\246\232n3HV\2435\004\215\212\316\270\230\034\200k6f\004\324C\332\220\212aZ\211\352&\351T\346\357XMQ\032\214\232CGZAN\035i\302\226\224\032vx\251\242\0314\3420i\302\236\0059x5*\324\253O\024\341N\025 \247\np4\340i\340\323\301\245\245\025 \245\247\016)\331\245\31585(jxjz\232\231\032\254\304\325r6\350z\325\205\000\266EXSR+S\272\321\212P)qF)\n\323J\323N\0050\232\215\232\240\222P\240\344\326]\335\340\350\reKpOJ\215r\375jP\270\244j\215\215WsQ=T\232\260\232\243j\210\322Rt4\235)\342\234)M(\247\212\222#\206\253.\001\031\024\300*E\024\270\251\005H\225 \245\035i\342\244\024\354R\323\205<S\326\235@\251\001\247\nPih\245\006\224\032x5\"\232\231MXF\253P\276:\325\224|c5eZ\244\006\244\rN\006\234)\331\244\2445\031\2463\001U\345\235W\275g\334_\355\007\006\262\246\277f\316\rSfy\r\002/Z\225W\024\343\322\242cQ3T\016j&5Z^\225\204\325\033Tt\332i\344QJ*U\240\214\032QO\024\364\034\212\262y\300\245e\332i\313N\002\234\005H\240\212\224\014\323\261\306)G\025 \247\203E(4\340jU4\354\321\212u<\032v)(\024\352\0058\032z\232\235\032\247CS\251\351VCg\034\346\255\306\334\n\2305H\2475*\323\300\247b\230N*&\220Uy.@\3175Rk\265\037\305Y\267\027\231\350k9\313\312}\251V\337\035jA\020\024\245E0\323\030\324\016\325\0135D\306\231\236*\274\335+\021\205D\325\031\246\032m(\245\024\354\372R\203\332\235\214S\305H\275j\310q\263\035\350\352i\340T\202\224\n\221jT\031\2470\244\357O\024\340i\324\231\305(<\324\212\324\360j@iisK\232\013\021N\355\223A\342\200iA\251\024\324\252jt5:\266*\302\2779\035j\304.s\212\266\255R\251\251\224\324\242\231$\252\200\344\342\262\256\265UN\024\325\003~\362\0363P\310\362\037Z\200\243\267SJ \035\352A\030\035\250*\0054\212\215\215@\315\212\211\232\240f\250\031\271\2461\250\313qPL\334\032\310j\205\205Fi\246\232E%\024\242\234\016jE\367\251\027\322\245\013\307Zp\253p\306\031\t\364\244\3075 \031\247\005\247\201S(\305!\240S\251\302\235Hi)\342\236)\352i\340\322\346\224\032\0174\354\2221J)wQ\332\234\2652\032\260\225\"\236jp\340~U,r\200\3035z7\315XV\247\371\252\275N*95\024@y\254{\273\366\231\260\235*\232\304\\\345\3715ec\000T\235\260E!@G\035j\"0i\013b\230Z\242f\250\235\252\007j\201\332\240v\250\213S\031\252&n*\274\255Y\306\243aQ\232\214\322\036\224\332(\035i\342\236\265*\212\231E?mX\200\237\272;\323\366\025<\324\200S\200\251\024S\263IE8S\305-6\227\024\242\236:\323\205<\032\\\322\206\245\006\235\232Z^\264\202\236\t\251\227\246jdj\2234\370\316[\025$\352c\034u\244\217P\300\303pEL50\007\025^[\311%\345sP\215\357\367\215J\251\212\225x\247\206\240\2657v)\215%F\315\273\247Z\205\233\025\031z\215\232\241sP9\250\030\324,\324\315\325\023\265W\220\3253L5\023S\r!\246\232J)\342\236\2652\324\350*]\265f\331rH\003\232V\316\356i\352)\370\247\201\232\\`\321@\024\016)\353K\364\245\307\024\224\242\234)\302\226\224\032Zu.i\374\020(\317\006\200i\342\236\246\245\rR\006\247+\340\361VZA*\017QU\236\020\306\225b\003\265I\214\014P8\245\335F\372<\312<\312B\324\306j\210\276*3\'\2551\210\307\025\0215\023\034\324Lj\0075\003\032a5\023\232\255#T\rQ\032\214\323M4\323M7\275-<S\326\247J\260\202\245\002\254\333\022\255\305:C\227\310\247\250\247\342\227\265\004~\224\240\0222(#\201K\214\nQNQ\326\227\024\230\243\024\264\340i\324S\251A\245\245\351K\316y\242\234\032\236\r<\032xjxj\261\033|\206\231\346sN\337\232pl\365\246\027\246\357\244/I\276\215\364o\246\027\246\026\246\023Q\261\246\357\3051\271\372T.\010\252\356j\0265\0315\013\032\256\346\243j\211\2523M4\323M4\332Zx\251\026\246J\263\035N\242\254\333\256\343\216\346\245\222\023\030\311\246-IJ(\31794\240q\301\243\2674\270\247\001J(\245\024\237J\\R\201\232u(\240zR\347\024\341\322\227\255-\024S\201\247\006\247n\245\rOY\010\342\215\374\322\211)\376g\035i\205\350\337H^\223}&\3727\322n\246\226\246\026\246\226\246\023LcL-\236*\031\024\212\200\367\250\\\324,j\007\250\330\324f\2434\303\326\232M#SE8S\205H\265:\n\263\035N\2654Rl>\225l\376\372\"T\222E@\243\006\245\024\224R\212p\346\224S\251\324b\2121E(\245\242\234(\306iz\032ZQK\212(\245\006\215\324n\243u.\357J7R\357\240\271\305\001\350/M\335F\372]\324\233\251\013S\013SKSKSKTmM2z\363PI\355P1\250^\240z\215\215FM0\323\r4\323Z\212QO\025\"\324\311V#\253)O#5j\331\202\251\365\246\377\000\025?<SM&i\300\323\251\300\376\024\341O\300\365\245*G=i:\322\322\342\223\030\245\0034\001\353KI\322\226\234\264\352BqJ\r!\244\315\031\030\246\226\"\215\324n\243u.\3527Rn\243u\033\250\335I\272\227u4\2654\2657u\031\246\223LcQ1\246\026\343\006\241\221p2:T\rP\275D\306\243&\243&\232i)\244\346\212QR-H\005J\265a*\302\032\222\254[\270V\344f\234\347,H\242\220\322QN\006\234\r8\034T\213\3158t\243\003\034R\212\\Q\266\212)GJCE(4\374\322\023M\315\004\346\214R\036)\244\322d\322f\223u;<P\r\004\322n\243u&\3527Q\272\215\324\322i\244\323sHM4\232a5\023S7v=*\031\007\247J\201\252\273\032\215\2150\323I\244&\233\232\005<T\212jAR\255N\225a*A\322\246\204e\205J\343\r\315&i\t\246\320\r;4\340i\300\324\200\342\237\232\\\343\2458\014\232p\030\245\002\220\212L\322\322\036\264\224R\346\202sM&\214\322\203E!\024\302i\204\322\203\232\\\361\212L\321\2323M4\322h\335F\3527Rn\244&\232M!4\322i\204\323\t\250\332\243\'\326\242qU\030\324f\230M4\232i4\231\245\245\025*\324\200\324\250j\302\032\235jQRF\373H\305Lr\347\216i;\322\036\224\323I\232\\\323\201\247\251\365\247\203R\016\224\361\357R\014R\321\320\321\326\223\034\321Hi\010\315\035)3Fi\244\321\273\336\233\236iwzP^\230\315L\245\315\031\2434\240\320M74\322i\244\321\272\2234n\243u4\232nh\3154\323\032\243j\215\2522}j\2214\302j3M4\322h\2434\361OSR\003R\251\253\010j\302\032\224S\207Z\274\233V\023\317&\253\347\232Ri\246\231K\232p4\360i\352x\367\251\007J\220\032\220S\261K\214\321\212)1Hi;SM%!4\322i\245\2517Rf\2234\322h\315\031\367\244\335N\316G\024\252q\326\220\232ajBi\244\322\026\244\315\033\250\315\004\323I\244\315\031\246\236j6\250\215F\325@\232i4\302i\204\322f\214\322\323\201\247\003R)\251T\324\350j\312\032\235iI\305[\265\304\200\2065\034\213\261\310\240\021McL4\200\323\201\251\024\323\324\324\240\361O\006\244SO\006\235J\r.8\246\237jCHi\264\323L=)\244\323OZ\030\00085\036h\315!4\231\2434f\2246)X\372SwqL&\2234\322\324\233\2513Fh\315\031\244&\233\2327PM0\324mQ\232\316&\230M4\232a4\231\245\240S\307Zp\251\005H\246\247CV\020\325\2054\254x\251l\345\304\240\032\275=\271\220\3461\237\245Tu1\360\334T{\263M&\233\232p5 5\"\232\221MH\246\244\006\236\r8\032\\\323\267qIHi\246\222\232i\206\232i\215L&\2234\231\244\2434Rf\220\2327SI\244&\220\232i4\334\321\272\214\322f\2274\231\244&\2234f\220\323\rF\325\226M0\232i4\322i3KN\024\361N\024\361R-J\246\247F\253(\324\342j5b\216\010\255\233=McC\270U\033\253\257>B\325\016\352B\324\231\247\203R\003O\006\244SR\003R\003R\003K\232\\\322\346\2274f\220\323M4\323I\346\230M0\323\r4\323sFh\242\220\360i\271\2434\231\246\223I\232i4\334\321\2323KFi3M&\2234f\214\346\232MF\325\222Z\230Z\230Z\223u\031\245\006\236\rH)\300\323\205H*E5*\265L\257O\337HM cN\006\235\272\220\265\001\252E5 5\"\232\220\032\221MH\r<\032p4\264\240\322\321Fi\246\233Mja\246\232a\246\023L&\2234\240\322\346\220\236)\204\323sM-Fi\t\244\315!8\244\315\031\245\315\024\204\323I\244&\2234f\202i\215X\244\323\013SsIFi\300\323\324\324\200\323\301\247)\247\203O\006\244\rO\rO\017N\rK\232]\324n\2434\240\324\212jE5*\232\220\032x5\"\232x4\340i\300\323\250\315\024f\214\323MFi\244\323s\351L&\230\306\230i\271\2434\240\323\331~\\\212\210\234S\017\037Ji4\231=\251\271\2434QE&h\315\004\323I\2444\231\244\315\033\275\351\t\254&ja4\334\321\232\\\322\203R)\251\001\247\203N\006\236\r8\032x4\340i\301\251\341\251wS\203R\346\226\234\r<S\301\251T\324\212j@i\300\323\301\247\203N\006\236\r.i\t\244\315\031\244&\230M0\232a84\322\336\264\322i\215Q\232\006M(4\340\347\030\244q\305DM0\232M\330\246\226\240\032v}(\315\035h\351Hi3IHM0\322f\2234\026\254\026ni\244\322f\214\321\232p4\360jE4\361\322\236\r8\032p4\360i\300\323\201\247\003N\006\224\032p4\340i\340\323\201\247\203R)\251\024\324\200\323\301\247\203N\3158\032p4\354\321I\2323HM0\232\214\232a4\322i\244\323I\250\311\244\007\035i\336\342\223uI\346\002\270\"\241c\315DM4\232@\330\315(\351\305(4f\2274\271\244&\222\220\323I\246\223M4\334\322f\260Kd\322\023I\272\214\322\346\224\032z\232\221O5(4\340i\300\322\203N\006\234\032\234\032\234\r8\032vi\300\323\201\251\001\247\003O\006\244\006\236\r<\032\22058\032x4\360i\300\323\263Fi\t\244&\214\323\030\324li\204\323\t\246\223M&\230M4\236jEn9\2466G=\251\003qL-M&\230M&i\331\030\343\255.sFOz(\315\033\250\316h\246\032i8\244\246\236\264\206\271\342\334SKR\203FiA\245\006\236\rJ\206\244\006\234\r;4\340iwR\206\247\006\247\006\247\206\247\003N\006\234\247\232\220\032p5 4\360i\340\323\301\247\203O\006\236\246\234\r8\032v\352\\\321\232ni3HNj6\246\023L&\230M4\232i4\302iA\342\244\335\270TG\214\342\230M4\232ni\t\240\032x<\361O\335\232C\3056\2234f\214\322\023M\'4\204\322f\232k\233-I\272\215\324\240\322\346\234\r9NML\r<\032x4\240\322\346\215\324\240\323\203S\303S\203S\203S\301\251\024\323\301\247\203O\006\236\r<\032x4\360\324\360i\340\323\201\247f\234\r\031\2434\204\322f\220\232i4\303Q\232a4\322i\204\322f\214\322\206\301\346\2069\025\0214\334\342\233HzQ\236)CS\325\251\375E34\323II\2323Fi)\264\231\256_4f\224\032\\\323\201\247f\236\265 4\360i\300\323\201\245\315&i\300\322\203O\006\234\032\234\032\236\016jPi\340\323\301\247\203N\006\236\032\236\r<5=MH\032\22458\032vh\315.\352Bi3\357I\232L\323I\246\032\214\323\r4\323s\326\2234\023K\234\214S\032\230M%%&h\3158\032z\2659\271\346\230i\206\220\2323Fi\r!4\225\312f\2274\240\323\201\247\003N\006\244\006\234\r8\032x4\240\322\346\214\373\322\203N\rJ\032\234\032\244SR!\251\001\247\206\247\206\247\003N\rO\rOV\247\206\251\001\247\203J\032\234\032\235\2323J\032\202i3Fi3HM0\363L&\230i\206\233\330\323s\315-\004\323I\374i\207\332\232M&h\2434\003N\rO\rIM4\323\326\212(\244=i\246\271,\322\203N\006\234\r8\034\323\301\247\003N\006\234\r<\032]\324n\2434\271\245\006\234\032\234\rH\rL\r<\032p4\360\324\340\324\340\324\360\324\360\325 4\360i\341\251\331\245\rN\rK\232\001\245\315&h\315&i\t\247.0sM+\270dT\0140y\246\023M\355M\'\2323A4\323M&\233I\301\240\373RQ@4\340\324\340h\246\236i\017ZJPh4\206\270\372p\247\003N\006\234\r8\032Pi\331\245\006\235\232\\\322\356\240585.iA\247\203R\241\251\001\247\006\247\206\247\006\247\206\247\003O\rO\rR+S\301\247\206\247\006\245\31585.\352\\\321\2323Fh\315\006\223v(\017\214\212B\233\206sP\260\3052\230zSM\031\240\234\323M74\032LdqI\232J)sN\rK\234\321M4QE\025\306\212p4\340i\300\323\201\245\315(4\271\247\003K\272\227u.\352\003S\267R\203N\006\236\rJ\247\024\360i\301\251\301\251\340\323\203S\301\247\206\247\203O\006\244\rO\rN\rK\232pjPisF\352\\\373\322f\227>\364f\212m\001\261Ms\232\214\323\r0\232nisHM6\212L\322Q\232L\321\232\\\322\203KE\024\235\351h\2560\032\\\323\201\247f\224\032viA\245\315(4\003K\232]\324\003N\rN\rN\006\234\246\245\rO\rN\335N\rN\rR\003O\006\234\r<\032xj\220585<5(4\340iCR\356\245\315.i3K\2323Fi\t\244&\232M4\232\214\323M4\232L\321\232)\t\240s\305%4\234\321E\031\2434\340h\315.i(\242\270\300iA\247\003N\006\2274\240\322\346\214\322\356\245\315\033\250\315(jv\352Pi\341\251\340\324\201\251\301\251\300\323\303S\203S\303T\201\251\301\251\340\323\301\251\003S\201\247\003N\006\235\232\\\323\201\245\315\031\2434f\227>\364g\336\2234\231\244\3154\232a\246\323M!\244\315.i\r\024\037j@3IHi)s@4\354\322\321E\025\377\331" +byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\010\244IDATx^\355\335\211r\343\250\026\000\320\224\373\377?9\256\031\333\261\343\310Z@\002\304rN\275z5-K\010.\227EJ\267\363\365\325\266\353\364@\264\313\364\000\000\334\214\263@\034_L\001\240I{\227\300q6\tc\333\233\037\000\000\264\304\356\276\021:\352\240\016\236o.\222\000\000\000\006\322\301C\014\201<\354\301AM\017\242\313y\023\376Y\367\345\227>\030\234\004\340N\"\000E5\275u\206\303\256\327\nV\336\3470<\241&\'\334\362t\225\266\271T\265\336\356S\352\226T\306\302\017\000\3000\376<\365D>\377\337O\216\272\002\242\310\256l\016=\366\036\272\230:\351Tj\362\234\374\345\345\240\254\376\000\371\305\316\265?\347/^\266\370\301\016\347n\000R\266\244s\347v\024\345\\7G\205\\\200\256\254\217\371\365O\2419\326\260\235z\t\\/\355\330i\360\346\177\215\033\201\200w\357K\217\000+\227\354\267p\257_\233\'\354\223\251\330.=bu\375\372\367\236\001\007\003\370H\262\333\377gI\2537\007+\372!w}a0\251\207\350_\006lv\331B\23473\340E\252\001,Z\233\"#\267\0001\247Oo\033s-\211=\202\177\371\372\236\034\237\232v\322\264\023\243\035. \334\322\033\260\321M\373t\206\310\301\235\241\000\260\311TIE\244\343\246\303!\nx\226\370\343\360\r#\224\274W\007\256\361\275\031 C\221\201.2 Z\300\357\364l%\246\263-\271\037\014h$\351\265\2228\225\0216\240\214\214Kc\306\242\367\252\260J\220G\360Fbrb\372A\022\\\223dnw\374mG\371\3737\345\021\250G\220\362\206\352\377\322\237?\244\377\351\235\340d\313[\261:\004\007\2431s}7w\214\332\365\232\241\0041h\233\224\270\333\022\027G\313\316X\021\316\270\'U\221\002\305]oQ\177\306\375\300\032p+\342~\371L\031\227\231c\207L\0373S\227\237Yc\325\335V\313\317b#\177\267\306I*\t\026t\302\210:*\305\274\231\242\014\330 \3152\022\\Ng9/\357}\340\357\216\177\231\331c\366m\305\373\037\312T\243c\367\010\177<\324O\377\274\350-\376i\272\"M)l\272D\364\362\231jI\210&\202u\323LE\003\325\222\000\024\360\231\274\237G\252\325PU[!\244e\375|?\364\364\360\026\335D\016\323o\004\223g\235\233}\340g\034\021#<\342\324t\256\263wm\345a\272\025^\361\035\324S6N\022\240\227|\310\334E\231\213\317\245\321j\327b\272a>\333\376\356\334\177%pH\225\203\257\262\251\255\177\227\023b\036z\303\327y\211S5\364\376\275I\034\306Wy\251\313}\312U\356K\366\033\264`\324\321\000\037\014\006\306r0\343\017^\276\310\322\014\220T\360\264\032|bn\327\327\032SM\225\032\262\024\263\245\343i|\374[\2034\362\224\032\346v\357{\036\236Y\211\302\006j\352\036\231\262\234\212\215\326\345\271\036\3578\323%\274cC\317\243k\227\361\246>\350\313\357\243\364\333\221m5\014\374\245:\334\366\340A\215\240\037:\374\220\370\360-\215\276\342\342\253\016\300\274\364S{\372\022\311\350\325]\326V\302\370\301G_\214\374\341\214\333\345\346.\346\311\214<\262\3155:\214td\023c\371;1\313\377%\003E\246\305\246^\037\265\316\266\315\030\312F\002\314~|\213\374\354\007\231=\357\371\375\347\350\303\341l8\243Ag\t\014VHH\002\213\312b.\0178EH\252P\205T]u\346\310\'\241\310\216L\225?T\241\325\356\214\314Z\226\034H\200\003\227&TG-h\200Ic\215\350\214mi\"\275\347\305\334\267\020\317\035\203\362n\251\273\224\276\344UM\3347+b\276\n\323o\230\372m\031\214\252\245Q]w]\227\227\320\345O\316WwL\233Rs7/\370\255\262\177\250RLOC\256\247\266\000\000df\303\315\017\273h\316\"\367r\272O\362!!\356\352\347k=\265\005\010`\320\307\020\255A,\375`E\002\014h)\031*\325Vm\213\022\0326t\230\"\317&u\330\264\014\032\233\355C\255\356\\\356M\356\263\335\303\3534\237\353\266:\332h\307\336\216\334{\035\365\212\232H%\000\014-j\276(\305\274\224\334RH\257\313\0371\222*\277\267\257\253\277\273\000\000\241r\274\030]+\362\343\263\217\003\347\261\027H$GR\001\355iy*\270\327\335\252\020\353\362w\001h5\200\337\267\212\377\274 \270\264\333\214\363\265\033\271[\036\267[\373\032\264<\375\1775_}\356\222\366b\322\302\022\253\264n}M\241\247\006y3\224\247\326\256{uDw3\t\250\333\301\016\\\272|.;\347\216\245\260T\207x\351JjG\3126\317<k/\024\237+\027\206\260\020\323\363}V\354\363H]\374| \277\231\020\317\034\242\177\277\263A\235\tP\373l\005\344V\347\334D1\022\240\2544\361n\357/P?*\334h\265\017\230\351\357\303e>\335\313NV\0327\257p\212+\000\220X\242\355\305\314\366\222`\211:\201rtYaf\230\206u\327y\377\372k\0221.\022\340T\242\017\230\010`xf\001\350\310\216\367k\346\200\236D\'@\364\005\324\315x\236\032,\"\2035\027\210`~\200\\\306\332O\233K\022\020\304\303\204\020R0\222\000\000\310\256\350\246\263\350\315\200\342\306z\013\013\345\031c\000D\032\355\021l\264\366\206\312\025\227\327\326$\327\r\240\022R\034>\030\026\000\000\205\005\377x \370\304E\037\277O\341{\362g\212y\337w?\376\273\334N|\232\006P\251r\203\002\000\200\363\331\375u\306\223\347\311&\035\240?\006\327P\002X\014``\r\315U\000\225\351b\013\265s\031\350\242\355\275\320\031\033v&\371\207{93\205=;@G0\034IO;d+\274\271\030\021\207<\267\2033\333B\250A@j\0161\t<\246\272\350\246\006\204\217&\374\364d\262\016\215N%\316\225\252\347u|\363R\245B_\306J\354\261Z\233\226\3301\022\353EeL@{\255\246\362xa]\r\307\233\311y\327\351\001\232\264\222\360\037_\361\360i\373\014*\267\222\000\237\364\367P\002\272;\340\024\240I\177Fw\324JA\027\226\246w\271\360\264\024\241\023\235\3319\025\206\343\200\276Z3k%Yv\265~\327E\355\352\247\271+\211\020\255\237\250\214c\265\317V?\234J\231I-k>\016\3157\340d\342\007\264+j\335\357\226y\234\036\254\216\346\225\017\223\344\377\277\351\201v$i\177Y\025V\371Y\245\n\253\306\'\3354\234\253N\007\312ha\262Y\331\025\267\255\205\340\367C\264\233\367\234\t\032~\216\335\257\333i0?\241\013\362\372\327\006\325O\225\325W\020\000\000v\261\323]t\211y\254\21397\271\2147\317V\364\275\340l\245\0374\251\327V5\347>7\260\2327\327\255S!\347\320\255\327(7\334G\'\003\000\200B<\200\320\213\2507nP\234\207\274A\351x\300L02}?\274\200\257L\337\"\213\032\027\233\002:\034:b@\303\270b7\000\r1\265\225\2623\211v^\006\320\201z\226\250\357\235\223\361l\013f\017R\267\235\t\300nUE\274\252\3120(+\307\340$\000@\303\354%\001\000\000F\343u\036\264\307\270\005\362\363\256x0\226\226f\350*r(0\347\027\270\005\014\342{z\240vV\256\204\022|Q\004\0041p\273w\321\3074A\242\002\0000\252\337w@v\3050,/\203i\225\245+\0053\300\227T\202\202\016\016\267\304SV\342\342\032v\260_Z4`\223a\312\034\0100\260?\213\200\025a<\372|`\257\316\257<\013<\261\345u\275\377O\224a8\225\317\375\024\"\017\250\217MI1u\206\272\316ZAG\254\375\300@.\266\026\000\000\000\003\272.<\013z1\006\000\320\232\205\215\035\314\221.0,\303\037I\000\000\000}\332\263\325\337s\r\320\000\203\033\000\000\330\340wb\017L\337\003\000\000@\223<\322\017N\002\000\000\000\000\000\020\311w\n\003\214\3516\377\373\361b\333\364\037\000\000\300P\274\312\005\000\000\000\000\000\200\221\370\213\242\000\000\000\000\000\000\000\000\000\000\000\000\320\013\337\'\010\000\000\243\363T\000$\364\037\213Ab\036\317\"\"\006\000\000\000\000IEND\256B`\202" diff --git a/core/res/geoid_height_map_assets/tile-9.textpb b/core/res/geoid_height_map_assets/tile-9.textpb new file mode 100644 index 000000000000..5397cb37fa66 --- /dev/null +++ b/core/res/geoid_height_map_assets/tile-9.textpb @@ -0,0 +1,3 @@ +tile_key: "9" +byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\004\003\003\004\004\003\004\005\004\004\005\006\n\007\006\006\006\006\r\t\n\010\n\017\r\020\020\017\r\017\016\021\023\030\024\021\022\027\022\016\017\025\034\025\027\031\031\033\033\033\020\024\035\037\035\032\037\030\032\033\032\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\363<\322\206\247f\234\r(4\271\2434\271\367\243u.h\rK\272\214\322\356\247\006\247\006\346\244\rO\rN\rO\rN\rO\rO\rO\rO\rO\rR\006\247\206\247\203N\rN\006\234\r8\032\\\321\232]\324\271\2434f\214\322f\214\322f\232M4\323I\244\2444\224QE\024\200\3434\235i\r%\024S\250\242\212up\364f\234\r(4\354\320\r.\3527Q\272\2274\003K\2327R\346\224585<5<5<5<585<5<5<5H\032\236\246\244\006\236\r<\032x4\340i\300\323\201\245\006\2274f\2274f\214\342\214\373\322f\214\320M%6\220\365\244\244=i(\244&\200sKM\246\232(\242\212QKE(\024\265\303\323sJ\r;4f\2274n\245\315\033\250\315(j\\\321\2323F\352pjxn)\301\251\301\252@\324\360\324\360\324\360\324\360\325\"\265J\255O\006\236\r<\032x4\360i\300\323\201\245\315;4f\214\322\347\336\212L\321\232\\\321HM%!\024\224\206\222\212i\245\024\264\332i\242\212(\245\024\264\270\245\351Hk\2074\224\231\346\234\r\031\2434f\214\321\2327R\356\243u.\3523F\352]\324\340\324\360\324\340\324\360\325\"\265<5<5H\rH\246\245V\251\003S\201\247\203R\003N\006\236\r8\032]\324\354\322\346\214\322\321I\232\\\321Fh\242\214\323M!\244\242\223\275-\024\230\346\222\233E\024S\251@\245\242\232k\2104\224\206\214\322\203HM&i3Fh\315(4\271\2434f\215\324\340iA\247\006\247\006\247\206\251\003S\325\252@\325 j\221Z\245SR\003O\006\236\r<\032x4\340i\300\323\263N\006\2274f\235E\031\242\224\032Z(\242\220\322\032LqII\336\226\212)\264\204RQJ\005-:\212CI\\I\024\332CIE\024\206\220\322f\223>\364\271\2434\271\2434n\245\006\224\032p4\340i\341\251\341\251\341\252@\325\"\265J\246\245V\251\024\323\301\247\203O\006\236\r<\032p4\340\324\340i\300\320\016)\300\321E(9\245\247QE\024Sh\2444\224b\227\336\222\220\322R\001\212Z)@\245\242\232h\256,\212a\024\323IE\024\332i\246\346\212L\322\346\214\322\346\214\322\203J\r(4\340i\341\251\301\252Ej\221Z\244\rR\251\251T\324\200\324\201\251\340\323\303S\301\247\003N\006\234\r<\032p4\354\320\r.h\3158S\251\324QE\024\204Rb\212LR\320zSh\246\236(\245\305.(\242\212CI\\{\n\214\212a\024\322))0i)\246\233Hz\322Q\2323Fi3N\006\2274\240\323\201\247\006\247\203OSR\003R+T\252\325*\232\221MH\r<\032x4\360i\340\323\201\247\203N\006\234\r<\032\\\322\346\226\234;S\251\302\212)qF)(\"\223\024b\223\024R\032J)\000\305-\024QHM%\025\313\2749\252\355\031\025\031\030\353M\"\230E%4\323H\246\323i\244\346\214\322f\214\321\232\\\322\346\234\r(4\240\323\301\247\203R)\251T\324\212jU5(5 4\360i\340\323\301\247\203N\006\236\r<\032x4\340ii\302\224S\351\324\3521N\242\227\024\224Rb\223\024PFi\264\204RQE\024\202\226\232z\n(\256}\201\035EB\342\241x\3628\250\031\010\250\310\246\221M\"\232i\246\230i\264\207\255%\024QJ\r(4\352Pi\340\323\301\251\024\324\212jE52\232\220\032\220\032x4\360i\340\323\301\247\203O\006\236\r<S\305.iE<S\305<R\323\251qKE\024b\223\024\224SH\2444\224\206\222\212CHh\315\024\231\2435\222\312\r@\360\372UwB\265\031\301\250Y*\026LS\010\3054\212a\024\322)\206\232Fi(\2444\264R\212\\\323\251\342\234*AR)\251V\245SR\n\220\032x4\360i\340\323\301\247\203O\006\244Zx4\360ii\324\341\326\244Zx\247\np\024\264\354QF(\244\"\222\220\212B)\246\233Hi(\2444\224R\032J+0\212a4\326P\303\232\255$\004Ur\204\036j9W\035*\"3Q\025\246\021M\"\230E4\212i\244\242\212)E(\024\352p\247\212x\355R-J\265*\324\202\236)\342\244\006\236)\340\323\305<S\305<S\305>\234;S\207Z\221i\342\236)\330\247\001K\212Z(\244\305%!\024\323M=i\207\255\024\332)\r%\024\332(\252\014\265\021Zk\014Te\210\250\\\346\240e\3109\250\031\010\250\310\250\312\324dSH\246\021M\"\223\024\230\243\024\264\240R\201K\212p\247\nx\025\"\324\253R-H)\342\244\024\361O\035\251\342\236\264\361R\nx\355O\024\361N\024\361OZ\220\nx\024\360)\300R\342\226\2121M#\024\204R\032a\246\236\264\323IHi)\017ZJ):\320\005-Se\250\312\324N8\250XT,\246\242<S\030\217Ja@\325\023\305\351P2z\324M\221\332\223\031\244\3054\212LQ\266\227\024b\235\212P)@\247\001O\002\236\005J\242\244Zx\251\005<S\305<S\305<v\247\212\220S\326\236)\342\236)\353R(\251\000\247\201O\002\235K\212Z)\010\244\246\322\032a\246\032CM\2444\224\206\222\212(\243\025]\205D\302\243e\250Yj\026\250XTL*\"1I\274\212C\206\250\312\343\202*\027\217o#\2450\212M\264\233h\333K\266\215\264\273i\301iB\322\201O\002\236\005H\005<\nx\024\360*AR\001N\002\236\005<S\305<T\202\236\005<S\300\251\024T\200T\200S\305<R\201K\212\\RQM\244=i\246\230i\246\233M4Sh\240\212LP\005\030\245\252\3548\250XS\010\250\331sQ\262rsQ2T\016\230\250J\324l\264\322(\353\301\246\225\364\346\2431\203\315FT\2126\321\266\227m\033iv\323\202\322\205\245\333N\013O\002\234\005H\0058\n\220\nx\024\360)\340S\300\247\201O\002\236)\340S\305<T\212*E\025 \024\361O\024\361J)\324R\021IHi\247\2554\323M0\323i\r%!\024\224QE\024\240T.*\"\274\323\nSJ\212\201\316\r0\340\365\250\23528\252\345i\245i\205j2\264\336E\033A\351HW\324S\nc\245&\332]\264\273iv\322\355\245\333J\026\234\026\234\026\236\026\234\026\234\005<\nx\024\360)\340S\300\247\201N\002\236\005<S\300\251\000\251\000\251\000\247\212x\247\212p\351N\024\264PzSi\246\220\322\032a\351M4\323IM=h\242\212LQ\212\\QQ\311\307QQ\2023\315D\347\346\"\241c\316\r0\25794\205A\250\210\347\035\252\'J\214\2554\255FV\230R\230W\024\017zw\226\010\342\231\266\227m.\332]\264m\245\333K\266\234\026\236\026\224-8-<-8\np\024\360)\300S\300\247\001O\002\236\005<S\300\247\212\220T\213O\035\251\342\234:S\307JQKE!\244\246\322\032Jm0\364\244\246\322b\222\212(\242\212*2\373\206\rDN)\215\202sLe\3151\224\324y\307\024\322\271\2462\344TEqM+\232C\0354\305Lh\361L)M\332iv\322\355\243m.\332P\264\241iv\323\202\323\202\340\323\266\322\205\247\001J\0058\np\024\360)\300S\200\247\001O\002\236\264\361O\025 \247\212x\355O\024\341N\035)GZu\031\246\223\232)\264\206\222\232i\246\233M\242\212m\024QE\030\250\260\001\246\355\004\320c\301\246\225\246\221\305Wd\301\246\036)\206\243jn)@\247b\220\307\232\215\242\305Fc\246\354\366\243\241\301\245\0034\340\224\241)BS\266R\354\245\333N\333F\332\\S\261J\0058\np\024\340)\300S\200\247\nx\247\212x\247\212x\353N\024\360i\342\234)h\242\212)\264R\021M4\303\326\220\322R\021IHE\030\244\305.(\305-T\rRdu\240\270\357L\334\017CLn{\323\0175\023\000)\207\024\306Q\330\3231F(\247\250\247c=E#F\010\250\214x\355Lhw\366\346\232ad\367\251\025r\005<%.\312]\224\273)v\320\026\227m\033iv\322\201K\212v)qJ\0058\np\247\n}<S\205<S\201\247\203N\024\340i\331\245\242\212)1A\024\206\230i\246\220\323h\244\305%\024QE\025L\214\032c=0\266i\003\342\232_\232\003f\230\355Qg4\034\201MV\311\346\236V\224\n\\S\305<-)L\320\023\006\234\321\002:Ub\2066\351\305<.E8-.\3126R\354\243m\033h\333F\3326\322\342\227\024\270\245\002\226\235N\024\352p\247\003N\006\234\r<\032x4\340i\300\361K\232Z(\242\212CL4\323M\242\223\024\230\244#4b\214PE\000R\342\263\013\346\232M0\234S\013S\013Q\277\024\302\364\201\251\373\251\274f\234\r<\nx\024\340\265*\212xZpJv\323\216)\222\306\032>\225]\007j\227m.\332]\264m\244\333F\3326\322m\243\024b\214Q\212ZP)i\324\240\322\203N\006\234\r8S\305<\032x\247\nZPih\243\024\270\246\232i\246\232i\024\224Q\212n1E\024QF+\017\1774\360\334SI\250\330\323sL&\231\234\232\t\305;w\024\3459\247\014\323\303S\325\215L\207&\246\002\244\002\236\005</\024\320\241\216\017z\202X\274\267\247\005\315;m\033h\333I\266\215\264\233h\333I\212M\264b\214QE(\024\264S\251E8S\205H:\323\205<S\251A\245\035i\324S\250\246\221L4\323\322\222\212)\010\346\222\212)1@\353K\\\343\032r\266E)5\0314\332k\032fy\245oZi5\"\032\234t\246\223J\257\212\235d\350EYI\001\353R\214v\251S\223S\252\323Ja\270\244\236=\313\357P \342\244\333F\332B)1F(\305&)\010\246\342\214Rb\212(\242\212u\024\341O\024\361\332\236)\342\224S\207ZQ\326\235J\0058RR\032a\246\232CIE\030\244\"\223\024Q\336\200=)Es&\2054\342i\204\323sMcH)\343\221\212\215\226\225\016*p\374S\013P\032\244Rj\312?\0305:\260\307Z\2327\301\253\321\020\302\234\313\363S\2312\275*\243.\327\305<\n1I\212LQ\212\010\246\342\220\212LSH\244\305\024\230\244\242\212u\002\234)\342\236;S\305<t\240u\247S\307ZQN\247R\021M\"\232i\246\232i1K\212\\sI\212LQ\214\322\025\346\224\016\324\240W.i\005\004\323O\025\0337\245&iA\247\251\024\244dR\005\243\245!\247-N\270\247n\002\234\262U\210\336\257[\311\203VD\300\232\262\010e\025Z\3456\2604\320(\"\223\024b\214R\021M\"\223\024\334R\021HE%6\220\322QJ:R\212x\353N\024\361O\024\361@\353O\035i\302\234)\302\224QM4\323M\"\233E\024\242\214Q\2121HG4Q\326\271L\323Kb\233\273&\232\317\315FM\000\323\363H_\025*6Fi\331\246\223@\245c\201M\363qHe\315H\222U\210\234\325\270\345\"\255\246H\334*\314R\236\206\211\244/\317\245*\034\212~(\305\030\244\"\223\024\322)\010\244\3054\212f)\010\244\246\322\021IJ\0058S\205<S\307Zp\247\322\212p\247\201N\024\340)\330\244#\232CL4\322)\244Q\212Z1K\2121F)\244P\005-q\346\233\324\320\307h\367\250I\246\323\226\245\003\212c\016jU\030\024\356\324\334\323\226\221\307\025\003)\246\200sS\306*\324b\255\306\271\305[\214\225\\T\360\214\346\247\n\010 \365\250\323\344}\265`\014\322\342\214R\021M\"\232E4\2121M\"\230E4\212i\024\322)(\242\224S\3058\nx\247\np\247\nx\247\212p\247\nZ)\010\246\221M\"\233\212JP)h\242\227\024\322)1K\212\343\013f\232[oJc1=i\271\244\247%L(\306M<\nZi\247-\0148\250\217\"\220/52\361V#Ry\253\221\n\266\243\002\254\300\234dT\354\234dT2/\000\216\325,|\201Rm\243\036\324\230\246\221M\"\233\2121M\"\230E0\212i\024\322)\244Rb\224\nZp\247\212p\351O\245\024\360)\342\236)\302\235N\244\305%!\024\322)\244RQE/jZ)\010\244\242\270|\342\202A\2461\246\347\232Zz\361R\nx\247QM<\323\322\207\351Q\nv)\311\311\2558\020\005\025aTT\3123Va;j\354 8\'\265C,xb;S\"\033X\255O\2121HE4\212i\024\334PE4\212aZi\214\216j2)\244SH\244\242\224\np\247\n\220R\342\235O\024\341O\024\361N\024\242\212)1M\"\232i\270\244\242\235J\005\006\222\212+\200-\315\001\251i;\323\205H\007\024\341O\035){P)\017Z\221(z\217\024\247\245I\002\026`kN1\200*\302\324\312*e\025j\014\203O\230g\004Uc\303\203V\227\221F)1M\"\232E7\024\021M\"\232T\0321\306*\006\\\032i\024\302)1E.)@\247\212p\247\322\201O\024\360)\302\236)\324\270\353F3@\024\224\323M4\332\r \024\264\341E\024\230\243\025\347D\363NZx\351KJ*U\247R\203JM\000\322\023\315J\235(\316M&)\247\322\257Z\307\205\031\253\212*d\025aEL\203&\254\'\007\212\224\214\212\254\313\301\366\251\3429QO\305!\024\322)\244Rb\233\212i\024\322)*6\03750\212a\024\230\243\024b\234\0058\np\024\341J\005<\nx\247\212p\247\nQE\024\206\232i\204R\021IE(\024\264\270\342\200(\305\030\2577\034\323\201\247\203N\245\035i\340\323\301\247\nF\342\2054w\247\226\302\323Q\262jZD\\\2775\243\021\342\254\245N\202\245\310\002\244G\253P\363\315X\306EVu\301>\364\260\235\247\006\254\342\202\264\322\264\322\264\334SH\246\021M\"\223\025\031\034\323H\246\021I\266\223\024b\235\212p\024\340)i\300S\200\247\212x\024\340)\324\275\250\305\030\246\232i\024\206\233I\2121KN\002\212P(\305\030\2575\002\236\0058Q\232\\\323\225\252@i\371\305!9\245QK\212\033\221L\037+U\205\344S\200\301\253q\036\225q\010\035iL\276\224\345rjt\255\033q\2003V\2052H\362*\020\207>\365:\036\306\244\3054\255&\332i\\Tl)\204SH\246\221M+M+M+M\333I\2121J\005.)\300P\0058\nx\024\340)\342\234)\300R\322\342\222\232z\322\032i\024\204Rb\214P\005-(\034S\200\245\244\305y\270Z\\b\212B9\2434\341\326\245Zu\024\364\024\204\363N\034\212FL\362)\312\330\353Rn\315O\023\0003\336\245\016O\322\246\217\236\265aMX\213\226\025\245\017J\262\265&2)\0259\351Oh\3062)\000\310\240\2554\214Tl)\204SJ\323\010\244\333M\333HV\230V\220\2554\255&\332\\R\342\214R\342\234\0058\nx\024\340)\340S\200\245\305\024\021M4\322)\270\244\305\030\240\n1K@\024\360)h\305y\2304\354\346\232N)A\315\004S\220z\324\271\300\245\003\024\243\232\223\240\246\232QS\001\305\030\024\030\373\212|C\'\025d\214b\245F\253\0108\311\253p\0163W\2438\002\254#T\312\325\"\363S\371{\223\"\242\t\212R\265\033\naZaZiZaZ6PR\230V\230V\232V\223m&\3326\321\2121@\024\340)\340S\200\247\201N\002\235\212\\z\320G4\204SqHE&)1F\3321F(\305(\024\340)qF+\313\305:\233\324\323\207\024\340sN\024\341\326\234[<S\201\30585\004\322\216\265(<S\224S\311\342\235o\313\223V$\351Dun3\221V\340\340U\3055:\032\225M<?5j\t{\036\206\245e\364\250\272\366\246\225\246\225\246\2244\302\264\233)|\272k-F\303\025\021\300\246\344QF(\333F\332M\264\273iB\323\302\323\200\247\001O\013F=)q\221JG4\322)1I\212L{Rb\227m&(\305\030\243\024\360)qF+\312\305-8R\232\000\251\000\300\240\236\324\243\2123J\032\236\r(5\"5H\r9\217\024\350\016\01754\215O\214\325\250\210\365\253\221\034U\244j\231Z\245V\245\316\rK\024\234\214V\222r\242\230\340\006\351H\303\212M\224\322\264\322\264\334\000ipOALh\237\322\253:\234\340\320\266\254\3434\326\262n\306\241h\335\017\"\220>:\361O\0074\360)vQ\266\235\262\224-8-8-;\003\246h\372R\201\216\224b\220\212LRm\244\305\033h\305\030\244\305\030\245\3058\n1K\212\362\214\322\212~8\245\002\236\006(&\221FNM8\2650\265&\352xzQ\'\255=^\245\022\nz\276jd \032{\216\364\364n*x\233\201W\242|u\251\325\252tz\225[4\254\330\2536\213\274\346\264\320\342\221\316\347\030\243\024\264\306 S0Z\244[|\363R\254[y\247\272\251N:\325#lY\262EZHF\334T2\302\312x\025]\243\335\324Tmh\030t\252\222@\321\036(G\365\253\n3N\tN\331@J]\264\270\243m\024\270\245\000\032B\264\233i\010\244\305*\216\264\230\240\212LQ\212]\264\340(\305\030\257%=jTZy\342\223v(\r\232w\035\351\245\361\322\243/L\336(\337\336\223\314\315H\032\246\215\207J\221\030d\324\350A\251\224`\324\200\3664\231\332\246\247\203$f\256+p*tj\2305L\217O-\232\275b\3406=kQ\024\036\225\033|\214sK\221Mg\364\241\020\267&\254EnX\360*\372[\205\030\"\234b@9\305FD=\360*\264\262 8Z\256\323m<S\326F\223\036\225(\205Xt\346\206\266\300\371j\264\266\233\263\221Td\262 \344\n\215T\241\346\247A\232\227e.\312M\264\322\264\230\243\024\270\245\333AZM\264\205i6\322\250\000\234\322b\215\264\230\243\024b\235\2121F+\3111\315H\274R\232h\031\247\022\0050\275F\315L\'4\302i\246OJE\220w\247\254\303\326\244YT09\247\254\336c\341x\253h\330\034\032\262\262|\2714\261\311\274\373\324\2238\001GsVm[\367d\032\235\0375*\271\035*d\223&\254+S\303\324\360\273\0021[6\363\344\014\365\253C\347\3523A\210t\002\221m\035\317\3355v\033=\277z\254\210\302\014\360\005C-\317e\252\31730\250\031\232\252\276\342i\2715<R\221S\213\254\034T\3510r0qW\002\006Q\300\346\230\326\201\272U9\3541\310\025I\255\3323\2208\247\'5!^)\205i\245i\245h\013K\266\224-\005i1I\266\215\264\230\306i\002\322\355\244\305&)qKE\030\257&\331\212pZk\373Sz\n\214\234\323\t4\302Oz\211\346\003\201P\371\244\236i\371\310\250\217ZQOZz\261C\221W\"\23389\347\275X3\340\343\265Ii \363y5=\311\314\253\212\263\013`}ju|T\252\364\365|\032\230MV#9\346\256F\330\034\325\353yFEn[H\205GL\325\245e\'\370sR\371\321\240\371\216\343\350)>\322\010\302.\rC$\245\270&\253\021\232M\264\322\225\023\307P\024\240)\024\354q\232\221\t\035+F\336^0\335*\364d\036\225ab\0140\302\240\237O\005IQX\3676\215\021\334\005B\215\232v\332B\264\322\264m\243m.\334Rm\244\333AZM\264\322\274\322\343\024\323\3054\232M\324n\245\315\'>\224\273I\257+lRg\216)\204z\324nj\026`*#%D\362Uwj\214\266)\313%?viA\247\006\305(z\221\037oJ\262\254\n\362y\244Y\2126Gj\320\211\314\307y\364\253L\333UO\255>9sS\253\322\371\230\245\216B^\267\355\255\013@\035O\024\004!\261V\243!:\346\256\3013\266\002\212\324\2066#.j\177\335G\313\234\232O47B\007\2654\234\367\243\024b\227\024\322\200\323\014T\337*\236\261\002)D\035\305H\250E_\266\343\025}\010\317<T\340c\336\253\\[\t\201\342\271\313\270\r\274\247\035(\214\206\034S\212\322\025\244\333N\333HG4\025\246\342\220\2121M\300\250\335\200\250\211,x\247\010\031\251\337g#\255 \217\232\221a8\247yT\206<W\224\025\036\224\323\201P\271\250\035\260*\263\022MF\306\241cQ1\250\215 5\"\276)w\322\356\247\006\247\207\251\222BF\321Ly\n\235\244V\345\236\014JE>v\373\253N\210\360*\33251\337\232\265n\200\200Ml\333]\210\343\nNG\245)\273\313p1Wm\246\014>`\010\255{f\207\031R\006:\324\263_\240\033R\253\t\313\036Nj\302>ju\346\237J\r\007\353J\r\024\340\231\247*S\300\301\251\000\366\251\020\340\325\373e\336G5\243\345qQ:\n\310\324\255<\300N+\017i\205\275\252\302:\260\340\322\221I\200)\t\024\231\024\322\342\2432\016\325\031v=\005&\347\364\246\222\347\265\013\003\261\311\253Q[\205\353S\355\013Ma\236\324\301\037=)\341\016)\014f\217.\274\204\212\211\205B\374UW\3115\013qQ\265D\325\013\na\024\323I\232\\\322\356\245\rO\rOI6\266jI\037p\007\336\266l\234yC\236\224\347\270\005\261\217\306\244\216L\324\302LSD\233\237\025~96\000\005Z\215\213\n\265o\t\221\376n\007z\272\322*\r\211NIXp\rL\256OSVcj\265\033\342\254\244\2250z]\364\273\251U\252@i\353RS\200\006\236\242\237\264\324\360\314b\"\265\355\356\026T\301\373\325#GU\346\2040<V%\345\230\311\300\254\326\264pr\271\024\236T\302\233\344\316{R\213Y\217\\\323\276\303.y\3158i\316z\223S\307`\243\250\315Y\032x#!x\2456 \034\025\250\332\311Gjg\223\216\202\220\300~\224\242\020:\322\024\002\220\250\024\224\323M\257\0365\023\036*\274\207\203U\232\241j\214\364\250\332\243\"\243\"\230E&(\305%\024\340iI\251\003.\337z\277gq\225\353\322\234\322\345\252\344-\305L[\212\215$\303\326\234\r\270\014\326\214X\002\255\tx\302\360)\312jej\231\036\254F\365e\036\247G\251\203\232xzxzP\365\"\266jd5.}\351\312\325(5\"\234\365\245#\232\275g(\215\206k\\:\272|\247\232\211\205A%\272\277QP\265\232\366\000\325w\266\307E\240D\000\345)\2050\331\002\246\t\274r)D\002\203\010ZM\341F\007J\202I\262x\246\371\343\0375D\323F\017\024\217.zTe\252\026j\214\275(9\2434\332\362\006\025\013\212\251)\346\253\275DE0\212a\024\302\264\322\264\302\264\322\264\205i\244SH\305(\245\305C<\276Z\222\016)\332d\345\263\223\326\264\201%\271\253\321>\005J_\212\213v\0335\255k\'\356\324\326\2042f\255!\251\224\323\267\372T\250MXF\305YI\005L\263\001R\254\242\236$\247\t(\022T\311%N\222T\242Z\221^\246G\251\224\346\245Q\2322T\3475b+\355\204\014\326\2147K(\031\353S\343\214\212\214\322\034S\n\003Q\030\2114\360\240S\361\212\2574\300dt\252NI\031\rU\244W\316s\232\202\\\2163LRE;y\0244\231\025\02350\265(zv\354\320My\023Uy\033\322\252?Z\205\2050\2554\2550\2554\2550\2554\212a\024\323L\"\232i\264\352\315\324$\302\220*\326\212\204\214\236\225\253\374uj3S\003\305D\347\006\264\355\030\030\226\264\242\224\001\201V#z\260\255R\241\031\353S\254\201{f\227\314$\344S\326CS\243\023S+\021\326\244\022S\303\323\203T\210\325:\275H\262T\213%X\216J\265\033U\225aMs\236\225]\301\007\"\254\332\335la\232\337\212ex\301\0074\034\032a\024\200\322\346\220\220*3(9\025J\347\'\221T\335\231V\242\016O\336\244`\r7g\025\033\014Td\323\r4\232@h\017\212R\365\344\2621\252\316j\026\031\246\225\246\025\246\221M+NX\201\004\261\305Wu\347\212\210\212a\250\3150\323\t\244\243\265f]\246\351\000\255{\030\374\250F:\325\241\367\252t5:\322\262f\255@\031\000\364\253)!\0075r)\263\336\256F\371\251\343 \036j~\033\356\324\253\220=\351y\0075<s`sN\363A\247\007\247\211)\302Z\221f\307z\224M\232\221d\251U\352x\344\305]\212^*e\222\246S\221Lz\205\362\274\325\375:\364\203\265\217\025\246\263\202z\323\314\312\007Z\210\334(\353Lk\324\025]\356\331\363\216\225\037\236Oz\212IK\036\264\306pG5\0162j@\243\034\322\021\201P\265B\324\323\315Fi\271\244&\232My[\324\014)\273x4\302*2)\244Rb\232\335*&\025\023\n\205\252\0264\302i\244\321JzV|\347\367\2035\253f\013F\t\253\241EH\270\251\227\024\375\352*\304rdd\364\246Ip\027\201V-\244\316+J90\005YG\3175b9MXY)\333\363F\352xjxz]\364y\224\tjT\224\325\210\336\255\306\331\251\324\212\263\033U\205z\231d\305!|\232q\033\326\230\243\3139\025g\355g\030\357A\271\'\2754\316i\245\311\245\016i\333\251\214i\264n\300\342\223\314\315!zal\324Li\264\323\315Fx\246\223M&\274\265\2522\264\230\3050\2550\2550\2554\212c\n\205\252\027\250\036\241ja\244\245\002\234G\025F\346>sW4\351\2066\261\300\025\246\010<\002)y\024\354\232P\244\375*O7h\300\252\345\213\311Zv\274\001Z\010\365z\006\335\305Y\300\035)\003\324\210\331\251\001\247\006\247n\244\337@|\323\3075\"\266*\302I\212\263\034\265a$\253\t-X\216J\225_4\375\325\"59\2153\275<c\024\022(\016)\300\323\267SI\246\223M&\230M4\265!4\231\2444\303Lja\024\323^`E \000R0\310\342\243+\212a\025\033\na\250\232\241j\205\352\006\250\310\246\221M\3058\np\\\324\0271\344b\250\020\361\234\212\261m~\361\261\3632kF\rAX\363W\005\302\205\310\002\241{\242N)V\\\212\236\021\223Z1\014\n\262\215\212\265\004\2705o\315\342\220?5\"\311R\211)\302J]\364\273\350\rS#f\235\272\244F\2531\275XW\251VLT\361KV\222Q\353R\t\005J\262S\367\344Rf\205\223\024\374\203M\350i\333\351w\346\215\324\322i\244\323\t\246\346\2234\271\244\242\242q\212`>\264W\231\225\246\221M\"\230\302\243\"\243e\250\332\242aP\260\250\\T,)\204SH\244\333J\026\244\013\212\216E\315Wh\001\250M\267=(0\024<U\310\203\005\000\232q\214\346\247\211=j\324\177)\253\321\276EN\246\246F\305N$\247\207\315<=J\257\305/\231N\363)C\323\203\324\321\2658\2775,oVQ\252Q%<IR\307.OZ\264\254}jt~9\247\2111R\ti\342L\364\245\316i\341\360(\363)\013\322\206\247n\244\335M&\220\232J(\244\006\202qMnj\"0h\2578+M+L+Q\260\250\330sLaP0\250\330TL*\026\025\021ZaZn\3326\323\325i\032\243\306z\323X`PW\214\323H\311\025\"\234S\267\323\225\352\302\034\325\250\016*\342\232\231N)\341\205<0\247\253T\201\2517S\267\323\325\362je\347\255I\274(\244W\311\251\325\361R\254\2250~)C\346\244W*\302\256\307>@\251\204\331\2453zS\322\\\324\352\365 z]\364\240\320[\024\t1N\017\232]\324\205\251\273\251A\247f\226\233Fr)\244\342\230Ni3^zV\232V\243+Q\262\324L*6\025\023-D\302\243aP\262\324ei\214\264\335\264m\243\024\322\271\244\333\212\215\305+\034\001L\003\234\324\200R\021J\2654mW\"j\266\207\"\234d\305\002\\\324\252\365a\017\024\354\321\232P\325\"6*p\331\034SY\215*\275J$\251VJ\235d\342\236\262`\322\274\26543\347\203S\211H\247\2113S#\342\246\022T\202Zw\235@\233=\351|\312O2\234\262{\323\304\224o\245\017OSO\006\2279\244&\243\'\232B\324\302i7W\020R\243+Le\250\231j&Z\211\226\243e\250\231j&Z\211\226\230V\230R\233\262\223m&\3326\323J\324,\274\323\030f\200\265 \024\021J\0059\001\'\212\267\020\351V\323\245)\024\321\301\251\220\324\352\324\360\324\354\321\232p\353\305N\206\225\31538\247\253T\252\325*\275J\0374\355\331\251\"85d7\024\252\325:\311\305<IN\022\342\227\315\245\363h\023R\211sR\007\247\t)\341\251\352jEj\2245.\3523Q\263S\t\315F\317\212a\222\271r\225\033%D\313Q2\324L\265\023-D\313Q2\324l\265\031Jc-FV\232V\233\266\232E&)\010\250XS6\322\355\247SM\024\36485n6\351V\220\346\224\232eH\271\251T\324\200\323\301\247\212p5 <SK\346\220\032x5*\324\200\324\210jPjDlT\241\251\301\252P\334S\303S\267SK\342\215\364\241\251\352\3252\275<75\"\236j`i\331\251\025\251wQ\277\212\214\266i\204\342\242w\250KV;-DW\332\243t\301\250\231*\026Z\211\226\242d\250\331*&JaJ\215\222\230R\232\313L)L+M+L\"\230V\233\266\223\024\230\246\221F)EH\214E[\211\315N\334\212h\251T\324\213\315H\005H\005;\024S\351\273y\247\001O\002\245Zx\251\024\342\244\006\2245J\255N\335\315L\215\232x4\271\246\226\244\335N\rR+T\212j\302sS(\342\234\033\265\005\251U\351\333\3517R\347\271\250\335\352\026j\210\265Qd\250\331j6N9\353P\262TL\225\023%F\311Q2Tl\225\031J\215\222\230R\243e\246\262\324ei\205i\245i\205i\214\2704\322)\204b\214Rb\235\212U\025:\034T\313\'cO\034\324\212*U\251T\324\200\322\356\245\3158\0323NZx\247\347\024\241\251\301\351|\312<\312\225$\251\224\346\246V\305H\032\224\2654\323i\300\323\301\251\243oZ\266\203\214\324\201\261N\006\224\234\324d\340\323\203f\234\010\035i\035\270\342\240g\250\331\251\205\251\205j\"\231\2462\324,\225\033%D\311Q\262TL\225\033%F\311Q2sL)Q\262S\nTei\205i\245i\205*7^j2\264\322)1F(\305(\025\"\324\212\271\2531\245K\267\024\n\220\032p4\341N\006\227u\004\320\254jA%.\362i\273\311\247\253\023R\014\232xZ\225\026\246\034S\267b\234\257\315)j\004\225 `i\331\245\006\244C\212\266\217\305K\270S|\316iZN8\244\031\357J[h\250\314\246\2173\212c5FZ\2235;&j6J\215\222\242d\250\312Tl\225\023%F\311Q\224\250\331*\"\225\031J\215\222\230\313Q\262S\nS\nSJ\324L\265\033%1\226\223m&\332\n\320\026\236\005J\202\254\245I\232\000\3158\nv)\302\235M4\240\323\205\004\322\203N\006\236\rH\246\245SN\335\212Q%;vi\312i\371\315\000T\200T\213\315?\024\341R\253\340T\201\263N\343\326\234\010\245/\212k8\"\240\335\315.\352Bi\231\2435\242R\243)Q\262TL\224\306J\210\245F\311Q\262Tl\225\033%BR\243e\250\331*2\224\302\225\031ZiZ\214\2550\245F\311Q\272\323v\321\266\215\264\233)\301jE\030\251\024\342\237\232@\3305:\020\325&(\002\226\212a8\243u(4\340i\324\3655\"\324\253N\306h\332i\301H\247\250\247\347\024\241\252e\251\007\255H\2434\360\224\275\005*\265\005\350\3631A\223\"\233\272\233\236i\331\244\3154\320\rm\024\250\312Tl\225\031J\215\222\243d\250\331*6J\211\226\242aQ2Tl\265\033-D\313Q0\246\021L\"\233\266\232R\243)Q\262S6Rm\245\333F\332\002\323\202\323\302\323\266\322\025\247\247\006\254\216E8\n\030T\014H4\204\346\201\326\234*E\024\354S\324T\310*P8\243<\324\213Rb\214SM*\324\240\342\244\00752\n\224P\335\351\203\212k5F\033&\235\232M\324f\234\0334\271\240\322W\377\331" +byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\006\"IDATx^\355\335\333\266\342(\020\000\320\263\234\377\377\344q\315x;G1\367\020\002\324\336Om4\tP\005\001\264\273\177~h\307%=\000\000\000\000\004`G\000\000\000\310\315:\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\032\345/\013\003\000\000\000\000\324\315>.\000\000\000DdG\000\000\000\000\000\000\000\000\240]~\373\001\000\000\254b\021\001\000\000\000q\\\323\003\204\364\177\036\\\345\002\313\330=\214N\006\000\000t\3114\017\000\242\2623\314\274\213\311bl\022\000b2C\210I\334\001\000\000bJ\326\203v\004[\267r\201\177\013\370\312S\250\232h\002\000\000\000@\\\266\370\001\000X\301\3641\256{\354%\000\000\000\324+\347\277\362\221\363Z\344\347\267\337\214\320s\203\223\000\020\227\376\017\000\221\331%\000\350\226!\036\200\233\322\317\203\322\367#\221\006 }\235\231\315e\000\000\000\200\340\016\336\177\002\000\000\340 \326s\237\242\374\000\"S\3343]\006\000\000\000h\202\235\000\000\000\200p\236\337\241G\371*\2357\266\001\240\t\272*\000\333\230\341C([\273\374\326\363h\335\353?\233\277Zo\004\'\001\242\223\001\301I\200,\314\246\000h\215g\027\000\000\000@\313\354\356\000\000\000S\374(,\2364\346\351k\000\000B0\r\004\010\353\342+\344\310D?8\t\000\000\020\203\255\277\350~3\300\022\000\000\272c\246\307:2\006 \212\333\026\200Q\237\317\034\2601\004\000\315\362\030\007V\353vE\330m\305 \247\367\216\242\323\304!\326\335\261\n\000\000`-s\310\270\304\036\"3\002\000\000DgF\030\214\357\205\203\223\000\020\217\'=\000\360\306\324\240m\342\007\000\360db\024\234\004\240i\333\276\255\333v\326\235\036\323\236#b\266#\205\340|Gt\n\000\200\354rNZ\314\340\033\2645\001\266\2367\355\230\253RJ\215C\200\234\002hC\215\317\020\312\362\314\216N\006\004\367L\000y\020L\032\360\3645\264\3004\026\200\332\205\231c}U\364\353\000\347\021\014\010n|\335\264kx\030\277,\237\216j\251\r\341\033:\345\250\342\0015\032\032\005&\031\"j\366\027\316j\343\264:\343\350\313\241\tp\350\305Y\244\332\241\007z\226\253\343\355\271\316eh\004\23696\3646m\022\313S\355\351\2720+C\202e\270D.F\253\315\036Q\254(\226\034+\355+[B\177;g\313yT\350-\220b\332\274\264{\007P.k\017j\334W\005\376*\222\365F\213/\366\371\301\301-\200\345\336\316.\027\240\266\034\325.k\003\267\366\363\017\327G\361/\267?\354\314\025\010\355\264\356\263q\010z\225\367\275\334\317\361\000\210\313(P7\361\251J\301\'\377\\\3443\025e\3566a\2156L\246\206_\351\25589\013\220\363Zg\030\215\322N\023\355r9\352\236s&\312DnU5\366\2430\037\313\267\267?\347UU\305\3330\030\214\301\203\313\315\237\2763P;O\347\333|\314\026\273G\347~\275#{\375d\016\330!Z-\177\213\215E(\377\235\330\357\370\250<\362\341\370\373\260\322XG\205\355^Yu\371\353\363\217I\301?\333\307\200\3475G\022\366\357pz\203\221\023\342\032i\220\221\303\204\223\366\240\212\205N\332\232\3434X\266\301\203\031\035}\375\316u\333|\335V\354t#-;r\370\347\347\237\364@)\243%\"\261\252\245^_*\255:\351h\203\205\031<\310\200\365-\025z\026\326\201\201\345\372*kN\272\337+G\302\244\327x\177\235\276\307\264{\000s5Z\235?\323/V\250\341\316P\354\366\333\014\027z\205\327\267n\225\327\223#}\007\377\324/c/i\201\316,\014P\232\036\177\256\357\'B\020\022o\204\206i\317\242\230]\236+\277\267\017?W\202\'\016\002\023\267\236x\213E\021\037uo\332\312\332w\2668\373\252\314\237\340-9\233i\255Z\\\261SW\375;,,\366X;,<=\214z\333cc\311\346N\273\275?\367\231V\215%}O\216\036\267\016\276|niq\353\374b\'\217\216\253\266]\232\000[i\3346=\306\303g\364\326\006\361\231<\327\333E\326\236{\214\301ei\372z\314\327\227I\237n\225\374\374\300\324\253Pj\257\372\\\371\026\217\202\237\027\372=m\361\371\375\231k\332>\254\255\345\332\317\323\210\300=}Xo\r\322[}8\214T\201\272\035:\021\233\272\370\324{\034cn@\236{\177\316i\273\243\005\357[\360V\345$\201\337\233\007\257m\263\304\3201j$Rls\037\036\273\034#\013i\275\353\365\036\373\326\343\303N\317\004\350)\017~\353\322S\245\250\305\340b \210\337\252\367\376\\<\303\231y\2253\251\037\227\272\234[\241\r\032+.p4\203B\007\0041<)\000\254d\235\373-c\233\344\\v\316\333R\360\353\343\311\361*g\321\362\226\266\265r[\317k\307\226\314\351[\3771gJ\323\361o\272\360\203\014P\253\364\227\000\265Jfx\265\344iw\t\320]\205*QK\302Nk\243\2244\301P\302\"i\242\224\032\2052\335\'\323ez\244i\356\322\004\207\030\226\016\000\317\317\351(\301I\000\000ZP\366\207\007wK\247T\243N+\362X\311G\217\217\275\001\264\245\374\250CU$\000\363<\362\001\272t\375\367\371C\370e\032~\032\254\250e0\227[\323\274\375\017\022\327\206\243\014l\363\335\355\215\231\000\224\366\3754\002\330\302L\026\240\010\303-\000\205y\364\000\000\204\347\357-\001\000,c\332\004\020\234\357T\000\000\370f\273\200A\022\003\000\200\305\354=\003\000\000\000\000\361\330\031\355\204@\002\000\000\300\371\254\317\001\000\200I\345\376\322\263\345IY\325\265wu\005\nF\373\003\000PX\271\325f\353\252\233\254WW \000\000\000\000\000\000:\344\013E\000\000\000\000\000\250\312\177]O\370\366;\244\233\330\000\000\000\000IEND\256B`\202" diff --git a/core/res/geoid_height_map_assets/tile-b.textpb b/core/res/geoid_height_map_assets/tile-b.textpb new file mode 100644 index 000000000000..b04a19403a8a --- /dev/null +++ b/core/res/geoid_height_map_assets/tile-b.textpb @@ -0,0 +1,3 @@ +tile_key: "b" +byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\004\003\003\004\004\003\004\005\004\004\005\006\n\007\006\006\006\006\r\t\n\010\n\017\r\020\020\017\r\017\016\021\023\030\024\021\022\027\022\016\017\025\034\025\027\031\031\033\033\033\020\024\035\037\035\032\037\030\032\033\032\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\310\315-\004\346\212(\245\315-\024\003O\006\234\r;4\273\251sFh\335F\352v\374\014S7SKRn\243}(jP\364\340\364\341%<I\357N\022R\371\264\276m;\315\367\245\022S\204\224\3572\227\314\243\314\243\314\251c\2235)l\212Bx\254\373\221\345\266}j5|\323\213SKS\013Rn\240\265\033\2517Q\272\233\272\224\034\325\210\370\024\354\322n\244-\201Q4\300TfqQ\231\3523=!\270\250\332\350Uv\271$\325\243I\232\\\321\2323Fih\315\024S\201\247\003K\232PisK\232Bizu\246\226\246\226\244-I\272\223u.\3527\322\357\245\017K\346R\371\264\242JQ%H\254M<\023N\334iw\032]\364n\243}H\222b\247\022\344u\240\311\216\365\005\313\007_\245T\007\322\235\272\230Z\232Z\233\272\227u\033\2517Rn\240\232\222>\265eM\014@\250ZP;\325y.3\300\250\014\204\323K\323\013\323\013\324l\365\0235D\317\212\326\242\212(\242\2123K\232L\322\203N\315\031\245\315.isK\232\032L\214S7SKRf\223u!jM\324n\243}\033\350\337F\372pzp~j\302?\025&\372M\364o\245\337K\272\223u(z\221d\247\027\310\252\357)\246+f\224\265F[\024\205\2517Q\272\214\322n\245\rAl\232\2323\201Ry\230\250%\237\035\rViI\357Q\226\315&i\t\2463Tl\325\031j\215\232\242c[tRf\214\321\232J(\315.h\315-\031\245\315\031\245\317\275(4n\3054\2654\2654\265&\3527SKRn\244\335I\272\215\324\233\350\337OS\232v\354S\326lT\202l\322\371\236\364\242J\220IK\276\215\324\233\251\301\351\346L\n\202Bv\223H\207\212R\325\03357u\033\250\335F\352M\324\273\250\335R\tp)\217)\250K\023IHM4\232i4\302\325\033\032\214\232\214\232a5\273A\246\321E&h\315%\024\271\2434\264f\2274f\214\321\232ijajn\352M\324\233\251\013R\026\246\226\243u!jizM\364\365\233\024\246\\\322y\224\242Zp\232\244YI\357R\254\224\361%8=.\352pj\035\270\244V\334\244Ss\216)\245\251\205\251\273\250\335J\032\215\324u\245\346\212Bi\271\244\315!4\204\323I\246\023Q\223Q\261\250\311\246\023L&\272\n\r6\212L\322QHh\315\031\244\315(4\271\2434\243\212L\346\202i\205\251\205\251\245\2517f\220\2650\265&\352izM\364\205\351\205\351\273\350\337K\346R\371\224\273\351C\323\226J\235e\315J\036\236\036\234\036\234$\244y:sJ\222\000iX\367\024\302\324\302i\271\245\315.iG4\361J[\212\215\232\2234\204\322f\222\220\232a5\0314\302j64\302j2i\244\327EHi(\246\321E!4\334\321\232L\322\346\214\322\346\202\324\200\322\026\2463S\t\246\026\243<SKS\013SKSKSK\323\013\323w\322\027\244\337F\372<\312]\364\340\364\242J\231%\305L\262\324\213%?\314\364\240=#>M9^\244W\310\347\2654\2674\322h\315-.}i\333\370\342\223u\033\250\244\315!4R\023L&\230MFM0\232a5\0314\323L&\272J\017Jm\006\233E!\246\232JL\321\2323Fh\315\004\320N)\244\324d\323I\3053=\350-Q\226\246\026\246\026\246\226\246\026\246\226\246\026\246\227\244\337I\276\200\364\355\364\273\351|\312Q-H\263\221\336\247I\263R\254\224\340\364o\346\244W\247\253\340\020)7R\356\245\315.h\006\2274f\224Q\232L\321\326\202i\244\323\t\250\311\246\023L&\230M0\232a\246\232\351h\2444\224\323E!\244\246\322\032J)3@4w\244&\232M0\232c\036\324\204\323\t\246\023Q\263Te\251\205\251\205\251\205\351\245\351\205\351\273\350\337I\276\227}.\372<\312]\364\241\352T\223\336\254$\324\363/\245*\311\236jUz\2326\371I\245\315(4\340is\315.is\3158R\346\220\232\000\240\232i4\302i\204\323\t\246\023L&\230i\246\230M0\327OE\024\204b\222\220\212i\244\244\"\230h\244\244<P\017\024\236\364\204\323I\246\023L\246\223L&\243cQ\226\250\331\2526j\214\2650\2650\2750\265&\372iz7\322o\245\337F\372]\364\340\365\"\275H\257R\253f\246CS\003R\253\343\212x4\360isN\006\2279\247\201KFi:\322\346\2234\322i\204\323I\246\032a4\303M4\323Q\232i\353]0\245\242\212LRR\021\212i\246\232a\246\232)\t\243\266(4\323LcQ\223\232Bj64\302j65\023\032\214\232\211\232\243-L-Q\223M&\220\232ijM\324\233\250\335F\372]\324\360\325\"\265J\246\246SS\306\325:\234\014\232\"$\2615`\032p4\360iA\315H\264\354\322\023Fh\315\031\244&\232M4\323\t\246\232a\246\232i\246\032a\246\036\365\324QK\2121IHFi\r4\212i\024\303L4\206\232i\302\203L&\243<\323I\250\330\323\t\250\330\324Lj&5\0335D\306\243&\243&\232M0\232B\324\322\324\334\322f\214\322\346\224\032\221MH\246\245Z\231jelu5 \334\374t\025:|\243\025(4\360qN\0074\360i\333\251wQ\272\2234\271\2434f\232M4\232i\246\232i\246\236\264\303\326\232i\206\232k\247\245\002\226\212)1IM\"\230E0\212a\246\232h\031j\220\323\032\243cQ\261\246\026\250\313Tl\325\033\032\211\215F\306\242f\250\311\250\311\3150\232c\032a4\322i\244\322\023I\232)sN\006\244PML\213\212\235EJ\242\246LT\240\323\303T\212qO\rN\rN\rJ\032\215\364\273\251sJ\r.h\315%6\233M4\206\232i\246\230i\244S\ru\000R\321E\024Rb\220\212a\024\302)\204S\010\305\"\214sJM0\232\211\215BO4\306j\214\265F\315Q3Tl\325\0335DZ\243-L-L-L-L-L&\220\232Bh\315\002\236\005H\270\025 j\221Z\245V\251U\252Uj\2205H\255\212v\372P\364\340\364\340\324\355\364\241\251\300\323\201\245\006\235\2323HM%%!\246\232CM4\303M4\303]E\024\nv)\010\243\024\224\206\232i\204S\010\250\330Rt\246\223Q\261\250]\252\"j2\325\0235F\315Q3Tl\325\0235F\317Q3\324e\351\205\351\245\351\245\251\273\2517Q\270R\027\002\200\364\242J\220=H\255R\253T\252\325*\275<IR\007\305;\314\247\007\247\207\247\007\247\207\247\006\247\203O\006\234\r8\032vh\315\031\243\024b\222\232E!\024\322)\204S\r4\212\3521F)h\242\212)\246\232i\244S\010\246\021\315Fj65\023\032\205\2175\023\032\205\232\242f\250\231\2526j\211\232\242g\250Y\3526z\214\2750\2754\2754\2757}4\312\0057\315\317J\003\323\203S\203T\201\252Uj\221Z\244\017R\007\247\207\247\211)\301\351\341\351\341\351\341\252@\324\365j\221MH\r<\032p4\340ii@\245\243\024b\232E!\024\302)\244S\010\246\221]=\024R\342\222\212(\246\221L4\302*6\3435\0215\033T.x\250\030\324.j\0265\023\032\211\232\242f\250Y\252\026j\211\232\243f\250\313S\013Te\351\205\351\215%G\270\232z\265(l\323\303S\324\324\201\275\352Ea\232x\223\322\236\257R+\032P\3478\024\375\304S\225\352A%H\032\234\034\346\247V\251\024\324\252j@jAO\024\361N\002\234\005(\024\270\244\"\220\212i\024\322)\204SH\246\021]-\024\242\226\212CA4\224\207\2554\323\010\250$<\324MQ1\250\\\324.j\0075\003\032\205\215D\306\242cP\261\250\035\252&lTL\325\031jaz\215\232\243g\246\023M\3159I\251\001\247\255H\r.\352p$\324\203#\255J\204S\214\224\345\222\245\022\003\326\234\007\245<T\252i\370\364\251\025\252u5*\232\225jQR\001O\002\236\0058\n\\R\342\214R\021M\"\232V\232E0\2554\255t4\240R\321E!4\224\231\244\246\223McU\334\345\252&\250X\324\016y\250\234\325w5\003\032\205\215D\306\242f\250]\252\273\265B\306\242cQ\026\246\223Q\226\246\023M\335\353H95*\2169\247\n\220t\251\025sO\333\266\233\346`\361O\014M.\354Q\27352\014\324\350\265a\022\244\333\353J\023\322\237\202)\313\326\247Z\235*u\251\024T\240S\300\247\201N\002\234\005.(\333F\332iZiZiZa\024\322\265\277E\024\334\321Hh&\222\220\232i\2461\252\354y\250\330\324,j\274\206\241sP5B\365\003\324Lj\0275\003\232\201\215D\306\241cQ\023M&\230MFM&iG\006\246S\232pZ\225H\305L\224\366\\\216*\002\2304\340\330\244\335\232\221Fj\304B\256\304\231\251\200\305<.iB\363R\252\344sM)\203R\240\342\246Z\235*e\025*\212\220\nx\024\340)\300S\202\322\355\244\333HV\232V\232V\230V\230V\266\350\240\323h\246\232)3Hi\244\324NqP1\344\324lj&\252\362T-P\265D\302\241aP\270\250\034Uw\025\003T\017Q1\250\311\246\032a\024\302(\301\245\305J\275*E\346\236\006\rJ\247\025(a\212\211\332\241\316M=x\251\343\346\254\307\305\\\215\300\025 l\232\260\203\212SOC\232\221\223\214\322(\305L\242\246AV\024T\252*@\264\360\264\360\264\360\264\340\264\273i\n\322m\246\225\246\225\246\025\246\025\255|RQHz\322\032m!\244\2444\302j\'<T\016pj65\023\032\205\352&\250Z\243aQ0\250\\Uw\025\003\212\256\342\253\270\250\231j\"\264\335\264\205i\002d\323\304x\245\362\351v\323\325qO\333K\332\230X\212o&\234\006)GZ\265\020\251~\225b%&\255\"\342\246\007\002\234\243uXH\352m\234Sv\324\212\265*\n\260\202\246U\251B\323\302\323\302\323\302\323\266\321\266\215\264\233i\245i\245i\205i\205kO\024\204RR\032Jm!\244\246\232a\250^\241z\214\324MQ\265B\325\033TMQ\232\205\205@\342\240qU\335*&J\215\2435\023Di\236Y\357Hc4\2011N\000\367\245\002\224\nz\2558\256ivf\223\312\2441\342\230i\312\271\2531-YT\315Z\215@\251@\251V2j\314Q\342\255\004\000P\027\232\177\223\306E*\307O\013\212\231\026\254*\324\241i\341i\341i\341iv\322\355\243m&\332B\264\322\265\031ZiZ\277M\2444\230\246\221Hi\246\222\230i\215Q=B\342\242j\214\324mQ5F\325\023\n\215\205D\374\032\205\306j\022\264\206,\216j3\020\035\005D\321f\243x\261P\025\305&\332B\224\233iB\322\204\247\205\247\205\245\002\206\342\241v\250\361\223S\306\265:\220*d5e\rX\214d\325\330\323\212\231V\245U\342\227o5<c\326\234W\024\201jdZ\260\253R\205\247\205\247\205\247\205\247m\243m\033i6\322m\246\225\246\025\246\025\253dRSM6\220\322SH\246\323Z\243j\215\273\324M\322\242aQ\021Q\260\250\330TL)\214*&\025\013\324{\t\240\246)\205i\276]4\245E\"qUY2i\2451M\305&\332]\264\241i\301i\333i\002\320W\212\201\322\232\253S\242\324\351\0215f8qRc\025<\0035\241\030\300\251\325sS\250\247\204\315H\251N\307\024\212\2715aW\0252\255J\253O\013O\013O\013N\013F\3326\322m\244\333HV\230V\243e\251\373\320E0\212B)\010\246\221M\"\232E4\212c\n\215\205B\325\021\250\330TdS\010\250\330TMQ0\250\266n5(@\242\241q\223L\331K\266\242q\212\201\305W\"\243aL\331K\266\227m(Z~\332\002\323\212TL1Q\260\315\013\0375f8\352\322\000*a\216\324\205sV-\327\006\264\020T\350*U\025:\255<\n\220G\271iV<S\302\346\246E\251@\247\252\323\302\323\302\323\266\321\266\215\264\233i6\322\025\246\025\250\312\324\204z\322\032i\244\246\342\220\212n)\244SM1\252&\025\013\n\215\205FEFE0\212\215\252&\025\031\024*c\232k\nn\314\320S\024\302*\027\025\003\255B\313Q\225\244\333I\266\234\022\227e<&i\342*y\217\212\201\342\246\010\252E\212\246T\247\2044\365CR\355\251#\030\253h\3252\275Z\213\232\265\032\346\246\020\232\231#\300\240\2474\241qR\001R*\346\245\013R\005\247\005\247b\227m&\3326\322m\246\225\246\025\2462\320E4\212a\024\224Si\244b\220\361Q\232cTl*6\025\023\n\214\212\214\212c\n\210\212\215\205\"\246\346\251\0311\232\204\2574b\230\302\243e\250Yj&Z\211\226\243)I\345\322\354\245\tR\2549\251\026\034S\366`S\010\244\362\363M1\342\224%H\221\022j\312C\221R\255\267\265I\366ojQm\216\324\361\021\251\022#\232\275\024\\\n\273\004\\\325\321\030\305/\227Ha$dTe1NU\251\225jP\264\365ZxZv\337Z]\264\233h\333HV\232V\232V\243+Qb\220\323H\244\246\323i\r4\323M0\212\215\205F\302\242aQ\260\246\021Q\260\250\310\246\025\247F\270\247\025\250\231)\230\2468\250\215F\302\243+\232\215\222\233\266\223m(\214\232zE\315ZH\270\240\250\024\322*\"\274\323\325i\nd\324\211\025N\221b\254\307\035YH\200\251\2260jO \021\322\233\366nzT\211m\203\322\255$X\025*\361S\246MJ\005H\203\"\242t\346\220%J\253R\252\324\201i\341iB\321\266\215\264m\244+M+L+L+U\351\010\246\221M\"\232i\246\232i\206\233F)\214*&\025\031\024\306\025\031Z\215\226\243\"\2435\"/\002\244\333Q\262\324%i\214\265\036\312\215\222\231\262\220\2453\313\245\021T\213\020\251\004x\247\355\2462\324dSv\344\324\251\036jA\016jd\207\0252\303S\244X\251B\032\22649\253h\234S\304U:CNh\261Dp\222j\332\333\340t\250\331pjh\327\212\215\226\220/5\"\255L\253R\005\245\013K\266\227m\033h\333M+M+M+L+T\361F)\244SH\246\021M\"\223\024\326Zn)\010\2460\250\310\2460\250\312\323Yx\315D\302\243e\250\314D\236\265(B)\300R2\361P\025\250\331j<Rl\315!JB\224\337.\234#\245\013\212~))\215Q\021\232UJ\263\032U\224\2175*\305Vc\213\332\246\021S\2045*E\212\235R\245H\352\312G\201N\362\362jx\240\002\244u\300\252\254\274\323\324`R\025\246\355\346\244U\251\225j@\264\241iv\321\266\227m&\332B\264\322\264\302\264\302\265G\024b\220\212i\024\302)\244SqHE0\322c\212a\024\302*2)\245i\2733Q\025\244\t\223La\264\342\244\333\3057o42\361P\225\246\024\315\'\223I\263\024\306Z\214\212P)M%!\246Q\214\322\210\352E\212\254G\035ZH\352\314qf\255$5*\303O\021R\210\361R\254u2&*`\265\"\'5aW\002\230\353\232\204\245.\332M\264l\247\252\324\212\265 Zv\3326\322\355\243m!ZB\264\322\264\302)\205k?\024b\220\323H\246\021M\"\233\212\010\250\310\244\3054\212\214\2557\024\322)\204SJ\323v\323\014yjy\030\030\246\201JW\212\211\226\230\026\203\214TLj6\250\361F1H\0015 N)\254\265\021\030\245Q\232\260\221\346\254$5:\307\212\235#\315[\212:\270\221\324\242:]\224\361\030\247*T\241)\352\2252GRc\024\326Zf\312M\224l\243m8-=V\236\005;\024\273h\305\030\244\333HV\232V\230E0\255f\342\222\220\212i\031\244\"\230E7\024\204S\010\243\024\302)\245j2)1HV\233\266\233\266\225S\223H\313\3157m\005j6Zc-@\347\025\021\250\230\322\016i\304S\220\n\221\230\001P3f\230FjX\243\315\\\216<U\224Z\231S5f8\252\334q\212\262\211S\254|S\035v\322)\251\000\251TT\250\234\325\205N)\n\342\220\255&\332n\332\002\363K\262\227e(Z\220\n]\264\270\243m.\332B\264\322\264\322\264\302)\214\265\225\2121I\212LSH\246\221M\"\223\024\322\264\335\264\204S\010\246\025\244\333I\266\223m7o5 L\niJn\312\nT.\2705\033t\252\3169\250XTei1K\214\323\225M)\214\232A\001\251\004\0252E\212\262\211R\205\305K\020\346\256 \342\254GVR\246\007\002\243\220f\242PA\253(3S\252\324\310\265:\216(\"\231\266\214S@\245T\251\004y\247\210\263M1b\232\026\234\0058-.\3326\322\025\244+L+L\"\243aYX\346\223\024\230\244\"\223\024\322)\245i6\322b\232V\232V\232V\233\266\215\264l\246\224\244\331\315H\023\"\232\311HR\233\266\232\321f\252J\230\252\314*\026Zi\025\0369\251\2213R\252\n\235c\024\024\024\004\024\270\305I\035ZT\310\247*`\325\210\305[\215ju\247\n~\320EF\311\203O\214\342\254\241\251T\324\300\321\232\\f\232\374p)\025x\247\252\340\324\312\265(Z\0313P\262`\322\005\311\245\000\347\024\360\264m\244\333M+L+L+Q\262\326F(\305&)1HE!\024\233i\245i\245i\010\246\225\246\225\243m\033)Lt\335\224\276VjA\036\0055\243\246\224\250\366sJW\002\251N:\3257Z\201\205&\334\322yx4\365\030\251\024f\246Piv\223K\214R\355\315*\2575z\001\220*\307\227OH\361V\024b\236)\342\2363K\264\232@\270\251V\244S\315YS\221F)\340`SB\344\344\324\212\264\355\265*\212\224\n]\264\307L\212\213f)\3120y\247\355\346\215\264\205i\205i\205i\204Tl+\037\024b\223\024\230\366\244\305\033i6\322\025\246\225\246\225\244+I\262\200\224\355\224\273)\273*E\217\212pJC\036j6\212\231\345\342\243\227\201Y\362\214\232\254\353P\224\247*P\311L\3075*T\312E8\221\212i\346\225EJ\211\223W\240\217\025mR\244\013\212x\024\241jEL\324\311\0259\223\024\300\2315\"\305S,5*\304E=c\251V>\016j=\2704\365\024\375\264\345Z\231V\237\267\212M\264\315\234\323\n\342\244\333\362\203AZaZiZaZ\215\205F\302\261\261F)\270\243\024\230\245\305!\024\230\244\"\232V\223m\033iBS\202\322\354\245X\362jA\035;\313\243\313\250\335@\252\322\034UII5U\320\232\201\2434\317.\232W\024\021\221L\331\315<Fi\353\031\247\2244\251\021&\254,<T\311\026\rZE\000T\302\237R*\323\302T\350\2252\256)\031sO\216,\324\342*\262\221\002)\306,Rm\305!<`S6f\234\027\024\340)\300T\250*R\0061M\333J\0274yt\246<-0\212iZaZ\215\205F\302\243aX\300Q\212B)\247\212i4\224s\351Hr(\006\227\031\245\331J\026\234\022\227e8%H\261\324\201)\257\305B\317P;f\240u\315B\321\324m\025B\321\324f:\212H\361L\013\232<\263\232z\256*E\025(\214R\205\000\324\212EJ\274\324\312*E\025*\214\325\204Z\224-J\242\236\0058.jdZ\235W5b4\342\225\226\230\313P\343$\342\236\005.)B\322\343\024\365\342\2369\247\342\225EH\026\224\247\025\013/&\230E1\205F\302\242aQ\262\3268Z1Q\265\'\226Z\244X\t\352)\342\000)Lb\2436\340\3645\004\260\2249\024\211\351S*\346\237\262\224%8%8GS,t\245p*\274\2435]\226\241\220\005\025_\314\346\224\020z\320\312*\026Ni\236^j)b\342\253\252`\324\342,\212C\r\013\021\025(\030\024\335\244\323\225\rX\215\rN\026\244QS\"\325\205Z\225V\245T\251\002S\325*eJ\231R\254\"\361C\n\215\207\025\010\0304\354Q\212p\024\340\264\354S\220sR\020\0059EH\203&\236W\025\023\256~\265\t\025\033\n\211\205F\302\243aX\324c4\242.y\251\200P0\005\033I\351A\030\035j2i\t\305!\001\3075\031\267\364\247F9\301\353S\005\247\205\245\331\212@~lU\205Zd\202\2532\346\242\223\n*\224\274\325r\244\032L\322\026\"\243g4$\274\363S\262\007Z\254a\301\247\205\300\247*\344\324\242.)\246,R\010\375\252d\216\246\010\005;mH\261\346\247H\352\302\307\305=W\025:-H\022\235\214T\211S\245Y@1Lu\246\021\305BW\232\\R\355\245\003\024\360)H\342\235\030\317J~9\245\305H\215\203R1\365\2460\250\030sQ\260\250\330TL*6\025\214\027\361\251Q=i\342<\363I\267\007\245\014\307\030\250Y\252\"rh\353R\'\002\244\002\232@\317J\225E<\n\\S#\\\271\253J\274Tn*\007\030\025J^M@V\242t\250Yi\204TL\264\314\02552\271\3059>c\203S\371y\024\320\2305f5\004S\214Y\240AO\021b\236#\245\021\324\250\230\251\221j\302\247\024\204`\324\321\221R\323s\223S\306\001\024\376\2254oRu\246?J\213\024\001K\212\\P)\325,k\201Hz\323\2513\203S!\336>\224\036\265\033\016j&\025\023\n\215\205B\302\263\025*M\240\n:\212a5\033\232\205\2174\312z\322\223\216i\301\370\342\234\274\324\252\265(ZR\274S!\341\315Y\003\212\216A\200MRv\'5\013.j\"\265\023\255DV\243d\250\212\323\nf\200\270\247\257\006\256Dw\n$\\sI\023`\342\257F\273\205K\260\n<\274\323\204F\234\"5\"\305O\n\027\255J\035@\250$q\232X\344\251\374\314\212n\376j\304r\020)\373\362jd\247\356\244\334qL\357O\024\242\234\005.)@\251\001\3055\251i\010\247+\025\351S*\356\346\221\222\242d\342\240qP\260\250\330U\000\270\240\340Td\322\032\205\315B{\323i\340P\307\212E<U\204\025:\212~8\245\347\024\221\240\337\232\230\374\242\243s\221U\0359\246\024\250\331*&Z\210\255F\313P\262\3236\322\354\243mM\017\006\255\024\334\265\017\225\264\325\230\344\332*_754L;\325\215\353@\221hi@\351P<\271\351M\014\306\234\020\236\265*\307\212\220%<GR\252\201\326\234\000\365\251\024\343\245J\017\024\204\322\nx\247S\200\247b\227\024\264\032@9\305-8\n\236#\306)\314*\'\025Y\305B\302\242aT\rF\306\243cLg\342\241&\232i@\247\342\232\343\"\210\200<U\225\\qR\255<\032ZU\340\346\234[ \324f\230\302\242e\250\231j&Z\210\212c-D\311L+I\217j6\323\227\203\305Z\211\370\301\251\366\006\246\371T\341\035H\024\216\224\034\322\000\324\340\204\323\304t\274\npjQ!\025\"K\353R\356\310\310\245\334M9sS(\342\236)\373sJ\006)@\247\201N\002\234\005;\024b\227\024\322)@\247/\314i\377\000t\361O\316E1\371\025Y\352\026\250\232\263\230\324Lj\026j\214\234\323M&9\247\216\00586i\257\351P\243lz\274\247#5 jpjZp4\200\201\301\247\210\375i\256\230\250H\250\330Tl*&\025\021\024\302)\204Sv\321\266\227\024\345\342\246Y\rI\346R\211i\302Zp\2234\360\364\340\374Q\346\032n\354\321\232PsOZ\221IS\355S\251\317J\225EL\265 \024\340)\330\245\002\234\0058\nx\024\340(\305\024\204Q\212T8jRrh\017\212Fj\201\315@\324\306\254\206j\211\232\242c\232BqM\242\236)qM5\024\243\034\323\240\270\354j\322I\232\2247\255;9\247\nF\007\250\247\307q\3742\017\306\236\314\276\265\001\031\246\260\250\231j&Z\215\226\243+M+L\"\214Q\2121N\024\360)v\323\200\247\201R\001O\035(\002\214S\266\322\205\247\201R\001OPGJ\235:T\353R\250\247\201N\002\234\026\234\026\234\026\234\026\234\005.\3326SJ\321\212n(5\031\342\230Z\230y\250\3150\326\031j\215\2156\220\232J3J\r8\032By\250\2449\025\014C\347\253\253\362\324\352jA\355N\006\235\232f\321\232v\320p{\322\201\305#.FEF\313Q\262\324L\265\031Za\024\302\264\334R\342\214R\201O\002\234\005=P\323\302\323\200\247\250\247\205\030\240\256)@\247\001N\002\244\002\236\005H\243\0252\324\313R-<\nx\024\340\264\340\264\354T\2423\212i\\Q\212n)\n\323J\323H\250\315F\302\243\246\032i\256|\232a4\332BqH[\024\302\364\241\351\333\250\r\232k\232\205N\032\255+\344T\361\265J\017\024\360iA\247u\245\035)\312)\330\3151\226\243e\364\250\231j&Z\214\2550\212n)1K\212P)\300S\224T\352)\373h\333J\005<\n~(\331J\026\236\0058\n\221EH\005H\242\245Z\221jP*@)\340T\201iv\340\212pbh#\024\230\244\"\232E4\212k\n\211\205D\302\243\"\230i\206\271\322i\244\322TO%D_4\205\351\003\342\235\346P$\346\234[5\033t\342\235n\371m\254j\370\030\251\025\251\340\323\3058S\324S\205<R5V\226P\247\024\335\331\355HT\032\215\226\242+M\333M\333K\266\227\024\001N\025\"\234T\201\251\302\234\005H\253O\013N\333K\266\224\nx\025\"\212x\024\345\251\205H\242\246QR(\251Uj@\270\245\003\232VQ\214\212i\311\034\322Rb\223\024\204S\010\250\331j\026Z\211\205FEFk\234\244<T.\335\205Ws\3150\2750\275&\372\013R\253\363\315J\257RpED\312U\262\265b+\223\300z\270\2370\342\245\034S\325\252AO\034\323\305>\232\325\237u\301\247\301\312\214\324\333\007jk!\250\231)\205)6\322m\244\333F\3321N\247\212\221MH*E\251\005-8R\201N\003\322\234*AR(\251\005H\2652\324\350*eZ~\332\220\240\t\232\217\024\302)1F)\r!\024\322)\214*\027\025\013-D\302\242a\\\331\353Lv\300\252\254\325\0136j3M&\233\2327S\263R+T\310sO\333L+\203\232\225.\031:U\313k\201\'\r\326\257\252\251\035\205\007`\007\232\024\203\322\244\006\224\265C$\241G\275R\226O9\300\035\005Y\215p\005J)OJaZaZaZiZM\264m\244\305.)@\247\212x5\"\232\22058\032vi\302\236:S\2058T\253R\255J\242\245Z\235\rN\206\245\003=($\3644\303L4\224Q\214\323\274\2763Q\021Lj\211\205B\302\242aP\260\256d\232\2573UGja4\302i\204\323I\244\31585H\246\246\215\271\253jF)\255\3157fjH\243 \344U\261+\001\201Mb\344pi\251<\221q\326\245K\341\2347\024\367\277\215W\206\346\251\231\344\270l(\300\253pC\264s\326\254\201\212Z\0014\204\2323\352(\3004\322\264\233(\331I\345\321\262\215\224\270\245\002\226\236\016)\352i\342\245QR\001N\013\351O\002\236\0075\"\324\212je5*\232\235MH\255\212R\324\302i\231\346\226\212T\344\325\223\235\234UV\0305\031\025\023\n\205\205D\325\013\n\345\\\340U)\033&\240&\230M4\234\323M4\322P*E\251\220\324\353%.\374\232\225Njej\225\006j\\\niAPI\000jbY\202y\253\321@\2508\025>1K\364\240\nZ1\232]\264\340\202\227`\240\306)\273\005&\3126\322l\3154\255\030\305\030\315.)\352*U\025*\212\225V\244QO\013\232v\302)\3123O\003\024\365\251T\324\252\325 j\\\322SM(4\3602)\007\312r*_;#\232\205\216M0\323\030T\016*\026\025\013\n\343fz\250\315\232\214\232a4\224\206\232i)@\247\003OSR\203J\t\006\247F\251\224\214\325\204z\225H\247\022(\306i\350\2650\030\034R\321\214\322\205\247b\214R\201N\002\234\005.)\010\244\305&\3326\322\024\246\354>\224m=\305.\332r\255H\253R\250\251TT\252\265*\257\2558\014PW\373\264\003\353O\003\322\234)\340\323\324\323\203R\203A\244\006\244CO#5\031\244=i\244S\032\242a\232\205\205D\302\270)\0375\t4\302i\264R\023M4\224\023@4\3655\"\265J\246\244Z\231ML\206\246\006\236\274\324\300qO\035)\324\352v)@\247b\224\np\024\270\247\001K\212\000\245\332)\245Gj\002\203K\264\nLz\322\021\352(\013N\tO\013R*\324\252\265\"\373S\305;u\031\346\203\203\365\241\01685(\347\2458S\300\245\242\235\326\234\200g\2321\203\305;4\322i3Hi\206\243j\211\205B\302\274\355\215FM4\232m\031\244\315!4\334\321@\247\212z\232\231\rL\265(\036\225\"\261\251\326\246Z\220\032x\247\212p\024\361N\024\340)\300S\261@\024\354R\342\212Bh\244\2434\023FE\002\244\002\236\277J\220})\340\372\323\263F\352\\\322\346\224\032p9\353N\\\212\231H>\306\236\005?\024\252\007~izg\024\001A\024\224\206\222\220\232i\246\032\215\207\245D\302\274\321\2150\232i4\231\367\244\315!ji4\231\245\006\234)\342\236\265*\n\235je\251\224T\252*E\251\224T\200S\200\247\201O\002\236\005.)pi\324\240R\321Hi)3F\352JL\322\322\203N\r\212\221\\T\201\251wR\203N\315(4\271\245\315(jz\265J\0105*\277@\177:\224\032x\366\245\002\220\320y\024\322\010\246\322u\244\244\"\230E4\212k.k\313\t\246\223M&\232M!4\231\244\242\234\0058T\200T\212*e\0252\n\231EL\242\246QR\001R(\251\005<\nx\024\360)\340R\212ZZ3Fi3Fi\t\246\223I\2328\307\275\007\2123\212\001\247\003\232^\247\212\220\034S\303S\203S\201\247Q\232\\\321\232p8\247\253\324\253&jU\223\037J\225^\244\017\232RE&\352BsM4\235\250\372\323M\030\246\342\232Ey94\204\323i\264\332\r\024\240S\300\247\201R(\251\024T\310\265:-L\242\245QR\250\251\024T\252*@)\340S\300\247\001O\002\227\024b\203HM4\232L\322\023I\232L\321\272\214\323\272\320\t\034v\241\207qJ\275)\303\245<\021J\r<S\201\247R\216\264\264R\346\200i\301\252E\222\245W\251\003\323\304\236\264\273\2517Q\272\214\363\305\005\251\013Rn\244$SI\025\344\331\244\244&\232M%\024\240S\300\247\001R\001R(\251\225jeZ\225EL\242\245QR(\251TT\212*@*@)\340S\261K\214t\245\006\203M&\232i\244\322f\233\232\t\244\2434\231\247\003N\004\366\247\014\343\236iW\234\346\227\214P)\300\323\305<S\2058R\321E\024S\263N\r\212\221^\236\036\224=.\3727R\357\245\335I\272\232M!jaj\362\274\322\023M&\222\212P)\300S\300\247\201R(\251\024T\352*U\025*\212\225EJ\242\245QR\250\251\000\247\201O\002\236)sE\031\246\2264\026\3154\232L\323sIE!4\206\200sJ\r=i\331\305\024\2434\341N\247\003O\006\236\r8\032Z)GJR(\244\"\200is\212P\364\355\364\273\350\337J\036\227u\033\350\335A4\302k\313(\'\024\332)E-<\nx\024\360*E\0252\255L\242\245QR\250\251\024T\312*U\025\"\324\202\236\005>\2274\231\245\315&i3IHE4\212L\322f\215\302\223\"\223\255\030\305/\326\224\023N\025 \245\247R\212u8\032p4\340isN\024\242\224\n\\PE2\227&\214PM&qF\352\003R\357\240\275 zx|\322\023_\377\331" +byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\003,IDATx^\355\335\335r\263 \020\000\320\214\357\377\314\231\357\247^\264:QQ(\260{\316]\2155\215\254\013,\306\276^\324\360\336n\000\000\000\000\242R\006\000\000\200r\306\321P`\331n\210@\026\270+d8\000\000\000\000\300\240\324\343\000\000fb\035\032\000\000\000 \253\307\353zJK\220\316\343\274\001\000\000\000\000@\037\n\274@\t9#\261\326\215\357F\003\000\000\000\"2\337\375\311\371\000\230C\353z0\000\320\231\311\331=\261\007I\261?\035\000\000\000\337\230\002\002\000\000@\036ow\010\000@J\326\002 )\343\377\334\264?\000\000\000\300\324\324\366\001\000\000 0\367u\000\000\000\000\000\000\000\300)\313\353y\371N\00506Y*=!\000\000\211x\252?\000\000\000\307L\034\271\302\322\002\000\000\000\000\000\000\000\000\000\000\000\304\347\373\003\000\000\000\000\000\323Q\332\005\000\200\346\026\343n\000\000\000\000\000\000\000\306gu\033\000\000\000\000\000\000\000\000\350\316\215L\000\000$b\370\233\331{\273\001\000\000\000\000\000\022\361\317|\000V\026\0169\262\215\217\355\317\3718\003\000\000\000\000\000\000\201Y\014\312\300MC\214\357N\224\272\037\016\000\000\000Z0\341\006\000\000\000\202Q\356\000\000\000\000\210F\305\007\000\000(\342\271\032\344 \322\001\000\000B3\355\003\370D\206\004\000\200\021\271\343\233j\004\023\3004\244l\000\000\332\263>\014\000\000\220K\257\325\207\306\357kz\013<\3208C\001\000\300\2573\306\005\000\000\340\216O\363\311\375r\354\317-\333\337\333\357?\276\345\257\355\266i\254\'\374\376\007(j\261\363\2679\337\003\310K\206\000\350\257h\360\307\320\264e \006I1]\276Hk\004@\215cp\317\345\206\006\000\000\000xB\021\002\200\036\364?\311\t\000\340\036\353\327\305$\\\000f\243\273\007\000\010\242h`W\2643\000\014M\257\266\223k\251B\000\000_r\345\276\007\244\315\272v\201\267\333P\231\006\344\221\377\001\324:J\031\334[\004\260\022\n\311\t\000\200tL\'!%\227>\000[\372\006 \275\2654\232\257B\252\007\000\000\000\000\000RQ\024\005HNG\000\337\344[ \377]\303\236\337\257?\314\327I\233\321\325\000\000\00000\005\201\030\224\037\000\370Hg\237\233\366\207C\023_\"\2139\000\'&\016o\036\221\034r8\270\302\017^b<\325\233\253\372\001\211L\2171\213\253\027\266\026\315\355j\234\000\323\223\356os\352\206\246#\003\000\200r\2469\311M\033\000\255g\200N\0140\245i\223\027Uh\177`X\022TX\0361GWM\002\260\3051y\350\270\0279~\025\200n\364\251\000\3008L\035\353i5\312ku\\xI\001\2759\377\364!\362\206\241\217ON\000\000\000P\235\t\037+\217\320\316N\000d\367/\002N\352\016\313\351\036\244 \n !\027>@R:\000\000\200F\024\3449d$\016\000\361U\350\357+\034\002\200N\344p\000\000\000\000\000\000\000\000\000\000\000\006\362\007Wv]\t\272\351Z\n\000\000\000\000IEND\256B`\202" diff --git a/location/java/android/location/altitude/AltitudeConverter.java b/location/java/android/location/altitude/AltitudeConverter.java new file mode 100644 index 000000000000..506128e17740 --- /dev/null +++ b/location/java/android/location/altitude/AltitudeConverter.java @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.location.altitude; + +import android.annotation.NonNull; +import android.annotation.WorkerThread; +import android.content.Context; +import android.location.Location; + +import com.android.internal.location.altitude.GeoidHeightMap; +import com.android.internal.location.altitude.S2CellIdUtils; +import com.android.internal.location.altitude.nano.MapParamsProto; +import com.android.internal.util.Preconditions; + +import java.io.IOException; + +/** + * Converts altitudes reported above the World Geodetic System 1984 (WGS84) reference ellipsoid + * into ones above Mean Sea Level. + */ +public final class AltitudeConverter { + + private static final double MAX_ABS_VALID_LATITUDE = 90; + private static final double MAX_ABS_VALID_LONGITUDE = 180; + + /** Manages a mapping of geoid heights associated with S2 cells. */ + private final GeoidHeightMap mGeoidHeightMap = new GeoidHeightMap(); + + /** + * Creates an instance that manages an independent cache to optimized conversions of locations + * in proximity to one another. + */ + public AltitudeConverter() { + } + + /** + * Throws an {@link IllegalArgumentException} if the {@code location} has an invalid latitude, + * longitude, or altitude above WGS84. + */ + private static void validate(@NonNull Location location) { + Preconditions.checkArgument( + isFiniteAndAtAbsMost(location.getLatitude(), MAX_ABS_VALID_LATITUDE), + "Invalid latitude: %f", location.getLatitude()); + Preconditions.checkArgument( + isFiniteAndAtAbsMost(location.getLongitude(), MAX_ABS_VALID_LONGITUDE), + "Invalid longitude: %f", location.getLongitude()); + Preconditions.checkArgument(location.hasAltitude(), "Missing altitude above WGS84"); + Preconditions.checkArgument(Double.isFinite(location.getAltitude()), + "Invalid altitude above WGS84: %f", location.getAltitude()); + } + + private static boolean isFiniteAndAtAbsMost(double value, double rhs) { + return Double.isFinite(value) && Math.abs(value) <= rhs; + } + + /** + * Returns the four S2 cell IDs for the map square associated with the {@code location}. + * + * <p>The first map cell contains the location, while the others are located horizontally, + * vertically, and diagonally, in that order, with respect to the S2 (i,j) coordinate system. If + * the diagonal map cell does not exist (i.e., the location is near an S2 cube vertex), its + * corresponding ID is set to zero. + */ + @NonNull + private static long[] findMapSquare(@NonNull MapParamsProto params, + @NonNull Location location) { + long s2CellId = S2CellIdUtils.fromLatLngDegrees(location.getLatitude(), + location.getLongitude()); + + // (0,0) cell. + long s0 = S2CellIdUtils.getParent(s2CellId, params.mapS2Level); + long[] edgeNeighbors = new long[4]; + S2CellIdUtils.getEdgeNeighbors(s0, edgeNeighbors); + + // (1,0) cell. + int i1 = S2CellIdUtils.getI(s2CellId) > S2CellIdUtils.getI(s0) ? -1 : 1; + long s1 = edgeNeighbors[i1 + 2]; + + // (0,1) cell. + int i2 = S2CellIdUtils.getJ(s2CellId) > S2CellIdUtils.getJ(s0) ? 1 : -1; + long s2 = edgeNeighbors[i2 + 1]; + + // (1,1) cell. + S2CellIdUtils.getEdgeNeighbors(s1, edgeNeighbors); + long s3 = 0; + for (int i = 0; i < edgeNeighbors.length; i++) { + if (edgeNeighbors[i] == s0) { + int i3 = (i + i1 * i2 + edgeNeighbors.length) % edgeNeighbors.length; + s3 = edgeNeighbors[i3] == s2 ? 0 : edgeNeighbors[i3]; + break; + } + } + + // Reuse edge neighbors' array to avoid an extra allocation. + edgeNeighbors[0] = s0; + edgeNeighbors[1] = s1; + edgeNeighbors[2] = s2; + edgeNeighbors[3] = s3; + return edgeNeighbors; + } + + /** + * Adds to {@code location} the bilinearly interpolated Mean Sea Level altitude. In addition, a + * Mean Sea Level altitude accuracy is added if the {@code location} has a valid vertical + * accuracy; otherwise, does not add a corresponding accuracy. + */ + private static void addMslAltitude(@NonNull MapParamsProto params, @NonNull long[] s2CellIds, + @NonNull double[] geoidHeightsMeters, @NonNull Location location) { + long s0 = s2CellIds[0]; + double h0 = geoidHeightsMeters[0]; + double h1 = geoidHeightsMeters[1]; + double h2 = geoidHeightsMeters[2]; + double h3 = s2CellIds[3] == 0 ? h0 : geoidHeightsMeters[3]; + + // Bilinear interpolation on an S2 square of size equal to that of a map cell. wi and wj + // are the normalized [0,1] weights in the i and j directions, respectively, allowing us to + // employ the simplified unit square formulation. + long s2CellId = S2CellIdUtils.fromLatLngDegrees(location.getLatitude(), + location.getLongitude()); + double sizeIj = 1 << (S2CellIdUtils.MAX_LEVEL - params.mapS2Level); + double wi = Math.abs(S2CellIdUtils.getI(s2CellId) - S2CellIdUtils.getI(s0)) / sizeIj; + double wj = Math.abs(S2CellIdUtils.getJ(s2CellId) - S2CellIdUtils.getJ(s0)) / sizeIj; + double offsetMeters = h0 + (h1 - h0) * wi + (h2 - h0) * wj + (h3 - h1 - h2 + h0) * wi * wj; + + location.setMslAltitudeMeters(location.getAltitude() - offsetMeters); + if (location.hasVerticalAccuracy()) { + double verticalAccuracyMeters = location.getVerticalAccuracyMeters(); + if (Double.isFinite(verticalAccuracyMeters) && verticalAccuracyMeters >= 0) { + location.setMslAltitudeAccuracyMeters( + (float) Math.hypot(verticalAccuracyMeters, params.modelRmseMeters)); + } + } + } + + /** + * Adds a Mean Sea Level altitude to the {@code location}. In addition, adds a Mean Sea Level + * altitude accuracy if the {@code location} has a finite and non-negative vertical accuracy; + * otherwise, does not add a corresponding accuracy. + * + * <p>Must be called off the main thread as data may be loaded from raw assets. Throws an + * {@link IOException} if an I/O error occurs when loading data. + * + * <p>Throws an {@link IllegalArgumentException} if the {@code location} has an invalid + * latitude, longitude, or altitude above WGS84. Specifically: + * + * <ul> + * <li>The latitude must be between -90 and 90, both inclusive. + * <li>The longitude must be between -180 and 180, both inclusive. + * <li>The altitude above WGS84 must be finite. + * </ul> + */ + @WorkerThread + public void addMslAltitude(@NonNull Context context, @NonNull Location location) + throws IOException { + validate(location); + MapParamsProto params = GeoidHeightMap.getParams(context); + long[] s2CellIds = findMapSquare(params, location); + double[] geoidHeightsMeters = mGeoidHeightMap.readGeoidHeights(params, context, s2CellIds); + addMslAltitude(params, s2CellIds, geoidHeightsMeters, location); + } +} diff --git a/location/java/com/android/internal/location/altitude/GeoidHeightMap.java b/location/java/com/android/internal/location/altitude/GeoidHeightMap.java new file mode 100644 index 000000000000..e113ab411d98 --- /dev/null +++ b/location/java/com/android/internal/location/altitude/GeoidHeightMap.java @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.location.altitude; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.util.LruCache; + +import com.android.internal.annotations.GuardedBy; +import com.android.internal.location.altitude.nano.MapParamsProto; +import com.android.internal.location.altitude.nano.S2TileProto; +import com.android.internal.util.Preconditions; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.Objects; + +/** + * Manages a mapping of geoid heights associated with S2 cells, referred to as MAP CELLS. + * + * <p>Tiles are used extensively to reduce the number of entries needed to be stored in memory and + * on disk. A tile associates geoid heights with all map cells of a common parent at a specified S2 + * level. + * + * <p>Since bilinear interpolation considers at most four map cells at a time, at most four tiles + * are simultaneously stored in memory. These tiles, referred to as CACHE TILES, are each keyed by + * its common parent's S2 cell ID, referred to as a CACHE KEY. + * + * <p>Absent cache tiles needed for interpolation are constructed from larger tiles stored on disk. + * The latter tiles, referred to as DISK TILES, are each keyed by its common parent's S2 cell token, + * referred to as a DISK TOKEN. + */ +public final class GeoidHeightMap { + + private static final Object sLock = new Object(); + + @GuardedBy("sLock") + @Nullable + private static MapParamsProto sParams; + + /** Defines a cache large enough to hold all cache tiles needed for interpolation. */ + private final LruCache<Long, S2TileProto> mCacheTiles = new LruCache<>(4); + + /** + * Returns the singleton parameter instance for a spherically projected geoid height map and its + * corresponding tile management. + */ + @NonNull + public static MapParamsProto getParams(@NonNull Context context) throws IOException { + synchronized (sLock) { + if (sParams == null) { + try (InputStream is = context.getApplicationContext().getAssets().open( + "geoid_height_map/map-params.pb")) { + sParams = MapParamsProto.parseFrom(is.readAllBytes()); + } + } + return sParams; + } + } + + private static long getCacheKey(@NonNull MapParamsProto params, long s2CellId) { + return S2CellIdUtils.getParent(s2CellId, params.cacheTileS2Level); + } + + @NonNull + private static String getDiskToken(@NonNull MapParamsProto params, long s2CellId) { + return S2CellIdUtils.getToken( + S2CellIdUtils.getParent(s2CellId, params.diskTileS2Level)); + } + + /** + * Adds to {@code values} values in the unit interval [0, 1] for the map cells identified by + * {@code s2CellIds}. Returns true if values are present for all non-zero IDs; otherwise, + * returns false and adds NaNs for absent values. + */ + private static boolean getUnitIntervalValues(@NonNull MapParamsProto params, + @NonNull TileFunction tileFunction, + @NonNull long[] s2CellIds, @NonNull double[] values) { + int len = s2CellIds.length; + + S2TileProto[] tiles = new S2TileProto[len]; + for (int i = 0; i < len; i++) { + if (s2CellIds[i] != 0) { + tiles[i] = tileFunction.getTile(s2CellIds[i]); + } + values[i] = Double.NaN; + } + + for (int i = 0; i < len; i++) { + if (tiles[i] == null || !Double.isNaN(values[i])) { + continue; + } + + mergeByteBufferValues(params, s2CellIds, tiles, i, values); + mergeByteJpegValues(params, s2CellIds, tiles, i, values); + mergeBytePngValues(params, s2CellIds, tiles, i, values); + } + + boolean allFound = true; + for (int i = 0; i < len; i++) { + if (s2CellIds[i] == 0) { + continue; + } + if (Double.isNaN(values[i])) { + allFound = false; + } else { + values[i] = (((int) values[i]) & 0xFF) / 255.0; + } + } + return allFound; + } + + @SuppressWarnings("ReferenceEquality") + private static void mergeByteBufferValues(@NonNull MapParamsProto params, + @NonNull long[] s2CellIds, + @NonNull S2TileProto[] tiles, + int tileIndex, @NonNull double[] values) { + byte[] bytes = tiles[tileIndex].byteBuffer; + if (bytes == null || bytes.length == 0) { + return; + } + + ByteBuffer byteBuffer = ByteBuffer.wrap(bytes).asReadOnlyBuffer(); + int tileS2Level = params.mapS2Level - Integer.numberOfTrailingZeros(byteBuffer.limit()) / 2; + int numBitsLeftOfTile = 2 * tileS2Level + 3; + + for (int i = tileIndex; i < tiles.length; i++) { + if (tiles[i] != tiles[tileIndex]) { + continue; + } + + long maskedS2CellId = s2CellIds[i] & (-1L >>> numBitsLeftOfTile); + int numBitsRightOfMap = 2 * (S2CellIdUtils.MAX_LEVEL - params.mapS2Level) + 1; + int bufferIndex = (int) (maskedS2CellId >>> numBitsRightOfMap); + values[i] = Double.isNaN(values[i]) ? 0 : values[i]; + values[i] += ((int) byteBuffer.get(bufferIndex)) & 0xFF; + } + } + + private static void mergeByteJpegValues(@NonNull MapParamsProto params, + @NonNull long[] s2CellIds, + @NonNull S2TileProto[] tiles, + int tileIndex, @NonNull double[] values) { + mergeByteImageValues(params, tiles[tileIndex].byteJpeg, s2CellIds, tiles, tileIndex, + values); + } + + private static void mergeBytePngValues(@NonNull MapParamsProto params, + @NonNull long[] s2CellIds, + @NonNull S2TileProto[] tiles, + int tileIndex, @NonNull double[] values) { + mergeByteImageValues(params, tiles[tileIndex].bytePng, s2CellIds, tiles, tileIndex, values); + } + + @SuppressWarnings("ReferenceEquality") + private static void mergeByteImageValues(@NonNull MapParamsProto params, @NonNull byte[] bytes, + @NonNull long[] s2CellIds, + @NonNull S2TileProto[] tiles, int tileIndex, @NonNull double[] values) { + if (bytes == null || bytes.length == 0) { + return; + } + Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + if (bitmap == null) { + return; + } + + for (int i = tileIndex; i < tiles.length; i++) { + if (s2CellIds[i] == 0 || tiles[i] != tiles[tileIndex]) { + continue; + } + + values[i] = Double.isNaN(values[i]) ? 0 : values[i]; + values[i] += bitmap.getPixel(getIndexX(params, s2CellIds[i], bitmap.getWidth()), + getIndexY(params, s2CellIds[i], bitmap.getHeight())) & 0xFF; + } + } + + /** Returns the X index for an S2 cell within an S2 tile image of specified width. */ + private static int getIndexX(@NonNull MapParamsProto params, long s2CellId, int width) { + return getIndexXOrY(params, S2CellIdUtils.getI(s2CellId), width); + } + + /** Returns the Y index for an S2 cell within an S2 tile image of specified height. */ + private static int getIndexY(@NonNull MapParamsProto params, long s2CellId, int height) { + return getIndexXOrY(params, S2CellIdUtils.getJ(s2CellId), height); + } + + private static int getIndexXOrY(@NonNull MapParamsProto params, int iOrJ, int widthOrHeight) { + return (iOrJ >> (S2CellIdUtils.MAX_LEVEL - params.mapS2Level)) % widthOrHeight; + } + + /** + * Returns the geoid heights in meters associated with the map cells identified by + * {@code s2CellIds}. Throws an {@link IOException} if a geoid height cannot be calculated for a + * non-zero ID. + */ + @NonNull + public double[] readGeoidHeights(@NonNull MapParamsProto params, @NonNull Context context, + @NonNull long[] s2CellIds) throws IOException { + Preconditions.checkArgument(s2CellIds.length == 4); + for (long s2CellId : s2CellIds) { + Preconditions.checkArgument( + s2CellId == 0 || S2CellIdUtils.getLevel(s2CellId) == params.mapS2Level); + } + + double[] heightsMeters = new double[s2CellIds.length]; + if (getGeoidHeights(params, mCacheTiles::get, s2CellIds, heightsMeters)) { + return heightsMeters; + } + + TileFunction loadedTiles = loadFromCacheAndDisk(params, context, s2CellIds); + if (getGeoidHeights(params, loadedTiles, s2CellIds, heightsMeters)) { + return heightsMeters; + } + throw new IOException("Unable to calculate geoid heights from raw assets."); + } + + /** + * Adds to {@code heightsMeters} the geoid heights in meters associated with the map cells + * identified by {@code s2CellIds}. Returns true if heights are present for all non-zero IDs; + * otherwise, returns false and adds NaNs for absent heights. + */ + private boolean getGeoidHeights(@NonNull MapParamsProto params, + @NonNull TileFunction tileFunction, @NonNull long[] s2CellIds, + @NonNull double[] heightsMeters) { + boolean allFound = getUnitIntervalValues(params, tileFunction, s2CellIds, heightsMeters); + for (int i = 0; i < heightsMeters.length; i++) { + // NaNs are properly preserved. + heightsMeters[i] *= params.modelAMeters; + heightsMeters[i] += params.modelBMeters; + } + return allFound; + } + + @NonNull + private TileFunction loadFromCacheAndDisk(@NonNull MapParamsProto params, + @NonNull Context context, @NonNull long[] s2CellIds) throws IOException { + int len = s2CellIds.length; + + // Enable batch loading by finding all cache keys upfront. + long[] cacheKeys = new long[len]; + for (int i = 0; i < len; i++) { + if (s2CellIds[i] == 0) { + continue; + } + cacheKeys[i] = getCacheKey(params, s2CellIds[i]); + } + + // Attempt to load tiles from cache. + S2TileProto[] loadedTiles = new S2TileProto[len]; + String[] diskTokens = new String[len]; + for (int i = 0; i < len; i++) { + if (s2CellIds[i] == 0 || diskTokens[i] != null) { + continue; + } + loadedTiles[i] = mCacheTiles.get(cacheKeys[i]); + diskTokens[i] = getDiskToken(params, cacheKeys[i]); + + // Batch across common cache key. + for (int j = i + 1; j < len; j++) { + if (cacheKeys[j] == cacheKeys[i]) { + loadedTiles[j] = loadedTiles[i]; + diskTokens[j] = diskTokens[i]; + } + } + } + + // Attempt to load tiles from disk. + for (int i = 0; i < len; i++) { + if (s2CellIds[i] == 0 || loadedTiles[i] != null) { + continue; + } + + S2TileProto tile; + try (InputStream is = context.getApplicationContext().getAssets().open( + "geoid_height_map/tile-" + diskTokens[i] + ".pb")) { + tile = S2TileProto.parseFrom(is.readAllBytes()); + } catch (IOException e) { + throw new RuntimeException(e); + } + mergeFromDiskTile(params, tile, cacheKeys, diskTokens, i, loadedTiles); + } + + return s2CellId -> { + if (s2CellId == 0) { + return null; + } + long cacheKey = getCacheKey(params, s2CellId); + for (int i = 0; i < cacheKeys.length; i++) { + if (cacheKeys[i] == cacheKey) { + return loadedTiles[i]; + } + } + return null; + }; + } + + private void mergeFromDiskTile(@NonNull MapParamsProto params, @NonNull S2TileProto diskTile, + @NonNull long[] cacheKeys, @NonNull String[] diskTokens, int diskTokenIndex, + @NonNull S2TileProto[] loadedTiles) throws IOException { + int len = cacheKeys.length; + int numMapCellsPerCacheTile = 1 << (2 * (params.mapS2Level - params.cacheTileS2Level)); + + // Reusable arrays. + long[] s2CellIds = new long[numMapCellsPerCacheTile]; + double[] values = new double[numMapCellsPerCacheTile]; + + // Each cache key identifies a different sub-tile of the disk tile. + TileFunction diskTileFunction = s2CellId -> diskTile; + for (int i = diskTokenIndex; i < len; i++) { + if (!Objects.equals(diskTokens[i], diskTokens[diskTokenIndex]) + || loadedTiles[i] != null) { + continue; + } + + // Find all map cells within the current cache tile. + long s2CellId = S2CellIdUtils.getTraversalStart(cacheKeys[i], params.mapS2Level); + for (int j = 0; j < numMapCellsPerCacheTile; j++) { + s2CellIds[j] = s2CellId; + s2CellId = S2CellIdUtils.getTraversalNext(s2CellId); + } + + if (!getUnitIntervalValues(params, diskTileFunction, s2CellIds, values)) { + throw new IOException("Corrupted disk tile of disk token: " + diskTokens[i]); + } + + loadedTiles[i] = new S2TileProto(); + loadedTiles[i].byteBuffer = new byte[numMapCellsPerCacheTile]; + for (int j = 0; j < numMapCellsPerCacheTile; j++) { + loadedTiles[i].byteBuffer[j] = (byte) Math.round(values[j] * 0xFF); + } + + // Batch across common cache key. + for (int j = i + 1; j < len; j++) { + if (cacheKeys[j] == cacheKeys[i]) { + loadedTiles[j] = loadedTiles[i]; + } + } + + // Side load into tile cache. + mCacheTiles.put(cacheKeys[i], loadedTiles[i]); + } + } + + /** Defines a function-like object to retrieve tiles for map cells. */ + private interface TileFunction { + + @Nullable + S2TileProto getTile(long s2CellId); + } +} diff --git a/location/java/com/android/internal/location/altitude/S2CellIdUtils.java b/location/java/com/android/internal/location/altitude/S2CellIdUtils.java new file mode 100644 index 000000000000..5f113877d416 --- /dev/null +++ b/location/java/com/android/internal/location/altitude/S2CellIdUtils.java @@ -0,0 +1,653 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.location.altitude; + +import android.annotation.NonNull; + +import java.util.Arrays; +import java.util.Locale; + +/** + * Provides lightweight S2 cell ID utilities without traditional geometry dependencies. + * + * <p>See <a href="https://s2geometry.io/">the S2 Geometry Library website</a> for more details. + */ +public final class S2CellIdUtils { + + /** The level of all leaf S2 cells. */ + public static final int MAX_LEVEL = 30; + + private static final int MAX_SIZE = 1 << MAX_LEVEL; + private static final double ONE_OVER_MAX_SIZE = 1.0 / MAX_SIZE; + private static final int NUM_FACES = 6; + private static final int POS_BITS = 2 * MAX_LEVEL + 1; + private static final int SWAP_MASK = 0x1; + private static final int LOOKUP_BITS = 4; + private static final int LOOKUP_MASK = (1 << LOOKUP_BITS) - 1; + private static final int INVERT_MASK = 0x2; + private static final int LEAF_MASK = 0x1; + private static final int[] LOOKUP_POS = new int[1 << (2 * LOOKUP_BITS + 2)]; + private static final int[] LOOKUP_IJ = new int[1 << (2 * LOOKUP_BITS + 2)]; + private static final int[] POS_TO_ORIENTATION = {SWAP_MASK, 0, 0, INVERT_MASK + SWAP_MASK}; + private static final int[][] POS_TO_IJ = + {{0, 1, 3, 2}, {0, 2, 3, 1}, {3, 2, 0, 1}, {3, 1, 0, 2}}; + private static final double UV_LIMIT = calculateUvLimit(); + private static final UvTransform[] UV_TRANSFORMS = createUvTransforms(); + private static final XyzTransform[] XYZ_TRANSFORMS = createXyzTransforms(); + + // Used to encode (i, j, o) coordinates into primitive longs. + private static final int I_SHIFT = 33; + private static final int J_SHIFT = 2; + private static final long J_MASK = (1L << 31) - 1; + + static { + initLookupCells(); + } + + /** Prevents instantiation. */ + private S2CellIdUtils() { + } + + /** + * Returns the leaf S2 cell ID for the specified latitude and longitude, both measured in + * degrees. + */ + public static long fromLatLngDegrees(double latDegrees, double lngDegrees) { + return fromLatLngRadians(Math.toRadians(latDegrees), Math.toRadians(lngDegrees)); + } + + /** + * Returns the ID of the parent of the specified S2 cell at the specified parent level. + * Behavior is undefined for invalid S2 cell IDs or parent levels not in + * [0, {@code getLevel(s2CellId)}[. + */ + public static long getParent(long s2CellId, int level) { + long newLsb = getLowestOnBitForLevel(level); + return (s2CellId & -newLsb) | newLsb; + } + + /** + * Inserts into {@code neighbors} the four S2 cell IDs corresponding to the neighboring + * cells adjacent across the specified cell's four edges. This array must be of minimum + * length four, and elements at the tail end of the array not corresponding to a neighbor + * are set to zero. A reference to this array is returned. + * + * <p>Inserts in the order of down, right, up, and left directions, in that order. All + * neighbors are guaranteed to be distinct. + */ + public static void getEdgeNeighbors(long s2CellId, @NonNull long[] neighbors) { + int level = getLevel(s2CellId); + int size = levelToSizeIj(level); + int face = getFace(s2CellId); + long ijo = toIjo(s2CellId); + int i = ijoToI(ijo); + int j = ijoToJ(ijo); + + int iPlusSize = i + size; + int iMinusSize = i - size; + int jPlusSize = j + size; + int jMinusSize = j - size; + boolean iPlusSizeLtMax = iPlusSize < MAX_SIZE; + boolean iMinusSizeGteZero = iMinusSize >= 0; + boolean jPlusSizeLtMax = jPlusSize < MAX_SIZE; + boolean jMinusSizeGteZero = jMinusSize >= 0; + + int index = 0; + // Down direction. + neighbors[index++] = getParent(fromFijSame(face, i, jMinusSize, jMinusSizeGteZero), + level); + // Right direction. + neighbors[index++] = getParent(fromFijSame(face, iPlusSize, j, iPlusSizeLtMax), level); + // Up direction. + neighbors[index++] = getParent(fromFijSame(face, i, jPlusSize, jPlusSizeLtMax), level); + // Left direction. + neighbors[index++] = getParent(fromFijSame(face, iMinusSize, j, iMinusSizeGteZero), + level); + + // Pad end of neighbor array with zeros. + Arrays.fill(neighbors, index, neighbors.length, 0); + } + + /** Returns the "i" coordinate for the specified S2 cell. */ + public static int getI(long s2CellId) { + return ijoToI(toIjo(s2CellId)); + } + + /** Returns the "j" coordinate for the specified S2 cell. */ + public static int getJ(long s2CellId) { + return ijoToJ(toIjo(s2CellId)); + } + + /** + * Returns the leaf S2 cell ID for the specified latitude and longitude, both measured in + * radians. + */ + private static long fromLatLngRadians(double latRadians, double lngRadians) { + double cosLat = Math.cos(latRadians); + double x = Math.cos(lngRadians) * cosLat; + double y = Math.sin(lngRadians) * cosLat; + double z = Math.sin(latRadians); + return fromXyz(x, y, z); + } + + /** + * Returns the level of the specified S2 cell. The returned level is in [0, 30] for valid + * S2 cell IDs. Behavior is undefined for invalid S2 cell IDs. + */ + static int getLevel(long s2CellId) { + if (isLeaf(s2CellId)) { + return MAX_LEVEL; + } + return MAX_LEVEL - (Long.numberOfTrailingZeros(s2CellId) >> 1); + } + + /** Returns the lowest-numbered bit that is on for the specified S2 cell. */ + static long getLowestOnBit(long s2CellId) { + return s2CellId & -s2CellId; + } + + /** Returns the lowest-numbered bit that is on for any S2 cell on the specified level. */ + static long getLowestOnBitForLevel(int level) { + return 1L << (2 * (MAX_LEVEL - level)); + } + + /** + * Returns the ID of the first S2 cell in a traversal of the children S2 cells at the specified + * level, in Hilbert curve order. + */ + static long getTraversalStart(long s2CellId, int level) { + return s2CellId - getLowestOnBit(s2CellId) + getLowestOnBitForLevel(level); + } + + /** Returns the ID of the next S2 cell at the same level along the Hilbert curve. */ + static long getTraversalNext(long s2CellId) { + return s2CellId + (getLowestOnBit(s2CellId) << 1); + } + + /** + * Encodes the S2 cell id to compact text strings suitable for display or indexing. Cells at + * lower levels (i.e., larger cells) are encoded into fewer characters. + */ + @NonNull + static String getToken(long s2CellId) { + if (s2CellId == 0) { + return "X"; + } + + // Convert to a hex string with as many digits as necessary. + String hex = Long.toHexString(s2CellId).toLowerCase(Locale.US); + // Prefix 0s to get a length 16 string. + String padded = padStart(hex); + // Trim zeroes off the end. + return padded.replaceAll("0*$", ""); + } + + private static String padStart(String string) { + if (string.length() >= 16) { + return string; + } + return "0".repeat(16 - string.length()) + string; + } + + /** Returns the leaf S2 cell ID of the specified (x, y, z) coordinate. */ + private static long fromXyz(double x, double y, double z) { + int face = xyzToFace(x, y, z); + UvTransform uvTransform = UV_TRANSFORMS[face]; + double u = uvTransform.xyzToU(x, y, z); + double v = uvTransform.xyzToV(x, y, z); + return fromFuv(face, u, v); + } + + /** Returns the leaf S2 cell ID of the specified (face, u, v) coordinate. */ + private static long fromFuv(int face, double u, double v) { + int i = uToI(u); + int j = vToJ(v); + return fromFij(face, i, j); + } + + /** Returns the leaf S2 cell ID of the specified (face, i, j) coordinate. */ + private static long fromFij(int face, int i, int j) { + int bits = (face & SWAP_MASK); + // Update most significant bits. + long msb = ((long) face) << (POS_BITS - 33); + for (int k = 7; k >= 4; --k) { + bits = lookupBits(i, j, k, bits); + msb = updateBits(msb, k, bits); + bits = maskBits(bits); + } + // Update least significant bits. + long lsb = 0; + for (int k = 3; k >= 0; --k) { + bits = lookupBits(i, j, k, bits); + lsb = updateBits(lsb, k, bits); + bits = maskBits(bits); + } + return (((msb << 32) + lsb) << 1) + 1; + } + + private static long fromFijWrap(int face, int i, int j) { + double u = iToU(i); + double v = jToV(j); + + XyzTransform xyzTransform = XYZ_TRANSFORMS[face]; + double x = xyzTransform.uvToX(u, v); + double y = xyzTransform.uvToY(u, v); + double z = xyzTransform.uvToZ(u, v); + + int newFace = xyzToFace(x, y, z); + UvTransform uvTransform = UV_TRANSFORMS[newFace]; + double newU = uvTransform.xyzToU(x, y, z); + double newV = uvTransform.xyzToV(x, y, z); + + int newI = uShiftIntoI(newU); + int newJ = vShiftIntoJ(newV); + return fromFij(newFace, newI, newJ); + } + + private static long fromFijSame(int face, int i, int j, boolean isSameFace) { + if (isSameFace) { + return fromFij(face, i, j); + } + return fromFijWrap(face, i, j); + } + + /** + * Returns the face associated with the specified (x, y, z) coordinate. For a coordinate + * on a face boundary, the returned face is arbitrary but repeatable. + */ + private static int xyzToFace(double x, double y, double z) { + double absX = Math.abs(x); + double absY = Math.abs(y); + double absZ = Math.abs(z); + if (absX > absY) { + if (absX > absZ) { + return (x < 0) ? 3 : 0; + } + return (z < 0) ? 5 : 2; + } + if (absY > absZ) { + return (y < 0) ? 4 : 1; + } + return (z < 0) ? 5 : 2; + } + + private static int uToI(double u) { + double s; + if (u >= 0) { + s = 0.5 * Math.sqrt(1 + 3 * u); + } else { + s = 1 - 0.5 * Math.sqrt(1 - 3 * u); + } + return Math.max(0, Math.min(MAX_SIZE - 1, (int) Math.round(MAX_SIZE * s - 0.5))); + } + + private static int vToJ(double v) { + // Same calculation as uToI. + return uToI(v); + } + + private static int lookupBits(int i, int j, int k, int bits) { + bits += ((i >> (k * LOOKUP_BITS)) & LOOKUP_MASK) << (LOOKUP_BITS + 2); + bits += ((j >> (k * LOOKUP_BITS)) & LOOKUP_MASK) << 2; + return LOOKUP_POS[bits]; + } + + private static long updateBits(long sb, int k, int bits) { + return sb | ((((long) bits) >> 2) << ((k & 0x3) * 2 * LOOKUP_BITS)); + } + + private static int maskBits(int bits) { + return bits & (SWAP_MASK | INVERT_MASK); + } + + private static int getFace(long s2CellId) { + return (int) (s2CellId >>> POS_BITS); + } + + private static boolean isLeaf(long s2CellId) { + return ((int) s2CellId & LEAF_MASK) != 0; + } + + private static double iToU(int i) { + int satI = Math.max(-1, Math.min(MAX_SIZE, i)); + return Math.max( + -UV_LIMIT, + Math.min(UV_LIMIT, ONE_OVER_MAX_SIZE * ((satI << 1) + 1 - MAX_SIZE))); + } + + private static double jToV(int j) { + // Same calculation as iToU. + return iToU(j); + } + + private static long toIjo(long s2CellId) { + int face = getFace(s2CellId); + int bits = face & SWAP_MASK; + int i = 0; + int j = 0; + for (int k = 7; k >= 0; --k) { + int nbits = (k == 7) ? (MAX_LEVEL - 7 * LOOKUP_BITS) : LOOKUP_BITS; + bits += ((int) (s2CellId >>> (k * 2 * LOOKUP_BITS + 1)) & ((1 << (2 * nbits)) + - 1)) << 2; + bits = LOOKUP_IJ[bits]; + i += (bits >> (LOOKUP_BITS + 2)) << (k * LOOKUP_BITS); + j += ((bits >> 2) & ((1 << LOOKUP_BITS) - 1)) << (k * LOOKUP_BITS); + bits &= (SWAP_MASK | INVERT_MASK); + } + int orientation = + ((getLowestOnBit(s2CellId) & 0x1111111111111110L) != 0) ? (bits ^ SWAP_MASK) + : bits; + return (((long) i) << I_SHIFT) | (((long) j) << J_SHIFT) | orientation; + } + + private static int ijoToI(long ijo) { + return (int) (ijo >>> I_SHIFT); + } + + private static int ijoToJ(long ijo) { + return (int) ((ijo >>> J_SHIFT) & J_MASK); + } + + private static int uShiftIntoI(double u) { + double s = 0.5 * (u + 1); + return Math.max(0, Math.min(MAX_SIZE - 1, (int) Math.round(MAX_SIZE * s - 0.5))); + } + + private static int vShiftIntoJ(double v) { + // Same calculation as uShiftIntoI. + return uShiftIntoI(v); + } + + private static int levelToSizeIj(int level) { + return 1 << (MAX_LEVEL - level); + } + + private static void initLookupCells() { + initLookupCell(0, 0, 0, 0, 0, 0); + initLookupCell(0, 0, 0, SWAP_MASK, 0, SWAP_MASK); + initLookupCell(0, 0, 0, INVERT_MASK, 0, INVERT_MASK); + initLookupCell(0, 0, 0, SWAP_MASK | INVERT_MASK, 0, SWAP_MASK | INVERT_MASK); + } + + private static void initLookupCell( + int level, int i, int j, int origOrientation, int pos, int orientation) { + if (level == LOOKUP_BITS) { + int ij = (i << LOOKUP_BITS) + j; + LOOKUP_POS[(ij << 2) + origOrientation] = (pos << 2) + orientation; + LOOKUP_IJ[(pos << 2) + origOrientation] = (ij << 2) + orientation; + } else { + level++; + i <<= 1; + j <<= 1; + pos <<= 2; + for (int subPos = 0; subPos < 4; subPos++) { + int ij = POS_TO_IJ[orientation][subPos]; + int orientationMask = POS_TO_ORIENTATION[subPos]; + initLookupCell( + level, + i + (ij >>> 1), + j + (ij & 0x1), + origOrientation, + pos + subPos, + orientation ^ orientationMask); + } + } + } + + private static double calculateUvLimit() { + double machEps = 1.0; + do { + machEps /= 2.0f; + } while ((1.0 + (machEps / 2.0)) != 1.0); + return 1.0 + machEps; + } + + @NonNull + private static UvTransform[] createUvTransforms() { + UvTransform[] uvTransforms = new UvTransform[NUM_FACES]; + uvTransforms[0] = + new UvTransform() { + + @Override + public double xyzToU(double x, double y, double z) { + return y / x; + } + + @Override + public double xyzToV(double x, double y, double z) { + return z / x; + } + }; + uvTransforms[1] = + new UvTransform() { + + @Override + public double xyzToU(double x, double y, double z) { + return -x / y; + } + + @Override + public double xyzToV(double x, double y, double z) { + return z / y; + } + }; + uvTransforms[2] = + new UvTransform() { + + @Override + public double xyzToU(double x, double y, double z) { + return -x / z; + } + + @Override + public double xyzToV(double x, double y, double z) { + return -y / z; + } + }; + uvTransforms[3] = + new UvTransform() { + + @Override + public double xyzToU(double x, double y, double z) { + return z / x; + } + + @Override + public double xyzToV(double x, double y, double z) { + return y / x; + } + }; + uvTransforms[4] = + new UvTransform() { + + @Override + public double xyzToU(double x, double y, double z) { + return z / y; + } + + @Override + public double xyzToV(double x, double y, double z) { + return -x / y; + } + }; + uvTransforms[5] = + new UvTransform() { + + @Override + public double xyzToU(double x, double y, double z) { + return -y / z; + } + + @Override + public double xyzToV(double x, double y, double z) { + return -x / z; + } + }; + return uvTransforms; + } + + @NonNull + private static XyzTransform[] createXyzTransforms() { + XyzTransform[] xyzTransforms = new XyzTransform[NUM_FACES]; + xyzTransforms[0] = + new XyzTransform() { + + @Override + public double uvToX(double u, double v) { + return 1; + } + + @Override + public double uvToY(double u, double v) { + return u; + } + + @Override + public double uvToZ(double u, double v) { + return v; + } + }; + xyzTransforms[1] = + new XyzTransform() { + + @Override + public double uvToX(double u, double v) { + return -u; + } + + @Override + public double uvToY(double u, double v) { + return 1; + } + + @Override + public double uvToZ(double u, double v) { + return v; + } + }; + xyzTransforms[2] = + new XyzTransform() { + + @Override + public double uvToX(double u, double v) { + return -u; + } + + @Override + public double uvToY(double u, double v) { + return -v; + } + + @Override + public double uvToZ(double u, double v) { + return 1; + } + }; + xyzTransforms[3] = + new XyzTransform() { + + @Override + public double uvToX(double u, double v) { + return -1; + } + + @Override + public double uvToY(double u, double v) { + return -v; + } + + @Override + public double uvToZ(double u, double v) { + return -u; + } + }; + xyzTransforms[4] = + new XyzTransform() { + + @Override + public double uvToX(double u, double v) { + return v; + } + + @Override + public double uvToY(double u, double v) { + return -1; + } + + @Override + public double uvToZ(double u, double v) { + return -u; + } + }; + xyzTransforms[5] = + new XyzTransform() { + + @Override + public double uvToX(double u, double v) { + return v; + } + + @Override + public double uvToY(double u, double v) { + return u; + } + + @Override + public double uvToZ(double u, double v) { + return -1; + } + }; + return xyzTransforms; + } + + /** + * Transform from (x, y, z) coordinates to (u, v) coordinates, indexed by face. For a + * (x, y, z) coordinate within a face, each element of the resulting (u, v) coordinate + * should lie in the inclusive range [-1, 1], with the face center having a (u, v) + * coordinate equal to (0, 0). + */ + private interface UvTransform { + + /** + * Returns for the specified (x, y, z) coordinate the corresponding u-coordinate + * (which may lie outside the range [-1, 1]). + */ + double xyzToU(double x, double y, double z); + + /** + * Returns for the specified (x, y, z) coordinate the corresponding v-coordinate + * (which may lie outside the range [-1, 1]). + */ + double xyzToV(double x, double y, double z); + } + + /** + * Transform from (u, v) coordinates to (x, y, z) coordinates, indexed by face. The + * resulting vectors are not necessarily of unit length. + */ + private interface XyzTransform { + + /** Returns for the specified (u, v) coordinate the corresponding x-coordinate. */ + double uvToX(double u, double v); + + /** Returns for the specified (u, v) coordinate the corresponding y-coordinate. */ + double uvToY(double u, double v); + + /** Returns for the specified (u, v) coordinate the corresponding z-coordinate. */ + double uvToZ(double u, double v); + } +} diff --git a/proto/src/OWNERS b/proto/src/OWNERS index abd08deced79..ccff6245ff2c 100644 --- a/proto/src/OWNERS +++ b/proto/src/OWNERS @@ -2,3 +2,4 @@ per-file gnss.proto = file:/services/core/java/com/android/server/location/OWNER per-file wifi.proto = file:/wifi/OWNERS per-file camera.proto = file:/services/core/java/com/android/server/camera/OWNERS per-file system_messages.proto = file:/core/res/OWNERS +per-file altitude.proto = file:/location/OWNERS diff --git a/proto/src/altitude.proto b/proto/src/altitude.proto new file mode 100644 index 000000000000..1010f67b501d --- /dev/null +++ b/proto/src/altitude.proto @@ -0,0 +1,54 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto2"; + +package com.android.internal.location.altitude; + +option java_package = "com.android.internal.location.altitude"; +option java_multiple_files = true; + +// Defines parameters for a spherically projected geoid map and corresponding +// tile management. +message MapParamsProto { + // Defines the resolution of the map in terms of an S2 level. + optional int32 map_s2_level = 1; + // Defines the resolution of the tiles in cache in terms of an S2 level. + optional int32 cache_tile_s2_level = 2; + // Defines the resolution of the tiles on disk in terms of an S2 level. + optional int32 disk_tile_s2_level = 3; + // Defines the `a` coefficient in the expression `a * map_value + b` used to + // calculate a geoid height in meters. + optional double model_a_meters = 4; + // Defines the `b` coefficient in the expression `a * map_value + b` used to + // calculate a geoid height in meters. + optional double model_b_meters = 5; + // Defines the root mean square error in meters of the geoid height. + optional double model_rmse_meters = 6; +} + +// A single tile associating values in the unit interval [0, 1] to map cells. +message S2TileProto { + // The S2 token associated with the common parent of all map cells in this + // tile. + optional string tile_key = 1; + + // Encoded data that merge into a value in the unit interval [0, 1] for each + // map cell in this tile. + optional bytes byte_buffer = 2; + optional bytes byte_jpeg = 3; + optional bytes byte_png = 4; +} -- GitLab