python3-kiwi-9.20.5-lp151.2.10.1 4>$  Ap_"Ƹ/=„Ώ@!\4'1h[ϐęl_LLiCF[=>s4Kc Kt{NJ4`H VB4]􎇊R,a?t۴&-HxahHK}!kKoOglnBUr>"=ל2Duh0/]dX2XAZbU:]C7\9{9bTŽD?8).pFEuNBuVed675dbd694fc1bca45537ab2e2d0c1ef4063e2daad714c1c93ede9bcd0e2db122b4c4a6c85bd820b68077926e2e6c84532c7ee9 0_"Ƹ/=„p1pҝ%nIT銅<Oize! D {cEkڒ-,}דjW W"_Rso/WMC1cfAa1>nJORz}ePA]f ZtB4@4 @Iֳ~WVc-sUf8.@G%]][-RԿ1kGDb sZyh}GQb67Ap8^l(`1>pG*4?*$d # L $04GPa z (     R D0X<D`(h8p(9(:/(BFGHlIXװYZ[\]p^IAb c d pe uf xl zu v w8xy$bz)))))))* Cpython3-kiwi9.20.5lp151.2.10.1KIWI - Appliance Builder Next GenerationPython 3 library of the KIWI Image System. Provides an operating system image builder for Linux supported hardware platforms as well as for virtualization and cloud systems like Xen, KVM, VMware, EC2 and more._"Եcloud1180openSUSE Leap 15.1openSUSEGPL-3.0-or-laterhttp://bugs.opensuse.orgDevelopment/Languages/Pythonhttps://github.com/SUSE/kiwilinuxi586 x~ B"DFt8[ @u? Rb Tt d- 7A5 Y>jDM#!_E~0z]1 : F2%> J  A lc)<bD33 "SzH+e! KK2^^I ./ <t<I DDDqq s n 7G{_&f%A["c8 DI^ %B+#]"d? *"&   ?t '"+),6 / ?Dy !1o9&l z)g V% u f! - e?f3 a  x# o  1o 3 0$5$!!qD A twO=+e4 O = ( U" ,~  K7( #T " < +)S Ll <S$0 (P$~*< /7=0&/ Y Hc"n nQWB AY$ >to1`KAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤_"ԩ_"Ԭ_"Ԫ_"Ԭ_"Ԫ_"Ԭ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^T_"Ԫ_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I^_I_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^n@^n@_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^_I_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^a^q_"Ԫ^n@_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^n@^n@^n@^n@^n@^^q^q_"Ԫ^^_"Ԫ^_"Ԫ_"Ԫ_"Ԫ_"Ԫ^^_"Ԫ^_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^^_I^^n@^n@_"Ԫ^a_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^_I^_I^_I^_I^_I^_I^_I^^a^n@^_I^_I^n@^_I_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^n@^_I^^_I^q^_I^_I^q_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I^r^_I_"Ԫ^n@_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^n@^n@_"Ԫ^n@_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I^_I^^_I^^_I_"Ԫ^n@_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^r^_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ^_I^a^n@^r_"Ԫ^^_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^^_I^_I^_I^_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I^_I^r^r^_I^_I^n@_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^_I^_I^n@_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I^n@^_I^_I^_I^n@^_I^_I^_I^_I^_I_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^_I^^n@^n@^a^_"Ԫ^a_"Ԫ_"Ԫ_"Ԫ_"Ԫ^r^a^^n@^n@^^r^_I_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^^n@^^n@^^n@^_"Ԫ^_I_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ]rk]rk_"Ԫ_"Ԫ_"Ԫ^_I^_I^r^u^r^^n@^^^_I^r^_I^n@_"Ԫ^a_"Ԫ_"Ԫ_"Ԫ_"Ԫ_"Ԫ^n@^n@^n@^n@^n@^n@_"Ԫ^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^_I^^^^^_I^^^^^^_I^_I_"Ԭ_"Ԭ_"Ԭfd5df4147805aa1be0897a288d3236eea0d05da917c456e8d49a7098371505d4b456c1389b9319e500eb36ad44d7f717ea5c15fc945061a4c342ff9084b3ab6b42f3d02f87c7194f5909549585fceac4d70ad6edf0c74c928aa709500771f096b6831957309d472ff6d8d024f7fd3b6ef0851f0a7c6ee2bae42fa9db4882beefa74d2540ec8aa5488af79e3bd970e52ddca0af0114ae1327d6263a0db1e39fcd01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b2f2f299bc6ef6ad5d43472289309528d778f887123929bbea4194da9fd69606801ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b39d5e3e635ac7730b16ce318aa8e39cd8e9a6ebd801c9cf566fe38f8e3a0f9f090d5df57ea540fae628833c8d69344ed78e5245c39cdebd49c5661be39e77bbac7d27b511c5fd145461b841ed467c5f815c805ec19a78c25d9ca1a2d11863be3b1b0888d07f67b5afe8ddf1b34c615ceb68d89c7a5168a564b041d492ae33ad2bde37e4076a4ca2e3f5991cb8fbf964bb83e5c417aa5952629233dcf3e4fce1b36b4ec99aaadd890db5c82eb4278ea44165ab022df2ad5c34b452b34956087bf40b4a314e84861548f89dda9060e72d3241a10c89c9aa2fa4bb6e8cb840f7d46a47a3e52ca547f5b29b6d357b654d8beee6ff26d26c127173f46b6abab1bef23a223c2b2019e2f7c09cb53516c3616837a360955cb828f061b51b7a135b57846f39ca2039ae71d2b368a2daf56782d3b6b37f71d5f7c7f52b5b9dc2d9f3bd3dddc1ac8f5302f2801b5ae06699988f8a087980b6b77593f02ac570ac3915d759dca44bac2440ca9d39b846eb6c70b45552dddb54a123fc3e4cea7be406bb22622cdf1c493d140bf62a7b11f63fa6f68d6cf9736ba57369712aa22c38639d3863a1d0276c84ab4efd3d15b607a79de564b2c8acc8fa1fcbfb117a0142d1645cf660b45c5f663e914c367457106a1e93885bc9d9860116b37146a26c5fd61c9ae493316f7deab49163bb8b922d45cdc09e7d37c9781fe7b14ac11f88c6903fd76e6ad6f1de86a59de298b2f231f81622769af6903f70a16373698c3f99e904bee2d3472fcf91b8bca5ba5578456c7bf34f7c9864d21438a9ae34b1c07cb8428f4aaa44bc84cf1b1e0c90f8748afa604a4f24b91837010e9849612abbb1de1f57515be63162df7c815ccb85d782d18b6e4db66250ae47777c843512b361736832b5adb8b59661494cca74304417e0080c8d192ba74f738032a0971293f737c2cd0e44447d3692cff7e8436fa8c98b1db0ed9e6627d7c6f2f89a0ef865dce37d806361a6a7779d3870277bd533bf3a78b5c0c5bef0111cab420f17b60cc1345b8f3286438ad403a58714c4a090036f982893dca4d160fe8ada5da07fa46df0da8e719b0df793825838979ed537d08b2c64b32cf59e3bd86a2c64a7a019a8ab3605309424ffd193aa311f95cc2066e9295c191fb07f56f8b18398c6847dda52fa1666c17fcf362eb98307f3c7871ba194e0ff28f2749e18c35735911a95a2738651484e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85541eece5c877392db065fa90fe2cf8f48bb4a27a14c8a009419c95f524d341eb1e2ef66cf67c6dfa3522819a10f05999b30a20f6e7dab9899a1b4e7e6bd9ba2a44d9bf8234c46b136014d4e60521397ac3ea4486c1436d4117112e54b25dca62448499ffb01c5d1b5989466bf2f769b21d8de35326d0f56fa5dcd042c2c087afc2e422476d1d2136ad9f68f6fe2285c3fcdcab7f0bde025ed7b91746f37b2158de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b814e3de97bde20fe6d7b3638391a6b2ea5e4df90367a8fd096ec8c7787370d9f2487c491fc1da021b29364e928c849cab84e591730796260c7824400690c128223a5c98ecb935cf94d8e4179b7a26b6185ce49f140017fc78721acf7e8c351ad2d307d9b8b41ae4b29806dddbd66264742dbd308536aa112840c222d97be23153f679ea2f0a88529b82cee059e59eafdf8dcd3dcccb3ad3ba66639de77d45e96a3a795fa039d86cbc5349ef09c1aef77c46c82d35817f5a5646a8d6a6621ace1d3917c155e56d40150a7f4a026e409cee4b2cb2789349b62037c6604d16251ff6f97eb3f3cbb3bae24605e763bfcdbeae64c25ea0b3efdc01199ecbd6e89e4975b6c87243c001a3e3deed445396c795f0710e3bc126be110e6d50e89fb93f81e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8556bdb64dd02821fa870cf4554feed128a9e6005858c5086d823dc5f31f4d4a0e2f9cba97f8a3cb70f6b26b2bdd7b5f26066f573bef82def45bf4f5636cbe952e00a6f32e4983174361f97c69ada0244257baa8918105b4c09b86ecf404535c52bc9c4cea736e4698e42cb684b12f78d35628cef0316dcff6e3e0abdb3b3c5bd075780a281b1ecc35e7296c9555afa67a07452e3f34287e4f79fcc9c7508f8b67f4ba87b8e2af88cc1e1d66e6e3ce4c4447ccfa4763f857131745d0aeb5470164c28200f9d9aea870cbcf316bcac88b629ee9f9f87b6fa8ea9a0bd682aa4c13a43d1cc679b4a25558e8f735f9b7f5da76185b7d7ca59fc1b74fb523fb2ab20ed41fa81acd8f831b9ca592a2213e4ba238ece7c99901ded52b89d10742b9d96d9e94f86c528e332cdbd83a805697c56a02b76e668d1748e38d6cbb65d91f573b106c651cf65c82cf314f0f7c903b6907ea66134f91ee82374d496989ac7460c4c8347cb9a195cda1cbd01f7f2bb03eb592effd19cf3861f94740f119b94151506f57c8ea2e2c82214cd71d6fb31f8be3152167bc49080e1b8c1a2908d00e8e3ba00f83081b8b76bc5e4e251a8e7741df37affed53dff11bbc6aae27c8a4abd6d668298c3d4a47ec316bf10dee379873dbc3f3664fd4bbe6ff6b6096eac85273958bc57c4aa7c3dd7ddbfd9e50aa055f8a69ad6a982c80ec0521712902bda8c5730aa42dc82310cad426185dfe5ac6f5f0fe7c6b2854f6071392ab7a33cf61c91f393758ed30a0c27059b07faea18bf197b2981c592e6edd627bd3b6b44fe1424b6cb971f81ce140c39c7b6fd570cb927a34c46566ca2320f4c00ca0df0d013af654e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557f60cc8be3868f96c4edb2e8327c885cb7f56d76e02d53930c81380dfd57d3b29a0675021f62015bdb1a07ea178fbba69f3bddabf1e06ed59f03a9816c1021de8bcccdda51368b52098fede1fe9bf4ef03ab66b1273931808ac6e43962e3975393a411673a9f1b5af83ac39f28789a3999b940c10d74c058e1730e00c728a328e4946492db210e6b00cc1c475248054176d296a095b3df9bf9bc14a49569849a222f049a2d45ed4d5de560ac9f3f8fe0187d88339b43e7cbf3c41ccdcbf3bff2d7e6b002c14b5dfc3dbbe79ff3966ff02d4dfd082b0cad81f16031e692f2f882f8229e66c7512851a85f3f60a76ba3040b1cc02fb00868058a5fedf2e684f4f053fe6f92e0be6f547363e01f8b409f63a1a093539cb69181f89781cab7ffb2f41dc3333caef0393f8c2491217970825657c68e607836ad49e5fef880d8ea34116f914a13e6970f482a5a853251a56b6b596e78a28f1f96e5be90757584399f2eab7d20c39c7327892f8c7f694e86c4646359e56f7896a36db8e7d5740ed8358bb2dd90fc70a3595e814a23675a55e335b8c86b30ce16920978b3440b06e26ff1c379b0ff3c037c64fe01e329d86610863d32335f6ee3b306e8a6ab8f0593d2cd86f7f96f5f4e8690ee2f5b30b422eb5ba1f271e9d7f41bead831f5a343ffa9ef4c7502a65dca8ca5e4954042cf857cec22134388c706cb40f1f9b55e9dfd47844a4d6659734b4f2cd6897fff3922438c88506f819da7cf809738206d06034b6186d3161ffbde3d1d1942ec0d3d8cecabe1e1f1d07fcbc60469ab6fcc6d5c675b1018e5eb2b28c6865448b99491387e6cdc1a40b73cf86eaca895669b6ddb8159419cf13f571b33f991abd5cacdea902f1bb182331060123b7c4ea81ee236a4560b8e9e73b96bb69ff7660a6428a74941d31aa053144b7ccb804a0eaad7796104d843a7c496aa6dd729ac7d962cebfa3c93bd8c62682501d9751e0beb931f5d7be648adfb4c418bef99e41f67eb076b37c3d775e959d70389cb60d20af831d764f988560cc6ac5419355842e91ff2ddf8c625accfb3f13f8ab1135b6d1c84eb308194e06d50d013e9fca4e6220e02edd5465a24d686887e0df3e844b871e116d045d7499fff314ab9b480e23c8545d6d3f81605df93ff71263b4ba7ce60282e491f70c1f4152b2b7a27fa81ee4170f2916be856f73192f8424bbcd906848cc8ad01b649edb1ef3a496d0d32a9a6e8bb67374d71d35dfb1d27e8a1fc2201e6e1b43b1f3c99bfb4102e0caa7a2bdd0eac432614fbc7af49133f387559c98257ba0f3546f5f7b45083ab97aec700deb0369306714dfdc16f2aeda9b4d03b026846ad1b87d9e5b5d1be9162c7deda56155c74fdd13e12f322683005917958071971dd2bdb24fe91814cb994db4255559209c6b47f5915db173c9dda2c72d1b9832c6c907fda5cf4e4d3d7165656687945a46823b9c7d6240fb90e5b3ba5a04b7c2f0d75a01d57acf2d115008678f51e5d7b8d809fdd06d7de58276db64897bcbdcff839abfdfccbf1b766831790af275be516c036d92cc9858d6259a56df22009f2cd8773d66bc858495a579aa6f05bfe6f748fa2304667d90e5e9c8a5479be866eb72788fc32d02c4c6bfc0a14907906d8c45cb5d1b0d2379ef142192edb1252bc5f82e5b12bf1d931ef6242736507883d5020967a869c3d89b0bafa7677bfd83233eb5ef49d3a3fd143b065271132eae42d386031ed77d6d2ac547a0c8fffb3b6155bf18d4ac74a5edc42dcc01f2657a893faa96a1ba5a4b05a19f4b722dd7d54202338cd71af73ae352df0a4466fe225528d2ba8104eea358ef04f00ff4a6d34c7f8df7d75799c969afc927123a38f982ca23d355984d0218363a9bb57228a7e4d3e5eb9cb3c1e34265932d8384b165b1de371cbc26d29b03ec228be3f5c05ad3a0b992844eb4fb9dab812e7e57e8c5c23d6448af168f4676af455581df67e896942436ac3b68cbd40abef9e5aed7a585fdba7c6eee6bb26d37b68936dacb483669ef1c6c3cb3dedacd888c360863e8deeeb0053f32768b2faaea0a51a5a91a0935db7c8d201066bb336cfdfc31f60ecda60264aa232f3a936df32c2f3521ee1f45325e175acf9735aa5c71cfc9163ce43bec212ce6d509e00b074406844e0a186ac503d4fb94639912d4c3ec9135895fbc7e897a53f3d123f8e33add4dc186c183a29397fa0aee3e99d9dac88424827447ca71d04b9d126b2e2f57d82792ef050951c7a0bf43ae5e04c1a1a4d08ee80906701363cf573e724e118d9ad815ebb892854aeed0fb1181d99344c7ada5ef45ba372811f493d2bf6938ab82b3237f07436243a9e93e01381fd635535e45fa83c10c9dae0a7920813e9e41b95d7a8409d71e638de02e770e8aaf38d7912a7920b5b1d54d95337242df7410061304044a6154b959e0ce71692e25280c4d2710b0402e789f0bbd54744ace64660fc5a9e35b1de3fa55cc963a9c545489f142a2a3d75d3eb0b1352378f19cb84408c2e85f3db3d3032bc835bf0f7958be1832a3d7a13b27f396d355decd42afe9e926e4494be42fefd303276edeb37a751e61c324b4f29a2f64dc1b6ae90d9c0b070606e29ee1d5b59d0b7ddf9e28aa6b2bbc61fb75984d89a236f79918e6ef26f51e183edd415bdc09d12f761432925238447e9162e6ff46599b9f32533554cc44dc3ca005c46a484c092e46fe70fc4a325b3f55d27d0493e2a7e4316387dd40b41e6b1714f3b7fb87cb0b3249feda064a26909c9021167c8e33a4a9c0c291aed15c827bff3060dc9e08192e5c21ce9a3a0b60b511d6851f1652e83c69198b2840bd858b2e6d74200784a51749a7f57265d313ba479e8f1c8f5ca227af09f05c0b78bde9a712a73ef22a6e1cb5c5391bb8967c96fa40ae0f3d7f4c0194d3e72b26f77d5d445485225d789fc0bd17ae07798bff15f2036b93b291e0cd6d53ddb40ee8fe14f98fbb59f5f00ecff43940107ba9761d3a44f48932783981dba0048cef90b70bfaa9bb83afe0f80464b961d010f64343e58ffdb8d49c2c3aaea5f03cbdcb7f164743053c095adbe580df4ef364bea4f1ed770c18083f4ac0d7ac41505c7d7f947a91acb36a407ff1b62ab33c8ae57b3684350caa881e02141ca37f90f614fb0cd193069ee4cad6d9bef96f27096f7952b439dc841bdc00b62ed2386f47b9755244e21b5d2dceca1bbe16cdd7dba7e37699236177096fc1b80208c9f042daf2c3a7252a8bccbe164143e21262315352a1b98f1540dcb4328aa173f8124468d56b8ea1c7ef32f2bc33bd0fc6395dbff83ee2903d6024ffbd3b2749616939154b5ee184dc267d524dc16e6983a1516bebc76cda72dd14882f520f1c62d73609e39ef17911a64d4dd3a17cfc6b08c8967a49552c7b945cd223f6ebcd6376d8982f189395266be6508373d2ca01dff1ae9a3d1b0d618ab97300aeea3f2d313ffec8f0891b281228e1719d584b8af71e8276475a703905909a02671e867eadf6f553b360afc0da8bc6172099bc32365db7681d03017a973aadf284b00561f83d1d372e479ca7cd1460b0af38b2b13c327cdb5b6c78dc8b88fdd256bac31d75c911a865030d65c1f50604de9f778088fdf0f48d2bdb1f2f320a47d17281452ae160092370a0436b1083b4c992c529dfc8adde1bd46c284bc945079c5b6eebbca12ff5b121d6d919323a113f5efc4f1849540baa0ebaa628771a470132d8ee427ffb178b5aae9798ab4f57ab179582f474c30c58b42c941d06888e5827ab8b6fb98e83036183e09d1f6c01296e725232d751262b8e02c0578940879ed440e8c0150bd0f7ee496a90c4c2b6da1293549e0c956b1aea35123567d4da2ee2d802a9a29a342cb93c8225351dd67502518b77e598bb20487e6f3bde7b22f52bc210e081bdda7fd78a369dd7e1a663031cc09ab423a2883b644754c8252c14accf59f94355e0b6827e8c413eb0b864279116c8e23a2ed0e0de446cb8663126e4cfea6a21712e9252b7bc8c2e196c4286db145de2ccdde7a0feb8d52c97e3c2ce329b64001655a526f8fab21eac222f7c3cdcd465757ee4c3f2a53e285a7f6c83ea8b53bb96b8cb714c20c9f3a164f467ee6c8b269c639fab208a1367cedaae572507c1f014d7f1ca976ed64a7f8f7606578734d379ac1dcf53f56542c392750439e9c0c1086b3517745f5a34d3f32b39b86425a3ba264e7b76cac8608f6f0d90dc98d414d04f9bc932ed6f3bf7bda7a2a027d06b3b333db1def8a7e8d0ac899ededbf12c40aeff6ce181c1fc1c4d785ca3c08c8d7126e889344f87c7c2ceca27edea93c08e0d7421e12bfcc40da30208b92832efc6a5f8279d0599f79329dae7b189cf8b0bcf5c1508a2c1540172e74df8bb519db2a26719eb456ca842377d6e44374c1b8977ce99c29e76c98eaa8cba583d51c2f62896dbfa3ecfc433db36dfe854a013195c9c522125fc7f6d4d4009b1ec229a21074a03002a28c9c94a031268320367b9dafd6b417c59aa61033ba434d551a71ed90c21950e402d06570a08ae532265f83951e93ecf37f6b37a1facee2fc000fb7527a6dbf709abb4ab8e0408d6a08938b2d8cbb8a9ba9f06338425af747c8fddedb723236ecc10d510a06dca1a934020dbc9ae51d2ced8c9e2a6af75c3b44da87486855154adea45f7a38cbbbf9610988a8940813e345b876263a4a85479695b88c1ff025e60afa41ff77be5d738146f2883eee765bde54b74019b6a46eccb09735d58adc96a02cbdd00ebf338c5106ba08c9cee3d021bf932d47e64466a3040da52d2f1dfcfa2eecb1bafdb492cd3d3000eca08782cccc2856dc12784d6ae2b0120debb2c141c7ba126afc4ad4e16ef9ccbd623f0579712f26de657e17868303d053c3446ead9283ba074bf20eb4b4851715abdf4ed91951ca09d522a9ede0a505587f5dccbe2f6646b5788b0a5117cdafac278638a77c70cfbc8dec316c370b810aa103618e9f9b2060cd9c6300d2bd69b2b8b6306eabe3cd965c09a1e42e01c27f4766fe698fc2e975e1613776e8f736e63731346b1a8a67dfbcf9fb85a70900b2e10c5a2abd13f251c909ba912b162b7608939645e0d5f2ad5906f34f25915df8209ddaa411f77fa924044b6fbedb70dc0b4ac4ede394603c034dfc38e33e88b180127f4f965ed198e852ba174c4dc94eaea4586289d4540f8b45f866e7c6ce0111a8a79433ea4a1ae75d1d1c6b6b225e47f0950fabf4e671a7fd2662ee33cb4237cedae280419810b5f9ab6125ae2d655d0f4d5c9c48408d2e380b54d93fd12191f722d9aa7d05f0c170af2633c4639473ec711e2ef313fcd417cac3f7540fcaeba516b43a14ab5e934ac1572e7b37ab890925588587f5af2a5ab1938fb0f34d2bc2ebeb3e5782ad00d5c70e450087015661bbeebf9a8cd41850d89acdbecf43ffc3c63e64ce8b64c9eeef598200b6129f07baff8222a582814b8e101aebd80a16f8cbf8dc1e6bf8388013dcecd426cdc113bf332dd71e79719309340750ea80e59f992fb3356327cdc11804962be5e20a9725b73e52096759c4cefd2cffe4831bab8110d57080fee0f1b42afdcc7c2084fb5ce85c8b72bebaeee20cad6a5daeccf442583acecc52d12739f9700d3cc84512b844775554874289bd81d2f548340b2d41c55b3b928b18e71747edf1b4ea8816809958d7cf5032a6e3711e441f3fb74515b92eae8119a8f12fc765b26eae078468266fe2cb3f8d2e8d3b78a0d1f0c948b13e02392780f9fa15c82bba3defe6bda738cf018e5c9735de8f64e20e703131c37ae9262d591e33b3d3afb718755efbae8e9ef9c8364f399b723b75fd7fc59a0f83b78631878e5c59bcb458b3a5db3cd8f7f7c6b46cdada2c7d546c9242663ab10c3e4dad57c4018e4b37396faee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f9f2b6e5d2654463a404ed4b7cb88b47730e28e4bb758410390372c34ef1f900ff1d8c589e7fe812f034f4d8283716302fc930cb1609deb96d3e236284c023960e6ec195a6b05f508389d2314a634955d72e0236bf4555f17b22ecdd94caaee6957d75ad7b806f8ba0371ab8e6b77cc0ee18905c6728a74bc3bea774dc0411f44b5f297d35fd82dd63a1792a865f7d67fa75c83f7b7f360d7dd499a1f004714f7dd0091b27e2be8546cffb4c430f081fc337064dd6bac480673e1e1fa6f358f9e8fa983c85a91a7a47f8cd0c0138c3bf5a9480dcf3db1c53ca3a1496b206e2f55baa90951638012a91cdb61c2c5f67638f703609652cc8408f78a3d27449b754e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b62599ec7a61fef93fd56d979b951353e903b936a5ec09d1c81b3b5bc636ba479e0499d37d56a070186f7ba2ea3402fdcff8de8d8a1ef23c4b309c2d69a459a48e03536862bf0fd55045bb7954afaf126ab9877ce7593ea01f8636045a9162075f5c92bf9d05bdd927a87b7697d58e2ddb4af5e302c7cabdf480781674086b67f77e8b61f49f5f394a08d1805051e24bdba2383759e89286e478b9088036fda1fd7a18c056327ec2f3387e57d96b17c585725ffff589fe979a43da591644398c708d6b1fad265ac367040ab2b86db0ea89258570352f9b6ddec9808de72dc74541a3f73a0734c8e431d445fbb7e87ac42243022ff20b0b9c11cdf9ac386f0e64b187c4ca3efcd4b3a1b372f9ebd26e3f38b6f4747c48dfcc888d75bb2d3c076d9096f02e53124262edc86d0aa291241bfb259846a828c002a60869a1b0674db0196c44d1713a1ced93c43a5428e710c9c305e7857ab78d92c8b32bde2f1cafbb121f87f3e8b09cf5e556198995ea557eeb45f101b2010ef3ffb09ece3ed4e29c239b49c2a40b2a3a44eed620a67db291caf37c146df512f7ee57aafd38b527c2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855754045a5347807336ea6b7e088f4d4cc3292b4b26b368579d430ca9aa0bf0b264e22669e87ca9c015347b8eac486a763ee0635923f34987497e502c4fe160931929bcf774caded8bc7a2989096fa318f1e2401ccc3570bbcfc5840961069ce95b8d35563f9117cc05cf72996242f1e58db54c132698c8988179f4160e505367e8b9b6019e40cbd11df4005d31b167367e137ce3f24fe2beeb2c706eb6c3d9555c6ab6e323b7d3b4c933c8f000d75bb0adc82bfe99b53ffdfd4ceb3824b22b93f2345b2e534125a11cc28180ccced931711f5f5dc15886d6c8c35fcb406fb0698c4a944380123e4346cf711179727a62f7ed1ee115ab9cd5a7ab6bb49652de5e373b8ea20890c55b6e2e6c10f577f8453b5dff36a89b1cb3559332b31d54ae22fae0497b99ceec8163275beea40290f6383250f6fe9e3fe6ace90b1b3d4cb768fe467d1f9ba34ae256648a74ea12ab68cccdd27058a849dc89f4939a578c8b6fe06f907407a9db73e3f8756ae8182093a5d1b889aaf8d5dd6bc8d2347e7243eadce83b89ae6c86f5ea469e1a0996bb2ab057ff2fad405f0b598cd88d932a8b0ef7e23b36fc78fcd97e5514ff0082f79cfa5063e0b94580c5d396d87abc4d187313befe77bdf2c75902749a242a9bfb43215479e22227ed12f9cf8b4ce2b99b1c4f37a80e5461eaf0d6cba05920cdf1379bb1a48a4baec5e9e60c05b1e2fc23757159feb9788f5d1a547ccf443415826817cf9c8dc273821dc64dd3cd7cfbc3a1ce45f97a56ba02ff29d81903fb67bbfb92071498ca2bbdf947f7f314a9c1155125fa998ce000986a77f19dc7eff4635e60c1cc3985c13738c69f9a65a40bca5c2eb4509c721ac14ea5f0213f741adb6462970ca11079bf7c427523e637737f0c81576711285eb110f2af0a332bf6401231eb674e9e84a2d074e14972c68dae43a81905c34f808ec1943153ec698046527010fd045485b64c6bdeb449549f7f258fa6c778e5355b1da3581f1188b0549b7a5098535d79b58a6597194c13f42b3174d5b1841e51982fcaa8498618bad140fa23a8e5f2a24eac0eccd93daa332f7fa36f710af5d21c656b6eeb267bcb5e881b626d78cde63564ec61a1fae11b8388714799a0d418d0894f916e4c5e8c95190b872e135ff8bc518de9bcf4ebc0088bdc7898b64778bcdd6e0f2210eabd8d86079d8114c605e78c2531016c08beae5bea58c4a5b5304e5101d1343792e58df219c1a3c4322cfef947fa5e394cd8c65610d836605a2615441e2429c4683a024c16a26169453810857c6a1f72b009017259bf040f75ad7edbdd1a00b4329f1abce696b82d80c220e6d3a2e01ef60c672f0d7e3bda2f4fd2ffb3b8bf42b18f3b0983c4f4640c0497cdd4b7cd9e14667ceb5e11a53be505002d30dd016e666c114b85d9047429a0d5132c662a0530a8ddfe2d10fd6a072531d084c6e4b903ba8736caaef806d8c8da09f95a2d04c42f28f5ee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550e3566146db428bfb33a5c74170f8ffae5238e302a2d99041e7a48b705a84f2bd88f5526d7a1a97763ac6f6ea06df30b484c8c36691ec30de8009b8a1e835d031e2a2e44b8db4e7092e5ab5b881a0956e15ed001cb8345e6a6a2a1a466fe9ce242b42f02ea6d3bd52b6f56ded91dff4e6862bb0525326bf8100adb002bbb76cf48d8f3a8094d5c68e5abeb1525e1bbfc2d8541cf6357a17d5554ca359b228a10f03230685e24c7d417194b1d7f0c6938359f6461f0da681203af2ec6b769656caf5dc032ed5fce38351e66f1740f09b7e335192348f861acacb7046cf9efa773230f4efe0c31576dcb26815215960c9f0d39b4fbb54f3b74f9e871f14f352cb7e29cfc4b2ab7ded1295edf02cafc53890cf0ea5b778f934fd686d87ef74e634cc0a55f3d4c0ab32c9e6e1344a02790e309e6dd35e5d4e570aad950f4db1ba17b57ff6c21cfe76de2b5649437149da5cb0e67607449cc203f9972074b8da3f4ceee422e6c055919d840021b81ff8d29724dcdea1f6d331595d52566b3622f60d681e7843063e92a2f46b19098eb474a3123a73ba843da01847b11d9881ae88bbab829cff73876041c682120a1b2f097caef516b18f5cd81ad0113c46dc4cefda6679ca5edb193402e4696e7048a625d4de00627f8be7e7a97be79ee18e80a7682e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ae6517520d6075d9765076d30e5d1e390e5fb4279373a44ba25f8fdfce40916343872933b46705f51c9377b745529c38779e94d07c02bfd4d3c43c4196cd52a74eecf40968dad5a7067c2e597162eeca882dbddcbf0a56f4f9b52fecb21cec1bcdad370e93cd843484f663be27ea6f32fdf424f062570e90f04b1f259e3d12f67bc89296cee1112df8ca8d1748db8dd3160a6c9b3b95a5ca8a7d936add36d5d341a2d2dac8ca55e3a8cfc8ec1c3e64a9453e354a5047a97009bf0c6322323a03808e4fe8a6a2fecb7f4e4a497fdce982ee6d7e6dadb664ab4e78a51fcbd95190860a53e1fadaa06ba060f09343e9f27ae3a831dc91caf18eee1dc5df2b631d122b4903549430fbdb41f2c60d77a1a62f2bc4ad0d6a873751eae7c9f8241cb14d3b88d33cc116d61b587715fae38669c0f96cefaf1bc75d07fa84f97214c9740f5d243df60a54fec521a154cffeecb0f14d400c8832f30e6aa934bae9c9c653042bb85f3ceacf1ddacdabe65c4a4a857ecaea46b9d157ae31d2e59dace1ff6c0d39212e6a13a95d801f57ddb8d2d563fcf99b7eecf62c639a0dca3fb4210e69abd811b15c0cf02bf8ab923c7714d86b7e4a239163d5c3922ecd43b9d8cbf4ea986b8aadc7b0dc09eaa2433690bffd04f2001b4d460b4fb965cdae663ef30c484e5242f5081785f761fdaa81076649dab4477d250aa06856f49cff988e128d12c51cd6900cce6d9d06213c567c9b3813d7ff8774c93cd6485546bc1ced8da67748163bc368249387cbe362d252225ffcb7031282339ba17c02d290d2379f1c8464d80f50ac6c0da683b1d2017bbc5332f84a57d1cc59db2430d6ae1900d7c6be8f9f3bcce86ecdf21df727b2ac095de1df7d80496479e1263e3f8c3aa15f254fd98594d33da138dff4501590da466fcf24cc2388e5da5d222bfbfa7cfad987c65b428a26487000eb18794f0ead5bbbd063e7decaeb7318c4a024dee8715caca647185140e6a2fcaca02e5e06c4ce286d283da3bd2ff5c86a0f3ae58e30c08ebc82a87af874b5a48e6d46ec19efd02b79dcbbd4ccf574f51fcaca1b304c75617dab60530d96a6b95ea40e1e416cadcec8054b12846c75f2bfcddee30003a8e57aaaaf0abcfad3614fcdce6d0cdcdd4e580726aa0bf4fa627c9b225b7867505a62b0dcb9908cb629304d38dee9190fb9abb15b135b375c4bc7cf48e9844c61186984758329a4c5d701b63a2d71268e03812a731753fbd5cbb27a34c569f31febb2f1775f13ef289dcc5e0e355d5ec227771254df7a1e892eb7309166da5ccc62eb87020589b8c5bcacae3b372d480307b3608be09f0c3bcc15c7ab372bd608e9b8c212fc01afae001008f2ce2e0a2359d4b298c0cc462018e86b4c06d4276b0bb252e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b610af009d673c338d8b88a5e624a08f7fd4e7db38bd4dc6f5a701790bb7c9cb863cd76ed40da7ba8ff18b16648738b4e7b024312d367fe42c8a703321ac760adb98bd6e65a9c43d55487d70ff87dfa63f3a42507400dc0e5293ff9c40fcd47164dafbd96e9ef4b4a4ad38f4ea4bff3d88217609d61dd6b1078215f03a524b7a2a5fc68c995dd210a72338d171f4f7798dfc9eb063d04561fcb1143adb9fce4a8f0b61ff5b4af79af7646befcd238e602bc4cd88237a8dc1be7928db4ee4558d613127c367fe91aff62368477cf86ba8edf6d5a70f678067de00840c90b9ebf49ce7d84907b91a10633d0359b4fa9a82aaf2463ca577b249e8a5a0bbcd6f1446490381f837b23e41096fccbb10fc3f7392c03b1364c824e1667548ea48263ed87bf7dc1e2705f5e0806eba34b12d1b2cd000b0368cf199cb91fa432c2ea4edad54e3c904a000c7c3e8222597855467e61628b9db8725ba897cac3d93e3cd01ebe9a0986f58748fc50d7d8c0bbc058f29c6b83b5aa800f9df7dc06a00ffa21a1f87c67344b6c9477af2ead69b3843de0e95bfc874db3b7be0e85e4056ed9a8d3494e456f38e3b55f098012773c639f21ab664f0fa643362a4e04675fead45c193a8d7ba1f2a8a5ad77ee358cda404041683cfeb70ab6954865fdad550330df6d579af1c965f613e7e083196084f3169447c5381f9836dd7512fdb925da22a2c9e6f0006760305bccb8a2361ac59c2b0e432127743e9d5b3720bfc60012897b0e164b7a5976414185b9078cb6d14d87dc97e87a5755258aab2c21580e91cc1f91ba47c31b6f6c1c1f24c7609eaaede680c36d60e5c5cd61eeca342149f314f02f1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c1ff63dfe03af6d1d5fc03f7ad171f7d2dc983fb031d1a90c9a53cdfdb1cd7fef0ef991b7c594fda4af8752707a2c04dff6117dda27b9e9e0bb445cfb920e4c21384400aa80a3234d4766081d666d6578abc6daec023d36b4eb6e5449268e5074468019c506dfda888cc480069f3d270d7df76094271f2a5c4039f5f2c8205f5e53b8269736901fc452d8b937a7536baed7952e90ff2285ca56a4fd38e0c0b50c1270ae8bc32fb507356b30c5b6a91e5b4971eb6669d63c7a9f3344a58f169ac2b73ff0e83b68c04ba0fe3d21d24ca9af842a6baa34c085192a8f23eff007f4acc1090df9f84dc704d1b4ebc10a3620e53b66c34dd2ef58509e42b042dff18beb4b5be838ab1cece775341b25a62eb5dee356c5d188598c3ec0935d42ddb42fd594a2be110836d7914577f1c52870aa5438a60a40ac56976a9bb8c10fce219ebe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8556a4775c0f6e19be445d2cd4f19b243d959641b154fcb60b3df52f12f0a9055a125f8dcb38a6d5a02880a25d3ae7763fd067c4e1f8d2a1b3972016bb6758d4b8953848efcc9d8c8b09763bd992f2b62a277c59c7e41355e895ca65695d0e26a0e5269c739682bd35da9ae4046c35b28c449957c0bcc93c1f8da83151b841fadd775ada92d5f50018b5daa53b3e3cdec4a721b0ab7c9b50d997de4169dee18e2a767cc582cabe7d0bf61f84d3fd552e32db9bfe26c55310cd2bfc0becc0ce609980c918945a197a908bbe91373a6a475b019d2ad39a1d0aa85442ee68a9f76af6159e287f1569294603b4549e4b686f7f6721d16ab2a84a7cbd6bb6cce15e416046cf4ce376b5bcbc7b43fe7ba9f3b89cf0ee942d0e5acb51c4039f9689df9af9b1246dd1754c1b4ba75c923b5a78ac3382e056251b4707bc9d2f8190a86855ba74c049e6e3223db729a2148aa10bc1251a4c1209c4af75bd77e4c14d0001af4d91c526e2963d9b5fc81684c0601e25e64d6c21d2defa7ee1f3c5c6a5702e83a638e8881745de21dada686ab4d7c0cf7bfb42cd0a52b2419467e72c9f0164a84598a693c52590323582ef475b553ecd1df7c991cffc067f5e81c4a22bcbefb97ad6d849bb185d8115745d4a5cc1af86635cc5503465b9329d28575485afd911d6711c817f8a9185ba9a8adf5947bae072afd89cb55dd74f7ed632ce000858c23a7851bc6276297092b3b8babffc5bcf6863dc437ff9ee76a05a6e785a4a5244a3194040dac23889b20ddb4394ea3b59a9480b56d5aa686e3d201031d3aab83720ae548d757777006c3f028b8802f6bc099793f8a39b6a8d2023fc7d7989994866169a158aefe53cccd45bc7cc3bad95e93625ea216437a55d2df899e74c642f9db9b4a6b48900ddde2c962a3ebf42834bb484fc79f8c9470dd6c1bbfa175a4de7bc1897eed7fe9906635a342aa411f10faeafaf2ae90fa94094806c85894e76edce51631d61569ab3ebf7d749cb275dd3987fb13235d72568824e99b2694eee20b10bbcbf24d4d046f2b3a7898616cefbcc260533d042c90160941cec48f349a4fc580fd19ff1867170bbe2e26c38f769570b22c6d2e11b97ccd5247c96d5e7a2723fe88c4b7df0faf832495bc00479bfc7b6c25d9b0cee24a27dd5a27b4f2c1f4bed79b6ff6f9543a024ea8e1f701566a5b481cc8204a14f0f44436ba4556fcaeb703df0b369834fca8ac9b4dc2f5547eaa400d5dd9ec1eaef672c96c4450a72511fbf990a7e17f7f4d52dcf78a49e3e6907e124a8480ec138acacaa38a01dcb887bd3469f43fa2c65efbecbbaa7f4b277265c1f9614b68995ed9a8b5bc885b10ffb4fffc40d35b1b8839d6e9f04c9c7eb4cc8171712d3316304f8a5a2a6e3bbe81803d5809f0eec00d95f130c69812d11623e7db07cbf6a9266f08a0793e213083d91bb0cfe88ebf472562cc520eb2951bacd3aa55f26430a41b77c6627cc7adbc769ce8debac342a76e3d89186e8afb330543f04256f8c881a48adeded1a595a6a0e58a12fc3baca0f692ef3f94bd1cf5575384944fcb533055563402867475073653cf21ef5854d9ba9a75567b044075c4799d01b214a8a1fd3360cb1d58cbc0736b20f4be2ae115201d5ef23c5a1a78d2e8649ccb58f18004c3734a7c39ad9eb37c73623b6d6d3ee998f1efc9114c9969e1fffee8e6dbcef2bf1209e1022b0bc935a078791d63c701446abcdc04ba45427766930b2d529ae3d39ca04dd8de1bc553bd270134f0a28e3eb6b7fda85b9ef95e0f1227b8f6a931aeefdfc17b0e5ff788928748fa5e8ed2c3f8af0a62f73aae7b34283b373a04e23106b6672a5325b5a9b75cae525df601f801156cb262e94fe60d5207b64d5a5c62c1ccda920acf8ca453092e5e53a85016c05a16b32de3a7d469777a5564545bec6f95f02f50df9e9adc27335a46f467f94a66029dcc60b3edfa38aebec8b086c84d987521561e9cf729846f3ed6a98ad29d932881240fbb5da217ea0164b67ff6e20f6bebf8f6d11a4a69c4c37db0b26ce9b7fb623021cbf5ed05ebb7f41402e107ad714da0e476cea2f8098e5596b85e028d7a065a8382f1aeb5f91b1f4577a212eb4dc271b30f4c1b07b0b7e4a1057a2b9501d07e487fafdcad8945aaae19192f6bef5c2cce9c85f07b34004804f83af7778ecd2f2cd8f978e63be3e8d2f08cfa6ec24e56ca9c135ef34b4c018964da8d093094c6a91e397a90fd088322d0a75a4e8a9486b478e61c2991955548a84f0754fc1f83abf257ba38a2999ddee37df8e6dfe81f9f2ce5c55d0cca443192fb07090c978a50829140eac65bbc3600fef4ea37b1ac278ef7db92f57b81fc3a0a404bf27f311f80366619cb781304d1467d3b23f39eebe1d3c7010c81674a5d5d356ae8f26017bd2168c08380ffd828af4b241287ce3d9f9320cb7218e6e5ffec7e22cb9cfcbdad2c3003db6624c98dce57d511f498fc9122bd938bace36205a89ab732e620438d9bd5a53f0bcadae93029ccc6b4f1a321f7971348c9e1d464e54827b06812f4a6d51c547c2566a19d2ce25877bd2a1e3fe776aff364bc89b36b5c9c6cfd3491c0387bd2f59b6cf5b33756a83ed9131ef26f2e3998e22e950cb2be2601778452b00e30a6c822e5f54c084ea6b073467a1ec439a45538df28d95d3854de9978620e9b3eebc78c77e26f099a96e1b05b9cbff81cc9a12faa7cb476b30aed9d2c8f2f014db4fbf3fc992c466ae2ba3ffc3146003ab777537ad154cbdadcbf0404d8a449792597fa0925084fff7b2462e43bcecc193cf591d620406227e571b3438d6a324ee9e3439637e842a92c50a50393cc50219da39e268e2c0ee07aa96b86a8f1434ecf35db3f43db0529ad80ca818814f8e547377dad54a7fc271f388996c9c1e49a52cd752c04da6d698e264a78f1e6eb802f3a0db096b85f05764b0221a3cc9f24a32b8b0700bc8f55b29c77547f07b86ca2f59c0679cf7de73e5905eadb37aa6a56a15ceaa1ee0ca46ab892128ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b9036d31e2a7cfd29c57bc153a7b2c2279790eadcc219af452a203e3842f70e8f68fkiwi-ngkiwi-ngkiwicompatrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-kiwi-9.20.5-lp151.2.10.1.src.rpmconfig(python3-kiwi)kiwi-packagemanager:zypperpython3-kiwipython3-kiwi(x86-32)@@    /usr/bin/python3config(python3-kiwi)dosfstoolse2fsprogsgptfdiskgrub2kiwi-toolskpartxlvm2mtoolspartedpython(abi)python3-PyYAMLpython3-docoptpython3-lxmlpython3-requestspython3-setuptoolspython3-xattrqemu-toolsrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rsyncsquashfstarxorrisozypper9.20.5-lp151.2.10.13.63.0.4-14.6.0-14.0-15.2-11.2.7kiwi-man-pagespython2-kiwi9.20.54.14.1^n@^2^^@^H^H^@^@^@^@]f@]f@]f@]]@]+]]]@]@]rJ@]H@]H@]H@]H@]H@]H@]H@]H@]H@]%@\C@\@\v{\n\R@\R@\P@@\@\@\@[G[F[F[F[R@[i@[@[@[@[t[t[t[t[t[t[t[t[t[#@[[[@[[:@[[[[Q@[Q@[[[@[@[s[D[z@[z@[z@[z@[z@[z@[z@[z@[j@[j@[j@[j@[i[i[h8@[h8@[h8@[h8@[h8@[h8@[h8@[h8@[a[a[a[`O@[`O@[^[^[^[^[[ @[[ @[[ @[Xf@[W[Q[P}@[L[L[L[L[L[L[L[L[L[L[L[L[L[H@[H@[H@[H@[GB[E@[E@[E@[E@[D[?Y[?Y[?Y[<[6@[*A[*A[(@[!@[!@[[[[[[{@[{@[)[)[)[)[)[5@[[@[ @[ @[ @[ @[ @[ @[ @[ @[ @[@Z@Z@ZZZZZz@ZZZ@Z@Z@Z?Z?ZK@ZK@ZK@ZK@ZK@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@ZZZ@Z@Z@Z@Z؄Z؄Z؄Z3@Z3@Z3@ZZZZZZZԐ@ZZ̧@Z̧@Z̧@ZUZUZa@Za@ZZľ@Zľ@ZlZlZlZZ2@Z@Z@Z@Z@Z@Z@ZZZZZI@Z@Z@Z@ZZZZZ`@Z`@ZZZZZZ@Z@Z@Z@Z@Z@Z@ZkZkZkZkZw@Zw@Zw@Z%Z@Z@Z@ZZZZ1@Z@Z@Y>@Y>@Y>@Y>@Y:Y:Y:Y:Y:Y9<@Y9<@Y9<@Y9<@Y9<@Y9<@Y9<@Y7Y7Y7Y6@Y6@Y1S@Y0Y0Y0Y0Y0Y.@Y.@Y.@Y-^Y-^Y, @Y, @Y, @Y*Y(Y%uY%uY%uY%uY$$@Y$$@Y$$@Y$$@Y$$@Y"Y"Y"Y@Y@Y@YYYYYY;@Y;@Y;@YYY@Y@Y@Y@YYYYR@YR@Y@Y]Y @Y i@Y i@Y.Y.Y@Y@Y@YYX:@X:@X:@XXXXh@Xh@Xh@Xh@XXXXX@X@XsXsXsXsXsXsXsX-X-X@X@X@X@X@X@XXXXXX9@X@X@X@XP@XP@XP@XXXXX @X @XӸXg@Xg@Xg@Xg@Xg@Xg@XXXX@X@X@X@XX~@X,X,X@X@X@X@X@XƉXƉXƉXƉX•@XCXCX@X@X@X@X@XXXXXXXXXXXO@XO@XO@XO@XZXZXZXZX @XXXf@Xf@Xf@Xf@Xf@Xf@XXXX @X @XX+X@X@X@X@X@X@XYXYXYXYXYX@X@X@X@XXe@XpXpX@XXXXXX*X6@XXXXXXAXAXAXAX@X@XXX@X@XXX~@X~@X~@X~@X|Xx@XtXtXtXs{@Xs{@Xs{@Xs{@Xs{@XY@XY@XVz@XVz@XS@XS@XRXOXOXOXN@XIK@XIK@XGXF@XF@XF@XEVXEVXEVXEVXEVXEVXEVXEVXAb@X@X@X@X>@X>@X<@X8'X6@X6@X6@X6@X6@X43@X43@X2X2X2X2X2X.@X.@X.@X-X-X-X-X,J@X,J@X,J@X,J@X*X*X*X*X*X*X)@X)@X(UX(UX'@X%X$a@X$a@X$a@X$a@X#X#X#X!@X!@X!@X!@X!@X!@X!@X!@X lX lX lX@Xx@Xx@Xx@Xx@Xx@X&X@X@X@X@X@X@XXXX2@X2@X2@X=X=X@X@X@XXI@XI@XI@XI@XI@XI@XI@X X X X @X @XXXXX`@X`@X`@X`@X`@X`@X`@X`@X`@X`@X`@XXXXXXXXXXXXXXXXXXX@X@X@X@X@X@X@Ww@Ww@Ww@Ww@Ww@Ww@Ww@Ww@Ww@Ww@W%W@W@W@W@WWWWW@W@W@V>@V>@V>@V>@V>@V>@V>@VVV͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@VIVIVIVIVIVIVIVIVIVIVIVIV@V@V@V@V@VɦVɦVɦVɦVɦVɦVɦVɦVVVVVVVVŲ@VŲ@VŲ@VŲ@VŲ@VŲ@V`V`V`V`V`V`V@V@VVVVVVVV@VwVwVwVwVwVwVwVwVwVwVwV&@V&@V&@V&@V&@VVVVVVVVVVVVVVV1V1V1V1V1V1V1V@V@V@V@V@VVVV=@VVVVVVVV@V@V@V@VT@VT@VT@VT@V@V@V@V_V_V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@VVVVV@V@V@V@VvVvVvVvVvVvVvVvV%@V%@V%@V%@V%@V%@V%@V%@V%@VVV@V@V@V@VVV<@V<@V<@V<@V<@V<@VVVVVVVVV@V@V@V@V@V@V@V@V@V@V@VGVGV@VV@V@V@V@V@V^V^VVVj@Vj@Vj@Vj@Vj@VuVuVuVzVzVzVy;@Vy;@Vy;@Vy;@Vy;@VwVwVwVwVwVwVwVwVwVwVwVs@VrVrVrVrVrVqR@VqR@VqR@VqR@VqR@VqR@VqR@VqR@VqR@VpVpVpVpVpVpVpVpVpVn@Vn@Vn@Vn@VjVjVjVii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@VhVhVhVhVhVhVhVhVetVd#@Vd#@VbVbVbVbVbVbVbVbVbVbVbVbVbVbms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcermak@suse.comdcermak@suse.comms@suse.dedcermak@suse.comdcermak@suse.comdcermak@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dengompa13@gmail.comms@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedavidcassany@gmail.comms@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comgmoro@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.detom_schr@web.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deamajer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.deMichalMarek1@eaton.comms@suse.deagraf@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dengompa@datto.comms@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comMichalMarek1@eaton.comrjschwei@suse.comms@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.comrjschwei@suse.comms@suse.dems@suse.dems@suse.decyberorg@cyberorg.infodcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comms@suse.deMichalMarek1@eaton.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.derjschwei@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdavidcassany@gmail.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedavidcassany@gmail.comms@suse.dems@suse.demartin.mohring@5eecosystems.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comms@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedimstar@opensuse.orgms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdavidcassany@gmail.comms@suse.deJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comryan@desfo.orgryan@desfo.orgms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comJellyfrog@users.noreply.github.comms@suse.deJellyfrog@users.noreply.github.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedimstar@opensuse.orgms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deJellyfrog@users.noreply.github.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deludwig.nussel@suse.deludwig.nussel@suse.deludwig.nussel@suse.deludwig.nussel@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.deJellyfrog@users.noreply.github.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.demartin.mohring@5eecosystems.commartin.mohring@5eecosystems.commartin.mohring@5eecosystems.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdavidcassany@gmail.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dengompa@datto.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.detoms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedimstar@opensuse.orgms@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dengompa@datto.comms@suse.comdcassany@suse.comtoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comdcassany@suse.comms@suse.comJellyfrog@users.noreply.github.comms@suse.comngompa@datto.comms@suse.comdcassany@suse.comms@suse.comngompa@datto.comngompa@datto.comngompa@datto.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comngompa@datto.comngompa@datto.comngompa@datto.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdavidcassany@gmail.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comngompa13@gmail.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comkukuk@thkukuk.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comkukuk@thkukuk.dekukuk@thkukuk.dekukuk@thkukuk.dems@suse.comms@suse.comms@suse.comms@suse.comdavidcassany@gmail.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comjmason@suse.comjmason@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comcbruckmayer@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.detoms@suse.dems@suse.comms@suse.combo@suse.debo@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.combo@suse.debo@suse.debo@suse.debo@suse.detbechtold@suse.combo@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.combo@suse.debo@suse.dems@suse.combo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.dems@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comms@suse.comdvaleev@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comtoms@suse.detoms@suse.dems@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.dems@suse.comtom_schr@web.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comtoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.com- Fixed check for root device in grub config There is a code path that fixes the grub2-mkconfig used root device when building in an environment that does not allow to resolve the by-X path names, e.g an obs build worker without udev. For images that explicitly defines a root=... value in the kernelcmdline attribute the root device check was not called because the _get_root_cmdline_parameter method returns None. This commit fixes the method to return the expected root device in any case such that the grub2-mkconfig root device check has a chance to fix what grub2-mkconfig has created. This fixes bsc#1172928 (cherry picked from commit 0ae7bbe74e2d2dddccddda40db6c2f8a04b53543)- Fixed spec file This patch is two fold. First the py2 version of kiwi was dropped since py2 is EOL. To indicate that correctly on the package level python3-kiwi has to obsolete python2-kiwi. The other part of the change is a file conflict of the files: etc/bash_completion.d/kiwi-ng.sh /usr/share/doc/packages/python-kiwi/README which were provided by the kiwi-man-pages sub-package but were moved to be provided by the main python3-kiwi package now. On update of the package with an older version of kiwi that maintains this files to belong to kiwi-man-pages a file conflict at install time appears. To solve this python3-kiwi now conflicts with kiwi-man-pages < %{version} This Fixes #1413 and Fixes bsc#1168973 and bsc#1156677 (cherry picked from commit aba2505524850557e03a3f315b05fe58b28bc07d)- Fix string formatting After a flake8 upgrade to v3.8.0 these changes were required to pass the `tox -e check` validation. (cherry picked from commit 7e43b86cd9e56de48a63943f671cd047dede7521)- Fixed _get_grub2_mkconfig_tool Last patch on this method breaks the search for alternative mkconfig names. It returns always on the first lookup which could be none. This breaks on systems that uses a different name than grub2-mkconfig, like on Ubuntu.- Increase spare space on disk repart The sizing of the virtual cylinders in parted seems to be unfavorable, as with some disks and SD cards here the device size is not a multiple of the cylinder size, so the last incomplete cylinder is wasted. If this wasted space is more than 5MiB, kiwi tries to resize indefinitely. Therefore min_additional_mbytes gets increased to prevent running into this situation. This Fixes bsc#1165823- Fixed return value from _get_grub2_mkconfig_tool The method returned the basename of the tool if it could be found by Path.which(). But the method's scope has been changed in a way that the return value of the method must be the result from Path.which() to allow working on the full path name.- Make CommandCapabilities.check_version take the longest match This commit ensures that when trying to parse the version of a tool the comparison is done with the longest match for the given regular expression. This solves cases such in `grub2` where the tool name already provides some digit that could be seen as a version.- Fixed check for grub mkconfig capabilities The check for the capabilities of the tool were applied to the tool installed on the host but the later call of the tool will be done with the tool inside the image root- Validate use of GRUB_USE_LINUXEFI On systems that uses GRUB_USE_LINUXEFI with grub2 version less than 2.04 there is no support for dynamic EFI environment checking. In this condition we extend the grub setup to add this support. The change kiwi does is as follows: * Apply only on grub < 2.04 1. Modify 10_linux to set linux/initrd as variables 2. Write hybrid setup as 01_efihybrid This Fixes bsc#1165960 and bsc#1168480- Bump version up to 9.20.5 This version upgrade includes several fixes: * Fixed result map for OEM pxe install Fixes bsc#1165578 * Add SECURE_BOOT parameter for grub2 in efi mode This commit adds the SECURE_BOOT parameter on bootloader sysconfig for grub2. Fixes bsc#1167746 * Fix order in fstab Any mount point directly under / should be just right after the root mountpoint and before the custom mountpoints based on user's subvolume configuration. Fixes #1349 and bsc#1164310 * Fixed handling of fillup templates Systems using a template tool to generate config files might not be effective when they see the intermediate config files we need from the host to let certain package managers work correctly. Therefore the cleanup code in kiwi takes care to restore from an optionally existing template file if no other custom variant is present. This Fixes bsc#1163978 * Start using tftp system user package With this commit we start requiring tftp system user package. This user was created and managed by multiple packages before, with the risk of having inconsistent criteria on its defaults. Now there there a system user package so whatever package that requries this user should just require this package and do not create or modify the tftp user. Related with bsc#1143454- Bump version: 9.19.7 → 9.19.8- Update libyui-ncurses-pkg10 to libyui-ncurses-pkg11 In Tumbleweed there is no longer the libyui-ncurses-pkg10 its been superseded by libyui-ncurses-pkg11. This fixes the test-image-qcow-openstack integration test- Reference commit for SUSE maintenance This commit adds a reference to Issue #1301 and the report in bugzilla bsc#1159538. The issue was fixed in commit 7d96d19c- Fix grub2 configuration for shim fallback setup If shim fallback setup is enabled the grub.cfg is copied to the EFI partition. This commit makes sure that the grub.cfg is copied to the EFI partition according to the efi mount point. Fixes bsc#1159235- Ensure no swap volume is added on btrfs When the selected filesystem is btrfs the volume manager is not LVM. In that case the swap partition is not volume, it is a completely independent partition. So that we cannot add and additional volume for swap when swap is specified in the description file. This patch fixes #1301 and fulfills #1297- Fixed installation chapter in the documentation The chapter still outlines multipython support but we dropped support for python2 some time ago- Bump version: 9.19.6 → 9.19.7- Fixed swap setup if btrfs is used In case of a volume manager the simplified variant of the device name is used in the fstab file to reference the swap device. However this is only correct for the lvm volume management but not for btrfs. In case of btrfs the swap space is not a subvolume but a real partition and thus the simplified device spec in fstab puts in the loop mapped device which is wrong. This patch fixes it and is related to bsc#1156908- Bump version: 9.18.16 → 9.19.6 This version includes several fixes: * Fixed setup of default grub config In /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT also contained the root= information. If grub2-mkconfig runs with that information it places the root device information twice because grub2-mkconfig resolves this information itself. This commit prevents the root= information to be placed in the default grub config and Fixes bsc#1156908 * Include grub.cfg inside the efi partition This commit ensures the grub.cfg file is included within the vfat efi partition. This fixes #1271 and bsc#1157354 * Reference commit for SUSE maintenance This commit adds a reference to Issue #1261 and the report in bugzilla bsc#1157104 * Fixed zipl bootloader setup for s390 images The preparation to call zipl and the call itself were wrong. For whatever reason the kernel image the initrd are moved to another location prior to calling zipl. That move broke the system because no kernel/initrd existed at the expected place anymore. In addition the zipl call itself was issued from a the wrong directory. Also no config file was written as an after effect of the refactoring in Issue #1194. This Fixes #1173 and bsc#1156694 * Ensure grub.cfg is copied in EFI/BOOT folder This commit fixes the live images in efi mode. Grub configuration file is copied to the correct location in /EFI/BOOT. Fixes bsc#1155815 * Fix the sha256 generated file content This commit makes sure the generated sha256 file in a 'kiwi result bundle' call includes the filename with the correct extension. For compressed files it was omiting the suffix that included during the compression. Fixes #1223 and related to bsc#1139915- Fixed rpmdb compat link setup On older versions of zypper the path /var/lib/rpm was hardcoded and not used from the rpm macro definition. For such systems and to support them properly on hosts that have the rpm database already moved a compat link was created. However if the host has the rpm database at /var/lib/rpm the link doesn't make sense. This patch fixes this and therefore bsc#1150190- Bump version up to 9.18.16 This version upgrade includes several fixes: * Add --add-bootstrap-packages option (bsc#1149686) The prepare and build commands now allows to specify additional packages to be installed as part of the early bootstrap phase This Fixes #1151 * Avoid default installation of dracut kiwi modules With this commit dracut modules won't be installed by default in the initrd unless they are requested by the commandline calling dracut or by a dracut configuration file. Fixes bsc#1142899 bsc#1136444 Fixes #1103 * Add support for custom fstab script extension In addition to fstab append and patch features we also allow an fstab.script file that is called chrooted. The change is needed to support overlay mounting of filesystems as part of the initrd. If system filesystems needs to be changed in a way that they can be used in an overlay mount, the standard mount entry has to take the x-initrd.mount capability which requires a modification of the fstab which is cumbersome to handle as a patch file. This concept is currently used as part of the MicroOS project in SUSE and is applied in the integration test build maintained for this target. This Fixes bsc#1129566 * Add crypt dependency to kiwi-lib dracut module This commit fixes the dependencies of the kiwi-lib dracut module to include crypt module required by kiwi-luks-lib.sh. In addition it also updates the check() section to return 255 instead of 0. In check section a return code of 0 means install it, 255 install only if required by another module, anything else, do not install. Related with bsc#1142899 * 99-kiwi-lib requires rmdir, install it Fixes bsc#1143033 * Do not crash on missing HOME Fixes bsc#1149686 * Extend spare partition setup The spare partition could be used to introduce one additional partition table entry. With this patch the following new type attributes will be added: * spare_part_fs="fsname" * spare_part_mountpoint="/location" * spare_part_is_last="true|false" Along with the setup of the partition size the filesystem and its mountpoint can be specified. If set the contents of the rootfs at the specified spare location will be synced to that partition. The spare_part_is_last attribute will place the spare partition at the end of the disk. Note this attribute is only available for the simple vmx disk type. This is related to bsc#1129566 * Preserve licenses/other txt files by baseStripFirmware (bsc#1132455) (Fixes #1063) LICENSES are usually not large and should be kept alongside of the binaries. Also some firmware files sideload additional txt files (like for example brcmfmac43430 needs the sdio description txt files). We should just always include them because they're not listed as needed files. Co-Authored-By: Dan Čermák * Delete check_grub_efi_installed_for_efi_firmware The motivation is nice to check if the required grub module package is part of the package list if the efi firmware is requested, but as long as there is no distribution wide standard for packaging grub this check will cause more trouble than it is of help. Currently it failed for the arm architecture and the grub2-arm64-efi package. We decided to prevent checking against static lists and dropped this runtime check. Missing grub modules will be recognized at the grub stage when we search for them. Fixes bsc#1149686 * Support optional fstab.patch file In addition to the support for fstab.append, users can now also provide a patch file to change the contents of the fstab file as it got written by kiwi. The feature is probably rarely used but needed in the area of suse's transactional update mechanism. This Fixes bsc#1129566 and Fixes #945 * Write sha256sum --check compatible shasum format Change the output format of the bundler shasum file to be compatible with a 'sha256sum --check' call. This fixes bsc#1127173 * Fixed import of signing keys In reference to bsc#1112357 it was required to add the compat symlink /var/lib/rpm such that zypper can read the signing keys. Unfortunately zypper does not use the configured rpmdb from the rpm macro setup. * Fix location of grub unicode font This is a follow up patch for #f5bac4495d34. The change of the location of the font file was not applied if an iso target, live or install image is being built. This patch completes the change and Fixes bsc#1124885 * Handle location of the rpm DB on the macro level The location of the rpm database is no longer a standard path one can trust. Some distributions put it to /var/lib others to /usr/lib. This introduces the problem of dealing with different locations between the bootstrapping (host rpm) phase and the image installation (image rpm) phase. This commit implements a solution based on an intermediate rpm database configuration. KIWI creates the macros.kiwi file inside of the image root which is read by any call of rpm in the inner and outer system. During bootstrap phase the rpm dbpath from the host system is used and later in the install phase the dbpath from the rpm package as it was installed by the target image distribution is used. In case of a dbpath difference the database is automatically moved to the new location by setting the _dbpath_rebuild macro to the correct location. At the end the custom KIWI macro is deleted. As this process allows custom macro defintions during the KIWI run it also serves as the base for a solution to Issue #771 which will be done in a follow up request to this commit. Also the workaround for bsc#1112357 which uses a static dbpath to store an optionally given signing key will be addressed with this commit. The macro setup happens before the import_trusted_keys method which makes any specification for a strict dbpath obsolete. Last the implementation deletes the obsolete dump_reload_package_database code. rpm is able to automatically do the conversion of different db versions such that the code in kiwi is obsolete. In addition that code only worked for rather old db versions. The public API has not changed though, but the method is marked obsolete and does nothing anymore. In addition to the deletion of obsolete code a new API method post_process_install_requests_bootstrap has been introduced to handle actions required after bootstrap and before installing of packages from inside the new image- Bump version: 9.17.15 → 9.17.16- Do not create a new machine-id file This commit ensures KIWI is not creating a new machine-id empty file in case it was not provided during the system installation. Fixes bsc#1141168 (cherry picked from commit afd9b3019ae37980524554452e113d544e9676aa)- Update documentation references The kiwi project has been moved into its own upstream organisation named OSInside. Due to the move some doc and README references needs to be adapted (cherry picked from commit d09ccc520633c03d5393039ccbc4989779f803d0)- Extend the development documentation Co-Authored-By: Thomas Schraitle (cherry picked from commit 5ba515236d817bfe50200abe5fdaa8a3ac8e6dc4)- Add GitLab CI pipeline badge to README.rst (cherry picked from commit af773d67b9e9ca18a851893b1604c2fa866e7bee)- Fixed permanent redirect links in documentation (cherry picked from commit 921fa17f4fe7415e4e5e21a8636c72e7d76dc1d3)- Add GitLab CI pipeline status to README.rst (cherry picked from commit 0681fb4d7335c1b496a62663fae4b56876ffdc8e)- Extend quickstart to be more viable as a stand-alone document (cherry picked from commit fe7c7f59bdf6d1970550a28fff479233e95b85d1)- Add pytest-xdist to dev-virtualenv to run the unit tests in parallel - fix CLI args not being passed to pytest by tox for unit_py3_4 and unit_py3_6 - enable parallel run on travis - document how to run the unit tests in parallel (cherry picked from commit 0fbc2c5ff950cb1857fe7b45e66983272bf1fc4d)- Update documentation The kiwi-descriptions repository has been moved into the OSInside organisation (cherry picked from commit 70bc4fdda17bab4d6760c708ac5b8c2d77139466)- Bump version: 9.17.14 → 9.17.15- Update compression flag for qcow2 format In case of a qcow2 format we store the result uncompressed Since the format conversion only takes the real bytes into account such that the sparseness of the raw disk will not result in the output format and can be taken one by one This Fixes bsc#1128146 In addition the commit includes a refactoring for the evaluation of the compress flag in the runtime config. Instead of the global overwrite, the flag gets evaluated individually at the time the result metadata is created- Bump version: 9.17.13 → 9.17.14- Fixed disk detection from root device The method lookup_disk_device_from_root assigns the disk device matching the root device uuid. However in a multipath environment multiple disk devices matches the same root device. The code to assign the multipath map in this case was missing in the dracut code base. This Fixes #954 and Fixes bsc#1126283 and bsc#1126318- Fixup code issues reported by new flake8 version Travis has updated the flake8 version which caused more strict issue reports on the code. This commit fixes the new issues reported by flake8- Changed default value for bundler compression If no compression is configured in the kiwi config file the default was set to: False. However this lead to big trouble on the obs side for images which has fixed storage disk sizes configured, e.g Azure images which requests 30G disk size per instance. Thus the default for the bundler compression has changed to be: True- Bump version: 9.16.19 → 9.17.13 This version upgrade contains fixes for: * Support alternative EFI and grub modules paths In SUSE products EFI binaries are historically located in /usr/lib*/efi. In a recent move to package grub2 as noarch fate#326960, a collision between x86_64 and aarch64 has been identified, as both place platform-specific files in the same spot. To rectify this, a new location was devised: /usr/share/efi/$(uname -m). At the same time /usr/lib/grub2 will move to /usr/share/grub2. This Fixes #924 * Fixed Xen guest detection We only support Xen setup e.g in the Amazon Cloud for the x86_64 architecture. This Fixes bsc#1123186 and bsc#1123185 * Fixed location of grub unicode font file grub2 is expecting the unicode font below the fonts directory in the /boot/grub*/ depending on how the distribution installs grub2. This Fixes bsc#1119416 * Add Codec utils for bytes literals decoding In case of a literal decoding failure it tries to decode the result in utf-8. This is handy in python2 environments where python and the host might be using different charset configurations. In python3 this issue seams to be solved. Fixes #829 and bsc#1110871 * Fixed URI handling with token query option So far only the query format ?credentials=... was supported. In case of ?random_token_data the returned uri was truncated and also the format check on the query caused a python trace. This Fixes #830 and Fixes #828 and bsc#1110869 and bsc#1108508- Fix disk size calculation for VMX Disk size calculation must take into account the empty volumes that are to be mounted in a directory that does not exist in the root tree otherwise there is KeyError. The result of storate/setup._calculate_volume_mbytes must be a dict including all defined volumes. Fixes #904- Bump version: 9.16.18 → 9.16.19- rebuild auto generated code with stable generateDS For some reason the xml_parse code generated by generateDS v2.29.24 caused warnings on simple type XSD patterns. Therefore I rebuild the code with the stable build version v2.29.14 which fixed that issue Fixes bsc#1119792- Update flake8 call in tox.ini This commit ignores some issues in the code style reported by recent flake8. A flake8 update on the CI raised new issues also for the branches in maintenance mode. In those cases, just to minimize changes and backports, new issues are just ignored.- Add Codec utils for bytes literals decoding In case of a literal decoding failure it tries to decode the result in utf-8. This is handy in python2 environments where python and the host might be using different charset configurations. In python3 this issue seams to be solved. Fixes #829 and bsc#1110871- Make use of the quiet flag of mountpoint command This commit sets the use of -q flag of mountpoint. Kiwi only checks the return code, thus any stdout is useless in this case. Fixes #829- Adding bugfix trace for bsc#1110869 bsc#1108508 ticket was fixed with request #831 from SUSE/fix_uri_handler- Fixed URI handling with token query option So far only the query format ?credentials=... was supported. In case of ?random_token_data the returned uri was truncated and also the format check on the query caused a python trace. This Fixes #830 and Fixes #828- Fixed broken link to ec2uploadimg tool- Bugzilla reference commit This commit references the fix from commit:6b9e321048602945214 with the bug id bsc#1109882 in bugzilla.- Disable version tagging in maintenance branch- Disable deploy stage in Travis- Bump version: 9.16.17 → 9.16.18- Create parent qgroup when snapper is present This commit creates a new parent quota group (1/0) of level 1 when btrfs_quota_groups is enabled and snapper present into the image root tree. Related to bsc#1093518 and #812- Bump version: 9.16.16 → 9.16.17- Fixup make build target Don't include auto generated schema docs into the source tarball. Also cleanup MANIFEST.in from files no longer present in the repository- Bump version: 9.16.15 → 9.16.16- Disable warnings report from pytest By default pytest now generates warnings for all modules used in the tox environment. This information is nice but taints the test output of the code of this project and is therefore unwanted.- Bump version: 9.16.14 → 9.16.15- Customize latex output for look and feel- Update development doc chapter per review by Tom- Make volume id customizable for installation ISOs This commit makes volid attribute also available for OEM images. The installation media makes use of the volid value. Only posix safe names are allowed, up to 32 characters. Fixes #811- Include PDF build of documentation to the package Bundle a PDF version of the online documentation with the rpm package build. Due to the complexity of getting a latex build environment into the travis CI which does not take forever to install, the bundling of a built PDF into the pypi archive has been skipped. Users installing from pypi would need to install a latex env on their machine and run make latexpdf from the installed bundle. This Fixes #819- Update docs for setting up development environment Reference py3.6 when showing example tox call. Also delete a py version reference where it was not needed- Update kiwi tools README Delete obsolete entries for tools no longer present- Adding bugfix trace for bsc#1108508 bsc#1108508 ticket was fixed with bf556a96 and 77517cff commits. Just adding the ticket reference here.- Fixed disk detection for live iso in loopback grub If the live iso is used as a disk on e.g USB sticks and is configured to setup a persistent write space via the initrd option rd.live.overlay.persistent, it's required to find the disk device to create a write partition on it. This detection worked if the live iso is binary dumped on the disk and bootet due to the hybrid support each iso built by kiwi provides. However if the live ISO deployment should not destroy existing data on the disk there is an alternative setup which uses grub's loopback support and puts the iso as a file on some partition of the disk. In this mode the kiwi-live dracut module failed to find the disk device and could not setup a persistent write partition.- Bump version: 9.16.13 → 9.16.14- Fixed spec template Directory delimiter missing in call for install_dracut target- Bump version: 9.16.12 → 9.16.13- Make use of kiwi/utils/sysconfig This commit makes use the sysconfig kiwi utility in order to read and eventually update the /etc/sysconfig/snapper file.- Snapper configuration for btrfs quota support refactored This commit refactors the snapper configuration for btrfs quota support when btrfs_root_is_snapshot is enabled. The sysconfig file /etc/sysconfig/snapper is now taken into consideration. Fixes bsc#1093518- Fixed overlay of intermediate config files Some config files e.g etc/hosts needs to be temporary copied from the buildsystem host to the image root system. This is done by a custom copy with the .kiwi extension and a symlink to that file. During the installation process the package manager either overwrites the file or creates a .rpmnew variant. In case a .rpmnew variant exists there is code in kiwi which restores that .rpmnew variant to become the real file. However that _restore_intermediate_config_rpmnew_variants() method runs after overlay files has been applied to the system because it's part of the final cleanup step. In order to preserve an eventual overlay version of the file the .rpmnew variant gets only restored if the real file does not exist. This Fixes #807- Fixed dice documentation The chapter: Building in a Self-Contained Environment holds a fixed ruby version in the package install which was outdated. It also still referenced the container as tar.xz but we have changed to uncompressed containers by default a while back- Fixed filesystem builder use of exclude list kiwi defines a global Defaults.get_exclude_list_for_root_data_sync method but it was not used in the scope of the filesystem builder. Thus this builder was missing the exclusion of the .buildenv file. This references Issue #422 and Fixes #814- Enhance /etc/snapper/configs/root file parser- Fix quota groups management when snapper is present * Fixes the config file path if root is snapshot * Uses the correct QGROUP="" syntax * Do not overwrite the config file if already present Fixes bsc#1093518- Separate dracut module install by Makefile target The dracut modules like kiwi provides it should not be part of the default install target. If kiwi gets installed from source or via pip all dracut code gets installed on that system which is unwanted and in the worst case leads to boot trouble next time this system rebuilds its initrd via dracut. Therefore an extra Makefile target which is used in the spec of an rpm but not in the install target of setup.py is provided in this commit. As a consequence the installation from pip will not install any dracut modules on that system which is intentional. Installing from source requires to run make install_dracut which if called assumes the caller knows what he/she does :)- Bump version: 9.16.11 → 9.16.12- Follow up fix for skip_cleanup use make sure doc_travis tox target has created the manual pages such that the environment contains this data- Bump version: 9.16.10 → 9.16.11- Use skip_cleanup for deploy stage in travis We need the tox build environment to run the deployment- Bump version: 9.16.9 → 9.16.10- Follow up fix for deploy target Integration of man pages must be done as part of the sdist setup because the travis pypi deployment only uses the sdist target to bundle the sources- Bump version: 9.16.8 → 9.16.9- Fixed deploy target As part of the deploy process in travis a bundle to pypi is uploaded. The bundle is missing the compiled manual pages because the doc_travis stage did not create them.- Bump version: 9.16.7 → 9.16.8- Update pxe server setup documentation Delete the suggested modifications to /etc/sysconfig/atftpd and trust the defaults provided by the package- Added support for system wide config file If there is no user specific config file we are also looking for a system wide /etc/kiwi.yml file- use more meaningful variable names- Fix baseStripUnusedLibs config method This commit arguments handling of the baseStripUnusedLibs that was not prepared to handle quoted variable containing a list. Fixes #798- Added doc chapter for remote live boot- Added support for pxe live boot via AOE The live ISO should support a network reference. We are using the Ata Over Ethernet protocol to achieve this. In combination with pxe boot of the kernel/initrd a live iso can boot from the network using the following parameter example: root=live:AOEINTERFACE:e0.1 rd.kiwi.live.pxe Export of the live iso file via AOE can be achieved using the vblade toolkit which needs to be available on the exporting system and compatible with the live operating system. This Fixes #796- Run schema validation/update per XSL stylesheets- Added XSL stylesheet to auto update schema Drop oem-ataraid-scan from oemconfig if specified- Update vagrant doc chapter redirect links- Drop oem-ataraid-scan from schema Along with the change we pin generateDS version to 2.29.14 because the newer version (2.29.19) creates broken python syntax for elements with a value list for their content like it's the case for the packagemanager element. The tool uses the name k.packagemanager.content as class name which is invalid for python.- Delete dmraid aka: softraid soft/fakeraid support In fate#323743 the decision was made to drop dmraid from the distribution. Along with the low business case for those controllers and the support for linux softraid via mdadm we also drop the support in kiwi for oem-ataraid-scan- Fixed unresolvables in EC2 integration build For some reason libyui-ncurses-pkg8 is gone now- Fixed unresolvables in integration builds For some reason libyui-ncurses-pkg8 is gone now- Bump version: 9.16.6 → 9.16.7- update vagrant doc chapter per review by Tom- Added vagrant setup chapter in the docs Document steps to create a vagrant box for the libvirt provider. Also provide information on provider support This Fixes #792- Use xattr 0.9.3 Latest xattr is broken on pip- Fixed make obs_test_status The helper script .obs_test_status looks up the build results from the integration tests. With the introduction of multibuild integration tests the script has to apply some modifications to get the correct results This is related to Issue #791- Bump version: 9.16.5 → 9.16.6- Fix result bundle command This commits fixes a regression introduced in 98c9c77a- Bump version: 9.16.4 → 9.16.5- Fixup validation of boottimeout attribute If boottimeout is set to zero it is evaluated as "not set" and the default applies. However it's a fairly well approach to set a zero second boot timeout. This Fixes #789- Add build tests for CentOS- Do not replace version from the image name This commit makes sure that replacing version to version plus the build id on resulting files happens only on version suffixes. Before that if image name was including the version string it, this part was also replaced. Fixes #787 (bsc#1102868)- Extending result bundle task tests to better cover corner cases This commit adds some tests to better cover a couple of cases: * image name contains the version of the image * the file in result does not include the version- Cleanup misleading error message In root_bind if the cleanup failed to remove a directory hierarchy the error message was just displaying the path as it would be on the host root and not based on the root of the image root tree.- Modify python-yaml dependency for CentOS and RHEL 7 This commit fixes #785- Do not run Codacy analysis on tests- Fixup DiskFormatOva implementation The inheritance and super call concept used in this class destroys the OO design concept of loosely coupled code and also leads to a broken build because it bypasses the post_init constructor called by the base class- Exclude tests in codacy analysis- Bump version: 9.16.3 → 9.16.4- Added grub2 module packages for GCE test build- Fixup timezone and keytable setup for GCE build- Second round of package fixes for GCE test build- Update schema for GCE build test to latest version- Fixup package list for GCE test build- Added Google Compute Engine build test- Deleted obsolete landscape setup Code quality is checked via codacy now- Rebuild schema documentation- Fixed building VMware images with pvscsi adapter Qemu does not natively support the pvscsi adapter type. However there is a VMware suggested procedure which allows to change the lsilogic setup to pvscsi inside of the DDB of a formerly created lsilogic configured image format. This patch implementes that procedure and Fixes bsc#1099569- Rebuild schema documentation- Bump version: 9.16.2 → 9.16.3- Fixed name of checksum file for pxe type The pxe image build generates among others a checksum file with the suffix '.md5' This file is read by the legacy netboot code and is expected to have the same basename as the image file itself. However if the compressed attribute is set the image file name is set to 'image.xz' and the checksum is named 'image.xz.md5' which is wrong because 'image.md5' is expected. This patch makes sure the checksum file is always set to 'image.md5' no matter if the compressed flag is configured or not- Fixed custom_args argument assignment in BootImage custom_args has been deleted from BootImageKiwi class but was still passed in the Factory- Added runtime check for label use Added check_volume_label_used_with_lvm to check if custom volume labels are used in the scope of LVM- Fixed GCE image file name In former times Google requires the image name to follow their naming conventions. However that seems to have changed and it is no longer required to match a certain pattern. Thus this patch changes the output name of the GCE tar file to use the same naming schema as KIWI applies to its output files- Add codacy.yml config file- Move from landscape.io to codacy.com- Updated Travis check icon to forked project- Support label attribute in volumes The optional label attribute in a volume section allows to specify a filesystem label for the selected volume. The label setup will have no effect on filesystems which implements their own volume management like it's the case for btrfs. This Fixes #738- Update schema tron rules for btrfs type attributes The btrfs_* attributes only applies for vmx and oem types- Fixed some code smells * Use of unused variables, and dangerous defaults * Update of design patterns on pylint and landscape- Add support for activation of btrfs quota groups If the new type attribute btrfs_quota_groups is set to true this will enable the quota group system for btrfs based systems. This Fixes #772 and bsc#1093518- Improve coding style, tests and label format validation- Add '--add-container-label' flag This commits adds a command line flag to add a label for container image types. The flag can be used multiple times. Fixes #770- Added system cleanup methods Some files in the system gets created by services like systemd or zypper and are meant to be created once on the target system. However in the image they might be unwanted. Thus this commit adds convenience methods to delete files which gets automatically re-created by the services on startup. Whether or not the methods are used is in the responsibility of the author of the image descripion. This Fixes bsc#1098535- avoid double quoting of disturl in label (...="'obs://...'"). avoid always printed warning of missing disturl make use of disturl variable- Bump version: 9.16.1 → 9.16.2- Simplify configfile loading prefix and root variables are correctly set, thus calling the "normal" command has the same effect than the explicit call for "configfile"- Prevent building custom efi image If the distribution provides a prebuilt efi image kiwi should use it instead of building its own image.- Bump version: 9.16.0 → 9.16.1- Avoid module loading in grub config template This patch is two fold. First part replaces the import of dedicated video modules in the grub image by the all_video module. Second part avoids runtime module insertion which requires access to the boot filesystem which is not guaranteed on sophisticated rootfs structures like btrfs plus readonly snapshots and what not. Thus we make sure all boot code is embedded into the grub image(s) and no extra loading of modules at runtime will be needed. This Fixes bsc#1096937- Fix for bsc#1094788 This is just an empty commit to include the bugfix reference in the repository history. The bugfix for bsc#1094788 was actually commited in: commit 835cebfe5c488515dfbcdf33dab6262613ca5508 Author: Marcus Schäfer Date: Tue May 29 16:42:55 2018 +0200- Complete GUID change from signed to unsigned Follow up fix to complete the binary packing of the GUID format to use unsigned types. Missed to move short source from signed to unsigned. This Fixes bsc#1095267- Bump version: 9.15.4 → 9.16.0- Move fedora integration test build to fc28 distro- Use the versioned Python interpreter path to run build helper scripts The kiwi build process mostly does the right thing in terms of executing with the correct Python interpreter throughout the build process, with the exception of the Makefile not correctly locating the versioned Python interpreter executable path, and the bash completion generator being executed using '/usr/bin/python' without regard for what the target environment was. This is a problem when a build environment complying with PEP 394 as it stands today does not have Python 2 installed, such as when kiwi is being built as a Python 3-only package in Fedora. Thus, the Makefile has been adjusted to not only correctly locate the versioned Python interpreter, but to also execute 'completion_helper' with the correct interpreter. Additionally, a trivial change to the shebang to 'completion_helper' was made to be consistent with other Python-based build helper scripts. This is part of the overall effort to eliminate the dependencies on Python 2 in Fedora. Reference: https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3- Bump version: 9.15.3 → 9.15.4- Fixup move_to_root method move_to_root is called to check each element of a given list and changes any path specification to a valid path if the given root path would be it's root(/). This tranformation implied the creation of paths containing double slashes like //foo which was considered harmless. However it has turned out that the dnf package manager makes a difference here which requires to fix the resulting paths. This Fixes #761- Adding license tag under description tag in schema This license tag does not effect the resulting image in any way. The tag is just included to state the license of the kiwi image sources in case they are distributed. Fixes #728- Make sure profile env is included in live images For all images which boots via dracut the .profile file is included except for live iso's because no information is needed from that file to boot or customize the boot. However the .profile contains the kiwi_revision information which is useful for any image type. This Fixes #755- Add config-cdroot to description import list During the prepare step the image description and mandatory files needed in the create step are copied into the image root system below the image/ directory. In case of the optional config-cdroot archive this copy action was missing which lead to the problem that the archive was not present if the kiwi system create command is sequence is used. This Fixes #756- Added true module to grub image list When kiwi creates a grub image a list of modules are embedded. For the purpose of snapshot boot the true module seems to be used but was not included at build time when kiwi created the grub image. This Fixes bsc#1093917- Changed GUID format from signed to unsigned With reference to Microsoft Guid constructors it seems unsigned values are allowed which could exceed the value range of the binary unpack used in kiwi. This Fixes bsc#1095267- Fix SC2164 complain of shellcheck- Updating shellcheck call from tox Recent shellcheck versions are more strict and complain about backslashes "\" used in literals claiming it is preferred to use double backslashes "\\". As is just a styling advise and we use backslashes in multiple commands (echo, sed, etc) I believe this can be ignored.- Relax runtime check for ISO images using dmsquash This commit relaxes the dracut-kiwi-live module requirement if dmsquash dracut module is selected in flags attribute.- omit multipath module in live iso initrd The multipath module creates device maps which puts the device in a busy state and prevents the creation of a persistent write partition. As multipath seems never useful for the root of a live iso image we generally omit this module from being included- Fixup LOADER_LOCATION in sysconfig/bootloader By default we always set LOADER_LOCATION=mbr which is wrong if EFI is in use. This patch updates the value to be correct. It also seems that this variable is only consumed by the yast2 bootloader module from past days. Thus we consider it obsolete and on the to be droped list in future releases. This Fixes #746- Bump version: 9.15.2 → 9.15.3- Fix setup of LOADER_TYPE in sysconfig/bootloader LOADER_TYPE value for the grub2 bootloader depends on the use of EFI. This Fixes bsc#1094883- Added documentation for config-cdroot archive- Added support for config-cdroot archive The image description now allows an optional file named: config-cdroot.tar[.compression_postfix]. The file gets unpacked as user data for live and install ISO images. This allows users to add e.g license files or reference documentation to the ISO image. This Fixes #737- Verify file does not exist before creating symlink- Add service dependencies in generators Correctly adding the initrd-root-fs.target service dependency to auto generated sysroot.mount for kiwi-live and kiwi-overlay dracut modules. Fixes #741- Do not create static dev nodes in root init For compatibility reasons kiwi created a set of static device nodes when initializing a new image root system. With the presence of devtmpfs this should no longer be needed. In addition the static dev node setup now also causes problems on filesystems like btrfs which was the reason to delete this code now. This Fixes bsc#1087104- Do not delete uncompressed base docker images Fixes #739- Bump version: 9.15.1 → 9.15.2- Fix zypper add lock operations This commit fixes the arguments passed to zypper in add lock operations.- Add correct GPL-3.0-or-later license Add the correct license reference in the spec License field Fixes #732- Make container compression a configuration option Change the ContainerBuilder class to evaluate on the configuration options to decide if the container archive should be compressed or not. By default the archive will be compressed, thus there is no change to the former behavior but can be setup in ~/.config/kiwi/config.yml as follows: container: - compress: none|xz This Fixes #725- Return file name after archive or compression call Extend the ArchiveTar and Compress classes such that their archiving and compression methods returns the result file name after the operation- Allow docker root import from uncompressed file Check the given file name for its compression format and only uncompress if a supported format could be detected. This Fixes #730- Add additionaltags containerconfig attribute This commit adds `additionaltags` attribute, so multiple tags to a container image can be defined in a comma separated value. Fixes #713- Bump version: 9.15.0 → 9.15.1- Add a chapter for uninstall package requests in docs (#726) Add a chapter for uninstall package requests in docs- Update arm integration test Existing panda build was outdated and non functional. Move the test to a more popular target and write the image description to use technology matching the suse arm development effort. Target is now Rpi(64bit)- Use latest version of sphinx Formerly sphinx==1.6.7 was used because travis-sphinx failed with latest sphinx. Now travis-sphinx fails with 1.6.7 and I hope using latest sphinx will fix that- Bump version: 9.14.7 → 9.15.0- Add comment in pinch_system calls- Refining the uninstall type implementation- Add uninstall pacakges type This commit adds a new `uninstall` type for packages. Packages listed with this type will be removed by the package manager cleaning also any unneeded dependency. The removal is executed after running `config.sh`. Also in this commit `delete` type for packages is now executed after `uninstall` packages, meaing it also happens after `config.sh`. Fixes #625- Bump version: 9.14.6 → 9.14.7- Some simple code cleaning- Fixed check for volume group in use The former implementation evaluates the output of the vgs command and set the volume group as in use if one of the listed volume groups on the host contains the group name set by the image description. This would also match if the group name set in the image description is e.g 'System' and the a volume group on the host with name 'SystemVG' exists. However a conflict only exists on exact match of the name. The proposed fix is to use the --select feature from vgs and let it show information on exact match of the vg_name field. The code in kiwi then just evaluates if the selection by vgs has a value or not. This Fixes #721- Fix setup of kiwi_lvm profile variable kiwi_lvm was always set to true if a volume management system is in use. However it should only be set to true if the selected volume management system is lvm. The same applies to the kiwi_lvmgroup variable which also only makes sense if the lvm volume management system is used. This Fixes bsc#1090427- Bump version: 9.14.5 → 9.14.6- Extend test-image-azure integration test Use xfs as filesystem and set a tag to also test image tags- Use /dev/zero to really write a zero byte The cleanup of the 512 byte block for the vhdfixed tag was based on reading from /dev/null which does effectively nothing. As the block should be filled with zero bytes this patch changes the source from /dev/null to /dev/zero This was found by tests to reproduce the issue reported in bsc#1090953 but is not causing it- Add test for the utils class StringToSize This commit adds a couple of unit tests for the StringToSize class.- Bump version: 9.14.4 → 9.14.5- Run doc target in travis test stage- Fixup doc conf.py Do not load kiwi logging which is unneeded and causes many superfluous messages on the console when sphinx build runs- Fixup docstring warning from sphinx build- Fixup travis unit test stages Build docs in deployment stage only- Include doc_travis_deploy in travis deploy stage- Fixed syntax errors shown by travis lint- Revert "Fixup travis.yml" This reverts commit 79ccbdff394e2aba4f1e8fb6390a9a8e0d1925e2.- Revert "Yet another try to get travis stages correct" This reverts commit aca057c3554795b79c651f63a58967138d00f3c8.- Yet another try to get travis stages correct- Fixup travis.yml Looks like empty lines are not allowed- Revert "Clearly separate unittest stage from deployment" This reverts commit 5fd27924c931b6b60903b0015d0a8cf31cf499f7.- Bump version: 9.14.3 → 9.14.4- Some improvements on size calculation This commit simplifies the unpartitioned area size calculation. Fixes #709 and it is related to fate#323874- Clearly separate unittest stage from deployment- Use travis stages feature for pypi deployment Problem ist that the deploy section is called for every item in the former matrix: setup. This means the pypi upload was triggered twice for the same archive which means one target always fails. In order to deploy only once travis provides a stages feature which is used in this commit- Bump version: 9.14.2 → 9.14.3- Adding unpartitioned size attribute This commit adds the possibility of setting some unpartitioned area after the systemdisl partition into the image. Fixes #709- Fixed creation of machine settings file If no vmnic setup is present a request to iterator over a NoneType object is attempted and failed. This Fixes #710- volume_manager API docs cleanup- repository API docs cleanup- system API docs cleanup- package_manager API docs cleanup- build API docs cleanup- Fixed docstring :rtype: values In Python the string type name is str not string- Cleanup of the iso_tools API docs- Cleanup of the utils API docs- Cleanup api doc strings This cleans up and fixes the api documentation for the public interface of the projects boot source code files and Fixes #700- Cleanup of the solver API docs- Fixup docstring typos per review- Cleanup api doc strings This cleans up and fixes the api documentation for the public interface of the projects storage source code files and Fixes #698- Fixup download url in setup.py Better point to installable packages. This Fixes #702- Cleanup api doc strings This cleans up and fixes the api documentation for the public interface of the projects toplevel source code files and Fixes #697- Fixup creation of vmware settings file The kiwi schema allows for multiple vmnic sections but kiwi only took the primary one into account. This patch uses all configured vmnic sections. This Fixes #688- Support lookup for fstab.append on fstab creation At the time kiwi creates the fstab with all required fields to boot the system it now also looks for an optional fstab.append file and appends its contents to the fstab file. This allows to setup custom fstab entries for filesystem mounts which are established outside of the kiwi image building process by e.g a service at first boot- Add auto release to pypi on release tags This will automatically release kiwi on pypi if a new tag in master is set. This happens when bumpversion is called followed by a push and push --tags. Only if the tag is pushed the travis deployment gets triggered. This Fixes #678- Change variable quoting for Rm/Rpm shell helpers The two methods exists to overlay their call with a logging facility. Thus it is ok and expected that the caller can pass arguments for the program e.g (Rm -rf foo) which resulted in (rm '-rf foo') leading to a runtime error.- Bump version: 9.14.1 → 9.14.2- Fix default initrd_system values This commit fixes the default initrd_system value for some image types. Since this value is included in profile and potentially taken into account for some of the config script functions, it is important to have consistent values even when the image type has no initrd choice or it doesn't have initrd at all. Related to #689- Check partition table after cow part creation Proceed with the persistent write partition setup only if the cow partition could have been created successfully- Fixed detection of disk node in live iso images If the live iso is booted as disk the initrd code needs to find the correct disk node pointing to the iso image. This was formerly done by checking if the populated disk devices contains an iso header with an application id. The information was obtained using the isoinfo tool. isoinfo is a tool provided by the obsolete and xorriso replaced cdrtools kit. In addition the lookup was unsafe because any iso with an application id would have been valid. Thus this patch changes the detection mechanism to use the volume id as it is used in the root assignment on the cmdline. The volume id is populated as device label for the assigned block device and can therefore be used as a unique id. The volume id itself is a configuration option in the image XML description. If not set the default is 'CDROM'. The information can be obtained via blkid and therefore also eliminates the isoinfo requirement- Fixup test-image-docker unresolvable state genisoimage seems no longer present in the distro- Update etc/default/grub setup kiwi writes optional grub boot parameters to the GRUB_CMDLINE_LINUX variable in default/grub. This information is then picked up by grub2-mkconfig and written to grub.cfg However there is also another variable named GRUB_CMDLINE_LINUX_DEFAULT which according to the documentation should be used preferably. While it does not seem to matter for grub it matters for yast. Thus this patch changes the configuration variable and fixes bsc#1084117- Bump version: 9.14.0 → 9.14.1- Fixed truncation of image when writing vhd tag When writing the vhd tag into a vhdfixed formatted image the image was opened with the wrong open bits 'wb' and thus was truncated at the 64k offset. This patch fixes the open bits to allow in-place tag writing. This Fixes bsc#1077096- Make use of autoremove in Yum and Dnf to clean dependencies- Enable no forced deletion for dnf, yum and apt package managers This commit makes apt, yum and dnf support equivalent to zypper in terms of being capable to delete packages using the package manger tools (implies dependencies deletion is handled by the package manager) or deleting explicitly only listed packages using packager tools even if this implies breaking dependencies.- fix vmx fileName parameter, bsc#1084157- Update schema version in free schema doc generator- Update schema version in headline of doc chapter- Bump version: 9.13.9 → 9.14.0- Rebuild online schema documentation- XSL Auto update descriptions due to schema change- Delete obsolete hybrid attribute from type Any iso image we create will be a hybrid image. That was already the default for any install iso image and was a configuration option for live images. The optional selection only existed for systems which do not provide tools to make an iso hybrid. All distributions kiwi supports provides this capabilities and there is no good reason why a live or install iso should not be hybrid and bootable as iso and as disk. Also the boot in disk mode became the preferred boot method for the majority of our users which requires to provide a hybrid iso- Add efiparttable type attribute This commit allows to choose the partition table type for efi firmwares using the efiparttable type attribute. Fixes #638- Update spec file to require xorriso- Cleanup hybrid call and use of iso tool options The extra isohybrid call is only needed if the mkisofs tool category is used. Thus it should be only visible at the place where the isofs is created and not as an extra step in the builder tasks. Additionally the handling of extra options was mkisofs specific and should be better done as a common meta_data record. The tool specific options should only appear in the tool specific class implementations- Allow to configure iso tool category Switch to xorriso by default but allow to setup cdrtools in the runtime configuration file- Remove xml_parse.py shebang in spec It removes the shebang from the autogenerated file and also removes the exception in rpmlint to ignore non-executable-script warning. Fixes #666- Remove unneeded shebangs from dracut modules Fixes #668- Added IsoToolsXorrIso class As an alternative to mkisofs/genisoimage there is now the IsoToolsXorrIso class which implements the IsoTools interface by using xorriso. This Fixes #635- Update package MANIFEST.in Include new iso_tools directory- Added iso_tools api documentation- Add list_iso method to iso_tools api- Update FSF address The address has been taken from the header example published here https://www.gnu.org/licenses/old-licenses/gpl-2.0.html Fixes #667- Add create_iso method to iso_tools api- Seperate iso tool handling into its own namespace The Iso class only provides generic helper methods around the creation of ISO filesystems. For the creation of the filesystem itself we encapsulate the tool parameter handling into its own class. For the option compatible mkisofs/genisoimage tools the IsoToolsCdrTools class exists. This allows to create e.g IsoToolsXorrIso class as a future implementation- Refactor iso helper tools There are several tools available to build iso images. genisoimage, mkisofs and also xorriso. The history of the tools shows them to be used in the range of available Linux distributions. Thus kiwi contains an abstraction layer to support them but assumed they are option compatible. With the xorriso implementation this is no longer correct and therefore a refactoring of the iso tools api is required before support for xorriso can be added. This references Issue #635- Make build type mandatory in XMLState- kiwi_inode_size value is no longer hardcoded in more than one place- Add warning message for dasd- Rearrange defaults and some comments- Rearrange variable start_sector attribute to be a Partitioner attribute- Add disk_start_sector type attribute This commit adds the disk start sector attribute to configure the first disk sector for the first partition of the disk. Fixes #575- Rebuild online schema documentation- Bump version: 9.13.8 → 9.13.9- Bump version: 9.13.7 → 9.13.8- Fixed base package requires kpartx is used by kiwi but was not required in spec- Update gitignore Do not manage changes in .pytest_cache- Tell plymouth to quit only if a dialog is called In case of a dialog kiwi uses the dialog program which conflicts with the plymouth splash system. Thus we tell plymouth to stop This patch changes the request to be send to plymouth prior to a dialog call and not in general- Bump version: 9.13.6 → 9.13.7- Update bootloader console for oem test image Set bootloader_console="serial" for the oem test image to allow testing in the Kanku CI- Add profile dependencies With this commit the profile can include other profiles as a dependency. This way it is possible build an image defined by multiple profiles by just calling a single composed profile from the command line. Fixes #658- Bump version: 9.13.5 → 9.13.6- Disable multipath from oem build test- Fixup setup of root_filesystem_is_multipath The variable is set to a boolean value or None. If set to False due to a configuration of oem-multipath-scan this will cause the dracut multipath module to be omitted. In any other case the presence of the multipath module decides whether it will be included into the dracut generated initrd or not.- Fixup python-kiwi base package requires There is no need for the base package to require multipath. Those tools are only needed for dracut modules- Use dracut modules based on feature use As the kiwi build dracut initrd is a generic one which includes all installed dracut modules we missed a way to exclude modules from beeing incorporated even if we know it would not be needed. One example is the multipath module which would only be useful if the oem multipath scan is configured in the image description- Update test-image-oem build Create hostonly dracut initrd on first boot and replace kiwi's grub config by the result of grub2-mkconfig- Delete invalid motd file from build tests- Prepare test-image-oem build test for Kanku Activate unattended mode and preselect the installation target Also specify a fixed swapsize value to be independent of the host main memory which is used to calculate swap if no size is specified- Bump version: 9.13.4 → 9.13.5- Fixed btrfs search path in earlyboot script If kiwi generates its own efi image for the boot process it does not setup the btrfs relative path setup in the earlyboot script embedded into the generated efi image. This has a bad impact on the file search because the btrfs setup done in kiwi puts root below the @ volume which we then need to specify of the relative lookup is not activated. Fixes bsc#1082155- Bump version: 9.13.3 → 9.13.4- Use LABEL for the swap partition If multipath and device maps are active the fstab entry should use the LABEL reference. Systemd calls swapon and it only works properly with multipath devices when LABEL reference is used or calling directly on the /dev/dm-* device file.- Bump version: 9.13.2 → 9.13.3- The order of the options for mkisofs matters Setting -eltorito-platform after -b causes mkisofs to fail- Resize partition table after image resize The command 'kiwi image resize' allows to resize the size of a disk image. Depending on the partition table type it is also required to resize the partition table inside of the image to let the file size change become effective This Fixes #534- APT: Support patternType in the bootstrap phase With patternType="onlyRequired" (the default), run debootstrap with --variant=minbase to install only essential packages. With patternType="plusRecommended", let debootstrap also install important packages. This is not exactly what the patternType keyword means with other targets, but it allows to choose between an absolutely minimal image and a small but usable system.- Bump version: 9.13.1 → 9.13.2- Reactivate device mappings after repart. Fixes #645 This commit recreates removed device maps and triggers again systemd generators in order to adapt again device units to the new context. Fixes #645- Refactor ovftool check The way this was done mask errors from the call with the check if the tool exists on the host. This patch refactors this and makes clear where we check for the tool to be installed and where we actually call it- Extend has_option_in_help to also check error data- Check if isotool supports eltorito-platform option Along with the change there is a small refactoring to populate the iso tool search to the public api of the Iso class- Set eltorito-platform for efi The default eltorito platform is set to "x86_64 PC", however in an alternative bootloader spec for efi this would be the wrong platform spec. This patch adds the correct platform to the alt-boot setup for efi. References #643- Fixup obs test status helper Use osc results output to get better status information- Fixed get_free_disk_bytes in dracut kiwi-lib The method used any device from the lsblk output, but it can happen that some device nodes with different name point to the same physical device. The method would then calculate the free space wrong. This patch takes the PARTUUID value into account to make sure any partition device size is used only once. This Fixes #648- Use pytest instead of py.test From pytest 3.0, it is recommended to use "pytest" as the main command. The use of "py.test" is deprecated and is potentially removed in the future.- Update tox setup Add python 3.6 target and activate it for the travis and the local make targets Use major python version for the check(flake) and doc targets where the interpreter minor version is not primarily important This references #641- Update yast setup documentation Incorporate changes per review by Tom- Fixed oem build test bind-utils explicitly required for obs to be able to resolve the package dependencies- Bump version: 9.13.0 → 9.13.1- Only delete sub path if not empty- Fixed package lists for azure and ec2 build tests- Reference commit for bugzilla With regards to the changes done in Issue #637 this commit just creates a reference to a related bug bsc#1082163- Cleanup config functions shell coding- Use mkisofs instead of wodim- Delete obsolete/unused methods- Add functions.sh to shellcheck- Added doc page how to setup yast on firstboot- Allow arch attribute for profiles specification A profile could be relevant for only a specific architecture. There was no way to express that in the XML description. With the change in this commit a specification like the following is possible: Profile A is only usable on the aarch64 architecture, whereas profile B would be usable on all architectures. * Selecting an arch specific profile from the commandline via the --profile option on a system which is not of that architecture will result in an error message. * Using the import="true" attribute in the definition for an arch specific profile will cause the import of that profile only on that architecture and silently ignore the import on any other architecture This Fixes #637- Update build-test descriptions for Kanku As part of the buildservice there is now also a CI system called Kanku which allows for image boot/run tests. The only requirement on the image level which is missing in our build test descriptions is the setup of the serial console. This patch updates those image descriptions which could be tested by kanku to provide a serial console at boot time. The plan is that our build-test images automatically gets boot tested by the Kanku CI. This should include boot, console-login, reboot, console login, shutdown. The required job description to do this needs to be worked out together with the Kanku team- Adding publisher attribute for ISOs This commit adds the 'publisher' attribute in type only for ISO image type. It sets the publisher name of the resulting ISO. Fixes #630- Fixed yum vs. yum-deprecated binary lookup When using the yum package manager it could be either provided as yum or yum-deprecated binary. Because of this the search method to find the binary needs to know the context from which the call is performed. This could be either the host system or the created image root. This Fixes #624- APT: Run debootstrap with --variant=minbase This selects only packages with Priority: required, which is more in line with what the other package managers are doing. A patch for kiwi-descriptions has been submitted to adapt to this new behavior.- Bump version: 9.12.9 → 9.13.0- Do not emit linuxefi/initrdefi on non-x86 platforms Grub wants to have linuxefi/initrdefi commands to execute Linux via the UEFI calling convention on x86. However, all other platforms simply use the normal linux/initrd commands, because there grub assumes that an EFI grub wants to run an EFI payload. Reflect this architecture difference in the generated grub configuration. Signed-off-by: Alexander Graf - Fixup grub2 theme setup The presence of a background file was mandatory for kiwi to use the theme. But the background information is optional- Deleted obsolete boot descriptions The custom kiwi boot descriptions has been moved into the kiwi-descriptions github repo and builds the compat package kiwi-boot-descriptions from there. The build of the boot image(initrd) is done by dracut and the dracut module packages provided by kiwi. The classic custom boot descriptions can still be used as alternative method if the above package is installed. Related to Issue #576- Create compatible boot options The boot option root=install:CDLABEL= is mandatory for install images which uses the dracut initrd system. But for the custom kiwi oemboot descriptions this is causing a problem when detecting the install device. Thus the above boot option is only applied for the initrd system which actually makes use of it- Update boot description search path With the move of the boot descriptions in its own package the kiwi search path needs to be adapted to look for boot descriptions in /usr/share/kiwi/custom_boot. In addition a runtime check to exit early if the boot description could not be found or is not specified will be provided. Related to Issue #576- Update the docs to the current example present in kiwi-descriptions- Bump version: 9.12.8 → 9.12.9- Update .virtualenv.dev-requirements.txt sphinx 1.7.0 is not compatible with travis-sphinx thus we stick with 1.6.7 until travis-sphinx followed the sphinx changes- Add restrictions to Path.remove_hierarchy When an iso file is used as repo, this iso will be loop mounted on the host and bind mounted into the image root as long as the image builds. When the mount is released a recursive cleanup of the complete path happens. This is done by calling Path.remove_hierarchy. However if a sub path of the mount path contains a system root directory which is mandatory for the Linux root system it is not allowed to be deleted even if it is empty at the time of the mount cleanup. Thus this patch adds a lookup for protected directory names and only runs the recursive deletion as long as no protected member is part of the path. This fixes bsc#1080301- Initial support for building Debian/Ubuntu packages in spec This adds support for producing the main kiwi package as well as the packages for the dracut modules to be used when building Debian-based distribution images with KIWI. The Debian/Ubuntu package is built using debbuild: https://github.com/ascherer/debbuild- Fixed build_pxe_root_filesystem documentation The article still used filename references from v7 code stream This patch updates the docs to match the sources it refers to- Update dropped features documentation The information on the partition based install method was unclear and misleading. This patch clarifies the documentation in this regard- Delete obsolete ovf format value Support for ova has been added which makes the ovf format value obsolete and redundant- OVA: Print a user-friendly message if ovftool is not available- OVA: Require ovftype="vmware"- Expand consistency check for grub efi package to cover debian based and RH distros- Bump version: 9.12.7 → 9.12.8- Exclude install source device from target list- Fixed kiwi-dump timing issue The install code needs to wait in the pre-udev phase for the device containing the installation data to become ready before proceeding with the actual installation code.- Fixed dialog size of install confirmation dialog The size was too small to show device names which causes a line break to be displayed in the next line- Fix style error- Early exit if firmware is efi or uefi but the expected grub module is not part of the package list- Cleanup misleading method name- Fixed coverage report setup Latest version of the coverage module requires a report setup- Fixed target path name for gce format get_target_name_for_format in case of the gce format does not return a path spec which leads to an incomplete result information for a later bundle command. This patch fixes this. In a follow up pull request we will also update the method name from the misleading get_target_name_for_format function name to get_target_path_name_for_format- Use live-grub-stick- Fix packages file generation This commit checks the %_dbpath value of the image rpm tool. This is needed since recent rpm versions switched the default database path, thus running rpm queries to different roots might lead to errors. Fixes #605- Bump version: 9.12.6 → 9.12.7- Update per review by Tom- Update per review by David- Update per review by Tom- Added chapter for live-fat-stick deployment With the support for the iso-scan feature in KIWI live ISO image, also the ability to deploy file based on FAT32 usb sticks via the live-fat-stick tool exists. This chapter describes how to do it and Fixes #521- Update pre review by Tom- Update per review by Tom- Update per review by Tom- Remove vmdk metadata update procedure This commit removes the method _update_vmdk_descriptor from DiskFormatVmdk class. The code part causes vmdk format issues in current up to date hipervisors such as VMWarePlayer 14 or Virtualbox 5.2. Removing this code does not produce any failure, at most can only imply loosing some features provided by open-vm-tools package. Fixes #591- Fixed use of profile variables in kiwi-dump module The profile environment was not imported in the dracut kiwi-dump module. Thus custom settings like oem-unattended did not had an effect- Fixup docstrings in xml_state- Allow only one dracut variable for kiwi debugging- Bump version: 9.12.5 → 9.12.6- Fixed kiwi dracut config for the final system Once the image has been deployed on the target and the system is up and running some of the kiwi dracut modules used for deployment are no longer needed and should not be taken into account when another dracut call happens on the system.- Add support for building OVA images Implement support for format="ova" using VMware's ovftool. We use the vmdk format as a basis and then just call ovftool to convert *.vmdk + * .vmx to an OVA.- Update documentation Update the documentation with regards to the move from the plain kiwi initrd to the dracut initrd system. This is related to Issue #576- flake8: Use a more conservative max-complexity setting Set the default threshold to 12 and annotate the outliers with "noqa: C901". Most of the cases are due to lack of switch statement in python, but there are some worth titying up. Now we can grep for them :).- Bump version: 9.12.4 → 9.12.5- Make sure there are no busy devices on reboot If the dracut kiwi-repart module skips the repartition step because the disk was already repartitioned it leaves devices in busy state which leads to a rescue shell at the system mount stage- uboot-setup-panda.tgz was readded by mistake as boot hooks are no longer needed- Adding opensuse ports repository- Bump version: 9.12.3 → 9.12.4- Don't lookup zImage symlink Due to the workaround to lookup the gzip compressed variant of a zImage to find its version, it's required to find the full name of the zImage in order to rematch the gzip variant. Looking at the zImage link will make this to fail because there is no vmlinux link- Bump version: 9.12.2 → 9.12.3- Fixed kernel version check for zImage kernels build as zImage contains the decompressor code as part of the kernel image and could be therefore compressed by any possible compression algorithm. In this case we assume/hope that there is also a standard gz compressed vmlinux version of the kernel available and check this one instead of the zImage variant. Fixes #587- Bump version: 9.12.1 → 9.12.2- Update the man pages- Fixed installation image builder Use get_boot_names from BootImage instance to ask for the name of the initrd instead of constructing this information from static values. The name of the initrd is different per distro and toolkit- Provide a get_boot_names method in boot classes The naming schema for an initrd file name depends on the boot image type as well as on the underlaying initrd creation toolkit. In order to encapsulate that in a clear interface the code to know about the correct names has been moved into the classes which are responsible for it and out of the builder/disk class- Image name generation for GCE images + Fix the name generation for GCE images. The implementation assumed that GCE images are of a type that use a kiwi generated initrd, looking for image name components based on the boot attribute in the type element. This assumption is not correct, use the name provided in the XML to compose the image name.- Bump version: 9.12.0 → 9.12.1- Fixed dracut-kiwi-oem-dump requires setup on rhel/fedora multipath is provided by device-mapper-multipath- Adding package_gpgcheck flag as an option for set-repo and add-repo Fixes #565- Adding uboot-setup kiwi hooks For some reason the uboot-setup-panda.tgz file did not get into master branch, probably was not properly pushed in the former include_build_tests_arm branch.- Fix build tests to match new locale setting strategy (#586)- Added timezone package to build tests With the latest update on how kiwi handles the locales with systemd-firstboot, only locales defined in timezone package can be set, thus Europe/Berlin is not possible if timezone is not installed- Fixed build tests for azure and ec2 Packages yast2-storage and recode no longer provided- Bump version: 9.11.30 → 9.12.0- Update build test image descriptions Update to latest schema by auto conversion and delete use of oemboot kiwi code by switching to dracut- Fixed reading device node path lsblk should be called with -p because it's a mistake to assume any device lives below /dev. There could also be subtree devices in /dev/mapper or /dev/disk/.. We leave it up to lsblk to provide us the correct information- No need to actively stop the dialog service- Added required packages for dmraid and multipath- Added handling for dmraid and multipath devices- Adding iso-scan feature to kiwi-live dracut module This commit adds the iso-scan scripts to kiwi-live module_setup if the former files are found in the system inside the dmsquash-live dracut module directory. Fixes #574 and is related to #521- Fixed Arrays implicitly concatenate by shellcheck- Add support for net install in dracut kiwi-dump This implementes one of the tasks from Issue #576- Added runtime check for dracut-kiwi-oem-dump The installation of the above mentioned dracut module package is required for oem images which uses dracut as initrd system and have the creation of an installation image requested. This is related to Issue #576- Update schema version in documentation- Auto update all schema descriptions to v6.8- Delete hwclock from profile and system setup- Delete hwclock section from schema Deletes hwclock section from schema and provides xslt style sheet for schema auto conversion from schema version 6.7 to 6.8- Deprecate suseConfig method and remove hardware config method This in this commit: - the contents of the suseConfig method from kiwi/config/functions.sh are replaced by a deprecated message. - the setup_hardware_clock method from SystemSetup is removed as it is not used anywere in the code.- Extend CommandCapabilities to also check version- Added dracut-kiwi-oem-dump subpackage to spec- Update locale settings (#579) * Use systemd-firstboot in order config basic settings This commit updates locale and keyboard settings in order to make use of the systemd tools, as this will be the only valid method starting from SLE15. Fixes #577 * Added CommandCapabilities utils class- Bump version: 9.11.29 → 9.11.30- Deleted syslinux from ppc/oemboot/suse-SLES15 syslinux is not provided for ppc. This Fixes bsc#1073310[boot] fix double quote in grub menu which makes kernel updates for CentOS / RHEL / Fedora break grub.cfg- Omit kiwi-repart dracut module in oemboot initrd KIWI's oemboot initrd with initrd_system="dracut" together with installiso="true" requires to have dracut-kiwi-oem-repart package installed in the system, thus it ends up also being included in the recreated dracut initrd after booting the oemboot initrd from the installation iso. This kiwi-repart module causes a boot failure in that case since no .profile file is present, moreover, it has no sense to run it at that stage, since the disk is already reparted by the oemboot code. This commit allows installiso="true" and initrd_system="dracut" to play well together.- Improve locale pattern in schema Now the locale pattern in the schema also supports POSIX. Note that POSIX will be only accepted if listed in the first place of the comma separated list. This commit fixes #570- Bump version: 9.11.28 → 9.11.29- Allow to choose dracut live module There is the standard dracut dmsquash-live module based on the device mapper technology and the kiwi-live module based on the overlayfs technology. The setup of the live iso structure in kiwi is compatible to both modules. Thus it makes sense to allow to choose the technology via the flags attribute Please note both modules supports a different set of live features. This Fixes #568- Bump version: 9.11.27 → 9.11.28- Fixed ec2 and azure test builds cryptconfig is no longer provided- Bump version: 9.11.26 → 9.11.27- Apply target permissions only if target dir exists- Bump version: 9.11.25 → 9.11.26- Fixed use of stat result in os.chmod oct method returns a string representation which was mistakenly used in a subsequent os.chmod call. This Fixes #564- Fixed tox doc target Correctly include schema pictures after travis-sphinx build- Bump version: 9.11.24 → 9.11.25- Update failsafe kernel option list Delete obsolete parameters and make sure a failsafe boot does boot into runlevel 3. This Fixes #554- Apply xslt validation on boot images- Do not match comments and PIs in XSLT templates I wanted to add a simple vim modeline to my XML description: This made kiwi consume insane amounts of memory during the XSLT transform step. While this may be a bug in my version of lxml, we do not transform comments on processing instructions in the conversion templates, so the easiest solution is not to match them. Signed-off-by: Michal Marek - Make sure toplevel target dir keeps permissions When syncing data via rsync we make sure the toplevel target directory the data gets synced to does not change it's origin permissions. This Fixes #557- Rebuild schema documentation- Fixed dependencies for dracut-kiwi-lib Adapt package names for gdisk/gptfdisk and btrfs-progs/btrfsprogs Install and require fdasd only on s390 architecture Delete fbiterm requirement since the project seems unmaintained and the use of the framebuffer terminal is an option in the code but not mandatory. This Fixes #559- add missing deps for docker builds. Moving kiwi-image:* provides to -requires package- Update text per review- Fix and cleanup tox setup Along with the cleanup of the tox setup also the workaround using an older version of the py module has been fixed- Fixed travis-sphinx call syntax- Update dropped feature list Legacy kiwi's oem recovery feature will not be ported due to technologes like ReaR, snapper, btrfs and due to the container, cloud and public cloud orientation of OS images- Implementation of dracut kiwi-dump module Provide the capabilities of the oem install code as dracut module. The implementation covers the result of the installiso="true" configuration. Installation from remote sources still needs to be done and will follow in an extra pull request. This addresses Issue #576- Bump version: 9.11.23 → 9.11.24- Fixed URL to semver.org in development guide- Bump version: 9.11.22 → 9.11.23- Fixed module setup for dracut-kiwi-lib lsblk tool used in code but missing in dependencies- Fixed test-image-azure build test azurectl does not resolve because of missing AppScheduler but for the integration test image we also don't need azurectl Thus it was just deleted from the list- Fixed test-image-azure build test pam-modules package doesn't exist anymore- Bump version: 9.11.21 → 9.11.22- Fixed typo in spec file The use of the suse_version macro from the last change introduced a syntax error which caused the package build to fail in obs- Bump version: 9.11.20 → 9.11.21- package: Prepare for Tumbleweed moving to suse_version 1550- Bump version: 9.11.19 → 9.11.20- Only add package manager on image package requests (#550) If an image description only contains package requests from a bootstrap section but no image packages, it's not required to install a package manager package into the system- Add device-mapper requirement for dracut-kiwi-live- Post build constraint validation refactored- Bump version: 9.11.18 → 9.11.19- Update gfxboot.cfg for iso images Don't move down one menu entry the first time a F-key is used This Fixes bsc#1068790- Adding quotes to ensure '%_dbpath' is treated as string- Add max size post build command This commit includes a post build constraint validation into the Result class. With this commit any file included to the result tuple is verified not to exceed the maximum size configured into the runtime configuration file config.yml. Fixes #468- Fixed ec2 integration test requirements for unneeded crash package broken- Fixed ec2 integration test nothing provides pam-modules- Removes the hardcoded path of the rpm database With this commit the rpmdb path is evaluated from the %_dbpath macro instead of being hardcoded. Fixes #537- Bump version: 9.11.17 → 9.11.18- Added runtime check for dracut-kiwi-oem-repart OEM images if configured to use dracut as initrd system requires the KIWI provided dracut-kiwi-oem-repart module- Fixup py vs. pytest-cov version incompatibility- Bump version: 9.11.16 → 9.11.17- Delete atftp from SLE15 boot descriptions atftp will not be part of SLE15 per fate#323633. This Fixes #543- Fixed blocksize setup in losetup The -L option was used to set the blocksize value for losetup However there is an option name clash between suse util-linux and upstream which now leads to the problem that option -L has changed its meaning and actually means --nooverlap which completely breaks the call in kiwi. This patch changes the call to use the long form --logical-blocksize. This Fixes bsc#1066873- Code cleaning and enhancing variables names- Use usr/lib/rpm if present instead of var/lib/rpm With this commit OEM recovery tries to backup usr/lib/rpm if present, if the directory is not present it tries to backup the old default configuration, var/lib/rpm.- Extend checkmedia runtime check In addition to the correct architecture the check also includes the lookup of the required tagmedia tool to be present on the building host. This Fixes #538- Remove hardcoded any /var/lib/rpm path This commit changes any /var/lib/rpm reference to the call 'rpm -E %_dbpath' which returns the path of the rpmdb which has been recently updated to a different location in recent rpm versions. Now the rpmdb path is determined dynamically. Fixes #537- Adding a s390 oem test image- kiwi-hooks should be packed in tar Remote OBS source service is no capable of packaing a folder into a tar.- Include arm build test- Adding test image descriptions This commit adds the image descriptions used to test KIWI within the Open Build Service.- Add support for apt repository priorities Apt handles repository priorities in a preferences file per repository and calls that pin-priorities. The implementation here sets the configured priority for all packages of the given repository- Add missing hooks to the other architectures- Add pre/post mount hook for oem- Clarify how strip works- Add more OEM hooks- updated contributing link- s/42.1/42.3/- Bump version: 9.11.15 → 9.11.16- Fixed validation of isohybrid warnings The list of warning messages is evaluated line by line and those not matching the ignore warnings list are treated as errors. However if an empty line exists it did not match the ignore warnings list but is also not an error. This patch makes sure only non empty warning information has an effect- Bump version: 9.11.14 → 9.11.15- Do not require cracklib-dict-full in boot images- Bump version: 9.11.13 → 9.11.14- Cleanup SLE12 boot image descriptions- Bump version: 9.11.12 → 9.11.13- Cleanup SLE boot image descriptions Don't use packages which does not exist on SLE, Fixes #523- Improve coding style to make flake8 happy This commit includes the exact Exception class that the 'except' statement catches. According to the new flake8 3.5.0 version it should be explicit rather than implicit.- Add OCI reference in skopeo copy call and umoci config call Skopeo, since v1.24, does no longer assume 'latest' as the default tag/reference and requires explicit tag or reference in skopeo call. In KIWI the default was only used to import the base rootfs, with this commit the imported container is tagged as 'base_layer'. The current patch works for all skopeo versions.- Update hooks documentation- Bump version: 9.11.11 → 9.11.12- Add more hooks for oemboot This follows netboot behavior- Fix vmdk descriptor file This commit fixes the descriptor file of the vmdk images. Before this commit the descriptior file was appended at the end of the image instead of overwritting the current one at the very beginning. Fixes bsc#1050665- Bump version: 9.11.10 → 9.11.11- Follow up fix for isohybrid error handling Allow to handle multiple messages from isohybrid as warnings. Only if the list of messages still contains information after all non error conditions had been checked out, an exception is thrown- Bump version: 9.11.9 → 9.11.10- Cleanup boot descriptions The still existing kiwi boot descriptions contained wrong information about no longer existing packages and many other obsolete information.- Bump version: 9.11.8 → 9.11.9- Prefer image packages section for bootincludes If a package is marked bootinclude prefer section in the target XML as primary target and only if no such section exists put the package in the section- Keep NVMe drivers in the initrd Support systems with the root filesystem on a NVMe device- Bump version: 9.11.7 → 9.11.8- Changed permissions of /srv/tftpboot to be readable (bsc#940608)- Bump version: 9.11.6 → 9.11.7- Also handle multiple error conditions- Allow to ignore certain isohybrid warnings kiwi treates warning from isohybrid as fatal errors becuase in most cases they are fatal. However some of them are kind of historical and should be ignored like the one described here: http://www.syslinux.org/archives/2015-March/023306.html- Bump version: 9.11.5 → 9.11.6- Make sure xz options are used with pxe tarball The tar command used in the pxe builder did not utilize threading and/or the xz options provided by an optional kiwi config file. This Fixes #507- Move depmod into baseUpdateModuleDependencies Kernel module dependencies should be resolved after kiwi has called all the stripping functions and not as part of the baseCreateCommonKernelFile which runs before. This Fixes #508- Fixed order of volume mount list re-order mount_list by mountpoint hierarchy. This is needed because the handling of the fullsize volume and all other volumes is outside of the canonical order. If the fullsize volume forms a nested structure together with another volume the volume mount list must be re-ordered to avoid mounting the volumes in the wrong order- Update issue template- Bump version: 9.11.4 → 9.11.5- Rebuild schema documentation- Show results in a dialog- Improve display of runMediaCheck results The splash screen should be switched off in order to let the user see the mediacheck results as well as a delay timeout before the boot continues or stops is useful- Call plymouth default theme setup in build command Make sure plymouth-set-default-theme is called as part of the system build command and not only as part of the system prepare command- Fixed package requires for dracut-kiwi-live On Fedora/RHEL cdrkit is only a source package building other packages. The package dracut-kiwi-live really needs is genisoimage- Added dracut kiwi oem module and library A new dracut module kiwi-repart used to be the successor of the custom kiwi oemboot code to repartition the disk has been added. Along with the module a dracut library kiwi-lib will also be delivered.- Fix trailing pipe character in .packages file In addition make sure the field layout is consistent across the .packages files no matter which package manager was used to create the information. This Fixes #501- Bump version: 9.11.3 → 9.11.4- Update documentation Link to the obs overview page to show build test results- Added Fedora integration test build to obs status- Limit the characters set for volid attribute This commit fixes #493- Revert "Fixed package requires" This reverts commit a8d50a593911725965e09b0e8c2f3b9bc742202b.- Fixed package requires On Fedora xattr is provided by python[3]-pyxattr- kiwi-boot-requires only required for suse(obs)- Update project intro page- Update project intro layout- Update project intro page- Bump version: 9.11.2 → 9.11.3- Added disk format="vhdx" support Support dynamic VHDX (gen2) image format for Hyper-V. This Fixes #490- Added additional required attr schematron rule The new rule allows to check for required attributes for a specific image type and is used for the filesystem attribute which is required for the image type oem, vmx and pxe. This Fixes #476- Bump version: 9.11.1 → 9.11.2- Rebuild online schema documentation- Bump version: 9.11.0 → 9.11.1- Fixed kernelList function The kernelList function searches for the installed kernels and applies the corresponding initrd name. The information the method provides is used in case of a custom initrd which should be used instead of the result of dracut. When requesting the use of the kiwi firsboot initrd also in the system via the element, the information from the list is used to correctly link the kiwi initrd named initrd.vmx to the expected name of the system as dracut would create it. The creation of the list was broken which lead to an empty list and the after effect that the system was not able to reboot. This Fixes #483- Update oemboot/rhel-07.0 due to isolinux changes With the move of the isolinux setup operation into the python code and the deletion of the old code from the images.sh scripts it's required to keep syslinux in the boot image otherwise the builder can't find it when explicitly deleted before the isolinux setup- Update device node names for devmapper nodes Partition devices created by the device mapper could use the _part or the -part naming schema. This patch allows for both variants and Fixes #480- Added e2fsprogs to s390/netboot During bootup of a diskful netclient when it comes to e2 filesystem operations the tools were missing. Fixes #479- Rename source label This commit renames the source label to a more explicit name. This commit also relates to bsc#1055542 and fixes #473- Add mediacheck handler for live iso This fixes bsc#1049304- Added live iso integration test build to obs status- Bump version: 9.10.6 → 9.11.0- Delete atftp from boot descriptions In SLE15 / Leap15 atftp has been dropped. This Fixes bsc#1056951- Deleted Leap 42.1 JeOS Leap 42.3 has been released- Fixed list of gfxboot modules Bad bug, missing comma caused the list to be interpreted differently by python which screwed up some list items- Delete obsolete suseGFXBoot kiwi boot code The code has been moved into the python source at bootloader/config/isolinux.py- Delete vmxboot descriptions vmx boot is now fully integrated with dracut- Make get_initrd_system a state method Make sure the default initrd_system is set to dracut for the vmx image type and to kiwi if no initrd_system is specified. This allows to simplify other code parts as we can trust there is a value set- Update schematron rules for boot and initrd_system The boot and initrd_system attributes are no longer used by the vmx image type and are therefore not allowed anymore.- Added runtime checks for overlay disk images Checking if the dracut-kiwi-overlay package will be installed as part of the build and also for the supported EFI setup since the EFI secure boot setup would try to perform changes on the filesystem which is a readonly squashfs, this is not supported- Fix isohybrid call isohybrid errors printed on stderr were not treated as fatal but should be treated as such. In addition isohybrid should distinguish for efi setup according to the efi setup of the image itself- Refactor _get_source and _get_source_label methods- Support overlay disk images via dracut Using the kiwi-overlay module to boot up systems configured with the overlayroot="true" attribute in the system image XML configuration. Fixes #65- Added kiwi-overlay dracut module and package Package dracut-kiwi-overlay providing kiwi-overlay dracut module- update README Use normal style dash character- update README- Delete isoboot descriptions Live ISO boot is now fully integrated with dracut- Added runtime check for dracut module on live iso Live ISO images uses a dracut initrd to boot and requires the KIWI provided kiwi-live dracut module to be installed at the time dracut is called. Thus this runtime check examines if the required package is part of the package list in the image description- Include the source label in container images This commit fixes bsc#1055542, it includes the DISTURL parameter as a label into the container metadata when the build happens inside the buildservice. The new label included is named: * org.opencontainers.image.source in line with the current OCI annotations schema.- Added kiwi-live dracut module and package Package dracut-kiwi-live providing kiwi-live dracut module- Update schematron rule for boot attribute The boot attribute is no longer used by the iso image type and is therefore not allowed anymore- Update allowed values for iso image attribute With the move to dracut only the options implemented for the kiwi-live dracut module are available- Move to dracut for live ISO images Instead of the kiwi isoboot layout the live layout has been changed to follow the rules of the live system support offered by dracut. The initrd used to boot up the system is now a dracut generated initrd and can be customized via the 'flags' attribute in the kiwi XML description. In order to meet the kiwi live requirements a custom dracut module called kiwi-live is provided along with the changes in kiwi. This Fixes #470- Bump version: 9.10.5 → 9.10.6- Added boot descriptions for SLE15 on ppc- Added boot descriptions for SLE15 on s390- Bump version: 9.10.4 → 9.10.5- Added handling of formatoptions attribute Custom disk format options passed in the formatoptions attribute were not handled. In addition options with a value passed to qemu were handled in the wrong way. This commit addresses both problems and Fixes #463- s/sles/openSUSE/- copy SLE15 files for Leap 15- add Leap 15 macros- leap_version is deprecated. use sle_version+is_openuse instead- Added azure integration test build to obs status- Bump version: 9.10.3 → 9.10.4- Fixed resize if all free volume in oemboot/repart- Fix space calculation for lvm volumes It is required to take the other configured volumes into account in order to solve the problem of nested volumes. The size of e.g the root volume must be reduced by the size other volumes inside of the root volume needs. This is especially required if the root volume is not the fullsize volume- Fixed setup.py requirements record PyYAML is required by KIWI- Add description of Overlay Files to Terminology- Bump version: 9.10.2 → 9.10.3- Export *.verified also for images based on apt-get This commit includes support in system/setup.py to run a package verification also for images based in apt-get package-manger Related to #457- Include .packages file for apt-get based images This commit renames export_rpm_packages_list method to export_packages_list and it includes support for listing debian packages if apt-get package manager is used. Fixes #457- Fix calculation of needed disk space for oem types The calculation did not include the minimum volume requirements if a volume setup exists- Update expected compatible major version every version of umoci/skopeo <= major v1.x.x is expected to work with the implementation used in kiwi- Extend scope of check_docker_tool_chain_installed The runtime check only checks for the presence of the docker tools umoci and skopeo but as we are expecting incompatible api changes in the next major version release the check has been extended to look at the major versions of the installed tools as well. Fixes #454- Fixup schema version in chapter topic- Bump version: 9.10.1 → 9.10.2- Fixup XSL stylesheet v6.7 Apply templates matching all processing instructions in order to match
text
- Rebuild schema documentation- Remove xml_state.get_build_type_mediacheck method The method was not needed since a direct call to xml_state.build_type.get_mediacheck was already producing an equivalent output (True, False or None), where 'None' can be easily treated in the same way as False.- Add runtimecheck for mediacheck attribute on non x86 hosts This commit rearranges some method and variable names and includes a new runtimecheck to ensure the mediacheck attribute is not set when building non x86 images. Patch related to bsc#1049304- Auto update image descriptions to schema v6.7- Update schema to version v6.7 Cleanup of the schema, delete obsolete and unused attributes and sections. Details of the change can be found in the conversion stylesheet convert66to67.xsl- Add XSL stylesheet to convert from v6.6 to v6.7 Delete the following obsolete and unhandled attributes and sections * * * * * * * * * * * - Adding mediacheck menu entry for liveCDs This commit adds the checkiso attribute in type tag, only available for iso image types. Checkiso is boolean that determines the presence of0 a Mediacheck menu entry or not in the bootloader. This patch is related to bsc#1049304- Fixup encoding handling for profile file If an element like displayname or oem-boot-title contains characters outside of the ascii table this causes trouble when kiwi writes out the profile file and the code is called through python2. The reason here is that the default encoding on write() (and other methods) is set to ascii in python2 and when it receives unicode characters outside of the ascii spec a UnicodeEncodeError is thrown. Now all of kiwi is using Unicode which means this does not produce a problem when calling the code through python3 because the default encoding is utf-8 there. This patch introduces a method which allows to change python's default encoding and calls it at the code point where we write the profile because we got unicode and we want to write unicode in any case. This fixes at least one situation for python2-kiwi to allow the use of non ascii characters in the XML setup. If other places will be found the same approach should allow to fix it for python2- Fix RHEL spec check- Bump version: 9.10.0 → 9.10.1- Add LVM overhead for lvm based images LVM itself requires metadata stored in the metadata block kiwi did not take a size value for this data into account- Use dmsetup to cleanup device maps Instead of the broken kpartx -d we use dmsetup remove directly on the maps kiwi has created- Evaluate file strip before kernel strip Information from the optional section was handled as part of the suseStripInitrd method which is called after suseStripKernel. However if a request to delete a driver file is part of the above mentioned strip section the checks for the driver dependency and also for potential superfluous firmware is not applied. Thus the evaluation of the section happens earlier in the suseStripKernel method. Fixes #442- Added ec2 integration test build to obs status- Added Xen setup runtime validation Added check_xen_uniquely_setup_as_server_or_guest runtime check to check for a unique dom0 or domU guest setup Fixes #429- Rebuild schema documentation- Make vmdisk optional for the machine setup The guest machine information might not require information about the disk. Issue #429- Fix some spelling- Fix some spelling- Use the same option type (long form) for clarity- Use kernel compatible XZ options for kiwi initrd The kernel requires specific XZ options for the initrd in order to read the compressed data. This values should not be configurable by the user and are set to the same options as used by dracut now. Fixes #435- Change default XZ compression options Use all cpu cores by default. Fixes #433- Update spec file provides for schema version- Bump version: 9.9.5 → 9.10.0- fixed: fdupes is also available on Fedora- changed: simplify diff to orig spec file template- added: support for Fedora 25 / 26, fixed support for CentOS 7 in the spec file- Include default container name This commit includes a default container name for KIWI container images. This makes possible to create OCI and Docker containers without forcing the user to include a section in the description file.- Refactor code which deals with Xen Provide two methods is_xen_guest and is_xen_server which are used instead of the former machine domain and firmware processing. Issue #429- Apply schema v6.6 stylesheet to XML descriptions Updates all XML descriptions to latest schema version and also includes adaptions to the test XML descriptions for testing the new Xen guest and server setup- Fixup shell test condition Variables used in shell conditions should be quoted- Update schema to version 6.6 * Deleted domain attribute from machine section * Added xen_server attribute to specify a type to be a Xen dom0 * Added xen_loader attribute in machine section to specify the target guest loader this image is expected to become loaded with- Added schema 6.5 to 6.6 conversion Delete the Xen domain attribute from the machine section and introduce a new xen_server attribute which is set to true for any machine section with a Xen dom0 configuration- Added Makefile target obs_test_status Call make obs_test_status and get an overview about the current integration test builds and their status- Bump version: 9.9.4 → 9.9.5- Added s390 tumbleweed boot descriptions- Bump version: 9.9.3 → 9.9.4- This commit fixed root_init when running inside the buildservice This commit fixes regression bug introduced in #422- Exclude kiwi files from images This commit from one hand includes a get_exclude_list_for_root_data_sync method in Defaults which returns a list of the files used by KIWI that should not be part of the resulting image. From the other hand makes use of the exclusion default list in live, archive and container images, it fixes #423.- Bump version: 9.9.2 → 9.9.3- Revert "Include .buildenv file inside the buildroot" This reverts commit d30bf4a19ff11f7132c9a31528ddfa103e01b299. This also includes the get_buildservice_env_name method in Defaults to centralize '.buildenv' occurrences.- Fixup helper/kiwi-boot-packages Make sure the code also works in python2- Search for python interpreter in path Allow more flexible path spec to find python interpreter- More comfort in calling with compat arguments In addition to the 'kiwi --compat -- ...' style we also support calling the kiwi compat mode as a service via 'kiwi compat ...' The preferred way of calling kiwi with legacy options is via the new compat service. Thus the documentation also changed to no longer mention the --compat option but it still exists for compatibility reasons. Fixes #407- Allow use of more fine grain ignore repos options The meaning of the --ignore-repos option has changed back to ignore all configured repositories. A new option named --ignore-repos-used-for-build has been added which allows to ignore all except imageonly repositories. The command manual pages has been changed to document the options. This Fixes #410- Cleanup use of python interpreter invocation Prevent strict call of a specific version of the python interpreter. All code has been written to work with py2 and py3 thus the venv environment setup should decide what version a call of python is. Fixes #424- Make sure the KIWI buildroot has the /.buildenv file This commit makes sure the that the KIWI build root will always contain the /.buildenv file. Fixes #421- Include .buildenv file inside the buildroot With this patch if KIWI is running inside the buildservice the /.buildenv file is copied from the build environment to the build root of KIWI. At installation time some packages test the existance of this file in order to know if they are being installed inside the buildservice or not. Fixes #421- Fix url validation in buildservice (#420) This patch changes the remote URL validation strategy when running inside the build service. By design, inside the build service build environment connections to the outside world are not allowed, thus any validation attempting to do that will fail. With this patch, when running inside the build service, KIWI will not try to test if any download URL is reachable. Fixes #418- Bump version: 9.9.1 → 9.9.2- Refactor Uri is_public method Don't call a nested is_remote from is_public, instead the method was rewritten to explicitly cover the responsibility to check under which conditions we treat an uri as publicly available or not- Fixed Uri is_remote method If called inside of the buildservice the obs uri type is not a remote uri because the translation ends in a local path- Bump version: 9.9.0 → 9.9.1- Fixup setup and package requirements python requests is needed due to latest changes- Bump version: 9.8.1 → 9.9.0- Update doc string for Uri::translate method The method was missing doc info about the check_build_environment parameter and the return type of the method- Delete obsolete --obs-repo-internal switch- Create obs project download link like obs does it In reference to _download_repository_link.html.erb from https://github.com/openSUSE/open-build-service, we use the same mechanism to create the download link from an obs:// project definition- Fixup unit test for help command- Follow up fix for man page move make sure kiwi calls the man page from the now changed section level 8- Move man pages to correct section The man pages were incorrectly written to section 2, which is for syscalls. Since KIWI is an administrator's tool, it has been moved to section 8.- Make sure system image strip sections are applied in boot image This commit calls copy_strip_sections from the system image xml to the boot image xml. This is needed to make sure strip sections are applied into the boot image. Fixes #414- Refactor handling of obs repositories * Delete kiwi internal ibs: and suse: types * Delete handling for --obs-repo-internal and provide a compatibility message to the user * Buildservice download server url and scope can be configured via ~/.config/kiwi/config.yml * Translate obs urls to http in import_repositories_marked_as_imageinclude * Use new Uri.is_public method in renamed runtime check check_image_include_repos_publicly_resolvable- Fix a code block in workflow.rst Fixes #412- Fix xml_state test- Accept an empty string as a repo priority xml_parse code is autogenerated, thus no changes there should be considered. When adding a repository from the command line it can happen that the repository priority is mapped to an empty instead to a None valuei, when the priority is not specifically set. xml_parse will only support a parseable string to int or a None value as the default option, so, if an empty string is used, it throws an exception. With the current patch anything that cannot be casted to an int, will be considered as None. Fixes #408- Move check_image_include_repos_http_resolvable Call the check_image_include_repos_http_resolvable runtime check after the check and setup for the obs runtime environment. In case of obs uri types and a kiwi build outside of the buildservice those source locations could be translated into a public url and thus allow for use with the imageinclude attribute. However building inside of the buildservice maps those to a local path which is private to the used worked instance. In such a case the obs uri type is translated into a suse uri type and running the check_image_include_repos_http_resolvable after that translation will run from the translated and thus correct source uri information- Bump version: 9.8.0 → 9.8.1- Add unit tests for compat mode- Do not translate obs scheme to suse scheme for imageonly repos Fixes #404- Fixed compat setup for upgrade command Value for --root option was added after other options- Translate obs to suse derived from image uris This commit performs a translation from obs scheme to suse scheme for derived from image uris when kiwi is running in a buildservice worker. Fixes #399- Bump version: 9.7.4 → 9.8.0- Fix content layout of zypper credentials file Missing line break for entries in zypper credentials file- Allow imageinclude repositories inside the build service Fixes #397- Fixed doc_travis tox target using shell syntax requires calling a shell process- Allow imageinclude in add|set-repo commandline The --set-repo and --add-repo commandline options now allows additionally to specify a true|false value to indicate if the repository should be part of the system image repository setup or not. This Fixes #398- Fixed travis whitelist_externals test command is used in target- Fixed travis whitelist_externals commands cp and/or true are used in target- Fixup travis doc deployment Custom diagram images needs to be deployed manually- Update schema documentation- Delete unused data from schema docs processing- Flag --ignore-repos do not ignore imageonly repos This commit fixes #395, with it, using --ignore-repos, does not delete imageonly repositories from the description file. This way imageonly is prepared to be used in the buildservice even when using the 'obsrepositories:/' reference style.- Build schema documentation with Oxygen Given there is a valid Oxygen license owned by the company as described in https://www.oxygenxml.com/oxygen_scripting.html the schema documentation can be created using Oxygen. This commit allows building the schema docs with alternative doc builders and in case of Oxygen would change the way the schema docs are generated in the following way: 1. Install Oxygen and setup the license to activate the tool 2. Setup the KIWI development shell environment to export the schema_tool variable to point to the schemaDocumentation.sh script provided by the Oxygen installation export oxygen_tool=/path/to/Oxygen/schemaDocumentation.sh 3. In any case of a schema change manually call: tox -e schema This step was done before as part of the tox doc target but can't be done automatically because it would require a correctly licensed Oxygen installation in the travis environment. Thus the result data has to be part of the pull request 4. Build the documentation and review the result tox -e doc 5. Create the pull request- Update schema docstring for oem-systemsize- Bump version: 9.7.3 → 9.7.4- Fixed setup_plymouth_splash The schema generated get_bootsplash_theme() method returns a list because it's section content. The return value of the method was used as a string which caused a runtime error- Added creation of zsync control file in bundler If a --zsync_source url is provided to the bundler call a zsync control file is created for the compressed parts of the bundle. This Fixes #364- Add package manager in image info task solving process This commit includes the package manager package in the packages list to be solved in image info task.- Bump version: 9.7.2 → 9.7.3- Fixed gce disk format The order of the files in the tarball is important. The first entry must be the manifest.json followed by disk.raw- Make sure CliTask instance reads the config file Any instance of a CliTask has to read the runtime config file if present- Add generic access for attributes The layout of the yaml runtime config is based on an element topic containing a list of attributes. For now only the xz topic with its options attribute is in use but for the future more elements might be supported which can use the same access method- Setup plymouth splash in the image prepare process In case the plymouth-set-default-theme tool can be found in the image root system and a bootsplash theme is configured in the XML description, the tool is used to setup the theme configuration This Fixes #366- Include patternType information to resolv packages in image info task This commit includes ingore_recommended flag in the Sat.solve method. This way if the description file states to include only required packages (without recommendations) it is respected and taken into account to resolv the packages list. Fixes #381- Added custom xz option handling for ArchiveTar Allow to pass custom xz options for create_xz_compressed method. Issue #373- Make sure options are returned as list- Added custom xz option handling for Compress Allow to pass custom options for xz method. Issue #373- Activate reading of runtime config in tasks Implement reading of runtime configuration file in base commandline class. Issue #373- Cleanup doc string of base task class- Add runtime config man page section Describe the contents of the KIWI runtime config file- Added RuntimeConfig class An instance of RuntimeConfig reads in ~/.config/kiwi/config.yml if present and provides access methods to the expected information of the config file- Added PyYAML requirement to package and venv The KIWI config file is yaml based and thus we need support for reading the file in KIWI- Implement custom argument handling for xz_options Evaluate and hand over custom_args processing for the xz_options argument to all classes which performs xz compression tasks. This Fixes #373- Read xz options from runtime config Read xz options from the kiwi runtime configuration file and pass along the information to the commands which performs compression tasks- Fixed alpha order of options in build command- Update custom_args doc for DiskBuilder class- Fixup class docstrings The attribute list should provide information about the construction of an object of this class. Some fields were missing or superfluous- Consider only repositories used for build in image info This commit makes sure that the repositories marked with imageonly flag are not included in the packages solve procedure. This is related to #362- Removing has_repositories_marked_as_imageinclude method With the current repository management this method is not required anymore, since the setup repositories method does not modify the image if no repositories are present. It is related to #305 and #191- Fixed typo in isoboot/fedora-25.0 It does not really matter because the package manager setup is inherited from the system image XML configuration to the boot image, but for consistency it should be correct in the isoboot description too- Added isoboot/fedora-25.0 boot description- Change to more explicit method names- Cleanup use of suseGFXBoot regarding grub The shell method suseGFXBoot from the config/functions contains code which should be better moved to the python code base dealing with the bootloader configuration. In this commit all grub parts of it has been moved to the BootLoaderConfigGrub2 class- Cleanup isoboot descriptions There is no need to install bootloader packages to the initrd, all information regarding the bootloader setup is taken from the system root directory- Fixup iso image builder(s) lookup path Don't lookup bootloader required files in the boot image root directory. Those needs to be looked up in the system image root directory- Refactor boot image factory Make sure the root directory of the base image is always accessible by any boot image type for consistency. In addition introduce a post_init method which explicitly setup the boot image root directory as needed for the selected boot image type and document it as such- Include imageonly attribute for repositories This commit adds imageonly attribute support for the repository element. imageonly is a boolean attribute that if true indicates that the repository is no used for the build but needs to be configured for the resulting image. Fixes #362- Fixup use of syslinux v6 modules There is support for library loading in syslinux modules which requires to provide the lib modules when available. This Fixes #351- Bump version: 9.7.1 → 9.7.2- Update rpm-check-signatures documentation- Fix default location repository config file for apt This commit fixes the apt config file management for default locations. The template subsitution always needs to be executed providing all the substitution parameters, as it does not make any kind of default assumption when parameters are missing. Fixes #370- Revert "Refactor detection code for grub directory name" The former detection of the grub directory name in boot was correct whereas the new code introduced a problem. This reverts commit b3e4b871d52da2b5ab579d592ccc7ae39de75339. This Fixes #371- Include repository_gpgcheck and package_gpgcheck documentation- Improve package/repository signature checking setup This commit adds repository_gpgcheck and package_gpgcheck attributes to the repository tag in schema. With this change each repository can be configured individualy to enable repository signatures check and/or enable signature package check. The configuration is done at repository level, thus it is not conflicting with the wide package manager configuration flag . Fixes #358- Update PXE building chapter Redesign PXE building chapter to follow style guide. Thanks to Thomas Schraitle for review and additional contributions to this topic. This Fixes #323- Update chapter due to review- Update OEM building chapter Redesign building chapter to follow style guide. Issue #323- Bump version: 9.7.0 → 9.7.1- Refactor detection code for grub directory name The method get_grub_boot_directory_name was based on checking for the name of the grub2 install tool, but this is not always reliable because the name of the grub2 install tool has no direct connection to the grub2 path. The method changes in a way that it checks for the presence of the grub2 installation directory which is /usr/lib/grub or /usr/lib/grub2. Depending on the result the location in boot is /boot/grub or /boot/grub2 which seems to be a more reliable check- Fixup detection of grub directory name In order to put grub data to boot/grub2 or boot/grub a check for the grub2-tool vs. grub-tool name is performed. This requires access to the image root directory on a file basis which is not always applicable. When setting up the grub bootloader for e.g EFI boot on an iso image the rootfs can't be directly accessed because the iso image contains the rootfs in a compressed format. This commit refactors the check to be generic for all image types- Fixup EFI setup for iso images The embedded efi fat image on the iso filesystem must follow the same rules compared to the setup on a disk- Fix docstring and apply ReST markup Avoids the the following warning: Definition list ends without a blank line; unexpected unindent. Docstring contains ReST markup from http://www.sphinx-doc.org/en/stable/domains.html#cross-referencing-python-objects- Some corrections for Building Docker image docs- Rearrange Docker docs This commit rearranges the Docker image builds documentation in order to match the criteria exposed in #323- Bump version: 9.6.2 → 9.7.0- Make sure all required yum repo options are set enabled and gpgcheck parameters has to be set for any configured yum repository- Fixup repository setup for yum Yum cannot handle spaces between the key and the value. This patch provides a method to tell ConfigParser to use no spaces for the '=' delimiter and thus Fixes #357- Reactivate warnings report in pytest- Fixup kernel name lookup If multiple abi compatible kernel module packages are installed the kernel version of the boot kernel could be different from the kernel module versions. In order to find the boot kernel all kernel versions found must be checked. Fixes #355- Fix/workaround invalid xsd pattern translation The data structures are auto generated by the generateDS tool which works nicely except for the arch-name xsd pattern used in the RelaxNG schema. For some reason the used regular expression is translated by generateDS into a python expression not matching the original expression from the schema. The result is an invalid python warning message after the schema has successfully validated the arch string. The problem has been reported to the generateDS developer. As long as their is no fix available in generateDS the following workaround in kiwi applies: The original xs:token pattern validation will be disabled on the generateDS level and applies only to the schema. This Fixes #347- Allow vendor specific grub config file location On e.g Fedora systems the EFI grub config file for secure boot systems is expected to be located in the vendor specific efi boot directory from where the shim loader gets loaded by the firmware- Some fine tune updates * Updated the docs for system_create command * Reverted dracut image initialization * Updated yum comment about repo_gpgcheck option * Updated variable name in disk builder * Typo correction- Include signing-key feature for boot images This commit extends the behavior of --signing-key options in order to import the provided key file into the boot image, in addition to the regular image root tree. Related to #342- Fix use of pre requires in spec file- Fixup working dir for editboot scripts editbootconfig and editbootinstall scripts needs to be called from within the correct directory to allow access to the written bootloader config files. For live images the working directory was set to the wrong place. This Fixes #353- remove duplicated code from dhclient setup IPADDR is assigned within dhclientImportInfo original patch by Dinar Valeev - Fix spelling of 'processor' https://bugzilla.opensuse.org/show_bug.cgi?id=957927- Use glob pattern to match shim modules- Fixed pre-req for kiwi-pxeboot subpackage the binaries groupadd and useradd used in the preinstall scriptlet and provided by the shadow package needs a pre requirement on shadow to make sure they exist when the package gets installed. Fixes (bsc#1040256)- Fix existing root check, fixes #349 This commit fixes the validation of an existing root directory for the command 'system build'. System build used to create the root directory before performing the root existance check, thus the check was always failing in any case. The root directory is created inside the RootInit class within the 'create' method. Fixes #349- Added fallback setup for grub secure boot The current implementation is based on the presence of the shim-install tool. This tool does not exist on all distributions. In case shim-install is not present a kiwi fallback solution applies. Fixes #337- Extend --signing-key to Apt package manager This commit extends support for --siging-key to the Apt package manager. However it has only been included for the chrooted operations, as current implementation of the bootstrap procedure does not provide signature check capabilities. Related to #342- Extend --signing-key option to Yum and Dnf This commit extends the --signing-key options support to Yum and Dnf package managers. In addition, signature check for repositories had to be disabled for Yum and Dnf, as kiwi unrelated issues were found while testing. Nevertheless, package signature checks are fully functional. Related to #342- Add --signing-key option This commit adds --signing-key option which sets a key file to import into the package manager trusted keys database. This commit adds this flag support only for zypper. Fixes #342- Don't print warning report The auto generated xml_parse.py uses the python warnings module The unit tests uses the coverage module in py.test to create a report. The latest py.test update now also creates a warnings report which is unwanted because some of the unit tests intentionally causes the creation of a warning as the expected result but we don't want to see that in a py.test warnings report. Therfore this patch switches off the creation of that warnings report- Update manual page of build command Add information for --allow-existing-root option- Fixup default behavior of build command The build command automatically used an existing root tree from a former build attempt. However this could cause an inconsistent image if the former build root was not based on the same image type setup. Thus it is better to allow this only if the --allow-existing-root option is specified along with the build command call- Fixed alpha sorting of options- Complete zypper cache cleanup also the raw and solv cache needs to be deleted- Update manual pages Add information and use case for --clear-cache option- Added --clear-cache option The system prepare and build commands now provides the option --clear-cache which deletes all cache data associated with the repositories to build the image. This Fixes #341- Let dracut create a compressed initrd dracut was called in a way to create an uncompressed initrd archive and kiwi later runs the xz compression on it. That way the default compression parameters used by dracut get lost. Fixes #335- Improve rpm-check-signatures support This commit ensures the signatures are checked for both: the repository and the rpm package. It applies for zypper, dnf and yum package managers.- Fixup boot-load-size for efi loader in iso Pass the real boot-load-size of the used loader as number of 512byte blocks to the iso creation call. Related to (bsc#939456)- Update documentation to meet review results- Added GCE image primary setup information- Added Azure image primary setup information- Added EC2 image primary setup information- Map partition ID's from sgdisk to lowercase- rework building virtual disk image chapter Adapt to style as used in the live iso chapter and add references to low level topics regarding the setup of the image to work in the public cloud. Related to #323- Get the first two characters of the gdisk partition code output According to the gdisk documentation the gdisk maps the partitions IDs to the MBR codes, but they are multiplied by 0x0100 in hexa. Meaning 0x8300 code is equivalent to 0x83 in MBR. This commit only considers the first two characters of the sgdisk partition code output. With this change the partition types are comparable, regardless of using MBR or GPT.- Fixes OEM deployments on a free partition, bnc#1039469 This commit updates the boot code for oem images. In case oem-partition-install flag was set, the boot code was not capable to find an appropriate partition due to not attaching properly the raw image as a loopback device. KIWI was calling 'losetup' command with wrong arguments. Fixes bnc#1039469- Bump version: 9.6.1 → 9.6.2- Use 'yum-deprecated' if it exists when using Yum On Fedora and Mageia systems, the Yum package manager binary is named 'yum-deprecated', and 'yum' redirects to DNF. This is a problem for being able to build images of Linux systems that use Yum as its package manager, like RHEL/CentOS 7. So, in order to ensure we use the right package manager, we check for the 'yum-deprecated' binary and use it if it exists.- Restructure low level topic (iso_to_usb) The low level topic references information from the base topic. In this case the name of the previously built image. I think we should provide information on each low level topic which references information from a base topic.- Handle rpm-check-signatures flag for each package manager This commit adds support for the rpm-check-signatures flag, which sets the package manager to verify or not each package signature. By default KIWI assumes no gpg checks are done.- Separate low-level topics (dumping) * Separate the high-level (building) from the low-level part (dumping) * Introduce a subsection ("Working with Images"); not sure, if this is useful under "Building Images" * Enhance with some (general) advise about booting from USB- Provide missing _hybrid_iso label- Fixup check_target_directory_not_in_shared_cache The runtime check compared the given target path if it starts with the cache directory /var/cache/kiwi. This however also matches for e.g /var/cache/kiwi-foo which would be a valid target directory. This patch changes the matcher in a way to really check if the target directory points to the same cache directory structure.- Set default dracut output format to match upstream- Added dracut output file format detection Unfortunately the dracut initrd output file format varies between the different Linux distributions. Tools like lsinitrd, and also grub2 rely on the initrd output file to be in that format. Thus when kiwi uses dracut the same file format should be used all over the place in order to stay compatible with what the distribution does. Fixes #325- Revised example for issue #323 * Add abstract (use `.. sidebar`, not sure if we should use it) * Collect all concept oriented text in the beginning * Introduce procedure and create steps * Remove lonely subsection and combine it with the procedure TODO: * Review * Decide, if `.. sidebar` is ok (or should we better use `.. topic`?) * Add additional, related information?- Bump version: 9.6.0 → 9.6.1- Update build docker images documentation This commit includes steps to install umoci and skopeo, descriptions for the configurable metadata in KIWI and some simple style fixes.- Fixed tox.ini doc target location of schema docs has changed, and we better disable the spell check as long as not all unknown technical terms are added to the wordlist.txt- Use correct service name variable- Refactor documentation layout and structure The current design of the documentation does not allow for continous improvement and development. It's missing a basic structure and concept for documenting step-by-step workflows and generic explanations.- Remove erroneous statement in request_package_exclusion() for Yum+DNF- Fixed markup in contributing chapter The headline of a subsection wrongly indicates a toplevel entry- Evaluate UNIONFS_CONFIG filesystem This commit makes sure the filesystem is parsed from the UNIONFS_CONFIG configuration variable when the PXE image is loaded to a block device. This commit fixes #316- Fixed GPL license text to match headers and spec source headers and spec file is pointing to GPL v3 but the license file was still at version 2- Add support for excluding packages when using DNF- Add support for excluding packages when using Yum- Fix comment about Zypper locks to reflect reality- Bump version: 9.5.0 → 9.6.0- Additional container commandline options Added --set-container-derived-from and --set-container-tag commandline options which allows to overwrite the data set in the XML configuration- Implement obsrepositories source on derived_from The following reference to a derived container: obsrepositories:/container#latest Will be translated into the following buildservice local path: /usr/src/packages/SOURCES/containers/_obsrepositories/container#latest- Implement obs source on derived_from The following reference to a derived container: obs:/project/repo/container#tag Will be translated into the following buildservice local path: /usr/src/packages/SOURCES/containers/project/repo/container#tag- Use urlparse to detect uri scheme The source location postfix can contain several different formats e.g :/, or :// or even just :, python's urlparse is able to cope with all that which allows to work with the url scheme base name and thus makes handling this code more robust- Bump version: 9.4.11 → 9.5.0- Include '--delete' in OCI images DataSync This commit includes #310 patch for OCI images. It also corrects the end of line format for kiwi/container/docker.py and test/unit/container_image_docker_test.py, so flake tests are all green.- Include --delete flag in DataSync for docker images This commit includes the --delete flag in order to synchronize the docker images. This is relevant for derived images where the new layer might not only add files, but also remove something from the base image. Fixes #309- Define correct default locations for sources-dir and preferences-dir In order to ensure that the defined repositories in the KIWI configuration are set to the correct places for installing into the image, the sources-dir and preferences-dir need to be redefined to point to the in-image location, as it is done for the other package managers.- Do not purge the repositories before inserting them There are no good reasons to be purging the repo directories, especially when it is common for some distributions (Red Hat/CentOS/Fedora, for example) to ship repository configuration as packages. Deleting them puts the package manager in the system into a weird state, so we want to avoid this.- Fix default reposdir path for Yum- Add support for OCI images This commit adds support for OCI images. Most of the docker related code is reused for OCI classes and Docker classes have been refactored so now they are a splecialization of the OCI classes. It is done this way since KIWI internally only uses OCI format to operate with containers, therefore docker images just differ from OCI images by the way they are packaged or unpackaged.- Add clear attribute for entrypoint and subcommand sections This commit adds the possibility of clearing asny subcommand or entrypoint. This is relevant for docker derived images, as they inherit the configuration and it might lead to some bad behavior.- Bump version: 9.4.10 → 9.4.11- Add require/recommend installation support for yum This commit adds support to install required only or required plus recommended packages using yum as the package manager.- Add support for required/recommended packages This commit enables support to install only required packages or install required plus recommended packages.- Include 'plusRecommended' management for dnf Add support to enable/disable installation of recommended packages for dnf package manager. With this commit 'plusRecommended' patternType triggers on installation of recommended packages, which is turned off by default.- Make sure debian repositories database is populated before install This commit includes an 'apt-get update' call before any 'apt-get install' command. This way the packages database is always ready, even if no bootstrap procedure has been executed.- Bump version: 9.4.9 → 9.4.10- Add warning logs for unkown base image URIs- Update spec template for SLE13->SLE15- Rename SLE13 to SLE15- Follow up fix for grub2 setup in live builder The live iso builder still used a fixed boot/grub2 path but due to the refactoring this path is now distro dependant and should be obtained dynamically- Cleanup use of bootloader path in boot code Instead of repeating the bootloader path only specify it once per setup path- Add method to setup installation of recommended packages With this commit package manager are always set to include only required packages or set to include required and recommended packages. This commit fixes #285- Bump version: 9.4.8 → 9.4.9- Update development and contribution chapter Fix some minor inconsistencies due to latest code changes with regards to py2 and py3 compatibility and also change the style of the chapter to be more straight forward for people who would like to contribute from scratch- Bypass bootstrap procedure if no bootstrap packages section This commit updates kiwi to bypass bootstrap procedure in case there is no bootstrap packages section. It also adds extra validation in root_bind.- Bump version: 9.4.7 → 9.4.8- Fixup grub2 template parameters The boot_directory_name parameters was missing for live and install image builds- Bump version: 9.4.6 → 9.4.7- Fixup grub2 bios module setup Only copy grub2 bios modules if the architecture supports it- Bump version: 9.4.5 → 9.4.6- Avoid GRUB_DISTRIBUTOR setup in etc/default/grub The GRUB_DISTRIBUTOR information can't be provided in a generic way for all distributions. The information should be either placed by a package post script (as done by most of the distributions) or by a custom kiwi config.sh or images.sh script. Fixes #286 Fixes (bsc#1032119)- Added support for unknown uri types for base image references This commits bypasses any URI check if the uri schema is unknown in RootImport class. This way the URI is bypassed to skopeo if it couldn't be translated to any known type. That enables referencing images with any URI supported by skopeo, i.e. DockerHub images.- Keep imported image in OCI format instead of docker Kiwi always uses OCI format for container manipulations, so it is easier to assume the image kept between prepare and create step is also in OCI format, this way less format convertions are needed.- Fixup bootloader menu title setup If the menu title is setup via the displayname attribute in the XML configuration, kiwi should not change this text by a prefix or any other style adaptions. Fixes #287 Fixes (bsc#1032118)- Fixup copy of array in boot code The filtered nic interface names are stored in an array and copied back into the original array. The copy of the array was semantically wrong- Fixup grub2 setup and tool calls Depending on the distribution the grub tools are either named grub2-tool or grub-tool. Additionally the grub configuration data is expected to live in boot/grub2 or boot/grub. This commit handles the tool calls and also the grub boot directory setup in a generic way- Include SLE13 boot descriptions for x86_64 and arm This commit includes boot descriptions for SLE13, the descriptions are based on leap 42.3.- Delete obsolete ec2 disk format The ec2 value in the format attribute is deprecated and no longer supported It remained in the schema for a while and has now reached EOL- Bump version: 9.4.4 → 9.4.5- Fixup theme setup in boot Make sure grub theme data is populated in the boot directory. Checking only for the presence of the theme directory is not enough. If the theme directory in boot does not contain the requested theme it must be provided including a warning if the theme data could not be found in the system- Do not change the API in an incompatible way- Use request_package_exclusion method in prepare- Refactor method name of package manager interface The request_package_lock was renamed into request_package_exclusion because that is the goal, to actually exclude(skip) a package. From an implementation point of view this is done to set a lock in the zypper case. However other package managers might do it differently. The interface should stay consistent with regards to the user goal and not with the package manager specific implementation. This Fixes #248- Added element Allow network interface names to be filtered by the given regular expression. The expression is handled by the bash regexp operator. Interface names matching the rule will be filtered out, all others stay. It is also possible to pass the variable kiwi_oemnicfilter as kernel command line in a PXE deployment. Fixes #245- Bump version: 9.4.3 → 9.4.4- Delete no longer needed btrfs bootpath setup The adaption of the bootpath in the grub.cfg file with regards to the btrfs toplevel volume named '@' was the wrong solution. The fixes in the btrfs filesystem setup and the config files etc/default/grub and sysconfig/bootloader caused the grub toolchain to work properly. This Fixes (bsc#1030038)- Convert user input to absolute paths This commit converts the paths provided by the user with the command line to absolute paths. The effected arguments are: * --root * --target-dir * --bundle-dir This supersedes and fixes #271- Support editbootconfig also for the iso type This Fixes #274- ensure grub.cfg exists in EFI path for iso images For live and install iso image boot configurations the bootloader configuration must also exist in the EFI boot path- Throw a proper msg on missing filesystem reference Don't set a filesystem factor if no filesystem reference is set- Throw a proper exception on missing boot reference- Update schema documentation Add explanation for attributes with no documentation Fixup explanation for hybrid attribute- Recommend jing in case of XML validation errors, jing is used to provide good error messages. jing as a requirement will pull in all of java which is unwanted, but a Recommends seems appropriate- Update flags attribute and its documentation Delete the seed and compressed value as it is not implemented and won't be supported in the future. Properly document the existing overlay methods- Added doc info for kiwinoswapsearch boot parameter- Bump version: 9.4.2 → 9.4.3- Fixed checksum file creation If the checksum should be created from a compressed file it is expected that the checksum of the uncompressed file is added to the checksum file. This is because in a pxe deployment the uncompressed version of the file is put on disk and compared with the reference information in the checksum file- Refactor ip link detection There is no reliable way to check if a link is unplugged, thus the code has changed into the following workflow 1. use interfaces which returns success on ip link set up 2. wait for the UP state on all of these interfaces and return if one of them enters the UP state 3. call a fixed wait state to allow to kernel network drivers to settle 4. run through all remaining interfaces, discover the link state and call a DHCP discovery- Bump version: 9.4.1 → 9.4.2- Fixup pxe builder filesystem image rootfs was not in toplevel- Bump version: 9.4.0 → 9.4.1- Fixup pxe builder Generate a tarball containing all relevant pxe boot result files instead of a bunch of extra files. This also turns the pxe builder to be compatible again with the legacy kiwi pxe bundler- Don't create shasum over an md5 file- Bump version: 9.3.3 → 9.4.0- Allow https location as repository source- Refactor RootImport to keep images with a default name RootImport has been refactored so the image is kept with a known name that can be obtained with the Defaults class.- Added SLE13 distribution matcher- Update distribution matcher in spec file- Refactor ContainerBuilder Use Checksum instance to run a checksum match Check for existence of base image at earliest opportunity when constructing a ContainerBuilder- Added checksum matcher method to Checksum class- Delete unused code Also fixed corresponding unit test- Make sure LICENSE and README got installed- Handle derived image as Uri instance- Add completion for versioned binaries when installing kiwi via pip, no alternatives setup done when installing via rpm will be performed. In order to allow the bash completion to work also the versioned binaries needs to be added in the completion script- Bump version: 9.3.2 → 9.3.3- Add documentation hint for multipython package- Setup package for multipython build Build package for both python2 and python3- Refactored RootImport and included checksum validation First, commit refactors RootImport in order to also copy the imported image after sychronizing the import. Second, it includes a checksum of the copied image which is validated in later steps.- Added Leap42.3 boot descriptions- Deleted openSUSE 13.2 boot descriptions- Refactor Uri constructor Make repo_type an optional parameter, which is only required if the specified uri leaves a type choice- Fixup PyPI entry registry The wrong project url was referenced- Support for layered docker images This commit includes support for building layered docker. A new layer is added on top of the base image referenced by `derived_from` attribute.- Bump version: 9.3.1 → 9.3.2- Fixed MANIFEST.in kiwi.solver code was not included into source archive- Bump version: 9.3.0 → 9.3.1- Fixed doc api build for renamed source file- Bump version: 9.2.4 → 9.3.0- Flake8 fixes for unit tests- Apply code quality checks for unit tests too- Fixed import of solv module- Import root system from a given image This commit includes the root import feature. A `derived_from` attribute has been included with the section to make reference to the image file to import. The image format to import is assumed to be the same as the build type to import. The current format supported is docker- Flake cleanup for unit tests- Prevent use of project relative import statements For details on the motivation of this change please visit: https://wiki.python.org/moin/FutureProofPython- Allow activation/deactivation of sysV services systemd is still legacy sysV init compatible, thus the kiwi helper scripts to activate/deactivate services should not only be limited to systemd services. Fixes #256- Support package capabilities in sat solver A solver operation can receive a package or pattern name but a capability name was considered a package name and failed to resolve. This commit fixes the solver operation with regards to package capabilities- Add runtime check for kernel match If a kiwi initrd is used, the kernel used to build the kiwi initrd and the kernel used in the system image must be the same in order to avoid an inconsistent boot setup. This is related to (bsc#1027610)- Added runtime check for boot image reference If an initrd_system different from kiwi is selected for a vmx (simple disk) image, it does not make sense to setup a reference to a kiwi boot image description, because no kiwi boot image will be built. Despite that it does not hurt it's still an inconsistent setup. This is related to (bsc#1027610)- Bump version: 9.2.3 → 9.2.4- Update documentation the docker build container is now build with the correct namespace. Thus no image tagging is required anymore- Bump version: 9.2.2 → 9.2.3- Support container names with slashes (#254) Umoci tool doesn't require any other parameter than a tag to identify the container. So container_name value is not used in umoci. This Fixes#253- Use default command only if no entrypoit and subcommand aren't set Fixes #251- Fix tagging for OCI images This commit fixes the tagging schema for umoci. An OCI image name is path[:tag], this commit rearranges some variable names to avoid confusions between names and tags. Fixes #249- Add support for repository credentials The package and solver repository classes did not provide an interface to deal with repository credentials. This commit add support for the zypper package manager and the generic urlopen based download method of the solver class. This Fixes #246- Bump version: 9.2.1 → 9.2.2- Update documentation Add detailed information how to update the docker Build Container on the official dockerhub registry. This is needed to use custom or newer versions of the currently published Build Container- Bump version: 9.2.0 → 9.2.1- Update documentation The changes in building docker images now allows for using the docker load command to import the dice container- Fix default reposdir path for DNF- Bump version: 9.1.0 → 9.2.0- Added support for exclude docs for dnf- Fixup default cache and plugin dir for dnf- Update distribution support status Add information that Fedora systems are now supported as well- Make sure bootenv can be initialized An existing grub bootenv file should be deleted prior to calling grub2-install in order to allow grub2 to create a new correct bootenv file- Added DNF package management implementation DNF is the package manager used on Fedora systems and will also most likely replace yum for the next generation of RHEL. Along with the implementation here an example JeOS image description for Fedora can be found on: https://github.com/SUSE/kiwi-descriptions. This Fixes #36- Follow up fix for network driver delay Each network interface will be switched off for a short moment when the kernel network driver is loaded. During that time the link status information would be misleading. Thus we wait a short time before the link status check is started- Include compression optimization flags for mksquashfs command This commit includes some flags for mksquashfs command in other to achieve higher compression rates. Also note that those flags were already present in KIWI former versions, thus they have been included again for compatibility reasons. This commit fixes #242- Allow to convert GPT into MBR The type attribute force_mbr allows to convert a system selected for use with a GPT to use an MBR (msdos table). The attribute only takes effect on image configurations which would select the GPT partitioner. This Fixes #236- Wait for network drivers to pass init Before we check for the link status a waid period of 3 seconds should guarantee that the network drivers have passed the init routines- Refactor waitForLinkUp Put code which does not belong into the loop outside of the loop. Also maintain sleep timeout and retry count in variables- Fixed waitForLinkUp and setIPLinkUp The setIPLinkUp method did not handle the return value of the waitForLinkUp call and always returned success even if waitForLinkUp ran into a timeout The waitForLinkUp method was improved in a way that it does not wait if the link detection discovered the interface is unplugged. The detection if a cable is connected or not only works if the ifplugstatus tool was found in the initrd- Bump version: 9.0.2 → 9.1.0- Implement handling for efipartsize- Decrease default EFI partition size to 20MB The former default of 200MB was way too large and is a waste of space. Related to Issue #237- Added efipartsize attribute in type setup The attribute allows to specify a custom size for the EFI partition. Fixes #237- Allow bootloader="custom" for bootloader attribute If specified as such the bootloader configuration and installation will be skipped. However the editbootinstall and editbootconfig scripts will still be called. This Fixes #235- Fixed create_repository_solvable If the solvable already exists, the method should return it- Added handling for spare_part attribute Add a spare partition right before the root partition of the configured size. Fixes #234- Added new type attribute spare_part spare_part receives a size value with an optional unit (M|G) and is used for disk images to allow the creaton of a spare partition of the configured size. Issue #234- Delete all traces of vboot firmware The vboot firmware setup was a workaround on arm for the chromebook platform several years ago. From a todays perspective the setup and the way to boot would be different and obsoletes the special case implementation. Thus this is gone now. Related to Issue #234- Prevent quoted domain name in dhclientImportInfo We're getting domain name by parsion a lease file. Unfortunately in lease file domain name is quoted, which breaks linux resolver. This commit gets domainname unquoted- Add manual page for image info command- Added kiwi image info command Allow to list information about the image description. In a first implementation one can show the image name as well as run a dependency resolution for the packages listed in the XML description- Bump version: 9.0.1 → 9.0.2- Added uri translation for SUSE factory The obs uri 'obs://openSUSE:Factory/standard' does not follow the standard http url translation schema and needed a special handling in order to resolve correctly- Eliminate instsource element and requirements The schema defintions for kiwi v8 still contained the product schema definitions aka instsource which is no longer supported by this version of kiwi. Building SUSE products is done with the kiwi v7 code base and will most probably be handled by an extra product builder tool in the future maintained and developed by the buildservice team. We would be proud if the api of the kiwi v8 code base can be helpful for the product builder in the future- Bump version: 9.0.0 → 9.0.1- Added arch attribute for ignore section The packages subsection only accepted a package name to become ignored. However a subsection to install a package allows for an arch selection. The same should apply to ignore a package. In addition the allowed content for the arch attribute has been changed from simple text to a regular expression. Allowed is a comma seperated list of reserved architecture words like they are displayed by uname -m- User format method to form the message- Added support for package locking for zypper Zypper supports the al (add lock) command which allows to ignore a package in the dependecny resolution process. This is useful to prevent installation of a package which was pulled in by e.g a recommendation flag from the spec file. Packages marked to be ignored are not handled for apt and yum right now. Using this feature together with an unsupported package manager backend results in a warning to the user- Included some file naming convetions- Components of an Image Description section This commit extends the doc/sources/workflow.rst documentation by including details about config.sh and images.sh files.- Bump version: 8.29.6 → 9.0.0- Update documentation Add information about new hook: handleMachineID- Bump version: 8.29.5 → 8.29.6- Fixup isolinux timeout configuration isolinux counts the timeout in units of 1/10 seconds. Thus the value provided in the image description needs to be adapted correctly. This Fixes #228- Bump version: 8.29.4 → 8.29.5- Fixup setupMachineID Cleaning up existing machine id files by deleting them causes an interactive session to be started by systemd This is something we don't want. As the consequences of touching the machine id files seems to be too critical the method has been turned into a hook caller. This allows the user to make use of it on their own purpose and by default doesn't mess with the machine id files- Bump version: 8.29.3 → 8.29.4- Change processing of setupMachineID Instead of creating new machine ids for systemd and dbus the method now cleans up all existing machine ids and leave it up to systemd to initialize and create new ids. This allows to make use of the native way how systemd retrieves and handles machine ids- Fixup typo in ReST style- Bump version: 8.29.2 → 8.29.3- Add utils.sysconfig to api documentation- Completion for grub bootloader configuration The configuration files /etc/sysconfig/bootloader and /etc/default/grub needs to be created/updated with the relevant values regarding the bootloader setup done by kiwi. This Fixes #226- Apply volume attributes for btrfs and lvm The chattr utility is used to apply file attributes So far only the no-copy-on-write attribute can be specified in a volume setup. If further attributes are needed they will be added on demand- Added attributes element in volume type- Added volume attribute copy_on_write The copy_on_write attribute allows to activate or deactivate the copy on write functionality for the desired volume. This Fixes #218- Make sure there is a storage default setup on s390 Storage disks on s390 requires an information about the type and the blocksize. In case these information is not provided in the kiwi XML configuration, None was set as value in the zipl configuration which lead to an error. This commit provides default values for those parameters- Bump version: 8.29.1 → 8.29.2- Allow unix device names in oem-unattended-id setup In order to allow a raw device name in oem-unattended-id the /dev tree has been added to search list. This is useful if e.g a ramdisk device which is not part of any /dev/disk/... or /dev/mapper device map should be used as target disk for the deployment. Thus a setup to stick the deployment to e.g /dev/ram1 would look like this ram1 This Fixes #221- Don't delete ip tools from oemboot network tools are needed for oem disk deployment via pxe- Added .coveragerc Clearly indicate which source files are excluded from the coverage report- Make sure setupMachineID also cares for dbus Systemd and dbus should use the same machine-id. Therefore a symlink /var/lib/dbus/machine-id pointing to /etc/machine-id is created right after systemd-machine-id-setup. Fixes #219- Fixup duplication of btrfs toplevel volume If using root btrfs snapshot, the default toplevel subvolume is set to /@/.snapshots/1/snapshot, thus all defined subvolumes are mounted under that cusomized default subvolume. For the first time subvolumes are mounted it is fine to include /@/.snapshots/1/snapshot prefix as root is not yet set to that specific path, however in any future mount this path prefix is not needed any more, as the root get mounted in /@/.snapshots/1/snapshot by default. Fixes (bsc#1015549)- Add check_docker_tool_chain_installed Runtime check to check for required docker tools umoci and skopeo. As long as tools tools are not available in the core distro of all distributions we avoid spec file requirements and check at runtime if they can be found- Bump version: 8.29.0 → 8.29.1- Rebuild schema documentation- Bump version: 8.28.3 → 8.29.0- Running config.sh after including the image repositories This commit rearranges some code lines in order to run the config.sh script after the repositories of the image have been included, this way repositories can be trusted and refreshed in config.sh script.- Refactor docker container creation Instead of creating a simple tarball the tools umoci and skopeo from the docker tool chain are used to create official docker images. Along with those tools more information to describe a container has been added to the schema. A complete container setup now consists of the following elements ... ... ... ... ... - Update container builder code to new schema layout- Auto update image descriptions to schema v6.5- Update schema for container setup In preparation to support creation of native docker containers the way docker likes it, the kiwi schema has to be adapted. So far there was no way to specify additional metadata information for containers. With this commit a new section called is provided. containerconfig is a subsection of the type and only allowed for the docker image type. This constraint is checked via a schematron rule. In addition an xslt stylesheet moves the currently existing container attribute, which was used to set a name for the container, into the new containerconfig section as name attribute- Bump version: 8.28.2 → 8.28.3- Fixed quadruple_token tokenizer Information not provided should end up as a None type in the list in any case. If an empty string was provided via e.g --add-repo source,type,, the tokenizer puts in an empty string. If the information was provided as --add-repo source,type a None type was used. The code handling the information expected a None type for not provided information, with an empty string we end up in validation code which e,g complains that an empty string can't be converted into an integer base repo priority- Bump version: 8.28.1 → 8.28.2- Update documentation Default provider must be set in the caller environment if different from the default docker provider- Bump version: 8.28.0 → 8.28.1- Update container builder documentation Add information about the now available kiwi build box and the use of it as part of libvirt provider setup for vagrant- Bump version: 8.27.5 → 8.28.0- Bump version: 8.27.4 → 8.27.5- Fixup spec file build requires shadow tools are needed for %pre tasks using groupadd/useradd tools- Bump version: 8.27.3 → 8.27.4- Fixup spec file tftp group/user setup Let %pre fail if groupadd/useradd failed and show the error to the user- Added DiskFormatVagrantLibVirt class Allow to build vagrant boxes for the libvirt provider This Fixes #15- Update vagrantconfig schema setup Delete the virtualbox provider, As long as there is no opensource variant for the ovf creation available we won't support that provider- Bump version: 8.27.2 → 8.27.3- Adapt documentation to rtd schema replace topic node used for abstract by a hint. This results in a color box for the abstract which looks better than what rtd does with simple topics- Adapt schema generator to rtd doc schema- Move to rtd sphinx schema The read-the-docs schema fits better into the mainstream of online documentation- Bump version: 8.27.1 → 8.27.2- Added check_volume_setup_has_no_root_definition The root volume in a systemdisk setup is handled in a special way. It is not allowed to setup a custom name or mountpoint for the root volume. Therefore the size of the root volume can be setup via the @root volume name. This check looks up the volume setup and searches if there is a configuration for the '/' mountpoint which would cause the image build to fail- Prevent warning about unknown opt in workflow doc- Bump version: 8.27.0 → 8.27.1- Rebuild schema documentation- Add a docstring for the extension section Short description what the extension section is good for- Prevent any type from attribute recursion The schema parser to create the documentation run into an endless recursion for the new k.any type. As any could be anything there is not much do document for this type. Thus it is now skipped from the traversal- Bump version: 8.26.1 → 8.27.0- Update documentation per review- Including minimum volume size offset in disk size calculation This commit adds Defaults:get_min_volume_mbytes() to the disk size calculation algorithm. This should be sufficient to hold fdisk default offset when creating the first partition and also to hold the LVM metadata.- Added extension documentation- Make sure to catch exceptions from xsltproc- Add extension validation and data access If an extension section exists the xml data in this section is validated against the RelaxNG schema which must be part of the xmlcatalog for the used extension namespace. If the data validates the method get_extension_xml_data can be used to access the etree parse result for each of the extension configurations- LVM volumes management during grub2 install During the grub2 install process volumes were not mounted properly, a proper mount order was not taken into consideration and LV device information was not given by the method get_volumes in VolumeManger. This commit forces the mount (and umount) operations to be done in coherent order and also modifies the get_volumes method in order to return the device associated to each volume.- Allow section for custom plugins For the use case to add additional image description information an extension section exists which allows to add custom section and attributes. Custom XML information must be connected to a namespace in order to avoid conflicts with the existing structure. The following example shows how to place additional XML information: - Fixed expansion of msdos disks If the target disk size is beyond 2TB it can't be expanded to the full size if the msdos partition table layout is in use. Because of this the disk expansion will be limited to the allowed maximum for the msdos partition table type which is at 2TB. This fixes bnc#1010966- Bump version: 8.26.0 → 8.26.1- Fixup of string + operator vs. join use- Fixed setup_disk_image_config in bootloader setup The parameter for the uuid is not enough to handle all supported disk geometries. If the disk has an extra boot partition the bootloader setup must read the boot data from the boot partition but must set the root for the kernel cmdline to the root partition. Therefore the interface needs to change and must provide both the boot_uuid and the root_uuid in oder to allow the method to setup the correct values- Parse arch attribute as a comma separated list This commit ensure that the arch attribute of each package section is parsed as a comma separated list. This way, as in previous kiwi versions, each package might be suitable for one or more specified architectures.- Fixup kernel name setup in disk builder The Kernel instance is the only correct place to ask for the kernel name. This class has the responsibility to know information about the selected kernel. The additional arch based assumption on the kernel name in the disk builder were wrong. This fixes bnc#1011936- Fixed typo in solver api documentation- Bump version: 8.25.5 → 8.26.0- No more hard links in result bundle This commit changes the copy command of the result bundle task. Now instead of creating hardlinks a relugar copy is performed. This way we ensure that the bundled files will not be modified by overwritting a linked file.- Documentation workflow review- The Sat solver class - an example The Sat solver class can be used to run a solver operation over a list of packages and/or patterns in order to receive a dependency solved list of all required packages according to the request. In order to do that a set of repositories is required which provides the package metadata and their requirements. The following is an example how to use the Sat class in your application: ```python from kiwi.solver.sat import Sat from kiwi.system.uri import Uri from kiwi.solver.repository import SolverRepository solver = Sat() solver.add_repository( SolverRepository(Uri('obs://leap/42.2/repo/oss', 'yast2')) ) print(solver.solve(['vim'])) ```- Fixup code smell for kernel name list Iterating over only one list item doesn't need a loop- Fixup style to be more pythonic- Fixed release network using ip tool Apply the cidr fix from setupNic and introduce a new method called deleteNic which replaces the wrong ip call from the releaseNetwork method. Fixes bnc#1003091- KIWI workflow documentation This commit ports the workflow documentation from previous KIWI version and also adds a sections for listing the boot parameters configurable in the Kernel command line.- Fixed kernel name lookup Complete the list of kernel names for the lookup. Normally the kernel package provides a symlink to the actual kernel image file. However if the link does not exist we extend the search to a collection of names for possible kernel images. The new list now also covers kernel names as used for arm Along with the change this patch also provides an option to raise an exception if the kernel lookup did not find any kernel, which is used for the get_kernel() request in the dracut initrd system setup where it is mandatory to find a kernel image. This fixes bnc#1010874- Added Sat solver class Added implementation for Solver class based on the SUSE libsolv C library and the solv python binding- Bump version: 8.25.4 → 8.25.5- Fixup lease time in setupNetworkWicked The default lease time with 300s used by wicked is relatively short and different from the default lease time of the former dhcpcd. This change causes wicked to use a lease time of 3600s This is related to bnc#1003091- Fixup default behavior of releaseNetwork If no tool was found to communicate with the dhcp server in order to free the lease the method did nothing. However it should at least bring down the network. This is related to bnc#1003091- Bump version: 8.25.3 → 8.25.4- Fixup get_volumes for lvm manager The method also returned the root volume in the list of volumes but it should only return a list of volumes excluding root volume- Fixup setupNic for address information in cidr Ignore netmask if address is already in cidr format- Bump version: 8.25.2 → 8.25.3- Fixup btrfs property setup The readonly property is set on the filesystem toplevel. kiwi has set the toplevel before any property is set.- vhdfixed images result compression This commit adds compression to the Result instance of the vhdfixed disk. This concrete format is not compressed or dynamic, so that, it makes sense compress them. Also this was the behavior in previous kiwi versions.- Replace tabs with spaces- Fixup handling for root_is_readonly_snapshot The information was not passed to the VolumeManager instance- Fixup mount_volumes in VolumeManagerBtrfs It is required to mount the toplevel btrfs filesystem if not already mounted, prior to mounting the subvolumes- Fixed busy mount state Make sure subvolumes are umounted first. This prevents a busy state in a partition setup with an extra boot partition- Bump version: 8.25.1 → 8.25.2- Fixup creation of etc/default/grub config file Only create the file if the base directory structure in etc/default exists.- Remove empty line too much- Implement loading of snapshots and fix snapshot menu layout. If you want to boot an old snapshot, but not to do a rollback, we need to tell the kernel which snapshot to use. This patch also fixes the broken layout of the grub snapshot menu.- Move source of grub-snapshot.cfg to the right position grub-snapshot.cfg should not be sourced at the begining, but at the end of grub.cfg. Else with creating the first snapshot this entry is getting the default boot target and the system does not boot automatically anymore.- Fixup netboot code for multipath boot device If the root disk in a netboot deployment is a multipath device we have to make sure the multipathd is started and the boot device is mapped to the wwn- Bump version: 8.25.0 → 8.25.1- Update doc string for download_from_repository The doc string for this method contained a mime string which is spuriously validated by the sphinx url checker. This commit rewords the text in a way that the checker is happy again- Bump version: 8.24.10 → 8.25.0- Do not delete all repositories if there aren't repositories to import (#191) This commit adds a tester method to check if there is any repository marked as imageinclude. The method is used to execute import_repositories_marked_as_imageinclude method only when it is actually needed.- grub.cfg: Fixes for btrfs as rootfs This addresses the following issues * An image based on btrfs using the entire boot as a subvolume causes grub to be unable to find its config file. Thus kiwi now raises an exception in this situation * Don't prefix the bootpath with the snapshot path if the btrfs root is placed in a snapshot. Instead the file etc/default/grub must be written/updated with the SUSE_BTRFS_SNAPSHOT_BOOTING variable set to true. Once this is done the bootpath is consistently set to /boot no matter which snapshot is active- grub.cfg: Source grub-snapshot.cfg if present Add a lookup for /.snapshots/grub-snapshot.cfg to the generated grub.cfg. The file is shell sourced if it exists- No need to mock Path.which There is no need to mock Path.which as isoinfo binary from the platform is needed to run the test, so better let the system look for it, note that the binray can be located in the alternate location (/usr/lib/genisoimage/) which is not part of the PATH. In that particular case the iso_test would fail if we mock Path.which.- Updated system size calculations test- Updated test for vhd-fixed subformat type- Increase the default image size for XFS filesystems When no size is specified in type section the resulting image size is calculated using the size of the whole build-root increased by an empiric factor. Some tests revealed that this factor was not enough for XFS filesystems. The empiric factor has been increased. This commit fixes #186- vhd-fixed name corrected in subformat init class This commit reverts the previous one and it applies the name change to the subformat class initializer. This way the schema is not altered and we keep compatibility with previous description files.- vhdfixed format naming inconsistency vhdfixed storage format name was not updated according its real name in the kiwi schema, making it impossible to build any vhdfixed image. The schema used to expect 'vhd-fixed', however, internally, the code was expecting 'vhdfixed'. The schema has been updated. This commit fixes #184- Implemented SolverRepositoryRpmDir Add support for local rpm-dir repositories- ActivateImage links correction Loading the iso image into a read-only ramdisk caused some issues due to the activatImage method cp commands. With this commit the symlinks are consistent during the preinit phase and also before running the cp command it is tested we are not in a read-only filesystem. This commit is a port form openSUSE/kiwi#613 PR- Implemented SolverRepositoryRpmMd Add support for rpm-md repository types- Fixup ip setup in setupNic The invocation of ip in setupNic was invalid. The way this was done causes the netmask to be set as broadcast address Related to bnc#1003091- Implemented SolverRepositorySUSE Add support for SUSE online and media repository types- Add repo_type info to Uri class This allows to eliminate the repo_type from the paramter list of the SolverRepository class, which then only needs an instance of Uri- Implement SolverRepositoryBase Base class and interface for building a SAT solvable from a given repository- Added API doc hook for solver path- Bump version: 8.24.9 → 8.24.10- Delete sphinxcontrib-programoutput setup Deleted it from virtualenv development requirements and from the sphinx configuration file- Delete use of sphinxcontrib-programoutput The developers of this sphinx extension decided to delete the module on pip and also the source from git... it's dead. Thus I replaced the dynamic usage output in the manual pages with the static version- Initial structure to support SAT solvables A SAT solvable can be used together with python-solv to implement performant package solving tasks. This is the initial structure to allow the creation of such solvable files from specified repositories. We will support the repo types yast2, rpm-md and rpm-dir in the first place.- updateOtherDeviceFstab did not get the fstab location parameter This is port from the kiwi v7 code base openSUSE/kiwi#610- Load the default unicode font in grub2 This commit fixes #179. The default font was never loaded, the loadfont call for the default was missing.- Bump version: 8.24.8 → 8.24.9- Fixed waitForStorageDevice Value for storage_size was not really used- Bump version: 8.24.7 → 8.24.8- Make sure kiwiserver/kiwiservertype is used If kiwiserver and/or kiwiservertype is specified on the kernel commandline they should take over precedence for up- and download of image files compared to the host setup in the IMAGE variable.- Don't mix python module requirements The tox setup mixes the deps modules depending on the tox target with either virtualenv.dev-requirements.txt or fixed deps lists in tox.ini. This change clean up the module dependencies for development targets to be taken from virtualenv.dev-requirements.txt exclusively- Update travis runtime requirements Installing python modules from source via pip requires git- Bump version: 8.24.6 → 8.24.7- sphinxcontrib-programoutput no longer on pypi Use the version from git directly to build the documentation In the long we should find an alternative for this sphinx extension- Fixup root init with existing host cache Creating a new root init with a shared location which already provides directories of the system failed on init of those directories. Only create the not yet existing directories- Fixup the wicked thing again- Put setupNetworkWicked in line with former dhcpcd The way setupNetworkWicked implements the dhcp discovery was incomplete. This Fixes bnc#1003091- Fixup assembling of mdraid array when udev discovers an mdraid array it partially starts the array. That is interfering with the mdadm --assemble call by kiwi which leads to a busy state and an array in inactive state. Therefore the method should wait until the raid array really exists no matter if the assembling is started by udev or kiwi's mdadm call. In addition if the array got assembled but is incomplete because devices are missing or the timout is fired, an additional call to start any array that has been partially assembled is required. pxeRaidAssemble will throw an exception if after this call no md device with a size > 0 will show up after a timeout. This Fixes bnc#1000742- Fixup waitForStorageDevice The function will return success if the size of the storage device can be obtained and is greater than zero. The pure success on reading from the block layer is not enough. In order to actually work with the device it must provide a size > 0. Related to bnc#1000742- Bump version: 8.24.5 → 8.24.6- Fixup initial directory creation for new root During testing of alternative cache locations an init problem with the var/ directory was observed- Do not allow imageinclude for images build in obs Fixes #178- SystemPrepare instance delete before runnig SystemSetup This commit fixes#175, now multiple profiles in OBS are possible using kiwi boot initrd.- Use docopt's default value feature for cache dir- Cleanup unit tests using sys.argv The tests should restore to the default argv option set as provided by the test_helper- Update manual page Include information for new --shared-cache-dir option- Added global option --shared-cache-dir The option allows to specify an alternative shared host_to_image cache directory. The default location is /var/cache/kiwi. Fixes #92- Fixed a couple of constraints- Redo of xml_parse.py with updated generateDS- Initialize the systemd machine ID on first boot The systemd machine id is considered to be a unique information Thus it is required to initialize it on first boot of the image. If the image uses the kiwi boot code (initrd) this action is performed and and Fixes #169- Bump version: 8.24.4 → 8.24.5- Some tests slightly modified in order to improve coverage This commit improves some example kiwi files and tests in order to achieve a 100% code coverage.- Corrections on test kiwi description files Some attributes needed to be changed in the test xmls. With this commit all the description files are consistent with the new co- occurrence constraints.- Co-occurrence constraints included in the schema Constraints for pxe, iso, vmx, oem and docker image types have been included.- config.partids only required for kiwi initrd If dracut is used as initrd system an unused config.partids file is generated. The partition id information is only used by kiwi boot code not by dracut boot code. Related to bnc#1005246- Bump version: 8.24.3 → 8.24.4- Make sure dracut initrd is copied correctly- Fixed a rounding error in partedMBToCylinder method bc truncates number of cylinders to zero decimal places, which results in a partition that is slightly smaller than the requested size. Add one cylinder to compensate.- Integrating Schematron syntax in schema Using Schematron syntax in schema co-occurrence constraints can be easily defined. This commit provides the schematron integration.- Bump version: 8.24.2 → 8.24.3- Write fstab to kiwi boot image only For the dracut initrd system the call happens in the system root tree which already provides the fstab data- Bump version: 8.24.1 → 8.24.2- Dereference boot arch symlinks- Bump version: 8.24.0 → 8.24.1- Fixed typo in build Makefile target- Bump version: 8.23.0 → 8.24.0- Use format method for messages in image_resize There are more places where this cleanup from %x format attributes to the format() method is required. Here it is done in the scope of the image resize task- Bump version: 8.22.0 → 8.23.0- Fixed setup.py custom install target Make install method aware of --single-version-externally-managed This option is passed to the call by pip if not installed as egg- Added setuptools to development requirements- Delete travis pypi deployment After weeks of try and error, this simply does not work for me Manual deployment via make pypi and a local account works fine Maybe this can be solved in the future but for now I can live with a manual step- Package kiwi/boot/arch into sub archive The sdist target runs into an infinite loop if installed via pip. It seems the symlink files below boot/arch confuses distutils- Bump version: 8.21.1 → 8.22.0- Revert "pycparser 2.15 does not play well with xattr" This reverts commit 428436988d1db1017adfb6e92dbc3235d54e06b3.- Only resize disk format if required Only resize the disk format if the raw disk has been changed If the size of the raw disk is the same as the requested size just print a message to the user- Simplify help call- Smarter way to calculate bytes from a size unit- Explicitly bool check for the service name option From docopt we expect a True/False value for the selected service name positional parameter. Thus the code should also make it clear what we expect- Use format method instead of printf like style- Update resize_raw_disk method Do not resize the disk if an attempt to resize to the same size was made. Do not fail in this situation but indicate via a bool return value if an action has happened(True) or not(False)- Use latest version of pip for tox setup- Revert "Fixup travis setup" This reverts commit ee9e633d78833d02a535e6f4d2ce775425082872.- Revert "Fixup travis.yml" This reverts commit 1c80841e8c264ba1957e2ae6b53d2af2929479b0.- Fixup travis.yml Make sure python-tox gets installed- Fixup travis setup No need to install requirements, this is all done by tox- pycparser 2.15 does not play well with xattr Use pycparser 2.14 in setup.py and virtual env requirements- Fixed setup.py install target pip calls the install target but not the build target. For kiwi's tools this means they need to run the tools compilation if not already done prior to the installation of the tools- Call dracut in system root tree Change BootImageDracut class to call dracut in the specified system root directory and not in a self prepared new root environment. dracut reads scripts and dracut module configurations from the installed system components, e.g kdump. Therefore calling it from an isolated runtime environment creates an initrd which is not matching the system components. Fixes bnc#1005246- Added kiwi image resize command The image resize command allows to resize a disk image and its optional disk format to a new disk geometry- Added manual page for image resize command- Add raw format to subformat factory- Allow ftp:// uri style for package repositories- Add grub2-efi-modules in rhel boot descriptions This package provides the efi modules which are needed if a custom efi module is build by kiwi via grub2-mkimage- Fixup doc string for target_removable attribute The default behaviour was not explained clear enough- Added resize_raw_disk method in DiskFormatBase Allow to increase the disk geometry of a disk image file in order to create free space on this disk- Handle target_removable in kiwi disk builder- Handle target_removable in kiwi boot code- Store kiwi_target_removable in profile env- Added target_removable attribute Indicate if the target disk for oem images is deployed to a removable device e.g a USB stick or not. This only affects the EFI setup if requested and in the end avoids the creation of a custom boot menu entry in the firmware of the target machine on first boot. This is related to bnc#993130- Use XML parser to test XML output for info.xml- parenthesis in imports only for multi-line imports- Delete unused textwrap import- Move info.xml test data into its own file- Fixup code smells per review Only import what is needed, concat strings by a join- Create info.xml file for btrfs snapshot If the system is installed into a btrfs snapshot a metadata file called info.xml is created which is used by tools like snapper. Fixes bnc#1000117- Cleanup use of cache location- Updated hideSplash method hideSplash method now hides the splash image regardless of an active console is detected or not. This commit is port from openSUSE/kiwi#601- Fixing wrong spaces- Updated fetchFile method Now it makes sure the splash is hidden before showing any progress dialog. This commit is port from openSUSE/kiwi#601- Bump version: 8.21.0 → 8.21.1- Fixup wicked DNS data validation wicked provides DNS info in DNSSERVERS with a space as separator and not with a ',' as it was the case in dhcpcd- Do not bundle the raw disk if a format is setup Only bundle the compressed version of the .raw disk image if no disk format like qcow2, vmdk, etc... is specified. Fixes #159- Do not compress disk formats Stay compatible with the former version of kiwi and do not compress disk formats like qcow2, vmdk, etc... It also does not make much sense since the disk formats itself are using a compression algorithm. Fixes #159- Support yum repository priorities yum normally installs the latest version of a package, regardless of which repository provides it. The yum-plugin-priorities provides a method to prefer a package from a repository with a higher priority. Fixes #153- Bump version: 8.20.22 → 8.21.0- Fix attributes_not_used helper script The script is used to check which parts of the XML schema are not used by the new (kiwi v8) version. The information is helpful to find missing or obsolete attribute handling in v8 vs. v7- Modified few code lines to match landscape's quality standards- Use tmpfs for write overlay in netboot via nbd/aoe- Added support for multiple `--add-profile` options- Added '--add-profile' option in compat mode This commit fixes #154. With this, the compatiblity mode accepts the `--add-profile` option which was present in previous kiwi versions and that is translated to `--profile` in the current version.- Add set_property_readonly_root for volume manager The custom option root_is_readonly_snapshot is evaluated for the method set_property_readonly_root(). If set and the root filesystem has been installed into a btrfs snapshot the filesystem is turned into read-only mode- Evaluate root_is_readonly_snapshot in disk builder- Added btrfs_root_is_readonly_snapshot attribute The attribute allows to specify if the root filesystem should be set to read-only if it is created as a btrfs snapshot. The option only has an effect if a btrfs snapshot is used as root filesystem. Fixes bnc#1000080- Bump version: 8.20.21 → 8.20.22- Added test for -udf flag for genisoimage/mkisofs- Added forcing UDF filesystem for large images Included -udf flag to force UDF filesystem usage- Fixed secure boot setup for iso media Provide the shim loader and the shim signed grub loader in the required boot path. Normally this task is done by the shim-install tool. However, shim-install does not exist on all distributions and the script does not operate well in CD environments from which we generate live and/or install media. Thus shim-install is used if possible at install time of the bootloader because it requires access to the target block device. In any other case the kiwi fallback code applies- Added support for mkisofs genisoimage and mkisofs tools are slightly different so this commit makes sure all flags are supported in both tools.- Fixed hybrid setup for large ISO images The isohybrid tool uses fseek() to locate the bootloader files. That's unfortunately not 64-bit safe. In case of an ISO image bigger than 4G this leads to 32-bit offset issues. kiwi can workaround this problem by putting the bootloader files near the top of the iso image, which is done by a change in the sortfile of this commit- Added rpm_excludedocs handling for yum rpm supports the --excludepath option. However, yum can not be configured to pass along options to rpm or the python interface it uses. Thus only a warning about excludedocs not being supported by kiwi for yum is issued. Fixes #133- Added rpm_excludedocs handling for apt Setup the appropriate dpkg options to avoid the installation of manual pages and package documentation if rpm_excludedocs is set in the kiwi XML description. Related to #133- Make sure netboot code populates kiwi_RootPart For disk based images the file config.partids is written and imported. However, for netboot stations a disk is optional and no partids information exists. In order to provide at least the partition number for the root partition on netboot stations with a disk, the kiwi_RootPart is exported from the provided client configuration file. Fixes bnc#1000194- Bump version: 8.20.20 → 8.20.21- Call grub2-install as chroot operation In addition to the chrooted call make sure all volumes from the volume manager (if used) are mounted at call time- Fixup grub default module list The test module is a required module in any case- Make sure fstab exists in initrd creation system- Umount volumes prior to bootloader installation- Bump version: 8.20.19 → 8.20.20- Respect setup of devicepersistency for swap part If a swap boot partition is requested it should be added to the fstab file according to the device persistency setup or its uuid default- Update schema documentation- Bump version: 8.20.18 → 8.20.19- Respect setup of devicepersistency for boot part If an extra boot partition is requested it should be added to the fstab file according to the device persistency setup or the default uuid persistency type- Only sync .mod grub2 module files When syncing the grub2 modules to the boot directory only the .mod version of the module needs to be present- Mount boot volumes on grub install If there are volumes below /boot they need to be mounted before grub2-install / shim-install is called in order to make sure all data is available in the volume- Bump version: 8.20.17 → 8.20.18- Make sure boot image dump is cleaned up- Refactor DiskBuilder class The DiskBuilder class is able to build a disk its corresponding format and the installation image to install this disk by using the InstallImageBuilder. However all three tasks were handled in a row which lead to the problem that resources like active mount processes were still open when e.g the disk format is created. The race conditions produced here lead to an undefined state of the resulting disk format and/or install image. In order to avoid this the DiskBuilder class has been refactored in a way that each tasks is an atomic operation which is freeing its resources after success- Delete root, boot, efi fstab setup from kiwi boot The kiwi boot code was responsible for setting up the contents of the fstab file on first boot. However the build process now provides an fstab with the generic label or uuid based fstab entries which allows to remove that part from the kiwi boot code- Add root, boot and efi partitions to fstab Make sure the above partitions are added to the generic fstab with their label or uuid at build time- Added BlockID class Class to provide support for retrieving block device metadata- Use BlockID class for block operations- Fixed fstab entries for btrfs subvolumes mount options must be part of the subvol information which itself is also a mount option- Corrected DEVICE_TIMEOUT variable validation Now it uses regex in order to validate the variable is an integer- Bump version: 8.20.16 → 8.20.17- Normalize mount path in get_fstab for lvm volumes- Fixed get_fstab parameter order for lvm- Bump version: 8.20.15 → 8.20.16- Delete fstab setup for volumes from kiwi boot code For persistent devices like LVM volumes or btrfs sub volumes the fstab setup can be done at build time. Fixes #142- Custom device timeout variable added This commit patches the issue bnc#992992. Now DEVICE_TIMEOUT variable can be used in order to set the device waiting timeout in watForStorageDevice function. Must be a numeric value expressed in seconds.- Implement get_fstab for btrfs volume management- Fixed btrfs mount_volumes if root is snapshot The provided subvolume name contained the snapshot path which is invalid. In addition nested volumes e.g /var/cache were reduced to /cache which is wrong- Cleanup unit test Use only one instance of context manager for all tests- Create fstab entries for persistent devices Instead of creating the fstab at boot time, those entries which are generic and not depending on an unknown device name can be created as part of the image building process.- Implement get_fstab for LVM volume management- Added get_fstab to volume manager interface The volume manager interface should allow to provide fstab entries for the volumes it manages- Bump version: 8.20.14 → 8.20.15- Fixed evaluation of Dialog return value The return code from the Dialog boot code was evaluated after other shell code was executed. Thus the return code from the call in question was lost and misinterpreted- Make sure volumes are mounted prior to install- Fixup invalid character in bash source- Bump version: 8.20.13 → 8.20.14- Fixup chroot adaption for caller environment The ZYPP_CONF path is provided as part of the caller environment and not as a zypper caller parameter. However the path adaptions when calls happens chrooted was only done for the commandline arguments but not for the command environment. This patch also adapts the environment, related to Issue #133- Make ifplugstatus available in boot images Added ifplugd to kiwi oem|netboot images for leap and tumbleweed- Prefer ifplugstatus for link up check Use ifplugstatus if present to check if the network link is up. Fallback is the old ip based method- Fixup theme setup in grub2 config template Only set the theme if the .txt file describing it exists- Fixup yum group install yum groups can contain spaces, thus quoting is required Fixes #138- Bump version: 8.20.12 → 8.20.13- Follow up fix for setupNetworkWicked IP address information from wicked is imported twice. However the plain IPv4 address validation happened only on the first import. Fixes bnc#992989- Fixed pxe install archive md5 file The md5 sum must be created from the uncompressed version of the disk image- Added missing trigger file for oem pxe install The config.vmxsystem trigger file was missing in the oem install initrd used when deploying a disk image over pxe- Bump version: 8.20.11 → 8.20.12- Integrate schema documentation into doc process The schema documentation is auto generated via the schema_parser helper tool. The tox doc target now also generates schema docs Fixes #53- Schema docs generation helper A simple script to parse the RelaxNG schema that grabs relevant information in order to produce autogenerated documentation from the schema inline comments.- Added handling for rpm-excludedocs for zypper In zypper zypp.conf can be setup to prevent the installation of %doc marked items from rpm packages. The section in the kiwi XML description is used to provide this functionality. So far this feature is only implemented for zypper. References #133- Make sure EFI modules are provided in uefi mode For EFI secure boot (uefi) the grub2 efi modules were not copied to the target directory. shim-install normally does that by invoking grub2-install. However shim-install does not allow to call grub2-install with the required parameters as needed for loop (image) based targets. Thus kiwi calls shim-install but skips grub2-install and takes care to provide the needed EFI modules.- Revert WaitForStorageDevice patch The logic to setup a wait timeout by asking a device property from a device which does not yet exist raises a chicken and egg problem- Fixed message typo (bnc#996255)- travis: Update pypi password Next try to get the automatic deployment on pypi fixed.- Move to tar.gz as sdist target PyPI is planning to support only .tar.gz in the near future. See https://www.python.org/dev/peps/pep-0527. This Fixes #132- Activate partition using parted instead of sfdisk sfdisk changes their caller semantics incompatible. Therefore we move to a tool which is still stable in the caller options Fixes #129- Update baseStripRPM Method is a noop and only exists for compatibility kiwi handles the deletion of packages in the core builder code- Bump version: 8.20.10 → 8.20.11- Revert "Update doc string for kiwi_compat.py" docopt strings are not allowed to be interrupted by a newline This reverts commit b1b92ed830820530bfd7bdc5256525f3dfc01a4a.- Bump version: 8.20.9 → 8.20.10- Use os.linesep Python's os module provides a portable version for the line separator which should be used whenever possible. Fixes #130- Bump version: 8.20.8 → 8.20.9- Fixed custom entries in vmdk machine config Each custom entry must be written in a separate line- Update API documentation Recall sphinx-apidoc and update the generated result markup- Update doc string for kiwi_compat.py Make sphinx happy- travis: Update pypi password Next try to get the automatic deployment on pypi fixed.- Bump version: 8.20.7 → 8.20.8- Fixup get_build_type_vmconfig_entries Make sure we can rely on a list return even if no machine section exists at all.- Add evaluation of machine's vmconfig_entry As part of the machine section it is possible to setup a custom entry which is stored in the machine configuration file. The evaluation of such an entry for the vmdk (.vmx) config file was still missing. This Fixes #122- travis: Next try to fix automatic pypi deployment Also the travis command which added the pypi deployment part formatted the yaml file.- Fixed bootloader configuration custom kernel parameters should be added to GRUB_CMDLINE_LINUX and not GRUB_CMDLINE_LINUX_DEFAULT Fixes bnc#994910- Use str.format for int to string convertion- Setup tests corrected #124- Fixes #124- Rearranged waitForStorageDevice code comments- Added a case statement for transport types- Removed some backquotes in favour of $()- Bump version: 8.20.6 → 8.20.7- Make repository an optional element So far one repository was mandatory in the XML description. However, this is not required because all repositories can be specified on the commandline- Added quotes to protect against spaces- Added getDeviceTransportType method The method gets the transport type of the given device. WaitForStorageDevice reacts according to the transport type by having a shorter timeout in case the device is a usb.- WaitForStorageDevice patch The function has been modified in order to distinguish a shorter timeout if the device is a usb.- Bump version: 8.20.5 → 8.20.6- Update compat options for create step The --ignore-repos, --set-repo and --add-repo options are allowed to be specified for compatibility reasons if --create is specified in the compat commandline. However, they are not used in the next generation kiwi create step because the repo information is persistently stored after the prepare step has finished, which is not the case for the legacy kiwi version- Support --ignore-repos in compat mode- Added --ignore-repos for build and prepare tasks The option allows to ignore all repos configured in the XML description. This allows to specify a complete set of repositories via the commandline- Bump version: 8.20.4 → 8.20.5- Preserve timestamp on grub2-install copy In order to workaround the bug in shim-install which unnecessarily calls grub2-install we replace the binary by a noop before calling shim-install. However all file attributes of the grub2-install binary, timestamp, modes, etc should stay untouched (bnc#993825)- Update documentation Move information about legacy kiwi in its own chapter- Bump version: 8.20.3 → 8.20.4- Update documentation Prevent to use non public url references- Bump version: 8.20.2 → 8.20.3- Fixup vmdk header update due to the wrong file open mode the result image was truncated on update of the vm tools version- Bump version: 8.20.1 → 8.20.2- Update documentation delete broken links to online ssh key blogs- Bump version: 8.20.0 → 8.20.1- Binary opened file should receive bytes Avoids TypeError: 'str' does not support the buffer interface for the vmdk header update- Fixed setupNetworkWicked IP address information from wicked dhcp reply consists out of two parts but we are only interested in the plain IPv4 address information at this point. Fixes bnc#992989- Make sure DHCPCHADDR is upercase Fixes bnc#992988- Delete obsolete section The section was formerly used as part of the section. kiwi no longer supports static split images in favour of overlay systems based on e.g overlayfs. Fixes #120- Better logging if Path.which doesn't find the file- Added docstring for KiwiDescriptionConflict- Fixup Command.run if called with raise_on_error set to False- indentation fix- Updated logging message Updated logging formating in a way that landscape does not complain- Updated Command to use Path.which Command.run and Command.call now make use of Path.which in order to test if the command is available or not. Also Path.which has been extended in order to support custom environments and to be able to test file permissions (read. write, execute)- protect systemd-detect-virt Protect systemd-detect-virt from being deleted in the kiwi initrd- Command validation This commit includes a validation in Command.run and Command.call in order to verify the existance of the command before running it. It case it is not found in the specified environment it raises a KiwiCommandNotFound Exception.- Detailed schema validation report This commit adds the execution of a jing process if the validation fails, that way the user has more information about what is actually failing during the validation process. If jing command is not found, it just produces an info message to warn the user and kiwi finalizes as expected.- Workaround Fix for pypi travis deployment Use all_branches: true, as we do only tag with bumpversion for a release this workaround works for us. For reference see https://github.com/travis-ci/travis-ci/issues/1675- Bump version: 8.19.6 → 8.20.0- Fixed suseSetupProduct Avoid shell complaining about binary operator- Fixed baseUpdateSysConfig Check if referenced config file exists- Delete obsolete use of SuSEconfig SuSEconfig was a tool long time ago and does not exist anymore- Delete obsolete sysV init boot code Traces of chkconfig, inittab, etc/init.d are gone now- Fixed suseSetupProduct Fixed shell variable evaluation syntax- Less complex user, group traversal- Simplified example config file- Updated get_users and get_user_groups methods Get_users method has been updated in order to be able to append the groups attribute when a user is defined in multiple sections in the description file. Appart from groups, all other user attributes are ignored if the user was already processed when parsing the description file. Get_users_groups method has been also updated so it returns a list of groups with unique values, keeping the description file order.- Updated xml_state The changes here modify the method get_users in xml_state in order to provide a simple list of users instead of nested lists. Also a new method to get the groups for a given user has been included in xml_state. This is done in order to slim down and facilitate the code in kiwi/system/setup.py. This way users and groups can be handled in more natural way.- Rebuild RNG schema and parser for 6.4- Auto validate XML descriptions for schema 6.4- Added schema conversion convert63to64.xsl- Bump kiwi schema version 6.3 -> 6.4- Fixed 6.2 to 6.3 XSL conversion Deletion of attributes of the same section must be handled in one iteration- Updated the user schema layout Now each user item may or may not have a groups attribute. The groups attribute is a comma separated list of group names. If present the first group name will be the login or primary group, if not present, the underlying toolchain will assign the default login group for that user.- New generated schema and parser- Some corrections needed after rebuilding schema and parser- Update true/false handling of text nodes The latest version of generateDS handles
true|false
text values in a way that it returns a boolean python type instead of the text string. With this change the kiwi code has to be adapted at the level of writing the shell profile which needs the string value of boolean information- Regenerate data structures Regenerate xml_parse with latest version of generateDS. The call works in the python2.7 tox virtual environment as part of the following make target: $ make kiwi/schema/kiwi.rng- Switch to latest version of generateDS Data Structures are auto generated from the XML schema. So far the development environment has requested an older version of generateDS which will go out of service soon- fixing user schema layout- Fixed typo in boot headers OpenSuSE vs. openSUSE- Fixed typo in translation OpenSUSE vs. openSUSE- Make sure awk is available in oemboot- Explain why bytes type is redefined In python2 bytes is string which is different from the bytes type in python3. The bytes type from the builtins generalizes this type to be bytes always. However the redefinition of the bytes type is marked as Smell in landscape. Thus the code should at least inform why this is done- Use six.Iterator instead of global object builtin The use of six.Iterator as base class for the CommandIterator seems more clear and explicit compared to the global object type overwritten by the builtins import. Fixes Smell reported by landscape- Added kiwi/archive/tar class description- extending kiwi/archive/tar- Fixing gce format build The patch is two fold, first it fixes the name of the raw disk when it is copied as disk.raw. Second it fixes the content list of the tarball to be dynamicly build instead of a static allocation. Reason for this change is that the list of files depends on the XML description whether or not a gce disk tag is configured. Fixes #113- Fixes #111: Included support for vdi format- Bump version: 8.19.5 → 8.19.6- Fixed changelog generator- Don't ask to start recovery in unattended mode If oem-recovery is setup in the XML description along with oem-unattended set to true as well we don't ask for confirmation to run the recovery when the recovery menu entry is selected at boot time- Release automatically on pypi (2nd try) Last try from 142ca22d8e was not working. Update the secure hash and also set explcitly the master branch when looking for tags.- Added integration build test link to doc index- Bump version: 8.19.4 → 8.19.5- Don't require an iso creation toolkit- Bump version: 8.19.3 → 8.19.4- prefer newer overlayfs mount method mount succeeds in compat mode but this mode should only be used on older overlayfs implementations- Bump version: 8.19.2 → 8.19.3- Message commit for bug reference Fixup of VMware disk tag references (bnc#988086)- Prevent duplication of context manager in test- Bump version: 8.19.1 → 8.19.2- Complete doc string for Path.which method- Implement Path.which Python provides methods to do this but we can't rely on them to be available in all python versions- Conditionally prefix encoding to vmware disk tag Prior code was always adding the encoding statement to vmware disk tag; in the event it is already present there's no need to add it a second time. See also https://github.com/openSUSE/kiwi/pull/586/commits/af1fed77af862dc44bd4322680425299ef5ad654- Remove null padding on the vmware disk tag The block of data read via dd is null padded; adding the tools data after the padding breaks detection of the data. We need to remove the nulls (0x0) so appends can occur adjacent to the block of strings. See also https://github.com/openSUSE/kiwi/pull/586/commits/ee8931c76c17c79d30a128c05cc6f839a1de7156- Update documentation Cleanup structure of contribution guide- Update documentation Complete documentation about required C libraries which needs to be installed prior to setting up the python virtual development environment- Fixup dependency on genisoimage Only for SLE12 the package requires genisoimage for any other distribution mkisofs is required. The community variant with genisoimage seems to be quite outdated. However, on SLE12 only genisoimage exists. Fixes #106- Lookup tool name by path lookup- Update import statement parenthesis only needed for multi-line multi-import- Refactor block depth on get_volumes return early if the condition makes it clear that there is nothing more to do in this method- Lookup iso creation tool Instead of strictly using genisoimage allow for using either the community variant or mkisofs as provided by J.Schilling- Refactor reading of volume variables in boot code Use new style profile variables without name limitations Related to #39- Refactor profile for volume setup Don't use volume names in bash variables. In addition that removes the name limitations we had for volume names Related to #39- Delete obsolete volume condition checks No need to check for LVSwap or LVComp in volume setup. If at all those volumes are created at boot time. Related to #39- Refactor use of kiwi_allFreeVolume_ Do not expect the value to come from an exported variable Instead a method to provide the information is implemented Related to #39- Bump version: 8.19.0 → 8.19.1- Fixup cleanup of intermediate config files kiwi uses e.g etc/hosts from the host system for proper name resolution during the build. The temporary variant of that file will be deleted by kiwi at the end of the installation process. However depending on the package manager and the distribution it could happen that the intermediate config file added by kiwi is treated as existing config variant. In case of rpm a .rpmnew file variant of the config file is created and that needs to be handled by kiwi. Therefore this patch adds a private restore method for the .rpmnew case. It might be needed to add other restore methods to deal with this issue depending on how other (non rpm) based package managers handles the situation. Fixes #104- Bump version: 8.18.9 → 8.19.0- Make sure mtab link exists in kiwi initrd On Debian systems the filesystem tools requires the presence of the mtab file, thus we make sure this file exists and links to proc/self/mounts- Refactor use of dialog program in boot code Cleanup the mess, provide only one method to run a dialog Prevent use of subshells for running the dialog program- Fixed use of shutil.copytree The target dir must not exist. However in order to force copy a potentially existing target is deleted before- udev console init requires kbd_mode on Ubuntu keep kbd_mode in initrd- Added oemboot description for ubuntu-xenial Also add kiwi linuxrc/preinit links for vmxboot- Allow alternative location for udev console init yet another name and location for the console init utility- Remove lxc configuration from docker images Docker does not use LXC execdriver anymore. Fixes #40- Bump version: 8.18.8 → 8.18.9- Fix linkcheck in container_builder.rst- Fix linkcheck in container_builder.rst- Bump version: 8.18.7 → 8.18.8- Update Documentation Update state of supported distributions- Apply editorial review changes- Apply editorial review changes- Apply editorial review changes- Delete traces of obsolete code- Prevent unconditional deletion of toplevel data The kiwi initrd descriptions calls suseStripInitrd() as part of the images.sh script. This function unconditionally removes toplevel directories like /home. Instead of deleting the data it is better to exclude them when the cpio archive is created- Bump version: 8.18.6 → 8.18.7- Added serial console support for isolinux loader Generate a serial line setup for the isolinux.cfg file according to the bootloader_console attribute from the XML description. In addition delete the use of the obsolete vga kernel parameter and work with the MENU RESOLUTION ui configuration parameter instead- Bump version: 8.18.5 → 8.18.6- Fixed setup of default install menu entry The attribute installboot allows to specify the default boot menu entry in an install image. It can be set to harddisk, install or failsafe install. The setup of that information in the bootloader configuration was not properly processed- Fix landscape Smells- Update location of build container- Update dice source link- Update Dice project location- Apply editorial review changes- Bump version: 8.18.4 → 8.18.5- Fixed building of install image If dracut is requested as initrd_system in combination with building an installiso we have to overrule the initrd_system setup for building the install image. The code to install an image is kiwi's oem install code and unknown to dracut. The process will end up using dracut as initrd in the system image but kiwi's initrd on the install image- Delete kiwi-tools from rhel boot descriptions kiwi-tools is no longer a requirement but an optional package It contains tools like utimer or dcounter which provides nice boot timer or progress dialogs for showing data transfer progress. In the Virtualization:Appliances:CommonBoot repo we provide mandatory and optional packages used by kiwi if they don't exist for the target distribution- Better warning message for root cmdline setup Under certain circumstance the root=UUID= parameter must be setup in the cmdline of the image. If the required uuid value is not provided a warning message is shown to the user. This commit makes the warning message more meaningful- Extend unit tests for boot image setup Expect kiwi_initrdname to be set in the profile of the boot image root system- Call plymouth only when installed- Add delete method for profile variables- Added article about self contained building The article describes how to make use of the dice project to control and maintain image build processes in a contained environment- Fix grub bootloader template Keep gfxpayload- Update bootloader console setup in boot code Use the variable kiwi_bootloader_console which represents the setup of the bootloader console from the XML description and setup the GRUB_TERMINAL configuration option to allow grub2-mkconfig to pick up the value. If no console setup exists in the XML description, gfxterm is used by default- Make bootloader_console availabe in profile The variable kiwi_bootloader_console is exposed into the profile environment- Delete obsolete code All traces of lilo and elilo are gone now- Fixed grub2 bootloader config template Load fonts only when they exist, do not duplicate font setup in template- Fixed bootloader theme check The check for the theme was not always called, but this is required since the theme check will reset the bootloader console if no graphics theme could be found- Bump version: 8.18.3 → 8.18.4- Apply back openSUSE 13.2 support Until Leap42.2 is not yet released we should keep the support for 13.2- Added support for setting the bootloader console Some bootloader e.g grub supports graphics, text and also serial consoles to hand over the output of the bootloader menu. With this patch we allow to customize the console used by the bootloader. So far only grub makes use of the new attribute This references Trello: https://trello.com/c/q9EhNKKV/155-support-for-grub2-serial-console- Bump version: 8.18.2 → 8.18.3- Fixed typo in message text- Fixed vmxboot/ubuntu-xenial boot description dracut should be installed to support initrd_system="dracut"- Update iso|vmxboot debian boot descriptions- Fixup ldd check for unused libraries- Update vmxboot/ubuntu-xenial boot description Complete description to be usable with kiwi initrd boot code too- Added baseCreateCommonKernelFile The stripKernel functions return early if the dracut initrd system is requested. However it is required in any case to lookup the kernel and provide a common name kiwi expects to be present- Set logger mode to append- Bump version: 8.18.1 → 8.18.2- Add distro flag match for Leap42.2- Bump version: 8.18.0 → 8.18.1- Preserve zypper package cache zypper deletes the package cache if a repo is removed. For the purpose of image building this should not happen- Pass initrd_system to profile The common functions baseStripInitrd and baseStripKernel need to be skipped if the initrd system is set to dracut. They read that information from the exported kiwi_initrd_system profile environment variable- Don't delete dracut from boot image environment If the dracut initrd system is requested we need dracut to stay in the environment from which it is called- Fixup copy_boot_delete_packages if no section exists in the target the code does not add the packages to become deleted. This patch changes the behavior in a way that a new section is created- Add isoboot support for Ubuntu system Next step to allow creation of Debian based live systems Related to Issue #37- Added suse-leap42.2 descriptions Obsolete suse-13.2- Update hyper links in project README- Rename kiwi boot code files Maintain them as common code base for all distributions During the years of development it has turned out that differences in the boot process between the distros can be handled in one code base. There is no need to maintain a basically identical copy for the different distributions- Style fixes: E275 missing whitespace after keyword- Delete obsolete C tools- Prevent use of setctsid setctsid is a suse extension to start a program on a new controlling terminal. While it is very useful it does not exist on other distributions which causes a problem in kiwi's common initrd code. This patch replaces the use of setctsid with setsid and sulogin- Open log file in mode 'w' and in utf-8 locale- Delete obsolete mkinitrd code This version of kiwi supports only distros using dracut- Delete obsolete sysV init console setup code- Make use of utimer in kiwi initrd optional- Bump version: 8.17.0 → 8.18.0- Adapt to common python style Private methods should start with _f() not __f()- Prevent temporary files to be synced to image The package manager instances created temporary package manager configuration files. The instance destructor and thus the cleanup of the instance should be called prior to the sync of the root filesystem data in order to prevent temporary configuration files to be present in the image- Grammar fixes for doc strings- Syntax change for Importing one module- Update test_load_schema_from_xml_content test Read schemaversion from RelaxNG instead of using a fixed value- debootstrap errors deserve their own exception- Avoid glob imports This could start a series of further changes in the unit test as we have allowed for glob imports there. So treat this one as a start- Add documentation for Exceptions- Support Tox with interactively positional arguments Use posargs for py.test, see http://tox.readthedocs.io/en/latest/example/general.html- Format message with named format parameters- Avoid re-assigning variable- Fixed unit test for profile variables- Handle XML per content or file more explicit- Differentiate between Python 2.7 and 3 in doc- State Python 2.7 in Trove category of setup.py- Refactor RootInit class Instead of calling multiple subprocesses make use of the os capabilities for directories, symlinks and device nodes- Fixed use of shutil.copytree- Update ubuntu xenial vmxboot description Make sure all drivers exists when dracut is called to allow inclusion of potentially all needed driver modules- Fix Lithuanian translation- Fix Ukrainian translation- Update grub2 config tempplate Load font collection- Refactor use of os.walk result- Integrate python improvement suggestions- Integrate python improvement suggestions- don't intermingle suse namespace with debian- Deleted libxslt-tools from spec template- Fixup indentation of travis setup- Fixed license setup in spec file- Remove unused import (F401) and an extra line (W391)- Fix tests for Python3- Fix tests for the XPath processing- Allow XMLDescription to be loaded also from the XML string- Release automatically on pypi for new tags When a new tag gets created, automatically release it on pypi so we don't have todo it manually.- Reimplement XSLT processing using LXML instead of calling 3rd party tools- Added tox 2.7 target for travis- Fixed creation of password hashes kiwi uses the openssl command for this purpose but did not strip the newline at the end of the hash output- Apply python 2.x compatibility decorators- Added tox target for python 2.7- python 2.x compatibility added new requirements six and future modules are needed for the compat layer- Fixup grub2 theme setup We can't expect that specific fonts to exist for all theme packages in all distributions. The code here should rely only on theme.txt In addition we check if any theme or font related data is found in the legacy grub location boot/grub which imho should not be used for grub2- Update ubuntu-xenial boot description No need for a drivers setup here, vmxboot is only the container to run dracut- Bring byte strings to Py2 compatibility in ISO- Make iterators Py2 comptible- Added boot image description vmxboot/ubuntu-xenial- Replace 'builtins.open' with patch_open decorator- Add mock_open and patch_open helpers- Remove double requirement- Use ConfigParser from six- Move urlparse to the Six package- Remove duplicate key- Add print function for Python 2- Add missing init file- Add Python2 compatibilitiy requirements- debootstrap installs apt-get Don't add the specified package manager to the list of bootstrap packages for apt-get, because that is covered by debootstrap- Allow additional bootstrap packages for apt-get- Don't run apt-get with mounted /dev- Fixed force-yes option for apt-get- Allow unattended installation of debian packages- Added PackageManagerApt class Support installation/removal of deb packages Related to #37- Support for apt-get package manager Starting to support Debian based distributions also means to support the deb repository types. This commit adds the RepositoryApt class to handle deb repositories for image building. Related to #37- Bump version: 8.16.5 → 8.17.0- Added pypi make target for upload Please note an appropirate ~/.pypirc file and registered user is required to upload- switch_root / pivot_root quiet call- Increase default boot partition size to be 300M- Delete obsolete isFSTypeReadOnly from boot code The check was used to detect if a read-only root filesystem is in use, which can be done by checking if kiwi_ROPart is defined- Refactor use of global FSTYPE variable The kiwi boot code populates a global FSTYPE variable which was used at several places. However there was no clarity for which storage device this filesystem value was detected for. Thus the entire handling has been refactored and there is no global FSTYPE variable anymore- Add attribute Allow to activate the overlay root setup for disk images- Bump version: 8.16.4 → 8.16.5- Update development status Status :: 5 - Production/Stable- Don't search for kiwicompat in fixed absolute path Allow alternative locations from search PATH- Integrate git attribute setup to sdist command- Add C tools binaries to git ignore list- Fixed command class name for distutils The overwritten build and install commands should not change their name in order to stay consistent on e.g --help- Fixed kiwicompat binary lookup The test for os.path.exists on just the binary name without a path specification always fails if not present in current directory. Let execvp do the job for us- Fixed entry point for kiwicompat- Use path lookup for kiwi-ng in kiwi_compat Instead of a fixed path use the PATH lookup. This would allow to install kiwi at alternative places as long as the path is part of the shell search PATH- Create completion data at build time- Move all build and install tasks to setup.py In an effort to distribute kiwi on pypi it should not be required to call make targets for a complete installation. Therefore the compilation of the C tools as well as the installation of the man pages and the bash completion has been added to setup.py. The spec file to build an rpm package has been changed to use setup.py exclusively- Delete obsolete .releasetags from MANIFEST.in This avoids a warning on setup.py build- Fixed warnings in C written tools- Bump version: 8.16.3 → 8.16.4- Fixed spec file update-alternatives is used, thus needs to be required- Support for overlay disk images overlay disk images uses a readonly root partition and are overlayed using overlayfs to hook in a cow based read-write space. This commit implements the basic disk setup. Implementation to boot such a disk in the kiwi boot code is still missing, as well as the investigation if dracut is able to boot such a disk too. References #65- Bump version: 8.16.2 → 8.16.3- Fixed completion generator In addition cleanup the main docopt definition- Fixed completion conflict with legacy kiwi- Bump version: 8.16.1 → 8.16.2- Fixed spec file rpmlintrc file must be mentioned as source- Bump version: 8.16.0 → 8.16.1- Update quickstart documentation kiwi can also be used as a module in other python3 projects. An example how to do that has been added to the quickstart- Bump version: 8.15.5 → 8.16.0- Added support for grub2 console switch entry An additional hidden entry allows the user to switch between the graphics and the serial console by pressing the 't' key. The kiwi grub2 template adds this switch if the terminal mode is set to graphics. The additional entries are only effective of the grub_platform is set to efi. Fixes #80- Fixed add_repo for zypper repositories Always run zypper addrepo in order to make any change in the repository definition to become effective- Fixed add_repo for yum repositories Always create the repo file from scratch in order to make any change in the repository definition to become effective- Bump version: 8.15.4 → 8.15.5- Split quickstart into two parts Split the quickstart information into a development and a user part- Bump version: 8.15.3 → 8.15.4- Added readonly check for persistent data When creating a partition for persistent data, check if the device class has the readonly flag set before trying to write anything there. Fixes #74- Bump version: 8.15.2 → 8.15.3- Fixed removal of a package in XMLState If a was unwanted in a section the former code sets the name of the package to a python None type. This causes the rest of the code to operate on potential None types which causes unexpected TypeError's under certain conditions. Instead of leaving an inconsistent package section the entire package section reference should be deleted from the packages instance holding it. Fixes #76- Exit code for --version call should be zero- Bump version: 8.15.1 → 8.15.2- Set config.sh and images.sh scripts as optional- Bump version: 8.15.0 → 8.15.1- Fixed landscape smell Unused variable 'key'- Fixed landscape smell Redefining built-in 'help'- Fixed landscape error Dangerous default value [] as argument- Refactor import_description split code into more readable parts- Make sure mandatory vmdk settings exists Even without a machine section configuration the minimum required information must be presented to the settings template- Added store_to_result for vmdk format The vmdk format provides more than the standard result store. for vmdk we need to store the vmdk and the settings file- Reduce amount of mountpoint check calls- Refactor subformat classes Add a generic store_to_result method which allows to store the format result files into an instance of Result. This allows to customize result handling per format when needed- Create VMware settings file for vmdk subformat In order to run or convert the vmdk with VMware products a settings file is required.- Added dropped features information for lxc- Bump version: 8.14.2 → 8.15.0- Fixed script/archive lookup If a script or archive is specified with an absolute path in the image description, kiwi should not assume this path to exist below the image description directory but just take the absolute path as it is. Fixes #70- Load logging at runtime for MountManager- Runtime checker message fixes Start with an empty line to improve readability- Integrate runtime checks for tasks Call appropriate runtime checks for prepare, create and build tasks. Fixes #20- Create instance of runtime_checker for any CliTask- Fixed building documentation- Reuse env in tox.ini Reuse virtualenv directory with envdir. Should speed up things a bit. Taken from https://blog.ionelmc.ro/2015/04/14/tox-tricks-and-patterns/#partial-environment-reuse https://blog.ionelmc.ro/2015/04/14/tox-tricks-and-patterns/#environment-reuse- Use more compact config for tox.ini Rewrite basepython to make it more compact Taken from https://blog.ionelmc.ro/2015/04/14/tox-tricks-and-patterns/#compact-configuration- Add requirements section in Quick Start * Describe what KIWI needs to run, further requirements, and for development * Introduce 'ghkiwi' as prefix in "extlinks" to shorten external links and to make linking to KIWI's GitHub repository more intuitive and consistent. For example, the string :ghkiwi:`tox.ini` is replaced with https://github.com/SUSE/kiwi/blob/master/tox.ini- Added check_target_directory_not_in_shared_cache Runtime checker method to check if the target directory was set to - or below the shared cache directory- Bump version: 8.14.1 → 8.14.2- Move creation of mountpoint dir to setup method The volume management classes should create the temporary mountpoint directory when it is needed and not when an instance of the class is created- Cleanup use of temporary directories All mkdtemp created directories are created with the 'kiwi_' prefix. In addition all code parts which leaves tmpdirs in the system after kiwi is done were fixed- Bump version: 8.14.0 → 8.14.1- Added python3-xattr dependency- Added xattr checker for DataSync class The method target_supports_extended_attributes() checks if the sync target directory supports extended filesystem attributes. The method is called on sync_data() and will remove the -X / -A options if provided. A warning message is issued to the caller if the rsync option list has changed because of the underlaying filesystem limitations- Fixed subformat creation The option -c makes only sense for the qcow2 subformat, whereas on all other format it cause qemu-img convert to fail- Use iterator protocol instead of StopIteration CommandIterator contains already the __iter__ magic method. We don't need to manually use while and next() in order to advance to the next element. => Code refactored to "for line in self.command" which does exactly the same job, but is better readable. Plus we avoid the nasty try...except block.- Remove kiwi.logger.init() function The init function is mostly unneccessary and can be directly created in the kiwi.logger module.- Remove useless __init__.py- Fixup usage messages- Bump version: 8.13.4 → 8.14.0- Added support for custom rootfs label A new attribute has been added This Fixes #66- Update grub2 bootloader template menuentries Mark all menuentries as --unrestricted. Fixes #64- Bump version: 8.13.3 → 8.13.4- Fixed shared local repository mounts- Bump version: 8.13.2 → 8.13.3- Added evaluation of imageincluded repositories repositories marked as imageinclude needs to be added permanently to the image. Fixes #56- Make xz the default compressor for squashfs When creating squashfs compressed files use xz as compressor if not other compressor is specified. Fixes #63- Added --add|delete package for prepare command Allow additional packages to be installed/deleted when calling system prepare. Fixes #62- Alpha sort option documentation Alpha sort options in usage and man pages- Added --add|delete package for build command Allow additional packages to be installed/deleted when calling system build. Related to Issue #62- Fixed completion generator complete for kiwi and kiwi-ng- Prevent double render on usage- Add check_image_include_repos_http_resolvable Runtime checker method to check if repositories marked with the imageinclude attribute are using a publicly available protocol- Add shared cache location to Defaults- Bump version: 8.13.1 → 8.13.2- Allow alternative if isolinux-config failed If the setup of the base directory failed because isolinux-config was not able to identify the isolinux.bin signature, we create a compat /isolinux directory and hardlink all loader files- Fixed typo in message Fix condition to show the grub module info message- Use program output for synopsis in documentation- Provide custom usage message Instead of the docopt way to show the usage information we provide a kiwi specific usage information. The usage data now always consists of: 1. the generic call kiwi [global options] service [] 2. the command specific usage defined by the docopt string short form by default, long form with -h | --help 3. the global options- Fixed loadSELinuxPolicy enforce policy is located in /sys/fs/selinux- No authconfig on RHEL >= 7- Activate SELinux for RHEL systems Added new boot method loadSELinuxPolicy and call it as part of the rhel-preinit phase. This put SELinux in enforcing mode also from the kiwi initrd- Handle fsmountoptions attribute in all builders- Refactor custom_args handling for VolumeManager class Allow for two elements fs_create_options and fs_mount_options in a VolumeManager instance and pass along the information to the FileSystem and MountManager instances- Refactor custom_args handling for FileSystem class Any FileSystem class can receive a custom_args dictionary which by defaults ensures the presence of an empty list for create_options and mount_options. The create_options are used in the subclasses when the filesystem is being created and the mount_options are passed to the MountManager when the filesystem is mounted for e.g data_sync- Make kiwicompat understand --version | -v option- Small spelling corrections Apply title style: * package -> Package * module -> Module * Use backticks for kiwi.* modules to avoid spelling problems- Update spell-checking wordlist GitHub, JeOS, KIWI, LXC, squashfs, stderr, stdin, stdout, Submodules, Subpackages, zypper- Add "spell" rule in Makefile Also included in the help target- Enable Acronyms, importable modules, and builtins- First draft to "beautify" HTML appearance * Add GitHub button and "Fork me" widgets * Add Travis button * Remove obsolete code- Bump version: 8.13.0 → 8.13.1- Added support for SELinux file security contexts Systems using SELinux require the filesystem data to be labeled according to a security context configuration. kiwi now checks for the presence of /etc/selinux/targeted/contexts/files/file_contexts and labels accordingly if it exists. This Fixes #52- Make grub2 installation path lookup dynamic Not all linux systems installs grub2 below /usr/lib/grub2 For example RHEL7 packages it below /usr/lib/grub. Therefore kiwi needs to be flexible with this path- Used :returncode: for sphinxcontrib-programoutput Fix a warning when calling "kiwi-ng". As the script returns 1, it is considered to have failed by the program-output directive. The returncode line fixes that. See more info here: https://pythonhosted.org/sphinxcontrib-programoutput/#error-handling- Integrate version string from placeholder Use |version| placeholder, no bumpversion etc. is needed. Actually, it's taken from conf.py- Added RuntimeChecker class An instance of RuntimeChecker allows to semantically check for error conditions according to the provided image description and build options. Related to #20- Spell checking doc and extended word list- Add filesystem requires in kiwi-boot-requires In order to have all filesystem creation tools available when building in the buildservice we need to require them in kiwi-boot-requires- Bump version: 8.12.0 → 8.13.0- Set ident export-subst git attribute on version.py- Bump version: 8.11.0 → 8.12.0- Fixed documentation link references Use redirected target and fix broken targets according to link check on make build- Fixed typo in documentation Missing question mark at end of sentence- Bump version: 8.10.1 → 8.11.0- Fixed typo- Added Legacy KIWI vs. Next Generation chapter- md -> rst, radically shortend README- More substantial changes of the doc * Overall: try to be more consistent * index.rst * Move "Supported Distributions" and "Dropped Features" sections * Quick Start: * Add abstract * Add note about automatic link creation * Move "example appliance description" sections and subsections further down * Streamlined "Contributing" section * Corrected titles and distinguish more between descriptive and procedural- Remove useless substitutions (placeholders)- Add KIWI logo- Move Motivation section from quickstart to index- Correct heading and remove build status- Add QuickStart Guide and improve documentation * Added Quick Start Guide, taken from README.md * Improve index/main file: * Shortend main entry page * Make more headings * Add feature highlights to draw attention * Add sidebar with important KIWI links * Use ordered list of KIWI concept (prep and creation step)- Add package manager requirements in spec file- Update README- Update README- Update README- Move program name from kiwi-py3 to kiwi-ng- Added genisoimage requirement to kiwi spec file On SLE12 we only have genisoimage, on Leap and Tumbleweed we have both genisoimage and mkisofs. For the moment both toolkits produces working iso images with kiwi, thus I chose the save default with genisoimage- Be more flexible for isoinfo lookup isoinfo can either be provided by the community package in /usr/lib/genisoimage/isoinfo or by the mkisofs package from J. Schilling in /usr/bin/isoinfo. kiwi should be smart enough to lookup which tool is installed. /usr/bin/isoinfo will be preferred- Update README Added link to documentation- Try with latest version of travis-sphinx- ghp-import required for travis-sphinx deploy- Make sure enchant library is present for travis- Update tox setup Update TOXENV targets- Move travis-sphinx build tox target to script section- Use tox target for travis-sphinx- Put travis-sphinx build into script section- Make travis-sphinx deploy work It's required to call travis-sphinx build in order to be able to run the deploy command- Fixed documentation linkcheck results- Make sure shared mount directories exists Create shared directory path on the host _and_ in the new root directory to make sure the bind mount works- Update documentation entry page- Use travis-sphinx to deploy doc to github https://suse.github.io/kiwi- Fixed package requirements libxslt-tools provides required xsltproc- Update README for style and markup- Fixed README, wrong markup- Update README Add information how to build with dice- Add part_msdos module for self build EFI image- Update tox.ini Documentation building requires sphinx_rtd_theme and sphinxcontrib-programoutput- Update volume_manager inline API documentation References #49- Update utils inline API documentation References #49- Update tasks inline API documentation References #49- Complete system inline API documentation References #49- Use Path.wipe instead of directly calling rm- Update system inline API documentation References #49- Update storage inline API documentation References #49- Fixed typo- Cleanup use of partition id maps For the partition setup the Disk class uses dictionaries to map the partition name to the partition number. However there are public partition names such as 'kiwi_BootPart' and kiwi internal partition names such as 'boot'. The code should make it more clear which mapping table is used- Update repository inline API documentation References #49- Update partitioner inline API documentation References #49- Complete bootloader inline API documentation References #49- Update README Add chapter about signing commits- Update README- Update README- Update package_manager inline API documentation References #49- Update filesystem inline API documentation References #49- Update container inline API documentation References #49- Update builder inline API documentation References #49- Update bootloader/template inline API documentation References #49- Complete bootloader install interface- Update bootloader/install inline API documentation References #49- Move get_failsafe_kernel_options to Defaults- Update bootloader/config inline API documentation References #49- Update boot/image inline API documentation References #49- Update archive inline API documentation References #49- Delete traces of zfs support- Update inline API documentation References #49- Update inline API documentation- Update inline API documentation- Update inline API documentation- Update inline API documentation- Ignore auto generated code for API docs- Update inline API documentation- Update api documentation setup- package kiwi-pxeboot must not be noarch We want to specify for which arch we provide it. Thus it's not allowed to specify it as noarch even though it provides only noarch data- Create Initial autodoc structure Called 'sphinx-apidoc -o source/api ../kiwi'- Fixup docstring for kiwi/command.py- Move manual page documentation in subdirectory Separate api documentation from manual pages- Update virtualenv development setup make sure we can build the docu in the development environment- Add docstrings for Cli class References Issue #49- Fixed ppc setup of etc/default/grub_installdevice On power grub must be installed into the Prep partition into the master boot record of the disk- Add Python 3.5 to be consistent with Travis- Fixed logger unit test- Make color output an option By default no color output is used- Added missing kiwi-packagemanager provides The buildservice looks up for a package manager capability- Fixed spec file syslinux is not a requirement for the base package- Check for derived description path in prepare too- Refactor SystemSetup class the information about the description_dir is part of the provided xml_state instance. There is no need to pass that information along twice- Fixed use of derived_description_dir Only in import_description we need to check for both locations- Make sure import_description preserves archives- Refactor InstallBootLoaderGrub2 constructor architecture dependant device setup belongs to the install method where it is actually needed. That prevents the construction of the instance to be architecture specific- Make list of efi grub modules arch dependant- Revert "Delete efi_uga module from list" This reverts commit 191d423eb571d3cc08f34b5e4ef15eb6296a6563.- Delete efi_uga module from list- add multiboot grub module only on demand multiboot is only needed for self build grub images in Xen guest mode- Don't raise if kversion exits with error In this case a default value applies- Activate partitioner support for arm- Add optional derived_from param to XMLDescription An instance of XMLDescription can now optionally become constructed with a path to an image description this instance was derived from. This is currently used for building the kiwi boot image to tell the boot image XML description instance from which system image instance it was derived from- Evaluate default video mode for iso images- Added custom profile for arm/oemboot/suse-tumbleweed- Update firmware types for arm architectures Add efi and uefi as allowed types, complete architecture name list set efi as default firmware for arm- Added pre/post hooks for bootloader setup/install preInstallBootLoader, postInstallBootLoader preSetupBootLoader, postSetupBootLoader- Fixed architecture dependant tests- Added support for virtual boot partition on arm Triggered by the firmware="vboot" setup an EFI setup plus a raw partition without filesystem is created as first partition. The size of the partition can be controlled by the vbootsize attribute. The vboot feature is used by the arm architecture to provide a space in the partition table for custom code as required by e.g the chromebook. The final customization of the vboot space is board specific and can't be implemented in a generic way in kiwi. For finalizing the vboot space the script hooks editbootconfig and editbootinstall can be used This is related to Issue #17- Rename partition id kiwi_JumpPart to kiwi_EfiPart This makes it explicit for what purpose the partition is really used. EFI is not configured the same for all architectures but what is consistent is that on this partition an efi image is located to become loaded by some firmware- Activate boot partition only for msdos tables- have tar preserve all xattrs By default tar will only preserve a subset of the capabilities with --xattrs. Adding --xattrs-include=* should preserve all capabilities (e.g. user.*, security.capability etc.).- Preserve hybrid GPT status on boot Added createHybridGPT method and setup the hybrid GPT/MBR table if requested by the XML configuration. In addition move the partition activation call also into the partition table finalize method. This is related to Issue #17- Refactor partition table setup code Added two methods preparePartitionTable and finalizePartitionTable which are used to prepare the partition table to allow resizing and to finalize for partition flags after resizing. This replaces the updatePartitionTable method- Delete obsolete GPT fixup code Related to bnc#825221 code was added to recreate the disk with a new GPT label. The reason was that parted created a gpt_sync_mbr partition table when kiwi repartitioned the disk to use the full geometry. This was an unwanted behavior by parted and causes the additional code in kiwi. The current parted version behaves correctly and thus makes this additional code obsolete- Added support for hybrid GPT Embedding an MBR into a GPT is required for a collection of boards, e.g arm rapberry PI. The kiwi configuration provides a new attribute called , initrd-- Skip local repos if they don't exist Instead of raising an exception if a local repository does not exist, we will continue with a warning message. This is needed for a flawless integration with the buildservice. Inside of a buildservice environment only those repos are setup from which packages were taken. Thus it can happen that a configured repository does not exist in the buildservice build environment if the resolver would not take any package from this repository. kiwi should not fail to build such an image- Avoid lvcreate to ask for wiping swap signature When kiwi creates the logical volume for the swap space and there is already a swap signature at the place on disk, lvm stops and asks what to do with it. This should be generally avoided at that stage in the boot process Fixes (bnc#968601)- Calculate checksum in chunks- Don't prevent an oem image from a custom disk size An oem disk ist a self expandable disk and thus it normally doesn't make sense to specify a disk size for it. However there are filesystems like btrfs which are very hard to precalculate a minimum required disk space for X bytes of data. In this situation a user should have the opportunity to specify a size- Don't call dracut in background from kiwi initrd This was useful to speedup the boot but opens a potential race condition if a reboot happens while dracut is still processing. With the last extension to use dracut as initrd system people now have the choice what fits their needs better and this allows us to revert the background call- Added support for using dracut initrd As of today only the kiwi initrd could be used with an image build. This commit adds a new initrd_system attribute and allows to select between kiwi and dracut as initrd system. Please note the dracut initrd does not support all features of the kiwi initrd. This fixes #25- Add a feature drop list to the README- update MANIFEST.in due to structure changes- Update README Use the real executable name for the documentation- Continue Refactor into subpackage storage operations should have their own namespace- Continue Refactor into subpackage container and container_setup should have their own namespace- Continue Refactor into subpackage disk namespace init is not a factory, thus the Disk class should have its own namespace. We choose disk.storage- Continue Refactor into subpackage rename dformat to subformat- Continue Refactor into subpackage The builder classes should have their own namespace- Fixed update alternative setup for kiwi completion kiwi itself is provided as update alternative for kiwi-py3 Thus the completion should be based on kiwi-py3- Refactor into subpackage to fix #23 Codecoverage are 100% and tests are green Changes: * Refactor archive_*.py -> archive subpackage * Refactor partitioner_*.py -> partitioner subpackage * Refactor package_manager_*.py -> package_manager/ subpackage * Refactor bootloader_config*.py -> bootloader/config/ subpackage * Refactor bootloader_template*.py -> bootloader/template/ subpackage * Refactor bootloader_install*.py -> bootloader/install/ subpackage * Refactor repository*.py -> repository/ subpackage * Refactor filesystem*.py -> filesystem/ subpackage * Refactor dist_*.py -> dist/dformat subpackage The name `dformat` as package name is needed to avoid any name conflicts with the built-in function `format`. * Refactor volume_manager*.py -> volume_manager/ subpackage * Refactor boot_image*.py -> boot/image/ subpackage- Remove unecessary Travis requirements- Fix check target Didn't have a basepython line, fixed strange tox error- Enhanced Contributing, add new Developing section * Create a procedure in section Contributing * Add new Developing section to describe how to use tox- Fixed device map for VolumeManagerBtrfs The return value from get_device must be a map containing an instance of a DeviceProvider, not only the DeviceProvider- Refactor use of mount/umount calls Provide a MountManager class and handle all mount/umount calls in instances of MountManager- Don't write grub.cfg to EFI directory Originally the file was written there as reference, but nothing will ever update that file if the real grub configuration changes. Thus it doesn't make sense to provide this information (bnc#968270)- Add support for POWER architecture Implements requirements for the partition and bootloader setup in order to build images for ppc64 architectures. Fixes #18- Refactor grub2 bootloader installation Make use of grub2-install to install the bootloader- Changed debug log in case of failed command Also log the stdout data from a failed command. So far we expected error data on stderr but there are also commands which print error messages on stdout. It should us at least worth a debug message with this information- Use tox in .travis.yml, remove .travis.script- Fixed helper/kiwi-boot-packages Take care for packages marked for a specific architecture- Delete unused helper/run-pep8- Adapt make flake target to changed tox target- Add --cover-min-percentage=100 and helper script- Fixed spec file for kiwi-boot-requires The meta package for the buildservice has to require the new python3-kiwi package- Use --cover-min-percentage=100 instead of coverage- Replace helper/coverage-check with coverage Use --fail-under=99 option which fails for tests under 100%- keep packages in yum cache- Rename flake -> check, move spell * Move spell target/step to doc.spell * Call doc.spell in the doc target/step * Rename flake to check (to make it independant of any tool)- Spelling fixes- Tox setup updates Integrate with Makefile, delete pep8 target from Makefile, use flake8, update travis script, delete coverage reference, we want 100% anywhere- Fixed raid_device_test The test did not mock os.path.exists and thus could fail on systems which uses a raid system- Update word list- Remove empty line to avoid error message Avoid following error message: CRITICAL **: enchant_is_title_case: assertion `word && *word' failed- Activate personal spellchecking dictionary- Open travis check for all branches- Added kiwi-filesystem provides to spec template The main python3-kiwi package provides support for these filesystem image types- Integrated Tox * First incarnation of tox.ini * Extend MANIFEST.in * Add doc/requirements.txt * Extend conf.py with 'sphinxcontrib.spelling' extension * Add wordlist to doc/source/spelling_wordlist.txt * Add flake8 section in setup.cfg- Fixed cmdline lookup Only check contents of cmdline if it is not None- No fdupes checking required anymore- Don't track root/usr/share/locale in boot images The data there is now generated by the make po target- Fixed fuzzy i18n for en_US/LC_MESSAGES/kiwi.po- Added kiwi-image provides to spec template The main python3-kiwi package provides support for these image types.- Prevent any output if quiet is set If exec >/dev/null is run before setterm clears the screen, then "Failed to find cpu0 device node" is displayed even if quiet is set.- Fixed shell syntax in grub2 template Fixes (bnc#961334)- Refactor suseStripKernel The way the method downsizes the kernel tree is wrong in several places and very hard to read. Therefore the code has been refactored and splitted into task methods which can run independently from each other. As one result the kernel tree is not missing any metadata and/or update weak-updates paths anymore. Fixes (bnc#965830)- Remove flush before resize filesystem According to the manpage, -F is flushing the fileystem buffer caches. which is only really useful for doing resize2fs time trials. With current Tumbleweed installed on MMC, -F triggers a Inappropriate ioctl for device while trying to flush error, and then fails to resize.- Update arm boot image descriptions Grub2 adds 35MB to the initrd for no reason on armv6/v7, as those images use u-boot scripts for booting.- Fixed checkFileSystem call In the refactoring fc363cc, the parameters of checkFileSystem got changed to expect the device name, but one of the invocations didn't pass down the device name due to a typo.- Ignore fdasd errors Like fdisk, fdasd also reports an error when re-reading the partition table. But the table was written correctly so we continue for the moment and add a debug message- Fixed boot image result filename Has to follow the naming convention- Fixed pxe builder kernel/hypervisor target path- Use bytes type with hashlib- Refactor result bundler instead of being clever in the result bundler we should be more explicit when adding a result to the result instance. Therefore the result.add method now also allows to specify if this result should be part of a result bundle and whether it should be placed compressed or uncompressed in this bundle- Added metadata rpm files to all builders rpm packages and verification information is now added to all builder results. Fixes #13- Fixing code smells from Landscape.io https://landscape.io/github/SUSE/kiwi/161/messages/smell Fixed issues: * Unused imports * Unused variables * Specify string format arguments as logging function parameters (log.warning("%s bla" % x) -> log.warning("%s bla", x)- Ignore backup files- Added the following system setup methods export_rpm_package_list and export_rpm_package_verification Used to provide rpm package metadata and verification information for rpm based image builds- Improve doc * Consistently use KIWI * Fixed punctuation * Added zypper ar for adding KIWI's OBS repo- Fixed unit test read return result Unit test mocking read should return a bytes array and not a string because that's what python3 would do in reality- Fixed path location in disk_format_image result- Fixed disk format builder This one was missing the output image name adaptions- Regenerate xml_parse data structures for python3- Better error response in debug output If a Command.run fails with an error code != 0 but not data was produced on the stderr channel, we provide this as information to the caller- Port kiwicompat to python 3- Port helper tools to python3 Also fixes completion to correctly parse the toplevel --compat option- Do not activate dmraid paritions Only activate the device itself, not the partitions, that may also exist. If partitions exist, the UDEV rules will create the corresponding "_partX" symlinks for each partition within "/dev/mapper, which is totally sufficient.- Fixed cut and paste error in spec template correct the project Url- Update README add install information for python3-devel- Fixed README wrong reference to env2 where it should be env3- Update README- Update travis env to python 3.4- Port application from python 2.7 to 3.4 For new applications like this kiwi version and its use cases it is better to base it on a more recent python version- Fixed bundling container results Container images are already compressed, there is no need for the bundler to do that again- Use pinch_system with force in any case Deletion of packages should be done with the force flag set. Otherwise the package manager computes a resolved list for the deletion targets which causes other packages to be deleted which is unwanted- Fixed host to image root data setup On bind mounts check if the origin path exists on the host. On copy check if the origin file exists on the host- Fixed deactivate_systemd_service Check if the service file exists, if not there is no need to deactivate an non existing service.- Use alternatives mechanism for completion file This avoids the package conflict with the legacs kiwi version- Weaken kiwi-tools requirement- Handle 32bit Intel arch as ix86 in boot code- Allow building 32bit bios images- Delete %post from kiwi-pxeboot We do not provide a default config file for the pxe setup anymore. There is no good default file we can provide here because we don't know how the user has configured a pxe image. The documentation should explain how to setup the pxe config and infrastructure with the help of the static data provided by the kiwi-pxeboot package- Don't require python-Sphinx at build time Sphinx is not available on all platforms and required only to build the manual pages. Thus the make build target can build the man pages and pack the result into the source tarball- Don't strip ctc_configure from initrd ctc_configure is used on s390 images- Added man page for result bundle command- Added result bundler- Added kiwi-boot-requires buildservice meta package- Delete unused .releasetags helper Fixes #9- Update README- Update README- Added system update manual page- Create manual pages Create man pages for result list, system build, prepare and create- Added pv xen drivers to boot descriptions Beginning with SLE12 SP2 the default kernel is a pvops capable kernel. This means it can be used in a Xen HVM full virtual machine as well as in a PV - paravirtual machine. However it's required to keep the paravirtual net, block modules in the initrd. As their location also has move an update of the boot image descriptions was necessary- Fixed wait message in waitFor boot functions Better indicate for what we are waiting- Load xen modules by alias only- Fixed validation of custom root cmdline variable A variable of the format root=LABEL=x was not correctly validated- Change default ec2 root_cmdline_parameter For ec2 based firmware the value root=UUID=x is provided instead of a static device node- Refactor internal boot image task Make a factory out of the task and allow to have e.g a dracut boot image task at a later point in time. The BootImageBase class creates an interface for this implementation. So far only BootImageKiwi is implemented- Added export_modprobe_setup method to SystemSetup export_modprobe_setup copies the contents of etc/modprobe.d to a specified target root directory. The method is used to transfer the modprobe configuration from the system image to the boot image- Fixed archive_builder_test Mock platform value- Added compatibility information to main man page- Put arch and version to output image file name- Added quick start example to main kiwi manual page- Fill master manual page with content- Added git like command completion Provide a 'Did you mean' log message for unclear task names- Update README- Fixed non-executable-script rpmlint warning- Man pages are below level 2- Fixed rpm-buildroot-usage rpmlint warning- Fixed non-executable-script rpmlint warning- Delete unused .md5 script- Fixed rpm package build- Fixed dracut call Always create a generic initrd, don't pass -H- Fixed custom args setup for vmdk format custom args is a hash with option/value pairs. For vmdk the option could be e.g adapter_type=value and the value is None. This is by intention because qemu which receives those type of options allows only the syntax "-o option=value". The kiwi code setting up the options did not check correctly if there really is a value for e.g adapter_type- Allow alternative locations for grub installation Different distributions install grub2 to different places. Therefore kiwi should not use a fixed location but allow to lookup grub data at several places- Fixed unit test for fix_boot_catalog on big endian- Fixed unit test for fix_boot_catalog on big endian- Make sure to cleanup yum requests after processing- Fixed CommandIterator check for output before sending an iteration stop- Fixed stateful copy of repository section Profiles are not copied because they might not exist in the target description- Fixed host to root path patcher Don't be confused by multiple /'es- Added support for yum package manager- Fixed use of iso mounted repositories When using an iso as repo, kiwi mounts it to a temporary location. The location is different for each build and therefore the zypper repo file needs to be recreated for any new build in this situation- Check if config file exists Before updating a config file, check if it exists. If it is not present skip the configuration and print a warning message- Added yum repository support- Make man install target more stable- Update source manifest include only doc Makefile and source, the pages are build at build time- Include installation of man pages to spec file- Added man page templates for all commands- Added man page templates Added template for master page and result_list- Added initial sphinx documentation structure The documentation will cover kiwi manual pages. more detailed documentation will be written and maintained in colaboration with the documentation department- Fixed use of noglob shell option- Added support for kiwi --compat The --compat call will trigger the call of the kiwicompat tool written to support legacy kiwi commandlines. An example could look like the following call: sudo kiwi --compat -- --build /my/description --type vmx -d /my/dest Please be aware the -- is required to tell docopt to treat all options as parameters- Prevent duplicate error logging- Refactor CommandProcess class Use an iterator class to run through the process. implement poll variants explicit and clear structured- Fixed updateRootDeviceFstab Support by-label mount entries for btrfs subvolumes This fixes bnc#964474- Add kiwicompat to Makefile build and install target- Update README- Update README- Bump version: 8.10.0 → 8.10.1- Prepare for package building- Follow up fix for fstab setup Use the system installed fstab as default if present- Support building in buildservice worker The repo setup inside of a buildservice worker uses a static path below /usr/src/packages/SOURCES/repos/. We need to adapt the provided obs uri type to match this criteria- Don't add kernel filesystems to fstab Systems with systemd which this kiwi version aims for, doesn't need proc, sysfs, debugfs and friends to be part of the fstab This fixes bnc#964472- Fixed btrfs build with snapshots- Allow system to be installed on btrfs snapshot This fixes (bnc#946648)- Put kiwi_btrfs_root_is_snapshot to boot profile- Recompile schema and data structures New attribute btrfs_root_is_snapshot and methods- Evaluate kiwi_btrfs_root_is_snapshot in boot code If set it's required to mount the subvolumes like it is done with lvm volumes. In addition this patch fixes the update of the fstab file which has to contain an entry for each subvolume excluding snapshots and the toplevel This is related to (bnc#946648)- Added btrfs_root_is_snapshot attribute This is related to (bnc#946648)- Added fix_boot_catalog and relocate_boot_catalog- Prevent duplicate validation of cmdline- Fixed grub2 xen guest bootloader config- More modules not present for grub2/x86_64-xen- There is no multiboot module for grub2/x86_64-xen- Make sure get_partition_table_type returns a value- Use bash to call config scripts- Fixed regular expression pattern use re.escape to make sure the search string has special regular expression characters quoted correctly- Added support for using internal build service An option --obs-repo-internal was added- Add support for alternative config file *.kiwi- Allow to build directly from buildservice checkout- Fix misleading variable name- Move default boot timeout to Defaults class- Fixed boot exclude for zipl case- Fixed zipl bootloader setup and install quote special characters in title for menu. refactor the zipl bootloader install class to know about the boot partition device node- Added title quoting method for older loaders- Move VTOC creation into Disk class- Fixed missing setup_disk_boot_images for zipl The interface class implements this with a raise condition by default. For zipl no bootloader images needs to be created Thus implement the method and pass- Fixed typo in list assignment- Fixed LoopDevice class custom blocksize value must be passed as string to the command level not as integer- Platform fixes for XML tests- Platform endian fix for vhd tag test- Platform fixes for unit tests- Platform mock for grub2 bootloader tests- Platform mock for grub2 bootloader tests- Added BootLoaderInstallZipl class- Activate zipl bootloader config in factory class- Finished BootLoaderConfigZipl class and tests- Delete unused patch statement from test- Added BootLoaderConfigZipl class The implementation is still unfinished- Pass the disk device to the bootloader config As a custom option the BootLoaderConfig instance now receives the target disk device node. So far this is only used in the zipl case where it is needed which is the reason why it is kept as a custom argument- Allow custom options for bootloader config classes- Added zipl bootloader template- Added partitioner_dasd for s390- Refactor Firmware class more information from the XML description is needed in order to make e.g decisions about the partition table type to use according to the firmware setup in combination with e.g the target loader type on s390. Thus the class now receives an instance of the XML state and not only the firmware attribute value- Disable setup of hwclock hwclock seems not exist on all supported architectures. In addition the build process should not fiddle with the build host hardware clock- No need for a condition if there is no alternative- No need for a condition if there is no alternative- Use 800x600 default for grub2 gfxmode- Close progress line with CR when finished- Added ImageBuilder factory- Added system build command Allows to combine prepare and create into one big task- Better error message for pickle exceptions There is no meaningfull error message for pickle.load exceptions. Thus only provide the exception type and our own message- Use pickle instead of marshal- Fixes for the container builder in the setup if the files to update do not exist the process failed. This patch adds a check prior to changing the file- Make sure the create task creates the target dir- Fixed result object dump marshal.dump requires an open file object not a filename- Added ContainerBuilder currently supports building of docker containers- Added ContainerImage class Factory plus implementation for docker- Refactor variable name for root directory If it is clear the source directory is the root directory of the image the variable should be named root_dir not source_dir- Fixing landscape issues- Added ContainerSetup classes Base and Factory plus implementation for docker- Refactor user/groups setup Provide an easier to travers data type in xml_state for the user and groups. The get_users() method returns a list of tuples which assigns each user list the group name and id it belongs to- Use normpath to avoid double slash in output- Added kiwi result task Implementing 'kiwi result list' which marshal loads the serialized result instance from a previous build and shows the build results- Dump the result instance as a marshal dump- Add clic as supported live media build target- Added FileSystemClicFs class- Fixed contents of header_end block off by one bug- Finished LiveImageBuilder for overlay iso type- Added check if UDF extension is needed or not- Put supported live image iso types into defaults- Added live ISO grub2 efi template and setup- pep8 fixes- Rebuild schema and data structures- Allow xfs as hybrid RW file system- Continue with LiveImageBuilder class Added isolinux bootloader setup, finished live build procedure Live metadata injection still missing. grub2 efi boot for live image still missing- Don't use filesystem specific mount option When mounting the read write filesystem, prevent using filesystem specific options like barrier- Use HYBRID_EXT4_OPTS in fat container filesystem- Check read write filesystem prior to mounting If a filesystem type could be identified on the read write partition check it before mounting to eliminate a potential dirty state- Cascade exfat mount try normal mount first, if this does not work try fuse mount Normally this is done automatically by the mount program but if not we will give the direct fuse mount a chance- Fixed Makefile target to build data structures A change in kiwi/schema/kiwi.rnc triggers the build of the schema rng version as well as an auto update of the data structures via python's generateDS. The intermediate xsd schema format is only relevant for the data structure creation process- Make createFileSystem more robust When passing in a loop file instead of a device name, the method should be smart enough to handle the name without shell evaluation- Added support for exfat as hybrid filesystem In addition to fat also exfat is now supported as persistent write filesystem. Because of the limitations of a fat filesystem fat and exfat are only used as a container filesystem providing an ext4 linux filesystem as a cowfile. The algorithm to create the size of the cow file has also been changed to use half of the size of the write partition or on fat a max size of 4G. The size of the cowfile is also prepared to become overwritten. However the XML definition and implementation to do this is still missing- Reread partition table after hybrid setup The hybrid write partition is created via fdisk. Some version of fdisk does not send the ioctl to let the kernel reread the table or fdisk itself holds it busy. Thus we actively initiate a reread via blockdev- Optimize ext4 hybrid write filesystem options Optimized for 512kB erase block size- Use mount options to increase overlay performace For overlay filesystems not writing into a tmpfs performance is more important than safety. We use this combination of options for now, if you encounter stability problems please let us know- Use -f force option for extX filesystem checker- Refactor and cleanup setupReadWrite Fix misleading error message and refactor the code to be less complex and more clear in the processing of tasks- Allow custom cowfile name for persistent data Instead of a fixed name 'cowfile' we allow a custom name which is predefined in HYBRID_PERSISTENT_FILENAME and prepared to become overwritten by an XML defintion whose implementation will follow later. Reason for the change is that a cowfile is visible as plain data file to the operating system if e.g used on a live stick. It should be more clear to the user what this file is good for- Protect mkfs.exfat from being deleted Added to the strip tools section in order to keep it in the initrd- Added support for exfat creation and probing In preparation to use exfat instead of vfat in a loop container for persistent data it's required to provide support for mkfs.exfat- Make loop_setup and loop_delete more robust The methods did not cope well with filenames containing bash characters with special meaning e.g spaces. For use with a iso hybrid cowfile whose name is visible in the OS the methods should be able to work with any given filename- Started with LiveImageBuilder class Added interface and required steps. tests and implementation are missing and will follow- Added archive builder- Added repo handling to compat caller Also added process execution with translated arguments- Add compat translation for prepare/create/upgrade- Added kiwicompat to support legacy commandline- Added install pxe archive support- Added warning message if pxedeploy section is used At the moment there is no class to build the pxe client config file from information provided with the optional pxedeploy section. However this is not fatal to the build because the file could be created manually too. Thus a warning message is shown which will go away when the pxe client config file creation has been ported- cleanup test data to be consistent- Added recovery setup- Added DiskFormatGce class implementation- Fixed suffix name for compressed archives- Added creation of gnu and xz archives to tar class- Refactor result collection Put the creation of a result object into the builder classes and return them from there. The builder instances knows about the results not the task instances- Fixed option handling for vmdk format- Activate disk format building in disk builder If disk format and install media is configured together only the install media will be built and a warning message for skipping the disk format is shown- Added custom argument handling for disk formats- Added DiskFormat factory- Added DiskFormatVmdk class implementation- pep8 fixes- Added DiskFormatVhdFixed class implementation- Delete unused test data symlinks- Added DiskFormatVhd class implementation- Added DiskFormat base class Also added implementation for DiskFormatQcow2. More format classes will follow next- Fixed import of kernel parameters including spaces Kernel parameters like PRODUCT_TYPE=“PRODUCT BANANA” breaks the code in includeKernelParameters. This patch allows spaces for values in a way that it replaces the embedded whitespace with \030 before parsing and then reverting after parsing. Thanks to Jay Nitikman for providing the patch- Fixed LUKS setup for dracut The system image has to provide /etc/crypttab to allow dracut to create a working initrd for reboot. In addition the name of the luks map must be 'luks' to make dracut happy.- luks setup triggers boot partition by default- Add LuksDevice class and implementation Also implemented luks support in DiskBuilder- Handle /boot/vc files for Raspberry Pi openSUSE Tumbleweed raspberrypi-firmware[-branding-openSUSE] packages have been updated to install files to /boot/vc rather than /boot. Ensure that all files in /boot/vc are provided in image/loader for further reference- Refactor file system check in boot code- Make sure VolumeManager instance updates root map An instance of volume manager could cause the creation of a new device e.g in case of LVM. The master device map in the disk builder has to be updated with this device- Fixed unconditional lookup of boot partition id- Package check for packages marked for deletion If none of the packages to become deleted are installed we will raise an error, basically to force people to fixup the image description- Better error message for call with unknown command If kiwi is called with an unknown command an error message showing which commands actually exists should be shown- Fixed user group creation The command name is groupadd not addgroup- Fixed label and UUID support for XFS creation- Traverse dictionary in ordered mode- Return sorted lists for packages/archives- Traverse dictionary in ordered mode- Traverse dictionary in ordered mode- Traverse dictionary in ordered mode- Added __githash__ to version.py Any time the version.py is changed and committed the git ident will be reset by git. After a checkout of version.py the ident will be updated in version.py to the git commit id of version.py Whenever we relase a new kiwi version the process is as follows: 1. run bumpversion to set the version for the release 2. run tox to create the source tarball for the release We have to make sure tox calls a git checkout of version.py- Consolidate use of Makefiles for schema conversion As we are going to switch to tox the Makefile setup should be cleaned up. The make targets to build xsd and rng schemas has been moved to the master Makefile- Consolidate use of Makefiles for locale setup As we are going to switch to tox the Makefile setup should be cleaned up. The make targets to handle po files and their installation has now been moved to the master Makefile- Update translation po files with template- Consolidate use of Makefiles for compiling tools As we are going to switch to tox the Makefile setup should be cleaned up. I'm going to move the various places and its tasks into one master Makefile to make it easier to move the targets one after the other into a tox setup.- Refactor source code structure All files referenced by kiwi should live below the kiwi namespace and should be referenced by the resource_filename() method from the pkg_resources- Update exclude list for boot image runtime data There are some directories needed during boot image creation time, e.g grub2 modules to create grub images. But at boot time this data is no longer required and would just waste space in the initrd- Delete dracut from boot images dracut is needed in the system and also called from there by the kiwi boot image, but inside of the boot image it is not needed and just wastes space- Add some paths not needed in the boot image- Added boot messages translations- Exclude /image from boot images- Change default boot image description path Let the default boot image description path point to boot/arch- Make sure the boot image profile provides its name The variable kiwi_initrdname was added to the .profile environment for boot image builds- Update boot image functions Delete a lot of legacy code from the bash boot code- Added boot image descriptions Provide boot(initrd) image descriptions for supported architectures and distributions- Fixed unit tests, mock NamedTemporaryFile- Added coverage to developer requirements- Use "next generation" string To distinguish it between old and new KIWI- Review and add corrections * Consistent spelling: kiwi -> KIWI, python -> Python * Add punctuation * Use backticks for scripts and dirs- Update development status to be inline with setup.py- Deleted no longer needed bin/kiwi script- Update README Added developer information how to contribute- Minor changes in virtualenv setup file names Moved the requirements.txt setup files into a namespace called .virtualenv in order to stay compatible with the .travis requirement files- Update development status in setup.py- Fix #5: Improve setup.py * setup.py: - use setuptools always, no need to check for distutils - include keywords 'include_package_data', 'zip_safe', and 'classifiers' * setup.cfg: - add bdist_wheel and sdist section * Add missing MANIFEST.in (needed for setup.py dist) * Remove executable bit for LICENSE and README.md- Fix #3: Requirement for Virtual Envs * Add requirements.txt and dev-requirements.txt The dev-requirements.txt installs requirements.txt automatically * Ignore .env, .env2, and .env3 virtual env directories- Fix #4: support bumpversion with .bumpversion.cfg- Added RaidDevice class implementation in disk_builder- Fixed hybrid call offset number should be passed as string to Command__VERSION__ -> __version__- Rename __VERSION__ -> __version__- Added hybrid ISO setup- Refactor creation of a PackageManager factory- Refactor creation of a Repository factory- Refactor creation of a BootLoaderInstall factory- Refactor creation of a VolumeManager factory- Refactor creation of a BootLoaderConfig factory- Refactor creation of a Partitioner factory- Refactor creation of a FileSystem factory- Fixed travis setup- Refactor InstallImageBuilder no need to provide the name of the disk image, this information can be created from the xml state- Fixed missing md5 file on install media- Travis testing needs cdrtools for isoinfo- Added two pass ISO creation system The kiwi ISO's are prepared to be hybrid by adding an end header block so that isohybrid can place its gpt header at the correct offset address- Added user log messages for install media builder- Fixed grub bootloader template for install case Template was missing the cdinst option- Added create_header_end_block method in Iso class- Added isols method in Iso class- Fixed ui theme setup in isolinux.cfg- Added isolinux bootloader support- Prevent zypper failing on outdated system solvable- landscape: fix unused imports- Refactor boot data extraction from boot image Allow data extraction multiple times, don't move files away from their original location- landscape: fix unused imports- landscape: fix unused variables- Add debug message for repo cleanup- landscape: fix unused variables- landscape: fix unused imports- landscape: fix dangerous defaults- landscape: fix dangerous defaults- Added landscap config file skip checking auto generated code- Update README- Set naster branch for travis setup- Update README- Update README Travis and Landscape status- Update README- Update READMEpython2-kiwicloud118 1596118197  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9.20.5-lp151.2.10.19.20.5-lp151.2.10.19.20.5-lp151.2.10.1      !!"""""!!!!##$$$$$####%%&&&&&%%%%''(('%))**++*,,-----,,,,*..////////........001111111111111000002233332220000000044555555555555544444446677766444444889999999999888888888::;;;;;;;;;;;;;;;::::::::::::<<====<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@@kiwi-ng.shkiwikiwi-ngkiwi-ng-3kiwicompatkiwicompat-3kiwikiwi-9.20.5-py3.6.egg-infoPKG-INFOSOURCES.txtdependency_links.txtentry_points.txtnot-zip-saferequires.txttop_level.txt__init__.py__pycache____init__.cpython-36.pycapp.cpython-36.pyccli.cpython-36.pyccommand.cpython-36.pyccommand_process.cpython-36.pycdefaults.cpython-36.pycexceptions.cpython-36.pycfirmware.cpython-36.pychelp.cpython-36.pyckiwi.cpython-36.pyckiwi_compat.cpython-36.pyclogger.cpython-36.pyclogger_color_formatter.cpython-36.pyclogger_filter.cpython-36.pycmount_manager.cpython-36.pycpath.cpython-36.pycprivileges.cpython-36.pycruntime_checker.cpython-36.pycruntime_config.cpython-36.pycversion.cpython-36.pycxml_description.cpython-36.pycxml_parse.cpython-36.pycxml_state.cpython-36.pycapp.pyarchive__init__.py__pycache____init__.cpython-36.pyccpio.cpython-36.pyctar.cpython-36.pyccpio.pytar.pyboot__init__.py__pycache____init__.cpython-36.pycimage__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbuiltin_kiwi.cpython-36.pycdracut.cpython-36.pycbase.pybuiltin_kiwi.pydracut.pybootloader__init__.py__pycache____init__.cpython-36.pycconfig__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgrub2.cpython-36.pycisolinux.cpython-36.pyczipl.cpython-36.pycbase.pygrub2.pyisolinux.pyzipl.pyinstall__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgrub2.cpython-36.pyczipl.cpython-36.pycbase.pygrub2.pyzipl.pytemplate__init__.py__pycache____init__.cpython-36.pycgrub2.cpython-36.pycisolinux.cpython-36.pyczipl.cpython-36.pycgrub2.pyisolinux.pyzipl.pybuilder__init__.py__pycache____init__.cpython-36.pycarchive.cpython-36.pyccontainer.cpython-36.pycdisk.cpython-36.pycfilesystem.cpython-36.pycinstall.cpython-36.pyclive.cpython-36.pycpxe.cpython-36.pycarchive.pycontainer.pydisk.pyfilesystem.pyinstall.pylive.pypxe.pycli.pycommand.pycommand_process.pyconfigfunctions.shstrip.xmlcontainer__init__.py__pycache____init__.cpython-36.pycappx.cpython-36.pycoci.cpython-36.pycappx.pyoci.pysetup__init__.py__pycache____init__.cpython-36.pycappx.cpython-36.pycbase.cpython-36.pycdocker.cpython-36.pycoci.cpython-36.pycappx.pybase.pydocker.pyoci.pydefaults.pyexceptions.pyfilesystem__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbtrfs.cpython-36.pycclicfs.cpython-36.pycext2.cpython-36.pycext3.cpython-36.pycext4.cpython-36.pycfat16.cpython-36.pycfat32.cpython-36.pycisofs.cpython-36.pycsetup.cpython-36.pycsquashfs.cpython-36.pycswap.cpython-36.pycxfs.cpython-36.pycbase.pybtrfs.pyclicfs.pyext2.pyext3.pyext4.pyfat16.pyfat32.pyisofs.pysetup.pysquashfs.pyswap.pyxfs.pyfirmware.pyhelp.pyiso_tools__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pyccdrtools.cpython-36.pyciso.cpython-36.pycxorriso.cpython-36.pycbase.pycdrtools.pyiso.pyxorriso.pykiwi.pykiwi_compat.pylogger.pylogger_color_formatter.pylogger_filter.pymount_manager.pyoci_tools__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbuildah.cpython-36.pycumoci.cpython-36.pycbase.pybuildah.pyumoci.pypackage_manager__init__.py__pycache____init__.cpython-36.pycapt.cpython-36.pycbase.cpython-36.pycdnf.cpython-36.pyczypper.cpython-36.pycapt.pybase.pydnf.pyzypper.pypartitioner__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycdasd.cpython-36.pycgpt.cpython-36.pycmsdos.cpython-36.pycbase.pydasd.pygpt.pymsdos.pypath.pyprivileges.pyrepository__init__.py__pycache____init__.cpython-36.pycapt.cpython-36.pycbase.cpython-36.pycdnf.cpython-36.pyczypper.cpython-36.pycapt.pybase.pydnf.pytemplate__init__.py__pycache____init__.cpython-36.pycapt.cpython-36.pycapt.pyzypper.pyruntime_checker.pyruntime_config.pyschemakiwi.rnckiwi.rngsolver__init__.py__pycache____init__.cpython-36.pycsat.cpython-36.pycrepository__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycrpm_dir.cpython-36.pycrpm_md.cpython-36.pycsuse.cpython-36.pycbase.pyrpm_dir.pyrpm_md.pysuse.pysat.pystorage__init__.py__pycache____init__.cpython-36.pycdevice_provider.cpython-36.pycdisk.cpython-36.pycloop_device.cpython-36.pycluks_device.cpython-36.pycmapped_device.cpython-36.pycraid_device.cpython-36.pycsetup.cpython-36.pycdevice_provider.pydisk.pyloop_device.pyluks_device.pymapped_device.pyraid_device.pysetup.pysubformat__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgce.cpython-36.pycova.cpython-36.pycqcow2.cpython-36.pycvagrant_base.cpython-36.pycvagrant_libvirt.cpython-36.pycvagrant_virtualbox.cpython-36.pycvdi.cpython-36.pycvhd.cpython-36.pycvhdfixed.cpython-36.pycvhdx.cpython-36.pycvmdk.cpython-36.pycbase.pygce.pyova.pyqcow2.pytemplate__init__.py__pycache____init__.cpython-36.pycvagrant_config.cpython-36.pycvirtualbox_ovf.cpython-36.pycvmware_settings.cpython-36.pycvagrant_config.pyvirtualbox_ovf.pyvmware_settings.pyvagrant_base.pyvagrant_libvirt.pyvagrant_virtualbox.pyvdi.pyvhd.pyvhdfixed.pyvhdx.pyvmdk.pysystem__init__.py__pycache____init__.cpython-36.pycidentifier.cpython-36.pyckernel.cpython-36.pycprepare.cpython-36.pycprofile.cpython-36.pycresult.cpython-36.pycroot_bind.cpython-36.pycroot_init.cpython-36.pycsetup.cpython-36.pycshell.cpython-36.pycsize.cpython-36.pycuri.cpython-36.pycusers.cpython-36.pycidentifier.pykernel.pyprepare.pyprofile.pyresult.pyroot_bind.pyroot_import__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycoci.cpython-36.pycbase.pyoci.pyroot_init.pysetup.pyshell.pysize.pyuri.pyusers.pytasks__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycimage_info.cpython-36.pycimage_resize.cpython-36.pycresult_bundle.cpython-36.pycresult_list.cpython-36.pycsystem_build.cpython-36.pycsystem_create.cpython-36.pycsystem_prepare.cpython-36.pycsystem_update.cpython-36.pycbase.pyimage_info.pyimage_resize.pyresult_bundle.pyresult_list.pysystem_build.pysystem_create.pysystem_prepare.pysystem_update.pyutils__init__.py__pycache____init__.cpython-36.pycblock.cpython-36.pycchecksum.cpython-36.pyccodec.cpython-36.pyccommand_capabilities.cpython-36.pyccompress.cpython-36.pycfstab.cpython-36.pycoutput.cpython-36.pycrpm.cpython-36.pycrpm_database.cpython-36.pycrpm_database.cpython-36.pyc.139625814022832rpm_database.cpython-36.pyc.139975456848432size.cpython-36.pycsync.cpython-36.pycsysconfig.cpython-36.pycblock.pychecksum.pycodec.pycommand_capabilities.pycompress.pyfstab.pyoutput.pyrpm.pyrpm_database.pysize.pysync.pysysconfig.pyversion.pyvolume_manager__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbtrfs.cpython-36.pyclvm.cpython-36.pycbase.pybtrfs.pylvm.pyxml_description.pyxml_parse.pyxml_state.pyxslconvert14to20.xslconvert20to24.xslconvert24to35.xslconvert35to37.xslconvert37to38.xslconvert38to39.xslconvert39to41.xslconvert41to42.xslconvert42to43.xslconvert43to44.xslconvert44to45.xslconvert45to46.xslconvert46to47.xslconvert47to48.xslconvert48to49.xslconvert49to50.xslconvert50to51.xslconvert51to52.xslconvert52to53.xslconvert53to54.xslconvert54to55.xslconvert55to56.xslconvert56to57.xslconvert57to58.xslconvert58to59.xslconvert59to60.xslconvert60to61.xslconvert61to62.xslconvert62to63.xslconvert63to64.xslconvert64to65.xslconvert65to66.xslconvert66to67.xslconvert67to68.xslconvert68to69.xslconvert69to70.xslconvert70to71.xslmaster.xslpretty.xslprint.xslpython-kiwiLICENSEREADME/etc/bash_completion.d//usr/bin//usr/lib/python3.6/site-packages//usr/lib/python3.6/site-packages/kiwi-9.20.5-py3.6.egg-info//usr/lib/python3.6/site-packages/kiwi//usr/lib/python3.6/site-packages/kiwi/__pycache__//usr/lib/python3.6/site-packages/kiwi/archive//usr/lib/python3.6/site-packages/kiwi/archive/__pycache__//usr/lib/python3.6/site-packages/kiwi/boot//usr/lib/python3.6/site-packages/kiwi/boot/__pycache__//usr/lib/python3.6/site-packages/kiwi/boot/image//usr/lib/python3.6/site-packages/kiwi/boot/image/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader//usr/lib/python3.6/site-packages/kiwi/bootloader/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader/config//usr/lib/python3.6/site-packages/kiwi/bootloader/config/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader/install//usr/lib/python3.6/site-packages/kiwi/bootloader/install/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader/template//usr/lib/python3.6/site-packages/kiwi/bootloader/template/__pycache__//usr/lib/python3.6/site-packages/kiwi/builder//usr/lib/python3.6/site-packages/kiwi/builder/__pycache__//usr/lib/python3.6/site-packages/kiwi/config//usr/lib/python3.6/site-packages/kiwi/container//usr/lib/python3.6/site-packages/kiwi/container/__pycache__//usr/lib/python3.6/site-packages/kiwi/container/setup//usr/lib/python3.6/site-packages/kiwi/container/setup/__pycache__//usr/lib/python3.6/site-packages/kiwi/filesystem//usr/lib/python3.6/site-packages/kiwi/filesystem/__pycache__//usr/lib/python3.6/site-packages/kiwi/iso_tools//usr/lib/python3.6/site-packages/kiwi/iso_tools/__pycache__//usr/lib/python3.6/site-packages/kiwi/oci_tools//usr/lib/python3.6/site-packages/kiwi/oci_tools/__pycache__//usr/lib/python3.6/site-packages/kiwi/package_manager//usr/lib/python3.6/site-packages/kiwi/package_manager/__pycache__//usr/lib/python3.6/site-packages/kiwi/partitioner//usr/lib/python3.6/site-packages/kiwi/partitioner/__pycache__//usr/lib/python3.6/site-packages/kiwi/repository//usr/lib/python3.6/site-packages/kiwi/repository/__pycache__//usr/lib/python3.6/site-packages/kiwi/repository/template//usr/lib/python3.6/site-packages/kiwi/repository/template/__pycache__//usr/lib/python3.6/site-packages/kiwi/schema//usr/lib/python3.6/site-packages/kiwi/solver//usr/lib/python3.6/site-packages/kiwi/solver/__pycache__//usr/lib/python3.6/site-packages/kiwi/solver/repository//usr/lib/python3.6/site-packages/kiwi/solver/repository/__pycache__//usr/lib/python3.6/site-packages/kiwi/storage//usr/lib/python3.6/site-packages/kiwi/storage/__pycache__//usr/lib/python3.6/site-packages/kiwi/storage/subformat//usr/lib/python3.6/site-packages/kiwi/storage/subformat/__pycache__//usr/lib/python3.6/site-packages/kiwi/storage/subformat/template//usr/lib/python3.6/site-packages/kiwi/storage/subformat/template/__pycache__//usr/lib/python3.6/site-packages/kiwi/system//usr/lib/python3.6/site-packages/kiwi/system/__pycache__//usr/lib/python3.6/site-packages/kiwi/system/root_import//usr/lib/python3.6/site-packages/kiwi/system/root_import/__pycache__//usr/lib/python3.6/site-packages/kiwi/tasks//usr/lib/python3.6/site-packages/kiwi/tasks/__pycache__//usr/lib/python3.6/site-packages/kiwi/utils//usr/lib/python3.6/site-packages/kiwi/utils/__pycache__//usr/lib/python3.6/site-packages/kiwi/volume_manager//usr/lib/python3.6/site-packages/kiwi/volume_manager/__pycache__//usr/lib/python3.6/site-packages/kiwi/xsl//usr/share/doc/packages//usr/share/doc/packages/python-kiwi/-fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Maintenance:13565/openSUSE_Leap_15.1_Update/12e9416749e81fcbc75620d399cf0358-python-kiwi.openSUSE_Leap_15.1_Updatecpioxz5i586-suse-linux    ASCII text, with very long linesPython script, ASCII text executabledirectoryASCII textpython 3.6 byte-compiledemptyXML 1.0 document, UTF-8 Unicode textXML 1.0 document, ASCII text, with very long linesPython script, ASCII text executable, with very long linesRuby script, ASCII textXML 1.0 document, ASCII text  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aRRR R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R a*̇yth%dnfgfxbootjingkiwi-man-pagesutf-87b2c13d372267f71eb83a6597d9675bb77922af85581cfa743b11a8f1abfe74c?7zXZ !t/ ] crv(vX0_@ELwV ywi+cb_P(% hM.N}@\ Goyg%4sPMQK!GH-f`PpO.Ӷ?k -fpq\%$wA1 1ev_2C'H+a] bkIg(  R./PQf t㘀H\9?R_IPn \QwcPQnj2uwlu?0>A){q5v֒^u3 e$ę>5cz ;QEDb!Qq,5IQ!̨ bq't!#ՊwQe#N!_`g/wu1e#5)%HKAW7iZFD0-^0@Hc4nfJۆtrD*ʡJl09:]#&5VC!ŬݹdM3(WS*@L4Ii_88 ȱtjAxp߫6 bLO >lh$6 VZw0OȢ9]RD>iMƤ}}¶Q=Klb AD`2qNʨ#؏Q4+ %)4'o_.>%Zޖ7L@J8՜?&F.ڎ f^M֡L`T{3yxn&H"TayY,#v{l |1g$.©{)ݽ s]˞[{aDҹ`J^;{B)ںG2Fw& '9bl9T:3 ]ʤV8c*#uNq]G[|Csd3,'lJl\PH;,*f>= P9fP*QbJ\ܗ#a$о0}XVĕىPf1"Y+a0WXmՠ4j^d@ǰ_&I`%A4 ڜ09`uS-N]Ca8`F7#>5h2)׸u E<>FLaȸENiXUv*96P7)#I92޵ܤ_2,C5>ZM6YCvrclI;{F #B>xPc.fl'eB6eEc嘮~ EwK[5k%rh͘|6J6q6"isȉ"|B*l-PUp :ƈôo1. L1E>xW2:R> L ]+*l"m]ZR&4sQSN%kY9)ف-X/N-++ާ#5LVhqHwq",h퐺]7U)FZV!Ç렅^YC55=H:F Ysmk5SEaI\~r0\*P6<K+6:f$n5_xav-FlE+R;U"]CeΛKIq~CypMIV .".f.0"C>)US뵷O[RS t^&‹VPC6pLGTwr3}ֱ(gЬ@XO/pՠ-̾|)`馉Pثی'f[>}gTXgέ}1J{GᲭ|x:'#'o yCf@Q!8>" 2# =v(: mǠ_w\ݼe*6hLv%lFZv#̉߰3BӮU'f4x4るb wتx QɧIE?'mLgNYۘ7}~FnPr"m-y";a zap]%F( F¿߁A7;)x 7<U }Bu.Xx+IWkiݯn#:>{U *3Ҳ'5֎M$>  R!?Fx哝E&9s\ _ YQ/Xѯ/鑻ً$Mc-Ӥ n}y#}zF&7U>N-HԂM_\(⡋aǼXpwU;,^fάaōwRabej_*v*(KW¡o?*!;g''}iEȍm5M` V?mʝR/9P>U Yr@{enK8yY2u2c+mUtnSt6\t989\=2^e}Bn˵"xU\AR'ʆѕP\rɌǃhM0L 7*Bն14M7y4 nI jXFQ ղ3yjzYT2aj [ *{mڱE*BuV[xDU;EޏVt!krY ,`8ދ=\(0'Y;I͕ޟC u@l4X$h[ 2s F0?& 0g']H>"Q]vx߶D]?֯`l)=* N"],>`paNpI_bm}&cN'dp7zaV$ܶ]أ_:y,0΍u~WoMiO ,GR2:b~6au=_w8_&,m=J >ᗋӋlkgMOԵ*z;=bĮ2b.Q6sQTVt+jNxw `6pf/S96i./WQzk铹c;g EŘrDKq_Y IR $ROaݔqW'H@m[CKrFƌܥwUjS>@O>³ ҡÇ& .U_S[~R? D*-q@ZE2""fSƟ9_@jeY;%t FA8~Fnxlgbu_n*VZ y9zRACi)řejZiXa=Co+.;iPeѴRYXj{fGA\I׋U!{-o_1"Q}8w8FKG' ^%TT DsqjgunoVNϷD խ XhԺK7XR߽͆I2+L1mM{ rfzfJ3@NkaJ q.eˤAX{“n,O% -/b"`۝tF \T;0V8WrfKvn NCS Hoɴ()do2ۑ}  #aNIݓOU{iJbD1rnW* 8 `,VN:m@ni%;VV-ECjc;c|ag#ߙCDaz(=WPksLwgnof rj(E j;J컛uK;b*ʙqNpacWelݜIu-KS t7&P&Z۬Oh} Ы.17\Q{4??h!tCwYvY@Y|!1j$vJM}K8AfuۃXj8A9Vۮ 1V$EHy3mlx﷑ډ-$`T f?I/=aaMsc!Q AXΚs v:n ez2m\TDzn˞cr#m_hU S& "46ؐAtT~G לAm" ]٩^v^ Ƒ%þ+v\#{Kև[JKi5՘Bæ>`TǸJtźPHۭQQ5 C zuK@hzH0Q\!)gË ENBLSD <]\v%Ajv6@V6ZFCG!B> Cf= 1`eT$`sIb Wtq#QJkT<&&{d?[SNc^^zQkm䌙vBC{[pؓ)W F̮R^}FвzMTHhQv٘Lr>8R⢊;۠ҭcٜ̊S-[ eBmrAr7QG=>fgXJ3.g4[*ƛoV >Fb;9*ICmS\zCSFUs2Tu%R\pRZ$<n@> 5p3:MZBueXS-8+gGbJ?%yH1 PCT.[17 ,Hvg!]5}D! !xR(-`I6w!BUsa[ljac*@)XZ!hnCG}& sƱn*Q T2Hnp\%Xzh.ߝsAcގ s/>F\෩ʈ$}d}3@pWQE;t%IѦWhK˳Lt/5;6QU mԏЌqETdG+46u7|S.LlqCY wͬ[x/PӍa(n^ul\/?YU5\ Z\pŘ hnF[ |mzPćĶ'=u'C,15)4&`#g&{;/ç^[0oFx#j_BsWxޓDPU ^ct=vKmݻ`ڦu5SӖGZ7^n2)>7i75a!K0uRL/rT4gh TT16G/s; ;ulj#'D1K}@F Nڧ~1%m5Q(3"ʠsi`*" y͠z+ڍAWjsޱkNYwF.~l>G"; Ki_1\QؒzHLYM!"R/gmWR2yO6v$tg:nԈ /ve_3ki'?FWT*='q3rpT9rAI,SPv~ Ob'_{RcO1ϦF"g됿qX?R3haݿ-y"(7 0Anr>ȡ4 v[2XuߚּRnJ嗩kOCFxQ~HY 4OtrCT^B]G2m  iI0#z_SuI$һk5-WjcDeDKKlT|1vFW=LIE^oÁ؄rs>>2Z*AI룓:q{NcGN|VpZ-*&dD ̉ۂy砙atx|-r?ZIǷ-Qo׺,Ӂ58l6-d\%ehyPwN a%)!ɨO7ɛ)6"Qᅜ$dDgsLpwb!Ezj7&s YFˑE6,&5/ZۏkS|/-a` -bvSPYrT#$?Bw`TܔD$Aruh~ rD,ԷU ,T-,e]ƞ $KP(W*m#J{YIÂ݆ў(W̍Y+şxމ"|凌uqoa摭]1 M8a"OLӛoNAOThD=|t?Qf"@ȷz; aZ*b4kl%X. &j1魵cp~G*[-̘KG3P/7/ni⯱$ k~;ww/mI W#n01]pUurƦ{&bPsXɠ{Df@FD0>+y {]ڕ!Oݙ-]:潠vCL\#!+ %Sǒϩ^M޲30a5(ˆ(^er>XŖ̬P (1@<@,MT>G<“`1Usf]ƏPIЫM0Y:]5,)mЬk%J#e?6rfߖ^up免j,V[DW,^̩jΡVqZGWXBvkDV@ַIQ:N4f}J~)xyL +}]xDrh9wL$Q᜾׺sg=]7;{wqaU.w/LY رmڔnd\CTrbPU&Fq^AGd8Ē[K5fIZ;?? 36)M\iCV#nF 0@e6 eq9şI[x4g[ߤJl^ \ᅡ~+O= ?Im倉0蹞;4>* / X=d֬e/aNPCX hmienHcr^wϭD =64`D0`2&WcoF'k䗗G5najmjv`ID:55_C$Sʈ%gr$?E`e-9p,'K[l8\«CaBҶ7bK ΫggMlHy`uZ g*k]l 5Tig*,u4ŻԏnDΊ/[ y'bZ}Cy#tNw!bCr +1;OP5.[*owLEGe{xONW%LT⑈0Ww'bQݲȓ!īgq%a4܍ 'yO}Jצd~O$>ww567ebCt+ gK KWL5`'/݆Z,BqQ מz&)r\xh0kR,RqA&/K˃>1dv$!.WBJuYQl 0~2-Q?91Z$%Xz֤3 u|)lMZF?d#a .!h0NWHPԖ.n}9-,{`Z3: ײCڹq."];2n&)$h#H`U)Ƌ=E[Fb"L$5aɅhp9;wus5| ]'sq !S*zA.qz s+î0QU_ԴjyGWֱA,*uK)u[_C_[sޮuv٥EЪI%lxD3@/~FH KM cc0I7nѥ SQX#{-@g9#Eﮇ4؜n%/kNTLz('fvQ (ɩw_2/#8?_5q|_k1~7ۖԀ~,q\ul}wMhA)w zqvSN՞ȍ%MN,:rp9bK{v2Qz=fL|UA WMS&GPZK&$\3D&}?b۴:mw98c$2r]O1G\Q**_?觜1q|$$&k!| S?B.DTf@Wr߿Rǎ7p`yEaM2OAzkݒ;5@N@p3u;#`9f=<܀߯f7uv'cU#5ߢ뒇.`V{޵Or_'|k.=>R-Tcox尖u _FBYwIP5nW'{lI Ϭ"Silv,A'2 ZN?XN }M>_ܕ{MgfY `4i8"s~O7L;\3>.~f~ۥ'NDt7^Vzw.nȎ)@vi1h`#~%yaҬC7}o ~!1Vn,Sx! sN%CT ;+c $ Dլ:2oȵ*!橪`JMBNx@"N&fu5d*NG2Ulg7K`TvRP[MxJ8 S,@,,Tø#^)И# hQ slbRsP~s7P>S! ŅFoj%H:}rә.^͏WDAtN_SNGy辀0naY< ޻tNq!kO[ %v7U& d7`BZ;ȗz!O\q*SGؘɄkouBkԷi0E,i5`DH ~fJYe&nY2*R!B{L5ߚ4Mj)oaнbUhQ̏ kZjso'/Rfխ;ԯKA9!a1,EgReBK:Xbӈ}H}:zUU$xvߜlAk#F( q?_8Z? fBXsbS'8WL/QXEZ؝1 %яl4\͗]4^~ճ$E|c/dUlzfBoɖ4hmPBSV.÷HZo{_9{ Nώ[lA:=^ ߴ=9dGq UĴ>ry8 6Ź-CMkDk|m;2|Q-e >FT4H]kgB(ZqzS'v,@+,gpʪ'ս/(ӜJysӄZg5ErI: __n(gtcpAawִ^|wy̴Du䩧@ˊ.7]'(p(,ޤPRZ,io+˩VAi98+WHgA}eh6/͈|=n,Y8U- :Br1×0lRFcB3d[m'?}_΄+V]y؄gzF~YR!ˎZ:k)CïA].-|Y*ҳ;jN4nvB7*;,IALxGKD%hzÛN>z|O(sr_X%b &I)V9BQg葙GW;bge-|'p%xգK^-r%в<׏:סRG_NXzzd=dZrԠ"l|]L^bC*V{De;HP1xxԦ|RoHF$9"%_L{L_=C8ċ\;pKF(z5*;RaZrCFMbIza! echX+%:c6LK:95j rL_+ѯox|<,da]<g"(Qyox"@p1 yRԖfr, F2χ׀靮Tɧٻ]>@;8D`ݝ=ƷcȠ';ة:ޗ׎1 ! [-"W]]vlsywI;* ,$*hYwJit<!ӫVVdem~tsbyIݥ͖Y,GNσ(@L(C LMF.S .7rOpp $B/T}IWPUhK$@Q)Uvb@m;F!iܝMËOmG8(*.v~6 # 'z7Q&f[_)\P]@.=pog'q沴zo5z,ٞj&z Y^iC %&M}!xe}V€Zʶ%|8?*߮[О^ƬBsO_A&AA)#AiJչ e9Rw:zkSi$+$n[q#:H RYi^fLvFu|HiZT8z({ALhNBPČP$:OǻbHa`Ci.^i}ޣ2;;`FƨՔ`~)w3r?$?; _D^ZAh/p aXz KfqP#uKy<>v Y~%A #$(YVezq3[DZ\.DKCx1ED]q-ѵLI 'Z.0vk o}  MJE<hph{N&bxjbK ¦krVE/Wpԏi^(<_q? :Ny!m,_u'Kjg[YĪby՛%}nzHeF$7j.!6 & f.um^`}Sr񐳎v@8?jÇwCg0|n8 `;$טR Y.g3SiTҷ4w /i mP,0 dM ?H~;VFG3Bς];+`wYRqBVW[rOQ+/OEre?9(#u7K2HMnK3K1,0E܀24I) HN*~WOoWH_*U3XC{JI{bn6䋤чϔ`wŵs5T$9e6Ku*Fы[s@RM}CaTx~Mܧd[qazb\ؿPiġ;$ƍ1W2i~Zc L,ֵ)[؄U5xUz3xun$mw#Sr(,ІN:"jӠeF j퓞}4}֞8 C7oOGmv2>*JθCZ*ArMʞckbɞ쫋9$fIYm3%[Hș}c:]c)M+.Ӵ.|PE_pbY#&Ǫ{kVAny4H r#sԨPVe<O^0<JaV0a9zD?I[d5!y'VO}]ǨF|vvԡ-+pZ F.pˀLhlC4DQ?0SpA [)zuԔe)<\:IӪ ?=m89$fFgC݄1% UOP0[z o HȼK6q%(燇:wxD5ϗFFᱳm+9WN`ҺKA\0-0gk,D Kv\kʇOHM;p ި7Kk;% rjFz(3j3@ˆP" j fag5iMGPT& -9J9(ms\@1r?PFfVD68?})vH&t.zmeUɣm0Vיu|05zCl_rO[dYΛhIlK2r!O9[ 6Qm$ϭEnjC+ DJ?=!0;%uhHx r$KG6/7ޖqO~7@a| I"M]|j>-ݠ(trP9xfW:4el^м[^8P.>]١rڍ4"#kTuJ}J77YtƇ6:{敕Ƞ*fE[IJ@_17h,Q$JG>(U9m%n0:ULnKv*x.'~Df]ΰܘ$*W5~9$kc&tFM[CGrʭŪ6McaS14n%-852Ƀ j>ByϮT:5,@ŏv%h "7堢6v7Ww o8W&60)1D]*BQkŸNҫ.+gi4Mzտ`b6K+~@ Pzq]0Q1<ߡЩ?Y$y+m@v0DctHe?#-xy$5ETZ|E=('e];5m2"12ڬi™xT[ܱĆt)qD>d2p/Ȕm:Iw"|mr;LPX ȅP{kPLYx=IX\wߧH loÒ75_]9a3Y8j Tp{s}t:eߎffGc"q4!f}u j'VI+s1avzN6(>" J^y5st!|X8̱K-Lq`F1JJ;L2χQ3NA/ @V=S,BQ p k=D q-,QፌY}MH<?A@Ayj~^, mŞVQryG%[ ;5 9 N8 _D/tڂX+.Ћ71a!N"it.-B6IEkscN^q)]hzJTD[[_0azTv !G$! r!bSՋr2dNXP˚ UwC vŔYKay+wl W# -VD$d<$GM<{7Q"d"AN%1 RhH-A_r{W15@(!P*pt!^$qy"uRDߕ="nqs_ ,_U&.5@_'~E;w Z8_W[wVv!( t O73JQ653_ws"^)@Ѱ1wRdXUN@԰e؜|RoR)h T O /2*!QtLw&%sV:fU'b6GJvXVZs@L1Ej#7@ i l&|lh H!DRbx$eBG3Pj*JV8YXֲQ%b*ltU_/#?jgOPv 5ۿdiǖMIcêf)k!۩IxO0:2l%N',=s[׉]x}6@d NEc ?ݙ+ ~Ra.r@Y; 'Yԃ΅-?!!Pmv2՟7>R"<Oe:hK*J?uo\/$<.dLR#jfx%Nєy吜E Ӯ/Y9hUVˤR S*߉ 4O|mK)ϱO34+4w҅vZ#ޗS)#dl'(}-? >O7j1s!eWP0zC!-(z2؟G B%w}L[ خJ))3gr*Q-}e 1hY p7εSNuGƉ^DFv3ZƲ O۰گ8m4`>F0e[0}r)(xbt6o0NJ:EvBh_+eF ťTh%Q@%ل D.h_(26XyuUp̶ Iڋ|?HxhE2><žM:9{_oXTZCT/:11J9gY^u(y)K2gk_&Бe;ٌ\5MХn;a+ ا r`S8 $\݃B^-?xyZ':+u k>"卼}Ou`J E_ V1!xE0qmǠ}G V@1wM"M?%G_ζ TuQfzn$uA3xsºݲ@>?fC=5m`'h,m_<xniX.W6{IIĥ{ opFtZ)(۝_J2:O"B7\c׭PzZԫJMa5y2 b@O.^bt\uvϟqމNbq3jP7xiXrmv6~>td)h5*B=fv>q&BzQSJf^;z[7t<ר9%hA*XdsSob(< {T%{A(# =>d*c{:A9lf{}l#@[fg֛& <%Z șEqU@&[J}YuV ݈&]\{T¤Cൔ:5#,]|4k1:&EDS ҐRh lj썇Wh?IMxenfA{z~TŴeT}ì/~aB4!xy5T g%"aގQmL/n hpc8zts\ܢ2H.,lGu&\0 (qr`8u8@Ƃ!dm~HUfFr l`xב'O{]e03,G[Ǔ k_bո~:;{ٝ$ oK,/S=[9@*fm&gY#u'Pxbb1d"4Uid^ʨ f ZG-"ɼM:~"xib)DS)-׾IeG+-6f#C9Hz f]rPE_Ԃ%{:ғ{A^IrbI5F*Z gR}5g$T g&6g qꖁ݋ {C,ߑ.y.Zӱ E i|ǵJS2en*olF3D)+J X6GhQށ)&m'F @},Od7`:uAIEm9 ->Eoᡒ&dZsDՔ^N!R9to 8d+TN=5X\-"-ˎ]BpȌyZIse3l JhmsѿkUJƄ@ę:lŮ֙ F CCKI>~ʄ'J#NìS kq$=u4dFN/Qqli#J@<撰^m䄕oj}TO|imiɉAV/FbAYky§hl%"pBzsQvjI'~Lr9X(ytcV>BSfS } u_"A z Hk =[}v-$~MuxV~jG.1kXo DU@g26䘫ָO>rVcs18#_/*S@j$x; |qz Фke[~ 9RAm43X =:/ W˷a͢-'В3 n{ܣ \C5 ?<:)ԩr4*_,HwЎ8\Wspފmwuzv?0k;P`Pd3 $0T:7s[">Zv[Âc~ h\\BZd, E*UTfZp\F-W,J>Ҙ&͢Y2zT`IH2?xթNV5>`qGQP $t^뚇߉DhBU|Kt*$no*[-t J6k%/em)tLAꜶ~vTxhwvLC×TGK OF(P1Ջ&LF$]ɻ0vWj,}j\-e`>gPFj9ٕ|gW>خl<[A*(mJpQ8/djYM"6DLupUPlx]K,Z[cxƞt)boGOycU&7 ^N-rB F,& O\&A&ԗF=1g[KE )N%ͦjjvw rR}_[ =EjnZwc sDû>}*﫛S~1Dzk#B d 7O(2qFbQAJ+7=ʛe=d?n~kJ[I;``Êw&O%lWe`悆_Ɗjn(2N|7-zKCKO}ŋS݆LE5-_̓x>`λti]1j} Dpn wT '뾌ڱ8W?Z]ڰ,O&0 [w"<1XbBx"l"ý{U*zi>^#oSxIm'l)QED')t[6ć[)`47#-F[3Y=FrEup,5o]#{M X=(#5P$( ]̕VM?B_e,$C$^e3q'ʼnښњI`έtx7۶!E?(_Eߤ S&:wIg+8ǔ;S]W?68u!>B0ђ̷wlƴ, <s\&`CNa5Vq@Nk 5kY0ᇌj8#}\ z!>DȠ<꙲RH37k45$"Q'ZN)rŵ̈((*&h;bm=D>Lj."=D֔ y!5S'?\ƣhbȏ$HQ1loǨ'=ц[(-8&ђshVld: QxL`dˀ B" 3-4c8ĸ]:%o:15g@ \ _p^SJHx؋/ʔt,[XȖj64jk@* 3pzA;Ao֥#+<'lWl5Y4UV ^6s;ڈ.=|JlՊY6 QRpʱn =4kuq3_'jZOva&ftLp#>%>aS򖬁S2^<}xt3׭Y{>}̦jj Ӫ!6jbYd8nC>Mё[BjiTA2XtnY:b[t$ Ħ3ĮD`_a,DpU'J d{N)$~PB>Ge᥉$:#$ ;|l]7S, _w1\/?j=BY!Z#MV/Ot'4}ۤEaOL&zki' ܨ}{lsINRT\C0,gˠi%`5) w>/d*6jJx1 NoɎOiڡ5'iLt| V7b"k$r`CRopJ)Hn(m"ymL '4j 6QN0~fY+)bsu0L97Q̃YFYhƥ_NXǸwHkjxXժS4헿zQE_ 0*{[-v+USpUi B?bI/dB ԀPYUȨX~7p}AYцJ`lKeUk0ɵ"!)i<lEK+!QPgi?X9JppJ$6+eaQ6cEti˃:`pYn*4$xǏi !eTV[\{Vq  nbo OMA%$CwO>NJ{6\4$.=cO>oLkH~ 㶁8.,CKز91p hoEpufٙe#ױ`J́豏辋 OŎ[ɿk{0M7nò[@hB+t/R4߱lc}*;L7HfX>i4W|ӊvZb =zr7ƭfՔZX<蔪.` 9Z+0+Q0FDچ·&J.sot2cRιg7Q`] Yn]54WePz4" IOZnT(ax?!m04Eh+YD4>QfV(?>6_V3 DlpflӠav`b BBhRSm7>QKFDqX **&:xx:j8/v< ?D(Nmz|VWcÞ!r(@I sU\*d2itx zH#0 -dJ kt;]AO쨨 ű|0Ro]VV|RK[3Hʒ׭niB1P; a mf4@ύRr|*M^0%KH5@v"Ŧ-Quב[|'s gQ(1fUy+P(_IFƅ~$cHvs5]@ϡfZ7H)ۍ96(EϿz#؜Xv߿&hen%ܚ,I;\l!K.RkH0Ops|o뿗Ôz:/g4yBށ_?Ys`,S}+!\M(J z:igY F9 ')i2QOx`]b̫̌P|7A+gLג2'i5õ6QK]z+]a!N H92& XH'1;F\SOəBYWxv}N|0AWD{G=f%LCsxwZ>vݺBQ5lݻ!!țP܁1mFЛɈA*Q߶{46yҎ0I]>ߞ6({ᕄp1&Kr ?R( g~KI޸AJ=)> R>l[Z*7YDdȂ ȨuFna>Qq~Q5?&hׇۡ_D*jIPI;otC9X+:gVvy_wsG3m[{k1<3f8;A-.e8|2wZ4pySs#FxNk 2'pT.pn;'5<8\>Q@׎ah EMRx3EX쿎ʉr.?jOu(9F"KvP_'pep݃צs֗OHΊ ,yo[K&YyTb.ҽkJ]_>RiN 2'HBE22%Ǚ$uyS̸0_"ҝN}ĖNr;INaePwʮE3Ee ]Jlgz08|Cg"!wPR%G-IʮEiM_9ꟴ"#uyݘԤpp[n^&_rj F$nuNQ+ ekn&-5!$]HfZ0~VԟI}SJNE[R¾ct[K﹖-q^G]&ծ81ֵ^#:8 K8vtb̯5?=>*JB*X|%C4%)5*cm~Ut}˭ M^j4@m!z?jPM`CV4Ve8?YJ4DO #MSQ2I_ ݽ\d A3lUzqbJDF,spE+ _F<T]5M7~V4e핳}Z(b͙APJ TERM~q`4_ة ZuCnkSJqtq82@:Ykn9 SE|s]+evN-!P t/0upRy\Zk8WVV.s҄]|!:#`p o5Ӿ0Z=fgrБ3tuЄ3cRM&%@z%4og xb;8̊eЃ::}vJL#8Y7R&RƆؼ#C7l@ K5𷙅`O~_R7]S)d U{Msy7Bhs$ :;Wyqv5X@ȯ(%wG}<dr}gl$Xmuf%+bj-BBGVF7paryoM֤.kyp{A'vxO_p)xwއ6Ipt4![fQFsRn"h _V_J+r1-.̎6pc}Ch!R> (=3ٔ>btqBH YkDIĚ2/ޛ55=lbV%ᆢ}%rKYT5%Le ?\Z~#ԥCYm`gzyWz5)\d*PjKt:5UlyX5&x9C$B1Jb,/$װ^7V,D'Z+7kGo[vjBzMP.U?2VHY |0B=sL aB֌s.~zG?﮶4R#Gu|/&%O,L_܂UtWz5`Ĩuy`'n2̠~vqLފn!g1 JCdW{O^6{Xٺ](~qVSč$20_["͵\FCt zD3}_ 7y;W&h1(tCCgCW뚤Lɛ #͇L?]p ^ѻM/rڒ:pU3* #ۤwˁF-{e|? vz_r!0r;a#LZ{SzۙgṬእy6;~sasKSk0;4Q7K.+_(6CL:Nǁuk4au6vl$8֟`΍A@Waa*gw*j2O*M;gWWB9"Eh#1V}zR'%G{@oEQ%p^8y kklU{-үU=,xyu^B#Oݕ: y%W)$S)}LԾeHl"[ p<%i;a=0rܙ o6yӇF}PйTy!CQ0`U) {h;ĭ}^JbnnzV&[̍[\nw,Ry$MUKBZ |զfs˛"BNݾ#iBhz^@l/ϟƫY[]3!ϫsR=5\%>Og44-{bJۮӬtyfaƸϱ( X0GT^5q L!`=5њ- ֲS:IɕV6sFX&J--2#ÃV9|t#iDE[n⛡,QiiTm |q璸tyGҎ.FweD? /d gH (j?qRi% *RҟJ2 ql2Q#"<`ໟK5\AnD[) :9wk]Q:MzVw2XZ +(_>aGa#3)rs ysp-:픢?U/ _ i;}e:_KUWHESlVve:HYk6vV9 " rcKcs蠍jv"hx07hgy~ȷLQܽMLd˴&P_j:Bۺq5meW2w뜆hR`5e=Fڸ;c쿴c NLYZ]e̓]^j$cM Bd?N,WUaJBpo9g'@EHܓR^僚؜ĨXfE֯(v)a p0Aѱ`5&O4/?JsA‶?r97$FN ϥG )|10vp,WnjMf-50buULS}xۑ12=sne:UiچbHPiJUEM-*5^q"6+% s'gzEEr8ǡto(jk%&]M:E׺/dq@NjHeY]ZYKD^r\Ɛ̄[|ΤU};,^ob޿HP?@5f;_>+.J0֪vM¯\+zۅҢdʰK2h#N',˷Mxy6!uɭ/IO.`(㼱ZF0)DhMH\_DvMAr GQH/|Ӕ $ˀ0>ZRrߙqOOg1=eמl!6J"aj##ٶw) +ۙ$.bl5vʠj7soTgݕxh>%O(}zL0kY ;vBR|hj! g=U!brq!_̪4O֟/=xn3YW7ldsk|b0伆fmB ``wyOuIi|1~/7>%(\6t½Y`:lFjKY؈2CԠB#|n}v Nz N;˥.kg(Ȏ31Y$]Ϲ7i{eЭs[7SyF"h!U~fA~+JfXV r ōY GfÜّyO˿FB%|a{:/UCЖjzLj*87'ܜlX&2ZWB_#.09B8([z Ύ>8ڠj`[}/zfકl.ˬNDbUͭ[pSpMtplx?5tLW4\˙l􏉺.uPmQ.xޏc.~aD5~UlY~7\vtt@M CEE>o.Tq>]r2УDL\CVT(Կń;/J\]ؕML'|:\#QeRGI S|kdE/]̽惷/LƟ=1eBHΩ$,eC X*Bswi0B~-Ug<Ц`p,80_ajSx&|'9F\H+;_Ad朝zyy2˛n// @S9H 7?-$ߘۏEt h!M:F:_ȦR!p9z8m\r@ =gg"ҀV;eIx^zW\$x#P~6<(ʥIeC+;$~%(%[۫Ӄ{Aj w@5[`h$TdOA(NˎKkxq:J" WH^fsЉ Nт,=ʣRTYf)y-WIUgHH 9jrOWh(K<ʭHgbvJ*II49TA^*>N Rc1!\rA5oЩ:ٹCqA1>iXe09Sw8eD C(ED>dJF-/B+e=Mi7kBh1߭AOŒW xi[Q}1}%\LɩyޛSDU16Bylkh~c5 ЅO>vDѭ,x0]p-;u8JZ18G~A^}\ q|VѪB}9Klê4'0 r"al:3$50xr>e3$*h e,wKDt˂\)xա !}.W2iQ#t ӪX ,Oc,*%˩.6-5^og[УP />"#2 oz 1ذڎvv z[o})I1|ïI=piCX̷ t!oOEv?I.4x#_6Ǝ@N_aB~1#83퇖b5۾hԫ|CDQ:&a¬l Q{/i>^4315~ߗ>oi\dkTNY+̩I刿.$蔀+!ݞ+a!@2< 6HH1˃u6Jiuؾ v4s$5Ba8.̹鶔XF_Pd|_RhyHM,Ui2 ?^g۰?(fA RT\SA;+jbWUJO/C:np6h\abPmUIħzpE. ].~IvXDl&ǡUX:y,0dlK *cGRN+[nxDA/y' -wvkڃWW ~NI>򂨤FU?q" mdznRGf[Xg̫9kkD+=)23L6BgfwY$YDkq5tWyM+ ؋3ب2Pm5FeA0#'ț3T]O~_|Ye ca ?R8ו 샙Wťep;f?grmf7g[L粅'2n^TeeFMzwxV]`y>S*|M:|T ehO'<Ǯttibݟ=Dv[?:>L#GZ;nD9pWp*-|Wq>JUq# I8Nka'>^X:ȷT-EgĨ&M@x&P=+US mn%%V ._1W&;4P\ if!VxPDPB `Gu!7^i,xpT9#&hkh;$F3(^{bg0Q3<ܫQ‘Q8+RkStZap^J)G1f7- @!w+d' 'Nzz#[c..xVoLИOdq+\2 `\<~c/8$Cusj$1Hx *Wy3qOQR1o"Tv^ ̳^6k#;&# I1n2D&HGLZT>nV)>`dFS;/ |n`A2ف3HI/> ~N҈~LaaGC5J7(%朁%ʂsO 1"tնҝ82ZSpq*s8h;PïxpWZ%Ƃj{q_IӝxQ]$4&GSitynPOM0lzWx7RV%DU)+!g`, p xNoTc Zx^P_0<(כ|ӧq7n[ִ >ZYA7v^ƋC6A BwYqFM`b@i]iw2+o%- &iFv_ 3r,ˡac1oKCMތ@AʆBj!q&;N;D7`=:=Ik?fRiQ.]s>K}n^Rh{&!kaqgȈP,,>6cP{3n,;MǨy8r/ MCv2=Ɏk#U)t!+E(݈ⓛ nc"ӱ&hؕ6B%๹/<{OQy\l!~sI]yO#Z=:6܄XKn.(}0F//](\?|ze$2fS5tPcOel]|@3׊Ht^$lwC<Ͱv4 ,eo`:y0bQ"B 1d =D |GE?dd7 ?(,`P}:.vb=H1>"2]{Ƶ68u6hoY.3 ]9r?dj`t?^ò݉@ԤaL+]I@W9vXs/2oMwPVZhnf3 eD._gc5?O'5Y?zMuE_*HUv0^ӼqpІ(FAc3ccͰ^yIEP!@e/qkMrrR+2t7:g[xZj;9h e?/EȾs <ܴ~ȅfn\"ғԾ ũd 06:g.0GN],EFՁffHiR6F'wf&W̕[M ?9;pZ{(.E%Ёr2qQ`(hM_u~dj[` xgu{@CK/F9dM cūH5qǪ7iLٽDUΨvd"@k<@V!M6R*ݟ rws$\`7 viuӋsbirw/77kDd0ܡOT)P,Wg55Kois Q3ȫʾbG veOS.?iPaf7)\ekcP := S6' ~w&VvtBW:|%:lu(kC6Nwk~RR-ק)> g+*LxoY7F|ׂ6[8%pZAJDgء?_f b Rau`HuT@ʹ_ oLlJq8S$".Ni]miإ(ѿ5Y.+ *# ӛz#7/u 고e(TAQzr~Fwgl fZEF̈S(莖,ؑe_ O"S`B}ozW@;fUq}d5Dhj.3 @Mpaψ[?m$.n[բex9ΝszlR}(GyJ(^^>aWo*J`oIHr; k+.+/W@c&᮱ f~HNX@\s濹Q|c3.G\jRh𖒴k/9֍=eŤ tI`X'?Vp9^qၵoT 4?`8ZYK\SJ<,KfUc)U[pͨ.-7ɷD]ÑFqӋ{M+Mټȳ1iN,c)mP t,$}XB<1cd5Xccx3{d[mEq.bEY14f0Oaκi7#Z4ZsեϏO& 6a"O&"<@~]>і:].% 2X$)礞iE7S$΄m+ZW:*vq3C{-:ŧ>ٞ 򄻷{4FY™A{AfICjX5@A'uVȂF,U Hm@6ˋЄ{Jϧp$Buf Ž⚄WkZ쟯6)aF~v%cN Xe_LHɝxT+n|Qz3G2M(`njk)v%Ttx.3SqrBγ`&($7sBj! }i!D؅'.=z$P!hto93q9%sY= ct/VIPM6r oF(t-O޼X$s"Xf+Bt]ѳ,(%Z FZ2h4e61jS?u) `GU[?naדC؂\I[srh٢Ddp6#'@mHT9}OJ}Bu9L(6jkĕ"Bqׇӄ_*9 f{hA%&ci0" n{ɮ>.AE=PxQJਥjI)(\CC9.{}C64M\ć<,4: qjÛXLNJ-J^ |o <=Zf&b{՛, 3co]1}dL~Rؘ Be?r)~ }\@1OGzbޏL.U`!q|O**)uIg>qVESqCM={ e "xG zn#V `pxdDt40zB 8x飚4_.|W@+%<($q)i43B#G &O;)raŔ +W{BϱaWtbBu Hۘ 18wvs /$7[b;^BLAhX*]ϔl|]7åM!&gMS6vgES:-|',?3h3']p% Л0|r3ZAt{S+ `Y^pIkBp(]Chy6BMHvuq]&e+M4e |gOjxd69QZ˔y!`:V±ds7z7">޼2'Ҫ([tJkcz/%?O<>::PC.t\I?.d,atsǐZ.Mz,J?K8x:\A~zb٦FGH5&f3B N܆hN\L=uS~bm);A)r mCXk5"\LbϨp›X7/IA(dT _Eغ>]4^Q/pCNzO|E-ӑ{XV`)GzEAG$!mă@(} Zk.94+d?[q峅eRB3PD(Fpsw{iКr=n.lߜN$ړZy6}nhk֫E:&ĘL5άW p pD5'/it 1{څc $A4g?k10t& m={o.]L9DF_x+O=`O Sy@CθiSJcb)|p3}(y(T/M+agtkYj g]`yTV=2ᴽN{:w7.ӍkALlLY>-CiE o$U)Hv;M6`Ed rX()1&Jr'z؞q l6Zy8!6<=cObXj{cI'o"KHk!Ԯ8 Jvrԏȁ]_!<$P#h$eĀK|ũod7@}qckEvـ{{[SǶ?$SuiZ 0'ܰ7xf G!LK1]!$ Ia/AܴTE /,ua;"͚؎}D@#Ǹj4[f?i6B#EǜYN}~V2Y? OwmBe͋1tt*[ؓ=} }8բ;UBndm#9 lkǙ$7tLx1'Jzq[I \UQζKEE 9Z89ХN8=d^ p7/*o9ݖ;0{ $53 Z.lBv+وgw^h6_Uj$\7* [?u (Tcw<\AIURd)_~6[rHz MQ/+r_@WyBP е7ItnkGReH6)ugBd²2LЋ?[#%jl r"XxAv߹S9ӆ#~S2GfxorU ?bdl5Y{t8Bh}#)5ŕ|}߼b_{~D5҃{ V8\ i%ރ"'Αua5.$Kwe#Fi]۱8(V=),J0]|@ޫ}5I<,*˼zEx+H=Vg˓a cLs XNij* j/]N>=Z/y5!H_/0~0Gi&=,q/9]x=`~Lp}0_pxm# SKXӣV5K=}#lN1}(;z#Gɶ7΍Ve7!-hOWXЧX{ hkbv!z#[#N8%V7*@s1G`=װy"3U`EQoCS>&Gz:Ĭ/2pYiq#44 *k_'@|l-ZKhrc-QTfj"ͧjujLL>Tz@S#}2yn 5]P~[mmn˂uâ t 8nv(^<#PU2YڍHnyyKŪKe\X9 9zq炿xxɱ1KַRſQD{qoXTt9"5K*kP!U~w ƞ}NOIGUEtH0q=yPhP}n?jprՍ~  f- ]Y=9հGI!م(c^{ Ƃ9+1 ƯKjm,ďzɱiCvso9鶬,OX*ӐЅkżXDmSY1' Ee$Ig! -3?na;* tsR[;H. s*ֳXeZR_fe/$&z, .O/UY3CF UP MU H,mɕĘ Kn'8C>uH\e&eܷB&\@]1C݆P/h*OJ2knvT?4%WIV(nl߽Du|E<Ƒa7.zc[cT~$ 7/ǎIT=Fyx_@ C^Ijt 7lK+@k>gW8QѴ@)ڛ+V187I߄ŗ V Zwk5ᾞa2Bsgוhc/L aN4ͅ؈|wTSaDD~3;q6ThwHtW) @L~# Ш,Pv_5fQgN$r^9R[o/8m+VJ()3;a_$$=M܂޲7k'98P;cy|pX]O!()uI X[L\S.Mʹ܃.΄qrCS$]F/8\3)ةr05K3&11F_0j r<`8o!~"il*j{$ع!t@":bIWuG>5]mGL!Vw33L mgGq[KEm8IǸ:C{,>4m|6 q\ ܂q]VS^vS (rRȮ!(U; !g¼GLdQ cZ@^!iOdPΈΪ`:n=9g Dw fձUL~Xk$5ᱵ I4 N^figHއ`ɦJs }GSk>m rDH+{{r^tfF |Zv"bɏ -q#Ns5{f-ټll82v㈈J_1{f`!|,fi>.e*5Cb%Jl$Qj#~t$\Jyl9%`ž.8Hbpve r۝  '$)zM!juҫۺctGlgaJҭk41GO5~9[JI1#h4]j|4 f2lJlmsv[$swQ$ ;{:9l H~Rq,瘿K2oЏtlw-gH6"{eDۤ4PL˯_H6n7f2U*fMr{>} 0IĴo>ΝvDy ԟ԰rzZI "JL{xV!0z ZgY.'%XfT>0Oڡ Ԣ5(qʄ"DtTB>(vq@K+),XXaz{,0ЄdزouBXQ uTk$SA@{-ny%jQ;ņu,wVi=9MT$-^/F 8k8hk~Ȑk#ck ^c|vq&$VaD{[?}9%>͌6`vOڱ؎(xR{Z@۰Xe,J1R>9.?y'5SXΝR~.['4KK1$'Zh5ذU]++sÛ2$VesLZZΉ[  !_0\&;:š#p2XDJ{y&\9+[+Sڷ=|] Y-S1kG *V Bzm^!0;3k[ ͩY 2P3t\,+h7Lbȅ.{}bKjj>A v_LVp,&RAi80gZ{b5k^Rd=(Ź5)ش\_Daz_L2"D> d$NQK~a+#5lk<c:LcoZ31ƞi.O7/0.Pa)K7w͊v2Ӗ\/`Ɠ+ X_'—aęlَ{@!'PㆇߍfϏE 4_0flR-፠̭ុGtvb 4d+`R!yYc YSZpZȊX I ;S09Ț^nFХs%&hApN`dKʞtio ao9 8pa wGK ߀-c69t6u$]mcGG*Xj,%!rik{ 7Kj YF,]NP&6M< Ipi3p4Vj!3Muqt:xnc X>_S57)vݤC}Oo]VM:]]QBn. 3?huT:{^ P+H,a@ss+3 8Z *.|ԉHhH<_dZoŸӏ.wQQ3Y׊"G K>],LM)ۮr- ̖?jV$XN`hZIUDT5;B(PyNG8u1Ϝ}fҗ=T̈bpuߊ T ڕw256oq n B||Hdv̀b&]yJcCG~^Tzq ϟlXbwӟ:ˀF賑`^iN[-1< V >8ڽL^0 n_Mhzl[o07/?!D\^.4shEc׋ܩ==)6 afCF9(0L?\V:YA,JAPFH=2a+5i"k4$8QZ%'$9Wϳ[:7j2`B 4j|pj+R(՞02x @O[]%۶2&/弋I˾hsޥ_s%p-kMᯃ44=cSm7Gk2#j2^|'߉.M%Tݹhfdgz'_uV*8t.qS׼sLW.qP5Ʊyɞ%`-;Hr+54 HZi9B}Ÿ@6UrPB⻠=:Zڱ=;J Ws-/KBPŹi7.- SwבQka{y;,m&<p $iCF&.Wt"Dah`8-BXhtN7p/2&US?]IBa~*yjPe'!c-}CAS몞q U*bm{8&*[9 {ύ"Vނ>}(>SqHH+"{ީRF<&Иª[Of^]A3, p<`-XHMh[7RG:Ir$Њ84ܚ:J?8,^<(IbZl]L6?jۺս+EbSLʟA1Ulȍx \ՓȜ> oOF{eU4DaأJKӨI*9ב}dT^)́?:PM d0s`ܘ*vXwxxA-IĄG_ѩKx?W:#z?H#yH1b)u+˷T|VzO;4T%B5s ϮVaɜSF1|c;AgCl2 R/4хDo9͐z >kSZ횺.qKQ5umq,7ة[/ˬcؖ{QqHpaEf}eSf}Ѽ;L Rm>K>dˊRp=Lx\Q(PPx#?e]IP}[R۞UY傖T'hduTǎ_ ~Iu6#upsc@6*~Z#x)֜4\ܮԉ/aUPs<͇zyb%_uCSth`H.!amk\]$)j;&#-L6Lqa;Y/JoÌS<‡GxO(T9޳po!VbWn-̩_QUUHk?`..JSSyA|7Vckg^# /eLY*ebn@ \8泠oՌ¶xyKRBB ~Я3PaLsaRjͫKTۉh\ǷK$mgKLiŎ -iVAb^F'+>‰v%8 Ju>.)gh_fE^Oڠ=yC@Cj,6eREt>JQWP.ZpL?@ٙRdT.B$'` R0tԔkjJ`\^~IXu` hJs"uS j' a \+&7jt`~8> gfwoBl\E/B݊h]T~H&1)Mײ*|b J ?J`#S~s#O6t*`zАhWgE1Й"ЌO axDoGg7[|m #J*RQf] sQUGES( 㿆|J-8kGd$#K-zʻ] E6 f[c:KI&}\{ϚHxTD1 u2]O8O *y ]asA UTZHAr=&ِA`"}e9j=Wh^,EdGPuJ8"pr M ;`=Mq)r a$ <ܔڶSsQuC$ (d-NCץ'q;q*8 hti` E1ݮKkw Vv .?*,.,nw.N-4OQ2NtlU1M%3b.O|kK-T6TL7q,:u|V Ig*ŋIrʙEm|y1"aZVw[K[3VV` 6`]%TZLhٌqrJ/,k;`}WT$S Zr4iq7J)) fY{f%KjdYw-|b3 r5qپ[cg Rwtŵ[ȫoxǴol]h|HUx}ݮcvO| ͻz:D@2m-j 4Zm2*0iݪoTKdB!pD"%ڴG;)SN4EKb mF0c u7[UjO<] M /A+.x!/)D4?WόXI.L!W1BRVY4OFn6TL$r -hA˔Tsc!/Oc> 5lCF7u=8~o]%R;x}2??n@tD 9&uv;rM4<=5,] :BCI!%>i" [H5J"$VpfQ9p[ r\?@-a_n`S,Ce99 J %E?[$s j$yKxv-b>ቦa'}Nk 'Zvbb.G[\Fրl;BHiiEE]:*eSiFp\KE~ |22c*YK~^s`ԥ,(^Y-fZ"e٤ %GW 5~،EOZ/gFp W, "vo޺ u@]Hgpi;g2 Gi9,p~#Ac".&MC9/;EL~:I6W>3g0z̝^ oKr>OyV$C8At('YAfbKs0IES=FҌz0z}B 0N ^E7B77iԫUS8zFWO٧lyUprfD8 s¸[h@U%뺪<vkDamry /#sDW ¦ S? FL Y +$Jl\XWBDKW4vsYP9%Gb8lx4N䃤Dϛ'Ulyho6sN QEϠ8} Wre:=P-鍗dnLƗhA g2aAW۩KuŢW޵$WHR'Wl d'GV""/l|lߨyQcc/t.FJR~l<\R29 Bnxx+PL4:":LDts-0hC,ٝ9Eͬ(0B_K6xNo+h瀢:u,Qvp-1);_|Ss9P[ ~yٸp}Gx~ G) o={-IZ`q_wM,]3rva߅:K" Ā) " "G@鿬sQfgxN}ퟢnVxKЅǠ Awrէ} K޷Y?anms0}J+ֳ0O)-O.J"k_ 't)1!T{f"g;  &@~06O~(hz:ޣi_R-0.R~Yhh:[krY8~i&Zl_nwE!HXqH7րqye8QvΈ&YdZp?imA>V*. |p~vT 03b:Qycl\~Z ":T6U6] yaYoV\C)=h/[~.d?jI $wd 'm,U'-J FNS4mw:ݵ,]G(P9m@' Y5_|KZ[,~Ť~f yU)?mOGAx)[s\RbjYPAүtP \9@Lb~2R*c 9[:yo wZWԡy>d*H׬hv>; a0=kӿ[v 4JrG=OXmSEg7[}Xng~Ųt<0إAԄτ7:~`率o7j@eA<A ZϮ H;/I/7~83ogmKf%dAxDg#AL>HaӬTA%dqȰX8Fܓ I9n5JW )/H/51 "m^W)oʧ\'16& Sb˾ btK*ʚNCg>ݲ셐+&XYCGqDjG2/gC%:j"Xīj)Ȃӄ[71tk G؅PYE=v/U-8bW.4xJ!X#B5XgYyl^,Lk='ї_xe =aַ肚Ea)r'm qʐS(PzvpLC2՘%sCŢ? s~&ۻC ?T]^m_㘋>#-_%Ge/;9Uc ̏7Cfy8d"NJok ),n˓Yn0u6ܪ#/_1#܌q#[p|2ÉՑ/·, TGq=}CÜkSs$+ҰEx9 $uKjRSRw#-癩ZGYڳDWʤZ+/F))=Gwtf?π6ܜznPߣxj|wIl߲ !˃գ,pJ|c0!iL sԦ6n\$\'Ž-N]ߐ78YMw0`Xlʼnc9\_8`u;kݱu&@ 0׃UH.M=۱$ʨc瘉xDBgP-sCY3@9)F[|CN&&>! wDfhHYÞe0eVfN0,߳-<'Cjц̯x ¯b =&U3|j.keE8 p5Gy΢ V2_HdJkKd}dc-n'vcU1;L#ϒ\\غD nTaa'7Ibt&|X +o*LՅi`0A3BJTE2/gz@SoEܸ{$Rš,|uw}oG>ti-=Jn;*8]<@/ȉaHFcEkw]^VWz}s oU`f5r}mit_iRxme+}v MX_Ղ$W{jSc̑]Th\7W:`zUQs$INiZ,$p$AK)Z%\8S-l%'bAޤǂ6Z EFv4wIQ{,;DsHMej2*"AǕA) (e~UHFIii)'! x{ 'А%@P8HɊ;oQ( WLoF dtr̂~ 3X[g@fHV6Aݼ S2T * Umuas`F;e=a#2d蹋E ȭoӏ%D ^,uG@< ($C=zjq:,+U%9@$,VFazQ*ZۏڹM l zu|ŰAo M "={E}d31a:WtTio7+uW 1<|e| q/+z_UŦDAV R$'xz5cEc&%:Nsνa̲/aB BH_4aZ̐ gۇpUb]/2xp~vcyNZK_z`C~6pc]܇&`yŪ. [Z!(^2HKuG橑bpb/4]1g$&kfP $hJRXg_ ,a^\ٲ8@TDݦҗ<g\ْjڻ(DȮrq _LK9Cb*;ē'AJGk؛"+(Ļ .QvU%Exm֩14~lIG LȚ,'ֳS?xAṈWAɌ$yfHzZ=;vl}wme[ȄYڰrLV(7/\?,ѿC&6@dU`##= RV{ܛ0XPc& tQA(U| tn!m&,_gy^R~u2nm ? dֶ*urQ}Bh,DWj p0(NR$űW:EF RS!2DwNw:9i8*И{Azʼ.9?6qA~\0ν Q@pē"Q4e"oS %VTDwl:Rͺ4mzl8#`VOA>.. yNͧǶP?G(*DE!|ү5Kd{ {đG=- QI$' I fj} EHnwX 'Q(7D7GwľUM8"SpB>ky3[ .{1/a/.g"%WhG\#AeV9ma s``R|; t]MGDݕ>Px~ =f}Zɯ&<>h ˮᒩlcVV,мM^#n%YxL,4IW7ſv [Bm8ăuXh*,p-{p$$yH' ) :CߓxLy WOw#`#rt(]~PÅC9rq Uh(u[P10G [ `!eckR4Q7 g8f]zǚ5O ,vyӜfY%a) G,pZw2*]%2v "_:/c&_JQT({gR֪n@F2"<'6uA0%4E?ʯ#u]Ьd,]4Udf4? Bz̵ҫ$." _hƊ-!S;_!y0L/rΫ v1Ϛ,^{7k0$D$AR}|5LF걚6VSQ>hc6%L@C!M|4Ѷ:f2*sOli !29(b/QÊ<~I&spTMܴZ5fʆ@9G \Yศx"~v;&!Z w{- f4~8Xšm &ʗ8 G)*)/ieښl AtO[a@mp$ xh.彟mTp?ٮ]Z 8x5 Ut;S հK*34AY7k4nr96wF?$d8b&7Qϧ:I?5=AvJ ‡SI/yr0ΪTo5¾4z#>ҝouu?g̪$s*+VU*q]%=hwzͷ:x t<ߣ&SLgXҟN2)flC6AwsSN7*V_fNIZ!{=H͈ͪLwìx߫ĜZ%rNe\0dЇv L>a VoedIxo u'6_ vlNZjq21$J)SZMll+9J, 4V>T\jTR~(uۡP`@։{k0Etπ~cZ0&wY`5iJiK_)gӴcT] }2HXB<>U`5œvJV1ӎ. aiGX& Rp}cwrhJE=cFURyšiL6"1iQ$#Ղsڧ}Pk4'-dO&zaE'EOt$tm}Ӓ!m!^:;XQ}Y>'TR=%,yWfGG%ޖѤuUW j6|KrsK)KXSdW H[U"/絡 ߏF؈J?Z\Rs#oD%?wwhI_D*st 6jX$ɪAlÍ+RWΒ*CK[XAK{0QvazY>;Vm&-L}IR{DGic3Icg%O^q].ϩkٱ>GdԬ o&i^K*E}p. ơtp|Q;9nb}N`p޵!vǘ8fgVSN S:t—Tgs3*H n" >P~S5'?żR].xGC>JBa*t`?>F2>W(b]ub*/mqLoh-l*|l%j/s VMR08Q7nqUUfrԭb'Clꏆ.hH+]4&㮻,=t 6G ,^ "D8KR22S@^|^}.q~H0!_?M[XRoz*0Sl2^Z墋S!ΛmFҳaӼ̙Wq.'8qa< Һ㐻֛ݴ?˫փ܅R $۠8Jnb-Wiwj|p%|͢\Yn9*jB~s A/c/PS. $X54)W/q]z;p7sr8xSۨtC7J#,(kwM6.!U*T(\p[VP-0ySN,u1bA85H 4ig!ͳU5황(p8 |xT(`ZlL&ެ\2O}G:MmN1Pk&*[|߇pHq[Oʡ遻;43=^ϻe˴9g-F%ׂԀ3K^drpo]dRˡcޮ>5 @-#/)ia tSd wYwCPlٕD܇ib 8uGd?[gV]=9%Ko0@U~CJ4?a ӟp%m/궂oXy%+U-qQeQG{Pnأ5sfQl"kysT>K-+`T&B؟n?2 ګ(``Y!@ݧ2%orO2"Þ9fǃ+bLOtV9`Wu:`>VHЌa,79Vx&nؙK:1jb1Nr"IbͰ-F}Ɲi۩T2!#[EP1$dW)c1|ʍzr}w&9=O̷zI^$ieuj^"  xDƀ=D/5bOnHBu]{/BH)k;oz=4I;{9ceX>W,cD"\ȦRd%HsLu&bSM@ +w灁-r5$5g8^标nW&D wyb?˾S|clN\?OTriY/~ zwc߲CI.!m1 1br+Z32$ґ9I hN$?δ a;_nmČpp6N6RG_T,{Eu@XOy/iH }q fc>UՊ(JH$rK[]mt<"X^s}1**zF1wC N(F>LWdzRCDNORj fFdXӋJ4Cϕ@L3RS +6;sGYNXSZpnq)$TI(PDB>_斾hj>.qjބST#p {ƎG837)m~2y Q'$ZU8LP-X2PԎ2/tWЕ1t\,pV,:Nf/Dm`;=X- K=X%m=~FR7_ i׌C>xp0%3TEM> wi "-@#ʢRҾ`~)^]6ƃȿ&Fw5 ֤I?ؕ6S wjڙn\p=q焾); Of, `bhR!VvNòl>AbAoK]ryidg0H%yar'.A5ˉ4 neivvI]Zb CMKQfۗ\PX6% 9:ȼ 5J8߂ 1tTt2I,:ԱiG<,_X//E&}s{qS튊aqۼJ_p|3[Q^(#׸bT MՌH%ƞhDXrPĊ/,GrQۣ?l\|ЃyE'V;Fr |a# mlTHY5[Pz /0b)]cg|.vň#;~>e m4F_hPHv%/+zk{tvYY/6@LjN,M[F*$rYpJs0o_ĿӃI0-:5m,Er2vFH<g3Lhj, .+ٲkHfY4}^H(!CbCf=)Z~w B ^zLW,e+HiJYP)n޿p6gX؝GbIccvlᴁdE a'6s\ݝ;ʇ$20d aZS+UjQ _'Ģr@ X:l6):FQ:!C T2Z =@Y}#^AL"[گ[d"oFN.%d$R 1"W>(l"SsE.73oqi+ Pygn&:׬Kذuxh'T-k*^?K!)%4݃xjT׭ ò5->S1MPg6(KR<"h gpZV^jZ(,"cSo,]6)<׮zEMlO)(EA\adt>`uQ6}z? RN{Jl~0)ђoiĮRu,cMzU mN1i_QrPW|Ej2ؾ ozױu%:e/ 'S80[WOq#֒թazhv~8~=(bfY= ?dt3G.5bCBL( [mp/NЛI֍^76΃"Yo^#ŬtPZHsNtQYק  L2KF(GMĒ^\~FVv1!`)&Aw!a2vL)h->~"KdIR 7 #B@|OBnD)4CdFWŲQ~9\zM]\/CQG=S?,'4!6ݓ&lK7zyQbel 9+z槮 O樷gjU)Jp:#"g9+KOK1|B,8f\.N DBbs_GAVkCD$vV܀T42MJ[}hPaq@XR5 W~~u|U { Sh,? ;ob(7K؎rsw|KɗSxW8;h촙 !_y-ewHyEGU0Ƣjtx5HkMpP(l~Q+7V.H?;J6$, (V@WJFTuF?/̦QZiĬeW(y O p4#i caFjj_?|#HZ!!τ+U>YI;pTE?̧SFƗ;${g(ҳhM3|7IE*V!W}hb\\'MGV[x˽ww* aMLmTtHXul/IďAsmwkɘ" cV> E#HbAC. !%ƞ 8c//ܛm2d~5JЃIfs#<\]nX:ºݗ!q}}Vn }3>AT A(hnx+n$~dDTNJW'WElT?gm M/<1nj Jc9FҐaf_;ޖ S;/ѥdpA>8ȡӪ5eF+5H0MF͝EDNcͿտJ-~]xyޝae1 lU h} ߸6tFu.,+4m ;;HP $HBZ̬jZ[nXgS(cx0,v`_9> MSe.j{WLŷy]oVtT" оlQ^&] f2E*lOU?%kx+Hï:TX2{L74603dT=2|AB7-K}_Z7 $+ijM LK7:JDIz`//ОC|d ɉEWQ!f}oL37IQ͑Z} _V>e#xYWSe<5eAaӜ!Vr7=hrD뷨^|4m&Ak囐 ^NjިCom 21S!G@E c^[_xU.HX#+h;7\]#!Кkf_ӟL$iUrSA(Y%0x-VMa?i~;ijNd=S0U 'r@YEŝX$s\Wf3  7> %J>]_"j W*pYnpNNA wGlr!X=5Tol'R _,vu" P) v4#y۶5#P*?aRގm= By>䄬Xm]t!1 {q )9Ǡ}ēVcՉV$cJ :*?uwK' K$|+pG\W)myTFZ@ 5p<A7&(s޷_>/9wь33vfq.?w&êIw8sWPᑽ3a6G9wOps_z@#:EvR~-aA?fęawBahW#DGM['$T zeԗt?+wS#DJ6CHj821hTr,1FD:/O6q:1IN_|F8  g'T-zoy*R-/E YFes'4v4n!L?kjTSt7E)eRnX`sH 8 :|a ·^"j($mi~F}B(gllqtgY&P ?ޢI'E}oF߿V\r(۟?CVM4B!ﺜgݓLXf@JH6d/cec= !7_RS_4 ĴMӋ!n7\aqeo{@DA ] Cpcvla'3Irά}z2eO䯎LZvVrPHvk~Lkf?דr|%ج@U2 ]v\OhI7"kd.ѝ1ښ悿CU^!w,"hi KYFoMN6TINQ:,6/iL^+0l+`njlT>`@\ Nlp} U*_{ ,k1EKQ "Ja? BUkt[ٙܵd I6q|(9}PwNa̍Bak|B|{wXV!teԕ,mgXP~,`;ζYw2ēJ*ʁq)-r0rkwu?]dv2uZjB_y􍆣&zp_9J23GT"57X7 2;6םheV Ϡʹd}?ț@3'@%*6[Sq\͛ C>bY%q&CcaԤYx o4+#`ËMɻ$瘟QH˙+b.xZ!SX P4pC!}|S]ob7m'TU.ϻoK蚸t -b!$e]L6~;PV " z#& |ǾBHILqe p7ȸc>nwC"SFOC tU[S o%+ 0{U%oQ0i(<ݔ2Pp`.3ẓ܍C: GRK"o0P {*$b7LO fY"̨Tx&]f "wOsx<ܣ|r5I%ueOwD]4aPT+͙4AaNtLaobbQV(巀u."ތִ Tac{95b^62wo|x#KzyWy1Q1fJ >"w6 fOP[1c~=}ՂU=I-6jDVS$yqBA!6CQRwiѴ 8s,1aZd?z IDnwBO.z_߉-hEl[PN6Ye-E_߽iGTcQ /\۠Q8\YߋL~ .anچ_6v 35:C-CoC}.]6_ \߸NH7(v#JqY&+eKˌVKV[̂Ea)swoё䞦cU5:.G pa"Y{8;%n_r?<7}6{7i߭ )R%f^H.v8<2GiAA6mq+0jc[?)wQ+p«[Zw{ˌ>:@, y<]|vv۬RO&@>a{LK=n/YCe# ,OC㦑} _u@usjNv.ȏjXN$nFhPzfu=ڢ ";7r+[RQ_?)D;e;qL)5EnAy+<6ğ%ypfp gg%@i"ýx0n۵ӗ?N4lɷ*:'P0ׯcsL?&\`ƌE1>OKZ(AE>ozg뜻rlVGnh|`v$?hj8_'l`ba˱Ig N؍>fvAei<`ZH 糤V{\"pW mJO+mH~DI.[އ9 az:;ۡ$'j6QbpC^:*JRlrgaZA1c}җmIk)H?6dS0mR b'oiy]7 Z:Mm[k:k-kΪ̺[yRn+8EcmR+cȘDR?X S-3[a<4s vNE#[Ք4Q@ؾ%.^YO Iuyp`y]}UBk[Je:RD'"-=vKS#*G!&"W'E8?W Qt-TsZM64=lW;`p\N=>PKRcj7B [!Ǽ[~?g8=Y85 4Qd8&}RJ.ǩ$I||$Ő Ɠy L9KL!9H׾׌b**~) %gR`~][v栺ѽDÀ [ eKE*ՃiDGψɣ~^r+pHRryɥ6 ;mT2}x2}3@Ƒt;˔0a!Qyڣ/n^S{*`+~{JE|GWIӄ').oAN`ħ3TJ0ANcXuA,%1h8X"x'Vuj+}zc8`Y)Gz̸o*|Mfŧft%nSr* V.i$. .XXoDN6N͘7i[%AؔLM)땀̸ɩ)3 2#&~6 y536$Im׳g{މl,_I,`nY4z.fߒNȩԽ8cDgߛ+ <%uT}"ZÆ*bMbZ4/H"LSxB.{ acsuL=~ˀdI;yUWXbMR,}ͫuև. .@-WCK0"[IϺa:^ !EW1m*Ir6JTk=x[(ztQPͽN߭< tJՀ1i8;&S h0u/9g^4gnz /V_dQ'(qّnj4SRUQ+ :oyU c94o+)HQ^?ae^EBvNGdvvpAtͱ }U8aUG!9#y*C4|ͯy|+ 9ըËI+`j v,!~Xs2I,v/7ϊP! 'CbE(bb Uaesl9( i+%h73yq|D{v[;mpZhe jiɻ{RICoI2[,ȣvX#8sx PR: xAƚbXK{VIG=j&4%B^,~l;J9S Cn6jAQ]Oj-}e &&A jpzgN $ox#= `*ٜxn,?8N}8Z,mL1;Y"P7J X>Vv;cI86!cksS5(V1ǷomŐ@8ދj+V8H + JtsIu(Rp&މAE-G"umq) ]IMOAD9RSrc7Š H58d $-4!T?dRf<4FeԍPϜo}q3/ઢd"k!9S֣9vI#hAdR>͒?vs{H0PVߞkY.ddzȓ`)E!6# ;:k:l~pLb0v 4nogah(d,zɀ{.ZMs-]FVD,v{# Qnʁl/2st$oơWR# (JںETau0\%BYf=ˏ?8>c *Sz( #236\ z'bp$bB|G[u $و8=/Mh~MkrH uXzg X23F>,)MS@h7 . o t= 0lvp̘(wEt:0Xɯfи"k\V}g/ă&w,Whx*2V#$'h>o>V`'|\Ɲ8>|ʒ8%]^ٕK(+hpwW~}~x_LhI,nKS vvv~q)%ա3N(aiDg#lZiP+JooHsu,/rzR@9p-w\ [5],V6r@h1[u]!^؃nMf =˛U.خsɠ|Tr,J̀a#5Q,BPq 2Er3<W[A #Tn69[pmG;6}X/6| LH|A3ԗ_hHgItY_[a+SsryFX;!XPƒ=p-veK qat*05F=޾ h4wwvf[2#6{$LZÂ)qmUXJ GD_3뙈OYwMVdM͌+iIyS_3I-\C QVe{oXY;^ٸ㘍0w%xxI@qt;/PC(d;< qr»$R7 M lFZt|xV0NaԪKn-05Z:+xC[~?:J([vMPO vT(}W_9{IC V<E>ٽ!1PY^4MGQl0-߄hƨ2<_9!J-:߁qyY9y6.#X;,Vzȗ,9qCw=dvDnqr+*p/n6}31 Ϗ)JYq27慝#΍>5>^~*WtmvR\7k/, WQ_Uz10AP`%g B A,{h31ϼV; F֒zg삮GmJe;->|(YGy}W7|$q u5$NCI:lk11CA1cjCl.L;lVyOglhIH*u&Bھ3oC 4W[A$:F Eu*A]Ц4l_|&sYDDqjy c{06 '1V y"}=>DM!qYZ^Rq68m 'ۃ>u͝9`CYgxII.9ֽN[jӢd!b( /UJ;=׾ДkRjFEõL-јBؑOuVk`anջ$sϘ4ý,tGh/ҌJX_q薹vIJܵ">k Ռ N |C4Z-ޮL{HhPU*`0 ZX|`UYO*nY$P^xb=% %NfI4S77܏&2mR܎>w|Dxdgא:,. =ª{J֠EbT5!i3;>0)Q& (矹| hYP`%ř#[.*Qmoh}yZETH{ 7MF6;/[쌯1x>tI'!w}9:bѽ (_~6C"$X*='DK;-*3Z6JLA[cC[nY}m%|ḲӪ"PrQ&w/NKa@cY# qE#!r:aY̪fCt:z%U~8jCJ^ r*$TR zL H/JFE,Q>+"*gVܒ:pnO1V *@H!kƤ)0rydyEDBG<Ŝ9%Dl 59Hp9[: 58 ӒQB 75k/i&MT*96\ߢvЙv Uaa0-416 JswH)^$wI\xԲIrJF_ky$L?Κ'R"0U~ E(pdXbft_ 4TXeS@'*F`vq9]ߥQC̥/>k٘_p:waG1h>Tmϼ K ba̰I2 &d! NϋSO}(BpwV_1$ٚK| q bx0F}+^ml?;'[|檸h( ;R/P [g&J% @cWdzR:g CRr X$矅_Nqm([ZMPES-h9k,T$;k L6A]M ~tLG6H#솹 jZS/):xJ)W7sayu!FUCp8QAzkm=E=!|{h/jӾ7ghUiҋ=L,Gs>-DȭUFO@Px|ĬNll;3-Ǯf%?6sբ9$4 L dkzPzD΋ԣ#ÉHH,Uda(㏜0|WA-486dLCQegGc!!<^WL`BId 1FXYKvSbWQe +UDm؃L{%iJ]/XN^#}=p/Qwz}cpa Ad NcWIwTO'9 EUߊ\:8Yy-,B b{v(jUUeӮF;/` 6DrjzzFݯkj $5uVk_u Elr-Y?o.gο4Q}'YӴO9DZ}i2$:r0SP0Yv.$kp3gW!XVJ|0-[{ Y\/Y#` `8Ϣ| UP=^5GF}aػ lt˫[?X)l okPaUc2GLl6dkx.'x?UM."?kMrٔ&ഹ@7dMkBn&n/ BZ P_+Q+sdU1sob޶R 婣yMl&A.GOH iInNFwM3Jَ[KTM_\eJ\kJ^Yl"/~gFVmy?<қ/c>머Dѱ;pj&J߼_OEwݙHtu^$ : 8Rۍ8AA:HiⓤS酹Da(vsLGA`}ZG\[v׹5"ITN * Qlc5fWY~wm8LSZIKAL]%VjY>viiN^'ߋi8tQ7Ba?>~̠t怂)Î %!V`1LLEJLП۾j"y֣@-Xdb2LP휊߬mڝXȥq`JHmiϞ0aDyD 0(h5d&B&u"N{o׻ϣ GLx{@8zo=9X8WPe0;kvV}}c˿iͅ4[Yߜz'b-W]W6 Qܰ7~lTaS@ \q0;Ѽ $T3B4@nYb?+Yn5%OixbIz-#xw+5E;ӊ*2kGli}1d>#[Y]gcu+誤E_{h㖬m[1#/Zlt]P! |#a|}h;0w ߫{|c4p39dxDTVDrP$ɓq^ׅfIƄ{(/5LPpa}hxȥfֶwAgo1DQh|*VYd.-ܑ⥬` A̰<LxN=z<7,%TID%`,oA_]IӺo)5' izzc`8H]{نCܘEx!F7{uᑚԇ:o"i<^^qi ׅBԙ 64F: C;C7Hg§X)|lԭ|f$ .S'ؓʞyG2,4܀?yuzbC2RנFJ#"pDAj'C2"@p23 ` WNG/ L<8!m}X{ V4]}GL$ث M>/GG|w'䅑.m~m_ͧ'̔E#qLoQBMe -f@jҞg Ͼ^(3kG*k:``n @UVfѷ4nc]mfn(uT3?U Yݽ{lok$NkO*QY,{nCQ^AХY sS; 2HRS,距tf+^{ښ@>6eMkUgNbIe&Ul-;ߎWviKCy{uݫ{"i1#{G ݼ#E rȻ(xy {o͡ }j셳Laoaf>ӣL]e5]@)sx5/)Z8MU(m /zܑOC(3",e3ћ n<*Gd.Ʊ g+>im-Mf. BгvaaÜiwE߮͢0X cUp\ded &5a$ mwn}pp3:شAN2:SKKpAO+i[)ԈY;(hJ0֗x`lG3W>kɯ2_kA%=N6̝2 ILB:V*&bE[μ13fmγBX!oAl|<}m Z\`=)as S beF2d#V #X6:/@rk1S<Ǚ= uM_pv+lej(dv6 X~=ظRXH~d}r㢕+<2,E2lDJpy򴽨N>' bJ+Zb1]B@-DZ#SKq%qokVBm`z'Ȯ]^s[I2 8u4"`Sr>R[bX\`u@9ӹKO܌P`kczc?R{J%!86gPe7tD58úW{W<ҁWh)@dCx]U@;pQ~}Eek{rturֆ˝Ů,y֮ؕͺoY[m|)1<_H?1C_2Jh&_;kOb>KԠh!r e_SJ""S`]0 H5`4 _Y=?ؚh},4\>n)n*(47dBoBː7L1ϑGܠ &Nhm>ݖMӭMª]1;I>d`kռѵguFD@||>X #?{d F>V(4+vMdC(W[p(ң%MބRiB3}Bw}(xwL6YƦ( eS?sI1cVgQ wW,o_|/'Uc-&OZ. dm[9dqM oIJKwtđBmI=֊Q4#BebG;z+yhuĚ7 >?F8B ,GpT9Zhuu!sAc?X]2v\y?cO9`]&=Aӛ;J!4ՔAYÔFZ,!hd_r"$wαdK-J7g1YDG S0;5$4aF%_DY=KBp}zl2#ʫ̠1zT]s/=B)4:Wg5ͥ$,}[ {Ο̮93;<  {sE 퐖\S $u{uv)midJT- QRu7cfӍyiKh ; GM@V/GW-)E!thvއ%25!.x-6.~.D?lz0)6]|+{g@ʣ]L}(sB3 : ?ĈӄoS'eabR˾FZolOp`րLX[aۍkgNHT0:Do&'X@<7'F>3ҭvЅR3/T?Ed$;f+(5Y"%t|( -ggQP# p70mzG(.A gk"D~QϸV iY n-.ۘڴw }n ^ ʿUAX2وA(*6HZ5s7ͫG^jBb4,NC1Geg/@_|Lk 3L4\/cDѺ'h)h=B.'(}'0#!DFt1`=X W616$ "یH92@f S61 ϭkkBĒ@oy}Ɂ,0 /?VLĢ7Cvy&Rjz8DItȜX 9 61^VBإ2djb>A-L$4!0YbTDImuVch9B~ct)i];2"#[W;RN"֌Ek bv8 <7$x!%*~ V42`\wS%+aazj@88=~^S_1> 2DS`ǡ (Zȫc(14hYO2\w7ę"6\xIV|ð#$ MR0Z/{Y_B_pf6!Hm6b"Xpz\,>Bg5d8@~%i3CXM;6bZ|ҁ0%h \`(g>N\Q1%-eG(V9LCaعR"wKcͪ<-bM| !%O|u;*.am)]P&pUmf =,6g/) Gx-R1 Lf5jQ~D3*^1*X1Խoݻ>K+`ljШTY?gC>ۤ徽&hh=kףz*#wRe)d NV21HV"E09?q>2tfd~vXZQRr# (ЁuSd9_YD"ᅳe7Ylt1 󭒥"gZY_[%9W,qbk@ψđx z[3h0fE 3D} 3&,¢eJ{l4@SE;[+JD%z"wIVU.ܠW+! cxTX.5ʂ҇yBSs1KH#.l'mslNME3ndx Q}:X+;2&"L(bn$#_Tt(0?/r j0tf'QߌJ?}–ܩttZl&2NMTxH,Tfw# SGTg؈]}P|Qu(=gn 0?ɵX{i;١"T1-¢p/cªҙ>4_;j&I~{;ŌBa*SJ.db]?(qs$3BsG9J^M}pvjNk ب?q1+z,rU{Ǵi؄KC)ȕEX1G~&[G`(#^auWp7)g,+)bwsqmF*|*8KX)u<м5R,6B/QG^S8P*ѦÖ{$n-:Cp7B8?XTPOiQxυzXIaѺ&Kws ~~>k8oOÕ֪V5j;,3Q9gf1܊[P $C3T>X"x;JvG]MhC|f_PۋBkⷅ3e,xbP!? 6KV|XxV-B.CS- `K*/~-ݽaA7Iۙ:}#=?e2ma S^5+:TVFa,z,Eϙ`c0a*0BrSOojAeÆȝ/|-pppϙ Bn=~de1G?' {y[P3N 2uc߮`l7KĪ8X\X察:DuX5Kߤ?uqU͚{̙S+jE&E`~ H;|( 楢 (_em{0yT0[_F'Y:]:!^ XGpY@ -Y\gzFvRqkpA3-6NahrM6\6/T,@ѻY7[>׊A'agg/X -ks 9.\Yw}K.%'=<2*DdIrb$zJ),.q# L]" vo@ a\&?ж`!UX{\0N@+AEOټiS8v-RvsNW)-1/6jܦoBon ݤ-YUdb4coD285[kQ:Is0b"'M3 O6&m<Qg My4t'Kn+GOj:'en:7SyG84͐If .3 =h~Cih< M ؏iRHt$tDYQ6rpcٹ<e蘂Ucꇅ+<@-u2 +ݝYêhf\t1Y]JAq/ 7q?'sCq A/6j8^(.5<33U&pg:*c=wZ|Kv17%v8qi;wvwEY)5,O᚞KARtk#dc]ۑY]ܬw| jYµ\OTSB\`Ll;gY{y / ]T8p[ď1~ J<2أ>wܪ)愞DpJMyk>؅%QqgM&p'&t_vr؝3Hh-PMs nUzM(F~W6ׁbtv7p PARbUgV+vd<ִ?*A3 l)G $Q(BcJ>M> bǪe(^3Ѫe0:{ֆEu̟;&7OuxvsHlVohlʺ|N,\/v)(+i&.LZwْb\G{S9 C#iH$ I1[_+:$LVC@7Uy`DMHָ^w"[Ǒm<ĔLMXOzJ&;˗U~+Q7oϻ&xu-l!$A W?DQ(z:` hnYC!dh 2mМRÌc4A=}.xql~B%hpN4jU5@]ӳ\{L&dXRy?0 dRM3]VԊ @P+na둧{+er5+`wA3W~Ž7VŘy)GA# O$:>Z>ы٫#U~ W2nz$y%3NmdX }"FkH qf_$XPj_ OxȔTw- NܹAD yrVZ\_-NXj6<H 3^@CߜR<_]`o*v& UD}zI*F`9:Kn5偬!\<|<͚u6,L@XG&A?H4@ѡ DQNq,0P0!@Kq 'L/tg6['98#:ȩl75lT^goa.ΧQukkSJKlȭ_DWIGsuw8K0T9"^ө_v7epeQ^4B,vs}>y*VfוNJ z;\+q`b TV'd*G>P졹r;5n䮒+a>"ҧ[doZ,d*'@<~anPuഈyja5|kOg W#XaGgz MgY{'e{,Hkno?Tf1U4Y艏4"w VtvX,z:o,DU9;:YI0٬~N,lc|߮7pմ 3 Gpn,%nf T>`@..=쉪R#$]etDG]ޑHRO}5"7*q 4>ʃ4o%mF=SΜ4[\ND.aI cw_ :4gݴB'wLrAakQC35kْ׿DJx-LbЀndIzv/ETT7^oG*L%iN9iMY4hd骸2'^t7 jWp.iQ8!N Bʾqv zo|qV6Y ݅E I'rnwIJms?9FFN{0t2/7+Yrn>ktQ31z$~!;U8 Sd XMD:.oZv797䜳a=B,;JGq,HIZ}vaYRfpRl=dbb?Γ輭/`QQP? kiN%UMY/=f䡰}e:emJlb|TL/F4tE##B"F\M9>,5O&;9݊\ }BC> (s~(Aq58DE|MhǘϷg]\bwaL4E23]*z˃̹*HA`;-kr^;"e#)RS cbs*@"۬L:%r{Fnz Sl '߲P$w;eXcmJ%YX{F2L&zl\iF."@߅ )V4T5W2ۜާ9{^PpYO 28N˯3 V*z̅X=$hd<$IjdzBF [@rqo 8uՍy9kMCvCS:qKnx%3y+9YަH6n)nĚ :PڷϫΛjv9'uK5#j^ѥk#J1bEa}ӁA5:!` Tҥje"s9`gyA/4E(~<0!5:05&|8N>K+.Gsp{zfHņCX[kd29ieUŢq#9A6XbQ6k ƾDUVe>ZꝴgqI,鎍:g_RW]}|>#(lF$\Fzmh7>@1?`:PzMx*L&3@ eת]tv]x&ʌ_ޞc" FH9k_Y+t`㫍-Q< Nt )hY](66ul^ w`EL9/zZPNbKx@HB8ZA%]F ݋Z/7w"| ?򣲜Τ ^':ML_U@Ag{&.`| nLD.6+{/؎$pH J[)5ÙFdUHcBC.L$pOLke;Fa`{)ҹ8i3fCک[¸;fl 5ct"WH70I)DmoHO13>[3 2N}uwrxIU%Sh$׻`iuh"'3D2 a?q "55";{by?lzn%ݽH91l0ȴ-5Ēc\rFU񤄓plŌzXgdYеEw+ sjdy4sTc+@`팶T<2HHej'7Zh$a8bQCz(CyvEozg,!Ɏv૳31yy 7a 1؉ֺLMQ}zPmHx-zֶtYa8g@vTӁAIڳ Jѓ,sr-^6[RK5GƭRޢŹ.hG(P%kk3pH7qBҏ3o]_jY'цW wx0KûH<l 'l$Qwi:qv6f}1Bu\>qGܺ>B~_=uA9lIE~Re4啕TYrʍٜ ?ί>(KM&`u_99!V|"M.сW!s ҦKI>=QzTFO7 Wa{Fނp?Rhg+malZ #tāoɞ~!eyJ 4k1uBʘ,aLYK Z5xglGd)JW=Q*G6/"N=;fn=g2+a?O)$pQigs*~ >Bx*ן?+P+a: \b6!{.?օPZ1ͳQ1;Pt8V)&1X(C/y pz9e^J2( )Jµ~X6F.u,4l3(7?jM?L-(3s Փ~37tM6EDsy ØI6X T@aƆ&Z':]c1Z ΋v@PjO~6uNIuyE\7wefkkO&f4<4-k-!(t"A@cb*XaioZC|o] R@y`VAmTxxKA&zMczB3l9\.t,U[Dp@v#m|Irb֛̆@փwRy/FE͉une++3"~ژ@n Dc&Eb c社>&J1(˻bTr<\[>L3&˰6| Ƒє4-/z"= eܣ>&c};i!r!V*"$|/#xv)`/0 E?K"ó$&@|eqdy2@f%+lΈɴ}瘺_w:B)D.]ox| ԆS:b3u%AO6^`[u7Qd?Ŋ0/hI{<ˊN?^']6/^׎>w{e f{ew$&Ԃט_L}{DDΡzaQ wznLxUvKg0fC" }5 ce{Y]ʒWw t%W^LRGT36I!%ο VlZW/ݕ nF(օL!=b)_4"ؘ xkCYmaJrBv$Zƻ%)¿9lfJph`=qtdߐǢUF1z;҄\ ae-_p2>auJ: 3mhı5ȲZ68(l~[V!5lex9>EpɁ;r HzO / ؘ%1 *ízOòx#ՓEƇst u . "iyed&|4QA :Oׅiwd%I@oO{ɺ]6T:uVz\1N4+@7Dޙ5WlO* o MY<woаf?uqi2n;aGzeǒA?BK{.v3@8@V$jU3z®vJ<]0Αgca3]|ۯ,73 _jz}z+h"Ra p"jᑙDa?]2PHlҙ0 m 8G~Y| >ܓb1'X }(\uBc@EBt 17]A646lwdXgwuM-S[PyJSS+ܷd6ڦ-4gu f(ai4:&Ak0׀{=K.z[IAod5:㝵(6&e $oqG88Oe'ΗG/5шPޛϟJ =8Z7|S2ËKf$Dz0~#$}e:ÐA녟soz2jLJy4Ofn{{#e亄0N sKo~k b7)@5:F9Ĭꏣ4O{~z$ L-3Ol /'_" -f%6$+@@9Ӡ}yd_"5eWthÅshVD.- A @`8ݛRZ>vʭ,9̎"d8yq:g͔"{DNdM9$eLn`)\کpw#A瘇8FRcMڬщׁ`|3J\:['a^0;ׄ/} -+S碨3EA0>lfsel+;^G䦌8ˆc/VKMO4PE %?HP}|]3wMjl? VvᑶO߸%'H/?/k,5'`8,oK4|9O49hrcnu׆dAμwb A!AWl#GsW1oJF[D9ro~N깈.bܳc"-ЖVn3[ ~S9eek3j;VH/˓JhtqD >\1\ 0͆<"#sܺw43ށ2X +~rII[m$@Ro_x*#3c`,(h>NK)ыef7,Qi +=neeĠ`t@ZOD p3I#]4zeB: 9 )eWw/Uwu6!} 03ϯS7>U ĭF8b 9{ x|gAu6S?E\@wA)IY޲JjN"ع >^i!rC]]oN˓[@0hv},z!Vks\_2J#Y]O27eBu9>Cq [TCSnxQ/:=`W|e<*B Uo%N"&f.8ʺ1O m }=8X:1͚-ԷtF_)B&K&K0>ߣ-"#$I:3=1@'+ uyDoBEGۡϡTw51&L\u=aw0W+]36 5J-Fw<#Y} %70He^{sN61ǫkn>p8;Lٛl0K>F1E{t8DL]y?oudyfk.ْ9nN!ߌаDz[Ӈ[_:SMxJ"b b H'oƛ?B J\K7Yn\K=aৌ8@3QJ;׼Q)}~a}wiPI)"KvlK`",6Vj `}G 5-}~_ *h2E,M?2t@288|8yPvΚgӜ2(!)XrL0yi1Fr"CܰdC>YI ޭܙ7fP27Ǹ=+C>mk*s a(oq:8̭E $S.ڒ|*;h7tyBﳩߏykqg.χsz䇆;jHY4=Z6f|P]b$ %@:#Sf*VDM#eNQ0e|2M>BهJb^QRɊbt?TNgHfXy Tf jv<1+jC~+ػһ-ãK? s] j}13x؀+e}9XdbTcuEf 6bo~5W/YOu{1K"HLmtY9Ѐ4tlf>:)W!_B=j3+wknq?0$9\z u>˰ 4avvD lZy{?^F[AL-3K7&gdbKXq̠u^0Ԉ[p@J.c(Ӣ-:]=%<sG\[eE>VRʱP«uNyig,z6هo+\ i`[[?_y??#Na"R evDXQ2 U(,[Q),CW(7BJ{߱ቢ?/ޢ< mKӃ&dv1k$xLc>Ig؀u+Z-2I+D99O?Pz\1^m(1 6/_AK^5H@]tm}-ÅRBIǘA=Щ+ =-g*>;&;DiXl.zv6_5]NޤR[okMMDjYN*`K4H'?~vP̛9{Y#XO\ir6.S~(lw/Q‘yȿUkا6-3\˥2Om㯑.p\wِH _95<.[Н4Hʣ4 RV4 s9tτKGzc13SfK UaFGzPw'';9  HxZ}ZɰmHVSGM&]s:];sI]I \AgqOt4uLp t.s1 B&S hX4a:uH6; Tr^k x/W֣C&Pzϒ$]={ي~US1^YBMXg(U Ö%/8U'1y[kWjM7sy4"ڤ,æpsnTݡ"^Z-$ZO/>I32"1shҥv\;-OB̻cżM >MSO/\:/VNxWǬ m:i %; Z3^aMצ]dv*OC.6'![750<~/L0p!ݒ58DJsi׿1M+B?31tVYR㪔&GIWqMN5,\姹7T `L"85Y щv'H2E~0qy;2mM6W] t'oѵj+jh.&N^[q ǫB5Wẝ H*uI+qz`C HP$CA<4۬ `_9:z{t,rו;)~.S\qF hlq&U^r Fj/ 1ۂ|v3ȶm.g<9גzbւպ,w~,#C[U ̅vE-'}R\E/6Y2̱Vv-Ӷ4՚W8;vD 2nKZ ![UFdui]9"H..P@92Dg,d =$P#:z'D 9 a*^S-9ze:}5|lV p Ic.j^gn|(3z<فJyAMӪ'wd,*clx]RJ }vfSI`NRkSW=ocs<;nRKSy6-W;$ZGµ H>`r?Ȏp(aCp~`z 8$"VҔaCJFS `%6J-||Mlgb)^ !^]<4OXHjH5>i 4A|3%Q^-L^kaԑ iBx$J3a0#!G+#f{85[^bOwKx'5MU=f2bNՕ/ S ֥V:&M~BM}5jas0W Lu&̣87rCIqwRPSLKM/'|x.om3Z+'p-N>o Rf 5u:-7 ecBMwÂ=(9. qϠ>:JU@Z[.O׆;Ib/Ƹ+ZcFԔ+P #~ =$az&:2ܘ'-n &ǜ:d7(fqkp$؝س? —\/vln+\[KHU&kНQnq7-[pql^Eiw\i׹IT[H P$I:gX/yŊtlv=^ߨPaF@"ff̅J#e3Ss;6Z,xS蠉*v?3֪v?Qǰ/{fl A=6$nKM(RAh kӰ騧u!vX[n"+"&4gۂ(f?[(i+PbE[bvyM^b8<HDz)+F7,CO-jvUaz~Yh_lObK/(FT!sGR_yi)&LȦ7=e’-"{iW'qT}晤eXYqP9(7Db=һ{feD-Xנ #g/ [,p+$ (J9C+*tԫV!Il4/^X#ttK nB@6,. y4RbJRH9C.zN e=쓆ߎ Y(P<k~5;C0 2ȼÀ5|V⎑lUK7`{W^ C} Vc,K*7R6#2bC."rf젽=6i$9ߧ;F+ҠIXLU0_&%DK\2JKNyG2LLblvmsĘ2:؆=spScc <<XY>L*vƖvHS=Vx?>;'㕫!ߋv(S,®'(iTFa 3С{ `[~ (JN1Y!M1~q!3xuVTb:4_''SVEɯBc0;'.Tۊzˬ5m+|MNZ)Fi|2~IX{TnK4SN.0uAv04 "/%uINZu2X/ 3(n߮KH~- Cԫ%?geG *ހ_ў` "}Y)Om'DО2ț\[x}D?:@0=ِĵer{E#qQv;|[r/X˺nBkYnT7: b0SDȆw-YeX ߇r띥V>JWK(]86O/^ )?9TTo|""IF[' +y?'T+ 4~1¥@\9~mINfE`.fZvLzzV tWg!P0?퍫J[T P, `2x' 1OzNB`z=S)nU{Sꥎ;xp=vgCGhn%I`_* p4`\4 kc(º# "&}yԻmSK|& Dʧ$>ٵ:%r">bP5K}KᔭGҎϥ\dq @.NυG/HzXe.U >1^DS1B16GvL宭$0dCst7UlЍoӘXB/ ˗H)Pz ^`d=A$L`geƂ0^Ho2L0GǑ7B|f0^p o$sFb).F~z'Xh: #niBpZ\mce>,D^$yn.3,3g f0ܔ"=ʄưDCf6X$jڡe_7hhbTs]ūO#LOZ}q|"fI*UڮQjdԍm!9O*dyyZ 9@˨'LV? u,OQ1(ANx =JoITe;{̍96#(4f%$gv:eڣ^@xAw(f,RcO3 JXs&n쎪т|,{ Q:aCTP֮0.H;ud߼?^-)m.MU.>%B4Ncp w'M('К_4ga3O6{zՠ!"n1ɲ[I:'sX0.z3XTO_Ӳ48֧r@>.$%D%b< $tNѣ|xDn'v\}EUQ S(:4B86jL fjEa7  œ8OҨ._Ż1@ĥmfVe z`F4aهf2eƵ5ɛ7C ^$Y?BIL00M԰UrU(nlِ[|6a @>}x^Z"goX}̵tg6H 4=r>q% U5 xH,) ~مZ\B:3{Q;YhC'{?LMCn+i񰂣S:}g0hZAjb&_r?x,t AuA;O|:l'D+PdXH:*f ת7G|y.Yu1^i$O8- ߼"@ /ϫ5!I״RIDVLUH~L8t^œg^zT\~88&Dy|VxRpDc {y>`t@/8EʲaWQ5;ʞ*H bI&(5l?6٘$"8_k^Ļ4)W M"%b/!&75Ա' ՁGNcujUbng:_ESA>Su{CsmY e#&NWBt"{y<4n*].a Ђӊ#_RniË1%h;Du=,ii|v\<,d?WXl:YH>o1) I8۞g|%Ll~!kUN5b8_ HF]Ž>*|eFz"6`J(UOTo7sOu4S k:uJM o)p稡Mfɴe*|sʽ M * ,z/u\=$^-,7U&}6t_gGi,XIoܙ|ιõ 0T0! rik?fI؎?t{i ؇S''6X!upݓ!RG;ぅ-4Y=PLYF}\PtV!$'>y学>۽shp&WB?ƍq_>sly5Ӈ/qӣ9ZW  gOG (3Ѥ2(&?__G|U|T%!U5U=2R6 O"3VٰS8MVizYhbG Uʹ0m{kvS:/c5@@nc`+8- \t?Y :r'MQu^J^&[mw,:{G*n p g骀̵[eB2| Qu^R?0REIx fƑ/ɚmITa0m)e̤#,Կ0#f|M4-7bL ^ P`;oSN|Ǖ2o^iMRO^|r) @`ȯLcӠM:KRQM`? PR*YK*td?xk&X¾W'3*)=s|G9C1.]Ri~jG u-VZ`֧St%b DzX&epeVr냩SXmh,h]b/A4n! Eӫz$]rjY TlQ'D뺶4dT<{G*GfUs#K>EH8b8ζ YJͪUSsIHwV X2SjP[HcwW)LP+^o /| f1"v tCz z]mk͢J[.mk J>WU #ܚ-EVpV~lWJ>=CstfK)51&XFO ߻'Mǭ[Uk>cP]Y:]}qBMǴzh34;̈^YM !%.(n6/AJo<&@&?-Ek@.v|ͽ3F13 3ѱ nxBu."ZkRhb'̈́7_ZJ:^0m äغnH@^5,U'4'&x)I}.*z݃`Oie 롅_~G!M#S &DJX>4<\ʞIJ˕d6&{y yteq-?M^HtD}qMC6D7}J uʬ2:@h߼c<0uUǼr`d)ʃ E?< ,qsu I^ ɭ{>O= %_G~*ק0֙ m{kh$d HymғA3hZsp~pQLG6'%WNrv)oA²7ӱ(ku_},|2`jn Lf{?Df)𼡛_~C&?R%=b^Tv<B\@'SO5 ?#'*fK _^;ŜzCˬ4~y!&^=ȕG"1V ƴINS$:фbQmlyxrB2[|)? ջ3 tL?Hi|}$i@3< ȍ]i5V /3IKrooIz)Y̢~YHL_= 0D6,@MIy]G?t$L1هW\&&lyvFq݋ 4I[t eSgGܾUQI9s1L7 PsJl8_:j/hQdr'HWg9_f}%<GFu5續Ymg| u$hA:DP-4JOzJF.=nxل-#;_V; ]ߟPWr˽+i,*9cC$6j,T=#'bh[3lrkHIbyFR ؘuf&bi҇hWoTqnr$afh/u\aFdpC1<liNm%%gj 7udl}Ti/gˆ";AلPzas#=gY1ߵYV*$^x>c |S:4#RZb0BN?\dsʽ`{̴@ 4 y䈍EPTyMm#T'ҏ6W۽9@Ckd_^%P,IF095ǰ p-\\|CeKTZQ ;Tz`foJnY!= ۇP۫z@_&@-oRB|l.X"S#i՗_ ]BY}ثHyA'%(xn> y.۪75ЋDU?jp:XL3Rs5'@T8[~rpǦ_!ABT"LV<ӫ{Qymê[t;R M K:u^x8e mr\ړiN8;J=ajÞ]I˭fB=6(} /D^ELYZrfNV #4,L8c300{EuAai|/V4z#? ٙ9-146-i 5YzL'T,vHmǐ:W&B>Ti?΋qc>(] 4這-$s/j hDrGXcAa< 6p;ȫ`УK.ax晶Ê7f9FηƝKsՀ{W att1@p9fĄL.UBr3;NhW>{4Uq/1*5+gŸ[!C?4lR&TW u¦(I))v,4< Pc-'I^{ܑgx Z#szr:.ɺ啸֕"@Z6(XlRQ܈`M"?Oluǔ\ KxzsJ膍qVPf}q}}N"x| =1@0'11΂6>e^:i?jց["tRwMVv=2Zn'&'ĠCQӂlDp3F`QuOj̀>anY*jױ%TSZX3K*x}@?A71p>v]nN9Ky%gU~ĠU`ذ*lC!>Hv6_1V;+:I:NeϨa"xbw% wZ5n=QTkbNݢ)wfJhhA/}7n@6摭h-pV'\ZVdoɩmv""/'KP+lCIIR|у{HIX[yfaٍ=,l|e_>Fc͈ur-)´}z:uNp.=RP_i_ 5:&9Sdځ$9h|(W~2\2Dդ3Q-P~-Z5Ϟ~(}DZΦt*>+d\j@\ 8Ћ4QCb%EZ#OnFo覴(IN&$=Mpe&>u>GC#2-'(30sﱽ[Wf W.Ȕ/}TClq3fxi !8)] I؃ gWW<^SL*PgYQh5\@Xh)Z} T l v"lzP\5O)a4զ}. }sǻҨ%,xdxQu%\wV9fm}Qc=g$ޖ+ Gqo!z(5;:[F=sE.{+ 9rYv;1_} ) tu^PdV-"iG1OK~c q9@~\-\ٍW4㿮de7:Wsn,sÿ8"J<JU;OO6&~1,o̽kO./nԱ0 I-wm5!nY )>0/v;=ohĶ9tx3i&fW-G̟X4?ثtUΈDe ;eL|5k sK!=f&Z+p Z>MU6Bdd&3$q,@e5'vKS=CuBQw+Ub{fhy TZ̈́6LeՇR R핔){~F+ 1 2*&ӝfσHKϘBE7Tr2]O{1/y!p$z;l%@Rrfui[ra_rw%EOIզU(^K$Lyt;#"Aj~g-@ Z!tAD`y2V`4oISܡ.S|w TW@8쟅kuMd 0Uae%t- Hq'8LExI5t7[RjS!P9lSL.&DyĶ:ҢݣN69hta@ԚhXK*K:WZNP6S*Tڠ;gZK>J⃜B< a_Kɓ+Y/jwdLb)"x _tkJ, \CjS YFҡ6fd`VDyyZV' ^˜= R<4t6jO5CvB 7nR"][hLob&`vbV~1pDSC u{좂ۇkhb: @";dTsϜCBG^娼! SAkD;'[hbGhݡ{%ށoYҋΟ!i~hj2w][g&{ϯPuun7n?{$4y_ 54+/`O>?90*z)Y9O*$ԥBI58,@"`gn֗Z. N9pv#}At4$Oc)E׷ aGىWx1j;&殧mfW [N(ʲ^vzy ^.4~(f~֮H'iln&C@bn~mN <.o ]-@lW !4KV=+V+h6[8 9uv栓SCPT/*,*TllꏩB`{Ӯ)onc0W c"Ww?Ӯ5!XK;ih@$(R?tO")aTd:eGXuā#6J>>4 K,dB&e0;/.&\Sp:[[^>F`M |@xQI-BE}G^@5 ~ngG\^. *KFaenS3-<$A?m2u %Cpd,DNv6:>E?L ,Hv8+\ #rn#.Vx<[ƭiB䳈mDC9p&q섌4[ije6^aH^ %yEJ/1o a& X.- {Mk aIת^]uŰ]IW@2qr*CVETX]ɏ b*nam=9MhZ֝@\Ugd@{r%!54pl/xJUymв.*?Y7|rma~D$>+~/']*a[w3Tڪ*z ^@v1&㟠}DbJީlT[-3W&Fᨋ YL Tq\ v [#kc/ؗv&26ز_&Lc~8=e+CD!?>Ğ:`6#̎,!01蓼ECޘjR>\ ur*t̗|K ()YD6gGHn+N+}yXB-;]QRQ} G SI<8m߈A`PfSL2 oK3*KD>+s"uuVgFŚ,jq5H sSyQb^5m;G*I4XgZĐF~vB^{DX` f*<7 @bajQVhymhV:$|f܆*pڈ-S*\7irn2L4 +qIh t }z >/B@aψ m]ue#VriOYزMcٔka6XEo/|2ZZ~hx=*8ܮ#` 11!T@n{ lœVGki'[UL8dFtQԪBjMfwn,)1XR^J5jbDtn4!q ۮڶ8a( ybjkӋ1CqJ-9i"Ms> ]?61A3BuAҨYJ|` )["l<>V8o=bf̃Ɲ8ԧHp]˙/$zְJՂC¤ZΙ%0G[O?@i D2(^/]  du*Z˟/gD_NSx<+j-S?[ :d+Tb{ߝ u?bwf}^_RO6 'Y9`tʟnk&6'D_A6VsZh6 SO!bkj|a\{gwDPC2dzFi4E瑖"myϳRV@^kЇa輺2ڸ܅FO)[-.;_iZ6)")mqHWt1i&!}Vx\QD5IS -*UYJۼWg0rk2f*յ/,*v絯vV (>z4c鶤n>ާ8ԥ]-xI::}̬m!Uj eێAH5=&Q?lA`x=@Kߑ [(y_ ]tdA\Od5C}e< [3C:[Pb9b ȍXG'[?\ǯ ZTU{\>Blz'/V?# J6ÒL_gV^bVz-j|ವi3CeO3zJM~N,'gQ|,ӐD ~ܮ/o^qO b gssu%a^dZ_"= GOzP1` jtpeQeTRa^*m%e9iXttq+i^ sKfu םw3.aY%ٞ[,Um9$*ŵs~ޤ^׳zgQN>]ݍ -ǢF bZ6JachHo&^NOHIhM+$)LsKjN$R>zIwH0KeZ|o9,܈,{=⠓.:})iÕ6'fsޒT'&mHwGXiE*v#,W8Qw`+b~?W&LJ?i92(^ D;Ǵ?FyfU+ָ4L"%VюM–jt}!b18Ĉmԋc5A_7E>qDD)sl ;P AHUY+=a쪭B<ӿ/J6yD8[TG1%葵5d.ΌGk~ zR{Zv 71D?LvD2#fm!Q`j= E˷R.3SU^I*_Bo1[<'-# Ӎ_\(+2@miiya6 /;:%{JHu4nO=m  <$^lAH; [P.OYꖝ+rXI A}1%]J,FN Ģs]4^a,♁񻹠& +u`lf %b)~d.|4ض? #%gByd6~h;Y8jQo7vvtgZJ-}J& 뀦{}\uYIf`6wߺű/2{/Amk azK(A:;S jd TB'e`m:2FbHg̕dWiR?xKQ` CmJ8Srb}-Ϫ͑t B{-d5TޏrEO[5M4UQD§=:Cر=qۭwL@k%5FSV;Y٪`E:HFSyqBiX \(lz7o ]D;J&XlDy\KvϓyR" C(rl$bmKcuHŵ42B#f@i"V\LHC 7 6hquG:fÎTݫ0-28 .Vrh*"FX 7VǍu"(( "%~մ(XD~z#yT+Gܬ92eT7զjO])oa%fјD.vEc#eqbP#b4[^6Łsib$%y@Ke%9/FYo#;/9R f,}@+ϘDg29ʄe~-:!*'xuo}IL;^He'Ae9 wJ?}hzt=8D x>'3 6'=d}N&ްto&{vցPSvgȞ4@+[ xOdYU>?HMus,#}mMcI<]pX~Xe>[L)*9Hb*FJ޽^4Oo+ՉdoΙd09xcyvaUQ|5֝,,<"="m}B4+tyK񠳚hDHq[bЗʲu#$3z8q:^$SADuHOHJG2gyP l "(qP?S?gpqTz-YW b!eue.]^؛8C90gض!_yLZ,#K ?\xvK$bpn"dW8] $r?MiN$O*GŮ<`?iC6>ܢ$:mE:45 rHQHо&MHU;P!MM%=UǤyg(}ck^=}Z#\jX*_Z•eTkw!жD2!\F5j4T!b7W3Y }Iq$Jl3*f?n4­\yC$ec|j%טw.Mo7!ǢvA'SW75/ N.! =U HT<$'u! oI`@s @h7'`Y3ԐKk+чdI6c̹G@@tQUeH]rrY$\6`yz"^b<;w_0F?nܭFyCn{2Ֆb"ΨvNA4zL5e]Q@DnY+mdlD NH[~g+#=U:⛉9^~s퟽Wh\B=SFrJG Lia?bo GP:Ǭ#5Ig%IxKv(uTlRUt7{Լd?1^aÈ0U̻ 5DbsAQɋVLz{b\tWv" S܁X Y$+W6xv 6mk5 5toޡtA6ԆvTOGuyd+0Nm{+J 7.vGH /`dki%)轢3?ƧOz(Aڳ/6WV KYY jT)! 0n^ XZ-_tw~bsNrܱXzd ]%ĬA(5K܎rGӠrg=-dMJ!ez ‰Ap#[xj/=w !e$/By`1qw/K!L>4Zd z67z?v գ^wY7V T4XEbI'&-8xmu8vCu؉'hDv&a> .ncW  Q(Դ&hE1.4-P>̼sGlKS`,fe;ҿV YQ²$1s{yNy:e$|iT·VKyHTiI1~<[F6$.ϾJKW_~?*{T3鶽8½[>.k(c,'YE=ɲ Je ʾaRNAi$/*%Xg Gҥ'13#/e!C.^۬t$.eڏd~J9 1+lk|js(Y5V@qiȿҨSWAQRW֗9_@A{V'GX-;L8Ai>9EWO!+<8RLL"xA~e€{Q[DBEyi*j96̧Di/:Թk#\0\9E}'EG< ]T Vh(UߪHhvqqZi\LGXVu5j s}KM d]yVSD-lJ@GoΗᎋM؀X;:dLp'خQnFCúAN' O^jjkHq#2ssP+-kzr]n쎺Ƒ(%@l~8:èbQzS2.=vm567;zv!Dhx ]-Iz\nf9 m,zl:kCݔ'7('9CXY m!vnJ?.d!A}n:^L{)vXj@sӕQE Ůph%e}⥌u$0 &Ԟjiܕ;_4i_fbQ s'oxYAc&Ioֶ R*×dn{8nzZy|d~4l bu彲H]*[2C \}쪌OqyT~1nz!,RQDUAme''XVq-24(X?Ys ]@ _{YҒ־:T;R\d?bYgCcwD/c[%aJI w @F<?5UQ \\rY,/?C,lhK+~Hqýy+^w?rF[68٠=*A;ocq 7髒+&U$:$U3qļ+6>hm./B%8~n(*8)[u`b$ţ&;'j[f8dzXs TyC=4BYqQ9ڱl8 Ėd>xg(vϞJL@l&pܸIu4-% nvva aٗQ-}RNj߇ͭz|3!9}v7JDX ToI g,{j.0{\J'9nJ̸G2 ͈GI~7uT4{dT5-nnu=x}xʑ]21ع)B*mA$7RԐr3ٚAwkluud\WĭB|EGIA¤nbWZHq&yڶ;Li+٥53 ;KԥhxIU<) (9"ּ ?MKI0u-J'fbg _KuH ItpsGj]kEUh_DftmmovBU3B>xU1WWGA*/~]+1kU:TTw/6E}ňI[}?Yz)|n3FMYJPMDYkct/ܧ_3Mm.O9X^k20Xn5')H 3z ~_Vy!Y?O=ԮD,ܻZـyU| G8;ˇ'j6Y-UL0Rg>5 ch!H}r:O 72e=mҧi(C]t v2&㝁cDT~dPє81PZ9h]~f#X DAZR9Ή)Ao=Hq$cA*SD c*Xi5emW5֋ٿCM4pE9Cs;G:\ nJu0 9.|XqҒ8N_х񇳯j85NS+%Pr[d;Q`(uXz-I#xkYYBks?HGey5rTc&SgXpwT:V9L#it߳%VOw{u~8G*[eϖ[*`\~ io{BdCt"]hq'cBh>#(x{}c=ui9Y^#r;j)Pns@Ut ={-` :$O_ܴ[k;s-y{TI&ktqkno}&.UFb-$*Ho{ڤGR%v3o#} ~F,aMS$$H'&=e$?, lyc_T]B47UIec@i`ɸo0}1vƒɿ9!39s$q);Ҟlo+ a>-ᢇ=[)>_ He4-EL섂_}!j[ 2>hq]"*!kjr\CWlΓ%u˧Q2daP"BZYm{L |FF53 -T{{Ώ3d=i =ҁ&LwE B˽}\;E)phUa8gR]G̾d@&k>5lZl "BpE ?oc gJġNƯcKRlbrfʿ8#=GnPq-Z"5iT5+xOv`>d=d ձf`*fZ}O(&VR GVd[nwY3FK?0M*ͷn..ᅡu Ay+9V붭8fISW>X\zFŌp^]rDKh#LjuZ(OH'Aq i}j{nI!_<7Khu "/aMx%EPaKS. h>ȬmϹ 8 T|%b>̶*d 'j G Fu'5OgbELb&.g'W<-Ay|`03yUvh'B,>OuW}^VW}M|~/ܿC͟h&<]>={iB"2LDfx^"둅ҝ0hU6t:&mDAVSQr,Oؕ -CZOOքLiK7}冃q ;L NVqQS2S7]9qE{DQ9ZoTU*TR3ڜ,XiJ䱊0:q_>vX`XmB3'b ;Fֽ4\>/Zr/Zhӫ֣g')*A Z 6< ;{߮1`Qu)'Ǔ8p/@o:"`"^_k4># {>5!QitTp+:6N`Q#$N,p5+á*fLQ#?ڄm7e/Dia/PDl"&mNAа * ⊓ -j\ٻ`c ؟J.W3a.NKO/V"2gϖ~ ,zq:|Ƙ SmzWD{QDpbFRϷ' q'@[}{u%䓊ͼ %P<<`Ta0 '4~ b R!Îa)޷^cRhϦIةV2eHq{qDN&7qqL>=b(Ol o.|_.e/ [WDy,o@"xtHl co=gkcs-X,!:7Ebqd8cJtX;Ѐ*b돎,1XuN`Ǭ{r<-SCYS aI˪]"(O}FJђcQF!5YU*^,<(lL@dv;Q-\dH[Ayv,Q%0'jlk"uv:T<ڔFF9 2^zj%D |6 ߰&`v6e@=gSI% ثz|(*Ka7T-!]ҺaH4]gKg?܊ȫ{gTh+b;W^4eɾr-ch_<޸*Ph\čh ܹE;FCP8r]HujO2NK0ۉ sK'gϓx[-GHM}njӼy1 ֥3%TUd棌@c)<8 ş\HZ֞>u$GS}*sa,A߷fCz,* ajͬ @^kcpZwNi!0W$$τJ;Q%!Suk^}Kcmt oMC), CZ2$N~*CK4v*RF8s9{Z`U8uHjf:T Ν~:ԙK5%NIzC1Urw8M I( qH 6i5~:a:6 H^yiltloAV θD&Lfg00O1<]`U,&w aqUمȣTJљWgT9yKx,ObRh#!8=BX84F25+*Ԧ)C@&\~ }eh#(x%JKkw7vM˞B-=2mnU3[@j{N&Fl.pUw0r@[ qsUGI+8d˂PBA穱+%G{#LQ?>!Had_^O6x*V:= >:,;DV($`¤mT KTLsn,^/#'"S6K%5QPՂ坕eqC ]" ]s usyX/6ͳY?tA}/BGPlT r#fjRp-1yG4hTɼBN:S,7R T,8}r m%Z؆3~'#hԂ} NYMb">EG]Vkئ)@ FB¢%o, y\ĽmϽ*OZL<=`Y X;Ia  {lĺfj;}O4fU񦕄MD6 %2+aoRi1KCJ&OO/3c8XmMt{Lak x\Oyz-}G+myf$̀ixB#s"dSkvp1;Q-c+Y7$T>T:qKwtLK-.B2!l_l[6Bn~g[CmӰS' sk{lzp Wpe[}TA[<{rT [kh7cO J|ߩYtXgf<w 0 ix 螰s{Vܮ$Z4FԂ iG:$s.LsO҂\X( ed.iYZa#CA>BpvrѴr\ΎLr~'4vhҗQlF'@cMGmYB-!3nn4g16>~"/]ccwMY{xRs/tPZaMm5fv؇:D>BzbP)@ztEƘ_-|ݨԑH12 ܏x?X ,RtDZM/Mv1߯79u{i˝%tq (#8mU7>;)gA8_*U+OLXK]*9d"RM H>$t26k`heU,`^8BqN*,^Fl+8_-D,wůI܊EOH fI|—R_ hXZ[m]}\orl?* ( o19lXy*bțqIE)*ݠ=+ y=yĉhAХ&ĦdX-"Z2:K”>zZ~0X[^`˂ ]#IKˠZ@`)c9q[\+ cix1e } A'yvUWF&<:V9W 9s7X-P&9궑)P DzD`ޣPŴ R8cJd[/7WmJ?IK>0lYL~?Υ ڊQ S{IpHzSu)dOKd ;a"Vi./BG}9EYw+xGg5LAF\tjf>// b͜0qaJt~f5] 6ݝ7 ,;il/Ib0O@p{ͥ/K; -zZR$Ϻ5;bt^M_Wѝp%d#l4FhB}'@c!Q׃x+ f.mMY[\seuOF8[[ 7o'}i2@EĐ)C MŐ4߰`GҜ'*Gh*J5u*`!K;elBkWʝnp}mqRT/i[[Qڛ= ぴ܈G 6la @^J=P7@~ qE0RFlj/D*---zUUomh 3HJ!}.5?V)?a(`hNq60:(swoZ0p%ق3Xyͭf ,}8rҎqH5Ɏrj^#r&/6^|zW'Kxr O(Ӫ"m+S<ȣ! ]…U+!_h@|%]Yc*[XI!D%~)H:a@Xcn+֓ k}Pճkax* PmhAdE2hl+΃ D"CmNM9p  . D#3Z;jZ Uwa.u]$?}]īfoʒw"*q8᭢-GJpA)fN;1uS2K{ASׇ m&m+a@y)ju50l Y@c6dE]lMjcm<"WDV^Vsd+Ü>~=co)ꐣB:1D=UK$xšٱ|Xrغa~! QV4ϧ-raH -*բP|ߟWl}y=CwPf9ߕ,)f5{B@c.}~mBϔlıჄܠܥ,Uqo&-m,)>ҪQB|Z{"lEUd]5m>8Tx8iKzK-('z =Wp ѤhJ1>/܅Ën6.ù|3N=k'9hWLHwƎ"aF.Pƞ:˦=QmH %c+tUʯ+E6'08(ʯR-Jdu%1S@JjvuݑOs%zDG#gݩ}bj1)YH+B;c_:#qw[_qUrd 5d nȼ=#]<)e б^ GSiO" XVb>A甕ӜM#HjDu)6-  |ͭVۓ\i^Cgz/S 2z+/_ه)S^l zo`)>1#jrI#g,}p{2&Arkv9zA:0!v>"W!Tј וlfU;/%aw"MCQiјb`yOf,TuD)S~e>)!: 6*Y ӵzg`k6_K v<Ĉj­yy-+d`Qۉ ,"毟̟QncOD:'-eٓkWkC=:f_mB~eXu&y4 VR..Wd'qyJO0YDȆHQA@Se|Fy۴ ʹʅb(tBzQTw{?Ғ+„.fMeq9Mx8y/ލؔ!WPю) LHݽt}yn~AîPTaG񉀯v=@:\v/:h.6 q}0N@s5=D[ pߕl#yM,ZhZV %L +i> Xmz3Me7sxNZ Ot ;AIMa )\HqP97f9Lː=Q鈨Y- yVE„G8=`]u$_H+PY ƔIhʒ=kP',}uj{uhaɆmO܂ #%L$SYv+q3z/bpkI7Hc:ტjN _kWf)yT' ne`䠱ʸœo?l=tfXԯM+Kd .0|^3 ]N]o6!&2$dRQ{o`jU[jFwHG_ @t"?d9 ϵ(>ҕq>1 4b<*\ J9W !z}Lї,6,wn"/4a JlpCì`5n3S ga6ʶDׂ ie5EA[ݗq' YYk#vbu3Lv SYe #f>Q+uB"񉺙X OLnc"5ɶljnȂ*`@#Y3NJE6o ]ppJg A,z4nHT$% G5{6aCAb3>qiq z k [@&4Հ{:ͽ 1K.B"zl$ܭMk#Gd}Cb:9 aNDŽ Gbۺa.z=2G]ftlA_@V{v<)MAy,1Bw|bF*BB `lѹ&l]# }|]fOT9Gc$OCw_ϪJ$ j &C8O5 ^!oij |nl`a֔.T8"F+؀js6`D6ZisK$ o!B?sLZsW΀~RXjũVzQb^䤹k  !~4hƵ\F//T~;߅(biXOe?eDqbh杴&\\>4܅&PiQ]% =r$QNlm5Ujng{=\b6>q D0!)c %,j: kPCGr}j_L?2o* 1J㉹u4>lkiӓT晜2F;(3f'a8B*mVBiݓlފbQ`g݃Gi>`T,o׿\&%c9;"ѶQF{8Pk!\LdS^L@]g2̱.x@qR7]kA^2!cC2iDLKxv*:)|k+"Ь7ǘduE2‘+ZN> .$cPio33xt77jK\у*4]2j,_ $,!7$-3egg[QI~9t\d+vc-|p8$.0 M# !oVOI ]D>чWNoO̻_.AR]jn !u郬Qfv>XENE_uڃkE:?1ybZ;!p<3ڄ ],\ñX u!F)ș쬭 叩J ڶ(oy)s% /b!S!\"c6h]k1'EN5g/ {Dž(Z%/8BRfX^>7~!cT(\XxEk$?}V3*Sk'y)͘.X0W"wJ6a𬔻ب9O*7QxբlNQ;VɉE ]sY/')"J ;[12Lo\=;}B~Nsi#Őեʃ;YЙ!l[TO2uP@Œc{frmMeQ{|=HbYvI,gĴS|l&#r iž'8ה_bL.sJ9\<n|"^9'4B6 `2WHb+ΛnkP? b_smҶ&Y4$F xqQI+P Fu*?@"lokPyzNd,[L8CshN=H6)4ρ(~^3*Y_IۧbM70Ԣ؈k[$Y9H\iN(k\G DcSrԤY/0 up<]t NBi(#ƾSY^BBC^t P Hϡ(qiĀ̺mkC4 #?< {(bR|"Z3pD'e_+%WƝ4`9<B?hԑ:u{#~C,1˞!&Qk ;vp̄0F`8|&.sT`u01c/N7LWIȦH]\Y!*4#Edθ`N|d>I9/o^bHv1@l$oѴRFWHb2{(yJ?A3HD+<(BcY/F)~Yo2gW=fJV:=¬:{Ur_cdؿ^ ut!8/륒V3N\Pkg>5@+_L(e#q~eBuA-Q'jπH<;Y+򤣖[w3wԙ*h…e\jɈ# O& ?:JěB)$m+R&=ݑ~bc;rlM<^Oq7?8r?ErBSs9nuFZw|0( +)ӵ%0?>;~{C ea=A^ B3c,Mwf]>`$D_^'g奅qн1lU|HE"AO'/(x0G(-8MJ}^5<೑hH,dͭa|nWv/Y8dV#2!#eşdY)GǷc'<)zF#')S,LpX.(pD3!wXex[a/Y  PSe\_wEĊ#-}x?c#_B2d:VGߖK6PJ)"ʫՌ0!rZE 3O>j3myR<3l>wRPrIUKRβR#J8+me6`fL xTw X8E~?ӕ: ̏ЎaQ֋{ y{pa~<כKsIV9/&}E AіT})8q5iLxĩXWRi"l){Kɀ]K!AV|OZDW@P1E )y1/w^#M@\3a:pnb=#3}Vce`@iš>}0"fS fƨ_zzsi~2yʉ߹}p溌7ټ0#]eB&R{"bOC6RֵJTFF/1b xF䶒tE0jSy]·=[G $ .١FR_:e1I acmnꩋObXK2!z*qx60qЛ/[ټQ{.=i1o^K. ZMϑ{Gau(ܐF*~% ƿ 5h8nakTTѼu"EA ڻtTx 1hpvFC͸c+t21l5g`]֩7Hͱ p: xN- NKs(&s02ƶe_?.%-id:rrLIU]/:'1:ѦZ&z -Q#u$bw(Kk˃VVMt}=G242_{ch Tr_fگ|_*u{b?X'Bv[WIgw bQrP  jpX}&\A"Q+.CҒ`a+t:DnZu[J5aE7CqA`Łry \97]MB~z QJNMIz9]+Ȗ $%"&8E<[;X֟ #0iH1j̄Ce?'}bu}tHb o~&io(Rn̪KZm4uC.Q4e:O–=Gr9%r]iv/mtۋm=꧜1-SZ* <ѴV*"oVpt߄aՁw{^lgFT!)oMCoao P e83{C8H jU+wmNw5v%6juI:*{#Nx 6H#ߗ~O4vgrϯf6I oeBH+'DpNXS5h~}mNNހ"ɠ8Rl'61pgeʓXƒ3Qp; _WNPAӅ(@J=fa8HL{L$WS"3م2{1#VX lmb&57V>vjiQB3cK"qQmNj0:m qo1%Cr+ ľ אe%Ŵ·GBރx=eٌn eF/Dh0Pgxx2 lV(bh11z}^.7DjȘ8B]/M*uob`sZܥB#_b8cs}O^AiYfiХd6r(_N |F雭ބǤo/6c)} Qk iC-P3ٽ(ͭw"bJ-nSU gڈ K"$> Q$ i>j :_/soȢ{)R">1~M C E>&;Td ai9:˨04t)~1,O";%DSt6B*Q^sa6PK3ݜkx cb 35_GAbbCW\cHE4x9kP>%o/B==) ;dfj|@B0Z!!x*n;K_4 `2֜w[>08Fy/~<9w4Ą7Y8gaw Q24@^fkSA C.520E-ǒB_s*ξeayy$" dVY+OM{]>T߉[E>dt%=$pƮ ZQE ʔg)]gt\ײ[D8aLzMXXb2.Z=Yss @t_,Ğ,:jRCs+Z>ܟrȊ,GNӨ˷,JqtdZD!QԩU HV5[;Br;1'e4 D`AMڇג M6>**ymqj/nl<ݨ%ŬD]$T2&` Y*<~EZ*V(WXo1WJULV(n&P'lQ:,ԞLYܡr| fVg}@^+a7\Gc4@"|hۘutݕs{byq WyZYQV~` ׻--̜Vuضۻà${%üv;(5X:D-@V[w$(Vd[?U,$^lC| zH)3b[M"> ߑT ^2K=W2"Krz(>D~&N!'hl+B?8=?Pf(qՋ6"tNmϩ54c_*W GA[ ĕޯj+^\\E*w?dSp:2)5T !0S!T׬Hku:c*"O &q>"UJW=]~[[ڿƸiX Rk0 >H ?AB(%0:Ϲ5`IiYzv[;$j4ݩ2wfVD>Oe tf?+mRfX\zQ ?Smlޝ|{# (ނ3yoⰫElӗ4+m*t bJ9D.&y9ho7lxDaR&ckݥFxEfB LxDE4BAan Ig+6Zu<ڐ `^7Rɳ9,K`QS KoQљ lL$V?k<  >A fYL'rJ$A\jGWe`,jٛX2vk~,!_ N/Pb0W]BxRRhʼtSoS9U$T"u@] ^`{tZ }^eގ[4ek&k0ɼy,*qO)_jSwI//Wp6 襀Fȁjdũ Y Mi/"[K]OaصZ8 Zu|]vSZNQ̖%R"p0ED29Zy3$fY h#$J7C7 1f 71^i0a i^gL%`Ǹ@8lϛDKDy-;͉yu*`Owې郝 BH!rv;57% kl8&[@ZRj8RD%v=Di"`THW=3*{;+Kj&+:YordC7 0,u!0X Y (b|W&]z3P P1:tX53B5{-؏|HOn_"UqVr^܏xV>"BӤ|Ĝ܆$i%)GbÈP;hV?C!}w _8D|Zd0) Â>/86`DMtFHXsƖcBܕx{w>-T+ʈ#Kg=Z=-fmI?̊G}爨zi.=Qވ$5},Bt":v$ aa\r SON|&fL;8 Qi''3'4G鬓FAh?m  z֖/,油:nfE\x\k,fᱶ}Y;<]O8V=l15N\%? ۂ7IFBNpz#F{* 6B:'H$ f$W+W\;|:QuqpNN>c䪜aw 7zI7ǕŊ} F}*8LNj²1B-%P֭4b9g+q1lnb4mZSS Y"3apʶ Ņxk,cFy=Y[>)6eH%n_nAU)m d9b dp8V)Vuc>4[:SgQ\-{Xv",8sʵ&B ~ݫ},*-W &2'69dCV-FY;gk0ɃFGO/'Bk/'vf)x94%(Y[~UɁ__E*ZqE2Iz«eKpUÿbZu@̪FgGš[uBͨr3((W,]/E1gZQ(Az'46)' *3 ŴĖI|nmY*\T\ d>MNå\&lcP!bT|w=Tx+Z^>vД謦fUb&mb+q8#C٢:=1MYU }o- x_IcecaZn$Pa{rGt gpI79 b2/tYG@2Li\'/Uɠ%&̲VNsba{k S*L1fY6z]NCÍI8م={h?5o->+fF:]n , y-H|#Z8<,!R,%o2y%V./OydyprĊ3$/Mݝ:QPM `ԛbn+rCch؂[|v(H(, v"}~kv% YB:^c̞Vqo֟] ;}"xOjMdƀ`Ev?#>x/gvt-vm;[K6fJCr v΄FIwuc+5$-lhBG dl%7~>/U^""(Ifr<1xtv+flhߺ hsݫPA!{X,Ө {+Du?'$#(dߢ1JT ~lK_hShb6.O>D8p`(͐gqʉ9`V2k]q_UЂT@b~%.Xh"(鎴 ǘ?K/7NU2rqԚL mS%$22b)77 ۟(i-/Gtk#q.ycT?S;Z0%[ڠ҆7;]*:VN|בkBk~R!G8Rd1rV{YxGs+<"a7&Y;@B,ķ̥4󼥃M(-ܑo^%ii'`߰QRg8f,1*-hK߀#vkfe',3SBT&N _}e'9V/2 ? .Cf2[/I6+*"dZ Ol댏S1`:XMԅ 0͜-ZK$"䏇x.* jS 1a ,ʼnS(I螼'q qLE9}nV/ŌFldh=PCShGY^@aLQ&6;<w2` CuS9'ҨiXgޣpb k Q3nH1zoJ!QJWu?du%Ggf~!pT#.Q!'nzGqwk? RX|IU] jqzG:Z(L"GS1a|P[9gg|թ6{V߈\!`6-67'žfS}xAX <GE_a(~/'?FghXAXëv3MoDC'K@d> `_$k,eSwT:+ZT5bа{}w}F HeCwG2VVT]QLxwս5B*Ԧǃʧ%F5OݚPe9yzK>pyu)\ф_e`wD[1 rJ! M u"J^-1p_75=F:U8o(6.Sa WCQn`Y8b50Z_9@q_U9@헤h AhG!goocn{.Z-Y2_Xkb!Z2GӱtсV]sa`$7^# _I/-YɍgБCo7M\j{T3 Ӛ02qYSּrQ/-B 5\T >ϐֺhQ; X-Ft._]{‖I gl>ُJ xe/rP.T,)'G9u%{&5H!Kfztc޾]_\02`tqnΐwmlӺM.tTNW(XFMhC$Ƨ%24>y[k1ѯ2l`%Pܨ>iAqh*'gvc0^x^u(!"_ ܉7C{Uoͬi, XgM&-@+Pz#Rվʼ7;Ӄq8MAt2R'fOm!~ x7m s!4?4brAH4Hi7 i5X7c㲖,w /:'l0嚺e뢁A{DžLu-; ˝i\ ?xͯc010ήh30T; riN҂$ P\ Ш>:#U늙JA DrfS!5p>4O (c=y8լ7D.%ٷA\kg2ꝓ,_Ul,&8O5MMO|)8"}1fo6 OBG5j͡dlAޓ5])iHvj6{u2~$: n? Qh{/x!#,x`hs"G\ xJj QqN# 5E,H"W7}l@-ީi:J>[ЭX}QHͻ7ŸPVhDFiI" \+/9>:'x_l.Ł-֘{yy#'V'^<"AdC8>xeG&O!V!U{"[c_ܕd7}-2 2#uSֻ*$e)vru:Tu4 tGL?B9kXD guBZVF}N4/Zpd&np ۓ(a/+@U'6 L$`S6d_dă<RA ڣ)DZckb2 "mlX͗r CIu}!*orӳP*cl%hNK<"sj.ZZW9Ir|WΚx*Vӡ)@r,MOO[}@LMΏ)E#@C9۪6:EЭ]PaՃ"ňc 8d )+(o͝!CH !W;MQuœ¸C_֚vqX*05lÑ3_@D7[v BǽG!ǰUM% >غ1vn?x!(׳fCf n2`9C_V tQ̄8_JWpaɗ~}j U e ,,CגxbʫGY%yT?IvŮϑ |i(ؒ0@#9=z`F KYdusϡvsWMZ6LoQ-다pi!BR`BGY#k« 3HT߆-Jv!ϴz< [,E֎dt-˥0ixpXq ȸtXвv$JDpC-a ;)81}Hdd::/s#O.dh vz1)>|${Fu~x> :sIQpHDo(Y}[|Ss3 -p14rc̢}/;KBm~g1\ǠUr/BQhgTv^BO #?1Q;SaĉE%Eh)^m 'PmЛ1fv,4a=nRFޞ2imBL6v#YA۾ S /85C-n(BtThwS>(\']BS)h vlhj?z8$'#}瘞sBhlf,Jɡv4}5xvVz"d1z;<4,.mQFPpo6_r ~.:3)YB5給 qݢ{!]1w]:Rs"!{p2lQ A^I;mXh1Fn t5^eJGT*fڴ|v8ws [ť>fu~$])t vF 1A%DEO7y(KK)LT,>{_9Hzg,tR9ӒOL#yǰ^o0M7Y&[ p7K*IԬ'rB >@i鰇t׊O.yDR",YfBI)<@QsI2jxn`@|36E,qipPh37H)8 4JL2%b E./hr+/ӿq-3;zt$*?uS\<hAdMGB=:.l-?RYmJ1w0CHMͳwMr` J0&_K?e me!lS3f‡x?9J2F>b2T.x o5Ho:mWvd}⯇*P!NLߋqtWj%V~uDŽldgO+Eӭ%Xq]GhQ GuujSZ͔7E8Ͼ^លSں5PEG&aFVPj08cnqe[?r?޶do^MȄ 'N-gF;xj'`l̎4_`#t aAk7p$|ۧ ?!-ˎJ@`Ro +bOI M0CA-Dh/&c")W`yR@xΦQ@Hzuo:H71Pi}7u'Kv@wC*Y')+ӱ2 +;0u ˲v899`LAHe >d&3B7灵 BKc,MTfFDQ@`uBeQ'Y8mKd6UaΒg;X,pA* Њ8CDq&pS͡{PZ UQB ջom$227΀i#TgՆ:\%PYdQKpmC$ NXC>QUNC) !q>Jғ&x/raGtp}njH'=A~ٝFd#zhÇnw\t!rLeOն**/C`ʵ&cyA<#wx2`9{Kp;:<0Pʒ2v)`?>h^ӍoC%U\§6'qKu%^gsZzqUk^,2ȩɂψvtӔ8̑uOML.]NeVq|j4nF"ZVF0)3AI|x w\I2tIU~xəI1?/YaN&kwW\dVm~y'vc ǃ9xwAN~"Gw 9])IJ܍H_rmzޮ>m9ռ"P`B\Nte< ?*ۏ;F{09@ .jɢ!FMWozԔo^$j/ r/_1ZދDj}oҢF]=}z3'Zzb:c]8VA \cv ) OZAOOŨ:EŴLHkE,k&h5],~txcЈv-zj; t$~rl&Q:~ǰs]ޮ^u׀L*h̹-¨cԻ ۿ&`.6p@` J_9ijomc{V%x-|*>aykts#H?IJ0yo•1"k2Q}}V>:&Ӆ'tc6iʤ˘ZN6g{ǻuc5c:=AXnSZ{?/$93/DqsKNK~,6fWXǒd30qkv+άV_:z!a_hW\`^TYS u @n{\okH߇> N3fڟva=w|L=ZvHU^":&4ўwœSȘ}xfhhB6e KL!uռ2>M@/AĹ.aV`J1PhB6Y}yd rbUr*.HI-hj`]|ШpV$%9ẋIJu:7دX*Va7 xV-%FCpREN,=#m):i -ٷ qF P~~WG8Ɣ]yXvH$\:|yj¾nw -Bd~_Wh ]p`gWro5TpV{Y6J^+v>*h&wڇvkA>wT1EN;}F,}l5 s{'7ϊ;nwo| GLXK$:tp LGZfL*LcWr$v}\=̧L+>`LSjK8r,emf1Thٲ S*7,=S""UހprA&yF ji(GG~xi/QhX fV>K|`2b)D>Ĉ) -FNQqXsS/;to P(Z;1qd+]!+`88༔ADlCL$`IhG;VHKC±U g{@ПEIRj;-iIR}LoQm q)Eћ`Tyl Z !)1hLʣl. ܝᣂm1\Ú7E$4$ {"v |Vk5aެ)6IfLڰrW[hhSg,tt7l\oį2|3N:ئ={TJDd\u(xT8~ D{J`fc@t3|6gٚSvn٥rlAY38p[pF1W{w\CZ* gĞ˺w'[+O!\Ŗop?l-S"kRi!=Q'8n\O(]8YIJ=-ߍ63܉kZ<QPEeOIv4t|mͭ#ZΖȹYmi)8G2 &7,d'WȮ;Tueg4ٯi_6p.]?3QcB1 v͍cT/lT6Oa]t=)a,vu P_uxQ, PV2t F{AF-2)8is-5EcF(*[BB&%uCn{ ]1&22s<Μ(ZJ]r>VP)2< @Th٤Dr4O(aĠJͻD%o܋R#=D`y~'ZTZÜggt~B Z9Jh;{J\6t3K\r! Sk<}XԞirP| inB$ٽ7n厬^A U" ;aPMȉK;rnx6ߛy;?>±%*5smxZJ@6k^YzK;Q5&%Upĉ( !qIuJg{%Fcb6@y6%F7~?H_5BTq'TG*BX5* >0bp%E/7O\A\OW\Qwgb 7I*Ƶ%Ybv2\.JmxgN`gp_T<9sVBŜ"\7w+NK4 `UurMqf_.u(% h.Laaׂ y{I*/]F;*;-`WKdܬmVڎ% Ȼ&ZÉ M`(%\iO )`1% +Oî}䙪E)`ZJhY XԂ{76Ed"|A^dzl!arΆU-FҥUlr;DmC+@m Ub􉞅"5?B thL,&jnN)Ԇ%< _t(-5\h}Oa=5b"z*=yQ/ Ȍy%Vn/:fkNu[𹈑W %hChF-lw Ř "9s am&8)a`WG*'ri JI+=|~"h|067c*^C oN. gϮ-dyN3µ*lY vF?\?XV7%s3RZ aeUN,x1ҵ2G"C@vE4{W:0rZrcʲ)LJ/kj6^JC\gOGụ̈m9Y\iqz?_goe!r%tniND7@ ptz^ă A:8RV)T]dWS0%2dY4v`puc9C[s HLwreE@BAɏ]FZTi2atv*yOl.Lb!ļvϿFzrcFF_xϧ`zŖ)mU+yn4FUsŔ5nH %ߘ) > y;@e ضTޟ:GiB3b\DDT'(!=puC$* GM9H[z2[Xi~MJ+T\zZ*M fw,.D$o!|qrnPeF:Gk|?~Ю RqᬡE5xr#hIID^F@pH&FiPluʵ-ӡǹE6ܐ r` ^3y:UܭbMbdT0ԑ/BhHi,ac VXKrj=όlcj1i$1UC#Tʞ BP"[Gk|':2Nc@Y*(|k=w䀼'mm Kk7wh\2ɐ}iNw={0ʻ#M؟@$- mS9Qvs}r 79Dj8Pֱ3GI0,Bŷ+ܸ2pnTm8 c.heݤ~EBz1'uܫuvKӯ_n"5X#6Iĸ|1A 0aJ>9f.Գ.A5e,! p|ydFj&;v#T~{!Ÿ@{ cjkFqnh(#y0@9.~dZê]ϯ!0 u0obʭPbŦe jntJ=W`Fy11ʒf+0t , m&[* 9Ch۩P1Koh>|w!QvS`,'mHO5W(\cNe : c'E4{ag:6"H>T*ߺ2w2Re9 -T Ct DmMZ>KÞHwؒ,Li)tQ9,@߁CVktht,ӇkxjL~x/u:,B_\cB? \zϲ<^TȴP 077Vm2K`y0BX(ʃ?ƨ&ټC[hGd7S>t$i{CGơUkwZZYp mOeDzt-$(I J"6`ۛad hh~ ͤuDG%&ә0y02ts2EHaY~$Bu8}tD$z%}'!vq-7Ӝ ΋bZ!-<"{J4!?󮢓x ep՜Fh;Zp.xM AOoULZRMRvbu!"[K=ڞĒǶt@HOv|Բ8Ns&PίHyI-9q+Aq@_#& fuixEQS6Iy;CZ%Ƶ2ꙉEPyeFF$ZtSH+LwKN1U|v'xOotTU=EYf.Au齂 'W+}-l$ӺiB{1~P3i)Oe[4!CuV=$?+* oKG GUIk8~tf9IghS;ۆZ]Fsh-y6k {Gg!^]c驭64A?sn-VeKyY75 !=MoƁUfr3ۺ;j&6v:l.[{No 8?UM,GA_9 ۝1bW1f9O Jj槁A!=Ef56^sz2, cύCҍ#=u{!lx4kcwF!Y`"ꁴVT4M_M]ҋ]|ȗH2'/.[AbJ'lOz Fm'+}T ?dXmx GRaĐ"aK$Zi<>_0o1fOt̬Ilj#iv]V \94U׹r56p̾-"6b[E ,jjiN9~+GЖuKGW5N"rяןl3btsɴ[_M)N_ Mo_< x(\;3R$aTeK Ѧ< fYؙ sY~ 2 T >*3q%h4us_]d;!-jF:u?ǽ1 7mynT DtQvP8\}dBGpnL x]P*6z1%^Q@rNU _EM'P)ڪ}}N~K]הi/@hԑq"WZ6~F``"ǿ?.=Ihem 8E-xn$ Y9sҳy؆tåpA6fv|F-=kA3^. j7^k pKW\>dKIH[|zM ZcĜ[bfOtBw :R4Q]쑶*j'ϫNxM?ƾ[YtjqSS>Pf6lo-Om6E =(TU[(*%7|5N%* ƠߞqވЈo]rS]Gt>,|09=CzGg1#69,>0H4LA[arۋZԿzWnITz` Pg/7;0&E] 12E8"<*g}TڰJW]0HOK:9a$ %޹c`} qtwno̫Ts=V>R!pRWCt$Tny>%m9.8ڤ\cx0y{+@UX EX7s=s_}"I43W"|`iO,h Sksp 0rrC,jx٤. o`*G,[+e <"dlN ٫灴bJ’&vf3sC[^rJ.AH.N_ЮU] Rx;\?64LG^3AÇq|=~F9\|D1W/:q$8TU].6*8P' ZC"bLye$F!.; pa^$5 eC߹qS&T~!|vd Vbt8b~Ôk#uS݈GPʮVcI*xd [oo"t$MtQYD>C,H 6j4~AMɃ~nU {&*_`^ 1ǞK_-=UÆxŎVUY E^{r4@ojgc& =9Z+C]t#%s_m-׮ph |Uvת@hֿDH,K~e{J}a:d֤SYp]M.W5q,r2bJ* b!:^pO Յ'Nl7{psK"<(#7v7ALGMT(0B) br_ L=L^<ߔ9_SQYFqt{K928ԽgNJ$c1:z^p4crc%WjXrc?%G6A7 _6qp^^~XF\ΐ }D -CW`,T ˃)RggaM|U״Xī&SķO!/r;k<έ6vQ҉,Ӂ!9Je p{쮍&#iwJ=Z^VBm{j. Εaw0Qյz mJn|3üMZI%)敄RwDҦ]qX1S"+c.s?PmN kgYl8Ih^R_lc}|e4.t$^J0ʤCZxG&D$y$kZz"FF`n]eFHkyJ,c3/&WӇ2R);}Hsگ#ꕎmLWjo&T* 8O$oHD=]Xeaģ(u:)āW%2MKsA;H?׆\b- kV563YP-$i0QIHu6snrrE`5:U rZ^?$lrQO[Tp8Vh[-x1s/%Zv#? ]HE Rc\fpŝyL$x9C.F\ꝶ 5뱺JH]@Ͷ3[c20n" 9s!>Ӯt1SZnkC8enx66!׋&rZ%V"aV~ɝP,[NXNR$;-9Q)Z%uB٪@A.{oq'eRJLp @DX<|#f4`{<,~鷧5?G!<:TPwk F$7PxwyIJ4rk` }XƓ&D]``|`A :Ou(DӃ=K J07NLb~bIYz@Ԇۯv,f! 8A֚V<;D6![$9e`Z;* xvk?X)0&x" 72[<{rVI)s` R|dGxfd[wA(%Ht#!laHK7|? Xwwn|ɇPOo\>U{%PȂ`xw1 X-g9%. ;`~6vU Oɽ`e+eיּp`WG5@H7KY1Y `M+7?QP$ٳ(͓睛 JCғxQtya0,5`b Ut5Iׅr Uu4R1 UBAx_2ro&(ǘ :~SłNdzt p I5|ϓ\isrZN-`;zL1exNVӭ4)!6hobaG%6w1R, S`ErJ f.rNh@䀮'1~/`‚厺U'.<%hBd{a~ B??XVgR o(N)x9MCVT8gp$+:zƚ"RW\e4&D n\Z!P mH56dp=>Ru/Zxj+h07P[UYR8۝jCk)),/B RATJ|Dt@nۢ+զ_7̑Pu>jk|=&U3ng#&}h%c6(FI07RH|A_f>\$Sk̥$+Uf/ O3IeŝN-þ?RUdHևÓ~" GXqt—9]f`iH+UcvQk`w\A ~GkH_LtkJyM$]*LTAj|D@QGH9@>^37P"[ݬ:q{90Da %C{!3=U<?YRuuV󖼊]}9ӚZU:2*'D޹_{w ow$]Ҵk2Ij << ׽h>S|xQfTP3}Qh[7dR~YyTPB[e@ZQu٢Eyў\GaVvG5(VJhtf&b9oK_dfUmf?ɟo."q̌}!A!|L 9h|qLȝ eJF!0N\ XxL905I}YY% jSjXs]B's[u R%Ⱦn JQvK\Wh4zAn5MBBG.ki0?!/~CയXb깁 tdd3+_9[E(t!} ZB&gEUH.ҧ93` 6MSThz&Ba"L؊ez@Rz 5mg T~ 86+x7KߊhF!`g}& @| }N"AArr)tÃ2Rp~~ʘa!9i85 ?– ݉J bNLeYn3TV ҈z`g.ɛX(e ګm9UbGzDrBMDľ*CڲN9oO b.PO[U֜a'j-m|(FXH8<2:2FUUˋ O܄K jgAn*lohܷ=Kjb;F3WNϪZm$VI?^6;|aRuݿҜA/r*_O(UԹkI._=rXoa# d VU6G=yˑm8<т5 pM\[9Xmrz"nV6lnUYq8w;ў^GJ.~g@ t$X!pL#@fWό5|ߝK,F>t.]d)Fda~VN 3ǪAiIԖfdʹV_G󺻙ZQ0xλ]]E?lV 1 4SmHsPmnK2xYi>\. T޺9y#ϽrDz+/lh$:&{O1'<!qx+(2k>7TEa(׋k6 kvxLs՝.a@#FkoN\Hhj+~U#3sLN`;ty-w诩B!( "5 r (e|vB*Dk`Z;ʹqMzbZyT/r|=fE;>S "Bd 3 MhI_L4ypMQ/X[[-i=U` t܀&@}>Ɋsi㣻ĝ,)vZ'bR` dn SXFDnMAܺBh)IbZp0*BXd(2Rk{Yn%HS <ԝ kASݕ~N11[AWw00bo7%3`Uq3k`ԁ +"p; OWU%~οG aYbX U`)8y;4@(\Ń0Y y62,KWcG8]}]\(wuҋKX22=%PgrNE> } do{Wc:N F[W!1%-<9ژmnYxCMhs,@ NXoLm mIx^1GfsFoW B&do$, +PMot=uACg7`гU}/)#D .ԫaLhSoC&K dʧƨIùKyGE&՛1l Q/;߬2¾95CM3,>xb{]D^O 2Rawg_ZI)P^1ڢ>+uN:-+u3'I<]\`ZT㱅3V//n-}ArUMd/f(<W7+b&/Qn{6F>f"Z F$G jl~gxibxߓϔىO:E]nl!cl2X >cJ }'(ɗVp撪ï('Suc$Z]L4ݺ[8Tjn01?/f)e ~#5!1gs: f4A7I^1Bi7[8]6X HUZ|GڈyV4tIځ \ NDɡKv\]6pp%D1VŝPr llj(9 ?RwlJNu8ksɨФDpG]<q J\ى '7 ҁ+:l ±a;Jkzq%cOԀl@I j!Z)lh\7i&)hԑ |+L?zÕXF)NHwAfq*m1&d@yM͠:jrXb8o塘;bw;?SmB5Kb3nmow!KЧHJ7gDľ8IazGM~ 7IvVKJ ݒj3;o""'|Z;=& +yVqnN2 :A5cq 1~RB'PL^rCO:c-a sԛM$Rݬo==ya)D=hE%m"n;B)(DVWI\8ErfNWG Q)Q!SJK@'/?we9EŹ\Eo͎pW $"76f'&\ Qd0Ƃg+rXMHy(`V CA rwM'ߑ+D&eysb5[0. >}3B+b‚Ene5/]q4.H *}f-gM;_FhzfGG rõPȲsihҘen'áW~%r5Ñ,,|E dqXAQ7Oqf߲+ŬńwpD^̸Q&9}E'/mEj i8+׺{]k]p\+2ұkjX+it 5FЄ5l=ѼeF@0K`mv&+{+ve'u@%w0X[Go>[LɡD~@,B)Dȇ`%O8RG~`u":X)[Q){]anRRfo?p paC{d |cI4l6ۇI" MjȑH޿rjV+Gδ$S9YDq.+7ϑ=GF&W{$f>oMaWgHuѴU>5#<[b%~5&-lK*sL\h!,?2i0s + .nbv1dvȅ("QDWOW080-(w1U&xD«#!O^+]C*LgHÇSNY3Bݎ+eǥ/g)\7F_ߤ-%ZI}y]}$rҁu" X\n3}Rf4? ] b\Ě;>Ki(pm[/Uŷpv;_ ʲuͦ>8 {Ѯ%DrNy^?Ճǡ~U K?ۋi.qLhHT8U=8N=}¢PMktvkJX&}qtvNe0/ЙQn[@ι" ?*/5"ϚJ>ɾqfn.]kNO4̖{}@,~V˵ ˗"VwAV/jiIN"G6? -;kMďf flVREvߙ} }?AuC&cShlqʏq5e"#臱xxCG5oES2NK}4%Rw*"WZ^2L7i_5l8$aJ-JsحIW¤רj!~^g^&(fW5iZD[" Vj9ή<g slsN}2<ЅE~ sS^^6~?m%;YDZ{*jHlh=%CKnXb1.yGSBЉ4oaUKV{S'J: ]-7S^-x$cےs)J/'YԌ%FuɜjOZަݧV M+>WH3׶Ğ)ɀX }NQPC$hvUMSIw؃xuJ㛚mV5pZw*҉Fl>Ac 7Rpĕ&6 ,ce4any*BH|L弜hOU7Hҝ=\O k?]{oؽf.KN,5) ^ur3M6dTL0(q|`o)N 9 kt ƢX'/ 3#uD}*gU ꂛK_7zD10Vi[zp} }yc1[H&Hף$lN+pJNpTo/ZxuR YzSsQTeazᇨ%B{R{٠0WDyʱ8A5j˄1ޏ4?}u9wgv x=7Y-7~03 T!c)B}mYim!->Ow׫<v}P8{YvR=+M`l7d&ךGeA#K0K?MdA:o.}ڸClb>񦖧#oB%h [YwKW9ܬ/:8O2OO+=jr7:->Öc[4  )i"Y \i3/5[U0V:|CBE>] D<[Jd -xWv+1s7ll &wXLJ6IZ9o90Ƞ5+= ,tQި_ߞ(^Ho]?7ӸOJ/P/{Ynxɠ'QٙsE- (: '&)^.^/HgAѦ-:|nMC zmT@vr=sav=+!g5 Ms1NDkSBB+x#ǑmڃՒ˻k*#AI\?OfSuEC.y95W)'U)_,1giGc'd⚸W|0=pA{hMs6@hI=>WYB33$+@6tsU}os$ݟ{YPΏnn}y@~>,Rb=lͺJYHIͻdg 1hUG*ˋ> Ep౐9"bᚿ|J*D0$GRnZ߁9_XW¬1h+es4@?+/10]BKWvZ2Ϙ܈!-ᷨ1j+a7Xv%P xQ/kw!eT鄛R{~[;n$k:fF^_ڬݟ< ^-o~RZg,Я3Y7>S(H W_&Zeq(qV䄞`2׊ErេhFu&o[݋24NJ dU|ܯbK@#^=Tjӈ;$rCPS]-=lxǥze{ad&zISLl)AKy_K4韤e6m/gƤΜEDٙ9(\v ~VL!U+ 4/74܃(M^>\zЪ5k9  _MAUJJWJVƸs'A&rLBͯ*W2k4daUe(t٫V9s|6&Cp HudQ'K&-SKn9nn O\ܡ&_ 2soִչ;1WzUܴAxl];(F@e>JsthT_ ]&>=|N/M I[n5S2sԙv X*H|ϹR˩"SQF9Vpg?l\@,q(fxki#{fR8Q̜UAV +Xt}T>Qyn0:B{*T%hS{= %Ͱ[*rR0qEN٥af\;`ڝ$~k_Y cobUj^+Yݛrryt]vf5HDgd~g>WO6^܌qv,zGd]dJHhdOG&HNENmc=x,>Vȫ%T.Fg>YYhpʘ}d^񹨻rAnerJLQp}9Z~$wjA t$a'p@uqspXeC+9,{,d#OsTB W71RAкxGmo ڵt(Ǔ5)֤nS*nB}"C،Yۇetջ.MH4մG7Ӡ/$lI_SʃfJ[ػ"; Αc?ڜ6ͽJS@/ z<)\FS4̉bΣ)l x$Y=r"?R6Hh0!BNQ7V{ZI =lؙ ioOsY΁@7lvp]yjTg4Ti/Nuی`lL=n>C/ka9LtRO3iΘO9a;Χh0O˜v]HL/)T<,[1+ӄ8W㔌 ZOAFc2{H m1,fs s/X*"fX{ #~" gfއ_pw?l$-:\{fт: r h|ץ_~,,%U_y 9J.dw5D>wb CfTgh>B]`T8dV-cwB(P@zL٥;h?Z$h<&&`L&[|ONhbܰOE > sl$U}gΥ5d|~oP&&Far S.e/1/r3{+ Xtc8 )&X[S6>!i nƁp-Nm*@g4!WBe {4imz٦hJ½l0wud9idAith g}.f4!xFv Mb B\+$הZ]q ;ɐ_,zd-f)2-4c:U JVt9T."u?Dj,T)4LQwuzYO؄6òWe%mrw"XK0+͢iֻKz g_|k@L2o ˉQYxF ³K$j#*gA2 ͇' I9Be;Ђ?!^FdFtH! 3!+ QmfZpfG͉S#o(zބr5VKϔfVkPů"]^$ӕP{B#EVIرz/nSlkn _uze_euK]J,;!9i3"" r½~ x߽|qѶ5lDd$Lz;M-h(l KZCQyz3^N L@#+ G\. RP~Iɭ&"H1uP!IֶW5Z+ɍg5⤨vzxub4f831OZdGrX'4 ̌3ё%JHbqc/1,Fh\+Ll#H9Qe>^fr>$NBebX]S%0cA ZLP6z[TuIv'C!HU9#)|q^t&9F̳BmNV?U7T/4ԟ_h /q<s7N+|q%x䤼m{:gt= -Ҭt⵼'aH5* MnOs%]WS~雡jRI5x/`kCnI7Uz$?`8  }=ܜj'jA"&]:w7o&OznHh Cѻcǡ0b?hT&:_O RFE$f^ݹiU&4nHNҿ7-2B1aFi0P.h{ZgU\7Dass^v>dM"lm1͘؜s`u(+d耦 DŻ+oG81rTrm|Ut`DŽW0kp^{R n}@.Ub=۴?iE0`4oÖ!GPM!uޖTp6٤0#z#GD2݉bѽ/(TuܧEr` 3Ku?$W:pyr^@0G![w/iNꇮP؃~^x)ifKyTGr&_T<@MVF'm?ܫgwXHV.~^5oF9 )_>V?ˉ= xpE Xۼ|\,ѽݕ1Bub&ԥE$3,U* +.5ﳱŠݰl{*W}+СisD^wJTM{P5EiV2GA7*ԕ&-pdhcŤr(N'*vh~i+K`AC =˅3I{_C_~>#p:rhX;a-Ie;͉yK @9א+q&7ovX$ i4~06'cu[^  :җfH40i$FxPɽk,pnWS#=Ӳp,st܏in -C.WbӦ _EܲCԊ'TS$!tPÅG;^Ob.35`u 9mӿCw(Py.6"{Hot^4qYb񚏃GMLA^Z&qKmJ Ast2U=FdLPZo [)8_0 +/> [B7yKtR~O[0o,frBLPme3 /+Q4s!Y+:!9!Og!0*XMKkhO!Cbr:jW{éa|8l%^,\ FB8Fxn&bX}zW%l. 43Q:?C<}B۽} \tjyMdO;2>՘"L4PT@Ž:8Zgq#B3Bl#_"?2WTDkx>4hrc sx޿\z`rI~Pw}[5}~Dٶ O8:vBG/FDku -?_e-A[($敵ɘ`MFR$bգ]!tN4<INdiJ?rQѝ`]!ɲsf񉳨[t=LeV}uބW gC_4+׺FUHQMU g1yge[Qn[MQYO^IL0xcX{fւYMS-1JIY̽;B#mJ MMOQruюL':MCqpW3 >q&wQ3*SN[y\%W>4^cH]ac/HcCJpSE<2l2|+ē E64 L^Vy*/]yE0@[et =0V_W*շ͓ZI"1[:SbFz%E]p̦Q^ nt1PPYq<Š-MmjQeJ{_oD~Vzu;C o=nniQD2]܅\'%;-ö5 1 ] Ϥ>5KY%Jfc4= D:HR-=)mN?|Uz7e/]swu_Ӈf|FRg;:P9Otc`$ XKj>7`:\. Ul#+4R-O5Za9gk?hN՚),XpytV/N^86FDR%sR03//7֧5)6V&w?%ς3dpb(6^HHϛ$`@{Ov}EZ?P:FmʪX9QpOgxm%i*'_`RS(1۽6(7\Eu#e24Qp\IY}п ҁyk P / у -q/1#& V>i[dRѤ/iKNg$54ӽ\mڦ8f«*c)AVAjM"Dwp/&DG@ʼn>z#DP֘Y^{b66CN&0kIG6cÂg#t&>/+ &}M' JW*jSQ1zõOk9$ܳ..G*UZ e+ӍR?tGˠ+]_//5Z$>5 ԄY%RV﶐l`skL6XVS(ODYdtk}'); `ݨo33M2 Ւ!Hmvx^O 42=~6>C0< T? 𗁧s`UR:$5M:q)ntU7d]ᯝ %BGe˺rd:[ea;-cD]~ s8C\TVyFXL٥kF) Pz|}ᡴHa%vLH2 $N F7bcDw_=Xo1 j C !!%-طԊޠ29l.9Rfd\IX񻷹\ ? սfHAd.zpO@݉/m QC[SW%Zh>x0q#w;8 gp:G{mQБA߾y4lKS}[ǓVT`1 ݛq_J[6],Hz>f"OIYef P)VhW~7jxkmghYs1: F<;Έ5+3m'x#zwUɆHk'K8^|iʸ4f3jI ]R[#&38*22W_h[U!&;bC;:9cC}ltgnUDPJ14mbh ٟ̏(U3p>2QVcHytzendK AS\ORZ٠1,J6;g̹zQnߧXn 4G$w~Ni9FN^=.IpFף#EßNv~ђׁ&Ͻbv: ,Հ'eu /R'i՜8-!i;EXB- }7 ,5󬊜'šSWe4B#Ȍ\OwZHX P!HAT5Oj=#ӼX]JW>5?+c=Zz&kZ`]i09HLr8תo_2'ߠY) kBOZc.&xb9RjI?33K$EpQJ]c5lHɧMػn0,[!ҭ1UQ40劅4aBPdНY_m qxŤ2(r!i{I%6(pٽ @jpJ]"I\ҢZYuR߹s4(r@!4{ #B!ˤrwع:OoQP0u<ӭ>a&ڼ)͹Y4y& 7>7U 1moɠ?g7aǵ ԪY ]P圯x3`6 !;nuHk\koJ4ΰԤp!e[Z)SWmL&'>;ΰZȐf&J x*ʓh5~+CTH:ECqcZ *Z駥o^P=dqЭ r:WEa7o.{Y\G43ٕ0T$H/ghoȂR, dd6 >a;(1>wX yĹmz77|%#ld~ M9zV}mAdC]3@Z-a~^ gQ=KVx__l}t mVmt^֧ʮfGaTnhKD'u:dz \4uYEu=3ST NU ŶRS2g3=(KdOgX gBĻ6j>|X=AiVvM@h-:("1O-C "G 9P*Y-8<{,[ =޳Er\Bbk!3lPp) y%A$Q>ahv}&)Ѥb`ī96Oe9} Wųl+oǶd\b.LŔI)4sUAtZζ!%`H|5i<^>~nZMI诪Z+Ƣtmu{J~:0^NOƑ>\ F մ9͓rQ}-!,}AG0e &=eӽ .+!/z.&TU2<<=X1?RZ@a;EJs ֐zz*qSw5? ?ZJhhbS3s_}>ؕRU t1-L%&»iG #.fF_5jn:bN`hWP yԹE aԑͳxsR+T`-#A= *ܜ?u6O,a,(03)ԅXUfp}Wva<-I?W]S?$`uʼnm_m FڿN 8*| Z6lr ׎,GΣ\<,ͺG D0|LuGؼ[}]1ѪT3ϓ9v|gMPݮsqdG)JusۊF]{|<Jq'$7+@as(P[5geJ&Ɔs#ˬhRi^YF9rGj@WHvrK t9,vyf|=RigmB%r󌈨WmlUJ5c䦲GĐ#5en*,Wws}bsId&U/s3يwCk|j<t(⊁8moӠB>đFxժ?$5|/eݻ5b_cCU` $ibI`,wZ &cI,G=l~7|ǟ⧧v#!m3_)E4 tCdxItq 5^^lQjNW]P'*~SNl9\@@#kVY}rn2*܄Tvk]挢slpgRۢ@+WcUEpg'}~cwHEG:wЩeU8+ЯҝÜoO8);/}4N[jԗr[Bi}pz[#>jiEm 5{^}U _+TW5_E\PVZD6JsRxL9*]&O>!=d;[=A6E¢W,?S~0-T͏r<2w.( )灠bF`[D! MH)f2̣y$Fz1F%*P qqYbFGD;ڬ!?%,㣰ԾUi6 җ2& 4>r.$4 F:g#fr,M}k& =ŀ8~eiX'CJ'+4ʺ:.7l55J*#*B(j눩RlķQ%䭓 [{|ڊocQݤ;IBDV'iu?{AkVth ׿ȃwr껉bܦFb8[JO8]:a4 S(DW]0u??s (TY7`v6Oe߲^v9Ba³zE  XC>ûMv87qEgTZ D=yV)< }_ZA6&N^2DܩHtP;r3a ^M}ǬDXbĿ;a ݽ벙@myrǮ`7t΢ vZ\2"TP޻s e>L `u԰jØ職.e(Lf9 cwop {8/RJ9]| ɱI."V_`dJVQI/.HUj) 6rS'IIYqBt>?r-(xky*hH9L+r{ɷ~폃^q2<0w%gܤ _J-ͭӳ73~QxtA뒷S 2zt|46S&7z#eT姈)񊉫3{,nQϹÉ X!bU5pSf+tcnO81o6tdEm>")pN7 {6w#&48l[& 2 Ιm*́T:1`cP30[EaIkx^h}I0L$٨4)J5$ D9Z8W7''QN{̸jRtfZy iC8 P $nEy\!N9S*&Ni\7齝ء)D-XE/ZF.55 ygthF8| ;0IZwƔJrnd.)%m8Yӌqfvs(LhZL(č9)]ۈfA † s S ftP&Sc`I[)JMb Y&2DlC rZA<EEzZ1AJ0bT圻[e+("{l%߲f4LhNeSM]uy&+ d4XhxSY3lAɔyp2p ,0G'ۭlM :)[HAyLlo#ijN_1)Sd3,ݙ4&8Eg lE5Qi…p{kJп{NǗr~ݧQh}_P8/;{%KK~V-,f8ec4b*Q8,(=ϳOÊ{ wjc[aȃ8߼MGѳOÑ 6 1NNX>%Td XXVEblȦ03>T"jo* ϲR?GMa{! 69:N|%U2ޫ7w7V^z*g[oe[] eqC-Csov}\ LR8c7_qYDTT!YૃCzNytFQS`s{9fplq)(? ̔bvs1NP.# 1EprLvca0)g W. 2 = t:K4IUZHnɐ)Ff~maL=˳aIe \Vw2tp|vD@߫ڞmPH{(-}W}VYc]krw1НRa0\|\[cBqTdC(3Pnј\/,6PH晴Apf>Zĥ2#U^oZq8$ B,/OXHz]9ZaL"\RkT^FR0 6ͪ΂jix9QI<2;ƣ7潲Hٌ5U7ԛ,Zӡ#*U?Qt4 IyiʶB ܮert"nf5-ih!=%KVg4GI]U/G%4!c+cExx'Ÿ3)cMb;+kc@RK(& ߣfӹSړá[#R.f./avD[N/OEg!{QjE)NM)iH^yPwybkLVO%Yyu wk덑\B3oWǫE2jW+}mi#|Oo"tYp҆m+ (:Y-2'90 ɽ| W$ ,![#֩W nM%;Vu7!a?N0 cuioWIhQK(Zwe#q3wDKU!_j=u+ @4[>QϿƋeY>"k]eBκ{ +n] Y)VlѷyְS}ϰl͠L_F? ~"1#a3xܤfKYMɤ|xT^꣕8 !S/ZmDnvHu[|f2%S19I[pWQN{ꢥӗSb_7t3F)DEFe69{YTDiROVF=w#{r,ƒ]~$QuOoKt" KlHբQa w:%twU@Ly="x?1Qkrf!Ƙ(p=ٌ VPIWfծz~}c`~|pT?嗬8\q o?Qvԫ.Вpi0 t Vz oT4I_AVJf :3dBSy6Ž6UOݮqec{ZZ@ juAt"%ņ <<2bM5d x! e4n(:M0Jcn(`20A.hܚcN9GH gd%T*Qq#h JS^ohLfRSW[4O1 g;=Iq_ YSc3w.,P Y OB7L z!F6c\iM){f-Б4DeNMR/A2㡦wi R)Έ`L26WK¸yHiQz))9¯Ź6đG苖ԞfXmᬻj8Rؐ uGDoXq .n~ OS6n:9؍Ll&7^5.#{`)p/ Ȕ\%_\O6gK/ bexP`0 $݀תv-\JדaG&E[f `Ix / 6c] X/KgU7;\HбE)?`f9eC4|,l_R!1zMA"荎e+l8%66!|.:Lhڮ!9~DC _Q=ƞ 6rxF1N4P(ViyŊcKy>3a6*(4qB4q"GD)qN~νc͍G&'QBaiɇ]걅+L@,FIu~>"7޲%7җf$|۠Ӏ;Bz393xؔyKLw@ކDa[c4 <#4aML71Sde_ W.^!BRaBiJ>4_}%䔮/`}_YƸL+^AE31I&c8ZG_Z߆H.o?ޠ]a{"H8=AƵ;zܚBF)"߈@;TR"J/ $YrEUh}#JJMά-,,1%`u$YGOK ؑOC?,]Z-/X$o{ d{ZIӤYFP>NƯQ".NھCK]\ڵ}I(kAN_cbcK&@kMPD1sYɥBc> 8|u=Qz4OJ#UYCHV{%ۏPR|@Cm̯M$Y$c}së!54`Š+9B{$9֞[us+'f_e}H2FB41woĴցo:b&7sc8bhU.-g:h8 D"؝yE -}'wOg}0G_9Z*JM`esۮ0Y=* j)rM4`y8n}CREeg?y?g=-n4~D'W%cTUBMx `3e_>YB@( :6{U<FFsbaBAY<\JHYk ?OH.mO^nAC}k\zpDv\/uL@57Yѽe(?7N({C[7^&;H+8 .1H#4 F(Ҷyo,%?bV> >|(t4,w YTkvq_2PWNj|88:lhD>p-}.j+%YQsG<) ֛a&2X`#4YjHtl>ƲsT `z8$:‰5\J;|w{hE#S6sn`GE!sZ~wN["r5;0)hmo xmms=?0^}z!`tONԗX=\&*3f M oD"(XZ2_y'hG@@ R(VmV X/2B4/'І1Hwڜ@ ʋpad3ȥ#NYlfVj;5ty]T"o<=rhTev}ש˺VĖh$HMi+cԐIH%[b"}jAeq ̒Hsx6]w=wIW[D&}$i* 5PM,!FKb -&`fӺ[:f,!e v"˷`}Mf˘v>O(}$ܟZxJ`\mKaujv@lPe e]A1<*Fxl0 +C9q/u&J Zo^ ЌIíRD+s# Rxzw,g걀 #[kزv ֥/RݪhXR4 dԓ¯4)t|[x&zξ: W5AKg \B0;iy9DnkU~ DPds?&MG:ܿ͝ %ewyGR yڧHc8iL6[FbH M9;tD8s+y\o,1 ~YV;)0]bnP+dCJm%ojjk+0`daL)o2@$<&wfJpjw$eS' AW ;I-|&yc̐!9JZK[$od:*Tq?N'_Xn,X=ZѪv2E=fN%.=K4ݝg\Oqt'Jriqވ".}y{6:қ%%oQ.J ;B |xcxj4G|`eBŘLRhz3=AYiew2Đ|ԂG'90'nk<^>)s5i_w[>jvV#aG{>EjGdIHm.#g0xi;X/'SWj 1JBw ۉ`8 F̻g)}e.톷3*LM>Y+d^yYzNVQƩZiX)'gDS%#,]9KR`F-v k0p}om; bpTPMCu^;HOPE&/##2#]wa61w֫.&K_WUEʘ<pG:k*iԵ5۲åf [nV`%Mx;0Nzx HMo9L+FTc(Iwb2_*`"m-:@&[!.? |3'=+7#C*7a^IE1BHZMY+ $.>hPR;%4cw)RH2A$G= 4pU3J;I@~g2`)#²"Ho.RV 0kٍjA5e88?ٻOOMrKְ}պ!S < ܉s68y!/XҴGa& b0l҄ %HMg~^ݔ:fCѶ2}nf~i L :xm rNV >!n@ 9IIPjY! D37=Ec?f%*hHPy| qgM]~2OE{UqKQ#wXbѿؙ?2PǻSp-K(gˡl'1=~{6c_g2^M6 w=@CBaiM ;7̎0M)euƱ[(gTĶ@/kd*a-]]ְP!vjXP 8ix׼M#N_^idm0}D@x+1ӈA@PCb.w8,WO?X)K\A#AO-SAA+L p# ذ:jO{A3f+ +uMOϟ%x"Co` d ^:j%pî{ VDHmLr)c2lŀk>Zg{70cth|T׼5,g2JQ\gO)@2ḱmsDʖ]ѮBrJ'qm~4ISbwDr_9Xetk[J3 vZ{J|oo0QHuyle,kkV^+'kN^IQR׾@M`:{0lAm)`ب?Fd()4[MնGbqn髅&0tx(t_jlҦ`u(Et\ Lq?ek(pAlh_l! HMsƙ{gF:N ͺ胣PbgQ9Z̩oTLM0# kSI"ZtP+u:' ~W3d?;/2ֹ%jƌSYxACV3-]JD5!kþ~i6a 3߰Z 75.U<i\aW+LOj5ں3/z+jD,O<fp 5X-wyAhڽ$~ߣ B `Ak&cF#qX+nÈ(Dm Qd.;1дjn%x(ĨǛ_viR֑&&lBW=kEMcl~BoG=@nj"ZPI _1F:"V= ={gB7Wf똔2A`T4.j{KF{ X=@>n`&QYЕ3RFφKs`RFJ{d:k !NaL~*](cl3焓n>{F%Q\ /$A#l}x).9:WQf F.Qxp哛uZ(kvӓ,9";O ~ VnwɜT`]s#1B` kG.:!*aCIAg 4U_5w#bծUUHX.E '_m<#q]-15hi['8,h8=mBKDfj@> iRrQLTއs1R 6pmd VmU6'Qy K$By4uI9%F8z*ο p22UU^Xe?(#Tov8bu(-6@D9ìH$LkkGQg~zhֹߚw%?XVSb*Z?%\RsZc+waBA$y xB=//_Y.Hkӊ 5+C܆Z .?QehuܑۓQ}4狑[7 -щIJ5yc CÚo]C Hׁ1xmS/SOT*(]~RGg5Kt@T'Mș,ehK%LNlr9{lP(Z crb%+mvqדnkJx{F`lOB <sǰߵdĬWrzP3JOf:rI9onB/vV=4,Z5yp>X~W5^@IV4 Ҝ [:۵PY;R-6qް ;vL5R݆/_i+kXF ^Zt%%#&7TT8:8O.f&!b\0XW8_qr2s(ZlߴiL\;"Ŧ8}$IAs&gdR_>Rzsvx?a\1A(ĿG!aVyҙ*ǐX\AhoE籫abEڝ4^ L2?o*%U껺!->$dvA-_*kX|3-.z 2jDL b i!ךLRFC Iadp:F2R!(~N%|F L-.uxIϒ՗=2_֌FX(aQ^`C̼ Esz4*CůeOZjؓMjt&LUL BfDRjҦCpؑzPTHKCKq 4z 'H)6>:QTk\NuAc|Ή CK*ʰ^eD~ ?Zϟ +=z"XڅT+] LN`GH4s n#:XY/o=->o< lqG-98$13~2QrIlӼʱk7A[1eo.5Y_pҩ9Ha>g~u}"M?J^K' QR, +%-4* 3v b"]Z*IF`96BP 8p{+Yij_ItWxFD:ۍw9: &7޲J/hYw!lHLc?yCN0FQizSHם]_ʥ@O+ ;R8I0e5 ?87*de 顑y;6JVv}&o[0J<ȉm( <|P,%aB9m#\ *4G&NIٴT˖{sQbd:}R%OeZy10+گHJ14/x٨9 dSwZ$dX}y#KPL%"4O2 ] 牟V5R K inkQ(T= /A̚6+rrT Ȕ;} :j[@,A|a=<ꀛ)I (x` \"د!7NKU|Ţp 6$2=R'34d{ݗTcʩ`pJSoDƎRpfGN?Z*:#Uwy򛥠ֽIq\K=f8E:ŖC sy(O+_3@ $TQ_mBNdv}jDG F55 )։IIBWyׯS#l@[n_<(H-$oU?{&3% #\FR AD= 4ٔ R'd_Wq8UNM|o:ѼM?ډc LV/kjriȮpm5hfo;: ,bDo{%IM!sfّ{^յ~*@ɐLtdt i} Fm <:W I؜[҉ɒ#@{ӿ`"a︱z^X}jTqhUTPi2tY*6 o~kT.NYX*z_")[% ƍ{[oHO߆"$O{ z*WFs7J`bas>kJsrQPSmJͿQɇ1U%8I?ըO'g DىF0ܶW8-yʓCuU@RI~-NVT{+ zI_Ԍ8eZ47c&ƸßNjq)=jL*$pxpP_S*)l| |h@{g-}wCnz=ŵdQșL52Sg VQAxR{1OH't*oz!z~dB]E0t pR8npq;8BHI.ٴ /`#8D/H>\_彨}{)p<>cvz v#c7༢KF($F Džtr}հE.C֝q=|چxF1 ʚvDWiuSuwXߔM?Vr@]Tw㔴|%f&T@Yrn ԃ[JMá))::o74 NCW8(//ga5 ;\0|~'}Ay}޽a28˔BY(ޛ:#?J .M".' eNxJx E]ibgK&0g.'qO{q4b7.@DKGö~ ;?6PY^n~⽻_ ,ϒ'=aE.t4)!8:{WPײڳ.9PO,L}C!dWɐ?ߤ}t?kCI˗)LqoYz&̱^ kLnHt$ϖ|)K%0y׉})٤-J7eRU˥olD:"FtSGNn^op`-@F܎SLIgr֠P s6dW6A}i9l ~9w,Jg $dv=]lc15 Y^'sz7th"w)ûNՎn'T3Syg9AzQ&dhXkPNC`[Ofse PvB L\ Y9x E٩}bW^BN!GV̟1L)9#Bslze@9[?[{Xbj1AƃLIYyk7;3tc ["sv EөӢ3,49Hcu ([ JP3tj uxc*D5.Q[/#z[]b_َ alU@q{| Qy =B|u{OKgJh\8' Z׸k&sT=#'n.z~|Fգ+S5N):!U;6K.F yl~f\~ZGL[ TeA)8QbM6|M.+"{쭆Fѻ=^=-!y ͼ'&u| jgQa,M9: -4FQOŒOwHS D=hϜ%ޯ_,:&Q2jeݜ-}(?ȃ$"9˺Ǡ*.DP0m 7qإgz`,iuڏK뿉!#pMJZ"ŷ"A6 !^#Ta j47ܕ ;GB=iVbjsP UuņY>i:ϼ5Ұ ɊBnzf–;N7O)j? ̴I*6Aa}E1gJqǠ=~Y=N.h&uD9+nI2a śĉh|0RFU\PVGb,J>~qqϷ/dePg]GMU&.>3LEb;H{#:KqM>irN/<ӽd*201YWvwo-۝DezhQ jɧ;Hp7u6roHqF랢E1{1/\/^"F3ڤ~:\5nq1P=4*C ŭj'y8GÁ_ ؒJEK̮DZel!@*V) i$!-"ԹŶ` rVѡ^T WvšT߿[_pH ݨ`Ib ~b౻aڎ~X# 5s&23BPnsx'T{/ ̳]`N1d+x lYv%"`$jozrN hu}>ytUmlm}CR[MNd\[HA^ZqA!`]u$vfj; 2-N F"*i{Va HUl>ؒӨxZj]\Uyޮy/܌=KG CYMø<9`b;3K/z,ũ9Z]Zb0T֖/bfq$Pww.V"S m|jnVMo8 E߈xGZ?w e8΅׷0amr{B1+:[?IGnm]d& Vnp4ֈ懪PYA_lp33n,Y(LܚZt(4͞HB7[{[~ ōd`5`+G"]OA/;;Tӟ31tD0<,Mley8S_#wL5 (E`YKPMߎ{}뽹bK>MC:yd ^޸3T ^T&ln MȑpiN{]q`ImM;z߇A]`;DTR*$<޾!Y>]Ub81%IM>'jVet訬|r̢І_ !e t&3]w|,1@'^@U|b?3ېKtmo2BNvoۉ]x%Pt_8d)̷XAެeia|cսm{HߚGVxaMIq-CXo2cԠO 0+ј7sV#ci"wafnrvy' jԋOu~/"Rp\›p^t0Y&CUBK #)Sr."\}*=\_i:QJ.kRc|Q =d u"Vss੏A$6ޮwH6\b#XG :sCQ#88PWLV3$z`m@:K`-l޽ȈOv?~-=e7t Eu/Br ML^ ֠ϰ}-Ong}*`:OdY}jJZНrhh`JW~Ǎ#k^u@@opRl-="2OIVfΘCWxלbb&ֶYNŗoR-MpIk#ڙ0ׁe*.Nց%[][:0JU[eim"<|uH.C#%E/# #q}03>ib +&˄|tjU}kKǐ9nj.SHV#mЧ9id a2$Ͼs!|iVIZ(X/Bd T/|DujkVQsO7܏FVέ\eTi>OqKn  *1*L`oCiglddfSɂ_ys`wC@1̐#.o u&9nw_m)N" Z遪GjJfpe,٧i>g5A_鶊 SPI`T!.IYQcȋto`A]y9Aj :p{l"H+UBYѬ!?4`8ʡ6*}1 GD3\E5"Yݪ{쩆 ms5\&Wi_¥3'tk[6!ćl eSݘw1( kSZձZ{vݨ $yO}S߱cb`MZ!e+XI:d&vٔ*BlZi5`0-AJʷ0ٚ0wiT+uy[lϷ2)CVeEXiWq 2a$0Ba꘺"fWyG l?ފ :ک0%8*jQH06^ȹL4u.9Υd#}u; YEՐ]A .aUx)Tte9=UجJrN0^* {-BZvAӷc $. )BqԶV8 ѕBen~媁us1Wqڄq ~S)IoՆSM~)uVzJ\xV/b1`" \FW?Y_:l/eTtytZbCnQR6Pۢޒ~fX.@z}sNv+1vl.}@a1=<3ZBrZ>Ω+ޖI.`%=/`8 \Vc_HGb RmcVpT=~v&Y).ukc/@?^ )֤kA< ۭ ؠMI.Ie%K<: $(b%Z_OT[3L{zhf rNlPR Ńx:"QOg3G]xtebb& %SPĀYWH;D(C|TE\j1V/%/Гd!?7Uw39h}1LAo8gNz_6~Zk;&ͅ\*uƊb̨f`# B)[g $P Hp1;b? ݆E3AԶUa]7S2P ".G_țtjnMdsH, V~) p8^v_|= iz[HʆR{WFsNvy5I)GstyAWnOԧvˑm8 ~R&"յ~TGgraƂ2XرJ~Ӝ,4<%GCK(!WZt|r,=6Eۚ5 ~Ҭ̨\iN㟠zhFܧX(t9PT.x1%mXLPH8Sgc尵dsU/4,'vp@-җ~jq`wd&#;Tmj*7&|Ȕ9fϩxmd'n@[{q>ܹhNf{灌٣ ? Hxi` _տݎP0b6 ippnӊMQ ORm{cӥq,8FoT$Fv'jߏ=y+|RA9 20V|#Vrpi(cbW2X9!$cFqK*YzS: [ 7^G i}_5'^<i²\ڊhCE/Iڲ .3gxb\Ԙ;D`b]:ﰲmSE, }}FUgtDB W{H9,=y8LSOOMJm8(Yz֬N)I4jt#o|&ai-׍8D"UsZ?lx/d\,q#']m?Np _}Wf"egd@ &_ݘ'q*.xYh0 ~`ߙOfYxWCP!ԣt p/.}p-*& Fb"7͒9DKH P`CHE%Q?= 8ӣI}eFGO{~ia qVrR`U[\kJbrdAP5Nr)Y R@p۫!Ul<(K&Y1.ф\lD?y/fWA s P05:ƹ1BN,S2#T ө/BVۖ.NAsߧE:^>B&a4{rfwpDcp|-g7[JT19qW}8(^9K͢X|Iʨ37M%,,$"BQ cJi;!^u_R4xkZk u̦d Zkօ"7m?x:+ io#Usg;ڍ폦xgA1ڬQu[h+=L|#+ĞD{όrZTƵ/W!JLb@c)p?C~|˼*kmM57B<96 ņ.49qv݌ MP`p,d'@^Qsv1ja5Vwag('n=C|{?7!\x]p PZd65[,8ܗ\#:h(snuWaҾc]eE;}邒`jdaFn;/z뿀;/ RiC͔ 9 ţ, ;اfJpUvskTךd긫0}if&Nnv=;ʩ& {P흞dK5MѫDj A,Pg *3;1}wNk8gA\{95 ;Tg{|Je2[>G#tQ4K-2~bzN$iස.G.Ns.Y;I;usaGzDX @S`-I&SFr&Oի=^z, _ 8%5cDZÚX <YIY@R,Wh2s'_GL$YIO m4~hњ˶S%8:Þ ڪ116Qyhgv{Y@O;Q =|{[vI5`UGwƿۮ`_M&kQ͉37a;;UrT.Sqx NH#L*P>h 8yqgrKp[WyN\^8\k;GHU#ƔHdu}Uo/_]O2Qx(a:Ftgɩּ}ux ^QR{5û^ jKs~Cf WYxG30QkQ zY\A|!$>o ؟xN8,]ɊAc5߂%%? " vK!֎Tֵr²o]jP=L2[G>΅7OFOe'}}d1Ѯ;JW?S, !N89%+}ݙnO=u'uq# S!i!;a_ EY"b/l_iP-2iFnwRA=Ӯ:v Ks1D?[Q6B4VUӥ9~ejE%3XO-l}6Y.+ė%xap'KF~ |Ⱥ?Y0J"~ӟ]<@>Yi)NG9T ^1n1uS.zv <|*էsfgR#ؠ}35"w>L5CzUqa(: % ^3SjS2yνr$V̤zje8cӮEG]ki'90칉Kt7>ڠ1ZZzlD[fL lbڣMElSx*bv`OQ9As8nT.z>0#`8BS- 5Q|B%q"1\*2njq«@fmI|YJ{:fC~Ԯ{Xj{%hJ6#O]Y*?*aWGu>dZv3P𑞋AAek$tDV0 lẊiЧv0cV$PZ8.f7/}#G,a'ld)uc<`*m cݵ[ UF6dk}v y9A9T$9ݏ[miour˧zt ֽ !lղ6J> ": <k 7h]ل7x5۔R9^_<>3 hd4@wM-T(X;ks@C>$n:)vAhSӀ\0zp%?>^է,fST(k y1?|m07f|鞨RRRv""59m08"O4_{kU<1NрņRImʮ͚k#\r^Il6Sb==g1QUGxxMtUj?wS.G=ijL ^ɮnM})wdN؉| .pj|EO py_5JX^_UR$KZRZ4HC a(b)+I#FnQ1O"RI`v6Z5YY2P;՛T>J8V`&-KF6hpvRu.\y=H]wA(ƫkcYWׯcL U*Cäi*%ԐwA5 !Z X%]צ{Ҳ_=E_Sl~gCbֈtQNNig_q TŌĪ}`J^!/ۃĢʹ)V4=:m(*^^hDb!GY{b|^=;P , )?vn6c&)hHTdnU-?w?E<,+W:%ȕ"\A,iR乚<Wߒj^x:یUTirL#d>VyJiފQqg@e לeI@m،<؊Sk&bEI6A]UU9ִi[Pٯ01tf1w蚓I95G5!; KADb&[u꤃(յBaa̿axArdهEj,eek͗}v6 3G2׉dJ\ fB{pf5+ _M3sL`31E'MgV•-pCy󥠯rhO| D`?oa #9>0(;@ }Lє :\,$7e4xGBOK)pYyUz_X+W(fo)!6MLhDKu9ݱt&| }\\#=rމk%J*x/~?$8^b._3e~J6:xنA[z 2Zf[y*P i"QGVߺE>1bN:'c:IϷ6?bmzAp90Fbϲ?oK/{RZgc[]ejEIS$d}[VTtDxL(Z cUpwIayl?J5y^W oFpUfUMˋ=yQϟxt鎃 ^Z(N ^ffN?$$ՙjB]MVžW:HN{c%l)^Oxv2?Wý\:cn:FC yUD[aZn=|P"4!-6|Ɇ犓q-R,7aqG8gO"LwN=^W ?&Aun.4ߪy=R~PѷС'䳥 a#v|L;yTy1 fcĹn^Oܠ_\o8GJtl3gGQ;VN|]uE$/!EM|u֍a:|ŏj hN ;L}_1m14,%ݙo2\VPIkvR̜I% 0f4YU2{OUyZ2Es"D aY90]JNda^HVskq1Χre|{x{.l㎹X]Qu5*!H1[NiBŘ&ԖYoȏuTqG*70xujs'v'"`a @$h "6,` tī&_ͬy!O<#xW%{#~O, I_ kĺtuIBXJ~ 3O9ZG]x1'4cAdC2:ϝFF:T?G="F3a+jKI (צJlsɨ3(E|xf&O$G$Nnck67}(/4oph`U`1" @gT6y:BNoң3aeZ>klCNV1Td#9m"k9,}p$@]agz 4~8ոAޔ}]'*@r7HM!# owjl4upRh$ F58_Qho%a岻ieIZUY8>y0dw2s7ri0K|̐ Q}u(`LIl gV3;?MP8q-ZĞpm0`[kypP;M@N5\_Dv̧Dc ~t믳R&k07uCѵc 3iw(M'po;/5S߅gBImPsix GsA1R! uydf;I,*BY/DlJAm]veVY{sU z VD:y͞Kw'aǑlPնSLܚHf_BǫQmD"UMr+/eL/="=Ze*{$ڣGSm%HRxȁj.XiD` t?#w9;]:Hp Oځzf4M dSQ}u<~T#̋߰GAg[ctRnTjY/v[$ P=GTm>䲭#>GـTꄟ1u^9ϋwBAq *3HjĈt ؜TKy͘SDW=Ke]vig R&U*?Ik79F"fRAcU-jT@&nَbC:( ,d6`^*%TV4ǿ)P<&sJId!>HN,< oJ3X;l? j1qk* mQ/x0}х-` X̐yJ1H%,^URd# p[σO oCړbNqLV$lwf>8JrF-\96`oҸS|=:{OSXb_QT)\BpȃTO8`<7n81 {OF)]8*#8oh}y-CuE z9Xۭˎ3 sv(iYnq ?6JPP5}2.lt߱3l9GΚnB.4NLp8}’b1sY"hN5 ltCSaS?1)F1,]3lZEl{zg(GU@[FԹ{mdr dZkh児[8ixhD kGeL3]~w"{\3nNwrulkn`dC/>/`/8 "W"bCaoM\EFْlBVZmnsݺhKy{ ?>]Xy@iw$7]= 'm5ҴWqB@*.P8~9[,*Aj~ٝ b5^G7QQw=6-\5ʷ])Uژ'8m6}_>B.@*3}ݲ|gח5{LJb@@pxaǥ+oFO%77NO)iehD65b:0+\pQmo:w]?.c||M 0N܌0 wWЯ2ZKÿYUDnm*anUnŜ pa4xB6Wݦ?-6Mo<S*ݨ2|nPAÜQVO-}xFPF%ӈ>ݖ?$fT+O`)`SfJ\UE ^EuQIVM;ksxRʃ gY.F}dۑ0f ˨8H[?^`Akx2?0.D:Y/=xj-s )v9?X+/R( ^E4l*+,a3=: 0grAS>d, Gv`Fwb": ]8)yz6[7ڂzH9_hOKz&dvN[$d~?я jxLXm+mFf$frgZ2-G~j㪓X+byo?3͛5r0da9vH ˤϽ }?xQ c>GmT@ 7fi鶺Q-/>||0vx񞸭u|NjX̌h|fv&Owf^!ߗ=t qe*//`+in$R;Ij buu`{Ϣ>A_J=/G]Cz)i!^omaB1=oYpc8">W$(!!o|G!gQjpj>%Mj揣S-.d}p<_KSQ9;ΗRʃ+ 䮵t{Uk\dKL\HD֙>"T5Yқ y35Pn8nͪɈ9`(Nf9}= n^P񕯔=4j6|W I, ];W6zaH5XnHa/1ۂ%]2#?9e#ZΨ'!3{yi'l6RSEڔ>cՒ.>]t1 # 6eʼciKЊ)_vmJ}+W)ZO _<TOo)D|r0cjmR>Κ̄k<_b<`xz6ϋte &mZ&15\w ۴ף\~F`?sKErrc!|L0Kr0C턽ƋQ= [`oμMK7r \3l7Q#I_O!^SJ͒{tϰ~CT:5$?tsnCYK?ggn𤿮gm ~]$ \Oi&o᫤7Ug)px 2LR&sf "x!gK"^?xg`E+ e.^ 4 dEJ-M4_ߔT#Pą'bd.}nH},{q4Q-Nje))0tR9 +Á PG}k =w-wᆻq`KAHv19$] ljmy U:|V$o)°dbg׵颸*rttܭޟ<`膗&#fLcՌS^d 3 64ؑN@vr EǂhxlgA s#,;s!d:[E {*(.Քdne!ԁKl%|@fz]ڱa9Nߵ5HI ?ve᧢a u$ڝu=gx$fcǝ $ܣ˄nXeM4 k(~ 07'(Àə쐶_ݶǧܹүTXcٝe&aZH j5̊-C yU립|4;nFXmӫ _z|&['m5 qY,\k`BI ~)k,6hC}.U_DԣX+ N^&`}-(WuVUѦu$\J$Nfx6*ģ TE4*յu*';E Rg{H3%0 rqQ{-kx"Zq>\y]c۩nHC 8VzLWv3H¥[#{(}ƭHOixH--&sh »c"Os[2W{p녿;b4٘_9,x7wjz F(\Y\4C2;z >[XfyK)aL6Gb-9gJ67d0j2W[vQUM't޳_[7%MT h(+ 2.~QR?.k(0ل(K#.+*t%2×n,1g ܈ U ʍBjn;P>~7VWUO <>*WԦA]#ep2w'2hiDI[k" l@,-Dv/h)3 uنB|ǖq2@ݒei|o,s*離'_j5},Nh+~š&7Bǵ=E_"&J0HM{rp0c" S Cf~%-s/YGRV\ wK&p  (!1xVBunSe慂ފR&`*Ny_KM-HC[gaFSo,N'aˀ>`[iHby~g }C OoEmu']%Yt:??ٜ\ rA~"۠]gU`gx!F,☪yjyBO/ CHq!2`<'8+**D&bWٜL}D03Q16n9:p}!P翷xPDQ|X%y @1(蕳jՂ;C;t6$qJ4H'1;MkSI$ K,B30}Eqs[M9H >uBRe+]TY"Zҁ̷7!7ᦢ `"ʋ1oNkZVYCĶu4 s* kV5X7^.a)f&h Zp̖M䑃ard: RKrM`N2~h[<$M?"1p[$2jq$5 T2F_^8 rc`\nvT2apJ)rjF)nn݋zkY7kcUU3QOwF+%K^Yk9+Tzv,*^dJתLKUtuu<ѹD\"rչYa*ě!UU8[/j|?y>8IαEv՗,HT4&B: ^:5$K0=>LC= gzh&Fq»o 3O8O!D/q2n͡FGj`k#%Sj!=ixKU9Tǹr9 }0I v;z4:owfEM4FLTG3Oww5)zUi᜺;ǒqUzU Te1w{B @(]\u,2@brU ;?>܀} ׹ap^1]ՋYKٗ<[c#TP _.+/9Fm- (g9f@_l7pd ˞H!2Hhÿ]vA@7C/n#3 Nv$\B?mDcjY0; 24ŵZ1v&9[F\EvTs(҄øyV@Y1u1Y(FENk(F+U`tOܸZVt\% /MHD0 +R'Q[NŢ }ȝG#J`l|mu hk}B'\;gXཽuYb Ӌ2uqȄn"{lY\gM=1dnUt:11xm7-A@{$c0^@XsP K8@Gsv3%/xUƠݵ Ls; k0nOÞ߃= $q0nL!h k~N. t)r],=D&NBM1M DH5LEH/Q!>'İkɂdx֘Wfq"*fB_ :յ\WjMڍPfFKds$|JM2P+ARҶtwzբvoK cFyvJJw^*8$K"_ WtrI/Ǡlp_dDY7m9Ϝ%ͶF#AH%=ݖ dR9^,1˟@֚ͩΤZmj9mKbU3z*(UX :I iHl&eI֕L؋6E;Z Rh l3亞)Er'Ps~EsME异 {Ud1-g摼/=|6t0O3 =>@hFAF#Ip*P]Af\/-UtMʆB#[hqdڲR) QSt(VʘlmLJUO6ئ pkPh7!g.Cm9Rъ}9RM5pr>Y;KpdQ m軛hu_dGS 䉮:7%XICi ף_*2_(R#D>Vx[.TYĘ>?fò֠ͫrq_&eOk;2JhRԆ3Gg[pJU d_څ@?Lj).!Jd[ y7Ѫ.{%$Ze@K PxP47YӘD Y5 ^>WO27p0#oV eN܄ Ʌk U6#%E'nAD3R IW(ƸuBIU^$X:$j:ԯг;[u zUN>v*1-@ ng[aȃ>)iܞ^A8=,Kv(s %?(nNm֝ڣet_K~@^lT5 ST2+p^?q> ͉IgƐS*˞ٹ4',jqƟ+ۇ, ƘM߯Mh|5x8ހ`ku*rIJi-;1/rC5xf%m(P$ψ6 d5fE}ű uCf .hyɛwץ/->،MuZ4(<BkB>W#D.fWZ 0IX#yߪ#xuD"@ pZmR~TSuL~c &9J3ǩQW>eu%*kó[G~;6/`GnM:2afl\PiO.GkIAQ2󪢈Jpl¤V ,[h_i/!L 6a%[!*\t;)b+n_1<'Q٬4e٧_y6 799|ۊR3.=h7HZxi\10iܿ=B"dQ|\8a^a2~*>kՔTO[29.>j;B͍[$}R^o#Sai!su\XdiqUW]r兲22a@G627Yb0E4ԋg|$Ͻ31mb^0#&&}^hH8թzQG1f:Џ1(]bnitlUϱB?ݧz:CG|z5Aؐ[Ǿv HMȆAxbE{? OeL`?cZ3kG'z[?k }Z2YLcgHvX\~ZCsD8H--p+x"d*H+>Ih)${t\]b*sqdb+Ȃr;0⥸meCX'aZ X|TA?aWT״KyۢB|Np$҇O2 =5|*|?>IemH~u|[PDcShJ6!&21+Uoo q +c3|0D>Pz=ֿFwb40\0qvrlsu,7"Ԃcص=>QQy&LPm:fD;%l$bފ|{ rmժVGɢQXUrj녛r8\!rDCILd]E}h2څ~0Oᆪ k.S5 bPX h̼a> yd} *1{j'AGh%KlX*Xrum/}2j8iuO\)B՜-Lʦ>n3W-70sH %37WDv>]s5IiUpa*LQƓNa]_pA"CFa++#V_aZPx%##햑`#y7dDu X,f1Ҩ5&/ԙ&shNEgX C]AL= fauV[80 9N\CUi N8̜׽+)WohW|4ұm(d۷pb "-w@'wݙSXloGC tVv#1;D@KG82f{9O/ !T7]1A }R%bَѵWfF|? 1=BZ-& Ҵ2yI{@&5M%/g ڀ<y8૯+N]|%`Ǖ8d6dWK-\Wk~/j 1*ߥVDiD whBɘVQ(WgvȄJm0U.=>: ßJ `ʯ>?$Xd5| :5jPASB}0.͖n)g0d28ՕS0 ~P& : >nnQI*H$\x}TT{{Wǻve8< V'aJ:¿5t=:ǜKz P1wW_NǬ7'naP|L2@# 7=p636f=wUWcďIx &FAm.4וHgEP_fK{%=:51{Tۀ\)@ >gG{]ڭ!SjFPؘ-a]4V7CP젇Bځ؜:;FV4=?dQ8 cEKn ĜVs>r_V&T^D1$=‰5%yV iVxf72P߉埵ސ2j6ݐ8~b G h!n:^%/R}#^Mj/;XEM-\pE^{IRhy]̧NcU_18:}3q~ctߞ9S/=~! pukZ6gs;V,@5>1i5H p|QO7pN$Նen{"a&{9aZך2k/Foٿ|[w͛aJ񜓭鞛ɿZ%@A{W lib`p oZP'r@UܬI2fжep뮍BhRRWv*'讜 ˑDf8})g5-NI$|B:BsdMgȍrG_ӶuC@AQWCj1D^͋i{ PPgHu, 1+~4ŭogDma )=pEU|q!\kgy=y]"ZcQ:EM  Ur 8~;Ek 7Ƭi_e`)2hrL(W`D#Q3^QHs2zvP RsX5CU\`њg'2no8zo!n 3բ>t.f!< ~B[DlJ>*. mSGҢWjE)/:4FW >/\q&E?MZŜ ӳI cR3DxH8UMV &E⦑Wf95ߩZhg{zI@)XWs3B/^d]#6E4]-F23 (q[/80sp{NX =w^iEN[hXA cX@ @%l!dB!?^J4GP&XK-LyX@mA)aGm5nn 1U 2  S.zL>T ,Oq< q%I #(h1[n,,U3@J/ f.u=ekN5K$d"=C5:i89%_#䧃L;lǝ~Mo)86n?k #tWHi% ,,#Cp0qy;PH *s=* !"d~vOI4dNߡъr,nؐwCL=%>+JOfʡ3:uarQBZ5 W᧗31٩B(#(G~}V1R[G wo=:=? T$JG^}›GJkU~wԳ,&bH9&Yܙ".73Uʻ57]#Ury6D3V }:gyCMC xؓQ 38L;ep$!r`\!ޓ{ӕC g` Dc.Z]ȿ3i&yT`@7j2-Fr:eUj0{𤡁"8{)fB!vS=wy8tgg|@n/ϻɓ ͬKı\b0'\fPd g:X:)b3jlf8Lͤ^,T 똞=% {DׯiP_HvƘקCm8.84n2`LןC4D+uX55ϵuP8 -p[я?N:R] wȂYvwjGx*}Gʖa%CRґ"m,z|h Sq t~.!MsM;rlYIj'!t_u: ۟F~ ᨴ,ѣz6GR Sr p>~vR*C&WIΰ/w FmaNW@w8=#ݺ!9)qI Z*6v(<\;~ûܖ:@5%!~sr650fD3BOyfxL$2sc)يJ@Z5(SiN2L4[uI-ׇ(8dv;%%4RzR\]knW*"pyFO|i*dX`[Ҏ_àlygs)=5P_Xٶ k*}ڏ[4=)JmYдVbPy1%',HuƑ $ vdMaE+*pr}&'[N7kIm]&M#IO$-|r6()4ϟGoØi: S=@yT%EUԧ qiRSUTGPHKs>XTK%12#?}~f%2tvvUQnP:8J3s&<%(0ŀXJ{4<,Xq^ UGw>n oc֘/Yx]ZucK v,~EޕkS87'ŽoeL3{.sd a;?7>'CkbF0z +#,>(y*A iTn='$>(H{ :L5+Du=h^ 0,y^pSY<3h%J4˟.%̱o#G;Y/"zۨ;@T2=>s F3"_YG9v o Ju 2'~H~34).=n:bۋ KXJgs;N.(w ӓ*v)yT|K"Y iiڰ;ۉ|&ߦҮ6VT?bO' ,[qɾS9hl}F1Jo2MX 1D:qrC(cs 1P?؞Xg dUsхe>Š/~[{M q#z~sTW g.ةJqyوF \+@b£fZD Rxe>+Q Rc1IKqnDzp^786Vqxm]iVZ`["==Rl^L]AFCfiO &SנJ \5ۻ'+yXM=bEP{9U(%>U!>%րj|/0"J?8aڗ1v<B_+cDjuC"eOdBME*ܠd.tL.laC%V̫zâ'Fg:&@f(S*=\g`xʙB" i5r}X}z|&.OU`L)dC CM^X?oj_jxȅʄ(mzTbY (0=UO&46r^_FNmM[Tv*vPKc2L=ӏ[Uv !(HIPS7bh;{l_:ǩtv)j{rjgBW=Q¦BO`ם!d`>L`ڥP3XpQل*X s'^SW|KME1=]懇:d(`vRL`WwDwF)x[&w>DZf`/x?JD7 AN: |xw)mFǶWQbQi{v9֩m%!\cPGW Et/]Y(G}hnQI%o(y0L0lߣS0 8aС\"+.4E}sl7fz9T?&Ylmq~=^MU޴1@j|icHt+Dg [$=r;Oo]/D[8v%]X )˺?`jl-حE֍H- eX NSlU[ aX^iʵߠJL< mqGxCP <ncFv`us/h$? \`"kO?D=W?f$:;y}t&oI.v8$PNN\Ivpbp<d{ _%T{6ow-gH\\@:7Pxp3:gݒH+x~b .IC1ۄ!I&zEؼOb횳 ,@h; &k!V4K'\1CMdڸjRBLVA?3[mg]F:yWËW@z%NE~{>խ#?&*nΘqw^0eU7/ڵ*@_:B\'Z!ELEj^!;Tcɗ澺⼩&^"Ƹ0db(]\=a/Aح sbDsGwH|3nGxl\W[\ܯ8wqR*Z9X9,VuJ~Sl(|E7Hnyk'{^,nUdÕRnȻTԁNP1s5ϛ_{>@K< 嵮-r:_/西ıڪ(f} .+[4O  Ç{dZzmse0^5kqLJ>HqfVT[bugAƏ7g'ep-63"#gуd"4j*25H#!w>bsPoκ#tt rY`$/sקq6Pn\< -1(r``vU$Ny.gDLU}j _<=_0wuDOniH8Pm#X:n@2CHASVVfͅ|!Ke5ܐLb()DÜ,1kT[ST鵏Zg~kH)=qѴ^YS5yˎ`~̓㫜|ސ& `&)j nǎ`׋OMSbw Z/=,pC[.B?ee+7Xi4by+'DX9qLMl!lκQt1Vt,k2'fdj|>T"ljDɷr$DfT^@E~3RLx{PRojøNM ]V#]Y!͹yfo`1.E햪%z0y\VВ*hvrԽ׿.A8N3.}Y֧;gC#:Dn Aj+R)gHTJFa30IU >"뺰;JqL/]P䳬ߣVN2`tFɰ@J6Tρ?jO@S^W,t d^E ?'48I'[a{yju[y)Awos2 FʳYJ(cB%1fXlpHZd7 5< [jF:D|?jZֿ O)JEZZs`ɉ 92SmȐhɰ+\'j֪>&>(&qNw?Tգ&eJ1BiVf0>:b_le;V oY !#J,+ g0 (5)CoZA^C+4@^}:5t" ȂUo>)iQ Ti77 IF~~ݞG0.1Kđd8L~$l 6u@R8"B (&:noźG Cl f&\^Uwo!ĕ-[e}r8}vI4@0qU p' Du7mTQTyT8ȅ9EGih:XW<22ҽ!I^w$B{=4ĸ]1l_Wu!JqmʦXJV6a $I%+/,5 |×u 6>[-;f;bOsɕ )ތU~V ϥ9N]]2DP?j:5:QpQ%z-zn<[ŷ5#w+^pvu2lB-J$Զe|O[iXI Um;5 `alEh3O1ltˌmD. ؟4w_EI"u%H}KWULx BӀلbxe?h&!бH3wYCA9mI@w6UCݝyh9G^`Vbh)#f_ >7w|wnv(rKZIT톨\1< .5Wu|Sk7d'/%5愠!m$Cj FT:_Mh" JW;=ƨ*fgrSzxWN_?M_i " §: dNb1Mza]^ELvΪ[n-KlI'x G1_ 8DT*}o{r1GO>2o@ l3f;_ܣ1uO'E|gC'؇mq_]+WZg7Fogr˟jq:L%!QNA-z(dm1,_. y ~Yi怡+՗P@un Nf -R}=F;m=5 dC:} ^NrĶ7(lTX۱BHxe`X0Ͻ6<@h N{fCv jΏ0MQ |ǩ jy쉧7mnpO)Di!EڙHkXvF-@:#cys |NBK0:>tж:Ayol $b]+;rb'Ic{ִ{SѲPJ$TCK'bK7.U .cg2HAԹq*PI<6-`>F׉%`t_D(zG>)?rkcɢ\p31GcfO (޲=R:lb\R6\TwnN 5j2~5Lwu!weI=jUv*Od mWwxO510.!_5V}C#meuQ8 fVwHfl6n&1◧`{d)DOJuJv%0=$&,&ޯT$:7H758+4[1l5 B>G_ vɇ#7oD)3< MGfۥ` S-[aG--< I ۬ :&e4"_cO(þԚ,Xٴ>B KdHi mRjlCIc|Lȥp͓z>>HxĿAT)Zp$x9Pfؕ9(l8Vl"v~K34+wo)޺,ǣ9:7\C_",pg/varҚd OPxfp֍Fjԧ:yv%SrehZ9…RNE䤅Uv(m$AE)s߈F׼3C+K'hgN/l,aˤs鳮GC5%)VC%fKo̸Ȣȸՙ􀅡-zNx" Y?$vdOX_V~://x׃$OQSKTy9 t'y$ÈwqYU>E! @ -Uބl0X.3/Wr!MJjW׬%[kݥz,uB?] X^{X4?i&l{ԗS.^~zWIaH ˄P2?R5[hc v( 1@ޙ'Kp^_\+uIvp~pE+t@甩f$e}Rv\}'Luo//lET4l 7⠀Hk;Qx΃E[SDݶG 쀲C@]Tk0KZ/*ߴM1Ši=45IԖ-\34*[a _Np4ڀBjJUa/SDTLoڔZssh}N]1!{>1 ݍ[%"<+2yD"7)a+^Fo.4t̙)rtU %3FWȑY1qTsZfMZPId 6*Ѳ-lC j=r Qb7v[=Ĝ"Jޕ͕&v l]Lnխ\':fw2vz[t Ĭ=#1J 4zBzё~EH[gC'ƔWC}խ*io`GOv uiY[7VpGMfcI|mw%vO1|pq_>wD*AB^?Ջ/!t؟hXvֳI "凛 o)J~CrM/O*1NgH?~4# 869_m_a~5yghIg<=cS8-ɏKRzحTXefI|+y] $t7Xmէ'+S6z\{{ksA6@Ik'1\~[ ]H)a h/FQ hScwSlk7AJPfrqqLftyYo`HetHK"`rtyGnȒ}C~+-{;^?fʭkp#H]#dS{l~VY*p -_y!"gyRuIjot9WYꭵ4" Qu-7-(Ҽl\|l>fدrB_Z/RB$ qhM=Tg)= F= 7^&!o]4mE@ ~~|9ܩ@|Χ{>`Ss>B~L";1EEa;v'IOhċG;]E[;#ݩ4xZ Y S%7 K r)vF-9+xtE:NXf&SiS5YT R9}< dUr .:TL.Vy}u̲rxlzt+ G'>aނ,[Fܮ[ѥr.կQ{F%?kً.o4B>A> bz<_hI]tWfnc+, _X(tC^h4xD5%o}#TUaHz9U]ܧ"1*]OЛz^dB=ijzim"woEG\lΝn$7W|x urRl瑧 tĸ\x}2 *6KS &!fAۧ{Fi(ZB_\ۏ03ot #$EeZ=&՛O ;ht'EǴt <†]7|IG.=c4{?D҂^T% 87qPXXΪm""("5#UV4E1OrjU8DIsX< S]x=P6J6*oJ s!ɊDX1լdDM^o_<**DK/lQH,Gh:;^ TcM~lC0ïJLFB0~!I~X:+tV/5WWLx~~U_LdzxMMaZM *utDتH{lV`|z` rk13o[Vg%cuS G hJ?8T䑦TWVЭ^:zM V=?$U9G*L3nyxqVaY#Q`t,?>%R%C#76k ߭jGš|#G8~"kMh$8.0Pkf[1ne| >;]kiĕm$Á$Hed| ^\ۇX0'RAj Ϡ!?{cѺ[$%~꼃?r~:'=ẈM񅳌+ o ckŦ"!)K%(5Jkh_SK:g1Nbg!QuI.q&i'ZEF"7ig H82)~xܻ]fاŤZ ݫm2%SѢV+uO[`!^q=7! C:Cz؋/?V(0YH5!A8+)ĔK%Vݤ=2nip? }Ebnt'&@1 שYшܶ`^z$htRbdku=b)uSD%CQS3oXOƈ0O0]3+@n3mB?卪 @(Sȴ> ;eAmЎDdfm@V |p"hK>LT`t ; O<$T>s/-=Sd `~ XT8u@x&ĤasјRElf}#6{C)t4K /ffT8UQ1%cȇ,z\&;Y PBpW7 a<-fX5i|>E| p3y*~@m+`[+y\ Zo=k]7%5e2_2Jj+1fyۇّIO2ߥ^GgwL{OSK5$H}f?#C!UkV{<;~I׭U۷ؔПIrC.(X}3kO1j+x\4!Q|gT^@X6}'`xkG|Jg;8ZW,$کy1h5OC%R؋U4*qy>(%zlYHz^wð*=">@/Ƌr2͈uh#kTc!Ne6‘͆?~c`$o&9?,VbF2$9;2O;x~>XwF gi+] )Lw [k;o@?ٶQq_ D٪|\ )dmaw՚j@1k!AHKVrt~WdX>|z35_2S^y}W#%c|.aZ޽Џ9A9 `Atoﱻ̰dHr}N9GLR-?PR"PXxβ1e9;g.ESsj'lJhK!5 NwKLeҧJk8CPTmvІ:MgBYċZ Ξ ‹W_(5aTNӘ2sh1ylЀl n7'i5rWTD4v}B}ɘ@W2P1.nO\,rhYQAnm_5n6ĔiuTis?5Y-$|[[R +G~>X1CS~yA^d9*X~_Ws -`+OH*o9a!)c֧ ukC_%\`sPl9Vs?UƓ{DuYBwIsL1cT  ^カODf@Gg*ǩSpXx,1t+)mPGA%p03{C`CA9,x侙mnUHQ!TYRwS\O5/,Vwiߏ mV=&~g9Kz)PSSxZgАY 뢃˚L3El)ȝ⟞GEF cJ([Jn-~Z!:[NaHҠp?*R!۴O` C2[0G5)349q|[E Sjw U);A$gw\2Gf ;ftpi7-8+͑z әaSS=]-D8,l|<Lmf^"sxj L:~ :g;oFersKIۯ~E LWnxljhYDosAO5q0O>6r*!%Rty28}3K`.Ns Hr9:g`bfr#m-` h+ZXy0̔'nn q5疹;S2U1J3b{YDXacOM ilf>u_4&daiqg gfz^ VAgMBսaHJ<2ʖ{r(mͶ4cbYdEH _(+ij Q}[.ZZB=[FH6r0s۹) 4B u29=IڈD4ްM-L5Tg4W۫&՝' 7ƛHsХ&NңdSXuCZhK#C}.gQL1Yn{ >6J<8IЩy I<3f :$)SNWWO +fs5вGR5xhY}jg4P|{t E! 6,gΎS[i>R)c^kyT88M(+R#dw_p̡} x!X55ϋ;SfxĨr?{1Z%XbUGmlor WC[ DsѬy#k==W)%cpWa^5e~)fMb.e%RPąPDF*KU~1}`iԣOcpe-f1,U$+*)opm1ӛԤIrQW\.^fR,ξ:DulBQanz9[`kN*+ |>\[JW=CHQjk -:h}";DY5=Ik3'&_ zQ{ݿ( QmcbN(+y\vtgn\*H2=9YΔE=zΈYom^3J[,09;G0 NwZ.ы/.gPޟPq7xt%UHőURqMXe2h|2NPuútز+0@4J;#sܜվj4F,r;uvUN\ςO 8!`bOV9-' ]Ԟ25etI;O$3M2)ƶ uOCzimN:ۂ2=ô&ΫMpéǸzVTͭ-N׻)BBD։WCyOѮb ;[Y=U/LBt/ڹ#x:9aS)Y'l;>58 Hbm͚ߍS[~3m=">\f"vu;Յ{U HK.l1k\T0lW &)(guPXkk!eG67U·T&&4X\=QJRF4c~Ȧ#3"| ]fx֨׮m3|?yt|ɹQLsziig'`(<'xo@\LڌZG?VHrN@$ bT+%TX}+)k5QCV~tߣG -.bQzU>Qk$kرLQGo6>3) SP,U0-Sqˀ\߹SGq~!¥>v +Jkӟ{\JGUXN'"7 vG(,٘tn4X4i !˙L$qX$!TW4"N3S?8Է]mx,@roMFfL$`o??0AC22Z!?i5 ,?kØ$#aR$ttFwΘ 6 @C͍@k)(a"z4*8HU!Orc\kG\VKm&?[:5]d+`X8ԓ94J;Κj(m0^yf3s#3fּ5ʅǧ'H2Ttx#3n^ygLծ{/:Wd 'dHʪ5mhĄ\ƑC?FH-"B;OxIKX"2oG5xۓpFvaV"eC!+[L\yJ/߬-ci.Ɗ*׭%r*]܅>m%(hq'" P2^r67[ً'&U~"X*J[=ƠnǶ ,[L5=׵{9JY/5JWYSuJ5vW,`J/xA{ @m"b6%25 u~]ԶY_h:אOD̙ky)Z%52y9V69A#H pU :Ĉ8]w7=1 |U~G3ؾ?YTQ9#sW\/{NE&k4:2ڳ%/79) #0J_(tMjMlWߍR=nXԖC/[c>H SL~ۼR_y%ff}ph2x ~}"kb'}KYNva;W%E[|K]/6V;)\3 V>H8ܟő! ݋0c6di;$+YMGftDZs+os8j^ ]->þ񅖽 =f#؊_N <']xi@&!T[e?*MU9k4EJ滇.jP˓U6Gl@]]B 2"abE:%[RYg~~ja:W`%`n`,d1`vuarSUd$w0s">!?= P"KtBb.6(3 (uXΛ3"%PF(5=yBD7т`NTBsxrv{b ]t6R3E-d P]ěPJTFQeh"7ҭI9`/ʊBw8.V;pgcmK+i'{1UO^ @Pf)k.(B3քdw5\ Šw_ON?j/R/yAuN7gU@Hɔp̺Ms~T4.ȬP Gf1 *yBGR<'/NCdӝ*RC|js phG4'+3(嫩 ƟJl"Dvlˡxx(ሠ) >ҌAmbߝSݫAva1?S⋿ahfxЈg!7mAz#$%Z}*l@W|1|wEF}ˉUklE @5t"YhiYd?IL/s5Hf^xMtOtOxR'-ʻҤ=_$]`U/L#pRyw=; c`ͯ7ZzyA@5gkNWכ`5ke#-Âr|5;i <Ȑj2OR#$Bƞ.ZMҾ}huu4ڋNY݆9 >( `'Mp^V].%ŮaEfSMP8arK ǥ (>u/8"eOLى,U%(gȭ,C+Z[*zhjqgENBQ1qǚU*Ӽc#g{'&IR3aM_H%/ 1`?[<;4(#644((эj4O񟓡DŒ6H2Hi =e4 ׈bf()NamS tZR~pbMVKzOZ30 ղz,VJ W:M 4mSچk ?6ˌ7jM.*RVG63o~7: 2ZEv3L*`G¦* oV 5M֖cߋ8ӾHgR¥]k3ʈ?ۙ|h]^7t v]'cT#QF ^8MwC5r^hzi-=1J=FYYIW3W[$䛭cʾƓ3EJN:>\ \ /A+1FU#B q>FyMU*HWA{wO]"?8~d7֜I.fӔ .ڤ iz :oMI+A<]#A&I`g|CK/G2./li鏩۳B/ מRY=IRDb6{WG!i*jPBZ Tl[~}pz5< 5f%|gIw8 )s!oqE;J k,g? Ư S٫r:OAc%_|'Dn)DjN6Xg1+ה1z3BRk5w!מ5Bi9mF`f(>q~Ѫ-~m 0A_L]k߅~4fYƋA!|EWv1iڴ&8旖eHQ5IKdBzLX9 D`,!Ӹ`4E@_Y7A+5Z%6QbQa F\sINBm%yEg˱Yێ̽hؑ[ZHQ :wH&k@AY. 0A9/K+:eڪmG4ӹ9]/$|~2NgD-!eeWco4g*D!UA\ܛNp ŔVA ;|ёMVOF]IRٛ:`͇& <|h<)ic+qoML%ZP lȐE=SoX-_F &. Mn_ތB#ҪoJ9$)k烁?WE,&u;Tx:߂WO[q  <?rއYCѥ&嗢e"łE0a'1fڔ%,eBpozdNkᰶi8U~_ݘIi"П<߹S%l%mzdAqy/e3ai&{͊"\9x3N~m, CvfAC(AE \1;ȨCB}4 _a>tc^G*b8wY^ѐC,_bf!} |Ek}XCV@?q:Sd27n1O~M \n 1'$!:xDC{CHBɁ2bތ?i]XuR;(w̳5{}7b =Yhu+t&o5:HP_>n+ny=rBuiݭ~N4ԅ1Op%5\VVTD+5|L)p/ q%o?vms1:ϣS mUqջ.10!NZ2pBrM۽bq V?Jw^oJtn1;=Fi~)jqs@T"E#~j9~ dk0B'O1!"nC{9,MmFR~^M($v`*+W@l6Fju\Kc,XJO6V!D ɤ`B ?eCAp %8vC0.KL4"A[׉2KEy im(%mJ^E :ikUHjX9{/7xC T}xVq?BDSW2k|b}v)9tҀL9N@8S?cmP.k!gf७~MK bF#8>?]$+s{ג !Ҹ6َ9 oEhUb+rS4%fSV,ݏgh\uiUd[ˬSb) OYuEˋ"Ja__[8e;ɞI_D9Li&%qҶ7Xn_R?$)pSj )u7 Yxu6f(ng!,-)Iv;$].rHZ$25F1 "WzQ[t]mK7Iu$urQgX:8~* vQ,2E/IJ+ <=Mt^BZu";uӓK=eoOu$MaY┺CYg_i(%]qI,tOx,cր74D@A@{ +j84;d09! ( }ee>,V,C.HfGiΣL6-]od^ME=$MSfl?m<ҮYP'mm#c hXƧg?2zor5)2tK Eo=]7 JV}o6#_:k nr Q%>Su%k'oeGE䣣@~Xg\aswvINW\b\bܐ2:o-(c6EKC+ _/v!YI YX}AX3.M|&z;SU%,h{džh96F@ aR/Z,eT1Wq᫭1z 2ݟwA`tTꡔ~Q-뺮-o$8w)ֵ^|ĻD/tPIYǕ9dǵqy۸T8%dƿ_+:#<__b 歗 yI%Q(Ccyc M1P'+szCj'QCW6>8D Ih|jlJb'2)N4 㱋"d`B6)Rt;,I:ʃTI5ؚ~ S\0Yf< ǥ0f6j6VdLU+ҫ S Iӱ}y[7INw h [h|k1|Fv@rL"`.GowV\y)v~|mk.)neSgؽoKBT Vt_ܢx}܁HTbIE^CqqWilȉ&3gez×GE"nϮ"4.l<Еҍ5Np,nU UF!A3~k^,8M$g胛9d5p7eh:V3NPv,>eEG$4`An}nBģEPit nɾN69Åy#?L GGwpc:D5s752S9I 1|k %I2Ê=-' =s%;Wׂn.[}d$'<KeS@=B.(v.VTghBٟp% ZMG(Q]1Nzk"zD4%o}sU;GG]x43 bUH>#&Lf弹 ٽ<*/x*fo"w=$e^QDL'~#8.ZC+s0Aq0O8-0o G*Έ]؆AǗ)e~""?Y tp?}g@Dbre(sfk1ڨ/ӄef V.bླྀ4Z3"+&" snjmCcZxtbDH ?N9eRC +T˝pp&mω9Vu+5KvI 't q^'] J[Eq2χh[pw$BRR;EgQk8Eђ[Qh0ecvm /yz]-MҪ?Ӷd<捵, Wu$n|F!{`p`t+ Kn@)42uqv9A#^=ξV)Mm30t#O&X1SBH[%Oirx)_!T@d޿_Qqm v 9F:q%':xr*Uٴ `8( a̖_t*^͑Y4 zJ4,Be  U䷋۸4ȦGd:a ;ф1qȩ]Ql4ᆳ(@e,Vd/jD vPxh'ͨ=]Qg*'틎[DŽ37rf \O%rkβ Po>Vcp.PYm)C0`;k؛Sƌk=R+ 1EGcy \b"_KM\qa5#ڏT`k%x] >Jć`ctCBSn/>v;|s*\ӌ9!ZJa,5)QD]ê 'p6{dP˰`~E*F tC6h-{(ր 粃zyގ "(/\nx#mw曠Hα[4P93swTSzACHaPrE9!ጫAU"bL13~TQR<4M09Dh׬NRqō>ᶨO܏FM  K%j,DZd1EvE_<r.y g {}4ҖI/SELw;,[ŀ) S9V_]ܽ;ٌ; c^"(DHi2)h$~J[z Wε:8$! [G G @]^f a4#3`ҜJ\ZXyK}S&|KhcnS#809! %!zJ0y q~vV IGTZ݀{ͦ1F9=q7 Meʉ7a%60RS9[>q΅ +IQ%դUׂ=2pqf0rBz'$jJ'p',q7 ]/!7Ng'p7WVTw4#άgUZ2pL]TXr섆D$ru]ȃ|@vGÁSO' ?u*͂Xqpd4(NMBoI9&h: [D~n(sBG!s8<\BkMq!㦭0W9-ceuNZn3PO]$z;CJ. @5Ԁw1Ł({^ 2D'iB77+W\<%ɠdQ0)&?Ʌ2V_=1=Eq-p1/]-'wzS4*0*"rS+{"["XSiN U2npn:wE۸g w1YE4@p )XCyCWeê᜵\|P]9Fҫ8m"U#XpMbKG,.RAj?Bԑ䁃G4UhߝZXǿXs(cSVƗ?cWnէ2lw*~\.WerkA]m~Wwₐ xYϲ+u})08I 6:zt0nÿ,d퐡n$XrIxMC_VU%egНո1etɆLY6=(S@0|DżO?oC0Yދt[`8 dOVC3c8BPF"S.eHeVkl9ݝ D^% 8W19&6/(+?JV[  Yܧ5K1-#Vr?ݤjW7Wv4o~J/Cv*eCgvٿ #T7;۟>P\st[s)Fo0!XE DP _\}POQi^K=> RbW 78Ǟ&gKr*?>6\,ͣ"O 0"q7XC!ßtU1k-;I5e(˱m=ia2Q[u&v+/Ҏ/]Yue{(#Tw9*ȅYa[9L?ќ؛Zbd"/baeQb¦A/ŹmBt3 ;Qç/y߱ݷ5+̋{ð'8J ʑMY&[⿎HPK)pxO+XأH+JB3[n~{ʔuojВjxĆ 'yGأ*XXi<sh~E!ڃCIbdר/U޾> vP^ ڥ2I edskv߶* NμAc."%~exY BYZhs55f'ǃ"Tcڰ ޳[lRs"vf9Gn}xd,Vgf90{O 5uCtgp2@Js *"|ZZ' ΤFXfSe?njcG !)rzk(ݦz(HlO X[F;n(1mtWFG#@~y8\| S I\;DEq%Lg ̢>P;../XB7svj*:zw Gyu.s 4yHĜ~n[ 0/\{ >dZzcaaV'YF6i~G҇ 46S$>B۔V/k vA py`&Jq0d r 4(?ah\_Sj$}#_Cl^û5l)oXfKNoQ_3Mv_ch=e7@*6‡R+64åu}]" %ʫ֖ KU+JvXlxbfZ Ww}?D]Ns:n8&2XI [?*~LfܚJΧ1o霣 p3'ҕy7[;6Bt ZʙO@Z?+daNAL곥jQ>,)qnImMfoH̗?0[Zd܌Y„k;N ^^'sxp UHZ\S&p ĕ3!܍0kM)6 ĭjDV$wlcޙ- *&nrJQoSqnUP i[z k8Qq6 i RtR_!iFc<"'s6DOCtc02gj_Ϟ[zMӪ7 2/M#ZT'J$Xg| y1X' J,4yAIǙ #bEWKNȻO-l h4PUB߻߆19aN*3SޘE%&M8.J>+_,Mc/QͪcH{?U_ꪖx {܋, ZnC#4MubQ*Pv~[ 1)P8mQY Q_v ӁM ^-؉3owtd.0Vz ]JBVo!g qn T:C$yPM|DqKɠj 5prkt~N]q*bMOvؠUԥ:6$SmBl;d݊D7*zLִ,&_? $J-!1"ʴ*!#}5 h .J<1R|_7V.>84#A(9E"#YVVxW[R+X}*2iSw]3x(C((9~{i8l+Ib3zDU,$7_ȓȻ7WXA8ߓUh_ۭଆuݘ-|Pov@ ">k~Ub['I:9ΫS/gHI庲_S9)B-r|z%.oQ?EʒF\\贔Ymz`Oƌ{ua1\c҉5X1>jL%8ÿd0S#<YVvhȟs և )b L.-8u3>4˃L|pw:_)RNⓏ voD>bi.h%>BMFϟL7p>{ZvMkCJ$43\xcOJ@ܕEn*r3H׫| I_f5@Ā #G}Ƨ@E`4 R8vW@ 6'iyM5)*͗ (--O#V(8,n]E7Eq(k+f@優7 (rH^[Jx-lC*R|x\IHVc/t F⦛Y)ݮ&cXգm>w2p|aj^^ ^A!w<6S,'hYf\a񨴕QY6ǟmy휬ovwO!].kS 'Q D}$?aJIk>x |;>;rښ c^kWQp.H[](a PBvH^vɮpLbY>훖=/"BnM5!],o{ a ~F<֓?+{'}$^G~| 5-b4ʅtB]8?V)^Hfty:|C!)Pۡ?E\ݼ,-*kH:Hɝ}[&.KIQF[ӬcCpKƐ|1w樾Zl./'ŰDqКї G)HPd`͑ q엂`_>N!1D2EaY%pNm{10e JΞDx]= 3a@-{ȅn3xHJC e1 A|@.&*UY͑YNmA %RِM{ VmA ok1V#FK9AQ&lxY{!nJel`bJiJKZvJR{AMpF{釺NȘ^2 +R$[W''qPm:NNgN{4sIvvw ~Ow=ơQ.]Muilu(I0sGK߻Z 1p|HN6)8UiE\ZG'dSD{y<ȟ4Z~Zntt3֗G/8 g}ho*h*r.I r[pcOջ]i~& SgOck4l/@tȁl ]sG&эl m5ݐGoմr,^2'l2eֈ"q<`); fҰqm\7S4j]SNt}^u=tfO&ʤzA,U?Rn<Ĭ]$E@[7_iEn>黱BR4-ՈΪ}0hrx[?vi;g vA}4{'7zQ@4 u5V?lC[]nE85 8 0Il4kڡlwx ufsGHwi2Z豔G kϚQIzIwO:,fp'GӋ%᳴Q,@roĺ,p5|c#Qk[%웳k_q r^dECV ;oB_cBVVY!Oi¢m/⸑mNȋ8^zq'@2IC凑RUEܬPXy噃W?xo@Fgql^Nw#ދ#X/|(:aRe7Wyܥyfcs`j`x}]dI((ѳ3ӷ.IӘ?ut_F\2V}SQڷ` sل'n"(%8L[b;ʎQ*%,ֹsiu_dKVtkx7б lqj}XE l8#QamLۊ3PL9=lH۸.0D7~52X;k<4@GE mt;1,M7|a3rCg]l;̞R*\wkZ"'Y RK~XXbL`ro^5[{+H^۠o}:;sR,.+Է+sިˡy=V\Bdb zVMjBer̗u,U3)2FdoIIb8ٍASί&U]1?N4]v]}P ؇i{*&( E=kup%:zb9[M]SH}1p5kT\t??Hw\}[hR6mh-.~ 0>gZvn_pG'֗J=t#}!$fG#歺#MF ;Ey]o]T4hC 1,{GяBG}<ʶ! . -S6!KVoȕT/@fM Kbm* Eã qDF 70dv)>ϊND&iɬ,O'$\q;Se5MEMXᝇ H"I{ڟm?l`m6x/#u`InS t{!# p8CrgMδ 0Pcn1PB &C+lPB`l#$];6>u`xS26/9K`IqzZXRoI^\{Su҂}FߙB/r.TrVeɴGY E NcZdƾ9zw' z!lk "ixl.} !*z }4W4dۤGQK{+5"ʟ:UT $8j8T>%Dve9G2N5v#΃]0-ǻƐoj`pE0,'n=QM;yЎU}拾`G ts3K(l}c XQmhov R y\e>Vȃ'Xq1} yy3r!4F)❮PEfZeape;9c *(nv1sDOrck询gF>3\wCcc4uBt>~V>8/@_ P6=:Qҁ(Ae57oV7TV\XvMH)nu،R[qog-,ς ,u:YS.h9Օ%Vpr6M&UiQ:2hٍe!ϜͿxNDCkZ)W5V3/BI+#” D~qJv:=j4ȝt3_Þۼp-qmܮAMm7A qyWju%iEl;wLh53Z~jH0sOz rckҀ:&5WN"ude/& HfHSd{G;FФ|VyVȬ̙aY9vUƭEKYnjOrTng a j7`Dj髡V䠟d'Z9#~V $scFzJ o>ܲRr>+-GU6"8QS0qq0 NLDDF3wCRb0ȐLjn*6ga{_t\}> F~8JG@ra-2<=__{\t1/-k"7ç4Evgb: |Dگk%kO!۫yl԰x cy:q77C4hc]]ަAs 7:^>6XuܱܳO 1*:QJo;Jecz63 B `Xpδfµ(RvME oTN~}Vԓ}BGtZ2'/'D{IN#$$y܊7gBԳA,#.:iyp@p nE*(N>FF:XTivG3)HwgnPޓt:?{ats>~nE򍮲R] i+zpcV[gv7u"i|RsrSo>Zx e)HggfW(? ?gai[ s21Dx0b 뿠'pʻPTcǹ>(`JdFxE[?wīP^ -Hr]/Ŵ ZGykQk*[队Y_dO%mN*2&Zx]?GqI*ϵ{ Ijc˒q\Kg'{0h@ ]ϒle?KZICT~d}:QP<>uJ6`oT Dy5YU:ݼ ySL0&ʁ9։Inc J9%twFy3*%X9Xkz_ 8x*l'QgŶ#"H0;!d ` Q@p1] ~gxo|Ȫq[az}&C?R94&m|I?,&]&;R 7mr B&t{Y!#V=,ŷ(oXkDFZn;-tCǠꯌ|VYA}8$a~S& X*R$MR(|7 d寻I\ia ժ-,e js"\66%ǺǾw*q/: \<,-±SOνM n%tPFJK5>am]DYr\ \z FoLGBOk#}ۚ<vђ_kN 5}oQPL:v}PUqCfp2syD4@ߎx7 ӟuGV;&7zw^]oeٹ Z'X:$!$T:9HN $gY37 v}~6%B aҾnbw bE\" e)W~E W Ir~2 Ó-EW\Ⲉ'&WUs8]ɦpL߾`@ (֖}ZJ{7_QӚ%o|dՊ$eYLigp $s u !{>ku҆,iT11%Xͫ=퓁=fk{]9C߾A[/ɹŁuXΐ{0\s?ܶ0c庋1Nl.0h9sqpwӼdʣ!8g @&3k6༊MN%CR je{WɕJ-_F^#z] 8Zز0AP,Q򠄸.LkUlsaчΘ X%EvD9?-zYxX΅P p ]#qR%¨DԱq|yeM7X]m,?J 8Uȅz1&{E;^v5U7) n24_;d1jжԜ۱";UtɷhŇg]R6#F֞*W!o|y &'17izvn*B^53 R}mGv= jr<sֽGc/侸?D輦@mB!%4gޗz(h|KH3o EiI_!鶛}r^JCx'iq?ExPQf~d<;eMIYb*َK]U.KzI`W?c?s$f]{5V B7V^&ng*^WfuEbsjL 3B5!(|[M > F^nZr <($Q媦)U|lsr{ ^DJ[7=閛w@:S2GW63ӲYX^Km[gE1'f@MaI4ׅ`ķذQ@:`Wqb߫^Ṯ(XeqgWˇVmzBMvoW^E“{*|.1ݱ J̝}_A+yA!Ոyp*󵤇wP _@r;p)# 7`&fUu"Wlj:n=i55*UPx$GlN>y{o%l W-k2yX?j>a4`ixVl8x }2C)ü_TJ&s_\e#hvs/IcfSn\!ly{CP>,8,6ՏPcBy:*=H>t$6 q$3[2lo2إ4gu{Rʦ uN s7`?QCo PQDދ]QP e>\LWުxZgXβ.Sj_[DМ(vRոmѶ[[$ˋIy-(Hۦ-e9/oX-3vMhJB/˔$U@ӧDRxt`*S$}!Sė|#I|ne'O6p(9HŗxO[f5vƨ${^'?ZsK"N[5n w#Di? kGA$Nt;sC3TnBVŶ@aFNcم:Hk4O~j2wxzs6o:fE @`CZ:d2hsHZwe'w Z3}?d엔ulë/ad/۟xqݹݞ =#>vڍ8$z<5FX?띬IRy8gy &qgZ˜ԃ yν{}Ӛ{ixq\|$>x$X3;{\Sɤ@>z-t._4<ZH"ʃ"Y G#c_}0稈cZT%gGfkJ&z~BB|p1\,^ Rc]1o21^}Rrr kgHfid2i,ZXɛDÍn y&^[:Zn=(Ba(9%\YUxe-y~v~w`oxcI6cZ,{aeaڡi:%ag3٣8kZJ\q p+` ڏ0,cy>'U∻ wphK E& 7;/]}XrUԝ@X Z(q}ďԢMix(QC!yeJ}zLd_Za17g}`EP{ %9| !peV0%y4so$a%J-ȝLߴX'Bj` }G 040/%AK)(cʹ]?ǍV,TTľ]0DAYe3?VFFԄ@bbvL1d||AzEDpu4YOH>v\aV٫|IsňRBC;kvØCB : 3uW܍!|J ޙnwjV7AbaPvXR?sEƬN!tlo,Zm-*s`ftKnY{ e~Y-Bd w/ VB]mКŴ[sL%țV+)m!zCJ &m-)x7iɼWܞj%Ph\i"vK EEZȚs=DF7L'׃o}rƳDUhxt{WwCږ#QTd뽹+Y=VI^xD*w~^~ iA} Ff^XLh#xLӅ-+Z4H+;+ i#Œj}O)2tm  &σ -Qlx<0F*،:[' xQDl9@UOc-'w؞2 tX?~܉"!C2jVZV;`Gbu \$̚5u0t%; !uXǑZDܓKB"4oCG1;*8U`CRnV[+L; FtO&bfzg9l6ƪ.Vŕ:M =jb}(y7l&Р[yS{WmJj-@z\)t]-Hi̗8Uxq$ǣ=ǹH'۫D"EVͧ͗ᧃhɎl? p6oGvXQ§7ܪrJ򁆒 tXYOqs,">:\rvLkLqan1Y6,eAWg,Z;/nbe?/q-=L~5E3'TfmGnʫ9jZPt[F ÿy6aY3_U\@i}@ݰ9 J D.>l3[fEwUPBȣ| g9 7vv,rr6ec3P,x(BjF5Td(!y|Bi#z$4_` -6$Uk:*ŌMC aJ]cw0]$B"NH+h%Pv$$4o0.r#tޓ0y/ :co9 .k*JIo> BQj#zZ\z 0MAđ#kAF rރ\ĠC1TE!vCޝ5(QMO١AI(k;D|;~P%Aَzz㺭$vioEL(";ְ z4f*r"ïM22YֳIss:Qʞ] 6ZÁBa$_ޠ`=.`*U@Y^R*KbP1K d@xTm!z$IT}FA"sFX%< QXYRRE eYvegȸVt_ Ts I>4Ia{\: Sn]L8^.v*3nV$ ,Kj n딝"Howj`yZKW3O6!D0Mv#>6랑AhaӍX]H?X!xAx=ZE,W%QWXF"{jMcl]w?YDkp+v6u3M]FN{(+`I?}4{ k^3(&M%)vJ]T~t@qख़e.F5}K5^}%ZgK'nv L!#H M Yf̫NͦC_ÔE6|7*O~S* >weJ%C^$̳S(ɡ)v_2GrgG;W'L]MM_Gɚm"z.Kze:nᇵ(j[sEQ\O<|61qSGK?WҨZ?X-aEwZ|ݏ(b/C݆LV`X13SG,3lRC iBJ)泈RkUiW/"gHz2iv : ΄?D;N%B4NWvAgdtL&X vz[АhZU^'785U G+%; 11%mu:]XS ڜE!?5p/L xDXj4T!W?(6ԲR2v֡/}o!Ly~RUb]طMa5z0єq:{_|Lz+K!:ͪ!0IRZeUF| bJg3Y?p{1O.p(SW|£~68J$`J79;^pq.x7?a4~H> PsFiUn,h=G{"n0)mSKR ~J?FmO1.LG‘VĦ⡱vAa0=^n 5];K{%4Uɐϰ,C<@dwb1>P_Z#^oj :,k ?cL0>:4dރa{ިnaO\ H:YKC)o3SRVCZ0wTrxdxٻHcvʱ CfWg*ӋF8}ܶC"]+s YzBey7kDCcMR? Pm{ >:ʳ-$Ke^EI>-uX6EevFw 1͂2_HF@3\yߍLF ﲫ 8J#:C:Od ;ESQφЯ>,.߶zt, ոFk5e+BѳrZ#R*KAD$^&B"LoZ ~uJt@8$\W(aHMSو,,MYm q&E(#a| ?-Dn*g9-i ިklǓ5=| Ax 1W^Nh.KlVmdHy./BpPɂN ~qg.[q˨oo( 2\qY66ɝ0BWnk5&&Z'/'C(8H,]JŘ/sRv.MZջp0iOcqR"ܳ0NqY[0JMq柬kM+䪜9X \&j4) `ߢMM0n5Ms6U.@ } HjKrQ:ٴAE囹=8*[1:4p hIY~~·NES3j ,wBgW ~h ̃f;:`mxGrsvϛnWM;LMQҚ"0J+~9;V* "2jL"eFK~*gp5>,Jk)5N+2Kޚ+/" e}ZGϝL,ˮcsD՘[E:hJ%Yů0>R ѩb .ctc^""8f :s?)\#rhc -?P\Yų0 Pn L?o+Z@vht+J}OV9\a@_de߶YZ㐋& Y`7T_L ҎOJl~Z3/&Vg C$a=YajiƲfdU ubBjVcZ"F@dWo}MR>ĉ MR1Ҥ̧6D, ޞcK8æ gǨ \ a |@!naڴc)8<{_.#G3#g,|Ŗ1] K{Jh+dp} r7K=bDoU*({.3'r1- Ej?i"O.WvUhoc2YIeTUi;DKra5_ /U (97]HwoOq 3DhZe+?'i|G$.(.(ýjnVw:jZGm0t_Z߫s4@p(4l]\eqq"e3 ʐo\Iɍ$iNB%VtS1z_M(ԽKZ֚:ڹWX9\~۷ow j:ڌ>ƞFUE*AȻ-vly6j/qL{hĴNi3 ϱ|gcX"H_#Ӥ;3bgHG~R9u-gwF_.cpqߝBC+8@4[QW駪ojWV:rM^^.Md"ŋr|hwSꉷ%A3~fʇ,kfutGo%9 X4Jpw,72wft➼òa=><@`6KݥHXGO^g dUe;vȚ5oM yq@=eN߅I:xhxa? ex;">ϙZY6W:0NRJ"A٥Ԏ j!A KS@;يwe!p|-'ju4.:x2G-rN,wq=r-ǿ_7ϯRW:U!mUؕX9DmzG @"ox oppc͆xgSJ$GcV8jh)N߬Ɩ.ԙ6~ (fw}:(\{mQ ^C%cThhAI-+;PEԙC#K}MԲtE ,'uI;&uv:6iȭ@bTa뛘2|,~(v~/>֢Pʪ;У02)#}ߍ \0ӧeH䙓rq x$B5aKcNf H9u> "& yhǷ ߄"|VqVv@JޜΪ`L|q/^#^stD v1tƻ]O{cѬ/dn]}_lLcoЃ}='>S^khltrAB/3 }*Q'*ݽ-A%>1];ap: xTL_\T’faH뱓>{M$q/R#={3'wUנ,|Sb![L.v`R^!R3b (1^';:EyM2o?.s8+D3L)&f;X1{mCrX佑':n\Kä`/fV] w 3$   允aɏ|i .s#BCZ+ \.Ҏ,׋Uc `]X\/q',#aB&dDNj䴯^Ԡ%nBrBk7{aNEMZI+,xE_fE;ISq~q )0R*!˜gۧl 7PX+!Ÿ*Z^R_kGt y ì.iJ:`&6# 8SY « L.}R imSNBLEFb*`92;A9e[f|@MƻSlBH^<>)4$bɈdfl!*"Z$8L"@%FʸYXQ5!SΨsraOsAKH]MLv))ځ@Dmљƈ$[eĽcm/P sVBY:u@ܐ]~S!_:|Mg]@nӶ POWy!0$ M-;HTt4̈xh~k0>5tk>nk"ű6En0H=u]UUa(X F zçQ|*;,KVm!BA~2>CEN9cKM<$S3h`꼷*C{{2{wdt8 QJ/(h xs055HdX(yG6ȩ(^kO^QP Yj2d =f &}B>@ڙ ! RE%6g=W`҃IPy+F ⒘ڭ70 NPiUե1C`<в?{,*^JFTvUYD״VVgf%Yܝ]G>J)̐\H < r󕻺mfWLz!ԯρ"'˯нz,.j=6hCF'j6ϒi>5aYJ\L.:V'U(۲ Iā#8bmr9I{gj"kŢ2XL%$Y9u8Y'$ \󮊮\DFi梑-3xLwjv|݌ Ȉl}FJҺWRNGNE\Z_[jk׻݊[9].ڏڷPVe o-xErb[),ӛ7ZS^{/4?"J f,ehy#oF-Ƨ(! MrI5qVXmGsF#myYwӹ7#Cj YVB-7>+N~¾TR& 5aIMF?s3<p%n3H%yY3ռ_ .ڀHsd9 BSpJC  |-ib?Z tb,\~AȺْOQCI{b8BRKg;<2rD0TC6>}wצƧv%\n;Pʍ n+[T s3 \g,ݒF q!wV]T5gbyM}1VŊNƀva,YB#xvp2MHE, *+7Ht996,2=F~ej)_Ux%']K?d6xz':E݇$Z7PvG$Y_h3^>V!=I"-+"/9h0?J뚘t{d[!Ad?Rh@U;~o9ƣ-||ܐ@2f8tY9?ޭ9)pJպ8>X.-0K*=&7˝ؚʑ_R'}뜖x-fXO:Msq4^6)S2yf.sRP&os;*:Eu@ qެ)TR_觚$eWIvוI-1GXH1I\&+ʠԸmoS>ufxaruu䚎w+11 iQ/t;iKN  =e:7|. У&;xp5l!IE l-h|5/(ñakl3N,.&bU*DUUC#-l;_^=>çGr+ΞiF)`%tum"E8/t)tFRq@X4li2FCo;NI|BCmjݧs#Q-?TDًgU:?1"T.*(%0>>Uh!8 [ y؉!,Y̩`R{À.^8o#fNbc4dPV$tTnp dY֌ 0ϛ4DMW".[©{bZѵ @S/7oRE NPG7D+U;T;&^?1}Arrĥ=c-hJ. 7 -FM|LH.!: ;y}ˇdO&20L5k.g"8vU=Ԍn- ZΓf_gV$JWr˼[ Zܢ/~ͫo'<%~F-cS?Ԝ[GLq&uW蝟m!!Hn^farBQC'; DQVpڭ-gԞ;icohF}n]߮HTpJa+FbIvLd>%WV|h+tfwq\6q<sT$ 9 aPuC $ #IM|J0 5* !4FC!$?VGC'~^ F>9p;O~m %Y]6M]< Uϡ{$v nB(Ӯ@8\%|vrp*O74rP?4V% I%_FLUF|XpL-cw[oҟL]1Eց\Cc邡3U:0U=W&1r 3MͰQN}h$"F|nl%&p@@a*c*FX>O4ϩv ¤wRJ1+FwcPt [—|NE#2€$&(;H=u )&Fc}.{:=p:҄JRXa V*xB]%vTJm#|@ƢE.X-xT+by0雵“#%L_LH$d ;zO/A: *&$+-~^ G|]BrOWW!cu:RMpp+!Q&_v[ď4Eޙ<|iyx(]dwK敏҂K.@2bA0*ͰVl, cĄul HTD/o V}<$f6XZXh/הF RLrV~ʚW^!JXn53ij\RY|Jq`B(,Xyv@7|4LcڽKΗ}<IC[)"s̲(/s*Z;Xqa%GٿrF9$͸."Իx1Y;mQ 6iU5WeJso#D۲_0,^sZX>^&]{Ko)jkY^B۟c MS<?anz|{Tf/^߳'.MJrg@WemRnظ.; Joؕ͸C)PSoz_92nro"cVكeɨ /ܟWh$}`SzBHГT DCsW:hh*嫈A _#$Z!4qA-ԙVQ;xuS{[I<,\@SK*,AdvaFT3۱CΪ#p- +:~J-n;o (ʂǩRe@gU Ӽ g(,z6=>%d6}Bwmf+Q4ɏ@hN TϒGJdl M!scW~ H2~ʵeRrQIM'8>ӚesmyҭڙHi+~ԡizK҆.K\믶tXh؜[dCeaSu:Q36Ar3_~9< "J)iX=qN0=m})[_sA7WX_H[x6V[@%#9:zQ^{עk@ n_4 #k ij|Z:a 8H=hxi[f?ys骥-\/==;K2/TG?K:eЀح]F'ӰH m58+~.;idr7;FVRT%񼧟n{*NCPDS.?7W|{UnC?i)imʑڣӃ %.a{'/p zNKd!C&>$ESrk4&4!̙b̛Wܱ͟h]q*fpUۓGa!Z* 5&xűMUJ8u' )gH  -%P;"pLFзcUdc]_&K1{k'Go=lD̴NnC̮ nڊB kX"ێU1}.d ̤VP N$Ovc64PDZ#b#VvZ#gi>y߸@ӀY> GEU/zœwǏc?`6N_rtP+gY8i;NVܧ$(fYiCZ:Rɥ)#'9Y1Y7w"wU< x | 7 d %բrgÙ:D=:!=E0$h]m2ܛÔS `Rmj2'G kAB57'A fc$"wc>Ex鉇R,aMMw'!]XE}]a K٠.e:Zz1_ZƫCo<-^ kp[cPZ5e3˞=hɞϘ]jQ+PSfKKr7yԏIYa$ ZԠY,Bԋa\,[泷44^j/h~^GZ@"џ6wKf*׋5+_ ڝ3YE>CR͹6/,r&9pTHքU){jN&ǶYw S *,r 4DI0J/Z艶pvpDZpPhU\v̪-z%RޖRJVMI_p! *$6%/ ffӅ $h*TgAn0#7XYb`{&Wfc(ŷ4&ҼSij'N筳_Ԑ'|^oWT$z72%lꉆd2X+8 yL5)+$.)sVE]_.Fx\7o |k`ёl TLd<(vE)whL e4נsd&ٛZDϱ(F\A3@cd]Ua&ӥ09\m`}`L]aG-yrQ?LƆ ty~@0O7\:*| pxL߄\:{?FM׷ҦĀUzig;KTBR) h1ko8؅/Ѥ;MhשLZao䲝J' hPMߣKh`x˨s\лL1}YU GgǘLZ߯Ss 5眥鱍TW_.M; \'^yE~ }:[=3w<1zfCa&++G~?) }`GJ6Ky盛Zc&[|&.c\>Jl~@}H(i9$];.Gwm5uq$-iFk58.9ds7U_%RrQ-( ~% @|3A;Oqx%c ۡ"a~:*P{7QWv)X[x(٫?Z|A57ibR Se;,"ʍc#G1;\g/:Pcw4ŤmA8g:G&nRy{~x0 1'Ҹ2 ,gsR,VilЕ<~<>ʟs'_#(8h2ȁv_rXkP4Hp6Exa:IKٻV:)Rt0EV7]ե@GI K#13L(#o95qΥON*xYI}~Y3?VIK+ =u<}p,|T8S1Cϙx%A "򈄝{يF)BB`kʳP$Y5ivd * >T +MqgJkMƞhiq)3,,LF+/k<+ rJ7ԃ*"oPi]\_GZOMp?ikZd!9Ko[/k+ ԵWr Gǐ7J_z ѡm:;jJD"ϲB+E0\N#a* ^{(P|ʢˍ U#m,0c{!Sr%ݙLxz퀩Pd"i‚f $4h!5R͵ Kt!"Q jҘXu+ql $Zvi'PFzٝvdlsn4~D_`ibKQ\r?+L6[+DO NyxU [b"\(.󮏰˨%^u sXFmV ?d$RoE:,p j|䫄Ttͅ#KyY/KcaG<JvǩQi"-aé8JYO xv! } Z- 2Cg=d?h$=;]jޏѕ' T40ЇV=֗h ;SsgH8},tӈlAHѼo8vd < T@Ē(eS.wGmKYpێ/dr03y#k=G KUUݤ`TfIb 3iMp׿v:@MnkfW68qǮ+k-X̪ϭT`'ʐ3oH!;pIBnX"l&ȯQs>"Pc1D7,>k}|EW) _'\Vͦ{}d8cRf,/

Z 1#Q\또2;bl d&,`!ߟ8B'c|s^4E*] y^/EH&5jM3 - eV GF#ٔ<,) "b߻mSD+)kl!A" b8$k}sT_ A9WƌSCW|Ps 53ɼ{Bz:MnqV/X99<]B~Wx`HVTT# $ ؕG q Za㫣!:}MכZso)چi@꓅Seсlwش?$tt.wjůw0 qBQZO1}B|E\ׇ\x0Š)ݦ^X874Q 0Tl|*vt$5^ lcRL bnM޵4^jW 5)fd>\wIǹR-h~ѽet<IQr 1?q\eFzxq.\Y' whmC0 #$UH7gヷRntf &F ^TUA:7c=oH_?fP,YA䨖9j(`kM8:m`uH_A.4n '_ 6Ubv3'Ja} $c~ w&%IS^\uxh%R'Swn3aD_wGZy@ ܪU}xQS=!h-4#Mpq}JKY#$Ӊ{eؗ}I(uv1㶻ʦ2t#T4fd9#xRM?i ;&w9>*%ҡl睤gʺ M|'UV3a@sɜא@p4[]~GjOC{)//vuZK~9 xsB\ɢAmmI2:GDcn҆"+<{eO06=d"~$Z s;l,Tf59N+}t]ya[}5F4 vE# &cY+6pN2/KJY'5jDΌ `͛/] \.D˓{xÛXM O)ϬIiP'o__ts1VWE Tf~l<3SZFӢ ݹ^\ l/WN&*i8=^~62LmBdark}FWs#;# VwnFMKަ"%h 1F\sYA~_mUWDߙMqmD+3Andb9Ӥ -+>)#qHs+lڲ-U3K9Q0͜SfXwBJ!6./~Md\e^fwir@|_pDnKx88l ? ُceAMdU| z/2j!@ "K UWͲIA־(̢53D7JW `5z㯥\b^ )ӛqM? *t >($i9u|l?^!=:7eC%-PI|/[j?j݅a9n͒[e,6 j /^- k;Ԗ&Z̳ZXvד~<$dqK~kF9#]bGXG,i-BŖ\wx9:#>8 +X67ӥ(C+H4zS ecZUiT[P"'%| p3d==JJSSMc} wA/p+J2))/뻒vN0jXBȠ {v: }Ǩ.J-#:5CIp6ey_xv)@@{--"_(A*/pG9)D ~Ғsͤe7:좖 ouo2FGVJ _Ƃ~h͂v{]9W(rrY>>vуi3؂xL~MXB պ^ θhy%~"<B>qsߵ+ǰo[ɗ\C6|)5_+fҌk$J;o{8T°, @Δ7pmYn*k80SMH_|_2K 9(?\|svָn }lNbI$=w쓰d}2:)Rr'1.ʭ#)y-de^NO¸"(.L+$ Q =L,8ݮ):d=JQ9N߳Yhwz3_;}';<2e6su<;KBo@٠5߷S)m܌<`w? q{M$?KlJ6D8 0-:LE 8W^pˍr܂p 7K&ђ{@EN56C\n;OzH%4HgIc*=&AZl 5eL˽`]U;RWՐE*Nёg~|n:|cƚ(pxi髸l'!>QCP~x acW[g+uѼj4P*=Fb4% On^FjtoNu]Nyg"kv->VU!x=u$0AT +T8ԛY a$[+czwJݕ"KkNaF,HsѦsvJܧϺ~䒴|v{$e-ll^g"c휱SZ3Ȝgp ~;lXVxl<>&cC3хm񅑲|Mߒ7 JNXo4qlw]ě9=5Rtn+%'vYWSf z ^v´xfR2 ˱Ͽ|yI< jA>YՄlCSdyF$mME'K2d~}lh9v^nuayRmY-ݮDSrRNt cBOffb̞P*3\?^֧ RʁwψṚ)x݂"M35dF!_x`~!i]QUf(d8ƭeEr~췾$.8]kqֹ^NĿ< %/>E1YIs{Ħd1amb? )_zo#.iUGW/2M 7Sd7 (GV\$~uLvm'Jsm1^GC熯4F/ɖe|g c&PYDgTM:3Z]n!/XQ;3z؊v1$w]_?mQ5wPےp;߷mN)O;&vk$pP);m0?VEI\y 칈o 6oD Oẙ-_]'A&Z5!, g8Ė5]vE*މGqtRJIU$>OY1JVK4]\U^͎Teaz418%qf}C}$Y 兘5]C Bj4#T$,y (aZ@0\1QP+w/|F.H-s7C+h{9V J 4@73Wpoizc?=UUgy觋 x4Qk2=0H{ PK/ycҼnBRvv15.u?@sݺe* fIJIFVlAI-oQd63$Y{̧G)H/I69e Z;-Fsڻ7-(&p`;␼edBz{pyxDaΉCFk"_‰?d Z~1+%Ղ*.C$àN`9D]B}wAIhƎf鈋p; MQ(2З}YVTz;Ot˳rr8}'sNnԬ&{pyssWDrʚ;ԛ^4}Au3 mksṽ,|B= CU}gn}1jiVXA@j Ii&bߏ 2)ƆN;upTgYe 6"1C?u8u0Is'WOogLLu0Z\]k,/}lX7PP+8Y)tҾ~[/U-wcJ~$st;5>I6`S j fc8  K@3 )-#7t0nfecΆy  SܔC WKy2K\PD_FhX\crn#uE=-O쏊r(F\KwZ빙a{Yl.7X)2ݭqtdd4M-!bDʨuil̛ߤxOD1Voz]άB>GArXQj2^|hbl7*al*{K"M+hN@?dL#]maGE9Q-tI@ NX)b6mUFL[߁L )8Tq}3Lg_އyaGRa;=[mՇ%TC޹rV-Y,F-I;=Cg7;*^!xWItk tyO=w)ZP3]td åԦa5*34[?zTQuگ5` ھH -~p<#jHD!hp1Ug0yYʨ4!jy,b!L$8P tE쉉Ns\n hnfEI*h9< 94lDU^\n'kJ=)Y,n5BLFn;'hzYl>y $فm~VY3HYmZD["^jOJ=4m}%Rɂs7(ӎ I=,M%_1{ +Jtg c#6+^n1)J%2u8u Z7p[:x0JƴnT: 4ݼz'ۖb'JmTx xhLG xny }gd־_IB\7ʹo] ]s_UtQVe%60~e4zJ76MDy}/ItPNfuhBT1VcMJ]RF vR|bL٩Y#ДkT?},9zkts}FI̢&1W&0B/bb(-N"C 6eQۛV'YҘ+^$x=yU᧾{\%4/ۑkwRo SE&2ReX[0 ;楄:|}A"Ǣ㟡*Ta #Qih1STB`,v"805YV/_yZ7~ kM+{逖$P>%xhxI!'Ը+ŵS0 1t2$[4W-{/O9x,3YNѾM^ֹ! @nJ͢$7'Sʊ\`*AIAUZ1̎Of*=p3Tl Ā']h{ kR' mPW2?bs[ɧ4J79 _`OdXxٚ^znJVIX (^ݤcF9b@Jkq_e,ՋypGa0ω<4ł|^|4`0%Rh(Yv.\b#ps`lABl\(p^;: mZ}gQi J1" ׁ"hb@»~7htl`o)-Q]76bBcDㄆ Z!}|p:vF|TF\̝>w ġiYSG^jvT.MJ4Vve"W}Juefj<ETf;pmZY 6VXmY!/m{,]@>8Qr-a(:̮ -/} ݆ e]mmugЯ]ZL Qlź y&.OeH; Įп\w [f"8+sb1(͍$s+TAPqԩDo-677r Kdm5 }>|>]6nY\Hh_U^xy5lP2$*HD̫<R۟ 7N3> \i' ďDV@ԡq6?&nіga+~O% =SEDPADLysLp (3@"ߨ'fVi\e}3CgCy9o5WvO%{Sc6 " '@@0j}j聈ȟvԥlE2 [5֛1]9j*+G},snpu:).QX2+3ƣq!˧H*oM4kRŒC1uoqtJ9 5~w%&*5m^ʹu{c ɗ"o'2)O- >A?DX5PY!=9JQ`t 1+gkv%!4. 䊖0L~B)NJ-I FiJ ­2 (kEK)h IjWlUC[>AxL=*o uc q3팺XT^t e16]\T5[[l7o!3y o"p,D hvi]/$,7 T{=@i@qBOQ!Ρ*2Y+Oݳm̚H{z[{uBYivfGW&.]+9lF24~@,6V ¯)aq.[OI~֏GA]ꊍf& l}A)Aس"\_1].tBm}Bd}΀"Pۢh{q9/!om(ܐ|o&L?~$9+Ǚ:7Vgws>xYem8pH%6mӱy#gCS/ ҅eZmY xLY/,z8vL!V,T2p!F8PKj7}m SҊN2R>} w';L+iW9^:3}Ome-,6 _XIv ĉ*zG)dq*`$r^NQ-Di;; OD60V "^в. xtZr a~Wfiu,D->9rI5/HƌxDG`7Ԍ$gT hRΰ6j1 DJ԰BiMu=UmվC5.}I7be?˰5%\TKh_& Y'h:GK,C'Ecy8=jkh$V~-Ѹ= ("ر4ɶbv?O[YB@Ad}a 6~he)"QD@$U /avDkߕk+5U 3m]{ޒj1\<5uNIg/u܌ȣKC[ yrMm/DS]ֿ HK]8I pBos, +Pna"%F~TAIs/ٕ- 5[.bZ8bD&c`rѾ9[30~e5`PFa}dZq\eLq24QY?J1""/Y O>M ;p"5,V`?Y6Puk]Mǻ~C; q`Q"Zw)D;1IN'A9$qQQ3yL?]Y9 b!\=Hٮ̄U$6)'pV>*N=wpʇV^ C2#߳P2&f&۪O;n}I1[왺=;O{W8t?JtXZk4zCGqgGu s7) Dp U!Q⯜Y1?T6K߶r#;[!!udOزS'ȗz F@R9t@O8-\lӽdIM{?MV"}9wz5.%L>:^F1)ҙ2rnELlW!IK7"@=BpaFXun\6 ZxS{pE( r<5wph1c?"zԧ/uѐy'X*G?6IUP+/w,_IKNNewu676yrYYefs#rX[] jRAh_GWµ(2%9o sGB@/P6 mׇ &0nqwӕ"n& |LjtV>"Yۿ8m3z,0b dӠt'-pQ{/Gy}%M/:[j;bZP'UKFƜ\Uk"y6 pz(w`f܏nGTcBWH{Y?iӶӛ؜1mc$_lw"9^ xO"#$?47g!e2TPؙdkw5BKÑ}f L+nI$@UhFfkHsI(yE=;=$:''?";>^>pCrL*B'Fa"`R})dET݈?w!K %%jƭ0p}5)C_f EV4o7sЇIAV8 iZcj;<|:h&H .bz0§XE sA$Z ĮNTtﻋ_*^_dLxՍqzx 7Me$FW^B4g䍪-:(#ǜnk5:n^_s$C)n ]2†ꙢZF =/MIC|/xdߗk_^] 0O*KYU V{{谬 Y HjNẠz"d#.3|q4 vYZ/GZ A#u`8?ɤ?b@{gsP]`_نޅ C-,3ЃHEEfhqE*A]ćڥw+_CZ6C,d!Aiᢦ4BXF?yF=`? ⹧>W.1!i42*~ĒHi;ûgIM A@;cw~287'gpc"8Eh1QDv䑉Ckw7pySv4/U̐)BiXD¦ }}n,9:rHt0'u4.X2gHjsͮuk%A¡#fǯÒm ?gRF9* At< 2Q)=E\cybp2GS.[']8Heoab=C;4dvJ:XN*t"GC(i\}=ekQs?}EIsaA>YW뷂k3Υ@8 wG/R]i^ZDAipsaBToE : P3 /Du嵗ʄFE ;GTheD ŧs}Y`C&cC30/N'LIc$EWW\D4p:(,yln{p|bX6EQj倉`ܴؔeu"o\=`_hz7!]JsM+=|ZD|⿡RVJF| r`2]C>Yi8y/BL)'GGTpe F!qwgEz,1%>!ǿhx22v9+0O\!`h3pnwu"jETm2..}PPh4z4[\W7U[Pq=ޱYS~ẖC? Xc"FOYhJ6N6Xvjxk_RˡG3yǯ+vg||(1q|a ;>o/qn5O3 J`s-PFϽ!5w6悦'E|oЕI9eiw<` U3 7Y6 t+Q;IJ^GՄ 7H,Լ𪇐NGL9q"{`[=?0ūGOf:Ȃ:zuu$bihrqz=iW^v'cY%uaj,hֈ ʶV 9 Gj~@e"sβZ@^hC eKMp!YE?³~CЉλb_'#$â|5rRC[~_`F {,Q*K}E~TR)[ ,G:'Z.+4>s\Hh /lfQ' R~*ݬv~&'Nz. aK_mF}u-$r~tr *f 1n; j[DtW4rVWe]{RCAntC77ݛJ1<VZqmEbe%A\d$ҹ>pZNJ>ƻ=V/`ET|CΝR>|m )EpfxN*][5H#=G;ojN#5Nޅ0m!WO{sg(zTRO%#4uP'Lf9Ҡ#(F 8xbb/G-`Rx7Oz]48povi]_5núή7e fCh&Uk `PuoR j ˛U,)񴅶Pߥ߯$Q\?àMj!9W?ݮ[?,7əsy~V7I7)WwM6$zuB2 yGi4D֑)FD!p%{y)V88'YXF (rat.7wӠ(a7q6yJPS''P-VkKOةR?vJhbZYUFGS3h ۧ6ٽ%@u|i:i* Vdq} p^>@]ۗqt.R!7ĸcն_`sPyW[;k߉Dԋɳ5Zp i ǃ0e1,YLsHb)%_σ]6(+:{|o1"͉cE!"I ŗs #g5~#$5gP$V Mа\;S>ueYJZ'OՉe}kS,鈤C@V,i_C*DZsΘM#-⯢=oE0R~ c|z<K xjܯD3UmA]tQczz!*_AȦsZ@oaܥmXW,#?n&~'ڰ. .@Sf>"e{3辽7l@j ZLFC }z=~\ Y^ήz_v$\ :E zWͽNqrp]#O"dt6'L<GsN+Z[IWyܥ "-^ԓ`9>LǹˌU >F&ebYXx]X췸˦ҋ[/Ҿ%5CUڨaM,7T}|Vx> @j RWW14Aw~LL3iGSBGf?#뤼UCU'9 'vds=!>_(к^zY36T  Kq@!cMyL ʪ' ea]]x^wx蕳R#f[SbbvrsO4ED{ٱ@N%{|qܣ5XQXgjg㊣XZ,WQ6zKc,13'd)%5.ɠ8Ϟ['U^g4)L9RӨq 5 ^EW#ҔG mK@ ~^ 恗|SNqn8&U"[pfn1mB%'~zʎ-,:rңTHR!8y+~|u*Blgg$&ܠ.j*]BGp _(~rAzڮX-xI.q>5Zg>W)4pt*Р[Ql.Fw1 +zSk ,"|=%]Lo i #36yq)ڮtg睊tlFd$,rU'U ej4=^9>m߂ִV !}j7FV[{[V䩘ȟ9O߃ZA(=G@.m34jlP 3=N_tSJ c|)42[psd~y(Q Q׼}Y=@zR I=Wze=l!zPto-%ч`LY4sl=L)_DBk*!eY#-_L \ƅJY: 8ԱΤɸQ3yh $eUjw?HA2NY^0?J'晵H-ѿ%s$֋z`DVSzk}yʡ4/.b֋ȈFθiR-7•l\ʁ|92%*'n5rԟY6lH[D0yie'PEvyZ")BxV׋-y #N OP3y}*/w"ƍȧX\tw.T=VuM2@Q"AO,n"2 YLu8wBR`kq5$ NA>* idGsLFx!ƽŀ1kaʙt`Dʭe%Omׯ$.y& %0(EWژܟWtک&, ȉ׺`蔕tVrPV <)"> I,v~kSi!j/NQ0 {UQ6ϷiZ55NO QN mHlszd{}jwu-eOT5[?!e(_~&pR~!=xKS/3-s1 _Ke1M]N(_'kԘ}߂J2B$y;J%fG] YŻ1vO@\̦H8G5y.";I$~;+0 ވ1wCۛaOa"Fc? '0 9| ³tbyrj.zE$y-<1DAJ"z߁hS٦tXnALl[]SwC;ɻjYl<5n..yΕL*Î)"KۅueSP[YFYjHw h-a\.{_K庛c_&AΊα4![{t0rYb+QqBT}SX-0gn# #$S>(R0o0IX'D 529EǘhEy1qfvxSU4/k>W\V@Ѥ&,7@u/VM]p :l.*c3BsPwсLʘ^^zM?QMj>ʫ%e ˃ӡ IcF3 W X8CZʙ~NOzq@/_)$x V cRmD>߃G iԤDUsɿ#xr?jeQ*[/2afv%#}J fa KTCj?1Lb3tB0&}F%Ncw\y3; V Xɓ]ga' DnYYb\$dqd~# er'dW/mq3h4C6uClN\Vz0_Wj^p)SN†2uy׿ [ma<JHv1m[С,ɦ:BnQi#Su)4X`PEuf4*6d i05TЏ>=9_c3uHxr:7a`Tmߜ1/xNnh t<0N|dk]i?/;$IEqufSM|mP S@PngYI7w6Kb*zQ`{ vp0{%R dpվk8+S \M{ԓ_:)BgiMr>(TՀtԏ<y s2alP!x&XL U39ϑ)r0Y1'yE` 0n.ӼJ_6ok0b ~}/S6`(G/lE9Ԫͪ_83^jt]44R g`\:l0溸P@>V"B-ߊ:FK5fw%PgKӔ\{auϚ\jq!I=Oȍz5Y 6M nQt.yKŲָٸ!s|xg^ v}(hTIJg6|$nS's5g5{æ$d'Tc+Z೽D%ߓB$+uM x6yGBg \ wh*č aWo6idm"E_YzX(jQ1ykD&Ƶa5EI FoX5}|`?\4ҜU 9$+e1)]y\߶@7u*4f 6?`bs_'2&Ҁn3?T=Hd.b4 ^l|e՚D*n~ELXlyQء܋㴜Vwu{1x΢<Šùo0OF gJ[gQ|lIsaZk!a?zΡaB,AЉ&wv1e6Lrai`XYB2ݒ=tvOt!:ktϖ)!\l8T+1@d$ygJ1oYaZ gS!%"hxPepc%d]?k0Dri:\p~UC1vo~1~ F!} V60Y Y̌]MzMXX~;iqs4Q"_}w=~d 3OY'A9\BkFMZS&mFaz ge? $jC1t~+q%0xqn.:cΒ xlHdbCV+4O^jJ/ـ؂t:.Yv !`F T^P3/ dA[IsXpL:.xFFDGJ~Yfgna.SMCu l`I@z40ȇ}h:G*J2Cr z1m6IТi!eZw[ ?_ g,*Zw$`ã/= 8?|eND|[!88/>1F; 6? gŨ6lv Ў0 R+\}T5sPqZP-&#!\>hGsX VS֍5t AZs<l@C qLn%@9y t~e%iB(偏r;- (G^ѹ)]D93un*ympG=PaXR(MC 74]u6TZsf©u / FK*1px-]r1HX)11h΋x5o[ CU߾2z;"sbA2'O?Y-X^^Bz[g Y0Av4+9~HPt)b(ͯگDuW`1?Y馁U@Q;qYݟ `i(U|"Ӂ|l鮤>nɊ} 5b$q}L>%./kٴ{)YItcmDf;ӟ R ۾E6UVK/=_FMjv q:ˑL_6Pi SIaE1V0a~Oia9#O43L|q PUBL(NUCTAaKynb:ے" LvFl" H1\ % NS̅;~c5ӏbVzDP}V4B/:q0z}3vډUsE. 6Psp\u?À@%&Endn"( GCKCvyl/ϖLcЬE?ze-ؑB#g!z*BAӯzw 4Hgvт% 8Te}^Fb~^@T%_|Z'Ohjɤ|sIUؾkTU_mjᲛe9+Px="^>(o(lx\Bl@!@魶#$PѶBH|OovX{z %*QGyuNJ4L͔Ģ{ōbQ89p >(LgJ뤄3vo-]#\_[YPaEۈװs,aEpwd&de!H],TS%uMdd<#omM=~1r]Sx"Z gM2qX^$Rq(1|SKm{Kt)'r;BMxO av7y2"< )pWtGoL>*kBgT,j3Pde΁Llއ0uPЋztyMmoIua)qC1e˚ KMeN|`WhXL}s6W= $9E-%P >kUNgI|4MøAvWc9Ld,fو3M¡Xo>‘Fޠ?xh1;ya xQ뾣 *x~UQlacN7PPl^DiO9]dai/ eg $.<3K aܸZ-j13THba24 `ohY9y+F3Y\Sy4gi:qQ,}qo6m5x蕬,D 9rpATBUN1vQ:נ_!?]Eeis}Ua2 -֛2;>G _eIПIc)*쓗;ᝲ}8o^?vGn./4 UwuX%ApUqMG$-l|[0{tH:54w6{>.?Y? EC_h4EsM)'v:axЭ#W$i)2+Lt?qY3":S%){j?I̔~ B*/|ӵdLv|uQm'"8@Ŷ9㊒0Zfoݶ`b&˩U'+ MWY30Ӣ$ HЙݲϸaW[s(ZOw ]Q?#^"aG,He]&R]|2ɉ!bowק3_ 4c&~ Wi{܀2$nhM`TѠK3n\|Q5oB؂4W؟C8MeQyAaISP!,9l2LNWq-]UKQhk oE'%G qqD3<~cU[ὃg[gT2b,랐+YL{d@Dv\ҫ|j/. :hzy?{l,]1wNt]ӝ>@hQaz~2=O)8/}2xL_+`&`l=3/l:O"tǴ3;B$U܄)AUGdqٗW ,?JgWific(sNIV8V>;EWćB+y9]E<2+SX0k ؏Bkv0FB㹙 aFL-^~k -=D184~vם_~9UX&lrTbA;wDDb`:uݝpkUjaRhL(^km\&,=LG@ǣ&5W , C \jYgJY9;)gѽCIuR0%KYN:>yWuxS}5rk|ߥvekM2 PkJ7eӶ@>7[ŪKGIyR"w!EjR|f֧ IPh)7lD+0D1?KT_.Ӯ c*'1=C64ކD}=Re! $D[;ʂn\iB7;텏VNKGjdzn/h&/I!wfKFHQ` 끎Zq6OY]oץ @n%KRY (W*;{ L덴9**^@QsY(ŃBiF({ ^R{τ$b$8/ K\80 /e,ȵvTIC(5$uϏ#{˶@i2ynIQicDHP~4Rfkm 7cքTU_ȳzAlJBF $\HBjNe8QO&hI_`n~dhQc~]D29[b;3(E8g4wgz:<؟@xOzEQ&78HĨ7ɼ'BfCנp?nF/< oɱ erov7OmBxL4^Xr?hl:H4>2saU) HQ2puDN<;zTV, ỷX&{U1$Uj;ܙ_5-DQZ,<8 GDPg OCޘT! N& 5T>]xpvg"Ème+I3ʞGaJh낌|}ゴ|Yы"Y ~F@;bTF0YxĶ>-GUdc^qKac~~792Q쑀4HÚÆ~M3L@Âzu.8\sbciѠ.n8,˾A1^x%8>oPizN2/X٪cM_Z}J/nf/$JHsIMmn[*6=U 5O~~LC;ô8Wj o%Iz"Z&XG.x ±i#v$?Rͬ*䆸rIiɅ@1!pq؀֡x Yp0%ݟw+n'l^Ȇ􄇆RaGDu\ "iXX[ȃc8ۣ zvmfוN̰%)GԦU@^"(z!OtrWG˲ke:pU5筕S7v{ - V3[AU&0Qzg緻x͢n*``a*lVFHz$~Wnjd,Aٺ]lܛ+vE9"Xƹb֖*N} [x؎ICė1 -R|p!bIXvB %bQLɢ5KA7z#bn^cA L\e#߭53 6{!*F <S2 ngR<#&h=mP!onF!ѬwU46ȹҀU jcQC5[2$ z0)4X cp.D_LRZ2wɁApuޗN;ڬ `QFihDˬq'~OL'Q ōs֐#!kNܤd+}6]B1 JU5ebxĖ҇z \o0"I呯o.=&g~~=j~>/j/0E3b=6븷N ۯynIV2٤faǗJ=mL-TWv/myĬ};\Jfҭ0ik:[!zַp=`3p ld//ϖ㴙{h*%1Ƴ’Zqcgy(¶z| M$u|f%4b\$;&A:(47{;|L8_2";M PAz:cm{ 4kI$Q]. F6J2x'A$^\䷬D˫?M0Uxs;JqeDXqG7EL=/Jdzw-[xQ(wƻ]Q0Dq3|0߼`XSY9VPI&Oo]׉c0V0\E&K\Sún~ VD;WiRy%7ۚ*$G3Oo:p*6HΡYѧ;փ>$.zەGhm;H]:.U / ޞ5.\:vk M翃E|[uO__ /Wu 'ީ)_`jf .6U.lm:Ӓwo-}O 4cA`пA"_%yuR:x-.Th8f>?0yb@9N[dq (mB \嬊Z^}See"tyfZe%}J}oKt2m pE6J0:?yl<13_޵&OqH.Diw[3T21uv\껜u JvSlC^%.ec4F#0(*B5!+6xPB%]=)8|U`ϵ'?B\ X6wS94^~LeEWa oy=5+Άz1[d[,PkOf2~\O|Cͣ6r(#/T_(<\k!K?q 0ǝegVU:Q;\n}+BޱZ)x~:[A F2 tKd?Yfc,4u+0aPzz/#aap'f馧c,iB|^ԉAAcF ktdKG.nW r~M(t3m fCyh28K@O5F͘koW!^yP 0c|.@i?Fd:V%ng w:Z uЋ8W-y7T'$pF|Xo7LFYeAr7#启v;pu szelboRuXFoo{Wz3T FqZz >JoшbSY;:o}Xh8iF;uu?mV=vP;MM^ ?0J  qŌ3fF﴾%GJfMr:NEp&bBbbP]UQ 9t$Zh2Db^\os;iTZU8ҞF rQS?7LY>{V)yd("YZK+\he{u=qAICZ(]>O1PҀ0jx*yfhYS PK B2Bx(A3Ek9b%vHO_ca/(syU%gY@RBm5/^O53 zЭܨ孟gkQ%]9(J''dV2_pF՛Wy uaЩIhzN71}mKSG8= 4W+QN#nlPVjw~;j2EDO"2vw;R]Ai Ùq}+mH2eF5Q`QqW4LK,UZS})}<0aZQ^")f ,;}hq|>FJfC6*F@ țR?z -lhV9'Eq?/tYjD9:=PggȒ*TB˴έ?-2'XK/t01Yiz"4|pR:>@w18M:S (9\ꎳ9#tc:=b?,B=j[>^l@]r!Dm^Bb`Uצ8VksJ2,0!S6olj@bxq4|a Ɣ,™NCUKWjfˠ]x$n >CKk\^i"gG͞E|*_}RXE`̪:7ԸbGG\ "4X*n-ݰߺ6#$Pwpd/{hP5ZμQ|rύk`|SW2 nS`%xʗr Mj|+nx#1QI͉eNBzz}!Y#p ȝ0Wd2sCWyXftqUrG~T(Ėp'/aaϥK IdNqCHA&ۻ)G+9@h d fWZ"ꌉ?0_IжDlHL96+cV!=Q!<`%/lJ.^(w.i6M3i gQ&b$ Džah*?@W U~/-If ]հY1y%Bgl4+A0yG'R >gC ~\Qz65vML~`bf7%6^B;W19JMhЋT4F{:k&?^?TQ\ߥSlqk`S&!1&k >U8B j35hA'!YGy(s8N ,';PtE柷Gטn]\sČ Tbm4WIW#c-@~;Ci,2,KֳR^PS'Rzjɡ`%1;9r*FAF>gS;ngԤOʴ|kT*L\cYgJGgYQ%C:tq :EMBDjSY@585~'DcīFd')bE@ 8~7JgJZ:%yp%-$5'L!mfj]S"Tf_՗{:kߊjH!AH WnaR))ls'6޴3ño>@2H1&{g@=;'4tYLP?e-A."tGz^ A'y_P< I pGە.^%pA1R+L0 f[ebf+eLzv5HmF*6 ?K ` =;gօDo0ӛnYxu>} =/5_XE/ 7ג7s sܪ8 ,y{aprC ոѝ侎G Ro cp:Vu0؉N㤦%m#w$> W'u_&JY,T&'*2/aӔ]3ނ"DvFwG EIƟR K,N5D EBB$) 1VG wG!lP?7v ᜩ2ӗOG ?n|s\7r\}1jΠJEA$?^.1G3OɮZnWp#^߫~3ۈGzqXgR ?HB`(X/^k{O_o6:R!HH)n4I 3lZ 2vhW I%̯ v!-Nz`2'l%BPa(rLVf ,9fNy;|jsfqLc03>}|dy=u{ se3ʀn}Øap;k!i 2N;C6EUúTJP;`%617cA!\=&+䘭J<i~|cǙIYD.iOXn3wm4q&$=ב5 W_a -aͅN@:Na>~T8f<֑wYCyO;k#: !.(N`#HH/sOѣRZQ TCMwIq )I@xPdȝKҫz2'o%nU&FrG/}Q KZlaAR4w!4oNtnQASU^ I&i&ӧZl$;vH>4@1؇@ 6f 71jFsE>C./4ˇG ѡnE_#P o~{|n >HcRJQR+CA$KCP1 )BMxng( >(Ek)lShijVgnjEև\w߻Ehr Us=XaR#E.2E]WXI(Ay (ӏ8YC$DZ))ٲ䛳J8S_7:u%: G(j , Q{tkPr+ouD쯮&_~xvv˧uk;%Uue~e.ieBN[MS7} 沥-6jb'k3Is߽xo~⊔{A.qffz(/5 Ayݽ;=_)$H(s>Y!=pұB6VIO.qT6.Ȕ9/ޣoze4}JZV1[;CaIgII3$A[pL܂q:ۧ.\/7y шj5qCЁ+}# 7F:՗2&C8I)Iːv.DX0oӜaGBAt]ftP];!,s"M;h)}Ihvn/5e|(ܑa Vj@<1Y4g<@r^1 zNT}odZa^MƵs40:lE sJjX?bjhdnb5w ث{hQlxa% WC :GꝾo:Xdרތ\M:S3q4pm`Hzis I7V1T5}nV,ocqRl݂8M?2+Do|VfLw=B ʙzcEUMU:L wn0w!r`;5 Lϯ/C^"x-i҉īD^r[2&rKƁV6{\l[5s[Ykp|>w7%.T>H>gVP{jD;Ke5bA#7z5>oazJs-ĪaC cߤoK}B*r<%թ;`r::k^ZYъqMɊoBMIXGxZob<䅥:+FRjDD0­UK}"".2 ]JXc!ҥT[=y+.̾P VMH- NEoI=z1m%:1Gmf] `sp//B ΁ݒeVDnH'"UպG !3 ?>r}zvkӍ[@QZN'O_ʽw_ols jk|FA'K,0.+/ 2|j0p7"L$E[<Ғ obar}8>ũɪB ~\ k㍸}MH5uvs⋂DMeD֊`TDp .k0ۙXh2|\=3K) m mbe*7UIvu#>, k²ک^:Q享M.1+2۾l#J@a0pl>yN(փ#X0Yi6Xkۄgm N^ Dg[^N3ul:T5:֫9&. m֐ùqObCRiu9X1?,/g$s<* A^-ȾNg3(Ө0}7)mBw v>cu(bdlQd+-ؗElӞV>یhU ^sXnN'7<}քQT*]LKNSm|!dBwܾQ+St8M]|;/`ImK SĈK-0Ajpbض#A3p;8~:> zzeQāu/^}V|-'#Ha5o!5BZ7Z!yIkk?|<,M fT, ḵowa*Jjs.n[QjaQU?S*'2S T}#}-'"ص^EFsfbBoE&P[^~3g- p]4MJ 'KK%+{MJD[OFITs=i:oM5o1b2=+7R't+}`p$qJl].n9d;xX)/A)C6L.HD}bǵ"<@I jjٙA*)? fwS֩dԩUINZiQf27)uLx:TK]&"nia6qeYs煜 c;dfdd*̀"T$v <]z_y^LG@qHۃQeWM">FDJ#+4  6\]s1R/y8c|*FMS#,3>#\f2/O#$[u{dz,ń͌L Pw{.r 3񌆸%ӤF2ڋ]x+ڼ'ЗG&E֎!UGNh˒Q#}B:iJvz`*.lqR"7zzӝPo `oIq ba3n^ݡA5:_*ݩnJ0 YND\klwI~v/_:[FiPoy 9մP؁d]_JxC\&Y;`Ҩ>;]{e~S qk8 QPˢ@'"/n#$.49+IFMu&z^r+9.&Zx$hᤰ0 ,G$p Nu [1!Ո~=8H4cM٫Jϑ3m%I(G)a޼Q4M? $m]TwK#hQ0δΨ]t yENt֢kZ KUUcôÔ}oaP$Ѧ|({8-)x@A0#4ϷZmhi*B<PlH` ,oٛLkuZ*ݎr} (6$}ԑckJg8i`x jP1{0JU\Ay'<Ұ1xd)ވ?FT"v2dwKvZcYnU zf^n+R@K0r0?mmR$inkziGnH%-ij4I6hH8' eq6En۟nRnׇ0Iy[$\:\[ZaX2fk% Rw괋, _QqfOf0Ł&!B[:ግE. ?( 漚Jй|2gjl-CڠF ( ' \dݿ\}T^'-L$/%]ߒ#"C*@t4W1 0QgC͖qkZۏE?, bY33X>}8}\вlQ;`7pQ7| 'n~Kx|#w%%v AgI|U9S(x1P~CX4P&NP'8s7we*kOcRDJ/mKw.Ept˅5^~`=F,f aHڝOW~i]i'-ɧCKeV;\v.,ŭAv@[5*IϘue ilE+,M#nk]6UPHRM{Y>jpv)JHQ}SMw_-u}4}s\=w\o.#27vhClSA%g5:9J+(28-y/2UR[E`%{#;F$)of?)J:!4q=](7\"ؽi)ÿk-)6Sʌ61@jv_/B[&b;ADy {C՘[Gگr)%q쨙O.FE!k׹hMc"U] bdD(յoWGekG%sxw[+Hhغom&Rڦsg%ϋ#e f,Ge^JQŭg4&%Xm R_2]aro'SڍyĻex - 0ר _0MmUV|ٛ'DyMCs1vtZTC`)p>k8ߘnWs)4eby*lV ƚЈb]9h3.@_ 8i8vE ͋g$CFZ ;Zpd*?:< v!rx%?}fw(vPlnx$RCYzDV阃bHmwwf$ʟ{a-c6ic؏3lQ0 TkiѲT> 8•=MUo ydl$02tjR3Yb=(}Jq:pZ#xj cR7abs ̆ܞS=A˄Of3gB7x5#5wu@rO+8UTwʼ; ,\=v9< -c7Ľd{4O$ >wGkf_5hϽD)QY3\$ V8;_a6[d4 [k]L B,5t`GJGTHJFxQ"EX)ͯ^X'2 tt]!`'2rJ.k4~r(|!$9[e)zZ Ϗ=*'$Ы~Z P*Zo=p)Dys0R-qZsdaS_#p$w4n&3(ƍ a؝,73}6\bFѪ#{ }OhCAC &oߟJ39$T0{"=ʣ@-d 3nkK*$5n;Atp6γsH>(_ZqaZ"&e(&Rm~vpҗjI .rč讉of`wQ#fEΔn$~ۤ Skm9Ds.NE']OkjІ9;uM>_qavߟ1 5jGb DzFq.tQ@ḵላ=dM)^BpRq:lB7F4-1>7oNay"&O KuUB$H"MQ"DI$vv ĂQ }e vD %vZ|Rj\sɨPB! & [Zl'&)sH"#|{rmIg@;uH!E"$ByyU+ӡ6"GrGT]-XQ`ё5[-fiOf2`!vڴxN#@r"dH'F fv҈[a?_%VC8Bs+~sY~O@f±쓒:[H 8!+I)-52:e]ھIj+oYl&AF0T-fY'*SGBLXp3ispR>ŽPz-1haͰs ИZ U'e\X,5c۾&#Լ۝2/D?=HNt]nWF9,@ ~%y ߛ†5KX:S<Ζڥ>M r{;fSLP?i{®˵7TafK7&@n~C.U Ja:wߴ.$g>H8"2f߬PŻq&e˸Aكn93: Y `+K]HJQ.riNwjM '8N=Q`D#;9КcP;3uS:^dv+vGۛ81ƓT *l+WG=q?`ucA|gi0N^$]qLyYb((28)o|~׮HJ~ 9}f.?<9&=Q?M0?.vAiNV8n•Lq!tR Rn7 Tv,hh@UVR@B3g_CYRLF?e2` `: .T_MQ2&:qj[; ЎpMC@/u*NVt!3la5N`NGkSd=eTrS(YW!S- {uxk/τG% HoTR6;ɓfsZio)s(V(,AV1zkWf|Ѐʲxi{¼ljWFsR,ָhH>6Z;^-t+t;N9!GeS' OKcs=dYDZM?[餶ݟr[OeY"Wעnp K FԹz)h| 2H\hmIoAem+st>>9-̙?办7%ca!:e e_ tr7zUoxjYb #_/@KpF䁄D UT@'|5q sCͪlU,;|AI̖L-XCRmtV3ܗuFuf^8fB׭!PV&Z/) ƽGQχGGc7;* @_Nl?II)UeV s;X ٤&")]J[OO)yX..57F ʀZGSÿ7sH mQx)ԤpYNvJ%f `7L4%~] eQpt^@3sD!Bb&SKIg93+ncmFN;BbDMy&W4qE )긻Ϣɳ,S!X?n^ q H6 a57C%AMeK+oW]d#&D0تahely4Sξ21z]/*!0FqTuK:d[M9+e?P S`AT@3->o¾-BFoNJi?;ݽv{r) 2t`،԰Qֲ*H+1y =WEwrajMe#TRS[|꼶[!KG/\Ӳ3wQ<ava++(][MFJަ0$l_0NiSmUv5n$B{l5|^ l !j枍roƭE46G _6L%Rr̖% 7hey0ڶ?ځxE$:}t \ f:) HTԯK|gM+vK%X5^[-%AUr e~уg{5NTM`Oa }qrS$FgWCw4Ϯұ W(~{v'#ih+X|UPS}yAz7(Jg3NryƯ=~m5%i`;54i>V!MbF3v\Vq*1Ys@C#%(Oܥ q'ԡ8t-#+]zm=#vvČ)(Lfg?0>_Nc#9ZQ9q.)Jd;3hEMeu|᲏j~_>j.]: L2E՝Æ>ug5 BAJw"H%w9^o}@ D}Ә6$6j=ݧx!CPJ\\ia\ wcYhb+ƼBF5tNN]*q]+fA5U.Da*o|⒫IYV q E!J%'4DP83~Iz/pwmj姦iiWw {Z%*K_øFѣ,Z0iO/JhЗ%3#b,^ie €@?NfP! ːHʹ(2;8{ *(\7F^9pA0~b{3*lAlap{^Cf4XG68٩!jĹ bbk.vؘ8SmnHRu: X:ջ-aʨ̈Td7 ϒT׳:x\Tr"brQ[VPfՄjRL`t>vxz0W][6u€ɋRGS~G*v,'-+Bߢf+6.t9މbFU] Phz}3{|IӞmrg)1sz`e4 _;q=Ox vbvF4-q_7 {(E|П)sfIvz‰.D);zr@v]_Bq q?GQI$4YP ^R"s//os(ܱ, #NQ gV m:kƉbl_Eb< cZ'Qw숙4<Ś}`3D](Jƒ~ aDu?u]m.zR8cJ5ۜ H+>&N%El]ֶ*jjloe'+.s!na.K=Bydxxd!1ZEaSpi@(Z'-gZ H\"CEg(}D>->>쵹D(ihBN`k4 faqrk0T}Li%|?^"oـ8'HjĦ+y=OEF>aVG5 DLצjW5[JE&&E}iCvIg&H% ۇS0"H!#wֻ}Xh9[3qMB**4Ы V?qh;"d^lsLޛBDXy퇛e'"S#)N`!Q|C)%<H*7.U/(=&.6w-?s(&ԱXGET?L3吢#:o?M4ooejE2l0Dŀhpnd!>AmDXf'F*QyCv*> BMg/.8EU[%C.; 训.4D #?C3d:}J e qX{ d9ȋi3:ȭݡ-ȅ\%wѵJ=NT)ZaLE94YV:)! pU0:)x̉EeK2XJ03^bQ`/fEp? ٕSJ4G)lVatgtgUkukMHMkDۿiD7Qer2 16>J+Y" ,Xo$8/6?P?ٔѶ^") 3˒ܚC ϵuy|YtE-+t.HIfdYuB/uq2ڦUBGJg2pp;hk~'{1_iL= 9^\뀕:'.]ӡ}?+@q Txf͝0 ɨLi,"̹u=?hVy3ƕ'zC@'}{ü 3iF-'(FV[Y6ȊzɠK04OR]B l@p:(3'?G1Baǜ:"GaǬ!q*wTgT  L*T?=@Ժl78y€{ՍE&Ej1S.6Īk޶!"1b;5{ 3.IcEKPOnշ$8XM9Տ 5ݐa0CԬoz56 o{|~G3<|2@Krr]hIL \&#ŵiٖQeѠlL+Go65})c8Yo5E`|(z|U JD%\ wL],c- iوTlģƃya/Sh! Z864!<\c ?Nj)pRuu\Zm&&9M>M238v 7)HWYYx ̀*`S_Ȉ*u :ZgD:aSqͮy?0V >9/s1s y -IO_y8ݤJƹщA8O0mn+?\ٿaPa-좖#0)PY{(GԛcwOW_N$lB[4ěBt0#0ϩJ)9?M[ @@@)4_qKLhn+-q($a_B!3@bf7Q:{I qMqX9X[(&UA}ŏ Sͪ 4eb UG p&IfE[Dat0+~_%FPD% ̗B+8J5b >__x8fl])3l:su@qhX ؇vTO zG}W\YW<C +K;--GM'쪲mN)~Zx^< 7 A䈢YuVT}@ viKiE8ѭ-딍'")T43gVTJ: PА9[lB= ֲ G B+_&N'#vqGRmZMry9`3 nft>'Y9>HWy,s] ..GtNxfSi)OLVxtw=i=a$z[yNhuF7zpI_H$|* @q/%(nݘhRؖz3YJ| MMn-Fy` 2uOXPOB](AB,t8)|XCM{9ALFUcgG6N[WnÔC!rd%$,rXI;*%-jw! klU LaJuTLI$VH٩7;^9 F7.U@vdn7zWOFxD9$[騋$ٔ荚RHt,~OX `Dj۱t|R;8H*1zPUŘT Vf.Sen<-Mg4dh2#ߏ!$UĻΓGy 9FF9:IN*~c1+gKp;PSaHO;۵7hgEBDDOQU# @~8=v)@[(yz:ҝY(hJ@tWY /-"E&N$,$>a8XC,fa`m_ufx籗J7>A¬* B'/Ԗ9i{0AJ&Cj |?n[õ{wEE)gI/C l98:Ȼ4.\.Py t`PGփ0$Ll󜺸5 DqE0$ K8-S>J 1:yϱZB>]j gx6+*+꣼8(1A\P^{y9bt )u0q\hQzV$\HoRB﹝'j!An;m6),8Ɛ#VTî1;s`L\K;EkoI[^C9\GUBTn6Ypޞ0ɛR5'?VuO8xglK Ý<*L#]Q "y7(-bXtm7棥 G`N/rK ZXiyN+[[<Z7hˡO[7|;2dT<0@T3}CãD&XYZMH䏳x/?y h;M<)`=lTZdolh+OJVPwJ1`a,f$z7S.bϨB #!\J㩊VY:̓B] qY~o! 97mYG?&˝A+}QG濹uv6{d& LƓ^7Lx^daU5T*L@#m)sNeM IWI[N}f͔nzs!&ip@!{K N}M<&L@X 0]FepR`3l%4 l˘2ǃ-yjyiG1SRkםr|M-D{4\P-(JKOT&0:9R>?l:f*1AkCOԸ62ȟ+uG  O-ݻK3Z 6MNT+؆L?^'L'^ONFC\4<;I7#cR dyhc-p7d$C3q!Eh_G7-1p_|p#vwOgw9ܧA@p8w ƕ0Kcc7hΔ2/Lk׺tQ`!Q1 UeRggD[\[pF8+(Àə?w}ϙdjNQq8 ]ȤbWfqBɕ4VV (8_K%Ε6]>"dUE[~sFWTi-7n튐ĩbpuh >z$v0,]ʉ'Lk?R VkIg@s:VɒM^6dԳHa4zl+,<xa-U>~kmiHe tp˸[ r~(-)\tE~0o \B+ lO7|m ;\)> MHKpwnf_NGJFG 9:-/c-5x[P൚wԥ|mBlL+fgkH کJ22ӆkS)Q-v<s_4ʇR ^ݠ׋hWq~L)292 TX DumKH}@KF0&3 ͼLI`1:~RzXIB+T1>aD FoI'5ʇ(de+5r#U1iŖ9_i.`J ڔu"sA>g*'LjCg&}ylsPb}J|r8.絭V;L:C^e 1aK%]i4 E5@D$l/ZĈ4Z ߽ Lcֹ3ڣ;!prq@)"CR*#\z:q~<_zH$rpq1ni÷7ԍ& GuF;wSA$`racܮF$`dPoltĶ0W3ʛl]_D5gFRSJg6I>z?A謙W&8e:*@8*sNٶRhy.MyUjSul/0(@T@&3?@@.ԫBF>: cZHv=hBSv&3[LhJ>5V"TM-uw\$G"[0|&#uG:/i΃*5LزB9RN׭*х1}d Cv>t>5qnr-E;DXz:tf[f54ToV+E[5%(Q?~QfZ觴Ulԭ0O#e#at\$Px6< n'?'ω,<"hܝ^\[w٪q! ar,N8o\j)-8gfNr<Vzo][ YfrjaeJ~ 0ј@m=2]BXh]^{x@OmPfh0f&$iʝ/t[K=P>ͬ︀&o&LLZPp7R: w[ŀCʜ܂=T%R+,ߣ!m'\|] R%gU\  ǞX*N:҈&EsDQFBÖ+GfL*LO%,iA9|kkWGov\2Sp)5:h&Y#ye0e`;gts܏S_[8kQLX6U18 ߀~5]\\.f.:XQ[8~=gn&;dsĥ-]iE3 t)]H?%f6[YՔ&*˔p!{9Y9ૐ4zs S1)>KfS<+ 3sS8yk]w.;RaF[%RABlU5?"-F:rW //K%s#g"=oy3QC}?, 5Dȝ +0AJMp8P9 !Z|D܏˵%.1䘅S F&nQ5#7a"Or u>ZWCKY竘ڂ `sfϾ MU݂OQ辟¨3AW×trt3l0 TJC29m"@OExrx[ոMee8qmR ħlb8U@4Oena'RO0u(. 7cWwO=kJ=\:i"s{]G\KGIwwliwiͽDg0[LMf4spO# בS:?:O伓sϘ`%N23K-)L '~N-iZJb;)!]lÏ.|ipqTh~y;f6%L@!]ݳjX5NLٻDɚ 30C'W)ЏCWɮ!N"!n%)8;DXqL0\f(tc$ gx`)fgC)KFc;O~Ȗyq}l+QP2~M_Q_ BHrc$G:G.QzÌ)d0`GgZ;_et!/O5@+ (d/ty* G̶z @{m2-W.5xȵ/*%`j?\h/@qRV0` ILr!\Be=(^EKuH:_59JBU@*e\)ՂSi*p {:1-[4Nڤ@'sN6 &H4+  9?Y^b>H5_Kv=Ƕ|@hy$l?m͢y@ϪZ"td씾?7hs墉\^YC)`k] XJYL |4?Wv|K~l2Wgqf ̫sݳO̭O:+߬;i^VcLwGU 8 C {\mݶg&_6QU}ICCIJ96Vau",GagWiLXh1 Lu^2.o#A[#ml]}h>{~ȨT ?yyU.eZdjpS)01͎Ǽ9Yڄ'N_I4g)" FBl_i )ٗopM)[Eȳ󖼰3َr8ђY__y;75Yu_ 8U3g=njPT&GB6Mt@:_!F 26`$bm_(^g&. o2)Qv D[=䉞?$~f;/O`eLb {d-D9: XrӥAV1k}Y.}vQ{~#sԢyю mH#NX [1c+D>rcyP`}3_Te1(HX]>3{650ƭ ::n@f0RҬ)~\|彽?j.h #zt+ ]Չ/VIk"YRĄ,BNݮ!Kce}38n`znV`ǝeqkvIO >Ψ S"FEnǭ\XЦ|W&ŤL͡R>ehuJ$Zdwpͅq0e*?XbP ~̱R;,ad̠aZ#i',`H@NRPaeZ hyY~,&r' ?B^~سYF)bwmk)(vMӄТp@}=E+V t+"jEa-c`bDT[>oLM-mV'4ډN L]qFcqż;x ̸%.IC14}*Xc!@,6\6',Vn?(BQD*I0{6gnier5KP;W3& @;/b~ XԎ@(Hb?/$p1M9%q-cX*4עv9\0 ajR5XleiuLšwFO[oG X.5P)7N3I-ysf/$]s!-4Ppv#{- i? XVjio[_87QrjPyR3Ւ=}^ MDnW:xy^L-$NC"'.u<ǥ892;C^$<.#ŞS) ՔOJ2VxUwRF4r3hԈiIk|k*{#u|d2Ԋ>TnK{=P8~8lTPtu#K'η:jf%pWkєfC8qg]P|tVƌ)ʙ`-&I̮qypOki:YiSs48I jVtRqn;SE?D564]VVpmehDt9&(ϗNఞ^o%dCLe`8OM2>fY60(<xZM@͉)Oh}u\FҒNK<}қN0B48QR: h's;[U"4ߔJmɓskZto`5|Me< Xь@Ӣ, )\ix-(sF[6 cM eac z%cn܎Xwr5οM( A21l vg̵]~/ی\e?4v=T*b(/AGnRl"t_2;K>,FV!3f &A,u$"K4KfkU3[mm6v67__;0haS}v2; sƟ{$&eP[fϕ[W}2ZO8B4tG 9V$uhnװQJ y@<#e)QFFne>#V37/{JG#MK_>rX %e9+Mz5O/<\ʑ7OYİ!#i rɋ̰n;d=U~ʁ5oMH>P ie,ŚH8*t@l3]'VBc9l&$쨢=ǢS4!Wvp{!fg֔B?W@ꎞ}WS/ Bh&{4*} ɎY /leў!.6Z}3ZOUCK0bլͮ泇K2%Oqt]*$<Π`~@b]T Hm;l9%-osP7`M/"}xce-o;[)=Njfe-wڕKᔿ7נU yWԢjhٸn|L UF{,ԟN|ilm:cl9t7HF Ķ՗Vq2&}M@3haK;IP%En t;<&UコtHp!ԛj@Zцb왳3fW.[g0|eb" r-~5:0A5Xo%_c{3~G}UbƧbg,STm{<:NsuN@/f Fg9̦ի [m`(9[iR?sb%QD9x{WsNi8GUi+[<+CJ_C"/zA 'Ӛ&]9 ^zGؾ*鎼c 03)'*5''jbnRLl~N+9ٵnjN  Wz>DT #24"loqMm:}el͖,b*KME z%XD*Kd[V?}2zed78k)Eh2ŝ:=+.S"Z#jJ ?{)ejI.ŧ(ؖުwG1{FrC޳a'n@vVpcli֕\~nU'z g߅替o+@`2W=vSYFDܡ)T&l_4v.c_Ԏks;㾒owD9\Û-GE_zp3wU0 cn wn[Q}ǟl g 0zۅͱev|/mKDfW/m}%d!-vg?g{iAoLH,u%~{zJo_9tum)Sq()OnW_RDF 9fk+im[ML+$aH^+JQSmU{m<<;5ӵ6-A͡xQ|m%4{,Je3^FovȽ:O#FZ#GnԵN4;ڣ[1ŋ^v{ZlPl@kQ6N #D#R:`N[䇎 hhEM4M+vGS'qt|D '!UXPݷgh=fR#8Zq$ nK͒2 .Ha3 $|-m\܃XrHT[M6#s&UÙ|'P>Fe;Ѽ6ӳ T]F0Kuzc;Y\SU~ՀUg^|⪁[8 [3-*?LSFVxVLh4_͕֗ІnN0^,i: /++ۊ04:)EÑ(GVYj=gjT{%y39@5sRpDoNh۵C;0=YB$VaO88+L?2w9-PlṃJrjݙ>JSMc9Yvh~A׭"\nӆ^#[jOi V[; ,dg}[<9xw5 ʫW0#TWZȪ?%I2-#CW=?k}ܮK/32ߠי`hYĵadQNOGf0`SH 0W$qV3̋7jqRfs?P &rچSK?ՄQ0VGvi` (pۼ!)g/ORy,&+݀_,̤Q6ѳ$*nl *e,*rlj=kbŋkr*;JްKo3E^d܋UnuY!,z-v XjlC_n\o3sP TBb"F#ot;`!cұN_3u/"Snt z;٘e*XrRqڷnin슢dēgʺs-V $M537a|ޒ.ձPZA=(vK%0+ވlX5^y&XmMᵙ3RZz&Oz /p։"hD30R%,o6v1~+~<][&+Z^noACtg =P95ǝj),\uo6?%w4ۅ%rU?Jݩ c?]$yFʼngamqifzBhk.8ʶ0{|@ypF M)u Εڷ2BFyX| "#j^C$t&կ<.p-Oh\2FY 6 ~4E%z5ϳ5P+G`7μmB ս*dG⯀TwY.~A18>f:F[7YF(m(J v{nK$qxGZͤXՆÅ 3YLx)_l^4>ԅ$).#IR,Կ,Rѩ^4;~*C'ڶi,h37xH]gooAe6ֿ=#Y<(9E"kج?Ym^[eHmE._3wx٢zg_'59_@w Zi>RYuD|֓4MUݏ -!6T] ?|tOMX(z RnGnk7!+ED&qʼn)_3r7a& [C('Ɽ'G%Ce;דQݘxz. )_JnpĖpNoSH1'j@>(-U}Ci屩QS25x\vF|SCp /"DFt?{K7vj,mn@aD~nct-ܾ2*==MEhUZ@AnY&\DaO, FKb'ѿzhzGKmؓC)H i+)ywaI{/&$ V9Ƽxʳ{^ _͐|v4a*a4h*oЛUki&3Z ߍKT)! !c3PjKڛj%$V" Qޏ5Y~1VWFg jfxA$~LK*ѳ) 6^TzJhd ik;9[X@4n6V5 NXQb8_7ti40Aj qf}b a*&3LHwkt0WHe'ؖFݿ4߮ͅ\q6 MNg)VGQy&X@&I5[],~ه xW_@Bh/a3\Y^t+A? u0Rn+없zcFKWG"UI:LRƐD_*'ZTX1Q zG)ӳMϬ,V_H=BlscW\Nػ|\G8O8cc!ʩ^K#5-=iΌ^wab`ܻ,LF9 e٠G?#[Ul _$/b'85q]%J1mu1{rF`SQEMN9WMlU !pQ8*Iu>ܱ }SĎc a5;י-b.Pܩ`JzFtep'.Jx**\e&Spſۄr1kUӟ'6:[bW۽~nn߳Xiq?a?%Yj##eyHk&+Ū'N\U446KU7qL0zpJvÛ UcO]]aeيHm/شQ*F ׌z\ )ϹE=UVJys"+\9 }c=HdNE,vØZ6>e\T> +ZfdwAL5xX~MD_<[`9l{MG^\Aug=1,{+q FʬoЉ?]`YHx%!zeDCf"lb=E=ĭ^RWP.(zge[(zSL݋G Wg\rKx}/ƨ~z}(a; I=y:\/<L>gyc ?ol'U`>9&@tq3?`_?ޟcQW' K.,FqK~N RK9ҿr5]E,s=0 npeP;&$L^RBLAZ`Oy8f4 2_tBVM^᛬W(uwg!I+*XrБR}@cB]*Bv5ul64FwTB̏X?]&,R,# x'9KFީ "Ho={>~}tBQ4%D#6PM9cT&q9΍?($ jS _8^}ƧU [߷T]!g)mwAT!zAn Qm^h7鹨-Kn}^-5tD7Pk^-32[ I7\4%J:h֥LZh)<dL#G1+{d|I\=[G]FDS\#a(wL "pZ]cQn`Q`*& 0sG˅q4gMFƯ!XXȚ1˅?q8"3C3g(Qh) B6qR[9hpVH.3e};zoicpQヲ7n.'rzY%N%-ވB={ 3-"۾b A#M!3E c{+}'szt4"VJꊱf?}?9y| O78:"D`*spM0.U0NA [T['~,I'/Hv}`i}8Zzxc53{<Kwa_sq.b2^<Æ</˔p;5 3U׋o}|T`Z_u÷|7*9LzmY93Z$= ]TTHlz7cGqgۖm7ז] @u'rgve~0_ZS=)b~4ca-WCI9Kvl[t0;ˈbRp7B|Y`2rXJeF_wo`H BenK6f>GP.=iPWA(uX\ho/= #D9c V, 9{Dp'm5Ҙϛ}'m93lY @#qMIDBs0-W&wZlX"y+m%v'="/-=s&Kp _<(2t2,pʙ&dO-N7cL71f#=Y';'M!rg<'2%(ʥܞ"#̵g5T50?\$F^&4xq 5W#,ZnrPf˜fʂaL/P(FAH >f7{X1SRx"PXq_y6:b`?[=M: ϕVo ͜zcՁ~[aV"3򄾊?us%!.8.'XDA5bH%}Pe4!lv0w3sp #1HBG 8WwŏvQ%={nBKI RZ=H#6@i:|Gq{"\{6{d$㽟 $tCaߏ/ߘ-/ Χ9,g^p,g9;3JkB Obmde\u#2- tJU#) 2$4{]!=ؤ!Q>uíC D]*vuDbة;&\7=?<d,j>*U K_w-Pk5 4-Y vLurj!#=_c>iĪstL?{d@pg!SV1c>34d 3\C}-M(ዝPL-icP\GϱwbAf_s;˷WcA1&t4bVu))1JPV€JՉ*Q2Dbo&t;1ȄVg7[׆-7vK{xqWGD:4ȝB $ KsGgguTE{I٨%jcF 8G _%62c1*tiVb䍉WCV^* J)Bq0AZ9ͺe=xq+/䆻A Zk2'g B%Bn'b#;=ploWmYťфf9D*W)2L2_`s!Qwq=Lo>Dk.Ɓ^׾?O5a? z dzdT2G@kN ⣠w ~OĹJxvtn [Kf&pK$L\Ly Gt!) X+|.PV⚚iO/+v}A<;$^?0{ZyaS (:aD /8ҎcMOOɺU4 Pe'ut̾R.*[V*B4}!cyJ1Sb^.LS Ň  VRiWX4%=Xm4xl]:5Ew\ߴcx zm_dC.]< D <Uhd'wEp*`1"#`]Y"нjSk[ҵer24xh0m~?Pdt/ dP{  yjCz[{O<Xip0`jAT[7Z>8^#;;RTrRK _%x"9)^Ʉ{-oY%{^uy$|$!Hg7D<ٌ'PqtbR-tZg _W =J-ՐoD"HJ91mdS6.Z gPS]Q6!+[baR>$GIw|߄.s1(`p^=W|(lH0[$0JC^hLWz>pw(0_*.$ۇ0eγ\DQB-H3 ԤX)x[|HQR>튁.vr T #C'\ !<Ӽ0gI,6CtJ$z:O;.זm*# OAI_1ŽM]]j{8+~E5᢫% \f~vqE?9U^g/Ab j`41Yn?JˌqC@H`"n̞ 9Eu;Pպ̀snb"0UɿO3oJ)\l]Obk7we͟>TW}sțL&gl YP_q?L 샙zS` o3#7\5#,f;ȳ-WQ CFe/h5D4ا>wԭ)iZc%S&ˮ )jyrQ @c6hX"Be\MbU`+' ),s`pM?X4CgEɓmlY3ͦ  _ BP"״SO} Ȣ6)0=:iNo^4 $̔U 9ݗGdN\(KuI̥B7qB-੏7%i\u[&x})łj9_EYռ||G)Z#ic4ea*@TC`56nSc u=OWd2)#xZI,G871WϔvM=W%7mC$ $oK| ES *$fx31$Cƕ\?hlq:'c-Gjj6DbZ::Ϣq ezuӇ(4J2@r5ܓuHTۅ(Hr.s Br @ ւ0\WXq(rþ*g^ŧy_OvZLd I=B3X$Lo.̋)9t=.fo++BqԓҾ>\N}Fu=њBt'ƽ^KHLz؆Saߟ-Bz$JS=?\b{>  ~Vꃥ3B^U,g cEB@hmmAKsܻTYJ9ZFXhWE_ րcEqd׷$RPЇ:g\s]WЕGuIm&{EGo'=<].WOZCEM?&6m@BGsWuqy Xt2¶ ;%)+ ۼY$@aM!9:\0!cb[ K(ng3;n1-%V"@4^A2c h dvr2Zզ6F<}7Ȳ:;TaZ!15]ޛV<"_3[/_c\+zl#RN\ۮ0lScv NT@S&(hS;qU\V4_l\_lT bBBNWN6ы( X5@Dz9\R֛@mW *ϩit$\TﶟbpkDá4=b/עr&ǀ.xIJE %=V73 :uDtŻâޮol&㑞mg~fןk 99ngdhw)gݶb n`|-ֶ[n.XYp_)DDV)yj,Ny> { 0(oii, 04+fL%-f:~8zDjt˸MC>M:X"hMm(R:ə(2ZvB8%˶JU(O`SE?Mw5 :F&QS`.g;w[Ƙ뼜 @ucDHQ'+U1fϔ 90R!1"c-ݒ% l^S!7"0XR '+Gme6uB<{9V^=+uFe ڃ*"Eۭ'gc .\Y=RR\AF .O%6<)g*FƫFy^C7 yႁ}[nGDOK 3S+V4͗^ J,모$﫳 옸ajMH[Aj%&Y;0;WI+~7_i,e}֗#ǟ\=]euXNdV_vS|\ں&S Њs  gXJ*bw ;HgԘb|~ȿdd93-,?)$A:_dyԆXX$('-`}YS 8G.ءf1X0Y*Y-(j^5w_R*塾vٺPs:#dfƉNND T-4*8Wl|~Uc.~7)t˩ZCs *Iў ?lW[Vb3|,GDQwk-^N P[_S|8ߙ@=k>2;˞(Q 85N٘Ʃsm ﲟ>6[)21yi*gg8Jh,?m-(&}p+T~YXLVqD9w+8!_b:#8IH1su2cFD@W6'4Al%]' ̺I\NW0#Q8ѦiEJ[?Fx烸[^JwF3poU_M1O_1.WJ,+m˹jS D/箤'bo7ڢ_jAk5ᅚZ` Vc" Hv!yhY(N8\$ i( csg11WC&g;7T{8z`d} sƇOvWsN b?o)ʭSYWDL /f_ j~ P::-!NjN^h"M'̋|>&ӎXc΢fs;'L&&D|), sܝfO-N!爽4 Gwj 2Į?Fe˧<~%Ais_ԠU/:>tX} *ROf筈lzq;dzק};x]ZFyfO ͌-XQ dx±C=ռ0wA%p0"4ݙ;C2 .JѸsT> ]G,e?8~-'dwJ+#H2Ӭz0`:VX-(}{ odIgI5aG_ b^&U~dHf͞WoNl]?h#7UpF|.^ wq܄sq$[Cݪ*#N* Q ~Z;!'Tuk/&a;b6}P*RKfS&0Æ|^QYoçE#+'n; aGɽ׽s@),`S DݕKDE:%iB +ܲ@TNU ì_b]8V*7Ъ=x(pX %I+{"InCɄBo1a{HGS1KT3 @:dn~$?AvrI| [P(ϗN}o`!v\βv+hiLMQ:/z!C WޠiڰF!G09e,A?KKFHt+YAdޕnJ_}yh;V7Jm{̽2` &! yZ6X9"9pswiH^dI -ܟq3X>D ?;bLQcO2QuV=oL4EQM;+7]a!k~vc3 8xoZa\ή^#nUm~H)u34hep6:`Fc^v-Q-b>tWK-ah}Δ<@4X6-`Lb3Xž/$@M*u24gɺʯT3<~cyڿ-j j9{t`:3߷ӝ<F6~LL+NQ$-s 3qr45b!*F:_6 \sΜcqֈ$(*V%GH &ޫdE#0 L&pҘ7 .rcliDߜ WB7`UQ?WOIH1,kx`U*~F4VjV'S:* #z0Ұ[*+p ,E'7Z]W]oԙWčh/NQ7O[!w}$H?=P N1(DWTA1R&e.:~oOW)_^`ZzsMz yPzSt̺>ךK'mZ;{$GQ]pƋfꁟ;A&o?k0nj`޼\uwbo{0:0CWg[^/ ﮍͯixb9@YpW}rzZ_Do|*awH$4]B )XN ӣn *w3!~.5b]I"%aLyR0A {\n ܀j M{'lܒp8,˹29)(ls4M1jv<ڄe48B|fHoIm}!~Hz`kZkqœ}bt˟ rlUKzxngkA^-D/[zhα#\-v&ږ&!::TaY]dS޸[fZ^B83)QOz߅ZT I@v_(?;~lsD;oAŀ9_d @U\\= D'}_̢%+fɭRN&plX]]UoO*oI)3}F;쇪KJ67`ϳ?ኴ`[;%2Z`laA hJoAaԿf[,BrIp#~s6We I|d~՚sLo?\״XAufqw6 ݠFP`t&pH*ɚrEH6H3F 2kqdKx#9uݺWY})S|̈́;Z/+P٩j/!J,5{\wI7}YVmg bM5H.LE¥alxfnlbF]4l2#!ucHƞ 3^%Yбf|;N٦{ .kd M433M @}9j`L o64IJ^ɆO r xŠ"L4\aT:e|PƑȜ|q'Y]b8Si Ȫ?MD\C8)% ܔ zp]Q5NeȪ!kk`"c~M=0| f$C8ܫQs 4ۜ$@ d+ [uS)$ꠥ8azJל2v_P:Z~yʹF86 = Uy*KUQ9#=k}Go+ @g7Gtm6u)jC}b!>Lc %-4==g3$- da R/a%cZkO7a2؋|p%_s[~/Jp6 X.hB#/`6$՟̐H&E~SK0 -$f_V6תTw6{ z2BldCLK/)ߚOv Q.XjthQ}H [v܍3VvXK̞ kٶU)t5:VYN1F :xG5ogˋ`To4v*tÅ~#19$'>}pPle&\B#p6km.,;RCaFGh5zf2d^ 6{#7]x9%`vv?e.@O- .{D){uei@u9>_|?p (ر<RiGarc8W6upjnȽ_4!oD1Z: & !)ݬP8h T- 8"4vjzm u&T-P/<2Ð3"Ds`$N k9Z{@<,Rx.Ӈe xPe2@«=x6!Zj\PI.IdPI$ IbaoXuhX OI +0uB>q#Ǔ5ݮ,OwUVUN}C8xP 8d|oUڡ7u7R#vfayry|编]etlV(hb]`4'nfhSA&DZ (P Pk⊝0亝12qwݛb~g#wŘcH*IO|xS0˯~`:=HͰhTË)iOAN(e=O|oa#$IJ|NrdcmF##6WE嫼a W6r:PB~eC3TK AĄ7+j6&þSW j1s]TKy[K/~IGhƽ)v%-gS\O's]oIy/N? HsFsY}#H.0HF Oi{+IDDԹMa=܆Is1ʾ%v4Vl7`@$;LڷZX S*H\l۸bilL_#g+y]>ً~QKoEC@jwpo#Z G2'߄B sFg pk5es2tLXhڴKYӲg5 a_UhJzxKXC mg3X&xװMR7E{fؾ˺2jmu = KZ4/KJdA ]#ܯ^=bntBZ^u*OJ֠6cFտƧa圙Y~жN '%9;~ǒ1Oq d>h1@ ZCKw {[#BMy/k9F#=XueKNrǑLO~cܼcǽz ,CL<LdXSJB`&n3@@/{6Y.f ,`Rp|zF[Il"NT,]CT*<u#gM įNuT?fJ (41KA*ASze>IīZї#Q$Y ڧ&x΂lL,BM{=`8'$)x2Dݷf݂gDeQqk|9 /0j=L< f?˗/۽V y'[z@eZZT=  $P&i0̤.ݣK?>o`r /E$"SܱIqقՇOHLy@ǹ$+P*#ErS iFcF_5lID6I,! {  k̺LV-ͭ/Ah{>7$VRC>Vce{qLS?MaA7!A(Sq(8k.2|;="RާV֬vԾy`J0&v{DwskAx^ȏp hlҾH\ ah1ޱI YYO@K>r1fz3Į&1xlNB2IcZō'jndDNwwd- I:йr)ҫбY%BTn" HqP"s%*>8xftz|< nK>A@YV=<A@)!Zq coMәm0e]Jl7,s3

p?$3Akl"rMk7nH[ZPXŵVKgVX@je!A8 'XNy:b72QdCӲΩg#G/' ^`hlA,<=zv̾ϾDvޠu)>S\Fm>dR|Fg4\JﶈQ%THPL{Q#vdC6=;%8vJ#qJfU[H)~%cSt {=d69#Nqn_)6 sdiMv)Z1\f9,bB Ԋ; +->򆎏Kv(#:ͱ{1DZYF-79"k$q:7MU;m+M/AOKiW70CCkr:~ W$n1۸!'䨥qEF G<+҆&?$i Uzǻ9*WN_5ܘ'G,þ K]w~RåS,Ptw_;+ئLD"DvoVKŮQ9DX+RKHsC2=)B,&&Q 0DYͫ7%I̅ 0IU*~Y&.3n Б{`tv̖!剶%WxaO6@.m'`N=y`Hhʪ޲W\CI>QTPPrY:;C308z!ޠNn0l+B0ҎHD+@eSR7 Ħ^%:aH462 pCf+dCa1}C yDt>ܐ%7Н~zrG:h*$ƚ;YPA)_o2wlh,z|j[@9:&~m,rŞ#mTEa~C%}m~;!0qp6; k DjGD\tN2Jh}-몗X,h~ξ$rtB_#8٪|E'eԫy.$?.Dyz2[ήߖn2"8_^YҭZ:KaQA0U+ư:UFq_/]v@e%>;y+32ZP%VOt؍LJ`F_|,JEi-BՒtwAM#iVav,h&}N4=&[SJ]+ʌ8} &[(DNw"D)hmߟK+Y5bZ(< RAo P4I1d%i,+}%eArDvXGl3Am*]3-OF߻`4ScNYv-l-o E7v ՚M%yS\ ['ERyz Xn46>zFְQvi.Q`%LUG3TWIoZ a̺rRb~1%6"ȜdbSw>C%fpr_ЪLc%fn(,ll [vu􈃚AG';m3KhXsLA˅jQD m":c p`2:"2]r 4N0Μgz_lc%݂[ӗ`ЦsZWRT6I w [IgS+5J;̡΂^_}j^W)M uO2C-8\,d1b%(Brh <%%] H<<(>%<|YFK+c^yFGTW7c#'%t3Rژ.|%lxׁY05|Ɛ|b*uJvڈ rBROE60CWDbz9 e=ש򫢁Q!BCT}snI).\-T\#)8+r^%=C(+0^5z748TVyxܛi_z9f()1H8&eBz/_KI/ǯ`z+qC0Ec{P.3$/qe0 İW[gKrRFu]$} eQ> FTM 쁎\ u2BCcB A ~z% ۴vJM.xFhR"5+ Wsk-(2z21Mމ%eJw,,!УR wP6̼>##^$uh5Jo&]gij2)أQ84{Z7Grer2e1Kjp~}#͝ʅvSB(bD):ɂ5`b7K@UDQzⲈd?SXj6;d7dsŁiRQbgtٖ۾F;#{h6EQ1ܽi)q>~gs_r _Q$B,Ŭh2WM\kN_ ՖGF;(KQձ BeM#)֗7}dZCOm*pv c.%;R3Q44S~>!R/EoāU/2_cT񦅡8z7IiCuiJ1H2͸<>,Ч [)(4)ٍ]OW0]3H~M*t+ V2G/ 1 C6Xr?41 S.0SK:6E]Lm0qZoь&U  3԰r]:O`I 4L펞21Ŋ  a")0cjc #k?f$Zղ$"9tjY9=0eYtiĪރD%- |歋6xa%%(kUOoreFmԚۗVYK:6L> WhKީc9R_pUDzd>A+mBf { *3(fnfEʵveuLa9ʹ9͏M=7J0³ "zx{EER)ivr>5:lɅזAvo9Et6V|#J&&y9(`:%&̈́o c]6@O'<=p+;/lɯhTS_; ;, pza&q 7^*qZ]LM)E^Q9\dI|8W#A1yL/l#K'XV0[@r=yބ[bBf[Ɠ!}HZySHWR6E'yaB3 'A7.m+si CWF bvHޠIInmq*ȁmbߢjt2rQLchmGuBջ#Nٓv|߇fQgF٦sI8߰׀$ޢEG1.d_/<9ƣydkq7mkU:iyT-Je'@%%W牕-ޒ%5amZ=U җ~-l2KSEU@ϖ>Rd42 zU#e )#8'aQ&+ /0R5 >DY~9&P_'42^jx+kh8%r%OGx[ 8B#6F+wȓc5l>HAidSÇw==dE;[ LŃ5eGOz'f 1TyÑO  NT: e 5)  {vsQ3?&9bA`Hw[CCxn18n_]i[|:t.#k,韰L=9H.y0]'4퇭`m61~oTL/+7Fz'&IzUO:'G* jO8o tQ MX˘,9NR`B(}W@b(^cbyas>w#h%xˊ\aB8ŽkL &dГaf$EU29/W8..N~WviBgsMp,y{̢e4Ra7TOa Jc%%gm8)3>lTF0P6 Iz|Kc# ^:~G٥O:kS,tnVo΂HOfniT-]HYbpz[M)'(҂AJfY֧wuse]$RɅ+??JinHo԰iL>&9*C\3'A,1RnwA 0.Uy64 cId7`66XwK'?o뻭a"}z* P͗1^-ŽV )Rԧ?BRWZR\[kZsv̇O*k5Ld/<6NM(@Jo}!-. \`"`E{lw:l씣ū7T7(\Zr(~ZzJ;EtXLㆈ9xInETboC4-dd9wo%DK ľnQk;Osi0Zv?[W_!̐!QN߁i{Ref3yJ ^ =k>Rr;JU)& uRJ^<!jSt}.^Y+|oJۧ 9+K(H8WE+SBPf TUpGT׌z&sx18m A7V7Hհ1$[Emq=8NߠC~֋X %qהPQ]޹7*¡NP=CMQ aX6꼿jt2m}@4㌸zt1Dʟ/&_Ju0yʼnMߓLfY~.nL2r}EV^1QHW-;8}}r׵ۻe0l'ڣ CޟoVkf JrnM@rpvĿ\Ў]Ɍ\eI{UcqA6Q&lʋxV`|NuZ#}E CqЖsQTgI?!s9GZd7^]|qށvVΠio$6N0m2F|KPGW)ɘ,O_to>E[`СnQ~qsGJ6S$lY!`wgOGA8dqhF52oe%-56dT}y<y#]R`ڝQB_ܞxUx $0ǛޔEҧj}ls&C¬QFG{`(+}sa9m(stsђyDSȑ^ ◀"B;c>ϳj{ِ6lB֫o:aqTBYCV~<"2UP)$jFJZw7ڌ4t a}s `⠙= cGb78M(^Q7+`m^L!kub?6Z,5Zq2p?Yf4tذkԠ2dW.{X?`p2glx߾Cp;m?u'U~9,.h{;;E? AKؗ5˯I60/.\Znm!=?0әbS#@} pHD 6ac땏wz`Y ͤr6n RPfHrMS19к<&y뭷\ c'*q{Y`V ۊd/&S0YPO3j.IQ5 sg&,RQj::o*2AgPUVr{3u[4B W^71}6!!au6q뾡;8^a4 ذs +#L.HH2Aȯ)_R,< $q KKSc=,GU<գRX `&t- ?z[`] eZ>rw& iY@:#Qs&=R< 32϶Nf>u0?LJ HQWpUKpkg-^dHߢۉx:5Sa^;H2G#<.5PE9#oA?'Rkˑ@]P}39a), I%1[.Rʒ4aw^F0|1hL !t+Eݾ4~ m{HU$4+̎.Vx@M*HN)93;Jh.*'C 4u7&ҳbIQ `ٳIUo@?8!uh-D-=m|e`fx&S+ȃCv %@csYVUU"RjIRb"Iг5 ifOU_VAx-Vq=R~WC5¹hl,' Ql#dX+sS^=ȑLpF3Z@GE ՠ# rM_0X&bvm&4pCwD!fw3X7 k5?D*,␁=fmAUS?r=Ѓ[hkLL[>d U1%$vSv\NZKfOV EqӕiG{[F4HyXpւZ,ѼxAqkyiԍFN/"PreႳpjIلA{c~\ek5J3>A7Z+t+xmAq\ZǠ)\Hs,a>jէl:'me/ )9牙D#,b 抎aȸ%@[R4{>Ee?^b É R\j728'6c^@V Mf00Ke ,ĊxWy`Uqv=ʲ$m>4M!+ɺdsȊ~4/~:ڒ%RL>*xwȖUʎ7ӽJ!"b֤DԆ7C/d`PyۚBt9vaXJYl QiF0n䂷r榵8roRBa#]kv>0FFugs 0U>g3{K#| wGg$~Ow[|$LVv/g1 Lp4KU9䔣N3IBwaFk<V#EH IvJX~o_c&Kb=Tr L:MEk!"pK;s(Kv˓OeYTp'Ezrw9&^mQ ⥦vJ-gPhQVsY` Mu,Uqؖ䎕崝_%\ CXB] <>u2 }j8Ă:>c!8/!9f\wϐvu槷Ke ]"}N`TtjPA bʟn,E{'mO2X vF̸M^lGK*ʿ"ۉo_ Ŀ=Ӱ|SWKP$'<D垕CxCnieH<GP/6OP<.=g7p5b>)b*GF}1ڌYٶ&[yom@cּw~jnbxh ۪u>j>\~;y Y/ON|sVR{[tOn `1UVj ,#\k}1 + }jdžQ2Xϕh#p柍 Z񷏘q2~p[9 h!~zֿI ~.ڶD=TXue%?.N { gM3χxoi+`xG!rF$f>:O9ɞ^Yi.&|k,GEѡ]b"Ŧ' _KO1INF3n6Jr𢔐u$ Hy&N;>(f@'xI?9 tbLk6 ĚEwVL0=QrPeL>Sl>b밶ɢr89caD䳥~@ >1u5AJʒRŅx؋9¸q KE6/FVv*G%juT'9K4 m5AG#y)7UL]]<)+( G''jp 21)O$ %1w.H,0w&ΐ>ܙcRtaad1#F$7]KJu~;cvK<ǖ(~6 zTtVA_IL2±۫5~f4Bv<< бvrhp.ǥK,Oʁ%p+|q.}Nv<@DNܪ[s2°I/?>kH3r ub6 x(lI*>8 .D&Xq%<dبn7+Ȭ*="QΒLFvT>ʶbB|쵣6 x*/Y^Dh$4;1D0Ԏf(ɿ5$ !U?&ǎTGpSN&؁g0;|" mI%ȴۋ*J\D2aAmm4Kߓxq` `@w "@"K/\$aMb;IZr3117oW0T; k|"# VW kxQ 5lqT2" 1t#Yqm}V.k SӦRMPU+l3N< /\kO"zNoe3h%7ѩŗ  > D{lBIaǦQxC=@G A[CSI^ClP3+sǐq 5u@B|L"PsVO*Kc2%Q»D@l vW2p1k y<谂{{ l5\QRM`eYZ, )ӷc|&I\61%P&wbAs5~=0,tb;O /ɦQ`߇2Yl=Kj_q&{i0 D'ϫ4CL[FBׇK@E6+1<сSU@y5?Q5hTO h,u=<ӼHHlZt-7k3 A+9܍˘T\eD d|ţ8+Cb"ॵm4Ğ֔QZhPe⧲"W e 8#?kT2K.u8@1l1m];*J]]&*P_=iJY~ZԿё֝VN:}N{ /DHg}ᆼp1&W&0Ͼbj4$U"8mW$UGQP;pWDm .qB ޞUE o4Qc7WD䀬 :G|cvP9dJGj:\Rؤ1ܒX嘝! \08PMD,D!3ֲ`"5W+pqC)xK~9A`ir}<6եES4=:brv`Y[=k8W/kl~2f7d|9r1MY7.֑($jmX"^au5CэM{!26č$o2ELʸ'F-$`v ]xz2l 4 *1qRo!kaDpM9x;n(I֧o"r;tq|Jh,N+ˉĦvq}*ȄH,h{K~XuY 1َYӋ]-24ܔ!J|'/5 1g{vn] e][}h@.V)vE&j$(~ +19NkQ8,U+7)QXa7T6Pz-BP\ s W1+U?cqRp4ƭE%y?aEM~GV=v3R]xOwvjEU^zAf V҆sF֕L olYͬDL HsK\}.KpC0@>ݿEazmC5gZRazU-&)xR=ip?Sȼ6vD-Bhzx0g}y( QZG }"!Q  u.E0`|d>7+!BKKZMyQAOw.~/WG;0G[F}YAP|~ Bf(l;, ~= Vc] t ̴ 8/\fWf[^|c0:o]}_'dGDL/p~mBi20'9 '\*î[dm tkGjsao`dn}#< juYCpDPGp1 -chR:7:bh$=2OvEj0Im*{c=}<͑RR Я%!o. nҸK zRįMt{!BmT%ruh _T4C/{|l~ lzG1M,_Wf25TM:N o @7ahGCiGk#tW avVn ^i-/4 l@@nXE ͓|C(2@]0ԛ}J6bғ2W:g쀱p.Q|$YMjZe(Y߅' )e>lhF@dЦf.E .>ReE+P_v TJ$vk`fʄ86^%!o#i{Cmqݚ(1;YE5&]YCpC"eQUǷ͍CW:?$ GlWVd`^.ěXoCuJ$TsNJ-g}~jAsj2<`.CMAswn% X#65`tp!6_˦37Tu"99#bU7om1qGVc| G>;b7I ]U"]]EdI0/ w=r,/J$9B wV<'P[a_GM \z327O_^5KÌRN+jk5-V$j\BHD#[c;k("( @ ]]k1@=~$dPIfRe~hn8GUPM@Tm ,nd% DmWڶ- ^#Sƛ* e0Яʖ; 5Kh)' c'c z=ܢq|<}8Gth`1Szd!gtS6yXhEG< 6$IrPl7p"nHӔ*aRNjφ\Hʳ=w Bj<;u5D1mENjs~u븩GC?3vn KG>!hBk&לn/Q~ t~DH=+NYGVFsH`aAF: ޕ%$nәd)v7CA &8iY!yʬ!`Hqyْ K꫔VoARCs`ϖ4vEbVLݐ/{$ڎ'=4nhF}ͺ⽗reL0\Ėis$0Vfx}8"עxI #X@VfGةI`EYԛJ_ԞA1링\=r9ڸJc  Z" ]G[)W| q^t!oi.Wxlȅ'ɑ#*BD$ٴ.CD6h Z24+V\+AZ|sfEFb "i%9gsO64S>8E;e3HL e-Qo*vǺUx&}{N֯E9wկlC]HٜH<0(rOXQT)#!#~ 8՜˺$&$ټL8Pg䊣dbfF)bii;R;ZR: W@ltH%9`x:9X#_q=qa^S/55NP5J% *3y _1cwƋC艳6z"oVWpi!A#^ؓ8@Ч__ǞCyߑS%GblCwH %Cb琼?Z 2 `7D粈`9`U6=0P1soo38񘝋~&g*hA.iF5ep;!N,1/h6V9JE\J듋lhst;tSx]QljjoIHiARꈭitĚ-TW) ylDksooo5Z/5O%⥁DwyrnC;GIF}s U! ǣz+0fm8| lbj@s9>I8) n>>'(9SQOQ'@^ɓ: @镯t hqKbB =Eꠗp,z!ƇoGx#ȈP8#72IJlxv ORvc]園e!]S~b&T Fj(fEMn~ڃCb]4:}LgY M3tEShd+-СnƄmS#. # ,`< Yjsa_w&_ӈMh:20?k.)k Ut}iЄNuW5vmLP4(Vb_TWхvw ݴD@YBVZl&V6p!+my8w+ǭ M2Va#e: E#VMwu`p`¥䀝126HNׯ 8̢@Sf9X{p75V K|ytS& bg H,# η993ϛ?e9}/E=h IQ8p؅SN˄v8=mc`PRT3 Vg|k⦟jPDN|ubkKP;f..`pWXAM~˵tOj}ap1+R0NM-pؿ#sP㙊Gc'žOiIH#s/1>pL应:2,~tY\OC{gBF m`?Z#f[ y::JNH%BۛuJEټ V5Z[dQ+$rFAI}{FD@]co  })+Sc9R>mmBBg wb3hdSRH݈̄:xl#1dfs*XLb ~dDC#:[iji56*cNYzzH\a&W<9{GqLH7$͙N}.kyrƉHUŵX Һc[e@$~CD/j(u٪v]4SWx(үv]3 gKSWaʥjЂ+ɖAp Gf91XF|Ry-qԮ.u2e%xtJzR!oǧF2ZZh?['>tmBνq/H䃄w jTw`s 0i}#/'GY<0H7ҦH" ԾOA 8I2Yp +PL9 چER϶U`KJqwG+quN4/$T<㓠5o2(ɂHhĴ?\+ҟڬT. lak1goC.Ph[G!@gjX/P;2zyʗƔU|!"[NΘg<;xfPJMEhKu=2aVK.ū2i˱&IZ_D:r@fXǻ7ŀϘ7ȖНdbNNBqE>PyOx ㎫,$WsTXPqQBL{9,#6xχK8T!3Ы:K(jk%R㢐Q&d[T}Ҍ59[ D'ʥȠҼDV-FV`#sS]Ļ]ژ9liyŢjž1 PsvG=%(/#ʿTnU˝i";$!YOsc{<7,<6q& 06Pr;4/E2B0ѕx>ӎ t[qO; 3G.㌾/n{Iˍcyg=㕑=@ID赋-yBx<q\nk a=P8_hC%:r$  2vm5|QҼ~ص`V6_CN~b@(_w" %g \Ū\%XlZBs U*JnmX#Kv7 mT|Pc .lGz}сf=8+U$I<^sH8ܕFogAIϜ&ࣼfg%7+uҝQ&_C%3KBxf2!O0C^'AE}Kh[ؚKҿVW5?bx#sSxL#=vrWQ'*rW)RhBof鍹h(7Z N+%WcQ)߻6Y:LmlA!ۤ33kE [RAxܸASYq܌MwMLuu*CKӻl;"3 mW :vf.EѢ&eمđ g!ywg%jaJle'͘\ՠ[Rl$@8Hb[O?OҷHҟ"h'X#A-.ͺ=3ZTMh#gjcI]@[N×LrnlnIO]cҾ[#Ph `R\78,L jgmFqβ|7Ŗ%\HFN'o;SG L[ 3{pP%*?i>+4+}c',)d,WuPX-CRA {6Hz眷Mu:w`+̻X&gG%"NC5#0`Px44=x<0c7>mC"GHނ:.>I5]L` 8jm{IJ>S6iRNXI[#£Lڞ ѾbDu솰<4qc%cTVCof%y~KAD&1bg15+#LvSl!}ʠᔾNE>ɤv?7Ϙɛi~cvS06i >hQIys_==St\=! B>Gt\k|קzÐA d dD`xL1Z8=!jBt#Ab lmPΣp+lAx[EU%}agM^w Ȭ7J +!pUQCS\AJϩd5_`Uͨ)JPMӐ|{0Z~7Eon*e$/#̞e%]k 2pnl^0z|_VJƄ`s4gBJ32<7%>_f1t!l-T/2#& rb>49Rn{Xi:flM(.낶ͱ.cVk_ vT',+a AO3nuԲS̀ߚfe>:gEɸG|x5)z6 a.sk!n̡Pil 귽hhmB%D Vjmg/ M6󐕹znԱËnln~>}mIR{ulXK=Ր8ʊSI\*q!wE^8WYaoL~5VDSbϠ`w&2`msE5Ry?wuAB[Tj?.ilN^Ġ/hz,u:Ow$AL6-Cgw6~.^g5~`4y`ʉ8)(V #D v ]q$mWfQ>nh1w+4pZ1 1NYDA- JuЮ (T_} ?B]>NZnRa~̗֕morRy<=Y:f~{Z6%x" N@d)3^$|8}=9"T ZP0vPo5g-S3"q1yՆ?< ?>s4nAʢ9WtO\GtEJM}_=6dи˜hyeZ4A޸ډ'LJ1QlV;ht;FTAxдC%Ok`SEzI8A(z$)< :XL4F(mzc7L+NtD>\!priڥ~ȉ=3{jh+4r*.\z۩@ԻC (b,[M6fxkKܵiXKf;75zf 4Ib0웙uoOfMN;X .D}`C 5`Pةhe7R6~ܙm)MTu1 Q>2Ǧʧ]Tp=ޠq!dݷ%XFZ+d' ݸ3势_R4/s%UЊp$? %>7m~HZ%-o(cܴKDB\5)"%?Ӣ?=U T2(!YpU&6ilpʵSkAA"M$$Px[j^PxZ\$܋w@ߐoIJYnզn0u%a2ckJ5E7>tG🞢% qblr6$-ciB2 Yz/EkǔAJ^dn50}_)6f.-k&a#Mqvt4hhRi+X>rCt|I1we ;!2e0S$FfIBdZ[[cf 9@T62e|5HCqJpU XX)di{5_tb4zpTSX"ͣRdi8Ҕ s^ٸUhaGe?Zpv_=ʦX?[DE3!æwwHISoa FyQ` Eh z ;2.} nI$QnLĕ%rI.hI a7sޭ(=0 C~ܔ2 #ˊ[+v3ڣ׭!߬Xqx'^+ P)s`HK0 ҿ;:|ry-٬CpD y1w^s*Xaek S %1Q韌vP]2bs@h$HNS.N*ڑ5\@X7ח[u/G#Kk& Pr#Q!ʑf܄O,qzDa*>:i^=K[]V.܇uAYһ"]'5oyfx+ ;2J8C{IsD솃ULLf6,Y ]K=]ki%*gM-!ʚ{܌-U#ǭF>J_}3JH;&Ħ'`PL-aBgpw[TYm0I\DޚЏR7| VIӻ4%Oҫ7ywvUY5C&ePy/a^_P}TvC_'p” T$֩*I:f.g1Q3q :3Lq&:ژ+ߎ$.s})8po埠w̓,('W 7&*.pL){7 gLk2oH:3adXF2NF`ᘻsg}@B+i/Ԍ㛘"(M鹗 v$u{ N,ؠJO abUZ!?dLAP1;TA, FTa D0hτS씉TH򰐺nbEK92) qwOW/ęeV]wuu.LqMIPpun$7tm </kg ;E@Z )j+ٛn ̘vGs;+by#u̝z?h+@PJW{U|7O?97x5]J,E:0πtç3cƣn>./aaHJr#[T:?ûZ,^DdCw6\Z;>h(xOeO 5s'v꧘'o7L^1Wbwt؅JG! lLvQMEjkO4N|A#wU:*m<I||C8J<4%s".I]s<*hzT$AR4[U498u'F-6 bij=$b̕ + ӱT13(*yS:(IeGˆZe]@xF=Zx@,߄҉5W~;{mH(g)`7䄑B{0_rH 9UUlh%Ceѧg٘Z'-j,?N#LaUW3[X^_x<9XI} t5UYAB>)\TuJ^WExn)T]X7I* Q_'r;/ئ,A|w0{1{ I( H҉aC2%"W0OE~,H~x Um^xP+妰Ea?tT SZ+IeaEFLc^5MorOT-#ł,OZqDsWbdӆ3}^,n;+ dV\@Bˆ9-ct7{.%e{W;xD@~%b_;B]\Pq%դ] Ǎ Gw'c_3fGli0T4-U*UnH(7{\v Xdoe!3$ 5~ aq2!TE2tQCcX[KJVbl,?8NTSQJ LxB]S_R\u, Rd0}X@%9nA*)Nܔ>|7-_MU`X)MecZ 4i9%N &LW M}#pZe/&;̡}BP6B(;Eg%&Gd>9uU:9Uiu_?h/ Y&H׏nB/Mg~(9s\ws%fz@$dy, nYq# I]\]=AlCD@l)XU@^lw@c*l u+ͻ,2 7?!h3ԝKi0ڢi!iINO/K462fj~:ڞOϔ%-lWSUnf,`gc_1TnR:sj|2p'0±TeU3.Ms蹣ˈ(hs1 T@!?}ȗb1ܛꒂk`dcH64&1.5//UPYclr}pX>7#wpw{hi>>QfG駄`'7Yer4cWwXjMe[=nA值zlyձ_$ kZ/Ev}?j3ϧ6-1/$9:w@BKxV^BD%f/['[=;7~fy(MlxN7\YFDD }-h* P2Sb`&3UkW  `w6N3o@DV(XnS\6w\蛘ՖU?5m41d1#M:'1&[!k䝪{ Cf f^ z+wjVkvdJC S{QҨlb=Dkm$ -;!({ܥe%r= YnUV7"O C@>S6 9\ %섇^/߂oM)Nph:IjsM~_Kc ܭv⺇9 ڟ1D0lIlLoLH.g/<̟&熏ٔ4$:OGٙz]tͰT"MwKILbKRz sFKhA{*{JcƠg\יM<?b{ GKgtmBrLn0c cXT(!z)3Ӌ AqqRB@+\Z~#z JrRRTE@;|0j}6NGZJ0|fǸE*HQ _VsH\;~i~Ŵ3=, JxZ^X%dr<ҾWͦ4ɵ6 X^eT;xX@P[oŀW ý̠Lcn(w&p0 {SϸG0Ҕfƽt{Uw0?Y@1 ݇FhJ*Z0ӛ6$/Kg;I/v@HexkNF4Px(F=)n8Cxw I23/h]ûy$w+I InyE# BJb > DڵGv*wsS-m65?C'W:̅!AQ-#/B!*XyMӜfX cظLS*o KބmˮD3ájpY ۺ̊M鍚 R>[;L\Lx\fg}Ō}y+;vF cV3Z9d0-׊R` 9ϗtN׎-.H# հ!&;4JPf}C>e a[0ڈ@bpRO.k<<|!?h|کH[ox]_hOEM ܙ_)f\k,y\KQnn/jű"k8bZvO=4xF']rM/ >?ʣ|#ר#z) vԜt^lɝjEcl9Cn7*Z Y@+PPo%p;um90ӗh'Zi{S-9#Vv K39]8'Ao^ Tz  ypfj D="! hO'=wR+y&,&Uy[`tENŌNoJs&{.^DO^YBw0FAhlHf>J[YR Lmp9ETu\F/n*{ =j;5f <;rM>`;:]S2r܌2)bApA$K6DmD[4_ 3a>G1RJIvO>}p0 U˘*+f)I|L|ve,ufH`@ׄ]DmAD7})s3'ԲKW;n?U( s4&s߈8C\RdCPS:DgaI i"2am:t[ZF=V/xZ>&lk:`7tgjQ:CjϧHx!b(h=ox&U裢 3-7I`ؔVR Bm{ d1;)C-j"0?m0 yIۑ ^fjАy)D'a:mIv|K*w$AuzEIJ&9(ueWRwnѦ0㦮D=L@;rK4 uL/s_ 1W.͟F8C\ [g5;07'8e}et ͼ`FԜzWEDs2v/K’er>ō/ߥ<\LwN|P"C0ȥl;h/ld%Zׇxq; BT{jS+P)1!DRu7+׬6п+䱇G5ν-: duf8fpJ,}Ș:$Ld}$&r,rwQrVH,]Co7!< Q\:SYϷ㯇] >p>M8k A#:Q>E"*1wG 1y3`p _K,4CJ.h ܪNA$eQ7miәQDKzV;Cj M&% b*"Q1HΑn% `_C_"83KWP-E`~qu>{|?ri2OAe5鄰m+\[S[.|XӮ٫ aʺDIk^1'[Q"(fǂ<=F ճn&Z lA-zy̳{U6YxtƋ@b >V7*|v1bvxWM_ }fRq6f̂+nV^ˎ(Z)?ehq=xv: :yo + :+3#y"̮q-Wd$ e"˵ &Gz[p41[~Pd7M|I*x,I71#gw^xN2^"1O_ B VC9A[SY~~T-ⶡGלfaJ`Z3yM\ȽC[gRd~0=״# GnJ&]H¾fV˦襙鄕?ϣӱtvd|~AbTH6`|)QtۻOKjSa|7iPRh6(: &\C?+W#7|jejEK4n?㈳TpYH5HB A=K/ Idߐ'OT,7[N{ye`_ti~ER7ynb)@FpܢS  OL#9c"^$,ri8ABHTðs2xY#C$=SB+ oIQl`Y꯮pQd2߬(XL2h5;qCyH58hTY lŨK +‘$__kZjyGt&A<+R`BN6dlЗ'țQ+u_Ȃ״+(IggE*Ӑuwo]nWYMVFpc>r/Bctd5mRC.=Ag4괪KK9@J|h׋Bٌ_ T-hj3jDikJ,XHnZhМTv.68TZ). TMUT=r9RK6JG6(PY&ʇ*, ?7ET_)6q X-w<{*q-]~teFB|Q<K*}P;_k9'$|lASօg*=xL綡/Q&I(SDaz8T!u2:5'3Nel2 /ۥDZ0?jOb/%F#Qo`T+愔C]gc$ ŽqTĞ[W7cBkG״p|{Өu^qGK ĭChѴL`fl_A.H\F3\ N@)Jm:LXQ_#[U1ΫLQ'iNr*rrlPLY' dAT#肺"Gx66Ia OO(eW8싒u+0BIs2 )ٻO\ ;;ݸ '&:\^q .aV<*8Ťq,mFmNxpl$|neLu@ vKf(eJD`űI%xnflĊ/) #86uc'LvƑ9 E>tyqz#n̓WʹXheJX/O b{*X'ver^!=Jf7v{Ć1vO-u)0װĪI!}#/P\i,[vgPƟmVɥmEYvOV{_Yͺ闑3 ɢ`T~ hyJ}ZE功K$y`W 7oh.?zm'['!6ku%[z h5lcuc`ѯ*Ve9iO _wTt!"UcD5d_=Q~N7+&DϐL6Z!Pڲ?+L} a? 뎝 1eϏ`] T`";8v>W-$&׮f2Cĺ\ֆ'5Q,ȋ;|3%4nDS]AXCCej1{_|>yLI\ 4)?m*>F15?;jW"N{Fi˒~ zp[4YU0OȌ`*qN]⯇'9q?9"\uxRb&"B|;ՕƵcX (` R`WJO@C_b0~䦨 xK1_UIlo).ةjj-W3L,ҋb9)96jš@Jd A;=xk/CH6>ZkZR+kg\XFώ^0gVƠTk}9w,gJ'OlfCBXp~7WFp+JӵCƜҼv#-Җ.Oz/87ٷnl Bj8;՘uELo uU4\s!f|nlcvƇzn*CaR4Z(`z=-Lw/ %f1kh3'1O#T$uFTxkg98˪t4#ay=MiN G#+5T>_uu@TAP{@⁐r)W+&̗E}",3u̻W!\XixJbVÓnd򀀜ObvLUYTnI>wU.--,yMYr): Acm8v>SOvYWX:ex R>xktg-zlbR~'r'&r^K!>SVqphӉUItCG1AZ[.p-Q蛟!FUҍN 1qGNob~Sn5^PKz ^!\zBI=kd On 4H`19TT052cYr's29r[IPhk6+9 |`Evylplx(E\T?dͺnx[P {IJljcŬKڢ-.R6C2q&wuS%"wڍ3@ @/2JfC1kthUt@wn>q.ˠD*[oAhJnW,]ceB7sDopi1ĭm0%04{Hd!7szZΚ3"ۓ,)| ,N+4o/> fнW MunfjQ2yiզ as0a=I f x:,}$S7@[c(#I/aIbO$a#`W$Aai-RQաa@{eO#'sqjsR9CO.9/oOli`cTuz]SP ݹO˂df{hAօf-`x (Xh x1Q;W|YPU\\{+ >` 3dwS:FD3llrйa2ŴIw`@N&tV ґPK@-&]4J8ۨ0w^, Xk9ihnožq5a܍ï.VC& sIՖ_sW#HIeJ{c9;K>g!2);`Z(M&A`õ=*V h&'UNhf? '(K]hOmGuP&u!3k.u$~l杛V`^NShB띐B4x<KBZvQ<&aę; L Գ3l7WWeqVK#T:͖|kRծ>C/Qq ZC0fyN9E?”8 %/(~UC4Qr&xUR=*K%" A *'D8CR` ŕi5 VT_:4ۦ6)]ӮdMvJٛ2&An#fc١^6]ubvBQJOdZHɈ[1cM(?ؚ ЯicGl22Cv\x)<UJ!-zjw)(*i#xOk<.SWeXF/{LJn?̐"XN*(7&~"'Q)y[tJx"jC17yMd>.k ֱϢ.ɜtppx^ܪbHUvu{ZYeT $|' 3bcΤ<; "Du"#8eޣvcnv{fFQ #DYgg";F)< ́ǣKCRE[, @<b! &z*?vB{v\gd2mts;6]<EVDyb.9 ؓ$ջ!v'zyewrE0mjVEHGh[=6"o~7bK7&PGEZMZZ롥8*"NTA;O3JM(5K5j@a%?Υ=xE n_ QnG^RK(Q"3|=d?ȷLJ]8.lEыe=S!Fi JKYn9GI; OàMm>ػ!K${^񊆔8+ZwRcQ*-o7ms| eD 4ئhQ7 \wr;P,AъSbY,U=Ŋj11M9׮~媢j=5 VLC;φ#60?M9=XvY*>n3(فrh+$) 5MћjZA9ޮS7 IHH G1K\Iu\FXeg^CE9^<:N{W%Q7ޯmG\wXZ7HHa> ѩI<agccO}:brVɾԲ#Y֖º;T}uhhi\G-\T5xuK ܁c[6\oédł0&C1.m߬$;FSLngL~)i|<)IN.? GMÀj0mJkɜrɥyۤVFg2j9Y *7O,@/wyl6s4(B iʹ^9O߱ ~34Ug/Xwj6MD]qMq4Dg#;izγjJٔqD%^Pe}m2Vo׋8O$XRq%X.7@0m~%vY>L'Χn`g4TkcWLnjV`26PJJKVqh,~NU,'  n^>ZgWܴW-]3ä+PJ6;`]+wz6WNk!9qсHMp*%.˪zJ8>5>;F(ɪFT8&!cZ&A*lD=D mO(]@_֎G൯gO0TПe"@Z{<_K:p|ž.t@M! Y&t-ڰ@uO:4"j}K˕K\@&) ;̀Bw4)Qq(/(s?3fSm'-Km:Q5YN#ʽ'QH %=9W(-D <" ;@VN, %Qپ.[icDV-F9 0 ZQ,t2} )[E γ,MäSfoxHiJ^x%PM= !eê]9@Ĕ@KmnvGYuyo_ۃ2z"x{mOp\./d!2rJn+L$"*eA VX נD>kY@<;6ڌȝDlvxs APbc|:bbbQG0ڛxГ?[Q1S0 Ỵ~w^6i4b4}ښ$c['!(`Utq B T"gF$R|"U-x\K'R*FQ'BK5tuHJ+l⺗ώ*L|MtmꂂlmnT̕_8]CRLq2y>bх* 05SS \8CHg,c(G=&!~|Fm RٰHH#*YΎ-TbFm`0Obj!ojn%:  d43]΋oe55(?9[]bA#FƩpL׾[(msѵrLemY_:y{$1v"jj=O_Ӣ$`hfj* ݜv8FPuۣ4fZNif(ހCbfXR ~zAl}:=w T,Q{bbCCrr͉x|[}=l0gZ(4V~=gybФ-k4{=J ЦsmEa6􊆟q*N闒[s gF vxDLDiD~+ކL&HMtTŒ'%2͚s?=+w݇vFXA=tC]ljkf b!noI -C .{l8O/% '}}PAb};sE-lx;i; RJ*"ZhEAFy=W>i؇4=A\I[/}ϐ!E_OdKu)MM'Wdc.%"ZJG\'7XSgo枰kEr=Q=Q%ZD߶Hz! >W7Qzpab~FܝFJ'`LI{rfX3*ُh;ÎL'V>a,#߸+Fܵ|_2_4;ƺx$7kp}.?,ZC[{ɻ&̈b"[k4(yX8D_O&H^&C9~IoD)~IډBY%^ߗT0rA9JvM"᤹ˀB H+.&FZ<m}6b!k׼E |N8eFO7^\XZ6>_jČ(vaٴM\r"ŘxO%b_irrS=+Ƨ 4cG44|Ŵ7HIg.Y"yD< -`EO`&-ky|5})UIOA;~o/>T@P U t7V_@}) cR}qK#GÚ*i&ׂ:<4s+%)U.՟dS>& cv8 n N3nKϵI.//hRe$|;h/M8{7҉G9r:s;.D:=£ 4ZHU_.Z ENEy׭Nh?q:ijѨze䘒ˋ5V Q(19d֛ߌ mZT>#@j~wAqG<7!xaҚPjڊF~X)kmq} hkSQnt=*؋9q}휮,嫮py@{ =DZh`+A"52`2 Bn$&;fI3wVӴiNLE/|p3f:fc=IJ/IsZAO3*Td@J<Q-_RkV^fwp r!4*6bPhyHw{9O }`Hy8&ZnEܾۇu&АFꭘ]QlE1@Eh$if{T{!nT;]YI# X\]14[r M,W,͇f{gJA 'pb$(u3l Q24@M`lJM?f7,%Z?P]V " 0Tql6wU>թV3:}ͦSˢNX1i\3nc3^@JO¥afτԯprNLX-5LtJrZ2źcR㄂eW%\5>:3..K.l9)2jvAqpjSrgiްGFAbpݤ/q,~ެdwO8,SNұ29`͖,eA}1:%PF6r3=w9++T#PySdK #8V)nypճƙzH 7I!4xZIOT`&Nk>Q]JH/ǿf`}>kQ9. Yl;$P#BRkE 3EMW,E+"jd)5I҉lu5dP:2TZj|-u Lu[y,:#輶h4"W}y*ïFnܳi#_ I'Fl1W+ý6Ԭ+К8?D)341h߹@bqН(r3XH:DDE$IaO^%QX0F+9H=Q=CX5|=٘}dw}ٓH4r?M1 Gn++hL?J"HDmz34 #zez5?(Xm#Asg~gWqD M'͕VThhlk Pjj`Jw7ح dYXBT]Ul978=UAJэBe;" H 4u u#!(яo ]el뱭ݦ;bOR.ї,U!r`j lve^rA_M /PI[f7KS@mm?9"3H+iJQ#ʿuՐ❼.1P[Z-v&'* 0lgj b]TBC%6hTS*ͥ˭voV"ëb+q,>) e%vƅstM9,L5 <'S6CɎܢrlN`[T?T, ljF5|G49[@N^>[T;Bm-i]1DN"b4Ci9m̀gZU#4ckCb 8)J֒ؿ?,?"#H\s&4p0o-tge(]ƣ`,:sTB[ zɛ6jo0/&lYt/di M]WƏ3'a.)FdP{ZA'jV!,HfG9@>,kD5A)ñ4I`#;qdPNcRUΘ*\5k7C_X&_Dvq6?[ 6b08#Y?K0za[D۶/.  cl%;][}1Kx/Kh+na, eO'C(69FךcG^nrj01ŵSu/)T<֋O3l t&QL듁B, ihWGlt⎖f.Uo)d]=Á[_g^)mL2lMWy3CC)xshH@VPcW' 'qfE=#"}NeƲx8Bt<RH זl)_ۨפ0O?JN'.DUhJd@\HV,+!9mX' VNr- 4J%ϣ8nxBn,HJY@jb;)#9,hU-fn?9.= yԶ)";zjw }B\?@=zHIgĜl\NuY0{lϷ?@<a='&&+Ѕ3X$ cz@!w<:z쑠gLCPˀK+uWB?Ni2]: ߋ!WN[$hM)!h*ȩe[-EE:Ы:Pզv5 ٞ~2\h$a%'aw_a-Usp*/J1ݘ +; ׽uM-EXeGs̶d\7&6ser+_'|C4oOtV%160flB3JYQh)zmY0NX3;jõyW,BNz `[7J& `!{F5UW! 05n.)ܒه{Z[?yZgŽ,ft|6E䍜[ ^=>],leH!̖wՃWA݃|: YZ