From 9c7dc2a897096ed71e96eb13a73380761b2caac2 Mon Sep 17 00:00:00 2001 From: FliegendeWurst <2012gdwu+github@posteo.de> Date: Mon, 18 Nov 2024 23:10:57 +0100 Subject: [PATCH] New bear screensaver --- Cargo.lock | 449 ++++++++++++++++++----- Cargo.toml | 6 +- src/bin/main_loop.rs | 3 +- src/bin/refresh_json.rs | 2 +- src/bin/schedule/github_notifications.rs | 4 +- src/bin/screensaver/mod.rs | 73 +++- src/bin/screensaver/teddy_bear.raw | 5 + src/bin/status_check.rs | 2 +- src/github.rs | 14 +- src/lib.rs | 1 + 10 files changed, 457 insertions(+), 102 deletions(-) create mode 100644 src/bin/screensaver/teddy_bear.raw diff --git a/Cargo.lock b/Cargo.lock index d68141c..d0a05f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ab_glyph" @@ -231,6 +231,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" + [[package]] name = "calloop" version = "0.10.6" @@ -253,9 +259,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.36" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", @@ -391,9 +397,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6" dependencies = [ "libc", ] @@ -497,6 +503,17 @@ dependencies = [ "embedded-hal 0.2.7", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "dlib" version = "0.5.2" @@ -666,9 +683,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -683,6 +700,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foreign-types" version = "0.3.2" @@ -727,11 +750,10 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "matches", "percent-encoding", ] @@ -789,13 +811,11 @@ dependencies = [ [[package]] name = "gpiocdev" -version = "0.6.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7266f74c73ad83d98d96c11ae301ec6d9d2c1a8ff10d4211ae301cdcc62702" +checksum = "4ea1a9715542f84bc7b67cbb01c02ed3a72a919750b7d8611cc5bd684449386e" dependencies = [ - "chrono", "gpiocdev-uapi", - "nohash-hasher", "thiserror", ] @@ -854,6 +874,35 @@ dependencies = [ "digest", ] +[[package]] +name = "hoot" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9faf289df1f00f6daaa1bcce481f6ef7f28f153a8ef985409914d357c9cd57a2" +dependencies = [ + "http", + "httparse", + "log", + "url", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + [[package]] name = "i2cdev" version = "0.5.1" @@ -890,14 +939,142 @@ dependencies = [ ] [[package]] -name = "idna" -version = "0.2.3" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1008,9 +1185,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.162" +version = "0.2.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" [[package]] name = "libloading" @@ -1083,6 +1260,12 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "log" version = "0.4.22" @@ -1098,12 +1281,6 @@ dependencies = [ "libc", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "memchr" version = "2.7.4" @@ -1268,12 +1445,6 @@ dependencies = [ "memoffset 0.7.1", ] -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - [[package]] name = "num-conv" version = "0.1.0" @@ -1401,9 +1572,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" @@ -1640,9 +1811,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1722,9 +1893,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.39" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -1735,9 +1906,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.14" +version = "0.23.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" +checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" dependencies = [ "log", "once_cell", @@ -1749,10 +1920,19 @@ dependencies = [ ] [[package]] -name = "rustls-pki-types" -version = "1.9.0" +name = "rustls-pemfile" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -1792,9 +1972,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -1813,9 +1993,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", @@ -1824,9 +2004,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -2011,6 +2191,12 @@ dependencies = [ "simple-signal", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strict-num" version = "0.1.1" @@ -2045,6 +2231,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "sysfs_gpio" version = "0.6.2" @@ -2065,18 +2262,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -2181,20 +2378,15 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "toml_datetime" version = "0.6.8" @@ -2253,27 +2445,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - [[package]] name = "untrusted" version = "0.9.0" @@ -2282,30 +2459,53 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "3.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "3a139c7262528ca928e9a4368281577453ae93953159d7d7b922165bd083049f" dependencies = [ "base64", + "cc", + "hoot", + "http", "log", "once_cell", + "percent-encoding", "rustls", + "rustls-pemfile", "rustls-pki-types", - "url", + "utf-8", "webpki-roots", ] [[package]] name = "url" -version = "2.3.0" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "vcpkg" version = "0.2.15" @@ -2836,6 +3036,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "x11-dl" version = "2.21.0" @@ -2885,6 +3097,30 @@ version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -2905,12 +3141,55 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "zune-inflate" version = "0.2.54" diff --git a/Cargo.toml b/Cargo.toml index c223f03..1294ebd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,11 +21,11 @@ serde = "1.0.136" rppal = { version = "0.14.1", features = ["hal"] } ssd1351 = { git = "https://github.com/FliegendeWurst/ssd1351-rust", rev = "3de5be50bd9a59391c669aec8357923a56d121f6" } display-interface-spi = "0.4.1" -ureq = { version = "2.4.0", default-features = false, features = ["tls"] } +ureq = { version = "=3.0.0-rc2", default-features = false, features = ["rustls"] } winit = { version = "0.28.7", optional = true } softbuffer = { version = "0.3.1", optional = true } rand_xoshiro = "0.6.0" -gpiocdev = "0.6.0" +gpiocdev = "0.7.2" rpassword = "7.2.0" andotp-import = "0.1.0" totp-rs = "5.4.0" @@ -34,7 +34,7 @@ color_space = "0.5.4" [features] pc = ["winit", "softbuffer", "image"] -default = [ "pc" ] +default = ["pc"] [profile.release] codegen-units = 1 diff --git a/src/bin/main_loop.rs b/src/bin/main_loop.rs index 3dbe42a..c230bf5 100644 --- a/src/bin/main_loop.rs +++ b/src/bin/main_loop.rs @@ -23,7 +23,7 @@ use rppal::{ }; use rusqlite::Connection; use schedule::{github_notifications::GithubNotifications, Schedule}; -use screensaver::{Screensaver, TimeDisplay}; +use screensaver::{BearReminder, Screensaver, TimeDisplay}; use ssd1351::display::display::Ssd1351; use time::OffsetDateTime; use time_tz::{timezones::db::europe::BERLIN, OffsetDateTimeExt}; @@ -80,6 +80,7 @@ impl> ContextDefault { last_modified: RefCell::new(None), last_call: RefCell::new(OffsetDateTime::now_utc().to_timezone(BERLIN) - time::Duration::seconds(50)), })); + scheduled.push(Box::new(BearReminder::default())); ContextDefault { database: Rc::new(RefCell::new(database)), screensavers, diff --git a/src/bin/refresh_json.rs b/src/bin/refresh_json.rs index 1409095..e011ae0 100644 --- a/src/bin/refresh_json.rs +++ b/src/bin/refresh_json.rs @@ -23,5 +23,5 @@ fn main() { } fn get_json(url: &str) -> Result> { - Ok(ureq::get(url).call()?.into_string()?) + Ok(ureq::get(url).call()?.into_body().read_to_string()?) } diff --git a/src/bin/schedule/github_notifications.rs b/src/bin/schedule/github_notifications.rs index 87c0382..c461f13 100644 --- a/src/bin/schedule/github_notifications.rs +++ b/src/bin/schedule/github_notifications.rs @@ -93,10 +93,10 @@ impl> Draw for GithubNotificationsDraw { let hue = calls as f64 / 40.0 * 360.0; let hsv = Hsv::new(hue, 1.0, 1.0); let rgb = hsv.to_rgb(); - let r = rgb.r as u8 >> 3; + let r = rgb.r as u8 >> 3; let g = rgb.g as u8 >> 2; let b = rgb.b as u8 >> 3; - self.screen.draw_all(disp, Rgb565::new(r, g, b))?; + self.screen.draw_all_colored(disp, Rgb565::new(r, g, b))?; } else { disp.clear(Rgb565::BLACK)?; // fit 9 lines diff --git a/src/bin/screensaver/mod.rs b/src/bin/screensaver/mod.rs index 43e496d..2961374 100644 --- a/src/bin/screensaver/mod.rs +++ b/src/bin/screensaver/mod.rs @@ -16,6 +16,7 @@ use rand_xoshiro::rand_core::RngCore; use time::{Duration, OffsetDateTime}; use time_tz::{timezones::db::europe::BERLIN, OffsetDateTimeExt}; +use crate::schedule::Schedule; use crate::{Draw, Rng}; pub static SPEED: AtomicU64 = AtomicU64::new(32); @@ -104,7 +105,7 @@ impl SimpleScreensaver { } } - pub fn draw_all>(&self, disp: &mut D, color: Rgb565) -> Result<(), D::Error> { + pub fn draw_all_colored>(&self, disp: &mut D, color: Rgb565) -> Result<(), D::Error> { disp.fill_contiguous( &Rectangle::new((0, 0).into(), (128, 128).into()), (0..128 * 128).map(|idx| { @@ -121,6 +122,26 @@ impl SimpleScreensaver { )?; Ok(()) } + + pub fn draw_all>(&self, disp: &mut D, flipped: bool) -> Result<(), D::Error> { + disp.fill_contiguous( + &Rectangle::new((0, 0).into(), (128, 128).into()), + (0..128 * 128).map(|idx| { + let (mut red, mut green, mut blue) = + (self.data[3 * idx], self.data[3 * idx + 1], self.data[3 * idx + 2]); + if flipped { + red = 255 - red; + green = 255 - green; + blue = 255 - blue; + } + let r = red >> 3; + let g = green >> 2; + let b = blue >> 3; + Rgb565::new(r, g, b) + }), + )?; + Ok(()) + } } static TIME_COLOR: Rgb565 = Rgb565::new(0b01_111, 0b011_111, 0b01_111); @@ -215,6 +236,7 @@ pub static DUOLINGO: SimpleScreensaver = SimpleScreensaver::new("duolingo", incl pub static SPAGHETTI: SimpleScreensaver = SimpleScreensaver::new("spaghetti", include_bytes!("./spaghetti.raw")); pub static PLATE: SimpleScreensaver = SimpleScreensaver::new("plate", include_bytes!("./plate.raw")); pub static GITHUB: SimpleScreensaver = SimpleScreensaver::new("github", include_bytes!("./github.raw")); +pub static TEDDY_BEAR: SimpleScreensaver = SimpleScreensaver::new("teddy_bear", include_bytes!("./teddy_bear.raw")); pub fn screensavers>() -> Vec>> { vec![ @@ -225,3 +247,52 @@ pub fn screensavers>() -> Vec Self { + Self {} + } +} + +impl> Schedule for BearReminder { + fn check(&self, _ctx: &dyn crate::Context, time: OffsetDateTime) -> bool { + time.hour() == 21 && time.minute() == 30 && time.to_julian_day() % 2 == 1 + } + + fn execute(&self, ctx: &dyn crate::Context, _time: OffsetDateTime) { + ctx.do_draw(Box::new(BearDraw { calls: RefCell::new(0) })); + } +} + +struct BearDraw { + calls: RefCell, +} + +impl> Draw for BearDraw { + fn draw(&self, disp: &mut D, _rng: &mut Rng) -> Result::Error> { + let mut calls = self.calls.borrow_mut(); + *calls += 1; + + if *calls > 73 { + return Ok(false); + } + + TEDDY_BEAR.draw_all(disp, *calls % 8 >= 4)?; + + Ok(true) + } + + fn expired(&self) -> bool { + *self.calls.borrow() > 110 + } + + fn as_any(&self) -> &dyn Any { + &*self + } + + fn as_any_mut(&mut self) -> &mut dyn Any { + &mut *self + } +} diff --git a/src/bin/screensaver/teddy_bear.raw b/src/bin/screensaver/teddy_bear.raw new file mode 100644 index 0000000..26de5f0 --- /dev/null +++ b/src/bin/screensaver/teddy_bear.raw @@ -0,0 +1,5 @@ +џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџџўџџўџџўџџўџџўџџўџџўџџўўў§ўў§§§ќќќќќќћџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћўўћїїѕјјіќќљњћјќќљќќљђђяїјѕЫЫШЮЯЬЏЏЌЗИЕЧЧХцчфќќќќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ѓєяООК›œ—opkš›——˜“˜™”ЬЭШРСМЙКЕPQLLMH<=8672995~~zЋЋЋ№№№ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§ќььщЎЏЋggd%&! ! ! ! !"#562klh:;6 !!""#!*,*%'&((&‹‹Šёё№ќќћўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ччх]][! "$#%'& **)ЋЋЉххуќќќўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўјјі! #%$ "!  776ИИИїїї§§§§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўњњјІЇЂ%&#!#" "!)))•••ииићћћўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ћќљЩЪЧ331 MMLШШЧљљјўў§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§абЭ./+HHFЩЪЧќќњўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўђђ№nok  HIFММЙњњљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќТТР12-###  "$# "AB=ииеўўќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§ћИИЕNNK'(% "%%'    !!"&&$„…эюъўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўллйOPK'(##$"$%% !# "     "" ЁЂљљјўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќЖЖЕ-.)%%$      BC?ЛЛКќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўњњњ##!        !!!$$$$$$WWVцццўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§іієxxw"#%        !!!553РРПћћњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќхцсGHE"#%           nokёёяўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќлмз120!)*,!"$      ==:ЮЮЬ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќЊЋЇ()' !#"#%    yywєєєўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўїїі}"#" %&(    ЅЅЄќќћџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§ннн888&&'"#%        673ккиўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ќќќ•••((( !"            !#$%'ЈЉЇ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ъъъQQQ'''         "#%!"$ ""__^ѕѕѕ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџЦЧЦ556&&'!"#     ! !$%'#$'HIG№№я§§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўіїіxyy)*,!"&'(+       "$%) $"#' !%&'+%&)==:ррмўўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўНОО354"#%,-1(),!"$       $%)&'+'(,458-.2%&* $!"% :;7рсмўўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќїїїooo%'&()+,-1+,/       "",-1126*+/%&*!"&"$%' "$$!­ЎЉєѕђўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ссрFGG,..013./3 #      "$%((),*+.,-0%&*! !!" ]^Zжз䧧ќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§њЛМИ:;:/02/02 !#       "  "#$&!!!!""""''':;6š›•јљіўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќњІЇЂ<=<346./1!    !# !#$%' " !!$$$"""./*‡ˆ‚ѓєё§§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§ћММИIJI9:<&')    !hicммꧧўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§ћ­­ЉYYX89;!"$ !#$%'$%'#$&    #$782сс裏ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќКККMMN$%' !##$&()+113    !!))'ФФУ§§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџэээttt667)*,*+-..0 ! #$&!""$###((&ВВА§§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўЧЧЧAAA !&')*+-./1""$ #"!*))-,-((( ‚‚њњљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўВВВ$$$*+,./1-.0$%'.,(&!&&&###bbaѓѓђџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§­­­333677-/.+-,)%2.  !!% 4,`R)sc2yf1hX+<3*'!" #! cb`ёђ№ўџќўџћ§џџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§§§ќІІЅ998676232"#!..)#i^:›ŒUn3P>8*)!+ 5+   ! 4-C7SD"VBnW$’y<‹u5„r8uf3dW.WL-/) .*)($KH4ждС§ўљўўџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќљљіuvs11.552''$ ?8#wRžŽ]™AХІ\Н›Vž@vZ"~f0eQ&s]+…q9dP)N=UD _O)]M%N=8+H;!cP*g7…i3o3–r3…e,†d,‹k1‰o4‹w@mZ%ua+zf0o:xlFC;*0-~qGШЛ‰їѓф§§џџџќџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќёђэ[\W34//.* %pa9ЗŸ`ЧЊcЫЇXЦŸMЮЊWСœN y2Ё{7—v2w;Іƒ>Є„Bšy<”t5Žn+Ђƒ<—w7x])“yGŽk/”s5“r2˜v3›y4’u5r5n5s6w?g1nW‚l/’~?™‡WL@* <3ЁŠRШЎdсеЙў§џќџљџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ў№№э‹Œ~fbS?6)2+$&$"!&#jZ8НЃgжКoиИcлЗ^пИ^ЭІIЪЄOП™OЎ†AБ‡@В†DДŠFВ‹BЋ‚6žv1Ÿy6Јƒ=Ђ|3™w1І…D’n/Ѕ‚@œ{6Єƒ<Ђ‚8Ё„A—y;‘p5›y9Ђ†Kv]$†o3ЃMЌ˜X‰UT?B,S=XBaM'Џ˜[Ф­]лЮЌў§ў§џњџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џўњќ§омжЌ ƒpB_R7;1 PD$D5=.9*“QжЛyрУvуТnшУkцМbйЋMЬŸFбЈUП™LЖ‰=В†>КEТœMК”DЅ~3Ћ…>­ˆ@“k(–s0ЎGž{7ЎŒDЂ€8›x3Ѓ€=œ{8šx8”q2˜u4­ŒL™z9ЋŽKВ—QБ˜RЇŒL‰h/[!Œh+Žn4Žs:˜SСЉWлЭЃџўњ§џ§џўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџўќџџ§ћђпЮžСЊczK}f<‚HЋ‹L­N—{<ХЋdтЦyыЫ|шФtшРlщМeфБVиЂFШ—?ЯЃQЖ…6З‰<Р–GЫІSХ QК•HО—Nžv2‘i*•r0ЏHЋ‰@Њ†<Ÿz5Ÿy9Ё{=j-˜r0›v1­ˆBЕ’JБGЗ—OИšRВ›VВ›\ ƒD–s.x-­Š@Б“LЏ‘FНЁPЯО‰§ћя§џџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџўџўјіу№оЃъЭ…КœaК›XЩЃWЯЁVаЂPЧžQкИrъЬ„юЭ|ыХwчНkфЗbхГ^тІMЯ“=С‹=ФBОŽCП–HШЃRШЅZЫІYА‰Bd&˜p.Ї„@Ј‡BŸ|6 z6 z7˜q1Ёz<ƒW"—l.Ј‚6Е’AЕ“GК™OЛœTЙœUЙžZА”SЌ‹Lšv4Ѕ:­DБ“JЋ‰>И•GУАrієсўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџ§џќѕёеїуžьЭ{рПoлЗbзЌYв NЩ•@ЯЅSеЕgфЧwэЪrщТnфЙhфЗeпА\йŸNж=Вu(Ж€6П‘HјHЪUбЉ_ЭЇ[З’MД’VІ„FЁ|8Њ…@Ё}<–m1™p2Žf)•l2R ›q0ВŠ8Ж6̘J̘PГŽGИ—PЗšSЎ‘NЈ‡K|W!€Y"‘l1­‹JЌˆCА‰BЛІ\ё№т§џќџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќѕэвѕо“яЩhцЗ[нЊRгOСŠ@М‰<рЖgэЭ|ыЮ{ыЩqђЭwэФqщМjдЅTЪ›FЪ‹5Еv.Єf-ДCЦžOЫІYзЗlйМpгИoрЦ„ЯЕsКYБ“OЛЂ_В•W•t6j/V%‚W"Єy3Њ~.Ћ.­†:Њ…;ГFɘQЙVĘT­ŽP†c+{T"pG…])ˆ["šj)ЗšOѕяйўџўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџќіуѓк‘ьПXрЅBаŽ6Дr*Ђi&бЁXхМnэЬzёд№Яy№Ьv№ЩtыРlнЎ\гЇPР‹<‚U"L5cH$Кš]йДtшЭѕл‹ьд„ша„цЭоТzгИrкЦ~ЫЕpКž\Šj5\=qP&‹d*—i$o)Њ€7ВŒAЎŒCЙšQКžVЕ™SЏO’o1i,i-›o0œn*Џ‚6МšQнаЇўќњ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§џџ§ќѓєо шЛWоЂ?ЮŠ3Бq+аœUнБ`уОkэЮyяв~№б|ёЯyяЪrыУjуЖ]Ъ“B’_#C3#BA:6*ЫЗ№з“іжˆэЬxђвzыЪuцФoьШzэЬ‚яжˆоСtдЖoŠsE;4*+\?U ’b$Єu.ВŒ?ЛœOКžRЖšQЙWЌŽIŸ|:Ё~= z7І}7Њ„7Ж–BФЉdЭПƒњі№ќџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџќџ§јэФъШjрЅBЦƒ2жЅ]фЛhфИ]уНjыЯ€ђдёаz№ЫrыПcщЗXзЁFС‡3Ѕo-`[SUPM‰{Wісžјф•єб{юТnхЗ\тЕaхКhпЌ_№Щvєв†чЦ{кЛoІY,%! $B-zQd'žu0­‰?З™OКžTИœUЖ™WЅ†G |:Јƒ>Ј‚;Јƒ8БDЛŸTЪЙ~цсХ§§ћўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўўћяШѓЮpрЇCг˜GыФsшЦkщОcчУqяе‰ёгяЮyєЯvђЦkъЖXиŸHЦ•EУFwHžŒ`фЮ§х—јн‡іЬlкАiАŒM–wE›…Q OЗž[зНgйЗhеВ`ХЋe~V+"W?–q4Љƒ?Ж“KН›QМTЙTПЄ]Й›YЊ‡HЃ~;Є~8Љ„<БBЖ•KУЄZЦВuшфЭўџќўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџўўўўѓуОъУiшЕSэОhђв}ъЩmыТhхСqєлјлˆђг~ѓаyёЩqцЙ`лЊTз­^вІVпКlъЮ~њоŒћоˆ§оƒљд~—€W52*003.0392=@6@|eDйДiоКdнОlаЙvЂ\˜{EІ?Ћˆ?АŽEИ—MМœSЙšSКŸXЛ›VЉ‚>Ї‚;ГJЖ’KЖ•JЙšQУЅ]ЭИчуЯўџќџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќўџћ№гєд„ъСf№Ьyђг№ЫrыУjтСqѓл’ѕкˆёвёб|ђЮzэЩtъФnцЙdыЧwѓг€єејкŠјжƒјЯtщПxUG5")0 &#dT4мЙlоЛgмОkдИjУЉcГ’O­‡CЏ‰BБ‘FЛ›QОUД“LĘRАIЄz1Ќ…<ГKИ–PЙ™OКœTХЌlжЪЂё№чўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџўџљќўџќїхёл˜ёг{яб}ёб‚ыЪrэЩmшХu№з‘ёнѕл‹јкˆњиƒїд|эЦkхНfѕе†ілілћоќл†ѓЬqсИon[= !ŒvLлЙqиЗhлЙkЬЋ`ЫЏdЦЊbРž[Л“NНšQИšNИšPО ZØRЇ†?Њ8ВŒDД‘NЗ”QЛœSТІdФЎ~щрЩ§ќј§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџљ§ўџўћєѕфГєлŒѓи†їз‡эЫrыФeчОkѓдёкŒїл‹із„ѕбzѓЬrщТhѓЯyњлŠікŒћр‘јк‡ід{юЧjмЋRІ€H6% A2Йš`иЕlгАcЬЉZЩІ\ЪЉ`ЭЏhЪЌhХЃ[УЁXЛœQКSКYЗ–W­…AЏƒ9БŠFЕ•RØXОЈvФД‰шпСќњ№џ§§џўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџќџўџџ§ўќѓняоЈёл™ѓзюЭyъТfщНhюЪƒ№дˆљм‰єв~№ЫrіЯuєЯ{њи…јй†ій†їл‡ізівxёЪnсЗaЯR›s>O; L>ЉZжГhЮЉ[ЬЈXРŸOФЃXЪЅ]ЬЊeЩЋgУІ]Р WЙ™PКœSНŸ]К—YЎŠEД”MЙ›_ПЉuобБњєь§њѕўџјўўўџўџџўџџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџўџџ§џўќїђм№тИёмЄюдŽчЧwчУtђг“їпšєйŠїй†іг|ђЭuяЮyіжƒїз‡їиŠћн‹јз„ђЬwъСlнЕgзЉZЦ–KЊ‚APA%Йœ^пЙmоЛlиГbеБ^иИfвДhШЅ\ХЄ_ЦЉeСЂYС YЛšSЕ—PИ›ZЗš_ЩЖŒскТэхгђэн§ћіў§ўџўџ§џџўџџџўџџўџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџ§ўўџџўћќљщяшЭ№хЧэнЋхдŸѕхСякžєйŽѕйђв|юШqьЦqѓдƒікљнји…ђЯ~яЪyяШtфЖdиЊYбЅVХšP_I%ЭЊgуЙgпЛkпЗjзБcаАaгЖgЯБiФІ`ФІaНUЙ—PК™UИ›TЗš]ОЈ€єюм§ўўўўџџ§џўџџџџ§џџќџџ§џџўџџўўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћўџјўўћћјщјєчџњєёмЌєйŽїмŽєг~яЧoюХqєг„ілŽєл‹ѓк†ѓиˆѓз‡ъЬyсЛcиБYмД]ЬЅQ_N,КЁcкЛiпРrзЖdЩЇVЬЋ_ЭЎfЬЏjУІ`МWД“LМšQɘSМ XЙ gлЬЕўћє§ўўўўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџ§ўќўўџўќјђуМяйёж‚ѓбёЫtѓЬvѓЯ}єе†єи‹ѕжˆєв…ъХzиБhбЃ_ЭŸ]ЪŸ[ЦžXoU9РЁcдЎ_ФšXИ™aБSПšVШЅ_РЁ]СЂ]КšTЖ”MЙ—MМ›SЗœVЖЃsшнгџ§ўўўџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџџўўќ§џ§ќџћ§єтёнЁёж„єЯ‡юЪsюЩrёЫuёЯ~ѕе‰іЮ{№ФnлЈVЮ™OЌ‰U‡f:Ј2)“2#ŽD1 gMЎTА…TДŠTЛWЩ›eбЉsнЙжБpв­mаЊhЭІaФœV՘a˘_ЏˆT™rFx]@H9$7.4]oz„Š‹…€ˆ"Ђ,$Тvrѕфрљўќќўџўўџџўўќџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџќџћўџљ§іўюцчДЏхg_пG2мA*в7*Й.%Ђ(!”%o#R#S:"_J/}[<…fF•wQž}QЌ[Ж—dРžkИ–bšxLƒ\7F3U6-FIR`jt}ˆ‹ŽŽ‰†”%#›*ІLCуТИњњѕјџџџ§џ§џўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џўў§ў§ўћіеЫсfaчE4ч?.н;0ж71Ъ5(И+%Љ! В+)Ё!"vU@$ *G6'hS?–mfN;aE3D+"F 01kOIL5*I\ g ny‚ˆŒ“ ‚" œ'!œ4/пЖГ§ћћ§ўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§ќќќўјсмчeVьF8ъA4с=0й;.а7)Ь6(Х/(Н/+Љ%"Љ&'˜rT= 32.3#/ ?<@ ~)-‰c]S8+V' bku|…ŒŽ‘““ †• !™!“"Ÿ1+жЖГќќ§ў§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џћћѕьŽ†іK@чE7т=/м:-ж9,б7)Ь6)Щ0'Х/'Е)"›Ћ''žˆ}hTJ PQV^]VaІcaz:3mmo{‚ˆ‘’““’ • "–$žA4эпе§ќўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџѕдЬ№VJцJ9хA2м:+ж7(в4'Ю3&Э4(Щ/'С,&Д)%“ )%Ћ##’ŒqecfknqeY ’34ЉaYƒ|x„ŠŽ’”•— !– !Š‹…"Ž)Р™oїющ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџўџўџўџџџћіъ‰†яPCчD8ц@.к;+к<-ж7*е8*Я6)Ч/(Ж'$А'(  !ŽЗ*+Ѕ!!˜ ‘Š…xvz}ysa €Џphˆ‰€ƒ…Š• –— — ˜!"‚…‹ƒŠvЃW2ТŸƒќњљ§§ќўўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џќџќџќўњџўїкгх[S№C8рA-т>/о=.о<-н;,и8)Я6*Ч/'М,(Џ)%Ѓ&"‡Ќ)(В%#Ѕ"›–Ž‡z}~xbtИst‹& ŠŠ‡‡Œ˜ !˜ — !• ˜&"€…‚{w{І_<пЧМ§§іўўўџџћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џќџў§§џњ§ќю­ЉьF?ш?0оC.у=-ч>.п:,и7-Э1)Ф/)Л)%А%#Њ$#Ђ#!‘Ђ%$Д%%Љ%#Ё" œ š "Œy{zxffДtn”LBŒ†ˆ”— ™ !– ”–#!|}zs‚v^ƒ#ДwHёърўўњ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџ§џџ§§ўќяърkcъG8ъE7п9/п:0ж5+Ь1(Ц1*Л+%Ў%$Ї#"Ђ""ž ›ŽГ('І! Ѕ" Є#" ! –‹€|xnR œVOЉvl‘‹‡ˆ’– š!"š!"–”“ }rnlvf[…Еi9Лšƒћѓыњ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџџћќюУЛяL@шA3с92Ы/)И,$Л*'К,(Д*%Ћ&"ž!"‘’•–Š~Ј#!І Ј$"Ј$"Ї$"  –‡€zwJ ‡)(ЖŠƒ~%…’•"$˜!•”|gh leVm›E(У‡7бЖњќюџџўўџџўџўџџџџџ§џџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџ§ўўџўљєш{rчC6ц>1ф;/н0У)$Љ"Ї& Ќ'"Е*#М+&Н+&Ж(#­#!Ђ"!“†}xd ŽŒ†Œ— Ї#$Ё"#—Ž†‹‹n”?>Џ‘‡eB,wJ1Š+$œ"$#œ$$’ŠmJ > <Mfoqu…‹#‡/ТŠTР‘RТŸfН–SЧ“EЦ“:Ш›EЬЃMЪЂMШŸLаЎbаО’ћљёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџћѕящkeиK*аt=еŽGР‰GГyB‘M$wЈ)(І!! "‰‚}q[ +{ty‘Ё $Ї$#І""  –Š‚…zŒТ‘’DH‚ œ!ž"—"— Š}Z = BQ^ a c n{…Š2(ІfEГ‚EКƒ<СŠ6Ч’BУ”CУ”=Р7Ч–@Ц–BН<О”@ЭЗ}эъжќќћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќџѕвЬч_DїЗcцСVк•RШ™`а“WЦŠ@гJВw5s•–}vso\Z lj…Ђ# Ћ"%Љ!% ‰~xutzБhlО‡ŒЁ! ž !™š!ˆŠtHAEP Y [ ] htz‘E.ИzGЕ6Р†;С‰6ФŒ8ТŒ9О‡7Ж„2Џ}8–],†L™h)ФbиЭЇќћіў§џџџќўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќъАЉыJ:и]-юЗVцСvрШˆкЗ[оГˆЯy]нЃB­;'ˆx~a a ZN U _ `…Љ%$Є””?-B/€vsi h jn Ž1+ЧЁ—ž), !•‘ˆ*)|@A89<ELQW c q|˜Y6Бu;Лu0П~2Рƒ1ФŠ3ЦŽ9УF—a,|=<ƒ@ƒFЃqDШД}ѓёхџўџџџ§ўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџњѕх|ђD8ц@2сb5шЗ^йЖ‚аВnкВ„ЕV9шЇRН?)Л3(‡pjL KF HJ T ƒ #!“&šP>Э—vПŠg”L6р}DхФnтХ–иВXжЋqгŠbшЅIШZ%о80к7-І"$cW C. . F l‡ŸJ9טmъМqьК`ъЕXъЕcьУpѓЮяЬ‚цУ|тС{тЏuЊ}`)"Чˆ„’%(‹@7Њ€~Ж’ ut|ONЖ™’–YVD 35;HJ* * Љ'С;-ŸJЉg+П†7Ф”D­~=‚F ‘M*”L+ŽJ(‰H(‰E&ˆI*Ѕz\ѕёщ§§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџікзщSKшE5шK0юЗ`лЊeжЎzдД}е—tЧO;юВWй„<г0#Э-$Ќ$$xiA 3>Wp.АpDтБoюЛiэЖWшАNхЎVсГ_мЏbпГlрЕnжБeлВaаЌqЁeOЏca„VNŸ~zВ›™В‰Š…NQA ^51ЊrnB45*1 y!Ї*)Г%#Ћ,$ЈX1Ђb+Њr(Еƒ<•e0‚B‘L)‘K)‹H%†F%ˆE&‡I*•eHїђюўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєаЬюPGьH:шT1іЮnфУ]шФ›ыб}тЖiьВ“чЇSсšCЮ9(Т.)Ї%$j? ?Id"€=$Ж{LтЌc№ЛdёЙ_ьБPшЌOзPЧKКBЋq6Вy=О‰CЫŸKЩЈWЙŒcA<Ј’…„ooЙYXV< tˆЄ][œie/   < ‹$%А)#Г&$З''“(I"—Z#Јr-А~?‰U,†D!“M+K(‰H%…F%ƒB#„F'”]?јѓяўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџђвЭёNCщF7ьA7йq3єШXзКxцРаžgЧhSъšJлЄDП2&Ђ ‡|g-'lF>pHD{MC™dMЧ\зYшЏXѓН^ёЕUп @ж–FЋn5šW(šT+žU/ŸT,Њ`-ИDФ–KМŒXw?0ЇvotF@‹>=xH Kx‘“Š xolŽ$"А$%Г%#Џ)%Ї$"‚+ŽN"šb&Ђn&Ѕr6€J%K(’J)ŽJ'ŠL'„E$‚D$„G(’X<љєяўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓйбьQFьE8ьC7пC+эЌSкЙiъТ‹уЗ†цД„п—^оКW›5(!%…u…WXqIGiA>uD3И{UгœYфЈYюВXѕП^эЎKоЅFГx=”O&™Q.šQ1 V4ЂW3ЃY+Ќf>НEК‡Ie9…EC•>:‰qR _‚——!„‰–!"Ђ Љ%"Џ))ХhaŸ5.{8Ђb-Аz6К‹AЌ~D†C%”N,’M+ŽK)ˆG&‚A B%‡H'˜eLћјѕџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјссьQJяH3тC7сH4ђКgлУ{шЩжИsпЇл|KыЧWeT-1*(W"&l"vBЯ\ьЕgъАYьАRщЏMн?Ь’>ž`-šR+S1›R0›R/ŸV2ŸW0Љ`=Ћk7К…E—hGWАRO“yju!˜!…yƒ–› Џ%(Сg]Уc^†A/x6S Їn.К‹CЇ~@ŽM)–P.K)ŠG'ˆF&ƒB!ƒF(‹L*ЂvbўћјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјхсфWFцH@В>@І…HхЪgтД†мžpуАiтЏeэПjьСP„X2M#%E&(?! BK dЖoEнЃV№Ж_ѓК[№ВQчЅGг”?­n/›W)ЂW0ŸS0ЁV4ŸW4šT1—R/ X4 [1Дw=ЃpDX#„3+œ0.‡‡™!“~|‡’ #К_WЧpf‚3{<„O'b,Јq0О“GДKŒM&‘K)K*ŠF&‡E&†F(‚D%ŠK)Њ†vџ§ћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџњссЫUNp45>6$нШsъФSѓПcюВ\цšSлx?ЯZ-МN!ТA'ЕD0Л]<­M4?)f s(ЛqIп›UыЏVьВSчЇIу™CП3ŸZ.ЃY.Љ\4ЅW3Q.šR0–R0“Q.šU,œR2Їc3ЖJnBn0‘4-/.›Ÿ Ÿ"™ …v„‘–ВOKЧ{p-%|A†Nžb.Аƒ<Р“IШ QД‹JG%I'H'ŠG&ˆF&B$‚D$‹M+Г—Šџў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџўџўџџўџєчыX?<(.8†lBыМVс>жW/ЩB%УR0Зf:Т}NЦ‰QоžYи•IьЋ\а‘IЬˆMХ…YАgNL1бŽNфЇLяБRсŸEеŽ;Вs0 V/Њ\4ЉZ4ЁU0R/™P.•O-—U3—T.šS.Ѕ]2Ж|KškAwAy2ЅOCЇ42Ј!$ " wz‘˜!ЋGEСldˆ&l3ŒP%Ÿj3Ћp2А7У–IХŸPЊ}E‹F!J'H&‰F%‡E&„F*‡F'ŒO/ЧВІџў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§ўџџўџџеед8.2r.*НT4ЯW*Ъ[,Э€Pб—`уЎnъЕp№Оv№МnщБ`ђЙfпЈXжœXШ‹UЌdFy#2(ЮˆPтЅLъЋNоžCж•AИy8ŸT+Ў_7Ќ]7ЁU1 V3˜N,•O-“M*“N+–N+ŸV3Ѓj8ЗˆP†W)yD s/ГaZЏ>>Ё‹~‰˜Ј:;Шih' a) ~?U$Ѓl3Јu1Х“HЯЃRФŸRžn?ŒH&I'ŠE$‡D$…D$„F)…D%S4обЦџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџћўў§ўўТЛЛЋA;ЭO2Цs?ЧEоІfуБpэСzюХv№ШrюСjєУiѓРhѕСnтВbХTИwS‡1"ƒ#,Я‡LпЁMш­SжšAйHЗy3œR'Аa9Аa<ЄX4œS/•L*•O-•N*J)•Q1•T0Ÿn1ЗŠFДŠL€X(k@dЗa]ВTNЁ$—!“ЋKEЗi^})"[$ m7“[)Ѕm0Јt2Д„:Р“FШ OХœXŠU0J-I(‹I(†E&„D&ƒD$†F&X:юхмџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџ§ўўџњћоЂ АG7“Z4ЭЂ`дЋ^юЧ|юРvьРtфНm№ЦpъКaъЙaљЩsыНeэРmС‡P˜H2„(†#ЈH6бŠPй›LиžHб™@мЅOФ†=ŸV(Вc:Бa=Ї[7ŸU2œS1J(‹F&ŽN.ŠQ)–g-Ј~:™n)МKsŠW%c&Їq*­y/М‹<ЬŸLЬЄZ’b3B ‡E$…D$†E%„D%ƒC$„H&N. |hќњїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџўџџ§џџџћ§ђаб77Q2"‡kF№ФŠѕдˆље‚хНjёЧtцМfнЎ\цЙhюТsъБlнЉfв•_”1%“# – ˜!БK2з’OкŸNуАUцЎTг—FЄe-ЇV0Ўa8 X6™U1ŠP%^)›r4Є};Ši-wY,{]-‰f*Ÿx1Н’M­†PR.ACH R'[,h6h4l7M"‘^)—d(Ѓp.Њw0Ў|0НŽ<О“KˆS-A!†C$…D$…D$…E%ƒB"…J)’P0Й ў§ћџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџўџџџўџ§ўћѕпнЭ™žb^ӘzюеšђдˆѓЯ}єЫz№ЧrуЙeчМnтЖrпАxб™iОsP›"#—š šГB2Ы€HвœKчЋRтІNзЂJТ‹BžR*Њe4Јq1А„;ЏŠ>Ё~9Žo2vX&‰l<~b.ƒg4}^%Šg%Џ…=С—QxFE! DH O$ U' i8b/M"”b*šh)Єs2Ћ|8Зˆ@С“GЖŠ<В‡E}G&~?#‚?%„C$…D$„C#…D$‹N.“S2ШВќ§ћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џўљ§ћќ§љџћіќњђїялялЇ№ЯŠъП}єШ†ыФzщП|цЖцЄ}УeNЃ2" $Ÿ Ђ! Є&!ЧoDт­_хЅNб—@лІQвJЁW)Лz:А‚#Ј†6…l.~b/uY,~d5ˆl4Šl,‚f-€f-Žn-Ѕz1КŒ<ДŠKeB N(N&X-c5d4i7M™h)Ёp,Ў|:Б‚=Ќ|6Зˆ?ИŠ?ГˆD{E"~?"ƒ@$ƒB"„C#„C#ŠI)‹K,”W5ЦБ™љќљў§ўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџџџџџџџџџў§ўўўў§џџ§џќ§ўў§§ћєтэе­хИŠфЄ|хЃtчЃvе…`ФJ8Н1*Б+&І$'Ј#$Љ%#­%#Ћ'"ЄC#м Wг˜DиœFмЅOܘEЉg.Ўi-Б.Њƒ=}]$Žp?ƒi6‚h1}^$•t3‹n5f+›y.Ћy4Е‚9Џ…BnJ&N'P'X.\/ f5p>O!\ –d%˜e( m,Ѓr*А2ЛŒ<ЕŠBvAz= ‚B!‚B!…E%†F&‹J*ŽN/šc?вРЊяђюѕіѓјјїћћћ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џќќџќјџќ§њъыЏсVJз@5б6)е?.Э7(У2'И,&Б'%Б)&Џ%"Л'%Д.%ЌM-з–NцЎ\Я;мЃMкЇTЧŽJ›T#Д€/В‰1І‡9x_'q[%qX€b1‡f-n.Ђ}9Њ{7›Z'Љm/Ќ?\8Q*[2e;f9f6xG‹[*‘a'‘`%“a&—d%Ќ{0Е…4МŽ<МHˆU*y= ~?B!ˆI(†G&O-‘Q2Ёp?ЮПЃууошщуююыєєѓјјјќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўќў§§ќќџ§њќ№ОНпC4й:+з<)з?+а7'Ы4'У/&М+%И*%К)%С((В.%Вa7ЬŽAьД_е˜Bа?гœHкЄZІh4­t0­‚.…g#e.g3‘w8ˆh.“p+Љ~2Ѕr7“T- W2Іd-Б=‡c4H$ O(Z2\1 k>zL Q“d,›l.l-Їu2Ѓr(Е„7ОŽBМ’Ho:xAƒC$‚C"„E$‡H'N-•W3–e(ОА‹жвЯлмжфхрэюыєєѓљљљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўџљ§ўћњіітй№ ™ф@2с>/м;,з:*Э5'Ч0$Ф-%С,&С-&С+&О*'ž)ИwBг˜FюЖ_щАXУ|/С‡2аOГ{BЄf.В„0›{9Œl2…d' ~/Њ8Їy6•c%ŠK"—O0œT2Ѓ^/Џy8“o6Q0N*Q+ ]4rG€T%…Y(‚T#„U’b# n)Ў|3Љw/Ђq+Ў…7Ёz:‹X/…E)A!‚C"‰J)ŽP-‘\-›p3ПВЮЬЦзиарслъыцѓѓ№љљј§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќћїєЭЮрrwзJ>ьQ?щM<нC3е;,в8,Ъ4)Ц0)Х-)Х,'Ч/(С-%Д*%™=$Дw=фЋYшАYщВ\г@гœFмЋZЬšXPВ)­ƒ0Д‰;Гˆ;Їz1•`,‡H(ŒM+M+“M*™T/ŸZ1Ќr7Ћ…GR4M-X6]7j@nBtFP ‰[#˜i)Ђp+Єr,Љv1Љx0ДŒ=А‰E“d4|=~?‚C#†I(‚J$†Y%—yEТЛžЭЬУззатумьэшєѕёњњљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўёЭЬиLGн>2оE7ъYJфK:зB0а:*Э3%Ш0%Ф0*О/)О2)П1(З-(Є$ ЄU+Л};мЃRу­TхЏYщБVцВYпЎYЮšK…IЉq.Ќu4ži/U M&K,ŒG'J(K)’N+™T/šT-Ѓh.БŠI]D 6<"D&T1b;kAyN!T Œ_'‹]'Œ\%—h(Ёs*І|2І~;’c+Ls?v@vD sJ‡b,Њ›uТС­ЯЬФккецчс№№эїїѕќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўїшчз}xрG4ёO?ьMHдM@ЬI:гJ8бB,а=+Х2$С-$М)"И(#А%)œ/!Еm/ШŽEи MпЊOчВWшГTцДWнЊPХ9ДB…FŽF&˜Q)™S,‘K*ŽK,M*ŒK(ŒJ(–R/–Q-–P+Ёf.Јƒ@j?8(1#3 6 9 +D(S2X1jAyL"Q#“d*m+’d%Š^ e&–o3‰`.vJvM}['‘yIЎЃŽРНКваЩопйъычєєѓњњњўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўѕѕљоЮЯЭwЪ\Q›ZE„WDW@’^=­i>ТrCЩrCЬj@ФZ6НF)В@%Вd<Еy2Щ”KгžNрЋTоЈMщЏTхЏTоЊPߘAТ“GŽQ%”J&šR)—O*‘J&K(M)L*ŽL*•Q.—R-’K'›a+Ј„E…qJ^R@[Q:WK5QD,K=%C3>+C+P4^<iCwM‰]%Š`)c,‰a(l2‰e-Z%‚c4vPЁ•|ИГЈЪЩЧмлжшщцђђ№јјљ§§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўњљќ№яёжЬЪЌ’”ur…j`~eW†cKmJЖ€OУ‹PЦ‹IФˆFСCФ~@З~AЖ|8Ъ–PлІ\рЊXсЊRо LнЄMмЊPвŸFЬUR(G"”O+”N(‘L$—S-‘L)M*‘O,–Q/—R-ŽH"Ÿh.Њ‰S™ˆt“ˆ–Œ”Š{…u‰nubwkUlaHaU;TG-O>#P:Z@jJuR#wV)uY0~jIŒ|_ž”€БЎЁХСМегЮуфпээыѕєѓљљљўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќ§јїљёьыйЮЫЏ š—ƒx“{l—{fžeЈƒbД‹\ОRШ—PЪ•PПŠDЛ„=Лƒ<ФEжžRкЄPсЋRмІQмЇQйЅMхГYйЇV›c+‰F#”K)˜N,—O,”N*”P+•S,”P,˜S0‘R)S#q1­–uДЉІМЗЌХПЕЪУЛЪФОШСЛФОЕМЗЊГЎЉЃ‘ –ƒ”‰uŒ€h‡z`ˆzb„mœ‘~­Ђ’МЕЋЫЧОждЯпрнщщщёёёѕѕѕњњњќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџќўўјќћєіѓюьшнжгМАЊЅ”ŠЃŽ~Ї{Њ‘xЏ“qЕ•iН™eӘWФ”MР‰<Н0Т‰:Ы“Aб›GиЄMрЏ[Ю›Fб›EмЄMЫ“;И~8LG&•M*™P,•K)“N+“P,’N*‡J![+f-—}MЕЇ˜ПЛИЯЮФнкжчусышчьщшъшццхптскнмейжадаЩбЫУЯЩСаЭЧздЯонкххуьыч№№юєѕѕіљњћћћ§§§ўўўџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџћў§їњјѓѓѓъщщпккЪСНЖЉŸЌœŽЊš‡Њ˜Аš~Дœ{ИšoК–cМ’VД†CЗ†>СEЬ™KвMаKпЋXбœGйЃMЩ;Р†8Ѕk+T$‡IL%“L*‹L)ƒJ&|E}M”o6xGžsЌІПЛЗбаЫуупёё№њљљќќ§ќќќќќћњњљјјјіјіѕѕєѕѓѓєђђѕєёѕѕђїјєјћјќќќ§ў§§ўўўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§јјљђђєчцщлзеЬФНКЏЄАЃ“Ќž‹­œˆЎœ…ВœƒГ›}ЖšuБ“i­‹XА‰OДˆEФ’KЧ’AаšHлЈTиЇSЙƒ6И‚3Ў{.Єr/”b+ˆN"AyC i=mC~Z$Œq:ƒrO‹r šКЕЎвЯЭфцсєѕђ§ўќџџўџџўџўўўўўўўўўџ§ўў§џўўџ§ўџ§џџ§џџўўџўўџўџџў§џў§џў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќііїэюяуспибЬШПЗЛБІГЇšАЃ’Џ ŽЏŸ‡Џž…Бž„ВžƒГЂ„Д }ЕœrĘgТ\ЫžUЧ—FЫ›JژHЩ–GЊw-˜d$“b'T"j?tMvQ nMw`6~nOˆ|h•†ЙДЉЭЫХнмкыыыјјїўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќ§їїїё№яшфснзгаЩТЧОЕСЗЋОГЅОГЁРГЁСГŸСГžОГžОБ™О­“МЈЙЅƒИœoИ“XЗGБ‡:Дˆ:Б€5Ўx5˜f+‚T!~Y&y\$xc9~oQ’‡qЈЁ”ПЙАвЬЦокзшццё№ёјјј§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§њњњііѕяююшххплиивЬбЫТЭЧМЫХЙЬФЗЫТДШТ­ЧПЉЧНЅФЙŸРЗ—ЛЏЗЅ‡Жœ|Ћ’iЉ[ЅŠJЃ…A—}H‰tO“‚i ”ƒ­Ј—ОЛЎЮЭЧммичцуяюьѕєєљјњќќ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўўњћ§јјњєєѓяюъыщфхуорозплгмзЯмгЮкбЩкбФиЮПжЬЛбЬМЭЫИЬЧЏШРЋЧРЊЩТЌЭЦДЯЬРдвЩккдпсрчщхэюэѓєєїљѕњќјќўќ§ў§ўўўўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўќќќњњњљљјііієєєёёёя№ьюяъэющыьчэьцэьцэьцюэчяяъя№ыёђьѓѓюѕѕѓјјјњњњќќќ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџўўўўўўўўў§§ћ§ўћќќљќќљ§ќќ§ќќ§ќќ§§ќ§§ћўўћџџќўџќџџўџџџџџџџџџџџџўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџџўџџўўџџўџџўџџўџџџџўџџўџџўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџ§ўџ§ўџ§ўџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ \ No newline at end of file diff --git a/src/bin/status_check.rs b/src/bin/status_check.rs index b712bc5..f07c382 100644 --- a/src/bin/status_check.rs +++ b/src/bin/status_check.rs @@ -64,7 +64,7 @@ fn main() { .success(); let sync_good = if nixos_up { if let Ok(x) = ureq::get("http://nixos.fritz.box:12783/").call() { - x.status() < 400 + x.status().as_u16() < 400 } else { false } diff --git a/src/github.rs b/src/github.rs index 2a6cfaf..06d34fd 100644 --- a/src/github.rs +++ b/src/github.rs @@ -202,20 +202,18 @@ pub fn get_new_notifications( pat: &str, last_modified: Option<&str>, ) -> Result<(Vec, Option), Box> { - let mut resp = ureq::get("https://api.github.com/notifications").set("Authorization", &format!("Bearer {pat}")); + let mut resp = ureq::get("https://api.github.com/notifications").header("Authorization", &format!("Bearer {pat}")); if let Some(val) = last_modified { - resp = resp.set("If-Modified-Since", val); + resp = resp.header("If-Modified-Since", val); } - let json = resp.call()?.into_string()?; + let json = resp.call()?.into_body().read_to_string()?; let items: Vec = serde_json::from_str(&json)?; - let new_last_modified = items - .get(0) - .map(|x| x.updated_at.clone()); + let new_last_modified = items.get(0).map(|x| x.updated_at.clone()); let last_modified = if let Some(lm) = new_last_modified { - // parse and increase by one second + // parse and increase by five seconds let format = format_description!("[year]-[month]-[day]T[hour]:[minute]:[second]Z"); let mut dt = PrimitiveDateTime::parse(&lm, format)?; - dt += time::Duration::seconds(1); + dt += time::Duration::seconds(5); Some(dt.format(&format)?) } else { last_modified.map(|x| x.to_owned()) diff --git a/src/lib.rs b/src/lib.rs index 554ce2f..090483f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,6 +4,7 @@ use std::{ time::{self, Duration}, }; +#[cfg(feature = "pc")] use embedded_graphics::{ draw_target::DrawTarget, pixelcolor::Rgb565,