python3-kiwi-9.24.36-150100.3.53.2 >  A b@p9|ïl_1i^Hn]_#F E]!.`D!.(@;:&Fh$I3(5X4F,]rT}xq!5Jأ;S{|eNF@&_u\C‚̦NB8323ae8d20cf7420af314939558b13cfad1eda6178b9c47615c2d7e5ba2ddab25b7e202c127163716d18d90b806bf7c423045657 b@p9|Ikxآe|޾r!l`1.RiE*?__ְL1cTX溉_SiRW^)mc::AU\/ Sq~w\3gL;TC;]<~Ȇ'3OW@!8kJHZO2ƱZ=R_[¸O B^&w/FZIlkOhm樹 @Ɓ:)V4li|/ f&_b"8궕0iOz6Ĝ+n#3\;0>pGL?<d % N $,0Ij{      p  g:d@d ()80=9$=:;(=BLFYGlH%HI-$X/Y/$Z/P[/T\/X]74^VCbecedfLefQffTlfVufhvnDwoxwyzz8Cpython3-kiwi9.24.36150100.3.53.2KIWI - 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.b sheep20:SUSE Linux Enterprise 15SUSE LLC GPL-3.0-or-laterhttps://www.suse.com/Development/Languages/Pythonhttps://github.com/OSInside/kiwilinuxx86_64{ [w-D$ o(~5P @u A >wR)'D!7W t 3|n?E%j?JM#CO5>=j;fH%> " ],,6p+lI0'6()t+ 33^Oy$ s p$V,  # 4>S" Y [" o9 7 vmz I\,?$W P4"#&9'sGp+2.z!.B . tn   a\$QU&3-06! f B-f*L z0qc V! 8@  +*D.9 F0z 1 0  KNS^o  1o Eo]Sm>D%%sl 2# l\l)$C:  T KΡAA큤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큤A큤A큤bbbbbbbbbbb_obbbQbbbbbbbbbbbbbbbbbbbbbbbbbbQbQbbQbbbbbQbQbbQbbbbQbbbbbbQbQbQbbQbbbbQbbbbbbbbQbbQbbbbbQbQbbQbbbbbQbQbbQbbbbbbbbbbQbbbbbQbbQbQbQbbbQbbQbbbbbbbbQbbbbbbbQbQbQbQbbbbQbbbbbbbbbbbbbbbbbbbbbbbbbQbbbbQbQbbQbbbbbbbQbbQbQbQbQbQbbQbbbbbbQbQbQbbbQbbbbbbbbbbQbbbbbbbbbbbbbbbbbbbbbbbbbbbQbQbbQbbbbbbbbbQbQbQbbQbbbbQbQbbbbbbbQbbbbbQbbbbbbbbQbQbQbQbQbQbbQbbbbbbbbbbbbbQbbbQbQbQbQbbbQbbbbbbbbbbbbbbbbQbQbQbbQbbbbbbQbQbQbQbQbQbQbQbbQbbbQbbbbbbbbbbbbbbbbQbQbbbbQbbbQbbbbbQbQbQbbQbQbQbQbbQbbbbbbbbbbbbbQbQbQbQbbQbbQbbQbbbbbbbbbbbbbbbbbbbbQbQbQbQbQbQbQbQbQbbQbbQbQbbbbQbbbbbbbbQbQbbbbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbQbbQbbQbQbbbbd4d10426b28d4ce540d4f06680e3dd614c35cfd0794f6ababf69b567cda85cad8a5c827f69a64d1b8e9e2a9f85f894ff37b8cb6a88598243c9afaffbfbf1e7bb931865deeb432903e06bbb66c236e3866526aa78999ade9f3c528618d3122923fafc12906238baf0b753f4372c46e3ce0fa8e6e928372e6c7b230f68dea0c23601ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b2f2f299bc6ef6ad5d43472289309528d778f887123929bbea4194da9fd69606801ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b7d2cecb7e178b108ba28bddb272bea0f53a8ed8a45b9cae4d11889babfbbccea90d5df57ea540fae628833c8d69344ed78e5245c39cdebd49c5661be39e77bbac7d27b511c5fd145461b841ed467c5f815c805ec19a78c25d9ca1a2d11863be378540ef692966e52dbd4376a3644098c62a39e431b142c0ee5686fd80d9144cc8af5538992b9b2fd010b546a74968b3e297b84af851ede48d78cb7af1a7a3f9e9eb9bda658c0db84a79e5bdef5cf33f50bb14864558a0a364603d4de4b2613f65b41a459df5cab9506e9ed4cca039b4bba212623473391871146cc54b77fe31c4a569734bd4b7cb14cad0ca9aae66a706fb21f5310d2791346c0698704113246a5fff7b25ed9e8464f959e043e6a78a6c3f1c9599b08eb3f45715bc47ccf1bfd168bb2e84f7331995c1e5f6de4b6c2add6c4fa5a4ce0a43597504d1840c7faf7b4323d7e348493c347d4ab365bd519185c8ce9f20f7a04b1b76e83ad9cee3cfe2e70bc58dae74f8c23a11fbf2537139b5b09fe9b51998ee81ada0f353ecb16a5871029d432390689b6d791be725efbcf8a905b338a351e7a28c159facf5fe2b5e13c0c34514507f4ff9b30c1f9da5e7fd53313647cb372ed122916cfb49e90090d30d6bba159797cf8a664662db4e8336f16989ab4c1eb3df096ac2710ac7f9fa2799ddaf47cd9ad9652fe119d1c3c83e83327832d9a3a3d2480748b283436dcedd01c523d90aafb9b729530073de71d80a9ecedf5fed79b7fd7e32fc94c9a08038801b85c95082580700c6fffac7275ebdbf095560f64276cfbea0620960fd101e6a4c91b0d252b3ab4ea54413d721acf357873246ceef65e8e0cdb67244d24ea478840d557a05e6137a705fd63921b584362bf77cbed35475197f6d57a678f0317b0ddff6894a81bfd8ecb7cf01839444132d7fa2c7f4e56831f577730aa5fc519ad647dc9702da7c2caed425d5b2a7d39593503093d94ea819a8e173d9ac26260f6094bb20aca61a88536049e8a138cacd134547bae6303ab7cbb0dd0721a7e3fb962656413330ca4f1e5718e791bea6ebadf01e61dce5ce6056b93e0abf22854c97ea30394af4a386716d232c8e1250fd7e26dd3f4334ff2216080a2599a714b13662ec469ec946a75ef7779fee2b076a8ae8ea12e4c60f8997dccb4181a9f5ed8e1df2e789552ee38cf9da0de5b1f6c11073325ef06126ddb6c804ea0eecef69b3e9a0f8e45e4f849fa45862784642c69a8c4f84fbfebc93a213a8123e417fcf362eb98307f3c7871ba194e0ff28f2749e18c35735911a95a2738651484e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550844873f0323d0d2d76ce856383aa42848a0d37cbe3730bc92630e3a7d224c98f4b05db6a95e48579cddd7cbdbc80a21028e4b000d8eb352ea47de2815db18b51d621bc37068fb467d505be3357f444a2e308adcff5f0e58eb3b5ab9767f2e2848499ffb01c5d1b5989466bf2f769b21d8de35326d0f56fa5dcd042c2c087afc62e62c379c3582247aa1dfb1868eaf4bbcb74d6aee452c551d18b8b5cbb35fdde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551001f9a44dc235c56ddbbb498ee566a7cae2e19a30c1b2846ccca9cf7cdc9e83af9265f106b09991cc1a6abe516de7149964af82b17c373876c75ce800d77005f778a5ad67ec2b623f15746ca3478f2cfd7e075c304ddc968103a4f12e302c3b865873d1f4124988b9f308bab6115acfe30771207079f0296ace1ca9a415cbf5ddbdf6c50e4fb6165c5299da4aabd85853df6b213f471e4b6811b5e63a4c4ba59a672c06b98d750af53a2040803c7e9a47bd4790e674403e46ab511420d7a467fbab13d85df5236e8fb26d2c9bd0e9915193d83211cd8e7a06b35a72d9b1950595170bc7a244f97badd88e5b20b07bae7da90b351f087ce0f29fe9a60f0ad6394a1433f3e1fc9594b1e4935c681bc93ad9bb92cc346fe7e9af266290dd4eaf38e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554d3089454dba00cf55e0e7150f8d9f803fe2807ff9f8b346d2361666612010a90a2c77b18efa2db6fc5aacfdc23f49396ed11ddae0b4216bc23547323fa56ca56b3104fb1ccac89a97c9047f8bc4605e944a26dafd317e2d2354a7bfb290f52aa4520edc2dcd660c23236cb40225043a1799763d0b8769942dfd82073a70418dd7a23fe9050c2cea582666382773c99fd2fed02e386b787f0f0dc7015bee452048e0324373d65055ca1d87c2837242da4de63147b3a68f2339c5212f2fc77527a7a0f880db12c56600e0169ea14231ba2c5e5125136bf93bc43d44d80cabb8dd821afc064c6fa3cc3c9aea5b3f64bf863f65fee76f5b42b773a1feaf5af2d29644c1b4a52faccf9976990e6e3cf6489bf6f598cb2c275b23fba7549de4986f9c9f5bbcaf99c651f9a10d0a1ca4360e21d6ce6dd788ebf068bbd8ccdd6bdeb548f83c71716837703cb4bc8d88c895431e794b2fdca76151873fe0d6eaebcd2bf20a150cbaa5c115ebed47e46811672a0f6b4822598d2081312b4cea1975740b5e7a97301b991981d59f107347a8c1e6a0194293050ff4e4438db349f32acd4fc130dd3bbc1c43fa0ba23651cd4d2c0964a69a77a09c23bc5776fc1bb35d8d02b498eeb5399dcbde5bc921c4c4da460d3218557122cc692c68942d66c251429aebe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8558ba122e0c2d6a776bbce3ac32bf36531bcc8876164b36af0296303c418df68c1cf8e0de18d08bf424e0b343abd1e02ee1d1bcc4679bfc4d3f5fcbc26ad12edc7c774d7244ababfe967e63da3b1f00fa6726990d6151efeb98edf651f03ab353ad5c8c5de08976513e0a1776a4564a3137739c220ceb7f94763810ba5c7903371222f049a2d45ed4d5de560ac9f3f8fe0187d88339b43e7cbf3c41ccdcbf3bff2aee993aaa4c94f9340a870f4035a2702abe363c0369ac87a7e225fa041bbaddf168adcc9e6476124365b8c05f0ba55575cc6baaa862a5d7b5b99d92e92ac8b1ebb721312c5a82800a922dd4e5c61204ba408649117a8623e5a2a36b242c3375cfc749176965f5464e592b34eca5548f18cdcbe50eb3fdc075ad553d3bb51eef019ed50d923244729cfe73ce6a942f1cb9fe139c1089933842030cfcbbe8f994044e37634579b70a3ececf198689c69cbf371d711f1d91e0dabe74d612c4286bdf90cc778fa010db9d702a469fac9c0c7b186c359cec4a5d7dbebb02964795899026d6b53d738c11de7f1fd2f36f85a713458c17d76b890b76dc9fbfca858a10e4591016cd75ae6f08d1c486c6670d0093f9d1b27d1e4c10230980272c03f1becab76b1ec2f2c9e6a199c6ade0db788d0e2ecd7efabe691611b14ec0fb4fe3b86d28933ba936c2da598414c04f44c0fafd465b7caa7321841c137bbdda60bcc35137bc96b48a27ed7c5afa6ba4f37fd47fb3a2e5c2fc92e82969a5f03459dfc23dc7df5b517abe5ddea791208b096b69f41095f6682df5f54f12f14135b194582d5bfa1e090f5006748732f2a1fd8080324c53d25fb9ce306e6c0970a559a280eaa82b5bb3d59aef8923774358a6cb971e9be92188e6ef54227c052a5836677d9232d86d95556b288f2cff5bb3e6e9fcb72d9e69197d900a9033b70fd5ef232d57a9ce6dd425d1d418839203ec945ed61921cca64bfa1a1a469a475766e110656da0002bf8e014fda9c273d7026d1f066b6f624f6fd69539c0e047b11a0b945bad2c0d0af5e1d25fa11e20bceb2bcedb494cc64ebf0d63cef02638771a19b669772935c9028f9d105a3be90960444bcaa46cab3858c6d75944eb5d9ae8d459b54b9ec3a834157c6492a916849a428909957f9aa26aaa1b89dd3ebab58acbf8a10b485a762480e68538dd175eef629bcbbdb330a87bf6326fb934cd092f86eecb34ea7e0d87f1717543d79f1a5d8aa8b7280412d96047e5860600d8909de6aa1d164a0a5eb7c3c39cbb5b954ba6b0b587d3608e68c3524b9719fed2e00249bbe1c790b6385733758ce03e3a7d70c5a23247cabea8847f8fba9e0e5fe97d0808b0930beee6dcb00ffec74204bf30490b88e78481670e5ded092caef343063aa620a3fe1f43e8fdd3b3700523cd749fb558413ef8d01c8829cfc239e41d6ece9ae1ef70133f11c8a32f9c344dbfe5b393903d04efbdc8f8985f0a95d1c8a14cab3f81d075ced49941c2c1211bc72fe02df1a1521c6a73aadbafbe2a2c35b5d4e665044da7f0192c3923eac62f7cf51a69df6f7a0fe41d18a06fe6693fdd89093f3d1f9f8851a8b1b6f79b54bae301239834415ff73d5674df86ff568ea31593ae439518dab0668f66fb0b92ae9620efdb6cc81f78a5c7e5d84a48b1a4edb43d97b4f043894fcd24c7bf0225983e9e5e9def0875e8aef881e9d5a944c96cee590cb49725223e504c58452a1b730b39cc754e5d9b5a9ef594e70f9b5f19ff5dd3d080977e1af40a85d479d7d5b6fb4f54993b6435fd3d548d0ccdd2ad121d9a4a63d873e5eb9cb3c1e34265932d8384b165b1de371cbc26d29b03ec228be3f5c05ad3a0b992844eb4fb9dab812e7e57e8c5c23d6448af168f4676af455581df67e89696c1c0303aee2f9c7746c856d0891d7b3c3d52b11be6214a152573e23f63d15aeee3a7a7671d1653dcddf480344f9dca2b5236b4804937edea3031f07e6120d569a13e9c9ad193c571ea69c289efd4ac7825d975f73cf986bf32bc0ae88386434cdeff5939cc605681f16306dbd00a0925656758da0f6181616ce59ccb416db413a8195e576b8e801f43806a189a027021867f0059f71e26703e4d90fe9be85f7a64a5a464ee909741ac3291577e3c1decca519624cf70a3301c7e252f5b0d1cab4a14b69b7da6a2fa424ffa6ad3495c940180b22ee64017ebbe4064869ef5febb6f7260e2686a7cf6b643dc5e54485da2ebad66cd3cfcd793d50cf2ec12b5e74ce21cab62fbafab62b8c7e09aaf4ca83ca1cdb13d5bbd2acbad513b5120aa347f5bcc41676c6c1da2c49500edea283ed0b5dd3838e8ff202dc4ae0f4228181b4fd0eb98783b8706be5ff009e8baeb5a016ae3e3731901ba439acd0bef96e68066f2e140b80b902f3b288035950e87cedc1a51ace93bd259a3d5168c91883d65003a123b122f995f1a7c3742b290c42618c0b1ce22b75794d0ad260c007a3f94cfa0982b9569f9cfd6c29b5a4b069c07649778f21bd81e89cdd4d199e98788e56d1b8ece8db13fc9e971a835afcfcae537ea01f2d56c9588e00d30d31a42a07d4eb92140d30c2ce2e87f8347bc4e582d3192f9f4123f5c1bfc53c0239859e2236b8c6cf2fa141fc3fd505b5c6fd6da3f21433987ee75f4ffbafdb148a92ca76ac99d77b605037fc89e1c2ae1f984fa5387e21006ce926d4caddcfec923f2bf44b949ae23aef9c36f66141c57cb5df00ff407062af63e64b34acb0c181972fc1d6d34f5b51c5e6d0d94dfe523ab211cd4d143ff7a4b7f80219ecd8fb92ec3def30e179ab85cdf05495b7b3c554db8a8db95a8a25217364ec59d06f2f63c26f71fcd17a12eacc9282635a77b8db6e1ef4b6751dc15e58ba5e743f73e32c9a0b4c294aea053a8d59230dec204c36f0afa00a07806b5da0db49c26980ddc60168fd77d020a155bb3e0d8f4aeb948d60bd29087b1afa57bc02e59f6b1d6f8c705aaac4235d73d21cb49f06daff617790a84efcde9468ad32b941a39d24435dab883f0ae5dbc5bfc6dbf712e4ec0ce1652808357b2a335f6ac57f50e6a60b7dbd584d709ff7a5a14e55a01e937cac491414726f6c2a470a55b696e1681eb3458cf0ce944e579dd50218d1a9bdedc2114c47592529f66fcf1d61a034fdeb5d3cb3e6da9e15ab01fe333a0eccc5651fb7d5533ec9ef0e1def5ddef004bccf542108d93f047e215a40d96bd4c64f7b832cf52ece4b60ef7f506feefd5417d357be2a794955b51e7e9bf7c383f86d340cf11ba5edb22262c7537db59a67e42b3de41f35274817911a64d4dd3a17cfc6b08c8967a49552c7b945cd223f6ebcd6376d8982f189ee1b72d69b327e62fb6b5bf7cccdc9a82c0d710e705d5022a01315435a6fceecbf2c39a41ae3f3467776c88f8e084ea68b043460884169b2f92e8040fc801f2fccd8d8cfddd8a65b8f0eacbd3e561cd12778f8d3cd0ef6b26e11797c9846c9e3abad495989ad51cf671992e59fad03c4c1929838ffaf7e3a226ec73ffa84251f026d301fb56e3fd4b381720e42eec29ea3a04c544c570aa604095ff3c8d8970060a70683f0ccb38fb54ce298362ebeac0c787bbb73d3074c3d34b3c3e297f6e6f72fea99cba49841f187340df3f596e58a28769a29545cd2f2efb95ca643dd6210a9675c52fcf6788c5c6716a508431f474d8361755ad50eb23a0a05b2d89cd093c8225351dd67502518b77e598bb20487e6f3bde7b22f52bc210e081bdda7fd78a369dd7e1a663031cc09ab423a2883b644754c8252c14accf59f94355e0b6879af4f2e273b9fb9980f5634e8d69dbb3e355d1f396f34a5f919fb1ed36fdaab5d08810b60b07a75c29c115adffbd0ec9b582a6eb10829f7df362ea98c650d2d0b8254c2d7a53557b7385fffbb7bc48d63cec18811d3f781b5d4bce38c0a80fc7a634988b697c548dd99b14d4604d64d8acf6802be075bb43e4beeae0547a9101819e323cdd8e4d3ba82dfbf09615b6b74d314be220e1a987d2ff4bb7f61c796efa6942d8b7897edf5060fe8471add9a08b4a9248b6708ba74e78f91c9924a88a4d976cf39055a2073a023d42953186ea91b0fe6a3b6fd3b962ef7cfc05c13195b4a50d5478546b7b2f1adf8df2a6ad5c3bb55942140993ff51f4123d2b04199ede8d1e9c1fc9d887997258ccc694766eea4b9a521da9bbb61f833cce6e271acdb76b7e2fa9219404505ef97f8140e7f25f4220a5c87008a62bd372218cfe92d81b376d6e35a6909650a4e185b0cbdc84618babf5229416a978416e8cd5008f8a2b0d5b9194c16bdd33ed14193e5c9928804e74a8039269726dec2fd23c7a4ce7165fabcb16840faeb0e1b5ff5d847797cec54d31ca762c723481b6208c1148d93d044957fc5c514e0b0058fe8f243f0eed77294e5caf63d84ef6648f4b013b5ad330313d0653daab3958b9387b0e099d4ed0c2c67b68730ba6b9303deca0384ec1ec39454191b57ae69c99c4a441dcdc74c9fc3359f5e9114e3498ab7c3fb91c50828745a3de831ea1c83a5bad32a6cf0addd1c513ddd7c9db95e274b31c9163a64f77c82674550984809e5e9e27f75a55fdde40f1684ee8339429730ac487b9bb99ce83ef502d85325d802025290e787a26e5f1b6f12262b9bbf9f64761be0f749bdefeee2b802cee5487e58358ab852e9dc88c0885f6c6901a9e534464b407617adcaf4965adcd100d0b25f5f05427b10951a184366d594a9dbb29797983877daa7e50a68451cd0f5c485f1b3adfb6466413d0cae5f2261901c2482b62ad3f2126857e16bfc94ea19fb1a24992738b913f41e9673bbe0d80adb571ede3670693237869890991d950bf6a893658335a154acde09198bf225de1c5dfe134590d27d72b23393d88b28a47eadd2ac68856a6ef05edc7a92d301602a55594ba9545d70612bac24166acff861c6e1fc37d0a1c5d64b4dfc9d32206c739665526ebef2b6ad32ab9efbb6653696d470f4348b6f6a9447d67683da9e84a8e71eeb406e7f74b3677563b62000ab8a17f126112a395656cab6a354ed45dc3ec84f6d8bb676942b3f2d6d4ac711bd7ca7043cca9b60fbbbf7383fc8fc5b562debfc9c89e95768df1c5b8027a771c49ec836c36fd4fb794a3936aa098b01536ea848f5c1012ab7a10df7fe73121c355ac4c84d69144c79c525915119434ae98b5e239b5d98671cc84f1f161ab9382cff130b944025c93648f1b19ecd0a276761e05e94ee075380737a864608f864a119cdf3033caf129bdacf7195fccee818a80779e65871f7fae04dc2b254299f15feda7d3fe3cc99e11fb47b05794514dac8429b92e29553c0ab813863fc49af167317394e741e28740817b647272f91e9e0dd72475863b55baf235b019f83c4e8780eb220aa7309ae6982f97bc3c21c784d25f4356bcedcd9f8235c1fb06225beaee326191fa1829d4bb823be8c6a0c1bdcca29b656d09cbf71ca28cc7f4308a8a8be090372898d8999895d32966e138cb16aeec941a75bc65dc89c6db0f38aaa671252bf9dd33feba5326c656792c474cdd95d3200616dd7124b1d5d9f2428dfbceb2d2788c96cb68e52d018b8336cf00a3895fb15d86bb7aef5e032a659222501ac350dfa5f4b9c6733dc8ad92dd04d4abc7370c6d669e18f944ea0f28780a9c0422776aa79db16212c564603652e2e0cc0f88de75f1e4e542451d45a993652f3db8abbaf9552fad7924a7a01ba81eb1dd969175a02e01c6a0de71c2359aadf2fa512f1d5161219b9ffaffc47e0d9e7039f27641b0853f70818973f706be76bad70093ca19d109e00286dfef46bdb4637efcb8fe00b9f07baff8222a582814b8e101aebd80a16f8cbf8dc1e6bf8388013dcecd426cdf7de7e2dc5a7040b7f4c83e1f35586bfeb4068610e424c351f441de9979acc794a5ce583a7ab17fac2a1895177b6cf9a33cb524c405c1bbf3398e92e946804667b20535309d9b77d3a9d940732d9bb4eb40a33b6f26272cf2a495a67fbc799c9e04e0e939a9412f7e62f5ef515d62d62d649187783a5f4489718142d9a3a63ac7376c05040c1adbba213723b96944668c1ce1c537446b5af1b17e6962d6525290a0338c22c7a42dfc53f33485b617c424698c8573000c78fdcbed525d2666e47535c9e6804f6cb1688919e27556b6776c95dc1b56b6a38946b30d4a8222fe5f3f4d0efc12df374a9e2d55cc32f34aaf6b450dbc8cf748ec37c8413bd8ec1a8179fb2774728af402f0c903a1d456b0c872e20c23e22496da375ba975c54e808a182c429691e284de0cab052bca1149fc5861537674c9454fe9dd3b04535cc31c8e05fc5b5d4032de126a72f2e0798a3dcc37a757d7b16c6313c78a34cc3d48cf2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e4c434e04ba76cf186c722c1db2cc7fcfd080547b79383631264bb1704c0fec680f327138dac55c2e7d0556029a51613a7348fce0f48fde5af42dcc5bd3d9f47803bd0dfa4c740e2589f851495bd682532ee9f817e032c98e09ecd283f4ee59f7fa98fee7f19fb8b22b137c9fba884e00a1c7be16d98b22a1b58fe874b17ab53f8d685c40145824bd10046b5ab281f28901aa257a626ffaed22c049a7bc0560dd726e44d150ba368f9f298723e3f8e5b854b346372e3dd947987780a2f64456dc892416b66366bbbde59b5c21bae19d6c1b3bc153043465a2be78ee4278b29b3415d2844274189a397306d701b95bfb89d8281fdbd19bf33b22792ad2e881591e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85561664cd6b447605ed98fe0b021c8067feab8232db32efbd57660cb40fddadfbd42bf337cec7395313a56e984dcba446d6c0ea2b038422dca80963fdb71345e8c5bab75145af36b4eaec5f272887c4ab8b22e7168a3dc0c95bfc237d1a2a08a43896b3ea3b98c3eb426a310429d8b8562ed16eee064624493865eae23c19c171918b4f1e095eebbb23363de052a25e68d3d6756497164197058dd0af21042bedd3061aaedcfd783b7376433b970758220023e870c77571500b47911e5bab0b82c26d8af60e6b15eef451efe73ae1cf1e54375b4f9e33fb05d3fb9272c0c977537b674e8c901fc5b00498f27c61b2b181f8b970a0fce3670c7a15b4c13377b4fb521bb32a4c2f97cc8537c6acfb7768f2f19c06ce92781ae7ed77769ee8ebf04b7b71e485dcc3239bd3b824ca03e4e7bf72af7776c873b14b37fc810ca63a21f0ba220e32884d53ab675b665a3dbbe6f7ebffb0b6210241e91a03d567042fe19b29096f02e53124262edc86d0aa291241bfb259846a828c002a60869a1b0674db07f4c16cd7e01ea9d20f20dd0d192c13ef141f0714828dc50961a2a9b1088728e121f87f3e8b09cf5e556198995ea557eeb45f101b2010ef3ffb09ece3ed4e29c2e1e163ad785613eb017a804f758f309a19825040adffcd3ff1d2e6d3fdc1c0ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8556500661db2d75a6d25923548a1f67291b461de10547867fda23e5a41312b1f60e8a0e8b6bd92cd5988527255db48fff20c8886836f33df3d28f56b45588044f146ab280d81dc8a4bc303dfdd0da15cd3f3ffa1045444ac11b333dfbccaeb63a73844e2a33d43a9c2f9605cfa7e48cb2230da689956b34c010f5bf6c49c3120dabc178d5ff6c184e2a2f6bc5236821818e0655c16b5435c93cd7d18d51d91902bc57e8537f12fc38abf81d91f966ea148351cab5c3a88b3d44a2f5f334d922b91a41a08dba0f3b5e12cc2f2c312982afe9e5e5e5749f7a866b1bb6a629fc6e7462a2b28852c900ce36e73236d1f8d4c60621c3a0ef8f94e93d14d1e02145e3abb07aac068e37e4da48b6af4c8b43cadc5b5dcddc20e84f7127a0a483239fdc343059635aad487a4b0d4eea56ee8a9e065119772ead1747c33ac35a4e536b11b8600524ae6ecd8bb031f4606241324ef37d4ec1159fc28d1691aca044a415ad5d34676950ef609f1f9a48b4fdd4c2cb6e8db5c4557c69897ec324965d98ebd314fea4371080bbe8cc5c87627ac35b7bff2e7860492822e48ef8d131d325fba1ee5f015039f517010c891ea55112d8bfddf94d4e43f3e78e974ab6135437cdaf590945a1cf5985b091fce586059ec3eaffd40ac5e7324076943db9632437c7468d2f848fcff6bbfcb7c613fc63c02a47b5a24a68c430fd5216f770071082cde412436e67e08c2d417d235f0515e8fcbed69c81173f36df282a90c473695cfdaf211bbf0b4880ce3daf25d37cd2b162635c7689ee989fb87c6594bd7aa36c7f1d382b299c9965f1f8b3e04522e099a17e55d49fa970d9325db79b19c5e93ef9374305075067309ef3d905dcfd4223a9bee376237e82c85f2cb8323f6eceacef08abccbd2c55798b2e3a235e10d886b0d46dfe14d8ca67087fdf6b0eca2f85162baaa0c027b9f31491868a386e832cffe05594148cb175a03cedd2df73d280cb2c48b164b7e41ecfa5a8fd0ccd4906748fe41d43a58da41bd472da89e11d83ac210cc0a430065d9d91c4ab0a68460b47892b007815575d821ebaa97630e8ba554e8bd2137e85d6722498f195adb611c84a3711a69cbc6d65fdd0d74914a948b2b994283cf7e881e27a03ec64a86894ad6f15bf90e437d51062cc43a7988ed492559edbc056721e3db4593972a2ed9a2da0a2524da34fab59f691ffc918042a434e02d501c100aafb90c865e2756fee6cc9ea3d31079248fc24fd1aca81ec934164a1fa3aaee23229f3776bb6e43601a141c948a34ccbd1aeee5360854e300643d8096aa732cea3828b2e758dc17d20ef8769db387cf3319d5b13d819ab85167321a5134cf0054395c3c28877fcddb3da85ba8ee057bed326eb815ecc840fc09cecba3b48d0fe924723bff07e4bb7eb340bdcf4220beeab6945ab5e542b95269a1028bc85f4e12ddb44219b20ad9977a3e5fb580669656112fb5265aaadae0bad30743d642fd5597e3b7428198a5b280c65c335cad9eaaa86414f63203249f2c5fe104bf551ce219afa0c6d9724cd6076a579e0ed51e883ac1ea87b702fce1dee8fbcbd813f70ebc44c11ca22751581242953972bab635a81185d5a859c5a8a46dfbb1819b92b23cee657e048ce995c986e35494af917a3aada4a1badcd9ad3f353045e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e6247dd09bcc8487e2c2eb347c1a6e73ca8b8463abd109856b6693feb3b44c66a1d7124856ca55b8db109d7044287c20586a3a687e339ac3e3411cd1ceab4c50daeb74778c2d3b5987ee73d4ef3bd706bba40f9e13e1faf7a6ff55e8c6c10b5a4f7f13b21137c1dc09533e244a725326ca83009d352986ed67d4aeafe6c2e2d748d8f3a8094d5c68e5abeb1525e1bbfc2d8541cf6357a17d5554ca359b228a10b489b5f546e079e32ff06bc9863c1ecc74fb875ecea0b5f324b8e9321dc02ae4af5dc032ed5fce38351e66f1740f09b7e335192348f861acacb7046cf9efa7735e5989f183ee8bcf87cfd2ba526cdb24aeef7c7767a9d6f302d9cf57278862e8777f623b948a5323d6873edc61453ea5360660d904ccc33ae570fe1ddf13acbf476f60721e2efc916484ed8ce842cb5e71e3a43dedff00bb133b1a49d3bcabc7a82b768fc3325c9fff9d1bcea9a6b18c20a911be023edc067adac8ead7c6e85f7cdab3bb1b89e0e4efcbc34d2ae425339f67ed7a544441fd5702a9fc8c7820b8003039430cc544a8a3fc3260dfc35005621d736a93037353d946e6bfc10ce7a689a3bd7aa119d4c346c5a9351a884c31a13f10177d0c0c71efece99fbc255568748107ebe2eefe5fafbf6724eed4543118acfba08286acafd64037c39a77edd7e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8558954ae803900fc93b7b744cab6d87b7b687b7f3b29d78cf614009c7c3a2c0b5c8010972382934cb0c80be324d9fb12ec810047eab6fabf684a40cde026b5b68f6afc1823402c1d14c2e6e08936d13945934fea3651bc7782cf20cf7a2b0735b90b6f4a9af10f629509e75d522b560a1d6a51d88eca7c34a39af297e279be1d7332a495b3e0e42a4f1fc589197a2412748ddc8e40a8a90008ffb310525427d81daf72bf94b87b761a8e0ba7f2b544256f0e0c3868f952d3126ae32952fb446df339195e6c445adc7e8653dbd0585408fe0551285cb40cc8fbe61c6cd1dd47d4d0eb0db2b1bf23abd7c943336932809e83906bb97a73023530766c22df29af66cd0627e24d9a4f18c503aa241503bfe7ae84da4b70927c8df81aa64be64984ff67f2f6d856aacc9954cc4f7b84d4ea9fd5db929e88ee57e616aa7743c3781edb6841e311ebbc43e5ea7dc212ac460607bda00db7ef08d263224a35702bd4728d47872791946353cb596edea06437bacbcb98459341789670b994984204ed12fea57a6bee9201d1d36357826e9e55a0648425e36e997721164431d6d2685b4a24d5137ccb02feea74e0730007e8d3b073bec39fa892727fc37fdefa833f7fa2a8bb8698ba4857bc55271133fa36a820383a9d4e0c66f7d144748652834579787a38937f3ad32753eaf9e6ee28fcb99dd55ce053cab3e95c85e2423d1d84fb83f3b0c0c4c3327aa77fbbefd29021eb8b4e8f400479fcfb98afd3d40f942009d0066e8ef3a0b1613bbcf576325060d5689917765655953dd36f8976ccca678070b21b4dcf33d0540f2751f494381a746ae409c63b527e5a6f2e5dfc92001c11c5bcb4e66f5b51d77c407a7e42691c4f3f8de18978e952b6d6746f2459fdd719b984a776da12be37f9014267fb567384c7ea3ed96d2df94562d6274d685f5640831744eec3338990accaa392f5dffc0c3a03e4e4a15be12a9bb3342ed4bdb07fcb8e289d687081165f70d77d94664f108e8a007fefda9f4eace04794fb0e58c28501268015ed3e7f24bed4749b265f8cabcd7fc0aadfad0c2ba2bb0360e12672339d1cb27c6852ec0c57a2878733737798130aeff3dfc226478222d9b2ebcae45c7e7da87af874b5a48e6d46ec19efd02b79dcbbd4ccf574f51fcaca1b304c75617dab94f66f92973b5faf46c81f30fe4d273054da57f48cd75f27bcf552f6f964427ebdb1273777ebbac0f9b34540516d8993ee996b235742000cd0150972e82fdf6f9338b6c9a128e40073c08020927d9df5d9ee3d73cdd9b0decb2d59cb274fcee60574c3eb8ad01c680ed4756f772bf5a070ae249e5666f4ed1326ac8bdf5e8a8a6f36837d4ea0a04eb68aa31f341074a9c87d7f73bd0d9b18eb5b34a46e45db548fcc44a7ee3c92201175227b01e09b70c62feb3b17e942768c4c84ebf634f9dafd7eb250113c36d1a0c358cc7c76e8df4e0ee2939d213bb8ec511cd71c351eb1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855df45f7327a34411a2443ec4c00d329911b0c55d19cfa208bc66675eca9b62e07d78fd1e5dad001958b89e5b92a0ad751438132e731fd2208d861dc2e92b6e716365b1061d8d6c3bdc6431ee628acff237f81d9217b54a93253dc4c85f5a9cd17b014592c24c2b15d2d207411022d4f29534a7fb3d4551bdcc463592df52d9c2fb4ed272a4101b1d505d3c1a9b133378d44e108fef772d7c9ad4e49b6dfd9eda78cf786ce65bd5477ac5bdb3581d5fb53105d5025aa50197639a69e250669c38016594b8439aaf6ff98d95d5eaf5684bee8f1659e3810ed1cf76ab146f10ab21530306ada68b4261636ccf0e5a254b3805840fafc68a51f8c80fa612e762599aaadb97700cf8e6c324af2d58dd3ccda93d6ce3cbe02c5477bb7057ab2d057f14c454eec56604153faedd6934bfc5c598a42b63e84c17f69e80c5f2f010dd96d592b1a330611c19ce64a34e6671baca40a2d05a4df8b4a4f9eb2f9ab003fa8d023ebeb656338577b39c66125b8156058ae80ae709fc766a503c3cb87acd651e27ac03a1d8f3f43fac85bfac5d96bd33d511ba19712f2fe3264953a35f9f42222bb48795c12ff08eadc1fcdd0f371a9f902b12d0d8e38e4857a232fc1500a3b4035a8d7ba1f2a8a5ad77ee358cda404041683cfeb70ab6954865fdad550330df6d5fa0076ae303deec959f3b2fbe3409c8a89800530440b0eb23d749049bf13bcae59aa7dc992e5a40092a50f0acf70ecf38a4b88fb95d48bd79953dcbc9b2ed2a981182b831c3286bcdb269be5a9d778a7be34d6cb4f17d5c3761c3964b2e2e4e1cdbed64ec94ad1282aaa6c6ea0229ecb8d1211239942a28b45f354bbd7a217a5e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f53a19a156ca3d27c24b5177f28e1f049b5ee5bc9e0f6f6e35ae55d11d49b2091e35f165bd165ae8e696abb6ffde8e005839a6cc375a0b501823481427d725df9639a0a7eab9f168047f56ed68a201545ced1b09c7046a29718b93530515c9b84d3ec148816bbc93a6a508256da4f5c1ca214ca067477181480bda57f89f31a4c35c70d4b7d9a8ae68a9b60b36a0d8b6ac62260a7d8bc154f4bc2669f278fe40478b9204b426e6f6bfeb94095197c26970eca3d606f326819c6d5cb6da911058cd515747954d690fe6e1e67e5bc3141e36096116ce441b88f51509af570a6ab9bb8b094bfdedbce8821767e8ff517180664e1dee9bd1451253ef4bd20bcb66298002924faf1426d0d9ec93016f0acef3e7795c18ad708088a5deb70f0e2d24306230b6af83cc78b665ea6e90747fa4e2f077b6cae2fffe8746506e16b4c6924cf120b72a5131f96ffd401ff4c0884369c05efbfd0a3b16d690cc6c5d04b924f517caebd7d818d01e15e307408d799958ee0a5b9fe4c8c8c3a4284ce8009a6fb8784010150455664526126c9838bf50327fb7700d0273faed76204f7c8ab916d004510ecc1c2acf71a4783c001fdda2dc006eb7ee6ceab448a8bc33b40bf59f31ae97d70f4add5f7aa47ee00372d6e2a1ea66bb7c6189b7ce63c7f2f745d2fdfc32431aabd83239299e59759f6644bf3b53192ff51c45dee686f792a5e1ff0a473378d17ff05a8e11a7c850ae6d3f73b6d5a0f2b9fddc860866f9c6a68265be8f46ce53dacc1c474f83905aa95d68502a84476c76314eb092f15fdf15d9870ed5a915642ce889cd729df6e17002e0839447fb5ec7ba1b5d6f0ef7723249c802e034470412aa2b84ad8a9c82d02a350d671a1e82e0af3550ed42d8a6ad83a7ff7a0c918945a197a908bbe91373a6a475b019d2ad39a1d0aa85442ee68a9f76af6134638dffefe1f132c1fdb575421eddfe9433e37edcbfab2716c1566a4c1301fc842debcf7903a6a00206f3a6e2fcda8c2199029c9a34d3362d41a50197cce3d55143a272a4d6f9795ab44b1873aea3da088a08de7ebb866355125bb8a4b265410fce9c50cf49e8bf00579698b159d05adedb61c7a6750cc2fba929ce732dfa104c049e6e3223db729a2148aa10bc1251a4c1209c4af75bd77e4c14d0001af4d91c526e2963d9b5fc81684c0601e25e64d6c21d2defa7ee1f3c5c6a5702e83a63d4566b0360affe8b273b31090c9ff2773d6677bc62bd80e34fdc5a132b4ce98c8e8881745de21dada686ab4d7c0cf7bfb42cd0a52b2419467e72c9f0164a84598bcd4af610dd258db2390251fbfbd30f0e19975e1895bd639a2e32517fc2594a6d849bb185d8115745d4a5cc1af86635cc5503465b9329d28575485afd911d67ae6e4e5b3a4297bfcbda77d8043536e6acbe4ce5936e515179c77b2b9e0a2147885c162a01c2ca77b81f83253b889b46d864c4f6b007d672fd980fc65d29e25ac8d0dd276076625091c7781e26f332ae5b861f84c656d84aa615a0f1ee0ca59bdac95bc77b314307603ed55b55c840b21e11cd7eebe3582fbfb1fb2dbd8d803f7950774f3b9427e894385198719372aa9f3fedabcf0804782c416143d01fe846cddcea483910d070614bf182ce32fb6e04afb1f0489223a39cbd712b3b8fa260a5891ae12dff770911df0fbf1eb273fc9d8702b0089786c0a6fbd5e8cb623c00b85abf8a7cfe976cd07f72006d87905dfb9c0d95f44325502e3924483dd1693811535dc7347e6880cf9525f8f2f3a9c04787fb9133984d046d5f69ca9c174d1a6bceca2928c23f5b2711db06800e94425d629bbcdd70e129521e8c34b6946928dbec060472535b8d3c9a1d13e29f33bb07ffbe06f17e7b611e7b871076af60b61f30dcb9072458867309f67bd313a71963b981bbf346ccd2fdd69a829c2701aa1ac46ac6352decc6338f30f2f0e94a2a00c77f240a1e789dee5ade5d61de4ebd5ae8eea28e82af3124e19a8d0a183aa0773c18a098938bcaf2384b8f35cc297fb703df0b369834fca8ac9b4dc2f5547eaa400d5dd9ec1eaef672c96c4450a72511fbf990a7e17f7f4d52dcf78a49e3e6907e124a8480ec138acacaa38a01dcb887bd3469f43fa2c65efbecbbaa7f4b277265c1f9614b68995ed9a8b5bc885b10ffb4fffc40d35b1b8839d6e9f04c9c7eb4cc8171712d3316304f8a5a2a6e3bbe81803d5809f0eec00d95f130c69812d11623e7db07cbf6a9266f08a0793e213083d91bb0cfe88ebf472562cc520eb2951bacd3aa55f26430a41b77c6627cc7adbc769ce8debac342a76e3d89186e8afb330543f04256f8c881a48adeded1a595a6a0e58a12fc3baca0f692ef3f94bd1cf5575384944fcb533055563402867475073653cf21ef5854d9ba9a75567b044075c4799d01b214a8a1fd3360cb1d58cbc0736b20f4be2ae115201d5ef23c5a1a78d2e8649ccb58f18004c3734a7c39ad208455609954951031cc1fdf09d1155e5bf4b70367e0a8f8bba0edc9a508d6a80bc935a078791d63c701446abcdc04ba45427766930b2d529ae3d39ca04dd8de1bc553bd270134f0a28e3eb6b7fda85b9ef95e0f1227b8f6a931aeefdfc17b0e5ff788928748fa5e8ed2c3f8af0a62f73aae7b34283b373a04e23106b6672a5325b5a9b75cae525df601f801156cb262e94fe60d5207b64d5a5c62c1ccda920acf8ca453092e5e53a85016c05a16b32de3a7d469777a5564545bec6f95f02f50df9e9adc27335a46f467f94a66029dcc60b3edfa38aebec8b086c84d987521561e9cf729846f3ed6a98ad29d932881240fbb5da217ea0164b67ff6e20f6bebf8f6d11a4a69c4c37db0b26ce9b7fb623021cbf5ed05ebb7f41402e107ad714da0e476cea2f8098e5596b85e028d7a065a8382f1aeb5f91b1f4577a212eb4dc271b30f4c1b07b0b7e4a1057a2b9501d07e487fafdcad8945aaae19192f6bef5c2cce9c85f07b34004804f83af7778ecd2f2cd8f978e63be3e8d2f08cfa6ec24e56ca9c135ef34b4c018964da8d093094c6a91e397a90fd088322d0a75a4e8a9486b478e61c2991955548a84f0754fc1f83abf257ba38a2999ddee37df8e6dfe81f9f2ce5c55d0cca443192fb07090c978a50829140eac65bbc3600fef4ea37b1ac278ef7db92f57b81fc3a0a404bf27f311f80366619cb781304d1467d3b23f39eebe1d3c7010c81674a5d5d356ae8f26017bd2168c08380ffd828af4b241287ce3d9f9320cb7218e6e5ffec7e22cb9cfcbdad2c3003db6624c98dce57d511f49874991e84d17e8bf5020651d5bbafd401f4a43dad381afb6d6a8bad2c8fe29821fffff6ff8e0c8da00f635f0663691d51522b37804aa90f43953ab0dfe9e707db19f5e5b0fc78949281e60c0411c9a6f77a7790d76b61fc4ab8bbda4e8840dc9e5a84f5021622a8784cc47504eed240fbeb2f28b507b884c13cf5824d533a404a7a1ec439a45538df28d95d3854de9978620e9b3eebc78c77e26f099a96e1b05b264eba14b8576d9bc2add6363bf351371ea7116b82fa6267de79801c574413a61f0bb9cfb2eba45c3d7bffe85659fe523b0b23e7f4bf1d8e0cd4957bfad2dc48b5be2a3b94c141d6c3a45a4ff7bab70f4f6ab9c08421c2d31a1d8d1a7276bdfa5529345101189a5ff5e2158a4972bd9fd3942783c923310d48c4f1fc3bf158fd6ff3d57edb030ed55246e5c18e36e602e3858e0e6a3c6b6ca9cd5c13adc19162b53b667ae233045527b3c2084dcbbc80f4d84882a8cb736afffbe5a5496ac29ead356210e372c58bffdaae35bd2d75fcca4e4f501942855a0313d4462e5af98e29fb4c2083eea85754e139b9d55cb246ee5a71acb7567268996f90813f80fa8b02b70fff037113ae10f866082815fc5bd1f0f89ed7cd8cd2f39499c64cef271884f972b92c904b6d2fd5260ade3844beb085430666b87d8f641e49a100cc0b34f1e6eb802f3a0db096b85f05764b0221a3cc9f24a32b8b0700bc8f55b29c77547f07b86ca2f59c0679cf7de73e5905eadb37aa6a56a15ceaa1ee0ca46ab892124e7f6a2d820010ca4543342ddb57eecc261429d936fb8755ec97e92b00da3bc78ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b90386632e0c01358b53168341006dcc8fc6a924ae89c9ea5c8771831b0a771751e0kiwi-ngkiwi-ngkiwicompatrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-kiwi-9.24.36-150100.3.53.2.src.rpmpython3-kiwipython3-kiwi(x86-64)@@     /usr/bin/python3kiwi-systemdeps-corepython(abi)python3python3-PyYAMLpython3-docoptpython3-lxmlpython3-requestspython3-setuptoolspython3-simplejsonpython3-xattrrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)screen9.24.36-150100.3.53.23.63.63.0.4-14.6.0-14.0-15.2-1kiwi-man-pagespython2-kiwi9.24.364.14.1bbw@bBb\@b\@a@a@av@`y|@`t6@`J@`J@`J@`J@_@_j_@_@_ǁ_3_@^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#@VbVbVbVbVbVbVbVbVbVbVbVbVbVbdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comfvogt@suse.dedcassany@suse.comdcassany@suse.comms@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.dedcassany@suse.comms@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- Remove mailmap so email is not updated for old changelog entries in IBS Signed-off-by: David Cassany - Bump version up to v9.24.36 This version includes fixes for: * Preserve LABEL setting (#2108) Preserve the LABEL= setting when the grub config file is re-generated. the GRUB_ENABLE_LINUX_LABEL setting does not exists upstream and not in any SUSE distribution. Set the grub setting such that LABEL is preserved on SUSE distros. (bsc#1197616) * Add ensure_empty_tmpdirs option for OCI containers (bsc#1197783) Since #1759 was merged, the contents of /run/ and /tmp/ are excluded from built images. This causes problems for some containers, notably Ceph when deployed in a Rook/k8s environment, which needs to have certain directories present inside /run/. This commit adds the ability to return to the previous behaviour and *not* empty those temporary directories, if you specify . Fixes: https://github.com/OSInside/kiwi/issues/2093 Signed-off-by: Tim Serong * Set /.snapshots subvolume to mode 0700 (bsc#1194992) Avoid that users other than root can enter or even change the content. This is what snapper does as well.- Bump version: 9.24.16 → 9.24.17 This version includes fixes for: * Fix booting GRUB submenu entries with hybrid images (linux/linuxefi) Variables assigned with "set" are not visible in submenus for some reason. Export $linux and $initrd, so that they also work in submenu entries. Fixes bsc#1192523- Stick to pytest v6.x.y Signed-off-by: David Cassany - Don't exit the script on deprecated function use (bsc#1196644) The "exit 0" there stops processing of the calling script with a success exit code, which leads to incomplete and broken images.- Ensure backward compatibility on deprecated methods This commit ensures backward compatibility for deprecated config bash script utilities. Fixes bsc#1195229 Signed-off-by: David Cassany - Bump version: 9.24.15 → 9.24.16 This version upgrade includes several fixes: * Fixed regression in compression detection The change from 282529de8f612dee32d54ee868c2365dcd829220 Introduced a bad regression. The assumption was made that the xz tool could be used to detect if a file is compressed or not. However, this requires the file to be locally present. In the scope of the method call is_compressed() and within a remote deployment e.g PXE this is not the case. Therefore the former way to "detect" the compression according to the .xz postfix of the source filename was restored. In addition the function name was changed to is_xz_compressed() because that's what the method can do and not more. This Fixes #2015 Fixes a regression in the scope of bsc#1192975 (#c16) * index.rst: Change title (bsc#1189294#c2) * 'KIWI NG 9: KIWI NG Documentation' -> 'Building Linux System Appliances with KIWI Next Generation (KIWI NG ) * suggested in bsc#1189294#c2 for more clarity * change has been discussed with and approved by main author (Marcus S.) * Care for different snapper template locations snapper recently changed their config template location from etc/ to usr/. This commit handles the two locations and Fixes bsc#1192940 * Do not force dracut into a compression setting So far we called dracut with --xz which forces the initrd to be xz compressed. There are other compression formats used by the distributions and they might differe from xz. The selection for a compression tool is done by a dist configuration in dracut.conf.d which is provided by the distributions as they see fit. For us this means not forcing dracut into a specific compression setting allows to make use of the distro provided setting and also allows to change/override this setting by an overlay file. This Fixes bsc#1192975- Bump version: 9.23.20 → 9.24.2 This version upgrade includes several fixes: * Fixed secure boot fallback setup Make sure MokManager gets copied. The name and location of the mok manager is distribution specific in the same way as the shim loader. Thus we need to apply a similar concept for looking it up. This Fixes bsc#1187515 * Allow creation of LUKS system with empty key To support cloud platforms better we should allow the creation of an initial(insecure) LUKS encrypted image with an empty passphrase/keyfile. This Fixes bsc#1187461 and bsc#1187460 * Delete obsolete ddb.adapterType patching When building a vmdk image with pvscsi as adapter type, kiwi implicitly changed the adapter_type from pvscsi to lsilogic because qemu only knows lsilogic. At the end kiwi patched the adapter type in the descriptor of the vmdk header back to pvscsi. That patching seems to be wrong according to information from users and VMware support. This commit deletes the descriptor patching and only leaves the pvscsi setting in the guest configuration(vmx). This Fixes bsc#1180539 and Fixes #1847 * Make dracut version check more robust The check_dracut_module_versions_compatible_to_kiwi() runtime check calls the package manager from the host and reads the package database from the image root. Doing this requires the package database in the image to be compatible with the package manager on the host. However this cannot be guarenteed and it is more robust to chroot into the image root and call the package manager from there. However, this change also comes with the cost that it's required to have a package manager available in the image root tree. Therefore along with the chroot based call, eventual exceptions from the call are now catched and leads to a debug message in the log file but will not lead the runtime check to fail. I consider the cases without a package database inside of the image to be less critical than the incompatibility issue between the host tooling and the package database in the image. This Fixes bsc#1185937 * Fixed setup of repository architecture Unfortunately the architecture reported by uname is not necessarily the same name as used in the repository metadata. Therefore it was not a good idea to set the architecture and manage the name via a mapping table. It also has turned out that repo arch names are distro specific which causes more complexity on an eventual mapping table. In the end this commit changes the way how the repository architecture is setup in a way that we only set the architecture if a name was explicitly specified such that the user keeps full control over it without any mapping magic included This Fixes bsc#1185287 * Do not apply default subcommand for derivate containers This commit does not apply the default subcommand for derivate containers. Fixes bsc#1184823 * Added openssl to the core requires openssl is used in kiwi to construct a password hash if the plaintext password feature for user settings is used. This Fixes bsc#1184128- Fix appx manifest for WSL containers This patch is two fold * This commit prevents KIWI from setting Identity Name attribute and DisplayName and PublisherDisplayName elements. Fixes #1780 * Fix WSL appx filemap relative paths not preserved During WSL appx image type creation step the file hierarchy under metadata_path is written to a temporary file for eventual use as argument to utility appx. The file hierarchy information is dropped resulting in all filemap entries appearing to be at the metadata_path root. The resulting image will side load and run but without icon and other resources. Stricter checks at Windows Store submission will fail due to mismatch between image manifest and contents. Fix by preserving relative path of filemap entries relative to metadata_path. Add log output showing both input absolute path and output relative path. This is related to jsc#SLE-12986- Recommend kiwi-systemdeps-containers This commit recommends kiwi-systemdeps-containers instead of a hard requirement in kiwi-systemdeps package for SLE builds. This is needed because the containers tool chain is spread in different SLE modules.- Require qemu-img in any filesystem based image This commit moves the qemu-img requirement into the `kiwi-systemdeps-filesystems` to ensure ISO, OEM and PXE images include it in the build service. Also this is required for images that are simple root-trees in a filesystem (image=ext4). (cherry picked from commit 4e91e028eba763321a0958ff0febee107d944af8)- Add a requirement for kiwi-systemdeps-iso-media on disk images This commit adds a requirement for `kiwi-systemdeps-iso-media` in `kiwi-systemdeps-disk-images`. This is to ensure that installing `kiwi-systemdeps-disk-images` is enough to build OEM images including install media. (cherry picked from commit 307b7e0234c01846587024c008166310e8d7d8b0)- Turn fb-util-for-appx requirement into a recommendation This commit relaxes the requirement for `fb-util-for-appx` since the utiliy is not part of all SLE-15 service packs.- Bump version: 9.23.19 → 9.23.20 This version upgrade includes several fixes: * Refactor grub2 installation This commit refactors grub2 installation method to split it in two parts. Former grub2.install method was meant to run the grub2-install tool, however, in addition it was also running the secure boot installation shim-install. The install method in KIWI is skipped for those architectures and firmware combinations for which bios support doesn't exist. This was leading to skip the secure boot installation. The current approach strips the secure boot installation logic from the grub2.install method, so skipping the install method does not automatically result in skipping the secure boot installation. Fixes bsc#1182211 * Fix lsblk flags to get sorted output This commit modifies the lsblk command flags to get a sorted output according to the disk layout. This is related to 176c7eab commita and it fixes bsc#1182264, bsc#1182963 and bsc#1183059 * Avoid using generators in pre-mount hooks This commit deletes the generator that was creating the sysroot.mount unit for ramdisk deployments. Generators, specially the sysroot.mount is expected to be created on very early stages of the boot procedure as this has impact on relevant targets such as initrd-root-fs.target, which does not depend on sysroot.mount if the unit is not there. In ramdisk deployments some data is known on pre-mount stage as as it is downloaded from the PXE server. At this stage it is not safe to generate a sysroot.mount unit that depends on initrd-root-fs.target as the target is close to finalize or even finalized already and could potentially skip sysroot.mount exection. Instead we include a mount hook which is only executed on ramdisk deployments that simply runs the mount command to mount /sysroot. This fixes bsc#1178670- Reference commit for SUSE maintenance This commit adds a reference to bsc#1180781- Fixed validation of bool value in dracut module The oem-multipath-scan setup results in a bool variable inside of the initrd code. The variable kiwi_oemmultipath_scan is therefore either set to "true" or "false". A check in code of the form [ -n ... ] is stupid since the variable always contains text. This commit fixes the validation to make use of the bool() method provided for these type of variables- Reference commit for SUSE maintenance This commit adds a reference to Issue SUSE-Enceladus/azure-li-services#255 and the report in bugzilla bsc#1179562- Omit multipath module by default The plain installation of the multipath toolkit activates the dracut multipath code. The setup if the target image runs in a multipath environment or not should however be decided explicitly in the image description via and not implicitly by the presence of tools- Fixed multipath disk device assignment in kiwi lib The former lookup of the multipath mapped disk device contained a race condition. If the lookup of the device mapper files happened before multipathd has finished the initialization, kiwi continues with the unix node name and fails when the device mapper keeps a busy state on it. This commit changes the code such that in case of an explicit request to use multipath the lookup of the mapped device becomes a mandatory process that runs until the DEVICE_TIMEOUT is reached. Default timeout is set to 60 sec. This references Issue SUSE-Enceladus/azure-li-services#255- Bump version up to 9.21.7 This version upgrade includes several fixes: * Skip filesystem check for XFS prior xfs_grow running xfs_repair check isn't strictly necessary before resizing, and in some cases it may even prevent resizing by giving an error that would be cleared through mounting the fs (e.g. when the fs wasn't cleanly umounted, and thus letting xfs recover and replay its journal). Given that xfs can only grow online (while being mounted), this is sufficient to ensure that the fs is in a state where it can be resized. This is related to bsc#1174009 * Fixed grub setup in EFI/BOOT directory kiwi copied the same grub.cfg file as it exists in boot/grub2 to the efi path. This is wrong as the setup in the efi boot directory is used to enable normal grub loading and not providing the user grub configuration. In addition the changes here makes sure that the early grub boot code is placed into the system in any EFI case except for secure boot when shim-install is present. If shim-install is present it also creates the early grub boot setup such that kiwi doesn't have to do it. This Fixes #1491 and Fixes bsc#1172908 * Use rsync in inplace transfer mode Using the --inplace option in rsync helps to save space on syncing the rootfs data and prevents e.g OBS workers from running out of VM space when transfering root filesystem data. Also using --inplace allows to keep hardlinks intact. This is related to bsc#1096738 * Don't keep copy of grub2-install in the system To prevent shim-install from calling grub2-install in uefi mode kiwi temporary replaces the tool by a noop. This acts as a workaround for an issue in shim-install. However the workaround left a file copy of grub2-install in the system which should not happen. This commit Fixes bsc#1173226 and Fixes #1490 * Fixes live ISOs This commit fixes iso images. Due to a change introduced in c7ed1cf live ISOs were no longer booting as the rootfs.img filesystem was copied to the squashfs container while being still mounted. Because of that, at boot time, it refused to mount. This commit adds umount method for the filesystem base class, so it can be umounted before deleting the instance. Fixes #1489 and bsc#1173356 * Support grub timeout_style parameter Grub supports a style setting that influences the display of the menu depending on the configured timeout value. With this patch kiwi allows to specify the style via a new bootloader parameter named timeout_style="hidden|countdown". If not set the grub default applies which shows the menu in any case. This Fixes bsc#1165730 and Fixes #1404 * Use auto video mode as default for grub An explicit video mode 800x600 was used for grub if no video mode setup exists in the XML description. For grub this should better result in the auto mode. Related to bsc#1165730- Bump version up to 9.21.23 This version upgrade includes several fixes: * Do not exclude filesystem folders in OCI images This commit does not exclude filesystem folders during the rsync call in OCI images. It has been noted that including an empty /dev folder does not hurt and it can eventually help to work around some limitations of container related tools such as buildah. Fixes bsc#1176129 (cherry picked from commit 44c0029ce5893bd4c68b21df14bda5bf32a5c869) * Fix/Refactor s390 support This changes the s390 support on several stages: 1) On s390 the boot process is based on zipl which boots into an initrd from which a userspace grub process is started to support the grub capabilities. The implementation of this concept is provided via the grub2-s390x-emu package. Once installed the setup of the bootloader is done via the grub2-mkconfig and grub2-install commands and therefore from a caller perspective the same as with any other grub2 setup process. For kiwi this means no extra zipl bootloader target code is needed. Therefore this commit deletes the zipl setup from kiwi and puts on the standard grub2 process. This Fixes bsc#1170863 2) To support different targettypes the grub2-s390x-emu provided zipl template must be adapted. Parts of the former zipl bootloader setup therefore now applies to an update of the zipl2grub template file 3) Support for CDL/LDL DASD targets has been disabled in the schema When testing 4k devices and a respective zipl2grub template setup for CDL/LDL targettype it has turned out that grub2-install is not able to run on such a device. My assumption is that the device code in grub2-install does not work for 4k devices with an fdasd created partition table. As this needs further investigations and most probably adaptions on the grub toolchain for s390, we disabled the setup of these modes for now. emulated DASD (FBA) and SCSI targets stays supported. (cherry picked from commit 836633c7b2b9b4aa31c1501c2e9817dc00af290d) * Fix compat link for rpmdb location This commit fixes the symlink creation for `/var/lib/rpm`. More specific for derived container images in which the base root tree already included the `/var/lib/rpm` the link, the `ln` command was creating a symlink inside the `/var/lib/rpm` folder givent that it was following the already existing symlink. Adding the `--no-target-directory` force `ln` command to treat `/var/lib/rpm` path as the fully qualified symlink name. Fixes bsc#1176977 (cherry picked from commit a6f56179b7879d160f0aab985ebda20bc49a83be) * Fixed s390/sle15 Virtual disk integration test The integration test used FBA mode as target. As the target is expected to be KVM this is the wrong setting. SCSI should be used instead. This Fixes bsc#1170863 (cherry picked from commit 33c5780d5a8f4e6b41d51bce6bb3e838ac7ded4b) * Support dynamic linux/linuxefi in any case Instead of restricting the dynamic linux vs. linuxefi setup to a specific grub version, support this setup for any version of grub. This Fixes bsc#1175729 and bsc#1176134 (cherry picked from commit 988404ff9f04384c3efb53644e69d520c022c03c)- 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-kiwisheep20 1655215115  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9.24.36-150100.3.53.29.24.36-150100.3.53.2     !!!! ""#######""""""$$%%%%%$$$$&&''''''&&&&&(())(&**++,,+--......-----+//0000000000//////////1122222222222221111133444433311111111556666666666666655555555778887755555599::::::::::999999999;;<<<<<<<<<<<<<<<<<;;;;;;;;;;;;;;;;==>>>>===?????????????????????????????????????????????@ABBkiwikiwi-ngkiwi-ng-3kiwicompatkiwicompat-3kiwikiwi-9.24.36-py3.6.egg-infoPKG-INFOSOURCES.txtdependency_links.txtentry_points.txtnot-zip-saferequires.txttop_level.txt__init__.py__pycache____init__.cpython-36.pycapi_helper.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.pycapi_helper.pyapp.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.pycbase.pygrub2.pyisolinux.pyinstall__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgrub2.cpython-36.pycbase.pygrub2.pytemplate__init__.py__pycache____init__.cpython-36.pycgrub2.cpython-36.pycisolinux.cpython-36.pycgrub2.pyisolinux.pybuilder__init__.py__pycache____init__.cpython-36.pycarchive.cpython-36.pyccontainer.cpython-36.pycdisk.cpython-36.pycfilesystem.cpython-36.pycinstall.cpython-36.pyckis.cpython-36.pyclive.cpython-36.pycarchive.pycontainer.pydisk.pyfilesystem.pyinstall.pykis.pylive.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.pyciso.cpython-36.pycxorriso.cpython-36.pycbase.pyiso.pyxorriso.pykiwi.pykiwi_compat.pylogger.pylogger_color_formatter.pylogger_filter.pymarkup__init__.py__pycache____init__.cpython-36.pycany.cpython-36.pycbase.cpython-36.pycxml.cpython-36.pycany.pybase.pyxml.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.pycmicrodnf.cpython-36.pycpacman.cpython-36.pyczypper.cpython-36.pycapt.pybase.pydnf.pymicrodnf.pypacman.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.pycpacman.cpython-36.pyczypper.cpython-36.pycapt.pybase.pydnf.pypacman.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.pycdeb.cpython-36.pycrpm_dir.cpython-36.pycrpm_md.cpython-36.pycsuse.cpython-36.pycbase.pydeb.pyrpm_dir.pyrpm_md.pysuse.pysat.pystorage__init__.py__pycache____init__.cpython-36.pycclone_device.cpython-36.pycdevice_provider.cpython-36.pycdisk.cpython-36.pycintegrity_device.cpython-36.pycloop_device.cpython-36.pycluks_device.cpython-36.pycmapped_device.cpython-36.pycraid_device.cpython-36.pycsetup.cpython-36.pycclone_device.pydevice_provider.pydisk.pyintegrity_device.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.pycmount.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.pymount.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.pycprimes.cpython-36.pycrpm.cpython-36.pycrpm_database.cpython-36.pycsignature.cpython-36.pycsize.cpython-36.pycsync.cpython-36.pycsysconfig.cpython-36.pyctemporary.cpython-36.pycveritysetup.cpython-36.pycblock.pychecksum.pycodec.pycommand_capabilities.pycompress.pyfstab.pyoutput.pyprimes.pyrpm.pyrpm_database.pysignature.pysize.pysync.pysysconfig.pytemporary.pyveritysetup.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.xslconvert71to72.xslconvert72to73.xslconvert73to74.xslconvert74to75.xslinclude.xslmaster.xslpretty.xslprint.xslkiwi-ngpython-kiwiLICENSEREADME/usr/bin//usr/lib/python3.6/site-packages//usr/lib/python3.6/site-packages/kiwi-9.24.36-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/markup//usr/lib/python3.6/site-packages/kiwi/markup/__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/bash-completion/completions//usr/share/doc/packages//usr/share/doc/packages/python-kiwi/-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.suse.de/SUSE:Maintenance:24646/SUSE_SLE-15-SP1_Update/32a91b840970fb7806c1beaafd6efcb9-python-kiwi.SUSE_SLE-15-SP1_Updatecpioxz5x86_64-suse-linux          Python script, ASCII text executabledirectoryASCII textpython 3.6 byte-compiledemptyBourne-Again shell script, ASCII text executable, with very long linesXML 1.0 document, UTF-8 Unicode textXML 1.0 document, ASCII text, with very long linesPython script, UTF-8 Unicode text executablePython script, ASCII text executable, with very long linesRuby script, ASCII textXML 1.0 document, ASCII textASCII text, with very long lines  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR5>$7݈5LHkiwi-man-pageskiwi-systemdeps9.24.36-150100.3.53.2utf-8a6a612763e3707ba0bc018eae22359b3652cba5b967dc4d2efb102ac7e3cd603?7zXZ !t/j] cr$x#Fҳ2E3-A:< th2}y-SB@!%l<µ]oo"z{%v}=GGk 4K9Uv#R*L&E @$.'}9fvSpXӰPr#AݠA oCAf@_Pn@cI ВiDCbEݰD`wB U6:xeߦlb`պsŶ2KhFx||^>sBBP<0 i,`$BOJ!NPmB/SΗWFē;Ji]](SY^=V:iީ"+Q}s(i0 %zؐD{FJDNR KKITxjZrEQmUkZ6dX[)f-@ِWCș :DHv:Mߙ$ ^QEP“YJĆ#5xDCͦ6wY[dVΡ:6d`Df$iBخC^~v5L41qHZ!rt^onG4sްȍ'2$h !y ~2R2 zrmtۧW`h9)> 2CubkW|ekH:Q Dtw16J&=p(LrgBgEfiSg{7~wTl  ԙ"$h㗅wD%Eq}ѹ$VКİ)*YZ;h*BPy€d2Ѻ]3Y6dk駎u x.# BU&[2.`-kw5ļ_ʶ Ҹ'0kH̽\Sv..Rբ1qC2emRحlGl4 h}#qw{5I*E'IД?:L{z>j5gڑg)ϠMen2_Y>lLc9F %QlƇpAe*/^kVO!?ǂ8 yhK[a([^&b@^=â^ f(wQLwV?^َ+ OJ5("F1GO ҾW9<4ym vT*yx  P=R7 <$6+ҟ%*Z"SH)Ҫ5_^S*^n`l, PpTD0dW({e7ݟĺ~_+^~D}sK777BS6Ѯ m\YPNo/|? v`t'.| {B6OpS:qO?$# VEҩ :OCqEji">+Ms]&570´BV0\f}9Gr$)GkW/لBL|XƘ*xgOɂsya\c7#!.ʯC謃)e٢mlyH&Qk?BzpI߯phG~l׎E;3 2Gn凃V ,zWLS c}9Ib|Y N tP3؊LyuoF& Åue p;84#M_E SGkߴ `ɥccfJ9\];sقd\1;]UẒֹ|ױʧYf _/ 1))KJɁAD_`=~~7G#߃{0j󦽳BŒծ( ىF8E:ȼXXeΛ-UqUIv)Sr$q?H"$=K<8K''Tެ.|^1CM>^v/&QR{ttooe"W΢S$܀pjjU@MT?(ʷ7A0 Hǹ^_\r{d1 }ڟ?Ξq̭wXط cyH6s}(VG;x?i`Í*:tP:iWע_e\&(y8F4\&]9Dh?,]N7uYۨR vͪ 5V* 292D~¤oMIPsmK}6F1Nj-NxK/C;&:rջck~E?z-#3+QQS2gið}t 2 1垎uri`H#GFR'`J%G:gˢQn - H2z]@[28:WPs^w\f:f#.aտ@$2pY,m!үKO/,V>KfC[6o`xcWI />Zty-<`v ,T"]]~xQ\K<"m-m9 .2Ϋ1^ſT[2k^iaߒܣJ+WZg]fl~pNAg[І$uL{Q b~0(X.V?Xj= ; H^E$6%C2Y7*euX$Tb=l7$F% kMG?!EAo\ _(Ձ6tbPY2#|9ޣRx `'~JY'U'S5۲i[DTCxC]5/[a []Xm۫QM-z4㰻]Wß{ !L]X/DWNg2ŵJ y$좉}<Τ*ي{cHU'#/DUK<7+uϖv~SXHq\JTݮ~鈤&-Q%߹uY=c)jsM}ovm{ V2BDQ䯆 g_s=ٯp~5;Պ>i1]<&G͇*U|`с|Ƣ|I*"n-)*l͍^DGSZ@N2&T[F\cDhrR1`0[ p=8TfO4m/Ytv=ä@x:jz<Kqp0I0w+x)"ms:+D<] dCl:RV;GEu{=$ Gݕ9 t&bհ8=j XLj7QϸFu9DL'|輊mc{A0wˌD:Kkc2~ o꧞TVQ H/s~vﵕ#f_XWwrRav^栌i+>JƢQay6$|ΐgumg;wUNP {ԕĸhy-! tww!Cv8=! dI $*~̅ץ- C%2O'b8ʼM>05Ag _p{ȵ;k/^FU$ r!RIB/ Y` _WVBiJ:#3?p\?5Jˢp\[, =Z`hê3 ouE)\CfH^lݠցY16dQpÚ䉅c:qo 4pth~;'2`>tW.esSyn/2)hQzBAT[lBtH0RkGH}I /12zQl?%P9C1zQi,eF"^ZZ{w<0L$zI_@^~FR8ͪl|ІgB?/[9x-6Rz/;:W,,3S٘Ċ[2L4fERq- Z+ᏝCNPWz߈a W<8*s&G:l^ɖԡ/?l^&U]9huMBm}R1M˾6g"Aq ]x,:kZ eRvX ks{Oդ=t ʫ0!5O)afz7gv-O{3,ޅ3'wut(eo/o75bN d=SCwVA!.I&H. z9Y-<:sdyvkB_%=!i’V$Dʮ߼U %ekΕ#BlܥKc`/IJW1qnHN9JJ'mբ<ܥN*M*'1y߀G>6mL}lԽtU2>'@Kj.M&s%!eģS{4Ni(r4jz++d32ر3/l *DՇr7Eq/7r1Mʥ_{ 0l6@ H@N!ٺDapg75xsHGz5AOBK95/k"d5wSZ)[@fKlMsSP/qݽsQ#dz CE. B.}F;wE!!1r^Tp?lʉO=\Ӆ2Z` DT~¾ Y0i;>t(L.4OVx0뛛 7?*j$O*E. ?%Q~Y˓]4R| llHfD~j~׋pg@SHDv5ư^vֳWk[|R1B?캇 &\[#a0>=ڱe]_DcV UbeȘTt9Ds0ϖ0lbh8xs7sp7M-#0ޕpeKmF2^VN54\-R+d mm;sjX \TgƢ[(}T.lݐ%^eV mnl4I%Bq18 42nG"(״4!5%mhj0QR_o*~S"iG*.d5Sg%.0W3e&µTޕ)֝,{CnJ04=a _Ѿ{{Go±7S›2$dmZ̾T i )M3׍](jh%aUk[C* Ul^F}9w$f)Ei'$ZLr9q)v*JmQ}x c*_jf#L lB=!uMJEr^dMD /˗sG^gl ؎:%\% O08&{DS.|\I/ Cn۾ 9 N{v#^~S=..U(41If}NsfLY߳K'xugB3'/séqW9=+A1Sdnd883$atFl a\7Gψ.d YoT\) Y[y>|kg%BS :RFg^-Βb3ZAKpC+1ƾIq%%SYXoSX9!(h~O2\CǔS ㇦%qvwdG * ۦw>( 1zmጶf5XS6;cU冯 .wyھTTNf &G9d(zXX0U,V k^8G<ϰݳ2|țb٩'roR[zcPx16pclaʋwF46~NͶ#^X#GCCkS6oxEh.àe->0tw(C1F\8)ċIs 1n̓"wς ]M ~Fed4z BʘH#>.~XN0R b _ PEM,@,e%u!wTC1X$$^ZXo2vH0eP:i3$2|=# ؖI>>"$"ﻼ2|~A ) l[G%YE+<:&Ռ @|TRM=wN~iD0YT8Zmo=϶_Ci:9"GsOl+1Ncd%>Ye3 IT]*Ic*08ZRB,"'H7wR'1yhC܃sduiq)<ȐQ"; +qҖZԠ#6e$OͺG 8lLDLz\%dngdXN*=sk0oRgʱN&yO4:+vΘ8xlԃw( h')Ad[׬Z\qCEϿ< jwbPxs~$SM'`x}0(VT48Gzsh4p8 Q;zpPo ifK<d^NmNO}!*y񒌕uU廚60['[h18r}psfVڼ!EmU0OvG{ :a6þ5FD&FY_U~~0R"Yƭ H:S)?0gJ>Cn(d!LjxxFveP^H.K)v 5m`KI_xFl#p^_u={NA%P:#k\7Lv$4{nF=W~ dgB]T>dI_] uO[|!i[ YNj3rRz /s$قl5ÔѼ5@ZH .)n,؄ԯ҉Dc6mF񩋟0Yi2ų6Ԥ  5r/` Sa)Ctf:`G-^+"-/&iS4œ$LV(b5V>R7ڱ3aaLeʚ&bhWp|bqj*ers>硄Bތ"ʶB`9 MWuM-+Cl :r NJyљo0HbT#@ķWC8qEV/$Emp0_ j:Z dɗKn3^ 06l9txvPcTA2sIGc_U^2UVI JrAt2># q~'U#.+Gb)a}E[NdKTF^{D-i0ڢghg;Cwdb-$COY&]47 ZB^݄3CЯ bFU!*MPR6r:r<" 9z{q E sl )ҭn*9 q, ![_G!$VH(LQ;ba3˞׽^k6,yizFVH(wt_4ؕ+~S`1M=UTpc h{J9Zԩɠ6PI,} W: ]:hcٙ[gULEV}X-Ve>5D䢣@_ZtUhN2K)J ShP*u抟oT`nFn0ʇT nTjnn__x\6GQZ/ㅱXVI71 L"X,q + ;UuUF-_;rYJ`N#p's%վ츖V`OCxzdgsTSn#ojHN\Q?/7tn*Y}}oջ LŔ=L}=4M;[Q i-fص&1T4Li]y 8Sї+5! |sD{ʡ Չ|A9Q]qraT+_8vQUE!`?Gv@G+b6C;&nS8F]6|p{,43͂~oW# Z^Q0FyhϞ>N cR#z1Y4Ѩ!8Q͚ r HnN2ǗfެK8B 60/4qV;ju侚M55Ĕ y~W< ]sd%鄲>eu&k>pjѢ/'"ueK7y=I`#u%d76 sˌ?z!uꚁ5ٔStʀ;S/6Q[$lh+oF(12%,O )$LV6㫊=WVE}-d'OXEyxsY#T𷨻=?qO@{oGq[N@S@@MB 6)g Y}ݚ&g - 4]Fec!*92S7E{wOp_SyR(潽`eu]eEflzB]'@4embQd~+E'R^Aԙ<86COg[~B o[&Vwk\&J?V6ϑTL|򇺄"X2(OxL$dUֳG63(k?YtW ҴnYY,"vN Sɖƈ(:$y=Aۅg$๮9F >I'2x!eC"gz)YPHfQΩP’dde9=5c/+OsW2gj Jlo`nߌC Ab'G%56Ĵf4bFlq}HEErǃP{3P,C#v;F -Ų7{Ke1k¡)ZP+"AlHDsREI~=9SE2ձ)2ж{`DhH*ba.ԄXH+ aUBkae0QMQԬ= JXTH3~>ZegQT_;" -_JeiRj rD쉹R4Gi ^Ou[8vT3 ]"#ҩi w+ǡ)VU^7˩BSQ e RsNr~ǦxR,7M\;R^uW94GϽQU֑.~tE8UO,s}Lo/t~nx?X)8zzVoŧCŅ&Z"y 4xo}?QBi?K| +l׀C1 xRjk[J[2+O;zܙmU 3%s)3!2*[eR~/Ou̦.g,Ö ^^9\J `猤mck\aGD?wR;kzx: ^2 h?ŶeM# !RתE3d;Vl1e#6\#y-2*}NBQ}#mnq(YeRwϔ {aNe8bTANmePnIY㸎6M{;.XT+VO`^m5 EޖMg`d!{8kڎQ wA5ef, ː{6Kl(,50F7=U$ Cp Rɉ"^;ih5LbBxs%Kdvq˾*)^ Ap}1&8(z@QuT$'A\'</Fjk,7$]dh}h5 Py?QZ$ՂRޅE\~b=1$Xr_b 㵂{zMl/tR![U^;sI-^NseL9?e<9h<45H*"1$}G֠fF^0L[.J1rH3&ъ]!TQy<=jX qn R'#'Jϱrƈk.U|(ӵ"u} !`E"}عr}=>5 ۝k/y8i]͵VK[N_{ qV'4=NgOai[,ciJ-iЁxE[>ǝ0WLVD7[i#oUԁsKu<̿0$IΖ6ƚ"]* 6ۺ$'vF@{8V EH&NyTvx3+0_[.8sOǏ Ҡ.פ V݊bu%G NV`A24?j!ae,>hO$渽sr|$׷*V.{su!v$~O c`r&o+9MEAqb{GŵtA/z (axW)'O2&ˑs-Ri^{=c`4 Ӛe񝇏ulܫp# d+KyHUP:?rnM!Fr?(ٱrt1]@E5R){}wJfc#" ޒ8Ͱ27tCla!" o;TL3+>NB!MX(G#WirpA9+vϻ% 4"߆ۮ`]u4v("2 ,?CAJ"{8!1w u&+~z6^{VW)JH. daII$~ |2&-e?v֌fI\ZSSij$ !]cc!֫_ZoǻE,`c Z'~!$K>oMc Dn-=B&tl@) "\z;z;n}w=x=JjDc1OkLMGqʈtI%/eeb62[ 9 >0U'h`U m $@T~ W "}V~{9{I\D:h睊,.(F%qhh/SVw6*0L!Y"8 4k:عgR>#ƨh}lۈM.^L ͪ@+5$d "&gVX,? A|tKrL}ܬ% цŜu%g{z8(ϑgKR>/ф~WpVsvcTU@: W@qe+Dxnz3tfpzcǃORv9ZMiBN+(A$Wn'{zⲇlZVʖ`z ԫᖦYތC!ae~)JJu~?ܜFn@QLc-^ 鏮R:*Me 0CXƄe\tG&nsf)y(ܛGBR,2w$GPNFWrA0}Ѷ1 vh5V (QaCnfR?y"?zg0Fˣ-ְ T鋁Ű?OmQ'~\Źwف\nOS}DSF(= ܲ6`7Tk4]/gn# D +HGb3eFػ B G!ZLQ-Ba(IF~˨ՇlcIh#ʞKG 5ւp{.\򿘉9f]G1v.0x݊"(/\C)#?嵦>"cZXm_JQW{slaBsQKϣy3<+\/@xmETJGzhJd=կIm|)٨aJ.w[dGrL՟m;3`ߟ1<=CyD"V`OX,L_&bISԏ;V}۝v۬fݐ"GM .L6ZCG_T}Q0s"G*G/JP-o)Q Wc{F#L%:c؊{d]tзraD^M-y^ @pbvK]09"jJ S0 !y@۱|UM9^NH/͌IE_τ`7x OZ>DN7SI4 <ɥKPmZ%O\=荇95k#g'cR9}1I0A K "?T̼rQ޴Md?wኾ Dv,eEd92JKxˋ +Y dJݕ.Edr˪m^駽]QPr\UdɾN8iL`&+#}Mމg9} })_VT2k%RIR s 3xf+GG$n[' y@?k }ʐKv,+8fQ*T*dv2w+kL?K+Tq_<ȵ;~0Ax=YE+y12$h5&i`qr`n'?xEϮjN4kCaY#Je5jL:k pir\I7L]f NUDziE5ղǺ3{Ot$ØI&5zi%`kq[wB`|u7oطT{,}%^џB[@aYrY^Ͳî7Q_6uu4Q#Ye:QD*%@sAA 8+3gIp&C!r l᪒1k"zBs}vhz/˖a(J.◬d8=x"zƗ{~e<[WФĨW5M@;Z: Q3dY+/(>9MecB+08W˹a5dԮM<7PIdL&Fw؆v7(D@+&z@GT K:R̷]>az(%KNb.5DȺV;V^-xp02`jT`4H7|{EC3գ{ϖI%m!K94z?ծס;E", ?/q>7Ω)x$kwj3xq':9prS{jiR16X7v8%"_ -EMq^7: qT"5:i$rb2KZ4e4ВhP(^'Q<qaEF%1Vǁ)Cg4ˎ֤}eXJ{,52:NBN ~#Ӻؿ=x"<ړ>e_ȍ:Qyo >YHqw}K_;xJ"3dqw(bldc&v?C&,BE5F/d+oFi'Tc- "xV` J7Å NOH+sg\FD, 1hU"ck)d~7o(H UƑYbM!Ɂ3€O{uiv|!{@l9Beq=¦Z&O> iDT&5x!T6L;wO󴻻6Z6vT(ֈnąH [Av4)J7"7TƴqK^KZҼ1z:xHLTu;#PG$ki.~lX癲EwIQ͢][$l@3:X^ŜTpLB|L%q k;װ!Ǥ$::Jt !ݴVqXvDI?jfƂ+]I(=8 []4>2bEWa4nvi|Q(e2oqc\6e2'&uB!ժ3';Or.FPS ,fJK6JLEa[G]T|9:~VᚲnG8-Ãlpϖ3xp( ɱyYYQcEJ9ేFQvDSR~c5H:Wl9G;WB$fXŧ_!9Cyij6>M{OFU6zqkwSKI@}4R Tf! ČZ 'v0b:4ÈPP j|@=;cUC@:`h&4eB̊;Tc]kU[Wn~ 뙸Ir=62fy6G#x1ʿ+M蜨I0$)Mi9$5+d*qwœ.E9 |ajDpQ68rL@vl0JB4ֻC ͡=A$$. ;Ҟ&e\!"dqk`@>(FT /SWDs\$$ցc7C.HZy?E!_a8{@i,%­HwZ8@M\QSmޟ9;${x9N,RJ`^X2GKt:-H[5:oH:&ԹA+6I>4uR sir<xО6oPn!e,FiCYuuD.{b7Z5B:=y_(6.[V7SX"X_}ZBt5m6~=(ϴGa:c /}|3a5G AhqSE!;q Z<[$~=Us\ۻzi6qcěz0:N.Cu}{ƽ& 1BSqENԙ1k Qx<. HhdSCU h:f=zJRW>yU'+ĐRݚh!Cd)Vg^ĪxBw~ҨOǏ97Y7ra׸04z{t&+qe#V+&?8OPLOzLeƄE#ցg "wo Z7N.yhRfjE<@MB,RaAX9ȩt ۧ((lxvfWIP /gJZy#DvIL)}8d0Zhec㥜'_bjI Cr5򸥠^ !jR9O6N|/qޟhOa9%Hs lqb{*g5,}p3~S@R T=i: ²Bv OAMy+l<$|rQ/zd'x%ƁTk &3<^5qW0a|c?,#7v[8o{}Í#&>oX={|[|[N,@:Fka40D4Wѐ\fMR 4QM)S}s?Aj%p&woz/8$LqyÆ-j7;k|C+!>&Vg-M۠ͩ3 ;k9@B FI^Q}ԥƃ Sᒋv:h\4L}uԲ{rґUi{iagVɮ)VФ{ 3aJ^eĄf~jPјտͩ.R\4Sou4%9F@BCoUЋ8NptӮ{gqzHŵ) g>tzY'bk:& J56zH::|iTx ' nOuC;К>R>)'U q%e3fEPywOyE2xmVVij~k(,Myڵ&|&+;+c.0gS/4tE.+nCU{%S+RfKC24"(! k>0%32ĕn5qsP̋2r|'L~N{.W%jz!&$.&d-#~O:õOYW<A &9e:BDⷹ^Y˷E7_s!jLz%ddg9F0*FQOfˋzs3}wl5/bk#DM鏡1X*܄PƤ n^uԡI|ժnUJWiGQrFPm. Y5$\ BY*BtLuІNtҼۂ%[CPOY\K@h;adjD_vټ/9)>Un9ulBd;t8vl_?4> <v*6Nu"vDx ,KSG TETOni}b30, au@V@()oeD|lPS4,3 28V[fn+K xm\1$xBx8-pQ|$?S~p|SjA' `7>'x12ĝPnKT7:!ͨqrOKa^gNXҒK彰~f1TXɸg3lj-._o:6>"7%S$Kv`Re9#9?.$Һy :J<<`{jcB82GC-QKvhrKk"G~!ޙ8fM3&'M^YM^K[8E;ËeZT;4 my+8ɀ }ኩ^!1tC<>2pθdǜ,f,ࡖ/|K{.>K/RhyYXhP2o&wJvThCsȞBI?`֋\aݜ$e:̘B7IOW.}jijů64k}iY;|"6UIGzj 6bE=*U:$y~HG'Sw:&<ݍd62^Ŧ ƎE7(Ncj1\pTk~clS Y`1%#/=CAʽ\b} )TT@Z(]\vോ}6htwD+Ӭz')<6_bXE]#"Y$%G9h ߉W[I6M42%S<=t}8}AE AHb4I!,* 2fHzPqT omXX6HJZ= AA5?j|D;֮m%B3HSϡֻ2 44f{N|}7yR_xXf7ý@xx.Oy\ 2z4]u*#fE@(˱GOL;a}0=C2Cdr<0<LQĶo _cM!{4eLRS+0|uϾx簳,ԲrKXS(E y 4Ok6]ޟeMn/26*rpE r1jg >N`d?h(Y^8Rl~G٘H2-RfXQk ʢh (ܧKxa1ER aͨ2ĠQQg {ѓS|{9٠ۃTwRe je<\GDLfW_*(0qesGŅY%M4!X,Op,KZ>"$)}Beqm r K+w"-eUټx0*_R&%pxC_fwϯͿ3Oq2TA2r~+ɵ}iXo(V9jUQo r${vl?1/Equ~e8Oncdcyhzꕥz&pJfIOs)lJgBbAv7&OL9d.pR| xdUq^}e}#VvFc(?paMP.N,R("=YױTucɬ}L{9X41jIJ}1!f;3y =I)(%T4 e4.߮Q$I-1*[kn|`fRل UlIJ2nC.X{f/p4'/B:84RA;: $qǨ+Y0ԔL]!t ã0v\!.eAL`RD黨3-vZ 1L+p?u orT!~ï7)9XV .0_Z)Yi jSO6Q~h9n]0F:`")f':MGA/Il,DR[=p߶]!}} CeTE6n]l%Q伇63?Ñ`HjY9<\G)Fd. GA4/"߂ȕ_u,xXBcz=s"\='zBu܈ l] ߦe3Z ">0s_j G\;m ;919yo}* $S5s])-ZV>O?*QY+xjgYقZY5JkTWOS8ip"tJZZ{^?4 Uiqr+dsd̚Ǧ;:mωe>-vvIxi*X0J/mw.!kxL1R$ћatߙ{\iR"HĘ8 MChjUtV߯Q|vHSq|V!,_$qHs(}dՈK93g9oIXP\($chQ`X#>ZE>0>1RKR~wd1N[%r􆃀Ta>gߐKjg"C%U׎OA:d<]0$6f8;Ix4z!UCw>6pQ.^hfD uKj&"ۋ\E(B\f&q(h )k3ImFn܋##x/_џ,U iMTC.<(HXYZl1q P\];xO1-^SYK< j,"o(&5p=C f#OQ<9BG[}Qv֍S 6ỷf+YP=8׍5Ň'Grڻ/.>wOI!*A|S C\eܳi4!Gyw@{x86@I>h %M9AxKӅ<(yb ir^=uzj۲A|C]IJXϨf`u7^Kj$H51+oJ߻<ǧ9{yY8Ƭ0%;QDs9D_7 ?iBoq,rk&j-e]ڝcWA5~ \Հ0+nkl1ɉ:eUeQ9u¾"U@< ڍ5=ae cEm"|\MvT өCW".~Ã\c^y׼Ɉh;d} #B[26WZ:gLbIռS4CgDV,BR kRzwڻGF,fC5ô Ոe LT@iW xܧ hY .j`ʞpᮑ99̉kĂ9/PHtS|lV?QذZ6F 1Bp`s '⿳[#BQH<hɞ\&#vD% kALpSbj\4 f/$ٜK}z&Ԙ8yߣ`0 q["ѽVqHW>3~YƑ{cNg$ꊨvx~< <_Pu"4@ ?NnG*k&렡)4A2IIڍP1avx;QƂSui=T=uf᭓icis0Ixj}o9dVR *8Ǭi,)0yUG (/&zܢqGc`0mMhU毿/Wʘ:Jɐk[`=!)8YDBWتG Н6Pa cS?h7%H#Pɶ[ ha%I7Qr [}!AATrdb֞i)tIzn?q5 ~ZmWEoWApxߐyf|ȞS{=\̯5ɶ#SiUPbQ'!X/%Ը3# p|wJ= /02^I 1d yh+ ҔGccOrMAG_z#M8HNӲ#Sdv,KWd Ɨ3c?N$pxEJj|1OY${E BZ ǀ NCsK0ym' }۸Ο)U<[f
5T} <F/JCn M[MsGF'-~pfU.'0aR:#'(BÿԇIo~q~?>O5K̩/]uW1—*Ɩ쵙 BXQh5y* Fr}gRyci@Zu(__ Ky[[p# P۵kb1 >Htͦ!R &iz|@n?)KoL?H峦ԟ~&Ҧ ÎL#7ej+;eQw6tʉvLQu e8,֐]n~>u8gR &9D(roI ]赇/(]H@Ajp4F}^I*g%`h |aC_ŕ:%?'BnH^iS>u ZjǼƻj:SqD\%|"5";;wn7` ۤT:n<*P_W Ormw#M>gOFy^]wOKUC2UI\]HfN{ ߠň^ޑ:o/xJa0 Ov_s >` Y^TP5Sn*l4K˕  !2y\Qws=aQ8ܲD8\DKd V\JĮCe.ivQֶ=*X<\.T =F"pQGKA?8!EVvǘ=&6hti9hf9 E/Y闐%e? |yO[28y7*tP}̸7Y:dp0+OʄͬFGi27З9@|G<߬-<.@zpi’_ ;6gR+$ْyJ5 1,} 1pv”ؚÈpejXyĝ'(;R{W,^'$gBq2{rڏL<Ş^ W&|>s FDpA>Fŵ2!zs !#UoVCL?X DīqMfbnTva~jA@M"U+h3R^)|n.:h+9> eA5x|Fd@C'n"ׇI{rd1t'2A43~k̗O` 6E,2ɜaj]Xaq} ,L\U vWLm/M/s61V,|Tb 7}r>}fq@/K1E_䫇Z zJHW_Lqr3܃+ƸՉ*;2*pɂ-jt̪ɅVأ8 ВL6_\Kx]WʚR $DM \_'h+fL)cDL]O^RH_+ÒS 4 uR,% ?λ2fL~kZuOqM&!'겒=Z&el EМ&dZ H*|cAoVfQ0 afj9s|Ȁ*qq;~ X!gN$U\:pr* E[VBԳUNf90ηES$Lq'Ct8︀OryB_[g\)ug%fKZX~?&79JCE!snd^s^PsX !+|* yJٍa<` \iD/XP+~C<}9ɎE%h} Z *!GS'R-qt F^rHIwR8i?\QgX=,]>תrKXc]ExO%j'G + ;⚒鰈$H dq'y_v X!m.r5n)oQn]pr|9͹-k1+$]a6o+qy,Fd6+ ͭ8kcN/4ҹPJ`[ǂ3bSyFnfukKt'IEvZ vĉ8ow؄ekhϭ:fAK(«d8RnR\zhn7c&:'֏IA {38 Ҩ8Ag^}?p,prW#c΁\%\t/52*0YM]}$m( _I1 !'R⋻0'Z>FB'i1AW VTeۄ|xX<sr^D3W22-mf:ep_Ud$~60Siy8*ފH0a#TPp$TdwS DCjIr31gQ@|t&zX+c]'Mbʥi3iy}8J0 >:J,$| pwWE-<5G8/.6V!^`B߸)3pǕAg( <3Q 4¼՘j9P&B|b(g1ɧnCh[o-*٨{oF-\Hūb; d-NdM)>_1M;cK{FȖqEZ0nx0ų4/t(Vdfޘ( {neȴu8?|3zUfus,j_ 4o&BRO2 #u|Q_v o50mwb!g_Yk:dAB\- B1+B+鶦*AY Ib^{Wʼno\1F_"ܬ&2E-#4u0md1[UdvٰA%Lc_%A3di@(1DNbD[l4LCQ8wsŊ EqTNy +zXw{"qSss'C6B܅z:5: A|jNs0ZXgϭQOk瑍W|̊'kУ.9goD%XRԿjVoE7Sd3IkBOf9?")Qxkˏ$ VM6jR?1ϧ1ps>Ew;͂KlS!Wy4Cj׏˄:m~Au[Kq\5qx >ϣl+XUEB e /&Toh(mFHBb~1.A7\ʢS c85I5_Ѽw;C >1PL/ʞ=ՌOkijڕ,t&b(EޯcF7L[V֤d牻Gv6mj6&'Wlx*}F [w48 xMp&^3үΣ# Mxx|d ʅ&5zy'!gbi8;˓/#po8p#B¿lv*6%r 0^*N6,2jK}V|v*eK (Uh%F?X؁ #. ~>1Q>A7|TSl!zjU97&1K"$n;c ѠIvl:Qyi>hܽiQ5dv3^W 'l9aiŠZDQp4cF6{ۀm;rR5$F'TfoOq9|;`F;bIݕMz48p,:Tʬ$FnG/K ^UQI Xkk*Glc&ɭ̉ӎ6Ę'ׄXyHyr9+* 7s X )< l4p>OAw)Nr&Gv72=OC-F 'J]XsrWSɹ \#FBgQ.pS!jU(q r|MoNrd%nLAͷ.u cIs ".gU+3NA?; aQћ).'Ln\P" .hXe-jh[z(g NsGNۍ*[@HY& €8q7_yw).ݶ?FA@N5h벭{ y\GҜ:E3+;{;\5֊mE22$x02<*@1fF|Gmjh/CxMN-5HT+;X-&ާ.fT7_%QI}#FZ8noikz<>+ GJt)tflfc7=CA6•ķ [E׿u|߭)`rrD Lõ23/p\bZφ+M CW-1Q$ƇGh]JxzચF I|^LXD֍pR"qX"@,؍vqOh+~26SM| N|g: g"cBr!e^"h D$o-LxC`p-sٽzn sCzYVGջo!btF[Po˨g !%]~>cՏWv*? f05)ӌ4Xa~jPgYGM'Ó:h[Ũ&Mm1b+Ysd>px<1_mS.zU񉞣x3Ҍq W:]G=I MpyP/-7zFUs; /X i9;' .y]̻Vy>8C4#LX-V9pgI%y~ǘ<TA'/?i %7J>>yL>QfW ͩ\k] N2ORq^SyV590`o#X I ΍$F# eR *;:Qԅ8'~ rN2H ?pESԷ-Y[P.Nlwz0пw)OZ!8`[wȚU*(dA؂Vi͉`VX;1"!{N'c1CI/2hP0brq 25^MlFw{xbؽz`sbb&Tv%%Ρfvȿv}oEwA7߷wkb,ARQMDWNЊcDvY#)#),3#jy@'~q\܍N=? m|I|;J W}y@#Q_~"y)7}ԕ}vuah<)Lt?Ə"%Htuzw PX#}!Ut(=eHf0*֔~㡞zI9h;wPR/fQ1"pb}k4N H*-zpskN֗Er\ }P#Re) ^ϑz/\J7Cَ5>x+eS҈Ev]ȒP;\;(b %K2_Sif,/3 6+t"YC5] i9ʶA2c(sy-2{lS~ݕRv`1;3g=PMFOw զj ꠝt!$;e^rB_I%= }&lL#>k<O@rK>$EP&ǚܮ?e>&(gPX3E9;U8TQo3?a1՛J2b2]|-!ox)=81ĥf@~n>z$T/h. Iʑ.߼^w#wmҏم!a\!I:x-hcߦ^]{K qy&kZe9LĝS t46lgS!jʬsڠc\[lZL=^'9>aF]J"Wg& >6ȘpiKjN|f!ՂawGQ#@^=³ #iș (ugAbQ6Sh%ZXFH]E|JpEhl(Z8G;?-_u7H,0FQJfJ\d >Sq#/8,^޷Zħw6r %(G~E恗 ͋q/1|W[4+s1Aꂗ0jz. L^})x+ˬ2up;ruYfjΔ쵒l^% MЫ:}xÐstY}KS,x 7t ėnvibuJso Qffӟ<ڎ;R?Wb*+i`l;Dl2A+!s'Bir|bk]379 }"'@8(.T_IR}/*rU!Llno-}`%vQӢ}9}TnFpk"˒ sr뇽ʣ(2>-GkĠӒ#3>UP!"!D>]YI,W;@2VѺmD7[jG1޾DEkc[@acNB4N޸ү5Vɨqn-z> `nJ]bu75s)j/,/ .h5+Ld+|CC<?lsW$QG)!;mFaźBf(`SF# : 9Ud9;Üb#u-շCD[hQVv*V(h[2~q(iÇd[V5 tQG5sתyjxXw!Pp4NohIF\u5 tI:T&:Oe3B5#3[W}=]<1n}*ؙVXS}bLfDcK؄,YUy5d0Wx*86\6H9oْ[w$y\'~"69z?*?_ ĺN;tn|{_ 3Z\j{E{ \ ۘ9|5’叞y~V[2!k{x C:p?@3BTܞ^vCA&"gD$tH>~'G, Ta5ؒY87eC!z@Log! ! #QV={]2xjDc茌a".3&jLRєB<">`2}4#Azݱs fT֖upUzqvV`4)3N00 ]9Qm a4,|ʟHا8(jEM ^jY.,mץn2i=0]\ C ZOz0X`z!Ct\(#:\!|Dh$غE*s5ESmt@mTً<?D^狲O?1EIx|gfNv#\0K&XqU0,)Q;"_]&GWO#PUFx>-Ƚk)!kȿMpj ĿD?{j1bj@ߓ{/RCI>ټZͶ0oLlt2uhdGدvh6L,Gtz0(4IAgq[1{8u`E,QIL'p_Ero#/;:wSwq w#uBXr2R!x&u%GsNsԪN4~uV?Jpa0kW"=<sfjϏ !nw+IƋѲ`K[j͒h.Fa𞤴 fԇaأ$kzșh"zߒ><Ӕ2& lxXrk(%[I ."?T޻ZU8Uڋ}'s%Cd2GXgw 5x* KP[G-c&8UOAoScM rƵ ~髖e%{)ATDzV WNB!*KG czJ /Fcp;ώ3ONpM̙B+ #2ӥ1N+~ivP2<};T=9]#$+2O3GOJ{2VXd:8KD2qM@Ka mY )lw3=L ~) SAZ"q箕0VIk< Pޛ$`o]"R5orow!\)PcHg)啩]?N5NOk}cr=wn =Z@ԒOŤ݋#(Hۂ/$MirDQ*'Z.E2 )2\Uc _OpNnzzE"n (hP>焀Z Q";<5죝 z%Ro'B_6Vޛ]px{ 2֌:1,<1T +lFli\Xa!U;  Զ!Ks\1v-Z.6s?c;_ptoJ ?A:>_BN on|HҚjheڂq /5KBsɛt"˝{{Kt`Wx䍢~u8 2O;wT8^jm !LOjlZk!ɤիT|Bկ 9_GnO5ե3,))\'C;(aGl@XqYkԺ`{Zƒ'K΂D w!ʼ(D0KCrTG`@u}=U oNHUc}``qljeY^Q5!޷`dV$jm uKdF:j! uO &mF fV]^̙>Bݺ N܊P(ʎ'#L=IK]!zQ !A&^<@ǒa-\"OBJ8{z#H!ry7 "G_[[̺x-KTϗ^V2=wԌ O.>=r#m*6 D:jq\ -m:CCrtMW9iB硹7L$Kާcv EcJM9:ȼ5wS,PG$R:t/m~g э&s1_+Xhwd1<}W\ >zY5QpNvʧHGxD%QQL>{}`u>x*)&2sGK("Q;ѯHoc U+{JYaXet.T B1wVy+,+:&إb%4]b0khS[գdjBVJvt I^ c~*fɔ"C:Ӟ5*Gc$|UQ? էjk~FU,c?nݮ_B_b:p4jbX6SMob,|x%iZs(k?*f`>B9R(Rn@)Vn EC79DWK$]y(AeI}YQ*92OT*-ZlT8~*W1Dv8Q<<^oEUPm `+ucD[)Z Q]qg(x<[O٭NaХtch㪫NzV["RHb /]c 8+g6$Py:Z4IMkAzb1ZZӉKx<`}cDLAˣɗ ɦN)sämqVL~2|Q#uh„jBx3q)4=/Aލ\ۜ6SaI!PN*߻Sj?3un ؒ^ӍJNVˉ%pODV[yr~M8CJ&9Nh EcZث$=H"4YKE:CDȝCv\a-b8GD1DP7$)12l:qw c՚&6!6 $Z[c:2aA1 ߅k{&iuDqGdPZı!YH 1bFù$-qH Xǫ]p/>*RnmaM4O>?lRLYl`(k.~ݾyL篰iԓ׃JM_ؼLLL.WKݽw+9)S2Bnr Z9:EҘ[}*eC(F M<#/~wplBhR}U* H *>!ba{>FІ__{<u?S4t"?._2)(SłuS, 7 ǯąm6/SlidN[zF/`u]Ǣ ɀzx'evqI< 7Qh6'JMQ2hSi/EYuG`J+Ԡ^M{X\we$Ɛ؂9GO njʥ}.#NufqJM7F'Yj\ebh=Q鑾iwEwg^ز@ !%~2 e\sZr]Q2vDOo#ȧH!%Q !8ȏ A8+ޡ4Փ]vmV,d͘:٫Vxb&1ُ{HF9#sy ߈V6s+9&UηpNk\i|g;V&l!Z .)a۠he/S>#3ga9AS =.eE"V˲KFt`/w.x2͋q5kIŨK@nDd2`%]~!hKw>tX  zkps{e%CiNK$ ~H"|rt3{#g؍%c8!FDfS"8 hނ&9D9a^b Д 9Zh4Z '2[9)떏Xc,8H?H.lRv0x|s<Ѹ>LvQ:y> S=ղ0&PL-1!@61" k܄.}k\w<܋-3*!6ؑ/HW̪jJ=!ƍU:kыD@m}d= {[:OH\VB ZcTfk*kaԄB8fа7ZfQ ui1I` qJ շgr^Ȅ3*߅i]#"ˆlXkK=@kClu3%z*;{ `a 5)Q],9"s$ ۴JeLi }3Bs% c93 N)܃'Ulj'G?srn5J 6jm9# qrA3H\͗rW; d7j w(eĢn@l206n+hN ~IVԗ/|"ӳ@"z}\Qf4@ ~B=ӣ0x. YAjnAW%4WY(v1B2'o{yX-•` iA7[_`"`bcR"^r6R;u?1KbrnS`:9~$I_!V]oM.| }b7d@1Oʠ߅`EjSx5A H$vz2@0av2zԇ;n =a{B=|9%NUIJz9:,"rEgp ᐠ]CL_N|nH윥DJQ|@Y{*;!#pl3-=GHF d[agk^c" tF>DفGnU*̞-ʽ~1NvKK% bݎ"ȣtǻ>gblվ)o֐U&X:b;\Se`e5/'wkq%&>aIfs-[H*BH>^`H@cWzƌd-K#3<"66_bAQX@#v(.rc)$/T#4XKK6.wZ,P2CI!ܤpLA3ꀡ.'m:aHgGv4Iual{5& _Ęʘ 藊Mạ28=D:ң7QjqG<@0Gbx?Fgt#19} CkZ!G1ǾB0a\^:I̜bM]?z m(h#b#=GHE^1"hOW^j]dR0xJ/1u獭> ĉk8,/`PWrdӿ~#9)ӍDr"!XyKww0qIV ݤۣiMQCLǛMFtÒx]FQ<ɿ@X&;e3ҝ6s[?gH/~"fyOcMMkofY7J**ѼE3ɵ? lW\+5.a\8]u׆ZFG"{K{z<fhUc"mTq] BxՂuG$ 1_K竂Nv{Mh2,nA_ AЯu `MĝLX2|&3&5c<jq)Z ŗ6 K'IUzb_[h(CoU^SDQru/sjȻm&tQpP/5"ZI+T݆ҡdr LtnmwUҶZ|d[I}C1tFWs&9LWLE}v8?֥;N/82:ٞsӢt 㯎cDx橠'+fࠚvtHɵjQuPyvFkAm״2!q\V *+RxJOTF/Yrs$9HiEkɛ@`9xMu>0[2ٝz#M'қ3vWkx9hsQaf9Jd\11@H(?dq3q {p1e E#p!DUM&_CÁZYV;-Sƀ.>1Pɧ1˩X7H=<< K .3& T]IKs΅iO"Ƶ{}њ2xRWZ]ŦMv~xb9Rh|հ$үl|;L llRHl"{q͹^M<}bR,# ~3_6g(. Uaңqej9h\-jrGfXWqwO|w"Kq6=aC_-hc0ӈ"D ɞ,29]͗4b5AD; n_#۟Z+_hFFh:rfqÁ~BH%Z9*,@1n0W8NB̌`ّฒ -r[N֫m..Т.F{RL/Vj]bf@pnʪ0˒[ o0C\EI翂:!m.9]F!㞻Z=8^7HeqP=o5ozd{Ȟ)_Pn{u^p3GV؍+>V0"7G6943lgMJ~w\UJq{gy%QvK}؛j8ȯUp)d x3n`rj"h2E0S#Vއ֥t#ZG75A<Ay-ajXjb#{. ?%itmqCqooikuo19hZM M7e",';a74XSV*uǶW0/Z3ZԻMR|{w(&!cVa:iX Iug1;5JQ̨t\gS|(;~F2ޯނ8azK{$|n_)E{w!s5h! J^ZTzQW+*.!B܀C;p?0w n Fԓ 5L{C}l!};HMh4ӇL\+\s5B-h ᚯg˯*m:F W* Q搂i)cےvoՓ /Dbm[_—TӻxfPTh}V u¶itmoMIjF6 bB/{%)vvF/vD5sGa_q][]#yEt$ e>&ʲB|9 }tHKڋDKE̐ gyɖq'K|Lr犱٪+bIDtU5{fnSrJ>y%Ȭ\|49v)$SnH986j"u,E?v,6Vd/ή?Xp\}E>ל$ "'Of<-LYy>ډaQI0!@Ȋ}aY@ 9m|1M{52.UV/m `A>&"0>PL8= xnjuzZޣ̶;}uK**g]lƍ *e&jw ՗wH( m3s542;m /cǣNz3)eI`1C"NݝrDw VUS-RN?&uN RCAep]ݻwhbu+k-sh959=Kѳz4`B Fr'^DFh(|7>Ta.4l5W$^R[s9}`8ɸ0sTT(B|2k Tub yܡ^tJ#0cn@m4+6I$+'p"olI>A=UAG6Ԫ& XeD)D D7ܾpt|^4u=zyDI>ߌN.,|mgP6 (VdiS grOѰX '<J=BO]) }9MIV'S]VI2u@p\$ X`h8^.Ng+IW_ c"kHQjyQ t9MH{޶J~Qk6#nH7ds0'R I-l9n6uHEx|'xXÝ9dcH֛C䳦Q&=틞iA77,~}.w/lGgM(KHFٵȞJlF5pQmU?Hh83}X]*!4ZT.&4h3dX{U6:Sc_8J :P|4Cݠ9I3s-ju>E;T⸮~layfT:껡{K6q0J\@U'쀬NYOaLf}V;ZYΊy1L,kL%\F3a :eaB@L"4Hv[۟/MYMLtgWb?=:aCntjzFp uۤ\Mft}ΌW;̼FbQrVs+'DxjG֙qѰ[/d?_͂rJ'TqX $Ғׁ Zrٟ("U;Ƭg/+F9VFiG]7 )E:aEHsR' 5>Ґi:"?A1֚ 5rwpFOyr8#F0b>NJ^-%MEEcxN G}4XyFD$[JHi.šO!ç]+D1qK#Ʋ hFT( jK]XOw!ݷlFM'Lz>re[Hs,iޕ5)?}0DavbL3}rIҳ}8{!nBzT=5[3Mn Jh"<|F|.ph6-cAZy-2q/ &e#<<N%I gܙOga)GxA[/KDqMu|Xū->6CE]F $Y`Ɇ|'pCӯ I1aή^#cN\6==nݕr=xViK cS|, 2p k:3ұ Y @}9~a1﫮ӓLv12 v c1ڃ_&j\U2j*(߯̍((?yc.a4LWPbh?m`"%;琴yΔEr_X㡣iM+?:@ㆽ(,ܖ[|4̻I]&.Hf;d(}yJ*A60=>;M:CaQ[ޏRrc$z.9hx3[% (MDwib.#Yg}^[t,xU:*uѱ- P(ӟ:s:1*jJ(~ǩ*6=zD8k`TNX},]]qLQ{&33x"'9J.O Ga֐~sCG( O+Hk Y\@tV;YVasC'dݑ++Y?*XPSo'lUKNH\_iE`)^%'mM_3<>Y7(Ky1x0}Ir˷5$U>@KOkDk>Ғm t?uLwdzR=3.DNnFr0ОtHu,t3!6ǯڶg>' /e'\/ KDGJOr\)}r_s9\#q!쟓&x}Zd`e|1KKU"ղ!S r~ :߆jZ]uVȚs$fy)P{,[LzXbT 'd#CKd&I6R~-,^<0)mܾP :\*)8G9lq܃L eN0 J`9-7])`2wlZdfiUCZjaXϨu=; o# jWsn[2I:@|a)1̅ hͱ<DѳZ0P?LU|0-\xv1@je|/>2Oh"4d6HbZgmy F~Ek5nq))CX}y n \1ѻ1eų%?ۺ81f\ (=wuf5cȚʂjvtU\m>Ŋ}a!j*vJ{0Ǹ/8D/S)';ɠQ_ȿTӫ@`$#y yLzȸ9*LhLﱊsyaF I$MRfNhcրB}VHvl~.zv>y01[Jhe &B9˰Mwe;R^2t'B.*NqҬikϽ ރz5m{U2@sT8)3Y/Ag+b&4@ ක+֕t8LeȈ tS5~抒ob&9iZ]_1~0azPYY3`'[YWiÐ{յ}+۫I°JN@%ZvSeQc9RM ׂBWتP4a+F[Ke쩏:I5Uœv'ByeEW,Q^l~p[%j%]/Fp7pBFݶ }=w%s<s<♖ *Ŝ9<N}r}=$y'TmgaK DxӸ?p뎹]A |FAyitΛT4b#(!eBNYn>zb)z?:UȜ|?aφDI 9ww|I~}0/2)I 7^Um](drbΓ&P>4.=Ya\\ TJZE kx=[\zWUV\V*W@5lxٻm[ӑ(] Կ6LqO5t\;].EFJDӼ5CI 2D*?nQt>Rj},5Ӧ< z.kL!lvaI׸35i?[i}z-CI+ GWmj`yealJI)g9b9?gG1V|@S`Q'ȾexR#DkKab#Hu-xR,GSyzymH!1aqsH;EVP IT+l gcigchc({qh UX_ zJه+2#Ho J/i͗Ro跁KQ((k)tcUa2iC9@:0in_R. ON~sx Ls4|w^WҦr] Un8]*U.PHuߒqL'P >hHő), 1o1br:-G37WV1(",=7io;uʕvUچњGBN#/1Bv!)3\i?;p&'|P8/2節>ҝB&[r3HS]J jE7!}p8"ȡ?k 48GD-L҂~)F򫑂FbS (f>%-=gɡ8o”=p4M}CF\gv Jyτ"j.5 D ߰iwB\6JY Q؀:02G _`[ƚ?;!>ImX={C(^Ln618P"BvA=!Mݞ}e53f'\qI[IbU 8ET=K 3e2>֛`}DH m|q skרТ^Iyz&-Ҟ %f$0,A~u0hz: _+VEm^6fT%}]7wox2z1WBTzn5`[˧9Sݳd2}97 B `q `1;8ʈ.˼>Ҧ:`mG~аD³{e|E} M+"Ae_Zۉ; 9)[a+KJf*;sN&hCv㨳?ꂆh9~ v K[nՌCU0vv. zH9:ň{TU.V}guRk%H"cnxf0\fTpd 1QfB?2ΦNE&}`}ʐT%yIBܔO#OWJ'?=&G H(+^ʷn6 zLmG\q ,z`'E*EjwA@[IrIF.Lcc zV1dV"6ڃ@8J^eVf@r۠zȕ(fh#ݰ:9~=n*rHրF ^j~,}\b*Dkq%o ?1J#VMRq^}$l;3nH@EAXWc[&b`:a^"L<+nF h$FLV`BU~ nIp6x )FɟꇷDK[4W~iKm齔 !Z^J(R<M}*=E Y;3~ > ]2<<8Aә>s`0bS ꑔ$ &O{w,kǛ) 0 Pa(|LW%vvI<Ǔq k~Q[Ҍek sG8=ۃKh|v|oj?wUX O >$JNv%&kpt'00TwhdJ%G3&gPf.UVxKwy!u*?dȈч,=&s75jNSc"Ea[taM+D6ZU{Kd.Be eXDtGf#|17~r"LJ^l>~mROQVMqc͙X.6.ݠl_]_ۏ/l?0"$MOK`54nM1߉+ w.VQC9׳ϑÒ ] M9||(npR'r)g d C.m%W6 HT!<.3whcεy@_|ͱ?gus yrlANJULC3J㫱Μyەr#(?- VRRkJ)lLuj!]i{kTXIҝ;~Гt]"9tJmexMpFc,>2ghV j"ݠU5oz,G*>鮆MXEQf7/L+_5yw :O[ M^_RgOw\iY`8T"w?(![/䭾` lkkIKRxw&,[cYԜӎd'=e.dR98+JCi~ɐO"7 cFm .xTp;Ab}ܐ7ugos5OJoZ&.$Y yڣvϊ*Juf ؤc6RNFrh%lx4|a$@2^֫z@0TXxJj=RD! /ޫ;LCFU1<,k / O^$.j{Gj`N/jLS#"U_8ÏA+1 ˎ|0v3P'[-j aUցYyut?Vmy0Psw&,n,ɴw4ھ.w \*w#4I*b9bLv|v͜og?]X_Ks>;1BH j0;za\Yˎt+EIGk+Bka}^!6H&ˇ$gzl=`t7lJӅ Ro]Zb499ψ`g~@L"GIWMȂZ;^\d!~bs"dwOҰUezjq8ffPŸA{i UzK=>b:pj"'nDM){XKhB֜a2YPj_m,:ԑBZ>o]L f0)Q *R]ՃY&r7CoYh$MqT$Qgrَ.)d -/Mb2aۉub\j +a j+D4el [B47#O!%8C_f_e4+<%l~ }n[=P܋`ayGa5!*:(q ҧZ5pbQٯsn!R)-X=-zсiXM+SBB)I,|* ^nVxnGPF~^xpqFytVJ1%Pw#쾆İVQqZ C/Oܩ뒨9VDF7SÔfCR ۨ̍fEhB1ޓşos))8Nr`U@SI"yd6z <>6|*O F@J|j0Z|E1S=ZgBSMYx$݀⚼Y[d+$wԯosg]ƌ83uJlڸa+1R,L|#[,S d:!/Byou ^Q[C~ v@C`c  /Oo@r/QG{T@ggaTKD*C2B|D$onHMsCu$*>-c˂pƪm>u0VR#j?$x^+> 䒆LR(AԸs|~=5R͐ K@:FrE4*ĸD;8%5A t1lɺ=y&tz q˾ťzP=9H,ttbm~C \ U%<7p+{-̦BNZnz>.bswDؐ (EB3~A螆>C_/&HҲq 9tm6l(62G>o,|5Ϝ<|%W%eT"` _]!"S4J)!ul}N[=sR(d~9 bѦo~1X[ )&ʮ7ֶ|O8:MՏl?qD΅lyhNuz`Z9 +@JYƁ]?x}S|._ܜˏ!!@sr!z;2-1+(ElRh%5ȭמ@HnTTX25%ֽw7׊_R?[-ndeyq_Bio|@_$S7)ٲT(PQ%ez~ s(C 2x̺LϤ/0,H`>6xվɂ?Oq!D9² H@fʪY||h"6dp3Nk`KoMK|D]a+03[0Z%z-eQ!h jyViᛴ@ ~6gC$Zq ڌIc#EoKV卅|!6~ܠ١tl='SIY =-o>b_N>k+lF&f:NM@!A$HV|BO5/qpoYW,n~dR1,ͦˉ}uwT)v?U/w}027>3O ̩-:7^a@WOmk>VyHǒ@4kss/Q!\>*pX+s{gl dQ%_ˤNF/$φGSɺOEH) _n)Xq]Khþ%niW`{ln~DsU fK*y{\{2h7! { tCGkJs@,hRIi#(. ;0!H{V2X!JưE2NꏽjcRdY2%6RRlN\e6u зDuh>ɴ ^ϵ'{a wGl<{ܸ:M|W,|=MD{J0DXD#)C+А|%&C.X@*#Xp"غEx)[fVv5`.lyrx<|\ozeHMGYaS1#<'\ȕ{a5ZU=$CйrtkERYM Z3U®#@I Ja*Dͭrm(EAwn`Cfg6c,#7evCA |d0eT9:U22&7eA\hAJ>"?3[ (6R?N;oFQ;ѝA}%bJcv&g`-:DccMDX͝ J :*Oq[Gì)i Vg0-ϷyM\Q|h>a_}O}h!c>L^TvaŻ>bDkbSj PmKp ]XJTfRM K>Ci -C!vO=mf+58Fr:߱^Y,83`7 hnx%G:'Oo-u\nMҕ)BC֬.&.CZjԸ@ҐO\\\&!%7Uϑ+WW pN~Iuqs+l%b{ ;Do(MK5-jn_P1ԈPΉM Z[Tt+ИokRŻ{ȪY`D|eܓ R qSv.P45$i7k8懒5>i8ҫm<;ODNs?텁]9{_dLcd[gW!4SYVmA/ W dʴv02 :B/ Kˣ.OT(MgZ9'\'8E^mxg'K%&U`E:iE$X~#Nf};R0w(7߫v>vDO~Rݮ:Wrů9ޮ쵃A.4l#-Kj%Q)15uڼeM%q ׭+uV48?J!hI= ?&J?S {f26^N2i-:OS<]cOE}-K4(k$ Bm!7lnH%<D!1McDgTĈ`?)(hw7m*ڡbQx<@mODbmpadYmbW`zӴi/F[M+)EV"-7h!ZLgq2+mr.gyPY9'FRg7 M$LP ݙꟾ{단fpo2K #99}sÐ@Ғ4Ԧ C03ż.,σ0`i+]߶oÃc6\t״gm=vlKMm Kkįw5h}͈JR{'N9Z9#+<ˉ욍t=!0%(tm'LxM(r+R߈a=z't%V^cFM6=%àyPul]z0ǶG*|͉ALSm?!C"0Pb] n:lF2Gא)լtAz +h>frW(1 fdhdVAUk.@ r4_3{v+ԁut3o^PCJAu=r-"k-e9(ɒZ8*\za }KmVN7ֳqjQTkϹ~ߗħ}{Ig9*AſdKS7X6!09SOg|Ҟ3 oӋθߡxX`9B˾raJ8:NI!=! [lM2E&]s=/ĄDjq "R:` RQ74?8DoVP݋S 7z?tf3cN p]HN$_^I0? -IAeaTO&Mӫ/c%%?4δ tbYN=hYLK+GXꖲHXf1'-i~,S73 $ue,AUPϮKDkN0_m}j5#&.JNe뫽NxJ ?%Y;a/hhy]}8| Tr-dpqDN|oK,=ŖΥh4/" KY@Ng7\ǘKQ8Om+Թҧs-c9BjD:2tHj9ƶ1 UH2UYtB~}:h(en6 MT*`+eS i{+nKwƸEݬE"$b4]~7^3C伶+妅1"|My%uu)qCcܩ(t<|c0p?0L.1?cwK{r.uŠicKOuO5XH[?.ե:Z2 i0`\ۺB%қZ[ yxrL27|*5zd^oT GhCsŐV87fĽ= c͆k(|lz e;v3]{I(1-PD^ŴG!8x׬F,r6F>ؗI*XwLŸ EU}.kuΰⶱ3loG/wp^ғMLXeFomFT)k}iךNL#}HCND GA5tوe<*ا,"w T XmƝ# \/9WA<3]亁V!<622Ӫi^"߅R _VyHaڬPc̖/W;Ns+Q:H)d c4uLz˜w0h7fF5g+<Q2 G?J &5䍦3Ê`f{!Lk%ft0MVa1y/^o֬ Rۭy9Ø:NҞa֨TcJ 5'>q=9,l<^Tdæe,l* BnTٖOSkܬuvfMGq l4TF.C.\ʬ?< ^l:3JyV cnNO`bW@.Aukzo@_[|JVod#[73H sHd~]TW_ѮPdz亰W@9{(gؕK/zP堣¡[;ϯ^ 5@43c _Y%dgsPweڈEQEL Ēz kXä:陡=.#-4XVxr[ bf6B.~z \vxƽ`֨j*Wy&oE'hP-Sш!QM-wna!X?@gdd+bD~0-] nJT'iƯ OK%zMbRZShQkO!_l[59IF JV酉:a힔Iy5bvZ=N2^CNx+.FnKf-iW ' QV X } 0#桮(<;9&ʥB"ӪխI-:>̂ ڱkzG֜ʞ_\olI3Y5V G@NԬ݋(w:".}WqQ7 &0H tL=75Cs1ϳ=U^ű ա=8 6Rq&:)I! Z[6$TYoUA R~ז720|."SLƒ;jlbUzZEL9j$eC,ZO@)2S/rwAoFL{Cb\h ?pj<h>OAƙ\\{Q)XdM88\3A&"ą^"߮p!eN>r5#H,L'oaQz-m䭨N=Y*?e,+;$# g=ν՞w(Hb T& #|߲>]|}q6NòD sKTim]Y^v*аz2}-f0ΙjϮ5[(x{?-eGKwE|*$1r X&mT.[<^hc~= - ^3drj8+pqh.Υ\o٫/5wj&P2iGpwkYB&DCkLewa9n>lEU&Tv?z8~bmz?v(JJ雲B,LoǛI(Y~>V_?\xu<Mx`$7ODN͖_E' &aYVfP}'܂H g$eCr9'xI>p&Gp &[*0ۻ즙R2xsZXm]L}0ʆw5ªƜAJngV6K;!E4a)uq]Gk#g+? :?tYR҉I̯TuPh+SQH'r~M A?;vl b0>Է݋iif6ʾf^.V  ;ZzCzq'TWL_&[Gv=lsZl y UM0oG;u.>gzf}j@qb:^?(Cu@ӻ/A Cċ^:Lm͈joN5g,!'l N) >*3"Ű_…%z㙛_ oG8RNrC&xkErH?@0:ȓ1 :¾noP 4\~PHpJ'[fGA޸c[ rS\ _[2-.(oe>`_Ҕ)bc5m _,1jjmMkq)`++.l`/AٜM[҂+2o/F^,(ȧ^a͔Dtvޖ19dax,E'θr-a.6~2= )DwѠ/fwne oy޸v?q 熖9iH.4߭~ӛeb\rUrmAA[A`S h-s鮓|\}9|/S|RLVO<[c>v3dP'fT)B"J+fchUhij0>b$wU>y*hqNT,αf1 l? Ž1Ur^xNTIX"68ugb ]9c=Θ'2ѵ*\+Л:Ж]@|1{ L$]!Ml[XJ  \OZ7dZ{H3W􃲵{N)fwn脶L+?;Mj1Q>D^cǐILZ"|_dJ;Q ǭK'6MA7qU7Khqn2P퀔R!`6=O*Yo-;Ӹ9|sVs}yFN ,MԞRD"$/$CM#gk>nXj:{-O^JTk@<'kCWN^,Zsp$v?qGWif\Hm^qjaYkMnM}қF,pq= /xW>}8ak$UsY>/2`WgXhO7eaE3 MՆ 6R߹)Ͻkߧ4Q!z$ɤQ4P'֛ 2p쌕b[{h/Ŝ":UPhw|].#ެ̟l*0<(owW/Qb`Ϟپ-߿N8DQcWbmjakT=(FF'N0wSm57Nf(J.Q5CD $%A\ Q{ŰXo[C# W@K˃G8$(5XZ4|0ΖF ~s9t-'/=c]ٹRN) DOSA}_iw/6xi/85³eb^e;=z ~LTxyS?q`UH1T!\˻_ө%)FFE+>d>]NvDÖAo?ɪmORg"%1ͨ}Q"pJTbhUē1+)>ǖ#NVgl3w"'xLϓd9z 4u KU}hKGmJ]/>'maݫ&ũ*r9GYDV"|85wf#`#"k oj PǮ$=wjX5Se*tZVX#eK?Z7`q{x)UWljti$\Ѱ狛ǧޓra%ЌI@hZ!tĜAN}X -)Z/ ^y"DXhj-RĿs֪ps~PWLu=IXUǶn\(ɼ+pgW1K!,C=S_˛XIVbLcBuW(<Ӱ!d"w;NSsVMI_ ؁mb^oi+J,L~8[k꣘4|K}}cnqPjF(@8ez8mP~.G7FcT>%{s #dA\HM]X>nT@tP9ju!(YiaU R3$o~o8ZUsvDvsqM#uĆc3u S]%k^w5ck$]E|]֑֜^ Y,!Jh,}#nB۟椭RF)͢ɂ/J+NɫLsis=: 4ʣHM_Vq2):6 ,YP52UݫI-&~UnkK{HH fc?rbgy!3oe@K?S`A{8ޏ@d:,;ݘ'Oc-yezq񲒞p 6_Q<EcWc/"ȹƚD̍x^}[\H?JcCN(vuMHz1 ;}! GI \&:)'_1!=>FeBa;RsFr3@4̥ޞCw%T_ M/L>-K:0Q&l]>{vD#+ u^|hU9ZQ(Y'$r=iY>HH@s( &=?u01^:Tzd5bUub3Jɥp/M?l[2YmĐ]*Zbu8Rd;$:Yeo-U1$apւǡ7W1%Bb%>3uz)EaY/ԲG{rgZ$?ors_oLŢ2M} ٮ}DZ^',8hNA{SRgR<7 Ĕ>&] kw¶[l*BXoC%O| S9@d7҄Z 5n<.)JMb%]WEiT;H4:ӫ<Ȉ gg-5Êf;1RCBF2=wX9# dc*>{'ET a(hb ecc=3#;Yfz$ɂn/H Өpu,Ԃ C}{DXekh`~6'&룼{P.qԀcx>Rt6ʠƴoE=o1aG k De#C7cӾzgT/Z^hb }Ym(I>=L?fa^ R1[ǀT(A@I8xp?<0><{ORv4GB[K=8:خbL\o?ÿӵ>c,N'Gf!]|*yHr4 /ORъY9Q]dnlNߛ7{K7qqJT\ESA^5`FfOˍVn5'D:9 K&10-;ݳ"n쮩 94l0`>8]&}(|H{6Y{G-[cRB 3(@lyaj|d/!Imzch _$ ZR,mq::pI*Q_ ھ֯Z=R7/?x""L!=᪞~vB#S@޿u ăVgNb]ylEdʺ*쵱]qMmK]PE 3pui/r.I;o rCK\:䷰P1 ֡5,7 YY1X(MboW~jdIE8Kv4\D7[WlŽ'0 @:.JrA)~)j4yMp`RrahP'|*M-6V ~3zf[8F~9|:c=/{`+GI@71ϕg<%xP 0:[D[:FtFRwHn~a3Uivܔ Yq9. spGOjIjcktR6!lc!de"b/d6An 0-BIdPd/_?jsS0J<(, +{!dchY,xM4#^o6f,a%#l;~D' pbȟGpÌے~) A;ɗNlQR?g˳*'$Ut.V}L-+0}? <?GvVHC`@RSA3/0}K1(71\r.ѰB­?M3T/L;GwMe'dUf[.Ӣ DSM^2MD۽oLRuoqُZ`g!p(qi^fV8^ 'ŧ@2y VwNeЩsvTbED&}*9ؼ[fq- vր0r9?+]5ȝ rjA#I)%9 Z!ʼnu=zx̧z>lj-J"'Y9xV.T.#3f8S;*g! 2[ݸr^xH* GDL'Ц8`UѴ\^F) ͿOh귂^1<=#1[Sߦކ ϧ"&XقPn;}H,C)Am:0B4w}Y/J( 9JLrc Ԍ{oN[yT>tTs4=c+=$U9m㵄@ ׬1ǹF;RgcJ^ ziJ0<\c'٩$rޏ ΧNȽ7S{ﻷRYP ;fe<ѝ y!>rdg>4ߟ&UJm [/vX\ DB%5k4=? ?'GT&2B W3sM8z2Τj˃{ωT#r=zֽT₅UFsoUmQHqkpx&8L J"AG|٠c#fn!=Ѹ YSXz]o OGE}3¹f㗶,R| "z>zNqp/>}k&\uƂ#U)VZbm*X4]3<S#cr%Qǃ1Otހūȹ򸦿_ 5HhNU_+[|P  (}SBMǔ,i1HY }=#,<;p&]}HD%banRRNԩEEzy$0Q6O>8(p {j`=hYrϠХuFf'Sϲa$૖-u>KZ 3K~8h*lӯ6I:]>((~nDlFr"a􀰔<Cݛm[:xȑl͓XSÎVH<, GX3W80lV"A:6-صtie͠M.RScdTE *w*I B_`/foZ>U?~ ,5EևO?(\ԓ˽zN3[xAw=ϣ2ܠG/_aȌ?/ے = ˴وxfIGXacZy_x[+W-iǦjPO"Јy c]AZ!_7![wb7 >kJ'QrcM۫r'f]*1:_;@J wgqk| L9ỬkI_~hҩ9;xh_JDDݏ=Jx2 m5?:.snlvaˆj #^Kx$#<>Y8+#^"KҳIoԑqu't/ۧ%Mܗ)̛"du*uTq^ՄAѤ~5g7+DY.v87YJp4T`ՏS- `dcuUM][o4ѡPdk>>tC>7LZ>+kķrϋZ͉=0*gt>[-Q?KH@ @;9oEe#j)g۠+%7o+Vsc2vOFHE61SfF*륉M!9H3ck" {Dك #k'eh SBFڎ8@/1xSZCh.azE;qǠ1VX"vuI5ͅfg@.rH8qK?;`_,8˘xP ժ q+pa.0?\C<6aTZExt 3_(Tl1ѿַu4e1&T=&_UBFSGY?}̧MY1ضv `l{}qr۟dBٙgRmI?Y{qw.*SYj5jy#DRڧdFwPDd.%k(sZ0!MͦμӺb`vk/&N)Q(kT]]xF5G@V3[+V$1*=[)s&@cfa%/G_`*H.nqޔ!S|dU^d)N[Ro[hUX)C;hF0)9[JAR yͫw.6yGra O #QyO0/ϯd%ET[H2dA;NcoQGh Gj"~/ljsso1x^_c!)_z\zjoa$ 'aޭL6%f( c3{v<**@u,jQʇ}qIʓb)"Vڂ. >,t 9_uB/2F`ݴ \ JS;]IJ][1 cQfӛ;mw?_ốD{E=[78ZPjHO+s-zW (Q٢'QhI-$qoUmMNP=Pa;ګAn!_}fg/7:QfaSch+)XDK\LͣRɚQJ\m:@*d|/d}Ƿ01T 5*(*:GUXg.yk5 |_~M -zHG@1W[{͸bP%) 8LڄQj5:`ƱzBU n'iVgmȼi,]6+,k}#^ f/r!ZA]7c oz?S/u;>=Q%W$hyG> d^j.cʗn 1i=Y~X /͓}gO9t$ J^7De+ѵ fT#1鉮d"O4sF$.bO9&1jhc1<5ڱMϒ^Fk֍"JP&|.0]Ս<T/h; *0=Y+ ߺbN.L>ܷ+#JƬЧ|޶eĎ9?U| c;nntq#2>eה^hB VQ{ivO6Q|!_;u7!k}FoͮW{R,wXz(יn/~BوRY  &^$ųrv4}dp[E\2@T&0A;35 j`_?oHW[3~'ÄJ}Jw+yqanYo)QHFzۂ%JP:,vڎOV?ouK9q#߀I~Eoex 1KsAXd]o}a ;/Y[]8໋fZRG s\+26drYHPux%_:s).@W#@g*u,L/B,潋?#4ùYxPIϒ&Xm١JƢDԕ NPZid^y{Ud¡l+DN<Z̕pے ttC?'Eh ;oKc{@-~S_gliid^8ZY-n&\d2p;i0$AVHuk5<%m 3BjOBKjg-;ՐɊ އJhz QY6Kъ_ΚQ)D䊸 nV#sDfeNROugqr#h TX[H9:lOx>(js^!To߲L[l0p5EJ N6+ C JNٮq:/+0's<ǟ5cNnuVx挝*,^X.nZ+Ȝ;: O F>m#ՀIM1Zn0ǚ'ԏh@XSc\Z=oHKQ`$?Ndvn!gY;Hl(/֧c0It^ )-{eVYC v6; $w?>>EĿ/Gϙt(8S40Z+9&SğJrj Qm.>> } 7n8N# so6 eR]զUNRAcoժ7r Y -o[;4l^2I}$b/w_Oy͘.XGAa?9HT!m }% leԮ^?:)&9<ٕ7eˠ_`ń)RnYYbM|q`n=蠹3 mZN6i V~M2'M~aY9Pz0T{ٲO>2,/CHN\qGJZ[p v9A~G!iJ\7̆AT\x0\{q==0تE+vR)AThG~q\CӉsݱ xS4n2+}Zce- })bC4RK>M&@VaۖAFRՑޑ tsR1F;{GӚ=C/=lAۛ1ky<߃lsB ><>*LÉJ5%J2qߜ!QG{WZh f_2oXSYc21jJHjg{*b\[xw9J ٜ5nwFI\fLUc=N= \O"orSj< kMk_ +$.IǹF8l S5*?;e KNJ [tsO6s'0Lno[|ޱ>2Tڹ,g$M#(YZ6@mRb%b2kN }gk1A#|(!>~+P=`"'*]<Kf|i2:Np|̉-zkW=XU>;jz|("%_UAp 2a~,><.3 ٘&Ə;j Ci@{7'TQk;nÎ\_TJsz H${R&R\Ϩ Xh,z[8 l ~4\Z`qS_.HO+ěBsOIUMkGʤٕ 61Lha.FTOY(Z@Rwa '-B-fP뿵үpG/_ }d>xB;*BP*]8WE)6M:̢4~˶:FlLOoux;0d)ɫ<`~14a- SQ'@N.{ߜZvg)XAoc̐2Q$4ͬ-=o/y^<ì>61d_)tL6T,ܳyyPV`ɷh>n|$)C@dzۚ 2&آ$f拌 ZU{ טwk8}4էK^Kv/xF=Y1{qݬњs"Vwԓ@#%84# #h\p]<"R}/N͒tؤ)]>{OC}G"d~uH;,f]pp:g'ploi` jQmR%mu4HWF3ʍ*%R!|BCTG Rn\r%'$_n<@Nf'[}Eh'/uH{T$oy!I{TsWۏ+:kA &z[56<$ަ1@˖"!E!+ k<]]L [fwZV֍hjj=*GC݃3ܨꔫQ ɴ4'`U-w|=s3P9})CԚڔ` MK@ X23뿳i 6v$npApnSt q]ŝ61 ĒH"qN*]ft{Zkky4) f™d<6M?idQO2 nM.O52{뼆̩REp&c~ve ֜y,&>{咺}L $"b#ܥi0o_ mR^ywNbC`9@< 0Tapn>+g!ZW8t|Aގ6FiAMlTiXS,MvWM 4 :+œ2_}[.?$DIJ"-:cqwGCiDuO9W{ Bk4 K5c2 C*PRzP>ش/m4<['{W@Sk2ѵZ A bբ<>1p&9~X.="rE-> > 2>ty)L=ì # kDQ1oYuOsޜOar߼wZ?4tm2f[&FOJ܊|zL?vu`yw BfwUr*;L;H>gpʟ-ֲw4RC ^`oL90 #k*մPo+jT]x F%${ ~Ps->G(r}RA`6BBB bˊ #k wHڟDIP6tq_km9w_W@I'W༔Wa1 jadEkk9ttvwl4`dG,T$"?D= |*5ELTKW˭g'޽VGƕȒX`T ;;}NnH M8pc 17KZl![n2"MUäF*ciS?qN/_ ù\{yY1P\/bLh}(]f-u ZTky.PnîBs\sSLfշg^Rv@X &9l:DwUaCv3g HGiEX80źcY:;*.JƉl43nc+!Ǩ&pMj~)* %>n]wQH724>#lOưuc+bymAu}-/ŨYHwQs UD;EU(^H5Gzyr to<sIx֯تmmF4"<8Qw+o:I5@܉tcǥi4\Iƀ* C>@ K(Ė]~ jilrajWnYɎ#y*Jb^=ɭS'i'u~O? O3Q$bo?#N*Ψk G_Y$K*h1Ctb{/_[Zv_چM؟y>`s8n8y_l?qUa~\XQ]4kp8 䃷"(Ϧ" q*7WClE:TS}_!g.'Ζjla;Υ+#U.N0 "T6##ݸG_.DvМ tk:ݽh^껯G[1ء`FMbsN1R0T8hu+ +̽;L TVm|雘5lޞj9F}_jxw*y!]nK?>| "cgD-*Bw[|iM 8 ւzv"-o*h9탛zvk*u4\AoYx_)EUDf!8=lcH^u d PI7/; z5U)yK)7Z_mlk}JPYؖ1xd8r#Dd4\?['QmL>rRemY 9\ew5NY'jo$. ͚-CAW"-+9 7 Fb*îJTV p7pIm.Q|t͟+k9RʶG%&žI_}O:׹CEhs=I.`-`qi1ȠmS )c9:ZՖcg mӰf~ݠ>fn"x< l9vN+pHlBYmœFI`s>c4-xϤ˫fdz 9N_H@-x;O olJ0o|6c_IM :SqcKt3P:ؠ4O2(Mg/T՚=#a쐚j}FzX>{Ø'd.p/럳j,кrv-=CwJ 6'2*O+] Q&jcMU(vpG)} SƦd|4DkP2I[}'{]՛ K*J/guhiF 橅%ٿ_g%Pr}jiR/]g b_@(= Swu{ :#}~QĀ@F6=&@/GEP_|}SLZ1/c|->o`m(b~1ruՀL4)܂l߉ek o/BC9]t]|Bƹ1gPSԼa2,+.4+ܹԽ5Kq%g=Oj;L (i?gN?'Z<36(=| h )?Yq~RyqRoAF#f8J4>cޏ 2Pm)רGDn84o@2-#a7v*H(dor\1v _jJHl޷(X˸Z`` [ÌˍC0]¯cd| z/r5-9=3!(3KE?~+ hPНN uM=F}oŧe"fFJt ^}'7Doǧ~oHY-25#Zz1ʑt-!ed]>3XvK89KlcUg\^'O]k`T%Y{]lTg<99(V~8HW(K9`![ ^H5 xx 5llj&a/}G MYU>U=\R(8NrLkץҶx-6 g. ;8T69vϋ+7 O~3˧R]p5#o !om="=h44AŖj1KQDYjW$SGѯ=*d{N,RT{ԯ7r I%ן(ޘP2qAc `~FTύ3=t F*'"װwׅ5=ķׁڶXAgrA&!dv9Tr;:W즤%PH \\ =`ٳ(葢`Z\KJ/(3o@=$na&JA]rC<ݜy2kwI߈8?|tMt׶I R:o< gy!Hi(#.KuB]I-iKeQvds[?ɼ{Of^&>N sҰ\W3@'($*Jn6= sv=ky;_$rڋNs@&vo SДu<>4(>W)s9 u 23U1b{- lF9@7u[ulqXֵv^{>s˔Mx }"]H v%]%ۉiq=ຟÓ o;HtT… J ݵ#]N>^[@FUfmͱyaT;!=M > /gBAyۻმע7l:4T##o|~yq8bJ/,u0|$V ۞u'B%:iuq!-̓䶲 fQurUTd:gOob5y7Klq{暝9C_]%}K/o5MHhHߟpÖAe0ù@K*eh+`eQL9ĺ{^h&Q)]_rb$״"cI,7ڬd "dq*.w\b!!ڿy-i?Eߝͣh|q[|͖1BÝc%1w45竟Z~tHS(>UPZ/1szڐ>n.*z9G KFљi OƉ=zѽI?׸lqZ01gbNZN.|ڻl39; J ftsT8cXjFeEwv n !g̸|6qP􋱡ݜvrò vRMq䞲<=PcQIRN-iXv?bXmvnlJEU[H {3=Dž mG_xsxx0rH1 :{f FgH "8ct[>tk1Q7\zt\i8iwR~kR l 2+}`$ӈ}q^Rͼe3t)nU/Ί Pn4*_V+khW9ž[1m/Rpϟ=@X}T9K(J䪵>DBQc"{@%^CSMf)41ZW ׏^Ӂф4苗YTGEUn(.1 yP']Edq c dy&efM ;˓_?@/#ߠbnoȧm.7!Y.dRT~oawKhs^+/1D[,-.$N'`+"&֊zi[8iLpiIyJ 7O0%Z +F&]K¡AS _.)S}.t{"{HTVnEmÙO?gxzB,yka'.q"ʘ)VlJߒb:Ţ;Vz8:&#Hգ ɓ^Z^yBjv|Aے 3_F-@ςக+|^,SVOFhVH v7!iuGa%$h@ˏ;Wri_m77W+J)zBΏ.)A/]GΝY2OO,\|qnVCpv]h.E/>K8΁⮫wMg—e1zZozBd-?Tpz\v*]΄aQ"ޢ#!QɧU΋T.Nf4)W\ KavD&aobq׶)HQ¨Wg ug%hM"IvYPm7mE'~AZĜ]-#N`1jg4- 12{PԴ ר#:-ӿ& PO?끫X <<8=*yք_c.)DP:G L\gN̒R,>kpo?Lڳ&r4JZپprh8{ :6Gޅ$*%H#FO(# ه΄6.:I7ZD́x { ǏC{aTLN++skedi vgemLfEK%n7Rf /S> >"tz %u5{0`]!>T04:ZT/S-G{U토SXXq9fDƐ^:B6G9G+C҄W9\Zեi0 /3jpOUhyQaZߜo=6F^l6͆9|O'*`&9Dќt*nk@J~I$wM:Ϯ5Am8{l/Q² \v'Tue^n< 2ʿlzNP&`?gM6G*&˾woA'K"UvwZ֠i@ڒ >ڕ* JZ:7fv*ϥ^!U6OOa=Kd\e. 8a;Š5W!k 2;#mzYqBєO95v7<  .}٥ ?i^޷t;ft7py2\_@*#}xvAY~8Xv Q@u2@I[ӲW:Pq T3GU$į^hkqɮ|*so(\o{ĠBAB4l]8]5+\ݏ@1 /=!v.~=7 )>gߗ+{4 WLQfh\0acZTJ2{1reZRM VԲN2fHO_:FFLCἝo",W G/*.6 44!Y%m݆QFxrBљh % נ)Whi(AZL֘dJ8io^&e. |qf C2%-oU~P Ї/i*z4y$Gyc22PCM^>9>~d+ c;4)8 ˆ'rEeKhvV.46݆P&תTp-c}#.& s5PA<hY> r zʒn` #VEFo&aXθ̡Q'iz-nHZUr;@v]Υ4pB[.ޞ36Y3kTIMR7,*)wo\|6%A!n;D"Ce J)$#[m߿bl3,\ `BZDSdBz䃱`xW"L\y XZ,y9ڸg.UҎ*لH |yu2P|8B %I*^:^Jd"k"\ڋch+h6A,to [\^Y%aR;fQQg{s2͎!8mLyO}!gWJMګCo.]!":$BV,7R: dF 1䶁31+eS$72&*jx9G٤HI =z$6/ K^d*cP=os/AI2r!h59u̔,o>l3k;jϬ]S̾F# vđdםY6!g+iR4`B6ՕrbFopJ%s`A`0/j/f<վgvUV<I)y;?s>Z93l!3veO^I6 ж䗴.5"@MȊ2kgyuQ aZ\ =oLc71Sj6ͩ07Xm{b+)Q }*de1=j%+I& 9u¯濌I&u@򢖱(id!OѢ"u]~|cS^ep s3}y \z @.MPŜ], fÃ6 9xb43 lGkJ5Lr^dr]Y;E~Gqڮ>Ț”hU鯌H?=XTV1:dFBHN\]ȿmTМ^.Ҧi?xWoJ>wflǪz&EYQrrArf ^>Kx߼ǘvb;1nnķbygѴ(5W`2V 8kQPC􁠌ASQ-ir (qW'f#(pxfP`q͆sGA/d7+P3Vc6Y*hפщ} GYgrsnm^oTN-PjKd~8n󆈶Ğmb:+2F? 9-Iv_twQ?ip%&7x?n ,Z_Cn1ułΊr:xI#Ul%?qB'B 6w5/H9 >̳^fHMۇ}@}޾~*Spz<:/+ ]BmD>_}&zcPB.(^:?lV[ֲپ"AF νZ 6v#4@=TXi8zUf$|y>NdZ..*,Zos\o|t'b"r!L^{89z˸%"k]4llܛ SZ6)6F8զCb\U31)mTz8&k#,VlJ!N(JaJ_(t*rI\yYr7uj>S݂(Y#/zA^RJ)c¯$a*ըf_(wB)}E e-''j :cJUh.ȏ1O¾|W ks#ռוu !7N|`έ/&;4TX̷7/uNJ{rFѻN:rW^&^])r]1S`5¢Rdv0i(0A‘u{FQZ U#r1ז] w͛5̣DEZI%>Ї7&vl VJeS9p(yNoA(aOj (ߺ*@W7r 7b0-'Q@yE SE aSDzח{W5t !_z.Fs7H9Zwx!@ bZf< {qlY$>WμW|k=Ih0^*!%TF[lצXgș4|=nv_dY U1Rj<S*u>cU~)B8*!|g涘- p.8r7Xj{ki1+X< {O#h[L=z-IEsb|_$W`T]k üIff1&s5s6P5ĿtHtYKac #,[sHǗ%،` VKܗ&TK8[Ce'j~P*ܼBxkP7O&+~~pZ9.["로Q2Qq3:Vs1V^ӡ*`:{\ J(1 =_lWm]z nCH9c mo óP1 {ohcr"O7 DBd tr" [!|JpAf&>s9Dŝ_[ԢG;G+@(^>5$w-~ϴ֚Vk3d"Xgho rf ;Jt9AzHf &Kn'p8^I]D̐TI0]ЙB£9o87J# cayƬP!Ri0 q>C^Sv4!5ԹysmGYv?Z)WD2{st`ͺbG'iV9{؃!eK+ yMC; ,g-kR٪:U(UT(A Q6kJ1APAx G,nk(FH| H׈{[rR|\Q]ᗄ160o\d^zAR'gKj kyfu#O?V{TL~ )]fLxTE-qH[-ݥμcvr%XN,H ib:bj3w>v/.OQ1&f60AwXv bd`(b`RLp>+M!PǢՊV0U|i"ZC}|FYh42=g * :Fȸ.CҴ:IE%jǎWk:B2pCS@ĺe @z#-/I'؄ "Dh!9QK[iu 9TVn2h1_ N@'N|զajv6 S/L_+65!~>n:+\S 9=_w}mc3 tU4H 11x fcH&LrGdgڛd3iZ>F/TfK\jPݙQe>94uFz4@UX=b,Ʉj=ij |QV>23? sRQu6o5sx<^z8 Zi0nr[5M*R! U'ޱ7ϼv8Fէ"HD KQCFkhZ(F  bٱ{ lR@`p;@ͨݳ{Qgmh6'o!euR}"6p^k62;8&dI#֕$8Ǖ#uM9S$ h?F< '^.O #|gokp!f۲r4{;7?-*CT 'BlBW_7&{xPX,' ^~~bKɡ9r9kadrsKIs׶,䆱k-GPL%5T,.O'ˎMpV$k!mbL"s=4PY$C0SØ_=I~S&iZ4H#UXdw##h4;7^JFeVCӸ7~?d"<F/ro^ի(0]1ژX;>A &/ C &Qm>яyA(*` kHFÍK{/g0?`W_~<1c+CFnM_r+yF) []H{fK_y|aE DB S aX*JqA`#-眅Dt6ǥ]`F7WC1&c̉!6 Pw}ܤAߩC(U}&;qO +KSk 3:ܗaL;]g}:]bD1)id1RLoeMw%xm26DhRF6A~dKQ;3}#Y|54 -%SnudjJ)1QM_=ƃeQ3zB4#ok8qmԾl-I.tpu Dϊ;-y0hǭf>qr" $LoEr0:t`[_%J86;?B, jdIzuj-.$S;Ric䠿Lz ÑϮI<. }!RV,5Gڅfn-pCy)NAJJA𗗥t?nqXc91)(F 4F#\iG"?TDUXK>CzuN5KR¸! b+$R2V4r;`ɡdބӧRD 3!y/@OcZ}*-.97 "~$kQj(ï"]uR8Fks_r `p547|%}ylM"* IOgTū7TV֔ɗ4"Avd&~Լ$#THG<\#vF O1;ilka!4Z$$۝N$jy0IȲ>jxl]2W?> P{ &23h>EPoPmh \/t̎?& R+<,G}54 a@8 BޙPWI]":w\p !ů9P:lLy"+g>2)޼`c>t­O!Un=S*<\c(qVBE޻  \zwmRmI"L꓎ RxChQ \ *?wp=k=,nwqS;֍3] \ "h)iƣMX Xv' n}xj DwhS 4}e{Ԇq3:f9?T+P^D ޭg~\up: @i:9|"ŒAX* U 3 t )wl[N+D>q5.<I 5hKtܺO !^,zMgd,S&!~&G<֊ZcsX&uCψ~ _2Nڞ-)Ylj'fHe;ԼԽ=2˃F[dv)"i! Fx_~>B?14r y-ɺݫx5$Ҕ3\{kSL5剈QQ6ƅ KXa*஺}:: MUnh)vQn8Ja'qy)LMRϗ_7?鉕x,퍑)[,=+a :4MXk 娘v|hH6>*iڒc)m3'%p[>b'm.ө^aI`0A x8y^w!d~E,@yo6p!59釢F>8Y+?QAs4讚 D!û+hs6 %ݫjc(%+qWS4bGm z#W50a }).<^@w@9Q ;%1&͌^#=tx]Bo>a}cB<ЏjEjmIrޠZ@-5'"1Es# STPk옅i@rWbWlrSH#/CTNL 0;#3W"3裎iM09nκs=6xD`OD@W_v'*Jb,diuX S1>YЖo,Ps Vmtӥ ?^dqK]v x{A-a%.S 5|x E @w&0a)FWRx&+=U@YPk1/Pjc`֧}w&e'r%sKV M7gjK΃o$A<?.%dFL[fd҆3acjP,x|*f))SL+daMNGÇ=) ݌ϷBCzsF=DͰ +\Ivɤ.xQj: 6`| ĝɅ-M J#ϺLܣ2TycڅIJ 9:!)Fdz4oP ^ߏƄת$|I2.R%*T7# f/Hz#7&%:l 'Lq+!64qSFfQ{B~QѸB:cp#_k e,1Lj3x^@n:-+F'ǐ逭J$|Ѫ &-t~A{ VPo\?c ζ29"9q0H!P=LްDc}`uk"4z#Xi󇗯OMOo.LI f ,X [}>( B1Hd,*)&"~c# źA8Ģ^Oюd3]hqpЦ2n b^<vI/ݞ%iŭ*u,dV~@h'f'V.{E,/  `)/<0bA9]Ո&eS2P,Ayo |>&O Jk'HNaEz B˓cj٧gmhG+4vwJL^Z 1^KPutkK(3d^np؊a1V*SHuq &Ov({V'[D0`>c#Q9,Qx+@^&1 ZMX͈4w7(j,I) .I,S+`=ZnO6A)r w0xfzV.}4mc["4!_Yϰ3| ?VG7bҹ ,Mōe\d:Yg iɝ]zHMJ^1`>./#NƙtG^S'Z7-X8'.a,j ~ƾDX[c{-y(gmձkygҩP3fP;@"jpEo3fK&h-7JȖ* m .i 2JXzyEZ^eS`&QM6y!K]EY- NХ6~1˚0X&SKHj%eʼÐ&)'cYEa>'(>ByKn0ѿt`_:IX$-oSXY\/L[RT#@p2Rb OF?aeUH& m(./ ځڷnS<D LvU:%I`g{jZZrG IK[R.Q% $*7J; P*JBh ,c\ ' '! pwo]" Cv1zJ @_ MK]-&(SK >7hɁqj"xvKC̽BǣM<䟹~{+Ѽ A٥~[~YXئBJ~zvN:ee;J!2ު/9dCfm `:|-xI6o{YI;/LFT5Pɨޝ(!'VD32r0ۨH8} Ci|WWl,@yxjxu/*bb;.OKz3b@(o !3ϕ~kK}؛*!-[JKy25\Y} 6 IO8>sv{OZ|FÚs.,?!vğLw]TOʘNA1f)uʤQ0x`bzor _By_ѾKUgƅC]V|?J֞%~yձ dfُt/Zw{:9?ZG'AKcBLre$76Q%jhe8L@M*D>.y4X!8aeҁsvT'v?MhO q^?Ǩ,xNYCʷ^nW&|}^U:.\?MV(ٛvNokþ6Y#)V/团UTNNC^̗8'[aJK̗4e%Mwy>4%&u]n@BiJ;=$}j\lb+jYHfܶ-ba! LM7ϘOO Ai3z|- litҏWy5@9ށX@?Ip% 54 VaVw tkUz}[

?b@1˛ Sʇ#T`#;xO@\(oVY&ԉתW=2<=IҞneyWnvF@ͫUkh/=s>R2rE%5/j8/珒+?Ѱqhnȥx'`H^}7Pn̂(_Rv=X :N"ifm!eӠ$u;j FљPc.V?E}TL ?[\EOs+C5Ǎ-VI|700줩]P;g9ml% /v/Yu|fʙVT,`bH*=Ud5b٘Wxb:곏!<1Q& PRj-fZ~Fҝ[@w g[,$ZvnK,>>u$>fNNi^?ʐy>mBoe97aB~R=-FlscFmy 3o4nv ;P A9yM]"nSZUH OmXQ`L\tO0$yoΛ߫,<^JAOnLMnjtc6,eP.:o]yÏ'Ws2;71Μ_BalpYcE(}+˳ =X9k x( Xq'A*R<\J$"3I\>jhg XN< V-3%t En-~xes1"˾YV0 ۄ-ʧ@E&4UݙX"r֙I E{O(UDߌSꞵΗ,ojMニȓގhD!4%#ZqQ;b|+a[:9aJ+wXf@m@b!bf&bV7z6͐vz~C-RQAb[lt0.[]pZ`$V>4\w#'oP|.';5tPG0:X &ӰZq'ZFKͱ%ͪO1qSd37zvn1hEm% */淢ri#[ioxYs8G^LE(8! 3^ 2:ǴJLKY)Y,`Eg3 (9׭R҇$jSN]dzW dލԖ8e#+Qᮘ^<{b\ Gf ( cKi_2Kiي%i*dA_1dy ؘ.Ӄ$qgr$Nu #bM(b`y`aWᶕ;R$.<u_a ΰLA—"Sd L}G{)^DP"GӧN+ìW{3J_VC RaD'${ voϤ*J\ie\[G1ODMřSڮrlX:}^5@"߮܎'"_ICN53f^a1TD0/0-Cc#0K@)9 ûcꝶI$u#@xiG.8(2,ܫ?T~P\=kֺX9I4<ȸ_ytZszvV(,Jw,66_aRġX$띨YQXf[[4,{ BT6˫7.L8K (+Aw$;&:5RѺdг#+ ohCY TK[A~M/$f#Z~ !tU7S"7$R?;i"lC7GQ>M}(R)gKض(GRDvfA57\8N~xYZ+T9"bcΑ2F{0糴6$]+>ENl<.lQ?w?Ϲ(R!Tq@ <)pv n+tj̚;E ,Q5T (@cKkNZ`xtUkT{K9 b7@_5 5Đp9ՠ?Bd؈7LuFw|=a{ZQaJTݕm+c -@n#G'*2îM6OC?C U*YtQZ6 di=^Q ASƪ+YPuo:yiô E<Ta0nLvw}l OS@.M̼;7Ќhk/9{E$]A(K))I祉jq0ͧ"}-1An|s<[oxӡ( B9aH\ >>P8;voRJo㖇^%aYЗ8%6QeTY1/\48aYcqYj9sd>N;dz 8I O&iMet1:aV~U %'߼A VLD+Nɘ7hz(F;K+|B tNIiɐݹO#N+p RK.hհ4p.j#frג:O=Ӷ@0Ő͓ v2.bxi[;q̽R~DMgBZ^$J@pn0O1af_cȀmseL/@S|N2+/f`ˏ}+ !'Ji3& vS$PXrp)r~"mQA :|j=ׇ=44u=0Cr:RY)vкP(;X9%gx1HG݉Kd[%!D:BF]D<ڮ`a^ԳPXʰͻZz4PFK/*[6Bҹka&Ȯ͸ڀL=6*S@={Ѻ}]1eY]p{[ )ʋXNfJdIO`%z9;>(m\6 NrEjr]Gs(j"rAֽi6ԢԎ?\3IaK/GHL!DspbW9w_"-: `(Wp+,9ՙH|ݾ{yw9k>n?@oqM 9v0Ax;2:~ӏ\:p7B-C.fq"ᗤtd>8Yyn~k5!?K<-}3+Hr+ZQfA.!rvÆCHF} f)OgtPʷ4mJr-[{8{)1ةxſvGR}xHeyz8`>.EYZ(/4.a).|E:űHe{ŰltTYs>gdMpuՖj ^\牤h鿢"_XCHP*ެR,A~gBT e@/@5$r`=uזGpEf{b jk<>tKחUH{b#+Wk @pKޣh8E/>6 wa9~.{WN\=M)QvKMSC0*7G+Vi5 E2+ӼI|aa5 wQ%]ȢSp6X}).0$OxSõ؃5밹Y4J)ivG9hT3w\t-*=&s]^OGF7mzb:^ W`HI,7kG# h#2ޕHjÍTI03cFXf.;1$ YT-'fn_mjÒq-9(ӹEH0'kT۪K¹k'aaT&X:s\=zf:U&Y8BGN-)f>Bʬ_뻊7N^{/DC^/qf&v;@K˗Js-"zw5brKjy٦ь*g&APSIzzp~"djvvjj]ӝ638tx$Z]\L=P2x8߶ct0.-´AnZaez+z;k6!G N%rr<˵Vc}Y^j!gCf__WH<+MBש[pIu <~)7Uŏ_f"rl[\-Zsl\> |ׇ0LS<> I}v eFǪ/P #r k[+CV> @ԉ'Dr^&=s?n6%+rKa`<濖g2ԛJ`Z U݆Q FGJDEW$T'T0䶌)^Y80zF;q;dlrC>5ڗOI>OoJ}[||9W(%3L:%s^"n1<]QxvVzKYj,D\o5_*"Bu %\'.{ ޺ BePfB"A#!>wـI1[}JxIl^ d!ӹD}:mTX5j5G t]]'k޺A]RfC ġ}. biYlFt'h5r[4SbYd^iB]^rU2[M;F,+/x"/^q ^}_y!aCOj_2IB1 ʧRSg ;l`Zo6(\?o`ZIi@ImW&ڝjXy^nJ2_Le~[cU93Ī敾'v& [ F4J.=8Oe!TfzOc,$*Nz$\V#z9mE ϟ|Dt"F ElCgG 75F/6DǛ3h?g[쵹gЊUx ٲu Ƥ>0u?U%*,o6@Tg:bG`ح|Rg 2&20O+-$vDelJϠhۜYY>Ȍ32f@N  -0@-vcϼ':ܞUva2S'V&BPX/CziIo\nIңA \>qkd} %eؿ<מ,SE9yyzm xv6U &:/6 l 3]ztBwgFgYo"h! _JP;XM؉^HExj50h6(ԴF!\)ruyYLDP^$Vsۜ-˅|iw6R: -kP&mܑ*Y؝kY?:r9)Vr"Cm:F:Fw?Cήύ 2˙AUѕg*>Hg1w.ГS&7VC)J;U#_ TڲJ%EpOs"*Wdcs!rbv ŘA| *:2f/UDEZc>?P30/\ )mrM+kg=;tY6wRu-c؀槨%0bLéAm -Un2 S{;PWT> $g J}T=4,K!K}U,QfB)AI7/(JPͿ)v@B2cJ@@ʹf^VRhUt9P?bٛkm=,9],l,eLkK_"zKVrjݏ=! GάrsQ;+.鿻JaC؁> C |+|?/l-n*v/?vбD[$]P <UNk8_woMf*dAɦH!EɨǔURuPd[@Tx]>ReZL dUΩ,1Ƞhc$w6"4UX.d`)E hE|Bhbt KwQ&1[zl=]0[~Gasʣs}Ĩ=G52~IxDuxAl]S嗫r{Zay"O?0 Y;I/SV񊗜3B' k24"=eieM@zN|cy0C%V\/#ʠ=!["XbZ= N0:% ʠD nIL PҰEnX< nfօ۠TGcZwR$YN(  Ftd$KBql./VC@R/Ff'lʖٟmS6LJ- hN \ 6cxBn[=g?Ӳ^=r޼JqlKԸu ; kyO8]2橴 [M<&X_x/0QIR|-;"!ʉQ`:jkfi汱EF:/^J 3ca.?e4Bm=,T',r'w6Wժ d݋Qp|EܒK cfMCq7Yp6ʴ͸t@[~3rzx6j)ҤV4`}vդL)Dآl MŭiAlY:LmG:х?>6 ͈]%E"@A;MTt@YOo[\9a<ؙ6TFJ'D)f?WoJeT28]b"~<#tʦ0cbQEDju@иurÊָ`-oFY>l-"Wct'S!#:s۩̳)߄9RC6δm)E!B"ϔ!J pEd%(jg0gۡྎ6)~|c ͥ.xoq)0iktcd8 ̙\@q؃wYʵY:79CZ֠ =o Rwڌ$k^5Dpt" L;`E ARbNP{FZ*㱆ߙn/1CV:i.0t PSǨY٣2a4.KwkRW^%~rԖ S`ʩC ^1'?I2tRqWpT*>mIo{oސ8Y)ҰUxHDsRIcyo`j Xj5.~A:"e̚}@|Xy@Udd[]UjGڱA1oBs7_s4ʑYWQJ[LiĹ7}#)<=EH8͹"%| 5ڻjnes_5a1(dLʰGG]IO.h9ˆ1@7&gyQP/4b\YK?X4kҀ@NimѮ}bf\imBԾ4i>K%_\џ\b Ugojח){|Ԍxe U$($Yg(x[¿LE49ɽG4a,ֶZv"m@3 ODjxj00BŤ)b( 񼙹;sļ9c=δ,*@bQG7ʼ0A# ?Q6 \'9"@bKU!!Zlo-"'bIL( _FrabtψE:@%5=!4_O]rV _\^QPH};c_CY| %&Ŏ_^/W-pBxOTl:ߑxQu}D['}!}Kq|i|R48Wrot< qSTiK?uO6 *iS#}]-!:U Y^Sgz+ZOd8Ap_aKyHc2YF;J_́=M8r/$Pf՗y1Xl %H_2,ReOjfSe"*KR @C2f9sҟ߼ d*vAR~(\E:sˊXHw8V>@ubILE~mBE 5J2Q[EiZ2A;OΏW:mcNh;T\%UgQ%y07$dqr?wmVOfՋI+ozF_ꞀH +q\1XSIvU&:$Df&K~^~Ş7~.R(hGZk{]!z8,cMjo7]]y pk~y}{4#{]|Uƞ@C f[m#+l;1/xQTr |V鷾Ƌpe:f4H2$o> A+2FRW뿿 i_M(E.09!:~k+P.`xB`j@{$O3jM;Śleo@Ӂ8E]E,9o`C kVB;;VHhGT4OS"3U}%)ѭdK;+ߣ(}s c7IǾzks87a1ͪG# 0XP,WmO_hH>fFfJ(]Shl㉋a"D:ڌӿ/qy7BhuDrÓ#)MIâXFB&åqdstMF:E&E(q4L E{XT|#e.1vo xM𾯆InӠJ찫0)`>kRˋ`J1lٷXԱ_>: 7ښTѭ}re6/ϋ9\^ϽjIeї X~i/Ȍ}Nt(>'iI&tUex9\PwL$_C*; jXwKԅ#@n|Aͽrd5[5ۏAj8í RæLJ(rE]4.Ĕs TO5ٯJ6nM[Rӊ=eQi Sl,DdO&ڇ{hrLĎUÓよSa,̎++XD#aIg_uW/0NƬEj ƀUY,W\b2 Q!xɴ{̴mrL`C[9 $Jj!;u nX{eB1)+[xta@9ƴ#bC[ɧ$"b5&,_y sӤ I@b=tc{oʕ3RD'̃s} 3g @0a(\>5Z_&znk6[fȺq(]7L$- wǒn&2E+yMez>+GC+ Mŀhi\9(I@>q;Rcp=^võj^n?ǻW?kÊ&;>6@r3G[Xt%+b W/,I"9P*ֈ_GdDOYY&Ȑb_{=LYc\\9UO5KO#%RڇJCT>D@REDq}N2M]$!cg$+Ck[:D3vS4^,z?XH3yyb!WVz=J.Y|<@G^M>l:[[+9 v suӟUGf*#Y%*ۇ8ך!uS7I)RL@s .[Vy-q͍5IͼX^M:U qدUaP÷XZ[jc,%z#xxtHs#-YIPzYUz&sSa֚ŐȜB+ `B._Ef3Ie%\TrZ9[d;ڬ&i[M+{K$._G.\#pQ5 5iǜPe`ژyK ,EUqZt6Ll™IPh2vJis6 26@u wFI4?%wIw(ss*WG8*f12!w"%Ҁ;_ZX೦4zYӢ%ZyNO$~@v]lѽb44'].e5 +>Q 1XAMP{Q|mrq*df˧#~i#-8[ަŽȓڮTϩ?'-Y)YA~!]GE"dĨ zϻW5.э uOg#Jsy49j{^ ъU+i2&WMZ 1ޗ-`}xAMTBlJyQCAj)nx(O(EmBw.{鏎$'pQMguBIr^B` BDpKr@Fo$oo@B}VKf+2&~sX9Tkh Lq)8?Bny-9G?`& N_{3zC_u$$_1)^!L#g,րbYN75,cC^y/X~8&dTd)NM (c8{3~Id@q.Y$Ֆub ~߫g\/*rZ}]Vde,㣗6 cSbxBskQK7!Jf krO)F=2ut0oS} .9S׺H Iw}͊`?{۴$cq= SPoēv/QԤ.~W0gݗJB]JQ/nݢ%p~pCl{"sH7 %S-5jֳq㣋&rxHBL޼m =J;GA|1gȨS{K %y1A_<39Ok|x{^4w.CNӐ,(3ts-_=(L}+ 0JLF̣ȴCϾLP* mv6܋gXsvfOIQ]'KΑ9q#fP}i_eEϞ RYN? ӫLB߆1| #+Rule%3vI2E y3pXkqbOZ"^)v*T>olm;5em[r184U7"rdFL"†!xɶf J`y[J^ݽL -*vNg8r.&1. !m3A. 7ܹu]j~=C 'rZ*vsTA~geFҍG7s_*EyNěFϒy5>l/R;3>m-fp>6۶HC4JpHJ><͎;ARJ+‡͝T^a~%\yK{An|]F Zy߽k<vNa}t,K,"3$=UxN*̓g;O1O>nqªI-&n:Spgyq؀anE6T^pY'۝Xо/{nOWy?1n@Bq\$NJ\6B C=}x\ʳ]}LRǡP^ {M]x1&}!J _8{WH?rJa avPY.XzEer~ײ;1>I#xZFP=G$n%q$g 67JDrN\ن`jZV6,j^vDH|Kp(~}N&0MЪ|: :#O~!6ÜHQ'vߤ>!sh.䆿I6z1Glz,QAԹQ],%҂E1FsV[8s+̝OM RTj㬧i ~*$>G8-r]|+ B+ 0=v\dchG:Վ -h <=s'aIpYfekM~֖-=`fGbΧ_D_-xctH tu;މd K \tlBXޢV#d2(|xk ~9S ?`o,-5w`:6,˿<$OErh=b;íKᡐ]Sۋ91$M.Tl wld)8j.|>c݃sJNII=.V@z?q$%=74N# dnv@ {~s=8ghJKmGMV[L-jzYt% @īB][.[" Sf.`OQxd& a{K1 nE֤ RHri&(J[ΥGqC>k﹒]&𲢤'|Rt={7Ypmwt;K9-:Fd )ѯud324Tp'c.zdi p-"lA"Jzp={ɰ&v>IRQZ;LS3Ko!jtS(.g~. \\y o225-]ms6ρK|VPD|Zk2h PAe~g&O-P P -F%gv CCIo!#hTqUЭ(b ,kk&-%WR#ZeUx6)тxD1zVAFrx?Ӑ [tԣ"`{3T35_$&@,>ҧJt-KGpLz%ꕅ`FGXoB r{qI-Ԗ]]Db]Fl-p%Ye=I|¿oKqy;ReZl<3Ax-}~/,H-E)TDfSLMx+]g)]=/1f'li-Ά<^ v\Hcq2Z]Jʄ΀`׷yk/E oL0s8j MA2S[&nV-ygNDB'KahA.\VaMS E/{fb7œc*%iPuVd"L!ظ]hm]3vk^hd2u!JY1w_Z0}%$@,wfTx.I/t|EEO1h[)6&ri}md0͚;½TˊŅYϯ8KX MX& &ȨM[dR- oC7=% E|dN!8 _ߛȉ k}~z+Kxq%"~ۼyrh ?^54n'aU`ʅGhx)AJ>Ѝ77kc/*hK!(pjXeuťl6H> -_>i y9)fnR#bgwPZ$ /[Dfv7pwشrhȳ"MHoо`zt^iny.Ync<@ rMy=ꛊ^K@g ,E.*iI"j\a*i XDhC3aEt5@k2H9O$7<YKDѸ̘n}Y;Rb`ra(念 "#$?PXv)Aضp _xiv<'S4 Eo/(}U|̪!E'5z6TXG3?޻)cf3 7TCvQv{`VE=b9c5uyޱSyZ&b4'y!9y-Z;Ʉ/U(uZQTaef0Xom`h4!+FaQEM ν9ˆаޜobۂݽbG)5\זc?%3"4AӨ@ö&ԛ\|$ &IGN/ gK }r]})b k_㧄!ϿAlm7r_djzZXTWf\{~(@PG2/{$3/;F9.UԼ-{h`I_W甚't+Tqhq˄⑟ SR,L2%2^ zV~]= "sM,V;c&_0DT,Q㸸|_^glgjҵs]WWqC]itkϘe ÔO.G&TTF\$VFḍ1R XW!;%P\jt b)Sc2+^%w^;?a-2w:^𷯮ΌR%r9" oIr& h`QL{l DU bzY1HoZĪceeύ<S}e]bs l<n7k˫UmݽOzCsc~mX$ZMQ (bՅRQA8u-fxʛ^ψ1EDrS9!gI' c`Φ^v~#h)oM4}5DKL{G>Ù2p݁)hH`|0Z.h'x_XV/i1]>V2Ʊޙs*2pm+V\NKgĺPMްT$:a^OUE7^_,gv摦Bs iC P_n<4d($i`\B 52Wro8U^Q3Ȣ-e`rĊqrj h>4;"#$=5SL1 +D,Ychp2AY"WVD _ahcY$o0UВoWL2`aΕDei2B`йC}u6RZFD 0wk>.iK &"ɳBڗlkf $. <.)p2bӳӏb7ᒋ3ˮTI.K[r":%-۞Jբ: %,GqM%{wVɿOH;COS7`=qB.\u_'zVp-YD{FΨ%c^A+X i~sұîB5 X LĹbvU>ϊ\*fԲ@~[Q@xq;qFy?nmhbik=XrX@soI_. {3/˺jBk[Ȼ|#ҭk0ik+oX'yA }_ I~|X"*56w[\]j{E!O$))MI\,Iu @tYb_[]&6W ^"!^"/1'4.M"Fw[˕1= K4ҭVEٿBm}mWo?M%## d c'Gfg5 (޿?d-V.}-qm4i4lsϡI>0:W Zqjt 5Hrm0@kx~U  zo +Ph"b$u#d.zl _ ߢc 5AӍŕ>4 )]Ryo zf \ M ;H&6Ay0A}LJkpk>#az`=o\?R0u|1vKpDi 5U>edn;o0GOפ{oR鴒B|):GU,ETqåPIR`h%'Oyh0KZρ})8rZTz1wpn+WiFo'8~)pM HoT(2㵏\І yfIcMѯ]Lw%lI5Z%X sY.1nRig@HyuJ΁fډ2}{S1;^F#B|*`-o, kThr.8"/$0Vl+kYoY5A -2ZG~9+ɊEޣ7WU#4A0̭1}BchIN-F/޲rI|*L4׌"DBw5,vc^q'\޼c4#ҺJl Z[Y;M h[Y@;PUfIڴR\U*ߟ\;f)BjG"Ů>j$X[tj!($.('D.u[2?ꃞڬUw!h,M9{~/1R?{ ;[(ӝ&p^I2mtx"2a1SrHHǂ}cH^ a\a^x0_$|=b'u,h 4 ?;5羁SUM#U K$b˲^?9f}'2"Z uZrk v[KqΧ 4}j6)ڪnS~@,wIMo[ifcg}&PΦ}k~)vFr&\4$lZCi!>޸ 0BwﲊõUi V#?k̜,+Oڲ4:TLPl@b\3ܑ?58'@2ai#ty^c F0‡#yޘ2XS a@t(#/Ij 9`'&vga_p}WbI;\^3l̖Vrd &RtԵt/ g뻀4aCDUlv8DayB*< jaN#eI7]VvGuhfm[5Qyc4T@ω]!>Nӌ`!cY4 H!#`q ˷U kMȐ OYpt( l("&c o֋i,hޕB$!g!jG^AY{tͭ r"qID &cӕٖC `O(X}4LtqR@4bE=M>ù+S@+mW.BjX)%%DV/'@wBы+ڲ~ۆ/er` ry. P*F6y?o_o;TҒ͊qKDIS?o#!W~'^YؔW{]u_yx^AA7|{Fyf@O;U~ w`}`ReO@_dl{^ ;NJhOS4TK{BF 9 ibrŲ)u9u)KbH]$aKT/zf:&ovZ(I Ԓe0 :vf2uCإ!R2U"^ ~׶%ET|̵03 "Gy ]b^$x6Ѱ[sBǖ*fP2Lgv1@AX($c+RWii“s4yVy[򛧽gb ~0aeqɬGǭ8kt]&mEgeh *!h""IĮtnKR*P R ֳpo:"r:^ƃExH+]u bC)a<Y#QXD1iT1z]%? e%m`RW\[JC^pA21CRC@X BF797R4huDfk @JJTb/ є%EƾD-;^ۗt%e˙[]fd\@S/5|A>:`.t䎆oVt*6һeuc}oGc~SQ0 *˛Rv;|ںEj1vғpo&EI{y->+j3ld~ˡ+mmXa6}Gi2b]clL0V)Sڷ`j+N ">cUj(nnDqA*ÀŋjO 8vBoj鶻ꤶ֠߿T$pk_R\:cAQDPC"[Ym9pe YFxf#C0U}{rڒbJ;͗v)*Slt T!؄fh3b//D^p3~v9[5GLp8C: =EƧQ)`A]H\^52~ɼn騉 b"\7k$ ! mk96gesp?ŤWnВ;(zfyau"x)41νeK >0Ayr`!b$ m0a3}{mf *68ܻUaY+O[o$ 1TG. Np"S,+'+E"` Ɂm9qό>#@Ѝ?AP"H ltإ9@)WӾpܓUܾsw":{4peG~qZm=[i:I/;l w_ b*V+c)e)NADEM2y#NtSg*u%=_V׶R FF߇J(*®N9\N(f ECIOs*s7nk!gٓSmuB]5k>`$;[n<yPϹC riI3pn o`f7!r2תB|әIINk} 6R˹b*U#2t4& Eb+X{'\lK2$fqSNbhV_[ZPBsH28(G4JmwρжR>2 (C=o6M 18E;('LPQg0zl8ځ\ e{8\w`V$z  JɍS͟BUNT)kԯ[,0~ >w sye@ǐ*c 9i*IW 5pT (JM m"\l~)g^)N\7N 3?[چY:^Pܧ͸URYrVi0Tܗ#tC%{SIoewp-ּ3S/Cvj@u5YN̜yc>Hez,^~WKWw!E8UNr)v4!Lσeϐc%M*s}'SO! i:Y-}9/;qmv{ACxj$TqfQxmUj1.>ZowzgQ5-dKGc7~Rf d,OsI%!Jwar*+7V7YǺr.$=oqǵt+c  guZf  uAzFD<,g3 ʔ6P=gTQ2VW)Ko %8MzX-" U#Oh.%~&dM>(/%$.yy;aWw|dQ#_Gә ]~0쑯NwaKP?eVCUsl++\rQWr{?Чf'itܴN+ϘALF&IHZYmvmz4ٖGz3oȈ/rl q*+ c[NN /ޜXj8/%K ֜fd79ZҩvhCB?3=tVSJ݊ny/pa0?`7  O\C'4z9:I鏆{ if ?L7b٦6_P^CB/cPIMk(̄&fqa{" M.3Y/ge#@tzTz*a?OG}ǎw7p^ݞEX33Ϳ‘#+u2BYlk 7D}þ}Hq1,"f}X+PI: ЂT}?nvE_|M UR 6^0<_ 5KF 1A%$ JWmߢ3[m=b3l0Y:usCҮ44g/H?vkqtE4˿F̢MQ[ڧ] 87"fG֥fNe_[<Z6$$뒁TY,ol#5PFu_iYQ| ϩl.?PMkUM#A7RRAF.j=T6g7ٙZn\2 "fjwH 4ֺ3%׸$ՀԉwTۗ!&یX?Ĥnico [d{9DǞ#Վ;FYa*b'pW!K":GؒkLMQvqxԆ*c!9({ N-$57YZCxCph(vH]~=a5íWݥ=v eUн/9WsI.BD"uvЍs||Q!L5#VJ,uk} *%w)獣Ț5>P3Ijp"#5rԭwx:즆D XHFM>QuϽKxlnhEK-",`&8*p.W U ekNAK &nu4!EvxQ|pbcϨMޟ4B̞P@BՁÊ1Ы%䍺 -+B1 t!?[y>( [e>ٸVgmŪ>pYy|F!-)E>Z0W3$l?L=L8Эx/N0@B1^ 6/fL-1AB*oV:$)JxA9'ΝO[t y@ôj5 (Qє5PP(Er6 zWg|gCX}[4-

mEa? m (R lj3؆x#w .SDMJH;l{A Mnd&o8׋AqF+GoTU.Fo} |[Uh!ͩ܀F򔺕ӂ(VTi6~:d :ɝp<&G7)rZT@[^&Tfi9­ Y&۷4YPJ7\34n!zWrA*|e]$Cfn2]o2~9m\n5BFLe֔*-oewYnD4s(4 HtI/  ?qș_÷vS^bؕYYd=r-,ST_AZ1 2zYj OyNP~L W z[uVv1ͳ@=UQEuMw AD^Y3(guK)Rɿ 0{R>]Է60$3̮d>3m=;D@ޢx\Xaf\a¨1Ū'(1Vȕ9!&vDϟ Ը̶m}ڰSr8Z1HMbހ''oCPHzEn0l@(q_G<.58SȐ޽݀jeWPU9|aM7cXN0Ybl&ekv *bx滺He /'#mB$E -ؖT3 =5knOpLF!pETdž吢fzAjnC ^>F6Z_UgpiiT4 {_Ǘu`}OD"g_,CoAg7KX?Ϗ2| c&lY RY VF[ĶK Pן$nVWlQp}qE ߏ+Q3%qV)a!2vk@|P_$UΙ-j &qID,mrYժʙ@1ǫ`IM |J22*urseZ 0t$b3F/l9hL8_uTv~5fA.I%T\9-[xtUe I-$5@:*Q؄C'$ g {uuRt5^~Ft\J5{P?CCh]D: ʂ1EL啹˘(@.-On5)1$K}ߴI:XJu.\ UG]r훤awqB @g* ĻȨaS{MW 5@^ε8ehԥt-G6:tzgR^O!4XMmHhZ hϛV;ǵa|0DG)czڮ`]Ͱߧ{XI̺ q #03f>3k 2(\jGo wC>9A˛vIh24y|ؼ,P..}(l, sNE/LA=\i0 4S} 0 g2.fɚ:=s0 4Ĭ&粡;I1 tޱ3@}ubV:v[*IDY˂0Tɚoqs|"miuJ:}`bOGP:)bR}]M @W[Ӑ OT\ppF fP]xzH6ȢMw:6eTgĸʦk1.(CẁéМ$M͑#4dcM*8p+$޳yiVn3m'̓Sq0Dv.fYJ54<2Lܦҫ]S( km%]ޛy DlNЬ{罇:%o˜]lOV.z{zZhH򹕼/t4X_i3RUD 5 B˟aa E'/">10W `S´Ĺ19̮<}" f{~\sl&1UGߙ{ T ̃ne Mdf8>`<߽02% #cN4}qeOlzp<t*n.sH\:(zOOAcbYTu,y*s˸2 -{O1=m Yq+=hLd,?fM84o*Þdr$W(kz|pdU%(i^/^c4R}fnJG@3+rI!Y7,Ꟑ Ȍk~[e3yi@MEϤ!AQLY<7@s$s=IH|2Џ e&anhJnݥQ֑o5s7Œ~ "s?ﵦM4G]U޿tB M_xgDl8bK Q?͢U)hg&LlKUVkco/ $ Zxc{R'|x>(*']̨n]̠mÂ"BH2od]pp4Ve0%y$`E'cG`V#DfjmQU+0{Ƒ$P3Q*I K 24/r1싡pzdjqNavM41)hqI=F35S9:槱;M xa'݇2+xMV|S~.ϧ:#|Y4E ~.]LJA"b`P"{d^㬂 c:뮯a#1>S.AηIkɑ?SSECcٚQsRv58x BAؐ Sw2ޱ5!{H} 60HVy*7`eUʻȁ:hd?pc!F}Lszt3 'TQLBKPiey8D.f̙ܧᆣbOyN7E80z`՘xDWaL3P8XsK=VZ@:@%C *x!v@9ҍ0Dž\:oںaAңe|쭽a#HׁxVXtVDmg"{L54N;z6o"]I6}=jgMQܟ٭Hi9qe"8AĔi'>,v7RBvb} .Rj!ꍛ2饫9byG/K}q&wkYT]\ x{;M\z/ӏ sxR\֚6/Y8ܺYd3\z;%Lf̎Z8NYuvY=q2!rt3>tr&ieZ 3փ_!v/^ag^ PV@4VIUI kf| U齭NCz0'gc@ß*U7ˋ?HH4 tUo$k^dSIv}ۅC.S ~ϥDF+޹Rr_K9'=b ߎ&>Hv@mE4J ج5P tQTkQ.)E(+- Ռ:Ğuծ4+{~cǨhI7A;ihۢ~W|{m &mL쇳DBB>cR'4 ZEt>8(h^\nX\ tf+aEBpxiD|^+`'nREBKPC02qOqFU:|`>m)QcHX:c =HoʁM)nj8f$?븸Wkea\דor.~V6]< F[l*D%_#nr\KZGhUWMWO{RNE j"'^2aZXr _ENff_K6L ['S̗vK1D -Y)]HH/ kW >&bb~F*b:ؐrs;Udc+g*̒=uԱWD2U8&lR#A4 Gwǡ@D`2DHuE}.A x?|C=sP^>780&>a*/m˦V5|}ϐBֲoY vk/Ggp! u$w5-*b֊: f$>4_I 9QEyv E0d,:=[f ATjG>+Mh.jzuQ9"U? %φMXT('z ͱ , %v .*x_x9'!M]0+{}/sbo1qs'kj1E=aT L%e^•޻}f xQokhO|&ɽ<8_ڔhKw%Icq*ʐOSQ_1D! yֲ?;ϖ7F.v5&L[UC[_Q({J .zrU!08LB4 gz3eF 4:K+9܍>WJ:h6.,34s7װ`]`.SrP 7EJo['di)“%YapPYmϣwu*D;q_e\}<]jGhgVi[K{$ Z^HQ:9Őgϗ۽uR)N7ro@hea֕pv-L&D<:u?- ZDwHE藧\)޵t);&i<]|c $B+§vNO6Zh,f Dȴe<~׉D0xԃПBjs%AapB7*&FR^F՚ 89rSj!ڹ~7FX 'ǐgnƅ#KfqhN2﹒%(jH~ZGCwnܰnB-;ٍQcQHM(U.Wț]'L=lAm2fB_ǬDVPU[|]A&ogݣdB"gunB;!EJܡv)xȫ-k>UoQe˒X P3ir_|wRJؔo6M?W췲O44zώ&r-xypB^gX6R!Kk}M ([S$eZ %w21mּKR˄lqXx/gz}XP"IVhzDB ;\|1ԶPDsƅ=1zX1ԍw|,N>uh5?&(>7PI}'N {z1mM)R|(Ž#PKF]3ޝc8"5! bdI&0x'zb*p^FWǃ60MI&"R#7lY,T .5%Oc%VB p2> t='}_uN3dM¢I 2M0 uB%Wd$ nB+Ehۂ ^HCɈ.G tƎ >Ewo#Bج?0P~,66nZ7QEO4ZFw> ["3BSw@К- + ,DcAoVc7 u{6A(3mWJ\v64'Gق-*g,&=w 1a _mB Ճ/r c.>m,D`<Ъ([hoW쪄M hG\ ӣ0]CyOQA:U%; a2,Eg`.u !:k~u8R>Y `*&O6܆vPzY~3kQЬ4 𠒉S-N8'4-..rIt R[xBKXu`fɩT}*4墖A@e}dwxŠS5$ll۫ 7K<~YHҜ\Gk RڢYZŕ a>^Y޵&v?n)(: '4* όHI٭ܥDs4S+> uR7\F[{V؋YdK-|J-%t:W_/|PݗL&&زP^Krm^MD]k3dZsFK:4X'WGb`*B,#99>1Bޕ%FvD^:Rˉ="7^ZJ4| ۩w|NG4u-fһ %y DcG!BQ "TB|Pfj˝҅KywYnXN>F(vBi1=Hv`Ǽk$E|/e$HͶ&R`PY`d8r`]5bH%yqr9R;2]ۯX+Sg= [ )Qȵ`{3au4;q,杖{O3)<; =p.a-$XshC* 0GT+ plGϏi]J׿nF/;GNloWɼ3`(``%[8mܔn;=*rn1G^Of=7wfWeLgļg)n+]\ϢkG &=$b. "N-ވzC !lEbcq|Z &*kkIV٦ q#=8Qy3=Jhu qq32LV`' ]spz0p× O\[?>wήHxpRv0hhIE\ 3K~^멖&ot-bj0Ze$b&igeoʆʣKz~1fS7oRwT lRӞ$I\gfKpM3y?sPkC(!HgwVR=PF|`:_*#nEwqԧ_1klO))+a\H or0T{`>,0QWct1#57ϐ;bIi'&S)j], zC[X&`.Зv{:WgSTv|n(|Oee{yV_>G C*{ADA[OXnIzLEfù`)G?ˍcдtd()>Xy;y耥X"[\ufI}E8_Ym_~_RNj0!%fp]Szn}D%\5ǡx^⺧@sB?rtODd Y o)Ȧyģ#lֵz0 q5lT>7h[8+_b\r ն70˔ e>x`d=)Zx#hA$?%dmŇt}E[NM"MpT_0k#@kJ|a#hڭlpoE>lvI݅aǪ%q*P@9Nc@?ޚhLn=ǡБ͹ƻ Qvv@F4F}!.暯Ȫ%͡L;Cq-6ׄyk$'cQ܀{/గJ!c.xQW8ǓZ-ID={'+HKLoRIB8"e% 'Dk;e_FzNL(Y7}#i*\#^NC"k_Qn,TVk^i ܀&uID%οOl39V)z/]׉mDzvu5e1~@6cҶɉ:G(|՗z;* }45+20?"!Ўsi1`{Q^R"{^12K p!Ԕ`Mk5 BVJSMwꀄvucYR9~W&PBX^X(=iô h,=zlnqK6Mv֭22R-Z&57x &1m/tVCGhJmhbZ:+UKBg>.Ox$Ha&x3}`˵qYEJF 3"ϑQsvR:[;K&-LLh1Q _-cx$&P:p3K ᇡ0FRJ_Ӹ &6K$|QhU/ʂE75|M E9"hR (`f9OL~z\j6 0]lWl c홷؈3(FCjl/4xR( r=- z6:׭SaGz5ܘ*ng 6_Y-hܥS '9v/`Kwd>"#8y؟Iq f[O:h/43zvxܶIV0?V%h#KB0[ox4xxbs1iT y6HYp8kRVOz[' [W2{| (ؘ fA3&{68H Gy@stPÕ XVxE \ ~v#߸B4Ӭd/-Fx؍|Ŀ]dVXom2&QT ԕ/˶WxWc:ezHfZєĎ\cGp#`2A^E {˧^ ,̜ C ?eT Ӧc/)Y&ҳؿ.v؜+!e'-q|tXݪndž}$Xs xI):v˼,j}IY|ltsC ;DLj=N?ؙPҭrX[)cyhKmm:jcT>_d?h\7-',:*q8X)tޱe3 BR'Ѯ1>dr^'|ȴtȲf @ V[acZN+˴^$}@d\5*xXr_Tp,f.E%WKL5ұ^a]8@]v6kLs8:xU[|)̃  VJ=omIԆ[g==?**nMijMEȑ"97XQ>%[?U0h/:e9F-D)Ľ\{a;B=yvA3xBIɫc ;{58kMe1]ݭN"~O|8ɸ.$O/r*dn|23ťA Ϭ7Bk3J3+ `xqg]%%CojٹxjN<*1 ƎDa'Փ]n\ 6Z I}\0U:y4^>tkӷ fRl9d I "އ,2'ql{:So9|z3ת2 !/2 ګ+*ma8u:p҅Yo> ,?PB1_%3Ї; ԕ&բ2ֺmf YyʴoaVk $ lIҤ$= J.?׹ė7/btT3 :Fag_0%SEy|Byn9ƒ`#'jƅ40@vZ>L{q18cX{L{˔pOZgFHIcb?;ϏeD2 {ngL%ߋ9I?NGc łDe"&^KNjh˳-1hȁxt"Ԁi90l$[Ysr4N/>)3Y .Wt?F/#cɫJSuڥYU&듛+,ˮ`G:5I\9s"~t?Lñ^mTt˧4ܯRqʐ,:ucyD-0rxaX3UbLګ{L&Hdr"92ls豌!@ǁZbLK;g]*gSBx 1UttlVA!04<$f`QK+)n&#v>B&c~#DA 15IH7aU:-y j_YzO(&?^G}{[$*Una y %& T`À#uH2LusYYT꿙t< %Ƕح֣uC#i xc"(K:4!s!hx~"l )n\sNk? 's4ֆֽ_ƟvD ڳ#u'1t>MMQ!&)9:n?3 (A%*g&˨hb٩/nSu۔fuoqh0L.\ݙY< ȗlAAo2I6@ݷ̌)Hį; D2]I(X^؉ ٪H8ܡrؖ2 24/ u?Z _ng;-ID3ZBr׻`:%*?fW6{=8;n 0 VÏCR^P' ^c՟2m*,GQEְuւ ܞNaX VE Yz> (K\/(J,B~X(\) cJk)! 9T۶*硩iwh[11՛bemx =igm)5VOfc E22,/7V]ׄ5c4gMka/"3u$j(E}uJȌI +z+̝O8g+ń褘7@"re*"ˎ95aI\}qSl'^kw6ȿJEtP͉{G6Oqe/wk!q/򱃑N2-lN%&PׂV+x zbx&9 Lr}N>2)zY Ueb{@`LZ68w16SJsrxߓ[/.P "$EK3Kʟ{r]RSe,3|1:TemJjSOϊC:r+j6 & a:|WCְ3 jſ  L GMr֝ 1| $)")GA$Ll3,m6iXL%E=H| E>Yp8͇˔V-ɟX Ce@3"5!$N1,Rj5FOV '_e~t* !^}k%^'^P97]{awK7(l3*l\bɄOnXLmlOR[ᏪW; D9W8H|͏24ΠΧhwւX 4{"0pLhcC,9r4 J P@n\ZJW=!܏4BMGc&gCcCM)^$>MAV5wr5ajPJu.;_(_ZΝLF3 52ls~C4i7ukB}Q; "T,AՒn#̪-7m[D{}9H.Ykj?C0)O mqA|5`3g~O?+uxHi^ oUS42̀&YA^ 3u$/P "Y7)&f )dt;'QLmQ(&-}ZX2io&NN?-"O@_&R9Aaľ%ڕ^e˒@3mZPAˎlSW7i_#3GQ;gXT4!U=<~8ZR gݙ;"}pU0j"SpX1GJvނ)c~WT}w`^j@Y;nzɤV5Q~SqPޡr<.n煒v^x܇,pPɤRI"Fٛ+^һp+U )[ >Fؽ.BMGsc[씚gZV[ 6!L~DKNj}ކFJz $`XIwQ(C ]匯cȏSM!Iu+˺A2 & lT7U7qp/-ުJ3 "#+w4NzgA\1;܆prTcZ9>2}sGxjJ90'' #ǍU%If"@rZ<-['N#f]A4KJ9`~!"\aeb؝«! $8( ?۴j{z9iM d(aU9*l 3؞hOԇ6 wwU88U wISm)T0XF}!'jqg~S.)6GVE]4fS:~4:dl_aCZ(sONYV'0Z=Pgǁh"'16A?2cG֪ R[/ɉc'v 0Kܹr͗N$d[ wH׈| V\j=EA_r9V DR" =qy*L̷,6L2o{ ~i5X6LZ0pk&_{!$pӑaL|M*$P Sp6?Sw-teC#$"ˠ>B9}tF@,>1f>OP2Hpw#PxTvo]`)|]?l`OkK1X~6ªIp* -7Иi( 3^vs(&%BkJnv4`pW7 o.4|y=kH1V?qS6&$ -Wf6U zAFuO~}AdGoB41(VT?_p|s=A={}eLUfm5lr#?|Rm |TL&5rTls`+i57/p:.z!8jVbA0y8H |H&NN$\Dҧ؊)߫uU34D$ Pp(4fl%רaԲùLBaJ,>~ғ4şt870=̿U2ze<2-FQ` ,C9 -X-pt$X MP9KH<資x^2d,# 3h<-GՉlx!";rσ]&m9A? Cےtev{T)"C:62ަ7wD%Dm0u|Ѥeœ Ƭ^HkcW;bPlZ gaM!C ۯts,{K+|y?T<<ܐliX%uRx([#NP~#RCJ*YNIRrTe[N#*SSS K*H{6 CZ4Ft<");G begV0 '5,; ,/R²&BL1*Ye2*_#3q:WL2MAZtxa FdxbfE3}`syK1DT8JoL<\ƿkhKUK[1n0ݷwIs|&~,{Tk3#Kh>ʸveփ 1XT\-@6j(s)솤 ~=ڋ R%$o!!W5.VcWjb>K݄haG,⟹I2/$c n'Ӵj{dfYFpjG\ ҷU$gF[Tf>fpu?fgԑ_lzi#D^O,JxuF Fwt>8=Vr˦b:@,L{.@G:h#щٷ^y&.$1/j&ӽHDGَ'A P/y>mtCtsݗ}Bhg3s&f0K_QA7Ap8Bjsݎbż cV7CQŢ N{n((/Im6C%E{[J+6tN`OPK*H 5j fXEƹT8||W?n7?G!mQ-Y2\!, 6><ۯcKx<v4U`_T5ykg੄>_܁mEc|Ͱ(Ve!w^^J5J,N۴@@+G?@N;NWEwq8z8xkmܯٹ-v6V8`2Y*0 [G'}NZP ʔkxH6[jm˗طurL\p&.u%+Dqd<̤uy?nJ)lV~"&#ԩ`G_)}E 9bf5G֐ =SD6%++6Hh^v2`PyaџYA`VOlOЙϺJ2іP*?fQKR`fѵoy0=c$>poFFE='к)ȂnL]u:vjΕ䠮#NQbEMaw=M6( Gr.1"խ/;BqN qV \O41P \5魏5ywMe=U}cЗ9|Wϑ#S o eny.1~346&󷪜$TsƎՁpc#cm x{$DV%bީ^EWBx,cQXS$|Oђlj{ iSkkBtF2Ӄ vv]@.";9gG20v3=4嬽LS,4 D-qv[4j ].28b=WwumV'AOܣ0T1"\mBʆuɶ|tCVYsLB~`fd70ϐ [q;4u"Ďˮ@HdܯA\k@{=]KYSUf;F6S@bHkKoO`-F2 F:N877 ړYwu:*MDel@Y; u HT,JadO*!Ph]}l[pǮ5c\ORu5]_H?zfDh>MDca9{x(}j)C3i(}(ώ:ۺxGT$y*z;}*H%a! 'PWpu ӇL%b-].y!$/#H3d( 5նS~5`,w| GF/-MS{'eiouQ'.TpU..3bBH#\B Laj;D1xmr&؃S63]r_wPPR"f97!Ȇ۝ l_`q ?jak_4vUC#RVCYSy&îq\t?㊤e`J`S;+97Ɖ FΣ';亹N,ˀ40-ib?;׌96p:—  #@@m ~Uy]7bY 8E A[\$1\&YX%4~@_M 7h[q\íB;YeSF IQ\b?QlAIb9UHZrE~lNqWV:@f.n) D'[;0L]rC+]Ivka=/M{/#U}w>Dh;+Su}&&!.b9w M,Y?ٲC?fʱm Ud7W7L%щPdt_cZꬑG"XY Jђƪ?Ć:Ơˈҙ'{#^i[Pۼ'ž9 ;s_1g5 >knϽ= Doc`ttob:FQƛbvfD{eI7(@$_ׄb7ԋHǼEWv4xժ5 C..U_ħ5fї9~] L_jsK-WCr'B!:#ryDVYsJnQtK.%HxXڈ ؚ/U$)Sҋ>N:_s \r0? v4jqFkl~K wIC3@2/p3}P(U^hFbĜR8HTՖ:Y9c u GOۄtGS&&h7=ʈC`^x'9ssB6"TќjH8qYͻwQ>3u'jГݐf--s$[S>ݜk D چ%8K dgo F\v 195{,-6.rfS~bcT&BpF-H̀AF-1n:5=DʩlIwi)Ȉ"6&ԑs2^wL < VzS٧Fd{/@|ك 440=$10CU0m3di^Ź%%Dc*Mod7yg""0AW*W0OZlPY_nMO#=f4cBeAQ14MOӉW>q 7#Ӆzq@x 4j:$$n.(0[+ߙŧ]V n6mBI@wd9?@1 n.V#RÎxag])7qBe"%==x@ 21*-h{k;[`AcZk2+ ԫ^:uZ &3\X#'Xau7KxMNkS0;͟RFBϺxiH\>.!w 8`aEls=qPDH69N˂iVns3b9$U%N;ܘ))>V ('آI\y!1Gz79\ф' K&'dq0>;ra#pF><~>,rmwk%ۉ @;"ύK7-ȨTP{~\.r'F%W\)b^>\lzC" HW1jMVܿF9p݉H/maIJ(ݓt,"ߢpIpo@ǛmD@N= \?NvcZȁk#d2e3Q}ujG* 5L],A$IBpؾ? { r@+' VL ? "mBpezqT;m,7yЉ]MW;Xq{adܒ6TS7Y1 +!$xaom ~x N-ɱ3y(u2\#-ڦ Su$6dJ6yyX@|$:ǼKU4eq+*̉ :;SOQBe"3[tMZ|03\gEyd)|QgdV%Lc/=6Z=mRԒfw[Պfcfɭh^ؾX2<8I,'i݃pBHZmՄ=,65XYƻ~ Bj"/thS6߱S /wI 71phn8< KKDNQqE_r:  lW&3aA NI,iX(jlU )3]7= 90)uRzjLV?X @/?;&)2ѧ{C;ANs^f`Gh2kggBC{Z,X~qmXGЬ2YR0U6XS~VTLiY~6'Tʺ.!K-'$=2Y3ey(8hϞ F%^f*0a܄蠡HCT*ZImDalS]?*yr;LњW4Jl63-VO{qk16={&7Dӣdp1l A*&K&ϗTaYɐ;OLIyj!g{wNc`@J{5*޺ҜmڊQDEô@;Κ_e2|^-3Eﲨd33/f/s_]8q=$Q Fc}v3$&i/'i! ڷ}kQ:cՋ.!e˃H.HTeEsb~{VRGrA8 l´эLCOrܧz^wo-FmjA0u{ WN, (j-()|ɺXu`ZAPW 5rx=`0?SSFTQ5eCdxĞl'> jZUW۫ 1Hқ]NecɄo~?P4W}#.Y@IeO!6 N? =PN1L$>"g+)W'˭A3-ߦR,mܧ |a*Ըe *s'% Vagr/f~=;CĜ@/P (A=ϕ* .c<}HP$ CG&V9&. d~3[OthN+|~" ^zhx\cy}kڤ\dxbA jfQ5P7Ra3g*#*\|mLc[-ŠIse ':c;^޴pΤi2VP+0w~5$G:HdzLk^IZJ%Ajwy֣'CGz:ǦMSѪJzi[~_]T!ROq__Ѕǡw,cmw2D,ZiH >Frv0"H$aāHDNQbd2AÂƾx>81S+#%?cɄ G-d=@ݡ" z0.?'BQCX)Q]38$_keI`P% =X,h:G3^MW?3@Cˆp7*1(QFP򖰒,K@wW(2L.^i,͆~r98N04lܩJi§ޓ\J0h^ܛ%P e@($+7y8ܯOF@9M:K; &X VOFG:m&Ai {Jy;;ĢgvEW>{cD/ +<%Xn<&̀PϵS6ȌnjO$Ƙ@ve&<=;әO``  +AMɰJb_UQ^ VITlo YQtlNإ7Y9Dig?M6~"'},(\˺p!' /nFٮP]T`D-4z HT:LX(hkQ1ޙPũ'%,.nfyڡsULV>ʠyJU3e,5x%#ʫ MYW 7"Ū>:'xoj"Z"=ΦdHƍ Nk3OU[^,ss7_])d;VW |A(nc¥T>z^%rZU|L T#==HbzDk]vw:Qﰽ^Ò<*՝Z K2F #JT5m6Ng?]d/tqќŖv6ŜABEBCE]L- y5->;$+͍̾ uFY&8R`zϟ{ђy`]a lh\EѲ)V!0%;_F{Bt?iTaЖuéi DUݲ![jgYpAu|x[p)%7iĖ-뷶{5( qp}g ea0brXVBH^ F; DBP3Q `ۚ,過]> ګ)j &-]. ac!̧ ()sd+QVP ?/ <9<?3,8#g"jB9V,歜fq]M'fLj^8n$|2$Fg-f{pG$ FS΁@,;XH~sM+bնyhU # _Up'&ֶD fHAR=ؒwYׅWYS@'n^>GV%-f3aMarv0$+n"]jzukO%Q: &qip6AMX6kNl=;#ѭz-03?ė]sG4gyIۄӾ֫}]-bmRCj𙌖tҽϑ1//GǕghv_ؽ~2Aunŀc}pƒKhI5t#ӷL79vAYvvŅB.o{gھJ$:="M9"~Q@ GxXU`b Y x側1fRRCB=8gAv<c7z~}+{;KQ/t(coHꆌ/?wDjIT˫shwj-q6Z79ϱ\R!4,tv™CͷtuC($K~@`Y3uOєE*iߍ3l^-i>aTmFE᠋>b 7+s)JLd?>KpYbdhXY$3*:T~CT!qPVY|i4YK#ɱ?g'._(>٘)yq.`Ň"h;i WE>~8-~3"ֻ|jL8T e8_8fJ9v%jXcmn"%}GRvXXCONbNzXb ڎCRi>&AtFڋMKJ 4TzkHϰJV G7 # ̚ft{r*T`ht4 쇖d涘$V|IJLE:Y4BzhsKb8\n@s(/ i@83o/`[fY%(Ĭ9 [U<}9:㩅=8/#y񽝛ۦM $5WڕQGH+ *gK \3IC!J+9iUֵ6RI~/0|am=IQ0=]WPhGvoܰv I5 NJ𒙭ڦ}`!cB% SOH86`}biQĒ#4fY ̔`DP֧2L֌OLIWgׯ^5n5EQEWnV//@3#㊠%Dc}ltth`bJE֩֌*U<$GvkCZ4D"Ua ~¦cxI|YwA%=}3-,)JTSچAXs!-1{7JEUs%M*RvJ&mSq(5 tد8 ZJfw.X:M3x]7[6F1B_-uCg|2ւi[%b`شMOq E\-T ~_ŧȞ(.%rvKR@onh:&BC.O)}DnŚ}8&֬畈eWȵݰ`]E43,eL|FP UwR5>Q j\xl0(ejo*p;Rk#܃aY 4/|uu>:N1Gs[ QQ6W dPuW&t074 ݽ*sn1 }pG9{ekV :DtLlkRr^1Ь` o녋z+v-D]֬BuVDyag(ЧASR ,xlE>˼tѣcHHik-`dA?E~HɷcśbGRW%#g8R|հlT=q^9Sۙf7&lbkAG8;+ڼ*:#XAGC aW?'W-Y;dfE<9M?y_w2xXNHڃ4=Sߑ"0ph6+1G;TG`KfhmrP0{TPK:IK4U6V8\qNdW`l_*8֛}Rm 6ݼQ|Ԇ=;9`:~ AZCsP2K'`->b@8gObef1SR ?״c28va&uU"_ W[!h`N@tyvW 6fT'Ov^0d)߭O%314HJhMC2\Ha!@@*$ ?EhwO9< =4mk8k &\2º.MS`Բ O'ۅ=6;YʤxE 4A7Lg` b4ga@Z(&f;o:,`1dh݀2ۙ+D~|UQS?f 0+Z̜zW:F9n2;gw Of-WB)煸J,>e`\AcC>/gb\4ڔa9i '5v# Dh33׈Mo;n}|CZ{)xT^X+Tnق 8gVzӂk=&!jFɷꩺRiDMOt0`~ ~E<Ȼ:smDO] @ڙq__Kq; S\kclPj' _-4zO~%O墋C8J~BдDŽ6=A2gs]mF&8./:! .Y7W/Tt {;JޠdcZ!U" bX&Ԅj6vϻ"]`REʾ&0P$0U:7" o)z6-rp-#U+l],@r۷DovR-h0NXxz̎(P* Ǡ%4Y:YvhB6 >m̲J=B0 {X%90hu%u?FT>С7b)k@k=lj-Gԍ/5: p Я㡃B1^?+ft~]LLJ1WV;x>qzC@?,ل7-s<І5vŎmZC+??Y/ܭpcfBtv}f@6"Hl}Np١1qjr tq#0\;t]5rVxQ 9RW9ZuݯDM"i&]ЙQNJmz+f?}cau|,ZUg=U%* 9ӤZS@/y$?IIj(!Sj *FKWö a$(vk .ayɠOءs39fawcHAt@w)<9g[ZC-ߺ g`4lq>hd!T,\ן"Jazu>¢԰(Y 6wڠ,QڱwCߧ´K'k;\EcP,2YR 2x\!C`W_MH 7Qa&!a.:豷j&}UKUxd|nmҹf[jmRDg'T{fB6?{'kvAcnsUz=+EAauydʯ49_0#I<Ѕ|c^l,0FWP˨L@k2~ՔV2Pm=z4$ºВhw-0@nUT'K+~q fO_;;Y~"E WFզ xW߻!ZdnJk\u*,5S<[\!(Ӽ@Paӝjջ*WQ _yBs-B'w`56Mq$OBAʬ'BOڣ]7MIz3ԙ|f=7.ۨzgKKW\'ҵP9`!p=,A N*]RT/]hl |^څwxZZ_'4/8,s7W$>#̂wzѕ,k6Cc/fkȡOXW,OM%d)0R v}1jQ۽|[s=qz- 6 :xܲQW8b iiCx4">56_NuAx̺G=&Yu/$QJ|r{3*nɂdMl չdɵBPDqȾ)e7ndM!uf\TMOxXf۳L-},2ʤi`i5]҉[ۅy?)ߩyΊsRIԶ {FUAV&D%Iqr!C/}<{oJ M@4)_>P<^Ӥ[\c+)F~mE[-=a][{nDɚ{@ѱGDL|R]^}'%\á=zM +,@\e{.HLd%pAB&[wҗYbx+'䙱v%|6{tW)[.`"{<}7*x{K\W~#lቪ,xc¶Qwdp]ܐ㲴O4I" xT͑zPU*jMt̕bI}@+!aA6!*]  <11>7/&Lb$ܷX`@u;L8nECxiQ.W/[fbH c# +*= X߬3*Ծ=p_lN 0CY VA_k>Gp~` i`Տsyd;43:G\ǰ'3?q኱|"^]G՛7w݌Ɯua/MQTh9Y*7PF2Ff 1LH]Z}V1|WYb^ݡD8Ou+TiZI{[XDo=RpgBiu#A m;kT3<eW1$Oͼٌ|D>fw߈0)^:328 ET464?}zBk^oqrwA>zi_Gjq9vu 0|*>EZ q9kkVz*\ZpSC8-NF.AE-\v\|ʘ@#<"g)V3PBE](!OWGNoTlZo0pm]>Ւ~C8ҟW %5ݦ3geIjK+O(225HU;=bu̶6P o͓*eJwj9e*c s`l =QL7}TB*hl'J臊Y( 5+k7 |tGS\u;2ZgV)vX279c`({]fO h A Kd|vP^#X4ɞ--[max쇪jCm~Nﭟ8kpd$K۰nw8ɱ`sOpj|T14ȑ;A}=Faѻ2Ǿj›ɶɜK\P҂D_T_Wgx݉ٔGi f(k^J|1:C+J"z"Dgp|ZڍHgü\LE:)\j|PsW T2`4OۧT{zOS4(gHKaH `T$T `#9@\z>?%xoV_^G1A3"{"?=hrweR\]gϱ55hn544CXٮ?'jv =US9h`Z}8yDwڠzI⛉IK&;N.ܤimu$ʼ0eċ\z-g G= R!MW~%& 7U0gL%ՃN9A<'N ,zM*k"䚢ηWv%38P!u*GvQ1U0Fj[]4-J|w:Nj2DVSgIXTx .xq0B0g㉏ L/>Z^V! &3^<\J)8Q5tqXf($EffF*-ӫp\gǟP灎aR ȱ69ev",am 1֟8P9"HUt[shߥ&eqaL` 7[MQS]YN8[m6wK5OF `g{erW71&Gz9+dĠ)/*-øز2-rQφK/-KM-5zJa]gbB0T0~aeSI7 wЛڏq )9Ԯ4dv>pv,߯$CmQ\n[򬄃Z"!E]S6TXr 'I_A<^^aD +R4utf>8=f.3qua,Q@øUפ3?lV}0)nIL1> empȨWS|$Y+ \+f>bf"6{2ԩ鶝R4³-}h߶3,qI u[}EZ ;'FTDNh`ȏw3L2ہꤸW+2+j^s誗fI?nwUjJMuH ~v:IA*NJ*v ;ۥv81.l"@"Wq{=Riy lq]I"d6>PpDŢ, jIilVG|3xK&mz ݺ?mRwp(qv;)\${1}D+pmzPz㹑0\&mX>HM_DզOou)y'Bs78@uL{$E %(I2 w/B$;xd5Tne8%.4IN,JF{:׹m:vBU%.콴0ЭH| nA 2@uUΓˀxf"CVkN Ήly[}P@ٔ&̠uIqVG$)< L smf=%ߑQ|cM JMc±QLohbZw83 #]V`6wdkp#x `}7|֜KuId,t .6]h|KAI  )K4;=[jWhsK>[l;Pveq'e.lsg%+3O1VfEFG$=RI3[.kxi6Y3!mY^6P>LTQ&|Q0`}u`|AJ`;Kr6Xys3t\>/.X6<û' / :V1@4S1CUv5ځXf|IF3a EaSkI}ZIlv#1mmQOCʔi3 T:+GT^k=N; *DeBrT\)6aE ] % Bv\~~<L^ )HcE{dKh|)ʩN,?&gͼYQH Fmğ`yTQbDr7fK&%^'G <]Qb~m2rݥi<]4D2枱 S1={#iȺ]ݫy>1g[3z2ZY *!(1pӴB#c^uB 1(9huI*+ﮬU Pr7 WؑQoDFZiZ;Om}l?$ˊ v ۈ_ѮQ3 C2T'I9 :5Rh* |d; cӾu|<q.8;),IMQZ/"n%|ntdͷ){?%M͋5VYw%|0AOd!% >'+ֈs;r:[#ゞ3{і鿗 j{uyU+,xF\ e4zshffbgč.(p#xM J:;;Ce)gAqa2pK(kg;"XTl3R9:$/\8pp$)*#IY. ,>",wZ}\/צQNWtϯ+׆hT(-Zw@ѓ_RwH @ǡE#c&HniL7F_*>bU`O%]yƽ 戰ַv\^Sn*qX.""w썖 ;\W.)rtl߷|HIŝ¸ѺCΧ]heN΋8@Mh: YÜ4l_S<ΐ Wzqـ[;S{T<7\=we,*L>!c!}݈lߑMEiGG:?]lSh &hoLڑt ܎ԾQ:EuK]9?Zڇ~ȜO/ qڙv>>qV@g;Sv-}G:{WxbzUjjWM(! XoW1=/*HAg ob;Hk/c2I߯])՞=%[wd|?v(/T7qvŏ? G5Χuv wTR>7?fWW{o"Kܝƺ4>(\#R>AG7|C2wY=dca^BQ(=Ty8N@..!( 2#a/h5}촒j?c'# QGMoh5DqW%w^8{̊ᒛ xe@i~j")4NO(= eɅ-߉nù u̪0̈́}',Q'.?4SLyǘrՅ{sw1v6gb6h5XKEQu,jIJ|:~5btźe|R J6ZԚWg*ӻ]&, as] _Y?L.v/ a+ciZ5_3'p:Jeu$4vC6/E3;^`EdEkKPa:C$+dU燎2(/,/מӍ]G-[:s\ARN{uO*M3g|6W(B^XzDHBIߐ UT4bYA}*p+DCwYW0Nh=MkbWvngi`?am~ qn+_)@(ϪIACELo3f\ Y#iFB8JU*UhM=r;AgC %(j9lQV[Ola@JdQXWEi'h̋fHH(}uX4Bk<xeEny@Py}6;ȍ vBzcXSrkqD|^'e&&CWxf15ЎE[Nt6"w}ݭ* v'mn|VY ? 8Aj7 D7`n1^:y dYoBYDܼPW>$;M=-h̼RGr3"7P(צ͸ͅKI/{\wc?p[q"etY-V]i>Lr|*pqhk!`&a6QRm-.b5o.GPe2c KS >֚*cwET f)l3?Xơ,&xE(@>w>:X ]~u 2ڏptE޴:"QOkӒs(&V6,1;DR#k]/S}zceKEHvT+(M+y %JK†CяBZRSδ͎ Q08_d.5?q+m#v; V$[4F*Sр̩ %## D_étTO2 i9ʶ@w~|)s?*TE=@n$r^^B0u^@ *,ieJ3"6'-/<.Ypjʐcsq Ӑz[pToXTI2EMki"Kh 9˶OHMc; Arun,=NC%Oɺf]%^rYYƥeq{qğ1O umƾ22=.%D#5W?ITԻyH 탾FG g Fkð3Iyb.l+ԓ{wMFfQ&# ߷Y[ cx³ipC0@jУ:n:FO eˤ"ǔ/hcIJ&>f KŬ̟\M;0=W!Q][E*=ZDۧz.!:WEڷdЛ#5dA ;i/_i4 ފe6hr\03j ԛ߃OGXQ{>>KH> XIrz;eSV>3(dYUNzrf.t;D8͙8\ts z˺qׯUV[R@0)Œ92VU ްMA&x#xȟo96ǙQf05*3p0'%6W(-( iK0Q|9^5wvq-fgƊ ~&M܆WE6N'94'4o/q]Dc2e1 nATn?Pԣ2'ukrP%3+ueǵz1C38 ZyotU3'l:4I>q]!Oi:h2KNFq4QFt2Wm)Tus0jKe jD(\+CJ=~Oobh#hudȝƙny-6EqV[WOk sK^d~K$pKbC`l5%ƯP'pW&}|L&F1H, gؤs&{ф|- Z]xd-J|l9)G!+ cF|J$0j5Ruc=Wk3RZ'%l&}-`|pzښY =j2A^ZT;!9UVՖ\'@f` ̴F5`3"RNlb :G7v> ,gujlo:%u&! n Pj*Ɠ)+qRۧyb"|Pi/:L ;Ha>te+b9x/Ļ7 ;u<`gl1C/bŽݣ_BЙk+g5.?-u! AɌJ&-J$2+Gu8ef5ú֬~I=}C~J;mf_Ӧ5Fh$װ+ ԏ!4CH+n=QH "j+#Ďaĉqx8OPԷ*c`Wلsx0XƞzweM;u zVBύu ?Fc)e[oӦv?[7_`(:,xtA L\;n)WͭXBNFluSŽ%!>}Ii#ts 3uD3 `㨷$F~99e5OpmRȬ|zvJ"un{J6R7">3.,3<WG?8yntZ`-蝢Nجdr=\̀^DO䦀gʠ:gH$>*R% )ܑqۺ@'z*jg=1*GHH]Hk_(rc>Uiq%±S$00 aLN$1+?bF<6 e%b-i$tԔoQ³G_ <Ĺo{;@6fFON;}ц LqN~sBTmbd$Y†,m#7>,@P* 4 ;㖪(RwIϲABhgBْZc2q*ihѼ+@bͶMyY#>">Hvy4ce [۠u`@%ݵ*uBj2_}kϭs7xZtSc.[ֹnfоDP _cm 0eُ@Lp~)zEKYMscpk>үa1L#..Y ͈Ʒvl1P[f<Mys㬝>hg6{ie[!PRʒ~h}c؛fY,44)@d`~V&n7+'ٹ1잛0 ;rZ#q}0F9Fw1rY}fڵO1"-.Jl:Ne8d+T9g1ȅ+ei檩2ʧ{V:ԝ9(%Mf8]`xld~2yuU`'qR5K"=ՊP36#؊OQdiիߧ*+e"JTa{jJB1ZTo6Ne;}Iq|ɳ4 8gF`Cs0-+>qZz' ^|\AfXRjurmmeHsӶm\ H~'^gbxvßT=SQө{[G"WC :G $롯S)v_@ڸ Sp&X+ :O2 Gֲ `nIRkp qшVBS'e}V]i*k5Ru$@vx#Ο+\&P;oaDSp ; q;\ﲘ eDdÞo=V!Djv5clPnVv{11ƀ#Zrߍ}t)|K쓲D-'{ϭҘ>.gvdk){69xbI&:t^Ey yFú 2yƯh7fr[fhSFȁs0.Z2.d.,@iZZg>z w=yϽ"rņWkmYUj6Wha@ %s omhp1mHI)GzvZb-:{,Y7iD4 \@eNQ9ěռtnMϤ>zUd'SN炂k;߮wkaooٵ.V"lp:b!ӌCCX씈Om)52=PTB;-Dը",5UBiy&?:R:B{$ 'Z;5+ LNb>dŖU/˂kvցg74..2\YT8D vXC/"/bu8V [DRq,Zoۭj;72]Nɥ$jiɜэ=Ey0!2XG/fl6䍏oA0WZl;SR$f0,T2(|!]q9=qp4@ * 0<ͅyb(B~8QlJ6!0 \X F =|dJTM: } /ɓZ8Xl!B+{s'|e3-G`{]=H;E ]07BMG|[G9'/wşYK!]S[hTR.2Й0uHdι!I)yv5Tj=@0[Ԃ?w&&O8orľ[ m,JUEF&n^L%e;3;B}y̕Ը1ʔ|fa SˮēQeVZ522G|xF4@4!Er/pPІ] [.PW=Dϗ|+DŽD `4dV/N)=O܉OG=tF96_YYID'AOaE4Pob'—?=:'j(BU̓m3Zu,pya6Sɡ֩p{g9@XIZ@-gnYh 8h[ Yš [ M홛kȔ;9gin>WI`0P]`Rql3ǐʻGf1{x6|3V~*8%lBN:Ll׮pH .Nt?q᎛DJ cW̼ln*dy]qc $7W@}#[/׆(:)drhɃ鉛NLgr8{?=džv(#ӆ&؈OH,#kgtTJ,3@cfpږsġ+˶X|H#oF[RU,޲|O:>PrF % (֬R[0K.,ڛzQO@>E<ԫ6h"I9Q bC'b@cNc'f>⿗ԯ΂ ]cdCϮR@:h:  W+B٘Q\d @b;o9?Lu຺9x'ݧQ 쾯g4|[30\-&G>C7fR{,SV{,IbW H)R ֪pK) Zƣ+` q{Use%HWHE#3hx^aMNUf*Z,׶؂ ' +ĭb wvy~CYGO.=xbAB袼V)}&$3EɻsLJ1ٖ{옾l3C7zKl tqJ&cQ{WfO5 jx"HjmYq>8&l F38zKIo 8+"/3XXx_3oȤvy Pf:7%V|ᇙḅ/ᛪ$8pEb H/UBS,l {e{Qއ2"LbGH<=ڹ^鿑2Nӏ.Se*>fٳ5D; {sUZ8LB9a(M J!o.O˃lz%q5q%pvחa)_a:-'_ONxpi ]wkhl\[k ssggK~>Iֈee,8yu޴%wt8NDŽQ9ohHJ~͸P$4l'>\zf`0+Ph&P/xsv#z!zBEZȿT{Z-߈h)к*jn`~7ܔYko}'i;_'Jœ=N} A1D+C:Kȡh6vp2;P(Q*8"9ۆ7xr"hDc_J -'xK=U3~/JEaZ%:C6,X~JE%@#}ox뺕J,7Qr*xXx]ABG2Sh|_,> ʊؖ8m!;ivȁ Eb_p!Fa2KȱG)~q'&utp9bQFk9Ԣ\!p(qD<_V&+]@Q^zyf:< >ddB{6yuK k@h+xn7*H4ҋ`6P.jo'9l$] 9 0Jg%#"PbD.#۠n|Kf2'>L #BԖ;; ZH@o'h  VU끳\q}M ~һ-jVys$~jרt 6TezyVM&AZ,uphN#o Х̥֓[s5U9 3"(~3hf &VgY7ocb- gLC),Vȸ2 .PQ2;a^.#]-V&yI8&ӚlXtئ1ܡ%^cUEOB7wurKFuقn{%F:TuSVn4b2GKc潊aȟCvSf5% W ZqqS=ѰydQ )&>_A1TрYUHIplu K;5x;NM.)~A~_iQ"@lhm_l]Zul_@~T (}ftnԃq1c9E%*BNX.TJ/[8 ڹ'3U|9f)^=>1> 2}p)2:x*tF8lfr" jKטVT9zm]KJb>+0)A&k6vXF$QC!9|s#+e@fҕAOi; wHh=7r'pȤ#1r+o=AMBa47"\hVT޲~ifs`g@np/$ω@R?Q_t,%K:nF XE>k-RYL"; < ruORnbg32 i]yL;F Z~ox q )A}ܨ?bNQ#Z' Tޅ2EnjP2mCۂFwQh}nqgR2u0WZ7g=,z|jyZ'k[^4 /|Dw';{Bzۈ甲4ՂLG)6syU:Zāߡ"։@<}l"@Pq.\?+* gPQLXl&[7o#iފehq/Ba6\Ow q^>z;\i#+,~\x4"fqGѩ<#Ņ 23G~pL,TLXyG6'Ĉe!{;־V@t]C0݆v' wĞ<]ȫe8"Dfga%׳|ļ$IxX/VOpC~'8 6%l4tpky6nK1$W+0''dѼF䚿Kʘdv*;Z%TEӾh>tvdU;d)eA%6RC$-+ Uʖg1X?gݵ)SbJbH+dkebICʥzYf׽X r.볻c}-Œ^u0zpP c@G?rQ':47"kqxlNJduOH<4Nczc\?~I*7e,+ɮ7[89u1c?90u'+D?rqF „A`yhl Vc9 CRFs tF`D 1-9#~!D*bp'SSZ[6ċ3O[~'ӓ18KA)\0A}.߱t^T@"jjғ.3 0c`s`JSČ.ƈs>Tm9tXtb[_mAD^9#iK@ё$͐]A{~(/AΘ-2H`ᶜ_5vT~u[Ӌv ,pVk ۈv8 Dw"16Q- vM "5|T/bvɞ*6՝A(4۲7} "JN$!qkN D(Y9rH[P\p n@ІVq E[^%CMQjKAwՙN@Fot&saLx-ځ$OPjh%ӄgCCƓ7$yBF>CJR^\:%3]"jȩ7MbM2E!\q'N6XӁ h?֊fd!n3G>aS1DiQ ӹ7 s:ߊD:0%4GvIȑZ, Jޣi6;7Y_*b([jThtlsR6zQN" %*&v:ju(]~Ss!ۚ/X?tN-k?fC ^÷4k:eNV|`wO+ ۖ,ߛ}a-pzEoYs_wPFsul(CC( @O:0'FYDaf& 87IѣUi!doh - \r[kr^ࡎ\gI;],9& bN;N!CY:" (Qw8|[;FwݵVb 81֥<1 lSoS1CSt=nI֤xQpQg!5zU~s h'kϘr`P( ݛ/F1ax eoͶl[%4^<" (}⍏=&֨ڝ@ sZZ;ϪJv//J_~ 9TUmjx@Pm"2⣇U3  jIV24f32b%/hLBLs6l@eַ [G4Ќ$<uJjaoxŤL7pG-x/'%~,ۓ8umgmŗrXI_[Ֆ|xR`e[fM^I;77jvVgp3CQ˿voNVDsWNk1; 0al2h;wRmԧyS#yްx ]>s.8b~P~ ckStpx)h@x_gpy~̟2"DkrZFA,%K _ 6#rp,}/0ʤ{t5gB p_RpRD\:*tlbFv9.0Cȥg{Fl3BI8^l?_!}o$HIg:$_=EjPJ0xG ZY?(pBz`$^BY#vfjFOZ]Vhw2b Z1Ov:k[shfk4^r!>eVα^8փ(σ!l㤜 j,4Yx}mu UA l{|*RSq[*SYXbaa_6&Pȭ]>* ),d|ڛGY \sZ~ʤT[_H, {LN" SR<'i <4\%nkL 1b̦kz)}ǫiU0w\Ct.S1*2猰)>raVGsZnczQ+^(W ]G^We~B8`BJ6t" xEQ}7'!TAHmvrU5?>~b~t>9oۿo7ͪ+ } Gtjh^s_x7C?Pny4gr2V1|y~ Z$zg@/޲rL@J6aJNH0iiFv@Op*YnMkeʟӵޫi6HHs?XE܃^^3r_Rλ*ҖES 5לӄ;ek|u++itv ]?!#tyM%BhL!`H\+ȿ?76RUݭ\9ҳ\[g[ Fo mxm)uurgU;n!Ɉi zԦOTWi76%|o+:(>ڳ2@*BK@ /K8,:7A/pܖKU)iC !f*+һf4,k`te3?^~Ov"_ HFg^a<@MU)%+q%d.[L7t6e'> 1,c}ob:4q cgHO"e'%*Ǵꍈ{*ML^9)%}Z}$F4O SEdǸ(Qct#L-!qf+iq|$>TeӕFOU@%>숨K6!#YEy d &lO 嶒",7PS p|GpJ[^91Xc&Ua8YjH큺=w7-mjP/ɃPfW k*zf{z2n K[{lMC29ua=3$C'4a &3b!]:r1&ܛ>+ ț,OV&gPo?~9el/ ~˕e6a+/#ޮ溍|R PgwRB_{M] (9VF-_[7[v2ԕAfHNw+aD:u+C#=X4D6˗]yxvИ ̃p9]|n -9T]o  QSD&YO; sAYVQ.\bpd̴kx-UDf to㩀;2Ͱ9w Fj\>t7BFJj"r{^7kqx7DLKnųB}I<\w5x뉉wk/ qֽ9={Lj7I{BҞ ;|b6~\ֈ N(bId d<:4v'nDa;HO/}n%c+ߠQ ‘SZUFTi7Fd~{%l_x\)btHmd~VP̋ Q]HF2r ΨEYRz`$nE8 ;O dҥ<>J;ۻǪq[lO\aPjcM9P`AJGo|bq)X:βa6)qZ0.-{Lh[6I$M)L~ 6DGK4ź^p}_b]7 z.-k'Xu-(%Rܴ  l0Hn^W{wdȩ}JID g{<κJX`+Д""addχ*$4dCHo1Q Gih_}[K#n A?`w_cq6Th;RGƚҾLLJ4ef[<4#gƥ.B}Y|VӔ^Zw49^K )HS?F q$ʛlK+M{h"Y;j4$ej a|Qw7{JgJz lRl&?&YV%Mh}XH{-ZtF=' ,)71./9JhUrP6E?buxl3 Ni:!׸M Q$LOhn|F htWq$)f U&x&NVrݘf' @0CÎH"ǞL!LJN` njrEav]xE <ߵfu7+oMI^r9\Byq;" C\l-eҴWMeQIcEc 0u! p)K3S7WJ0 w}1QnjH^4ZSClkoc&& bv8_9д}Sy:ۼ8~l\MqX\8E=ϩ<>*o\8ݕ* /bl̓iH a`U&]?bLEfe_1AjFVKAQyv :&_bƃB\'Dǩ+P?xOըgioUYIc`,.;|0Ehg@vH ɖl4x!()$w64qԱ@^hy-uB``Fg.UiQM0LbJ(1l*X̯c*.=NL7,Dp\/w{6/GWӂ<i.+@2C/PDBf=y݇@|ZO͸%*=XZ4tЮ-.}84_jw N{՜ FxjnndBfaA ׇFp~ M̤YӇތId5sOzn3ͨflCnƊDEnTEO*W{" ~bR=SDa!s[6'Ag6x>caIwRȆO={.d҃߰S/'nWwh(wƷp.0o@wS9,,9/H𶹄*yy ~Pe p ;`QP\wRږ~θ+HBJ #"eȱ@MZGҌb+^G%/z]_Гex=(ƲVm 1ងf8OBM.?\P#q=棃1|IzEasc"T[_2(#C؀0xz=N([ɖ\>({tjpg J' ĝ Pr#6>6pۚ4!|Y:~ էobvMa:c^ <+n6ձžzv^׊ct0jӰbdadv%S6Mcgn23T)g x;rQ ,8gwM^0.L[C=A'+,w_O)K|]I?έwr!H1F<`D3vLazSSsv^_Ŵw):YjZ*:9Hľ95a?gN1YVD!ߒ X _dZ2KKv}0:  |^8͚ZA A=įB@u@-OTMڨqߘZkv3Hd(Cs_Q#rK=Djb^* ۹kV # ǹunހgeЭY/P#G8Ón헛 T3H5SL5-YD,ҷ(`,˻RWv[) -K ާXzIEmRm_V1^TC/ϓHl sLAƁ(Y_6Y"XdCxO<%R+oP>|-'`*QiPbPX/ ۖ?L!KX(ڢڊo eu,3GT”:Jm`/Rʗ!˥t˸KI(7d@\,lF6l]1}i\Slsfn ;Η}3l(-pT fޏv?$Cf\+$;{.- \_DTxm#_)gtoh[7Ӛ YӺD(KW后MA /LЃx:%=UpZ(qu%+j/?Ry0Pw7Jir⺩GpzV\2^v\YOP2}]2PPh6HWZ'V [ !UI '7zjGϜd JmZ1GA_3&|Fv߫ VcYG~d4k*gGL<碱Nc ֚0 拑6Tʙ~T$2r#Mvض>X BnxރfJ6\ A]0`ֳE>lj¨;Í7flH]VLu$5z!MOU Vz,sL:Q_;g4_QE-1_͈H6Ho~$F)"4. Mj%Q~!xA -{#DwTۇ쿻wst pYA˫L4H!U.&Yl9f4ƭeBVl S2O/?_AU/Q=8w8 (-C>W00闒,-T&3hwk]nC.XW/,tVuŜS1]j߾?Eg*DQS)/hm,(&aęLP#2:[ɏ6@"zmSTg=w^A~)K֤3>Һ_rrL8y헁 Gx[ t3!^|eچCI2DGv -Џ_xsTh7 ȁg 0\a%-hzt,^-}CW;. v&~COOeŏZRt\P 4ڔcID'Ob`h^wQO5dO,T,rQO&tk Nܟ e詠ٌYE\iǾ()v5C@M/,t"LJ+\vB|ZL#|rWEseiEl l\ c {Z 3hӘdRO8:zi7<nԗ]ۘO- Tx˂ױ1B\R3XC^nNh'hɱLQ8!!cv {14btGקG08@꺸z28B.gd$[I]8f@!߽QB5S鄘*iQ&5a{}K]&@C3ޕyzwXjmEɢR+g-Z/LPaEovc@⇴2}$. aY8< 39X4bxy[Q?#tb;i! I+]t }r[kK=&8:+=·t gJlxF'-N.6KҢ&'FYxU1tRq :6ol3#csoFpɮꪛzx '/?;;4Sw/oFg@{e@}R\CXSߢF2\t .O5m t^ cӕIr7Fv[S-2HY UYRb 3ݞLS~~&D2shUV/+L[DȧZ NҰ,g?z*>e5spI> '_b?U$9?FԯGysnw\@L Fs u6'#Si1gyp7EMR jP?hkkQ=E6&x0޴`o8 b e~a٭ʴ*+4gg%O8Ȅܠ4T {QJ7~K@06ZеРs  )7S9Ij6Ĝ ha>Rq$@ѸŪ>. ]儢NY0`/'ּk5aCt)z0~hGE( &p+ d13Y+< O Q|hX1'U}cGTpg{ĝ@Y\dFAS| O.EADJdh& *zph`4I?GdV2Džrٿ!RhcP=/-B _B6ieAZ+rqQ$^}pR,t hox* smv,PC JB5>N7a0";^jKۦW3J)#pzP]'xxĈ2/ݣW(!&n`,Zn󷨞`n4.ք@bK#6n&"]&Gyra:اJ|Dz쀼|EMζTO&Y*("()E;߽K/4p mܶOul\&ҜԞ@1ދBj-M֦ WQ'eLyy4)yp5G-$7T)D̗Z*g12UQi3rܨ׌Jb^d IW m$Q7Wa 42w G'}Qմ͚֩9Dnj=F_{b;]1CEr-l&b ׁ*Ya-ǐJŪUHnUhPһ Wj̈́d{ \D)Rs9e=DdqPHT7.Ո+*x;ʛaϧV1,[TQ˨G eU=z{gr8J-5 k}Gw?ckj&{VHߐ=2 CySUϊo]^Z^{Ƭ< Su_]fDA/*496YKY_SV=?MjTu ޤr!=>L{p?%Q]h 0m-02H֞mA:F"fŨ"GŖ&_&S}D4~D/XWi[UW.OxsYKkH.71._r3G"c`KФWs in\[އkjVq!.a>eTRxT\Hs`ҫ0`]gڹR==le՞Dj\RrT6 ?vpʎ]j♞2tw,{m|El( OV}rjrtKĜV;7bZab\P1BƷw0}tY7@6٘8%F !D6PYϪ1`ҳVB۹Tqo! '|lr-aU< J<=]aoWN0ue]nRwTjzF\_|K6.NBbJ/m#B41z'vMO@lѮ @[8E-$vyMU#O´k!7"Z\2կc+`YIoѳH_Q8D rv6L\9Y>WEB$HO\evPy\ӨVU,Joh` n}-x~f&`#]lQV6WoK&}xYkl K[έ\G9Ɠ.=j:ci]Z P#~fq4{%]#X(NP-JUZE[|?!V\V\l3BZ{~z0*b.+g `hٰb %kSK&~@( E>C>z0-iFhg+E3_st"겱S҂ot= qnf3ۡc௨@VrZն2f\pŻW']À _إV/.6yL=?4N.;8$ģNeT4n>h o/ŏ}<޸"mpǂM<>dy{lM-QVA4UbصU'Ό׬nxks^&+#n>g_{-~$kQ'2t|,@n<:L=\v(gsx/ s+=Jh rh$}5T"J9vj?NZ*|V?V K]e&)1*:*dewSPf$֑EwHWsBFEFqYkS_>a{!.QQk(C//Rw:6(W菺PkbGLTh]W&&=}?L$ހUJ%*N_ەO}?r+-RxPeiPسY,8xov)}uFh)hC`Of,zӦ7nuST vpO(w a(8iUCej)ysQld-Mb*qeZ:B܇M\gkCj+*R>1o*XQ;>h9=4ة;瞰,h]XZ7^x$ bH3xb\ˎ ePEqmCȬc6-T?5pe7_gB&L6xACŃỷ)،r0K>P߻y#5 BM'| fK-^\zml{}T`Iv2⋶mbN4E ct-@QAsV(U X(.\59N7o7XvblpHrMd4"}; B=sHka n^ ]qUg v\`hB'qQ| Fu@G*l # BvM(ă,ԍ2\UinxA=6w3WuqW=u%"7ĺ7+#MYQ u,XҡmxRn!IIBSܐ_IK_^Ye+V}Q7ȶijIw pӑ6,/J%elW$Zt`]8%ꤌLI3a+\?wYB %t޾Kݑ @gZY H(KoH}8kۓAm8ψհ|ԝLua+@&X{4vv48F۹NsMd%#UU r'*w F"^9㋨u:Heٲ;/"pQ-K ~ʪϜW-2ӵ\' D#Mވg97%90;G*>b%w cp}-ه,J\gRDS*xN~Z}R!@جaȭLOv΃8_opD_-L;X(ia vVpzM:"/SH5aαQ`R-AifɡQ:O@evѾ {Ɛ]@UdKm(_jS&JxTE'  G|V*;u~.- xE+!M۝R'Ҧ?ÿ 4ϬL\1% ]L#q^M80"4GڰC( "FBd͚.b ^_졶_U\l*|dɆey:uamҽBP&I>LQȟ4y}zeԲ֫ykx[ o>i$oX ޽j-RqFGCzKugE<]7 ?N¥2Ϸ0beLv Ћ#TCRN1 s"Hړ7ùex,ҐF<̑E3[%OMAnJ)\ FO4i :\!_H=mWz |L׫4)+nEK;kߐ@6_궅=v#=9md.ͣ8L:8׭ŚGlSkhB\{-9B6NƍfK廏dD~4S7_W@Ru3t{Q@0JPH qEJFRoKNxĆQ`BAji hQ4 J:),ba Î݂) Sf{ޅZ!Mɾ_AmܚgP4@ov&Ǵ-UHbZ~ɍf6#Ԕ)O[*n ξݧwe[oeTD% Y袌 V]Xz'/N$^w25x|]q({M}OB`t:Cԥ@'qEͳ`0~L8L=z0*CU.׎sZ> nlFg?0tT~$UxyRX3ѝ5lL `"*l2!y'̓^[x7$}ᗑ0"I2,!#mMZ@lTkI _1nQL1Bz e =4Kv\L+~ qEF,5o9 -wPi=Sz+5X,Gղ3GM1kуjT)EM蠍[lJ|Z,29X9P\ϟi "0EІmw*bxZTjsyJ4~(Ot́C`,WվK tq(,&}u<jF2Rj.s]Oo\. %SZ ^^gVQ+y|3&UxTK IkѭZ/%+_0ڛ@, #ߓhh޺) ܇U@ xx@Fe$rUU^0?ⰱtUv0J9z0#`V&xqt^<~ +-aZe!_|mt|p-BƮW_ko-߾c*G%Ssx-*'c*zT!s,m rU@F`"\Z*(]^j`3 h}=ABdoK@~xV4le˚uCI:cf#*d{;/@=J\hQ\$xƹ0QoyN杬<4y-+[)*2q;M%ǍmN]z{j".Lr5/Òsx/*CQIͣiWY+d~pL}b'jg2EBݢ2aeй-}?rCiNu=$gnwQe6uss_{+ih1Kz**}pqIσ*>BU#3I?x,Ζ(r/nQ'>{wZ6L^"ȃ7#HJv*c;?K~R"5xS^e@x) z A 3/QR02j96&-T5\70cFޥX7K w#[QrOQw}ưko|r;s-{]&n!݁^Ajڟ{m-IQ#Ab8q /ae흀@0^CƇIG1 x*ˎ* q?+.Zf\lO߭@F3 VhyJ*K_o Þy\c׹V<8*]ʳ metC{oQnݞZc8TbO:?+/q-Bz?VDaM H` e vΨH}*>H ~OcqPUSL4z\KT]'ռ=œ}`8+elK!Ü[ :~Q6.W~2fP0WC(Si qB/z)+c5u3Xϒrp?2\$Yv'jIWn΃#ӭhI d #kfZ53N<J܇$QqCB@"'l)$_0_:M?v%ȃ PfFf9qY|P,I:5[둋|yI38p#9kGVbN@2Go4V ǁvQ._6MJWC#_D טRQD.9)kY>>bWֈxFL۟ -ݭȟ%BP 1yLCո:'%%e{F{0倁 ck᱆7\C(b$ߪp)Jpxݓ_IiJ,eBDº '8'TܛO*R\5H ڊVb \i]5k8Coʵ`*䂎ׂM.&mv&%oG߳rjU\`AwG>kGJbwFmoҩ &XW"Y Dl<*Yev i/+Ğ=[GTac?`kAK_GUl/;.=*V~4g/?s/3$j*U<\9E f2^-"H/i*w6\*jniDW:s뼊E.*QUSi`u|9 JU`,yjt)A^e K12㗂~i E'y\l iX[#ݣ+vclVB"6QEl !jX9Pg]DIg*Q[7">ՊRs[Ԙ1A(橴~ vr$&œKӚJu ݺr۲VhbFtJ8Өl9. Dq}D}v٬Qh3=(V \o5b r,`̜p%ZU M~qdu E!끺޵M=mt]PW2-}O ǁ d>C2X(rk=4$G_;LJ1cO1O{s´Eϋ+݌nUݒ`we"Q錱GXTCر[Ƭ}&0[YT19knK!/H~ N>G 3z$Ul] sWb,Ɔ „LLYEu#*5kuh^ v1@?es#fb)9? RA;&1:_ᭃ8F,!.ʑD8Xv`TAiq"JnPUo "ԏm=BEU`ݫ5A.gLdM8~~ߧ |eAeW-Ӑ<ʛcANlh*JBjM xllCk^L&LMU1Iñ] t3o;SWo (VVE"t)45UL5|!aGс1_e墱`ơ^ߜ9/̄F} 1kS|bGAOovb\כwn'uɖv,SW<~bzVBux,}_c4iPbA G D ݬさJ>^ K޲Av=m?oX{9s c #Cr {Ar"n\96ڢDcfFo*B|"ZiӄCӕC~թٞTt1+xXäXי_NRy Ͱ$l=}+6*K +lxD};b)^fl G;҅}fs<mkwWmé53=UFm|K H1%Z3;,.K"ܾYw}Bb23 $6)Î O`T $: wj>I<5.3LJּLnw&=B9Ўӵ C*yLsP9\W@tB3@|>6QuGtʭH3JlS2N |ǘ0 zM8=u13ZX $1?zsm1WOy/vdjgbIC`Fީ&}|4rRtn cR( Sy /s]pUE9㷴m^ń$C1zdgXk]=7+ߖ@6[|F jxV0B*HeֹUȨNGz$ynŻKlFKumEƨtIdBx\?\>_ڦĥ,=Q H9Un5Ll3.Je#өǭ䊟^b֎vQ -9'G]v%Z[pd+9ɟXwW1 zV"$Bz<rJ.vjk  d'_e{ `{@Fٗ[Ǫg0Q&v򱱡9"kb기D0hd&' ~^N"Oh=΂pư?e̸q PKxF4Yn9qԠbK"T7Uӄ'LP6G\4`Y*6dg@ZԸH1Ebj*% ʟHilbwЌjQys$QzwXmfm IJZ g_tfXy 0ݴNW7RBK0E>E+N (L$v;RIhldRC": ~͋ڨ2^Ϝ˚%S>?YJ[I *MWtd~SEj렓FZ;YD:[˕S>X&sw*=|O-`WqS@J--).j"bܣtF\ΩπqrYğ<M7}ƥ u8Cy6A۩#2QLF mةIA#%MoXA-#dt4eV!+H*FW 1XZ#dW2!×нC2:Yoa%SR**gi3nNR|Bp/8W~SED-ij{E#׸OgoUz*."uW#hB{2f ssZkaRLYy݄xsxA^dCO_BffL7JK c[BFZ{BϯKcbӃwFhO8ED3+G;*%Z玘]b"*<:5Sśq 2@dKF<"-^B:/6܏j:\Hd)bI%Tb:(D|ȧ@~MT~ŭJ{CHL LLW/%vEdЮNPlt咿/ˑ3"-*26@=Xtz ݡ!nuؓ].N,ӅV[cFAC; /6mb%n\Ir(AIbP?@\6 3N(dp X[nf-e> V*qcix|fz`rlT 8J+s}&_Ap>H1IkײDGH?:[oS Um 45& TSd"17w*$ӔtոYfܹD|Ejf]IIK2CL.3L~ïFU/= bJˇi{V{Hr4?6D:" H0NneF^J&?ć/>+,Ͻ!{jYC W@_c\Ć\ 6;Tt1- LNʀ|HE暺lpL"pO\o57 EVЭ,aDxOul_CEZ2iOճVh %~@Cv2dYn4=XH99gK߱Њ-{* Q/w>&ݩޯAw^ i;x55 %am%aN| U F?N\á{D }C ac<)BRWr"dm{X5RHbÐ3r螴jF.4G|,0]yMk5& %0`hHt:Ꟑo|r_7IwRſp'&!xTG颯I~4k L`n 8=ic:'b6?.liq.CP}D a pD( ,Q`P\m4͑͊̍?Fb1O LK)Hj9'ےÜ|$W@j.U9Z%NQ.i# YO@BlgIy$P쥸[=dցj ż2k?:&sU'@)f^FV |g^YХʵOXl77t$8h, ӯdI^dL[=98~X'8K +РCeI40͒WBUzS2:>Ҁ{" _zB:E#/ǣrVY!XRyE=K+&"Akv49l>Y(9ny-K*!-|E\m3 1D$,pv٭2H0BI]iE*-`O᜿j+G4D~J,->w-Չk#,H俕^ƅ E_eELJR}}ڭ^X!*V|l<8F=BfUsW#b'셹. %}QaʹûKN s t)`i: .$D1쵓A3Ѕ 0-cV5)f а?hN}s a漕K%^K]!?e"6ofv<Fʦ^R.5tQ Ld`7ȍʴ=r>CA=%[+;|?%cRJw:cM\'ʫTR#-! aF^"Yvk,F:("inU3s- ˩Ngq^.:2jؠ/>^ d@cSJ х`kv@dX:8c_Vds?,X ǝ̒S،haybKxndKtٜQ:7:X_Kڲ[lN;ƷE X 1(}uUw`t—1`rHLJkr:B G>3N_&zsaz C)!bG=4ë9ڍ:WXks^uvYn`Bŧ潦Nf;afAs}J]SW" ٖhAuZjƼu5j,GVDDrWW# }Dh(q;X!Qӕ 6P'lpڀDxċwҺj<@ 4?k-s#XuxTrpP~#KBouypjԿS+m(>Z@)b}FS+\i՟%? "ZB-Z|\5)!]^56G M kWה{I#[l!o7xJ. $Ya uu뉉ĊX6 jٓAlc6]I1nM C[k'𲗒j0 113q9bQH`,7$2N()`(C;ﮡ^kES3u0|@$Ύx{TR[ڀXgi`dTd`\Z%|.T2]-.V+J- ]&ЂRnZ6ΤkgѺ>qY y w]0+޻u;Rs<h*  |iwSbgE: \?SCmQ·nazBMr$Kc(A`˽lc8-aLp`bB`w>'BP(ξyPR=la 4M@쩘 ȗ>aBUP,Dg)%>`cHZePc6#cmEyeKfwfM`Orx'Z }ݛ93ǭ.dTY9p@+!i|tfCNn#Rsh7Q5W)gfIEJvX_qK2ma'wyzҮMdv7c!npᩮrH-+vֈ$WkN*w*#4|TQQnitwKNagsGf ;{8:jdڤ$峏7f:F~lyCuǤP|HY y6,RUX%{YT 7|;ف I0\#p]jǩ0!i1͜#$fq5s1O*St)?%XDg X.|`XPR+|DONי/O%CܲX{]yYTX20U݌`hȄ0jL7Y1AcKa̔xڷGL|s EPkpLܕw:Y Aef)E{_KJeL@/'CD]b'Q/ҥ܊=NҎFG6Dʹ3dC$./:UEPa*"7r|eΊA* 燲k;|aOm_|>4CA^b] I&lR KN響(CW E `cd,T1!mIǏgno P_2 ]:cp yѾ" a\oUtGvvۨ#(=Kb`\XhBi1U뭈=m#9͝x75-3VҫlZg8ǭ6K&(Fò`r5H~_+hcSں`c0 08c)˘U,PԞ!fcbΫGTGif3.D6fY5|9x(yxm)z"79p PpGT\|\fe5}ʫ-O# A2Nzp^"BҿȞ}C>튤rp|tUt25ʸ_'Ғ~ aG],ݭR.Bu2 U CyufHZ] $ij yHGez?qgC+~r3 g-$'kȞiJN ~^fˆ4M*K)G7L:Ə)0(f?H,W"U@b~?\gw :Լz^!iRuWS'ĠP2)ko޻M^oP.fDy4tK h \;֦\muo>x%\f%خׁyȵlmWG_7?PG<;ϹZ,+q@pfYR79DVhr7tp&*(@Tz?! Cr z؛m%bhj\6LCN@mpnz@'L|E}>cKC#Ad->iMtp^֊z` ;3DT@[;f}# u>k;r3??sAu^I߹uc Ÿ_e7dԎ!DzQNH$x5pǡ)Cy]*_ bwIg{ u`ksg{KDd3ڵ\,diEo {dI6]o@X8Lz+J?.`“ p}Q#mpێU*^Ġn'Fs qR3`^;e-Fq.3d⧕U7)uQk;E[RiV U{[m;}`<!@=  q3Hݕ[E ? $Z]zc0[ٳERo DGcyxkޖȷhFOÝopŽ\׸c*\3zSo\QS^|zp.jݲ0GFn2)Te~ne2uqk^҆M|)fUx}icAUVy_u~Y Q_Rsxb6"7v6w^eO6BĘXQ)S^~1K)N*5? n\Iׯ9rǧ= X+x}Oc(SHl9 ?^M1LBUs8#Podz̆Y}E|~-?OM*VFx #S3QO -~Ek<%}R!`nVbi7BP[gK&#ӌifBy'[s-? qDpKkESю`IZU55]ε~Ov:kx}5 U"ʷw v'Cװ۵'+je+-FNh4\3;mAuALc1Gb ^aF+aH!K&$`= \B5Sz'OOz2(shO-XB0j< 2!e5f?Lj_ҹ{J7^ѝ6 I5l, 7U11ˮR^_#m끱N)s#.Zt?QuQfUb<>S.>N!,%ٚ{Iyooe:o<q bb;{UQbUZhY.?`CΏ*!0 c+׾OW4=u\C} 3H_ݫ%"EU$:Hvd7OH8ڧn0OѠGU?(K#A&vT:?ohn>^KW`跅~q&-7F9_-~:",6"5*1Fʂj o8_6 :CxzQ&p7V,Ȓ ϩbho&*~}nDE dⅆ ,eB<*LYԗY zq"(0(⎸-摣j=\r6jUҾdh]Vg;6Ì=v!4F׿"$rI0Gu/wQ]OQ{KV9 ֕'xS28Ҵ^S<%Œ64E4]OJo (:jڠm>+b2|d[ V-SL$ q7TuL wgMu~fN\JF7k+J%^~vxa TF]Q!P6o藳&7#yVtc6n,W15C~2u &'oU^m T[},Ӹ gw.WS``!ry=g]pbcV%52<,gx0>aC%Y)tD´T@ oPǎdԨ'iC/I+9} ])?Ň3:BO]`.~E>"᥋`x݌Ea`F4"l(h0w@&EwrhH0Ŀ~C[#&NkyIsQlvZ1eqS04 ѝq>}ǧjގT7&;ϓCݻ)}){]A=C:]0g5{Lkהy>߽ ̉ȣeqIJ(G;d;ԯX]Y@ygFse`Z/~Hrh.uL_B͎S5FL{nlЗԓ(묱LM_Jnܧ@A>O>8B%(uv&H *EhL=UC֮XtŽrB3o*$lJ"aI\ FS㐪O]w;D#$3 VY~ #V7(2;M:TRA! \1hD(>*f~Uo)v>Si1{6;_kLQy$x Ԇ zgY"?rC`J/v[_tmd[b꾦YCp8+9qd1,#wBr;%A]q8Jp# RϵA+Nqp5q\'_/L6זfF,NZ z+i⻼XPګds( m]Qg#.BY:[~TgkhiQ0_Rmd ol`MvSj2ȲJOh mB :hJ:i3?CRN s1} aPc>:3'HGZc"6R"`%߮"ysDЬ-ڈPB柬U&r|L'"J1U@ht :jwgӻnNsvztzLDPV >+TػLkW!IC{%slO*jQr4~KG*p+\R#Q |' %FQP2! 4`c/&'Y[PpDM)e:,IU*/:|]d~L$vm6E7T-S۳>!-U'\ Xlw#r~ [sH|ǧ# 8?c4uܚu?Үvtds-&v5}&HQѭ{ _)"?MZCX*^)^.7R^Kio2<@> /$S̷Bsʄ"82OI7'ř=ꫂpփ>f :)d =ɽ-Q_ $|@ZO7Hn}*][iCE+S/7&DczTz,6ą(fUT3QWd?bڕ[n%J0C -o 0(6̩"(R8'KL6Or_ؚto=⩱i,Nws_q"\r%rz$˺x-Cnb  |qeu/{C&|/g)) ]W.1D#1.N8#Gq%Y_J;Ѿ ۢ]楘ڟu,-28fH|>l/ Uà0,OGh1QC#j#L0W?0Yl̸ወ8d&1G9PFlK:3VR ZcDynJ.͌\jI%'#c'%~ aN o!e- ='w L|?twGЂ }4E2Zklz[wN܅Nru2 z&CaPrxQQX2^C83paIcrUBQ}vxr+֩Mso6n_e5>h><]5I'j(9$K‹!IoX А?.\QePωIh􎰖gr+ f@1Io:qlbg9n5IO'޶rp&yr2}{Ǯdbg۞0,WvisqtNT8? 9$nUdB廓BV␫ MB>pF"}=70"/LXY4v!|VYȡ&N-^} >I+.x4Armk#pXaE$=Y HՃwkx;߁gA!Ir͘szO;AQ3zsA:GdV̨J*(~qI r@ԟ[ ۬5 %hW7:"Q?;w\?v_F茵.&NYO@Ԥ*L&B㬟x[/l$ڀs* +&D &rtբ (e踨<6E":$5gTsW!Ӕv ̩"{S^u#+[ߤ (`H 87i%j\1#.b^wo,mQ}8໌4WɴiZ E[x%o#cb^(wHMBNG_@EV9.1xjc `jId lL=c?C];yiU ~E䕰 yvixW!h!&]3#o aX:X X ei[mNRi*P@1UAb yHTY.Ԉ.AD ӭ%EJzC𾙗:\ HKmm5G67i^n;ppB QdIMx1'.e,n_Sޝ;Ph#{~ٚ2^n)5!ΐBn$l3yii6?z4K`V㰥ᠹlj$]HMo @qi"?@ 19fP669(ꡫQhK<:-_'#Cv${(9O6J&PTz_t,ˆ~0tvtEmPA:O(yW2+j MM̗F'r4JK" xEM"sV)79PŜkJ\F^krhc(k(:f}();?C)/1U޹}vtr6_*M,~?Y+iquZɤ#|4BA}ިV^dB `dLF, Vr?XK\w}ZOBNj%(}+W>'Y︦\g' KY>BMx|Mf{U{-/,O(po&-OO?'%We:lUX"e Ly)RydTa. ~Z V cd- 0vX>Nj dfB96D>kyHhV0CX ҷ5/ aV\A <NJY]`bU΅sr &Jt:,I)6 چaq3Dn2kL+a c/RFsR=tz}ķRLʙҰ4wT:4+_Ix0[zK|8sdQowUDM^m2HѤ U3ַ{gPڑLˁ:Uk qUy,+K&0NZ:mSbl\3XvSGZNr 5OW`Vuݒ>GjlL1[y.' BpGsn<-P&-k"m@WMLX m"VP@gb^sޝ PL6 AhT3]e?LB o ff) 2h9 I߆87\H[J/e]bd)_Y <]FA86T׆D=;-|6F4~N5^*eq-g(z6D% 8v3wn&*k(} ԕ$$l4|iܫ{,-xȿ1߅XqώX &]Z Pu0=WATI FI2 `A{3[Anwy!&DշB{7)-xP9E~B |LDV:izd≈ T8[@ex~4'F+qsҖM)*c CLdC,˔I1e>TVsZ/xRzt}!kO%vPbxQc'<G]ˮQdmuBQw. J^ A4w„)^*MPKh}5tTUOgٛJ"o_ۂO|qaX`owS#|?IE'T L 8V_X5.Mf'-%LAJgU&9f d@w8r!X]tX,+mT+KEM1, B귆n7SÙo[*-`~ku\x n8Y*]MA*(Bj~e㿂ߌ ixV?/>aq]¤)>:7-1'\iŶ?jxndVPj7I5`IUo?Q>2 pE_xr`Z( gхidgߧv.A5E`3Hf WRn/e"Ή4&\A2^Xa]%]ӳ@L\꣋(l#`#dMU|,zdX߆g\{Šh>t&:-J@4%kؿt]Fqa1i($!ĤK9``W%v\HO_p(~9@b ՞QÕ m|0r#%h< Hd1Z;=!dfRKMDdhB,i>⠞{tc)ʓ?|Bv-ThAlZɞ3~o?:,4܏^ B:#!PR k0f\b@cv_do5Tοp'3O#hεXf,jrlA򯻋eq ĉ:-Ic+eNگF^fJAWpNaǃQ ?#%%[WZ6wO/ջ&d2]-Fl_YwЮ~IRFP(l<[߈_`o/㴁ZVP\3MpRGKㆾf6~ۂqO .~ ?Q|;Q;6`տ>:us3, I`8_fygPN΋ <1>r G) =n< [K\ج0;g^33uz48 c$7Aф*kF>)e[I?B=F̮̽d}̋V  3c7 zTCw5M} 0DM6tKh mɬ'Z1CW͙rx^^땉>陒E:Slw$>eJB꼻MV7(~=^&-pATN\ >ӿLwRJ})׺x]x)@N]$0T{j^) 2Iɋa~ e"ƈi@>^w~;gUcZS`Pep/!vāݒνlBV?D~H$Teiam-թżW.p-@ RKm<ֲQ|KEU>Z!pPG|/ŢDc ^/$yI3͇᷾0]4{xk`tV ,j螞(Z-sWлbqLEchr[- 2PK4w@ BP0Ζl{~^?TF״IK ^:ݴfWi=d}ݖǦ8h(WQidi8M/ g ^WNw {k/U`M +[hB| ttbm"t0}I#^VМ+FN6f#:=!f(q@/)Ʊ.Pv__ )M:sD@FAOiXGdE|]6\U.ȗː=> {! ݹZm ey]AߢAajC%&QGrFϹ\?`QHdԎ1 l7܄@̬gb.beՀq5XNJNGaH(*S/Ŀr l=UA+>WB|@w^'6t ~o;տC|rʟF=0tU(or7ufM۸ i.yirY^qun>Tgc*>(ӭ t! ͥqԯKWiEi09%3]]'6#rQH&llnYFs. څk3ѹn?9Y2C&|f|I|$w?iUr$3sOS_YΦ!1`5.{gmҽ=}o GU>r.5;#lӵ=>Fwʏ_PB>u93nqU Tg7U٥GIJ ,AƬ+ʚjH%a?9gS 5L9BڙlV623wQd[4kuݻOj ~ԓml+g3B5΄:" r$"gd!ǿC?(+3#bH~8N&8 |?X '0τŷBx82_83@Rz4GNG 'rkP@0}xb&fL 9#i;rm=@<=z93k۔~ӏ֓ oWmׯ:x5,>* x[ 9ae2%՚R3''"ĕtk ۫? S=OaB]& P+65:6pej|Wh^DݮdG G`~{գ Ok,t]smEАо95Nŭ`~E?p03-^(7,D9i NCqi _ikr󱵇އ 1jY+D쥨CU| [fݡ;xz$Tyw~5OW%SֶjǬ(`y/Wl2HԺ2HԨ~ ޯׇRfxƤ\nuX>hUл1mHU/ҵz ؔ#7w)gλ hvk<e ̽Qg"Nh 4<%NZ4=o@r3hWf,tifU@)e8Kי°_ӎPOs8 Ĝ>/|B7t K1>o/ږ+آRmuFgXtlh 6>W/uvQN7xcKBv:q]vpvZZǛxQeij7oHXhk[wӝٍqV)q/I9*k qK.hR[3G\3n^H)/bUM+уGc`Xr4xxЮ7L>:nA .mYw1 N _z 8ג F<OlV}?A,xIR [iPC]>Ea &):clq-zY^iEMfSw{h:,SZ4+|V]# bvݩ^)36&u˧g'{řV Rt?j5)CX  Iz 85X0a=\Јj Cv2 (uuzy@ր9ށցd:M02Z3WF!0$ ޚtL԰=;j$*տD5 Q?&Fs*pE&zjT"]"VQDU8Դ|rc1'\ky#4gcbǼNr5⑯Q/Mܢ!7u/3(c.pMhu_8Zb MIYd I"QR7#3c.QsS;gGtURl䝜sCszW=- '4٨Ӗd@1Ģ5ᤄKV[MŰ3/OsD`WX^~ &W8G*yn.n1( .g}'Y/hee.@憨I9G4_*5B꡶k2s[[59v!6m':$u$qlY|re$ ,s9nE&LӒ|Y y0WAvW24|yDKJ^ <TNU@pAI'h;F?]~vK]Zۉ.H,Rmn@Y8 ޥ1ͨfQoU|Dh"ތ>GdYB4'qzE8ⱢN]юȢڲ)qUO/z˽L:u7YP450&%.7aRj}ٸljqѮho|! 70^y ~ \%ZcT`D[b)MqWY*v4fMy\,ԯy]Y40]w^`9yEx@6Ycl%6h=R7PX,͙AzguZX:˜YM!Qq[`#8 |OhU(X"a'=i;e :uj5ar'IQ"r_eg(N܀<,~a,[OJń*n>^bw^DzXY("A#֜5>U H~>~(MQFg}m¯"߆r R{; k>=nK[-?mü*d#-F0[qY&JLmfa5YIJm%yV+L$n0QWi@} 6!p1=%fb]' kӫ֊:%< MIW|eb:8`>t7# &D޻ָdw.98-vѤxq8Ap5e,rg$wmݏ>&5:{$h3 G=B!~r:Un$ű| xhL"4:LnV) 9x$Gv"O {'hnqfv8?55NNNCH-U*2],M"^SBQ6P.٠ klBbv1FdgۙR p'nݽS uk팻4Rчz.(޶Nbݧ2J8cSb3c1| Ҍ0* Ѱ^yFnDg=xm7_ {Bڧb[dǁWNDN&h E4}0FbrP/zɰ<.ܚJ|N* fb#I=UMwoڿ,Xyoiq/ >8m[Tv_‡\x(ef?;N}7}h%M?rIm,Ttkq͜i*%,>pס$Al:Oy;櫣ȷfl؜Ql>s#V(4xq.FTe+@F{R5m7RPC]xD|AߤЉZGgcQc, ϫU)*Z4S=k6b^iEFwqN+T޵Q\F0)0)'Аto Rh2I#C5lqNLYP;]Q5J"KvtC \$(j^ino-j_.E%gW@_:i,jZPه3) ,x-YEd-%si2]4Shj[Zw?Ҿߘ4Ni*ə 2PmjbW$_fO46H•w?>Q/2` "'J𿐘mxA (ioKsr]Dz_U#&o V*q:`'?:3:L3LD7UMsw ]5xn#]k&&eMDrWe6~wњ vҢK=M(csuG96KC6-O~ 8-$22t h8?0nԒIXvZ-n̫_&PFW T܅Uò4gSFx)uE,@?k?ր跛+=AG] zZ}hWjN_7Ķ=s c>{K'y ?dXGo)9 Ψqm" y=gvro0!s;~&wngPq/iT6}6>ԥ8E=K#ժ뽏dSbF?.:AS]\ vR1ʺ#+zQ[3,iYxo!7H*HP~*$uKo;۽sfqm_ӦhLL$K`Ϣ˺￙-Fr~rVŦ$irwUDYa9ٸ&xE`m֑ (""b]b)빔G^ ~{;4o"'+Djl6h V/((^J# iLj !oɴ}8M8-]cߓK8D@!!; m-˶SR)ƖJBx[ʑ}"FÆbi`pK-áHŬDNfq%!?X5af#3spĆxOO%F퇕ӉtVa)~*_=RQfM6H?!,ў(?H2$'3[*z^~>=T@e =/Hi\߹ߤVKk[:Ts!S7.}G}/@F78f߰UPa:><1"RXƞ倠2#_v~(Z]xE_xe ^:{("-N#$u{I>M @FѰ^Р|F"!> o^GEsةY(6d5Af;^0P?d-Sς.a;(oͅ짽)*MEJWH:ޥPCBT_QflR$e2EUzEIy^*g,DY8O` ߒ9Y÷$StSk<OOKpR*P?&԰ބȘg'k+V&l C${ d36Gx.x?݆wmjHJ=U)l+7}?Bֽ Q3A8]0L``ْd'[wcb]hP.9] !r0Vn J£I9 }!l4;n@DvC? LD93t@'ZUp`DeԶrh l.e6 汻f6՗ÌV==FZ]JFouL}="u&VnZZWw@Yq5pFZQRl(;ŤQ|+a\F(XWmuFgQ[RG =4e'2!ۖZjA_[9V$}r()I |ܰbd}v)jLy{RaM-?9[i1OlcZLJ.%!ƐXUh[ )}Z'}ٖ &|% c[[ JީH6@ s4tN^oXb'G$;`GO;Tyos+<+3P2|`i_}:̟d,_ەF| =d^V{\{@ h?P<9a@(aI0/IVC1J27HijH>W\ӟӻ;Q3g{m .O2 IhcK2+W(/t- xtQ@0dy0qXJ(UnUku Peh5&(xD]6)> ! mYU_3bt>5E.•pm:>y~}#{"ʮ OHO szNRǵ[Nh (VJHi Ö %ꐘ7/EB+-v昑5hh%\$NXkl^a&~|Qо9%E- :֒k! K#hK65mU*c# ObcIGWKhZliP pq >C&GG[&&РeMLֶ3z?+}g'#Yi_s:8fČ"զk[Ĩqͭm%U#5G<xM%GsW}S+t6p2aR6%\8 7M{dQgVnuKMkh[lBu2渒.Z͑_#K}KZYh3ۋ>_Q^e=MadT 뵽Flb$z"ƚ&las_r*#BYg_g7w|6L~WrGWE(,4,ztcz dA(bp쯭#dDXЛF115) Kjcj<#(Cy5.u%O_1Xljǖ;ل:.%7vxSr~FMiytaݯnV~OPn2g-ԗӤQh҄nWhL$ё-"-,&<.,JW̥G V ;Hl'͞Q[E=([<ʕ=t"AFZ B#Wۘ(ZMb- cR1ptv1ظ\+uR-"] b ZLLf IIlWhmH\<Ɛt!Ur/2&m^*iC [>7c_{S߲%Ͱs:#T*N>xv0Hܠ/dtk,*:؍M;MjI0Ⱇ1y&; ~ lz0-D-#߇OJ4dY@aۤhi݃ޭWo bp?0^Wg.uC$=dc:!L`ru>no( vli9 /(#ïțX 7n/8FciL6ɢ5;.R{vpTx_S x30J,F" s?^*Y/bg|@,KEV +q5La㼾iNvpP|-`pN15:@)|.|I+H ezncncCD1кj,ON~46 Z <2v^j5ZI2ަ-*4:VevWZB|E;*Hm.]36?b,Zn$2U{Yr ZUY1nхv^ tŜkD9WGLYE N h4*JMTN*+g%sx0{r o Ꮦde^D-g&Uq'=*.9|niX s.1}Wܼ"{3d m)7,FQv%XO<ۮ=[7q]HS \Q~36挓ebmU8 ILi=zgԨ۞{$h@ɬĸOkAR]Of|z|?K/X௢$* V+R(o5ƌd6 %iKgl/cVG:}D-3wXFZXh ;G]A9=G`ҷKGZ1BsI&4hJrhtgwH 5HxhZǁPB=e ^ze[Xj֒|q=)ޣ-@PAt2P*L$SY!; -nL cͧ?aljClW.cOt{9%BQp)&S?lĨ9FS-\l_93@M"/%ũ;:&uAE-P[vf]|.ʀGKj'o݅p*׷0uPp9GN@X Zx! 5iKK6)/\&kOm 3m[d~lK v AD ?]!c{{Xf{2}wa9`NxoAh=ыIJt;mTW]2cl 3I3kr¿top"/WCӥ(څ]& $$jazJ}rJ֑ϯA!咾jE<,Cdd+s|VSՎwy,1/2y_ܦL36¶6}f+6_"dy+S}Z$G O$ ,g nȊRf'..RMaG}'zO4&5Xz_}άѢP_3;}y$4* \3bL雑y6,꾭gxx5ݻ2]w;LrDCYYmaej^cGQDWPG;+nG$1 ~d8R$ s@[`ݽh% rbtyvYi;@?U$ٲ99WXl-} #-9=NC4=nN1[&YBfrm[*TFEۧxHKrWA1~N-!P tY%"-ބl8žW3pmP9lo4[:_1nD^`EHL?{Og6㍳ ~Or=Ʌ;ar)VL |J\>"wᐧ x,^wOI3,mM͸#CRmP[i6i`һ}Snu:;ȱ*9؎6]lC9`C'TAL]2@~^̞/Y1p;$D̖|F!}ypDž4_6JC9O)!ecр 'ɘAIIk.0iU֛K ,zD /Ӳ3{/xvh2"OݝxdbJ=Q,D_s 4Cd&u;jv,m> 9lz%aH4׊ l9Qm;Eo!> w7];l gM)׼%k1eb:SP%34=)acnj u=F +]:ҊWٸ=~䀷5pTItXK!;Lkɍ7r/'EǞBWZfX{3/n=w2> =Gpxhq(qΎ%S 7)4;P"\81@ ՞|,6 2 c$2Iۨ6U"S]Nd,Z]"4S\m=hJ-{Wwq@ !!<(6@**c:Ⱦ 5"xHGؑ8`hݮc~o|n!ĿR]aδ / }7{E%IL V2 ٳ s4V9U0AZl%Nn$*w1 \-҅y\xFj" BieN ]T-+7aov%* FK?`a7AL܇9t*Ҹ!H6V^YU@^so5Ba0 w|yPEܩK_8'ꆥΰQ(2o8TIٞAx>]>Z顂KtO@BiO>/Mp N CQs舥d8=eRĴz-H %H'1`I$'@`ƶ&2Ѭ1CpH@#7v|}4f<vY[/뻡bܜ3 ['KqˋpzWr5 mQĵ2I#nrȦjv/bpi]%lG#?rcLSvtvL%<#=dn%r &Jv 4u8ڑY,7jwɪ%~q/>s t=!lKz*&E3 i0-ăH?2bƂp6)Hi?G'o:jۏ iw{!Ö<@i OrO F-xqFgn+o8ߧ"" q@4??;'=A2',˛$jv.1^YB ^$'lO&v4c If #'&Lh e d&':/t=Ee==AQ@ `(^Zf[ʩY"RHm%E{:?}/~uR] .er%p8c1^1 EQ&Y.=|롁rI:eEp hBG;}+ؿNH lO?`jIOt*(`J<+*(쩣.MskpTT__$SFD;]ErwSd߄\㏽ P+] $:m%S+d~ g(|{z-C4܅XK`h[Fmۊ o<>Q3B#v@kI3q/&!iەY4ka7:Y }c6v[' VNtNSqw . O@ym|y(w 4KB$kCDa)iG͐`|ka?F.&:6M]*{=0e4zCnyzq>!maƞi"!{쁮LΏUo/TŐ L'r/ܨu432! TT%B0g^LIY1|k{D}ҕ;Ї=J:a 0h;e-/*҄۩Q]/yHfQ||B~z$>E~mz7LUrӖ;:6FwI U4x\*[&,&S>i1-#ₜqh<= `LWeD. KKt8^/>乗 WUf(㣆Ӭͭ<3\~Izb*򮙾>Kn3sk hY n yDG4Ӹ5~耘,dt|#74haJ%ʵ] (a7=t%J+V;u6ȫ V؍uXa[ɓ!{E$8_ANt懜kj*}?ig!> =]M͈6[bOmq2N5Е||/(kvɺ8&>KrvpKOZ㞾= tWH͕nvJW\cAxa v[?E1bt3{"fÎmdr*ϞPM jl52)Ld6:WS7逩FN `.pJ>$8h`Jwf+$rvΕn'cEf7ϱVܣ3DdzPY,{aѦC1)g4rZ4<%ZW>홿M gj_kD$Rx- ~+ n-O' - MZD펄54/?s յd-T2Nԣ2PXci88N"lW\*j\B'Nt!Ż=II\(Q"/n@YզkDR&F%UjF2 ,J{gDS2>o\TLd΅yKH=ďJ0:Z}}h{'[kѤͥZR%R*8ހ6"!ɒCݴ}2HNk3=!koH թb#6_>3"fav1\e|!abl뗸lr}J&f{0)DP!v|M{5fgO1$\Ҏ_#vJ.{FZLg`a*˃ G,ӻqwЈS k@պy'(9 6)ͯ x襘8=~-e 6FD`3>b&dɑ G83M3/WJq.t±Ip/5#TmGpvG5ݮ9-KEx^sZ`=6؉lPE1 J M+O@XFAGU՞Kh5ě1rV]Ꙡ'+#Ӯ:}&M34ao.OgGHQr4;v=<z/qYM)D)b C"qذQ(MrR)_)@4 SI#ՠW[q `ѫkYY>zQlhW!͂b3R_GC93)6`/'DLeQv(|=ʈKٝDs@Oɥs9/!8F^62Q ӳ)*C {v333JF|:Rv4|BԪ)Ou v Ϛgd(HWw{MIe\2 n&P{%G]Y(rP = jxtr$LlFn*xK >{fEa R>C5[2F{J<^&u6W&EÁ7aK`V&7&SKz\^K+G, +(-KpK&5`,31PZ;x&"ZvTV=؏moĤ5qd)A ;!+Xտbdu1F,lZTo<SfWMAz ;qQFvz-+I6-kdfspiQzԭ+\ka_:g~]SIl42&oxVe9d!7͌dV SY Sty7sc'PB3uiSs̱]i <Pv^Pp -F NI,~Hof4)wR4 9Nu~,*i[ ^Pt6^3uro!xzI/ qRS6y'by?pkx ܯSJH__&5UvG=f(_7A/MRaJ`AI { t ͩ7\uLofHdSeQ1=pAI_S %ͥ%+ jeIU&*H߾Ӽ_\x}KfuZ K`1<ءuk! h'LfTb >}4H-)T[Ms4omYa'qZ@ ~DVgC!$Ǯ;VB;s6K%6@/9>VOLLfmaZT(uT给[PU/uY'0}(sb8 3I-̌kV:)k=+OM-F>%!Gkx*FDIl3ʰ,Kŝ5X%,a`X^k!|HQB9IHԖe-*@㛔~"7=O07YU@I!Vg+aUMoK[Ig}NDnj7KZ{$0n{ftEmWūȐW:49V!-6 4/Vo= kD6pcx[*J~WjεQm'*7;l~H>H28?z~%gewն;ab x@vX? ._d .#!$fiD[PU 5}][WA/LV/S$Odg9++wAGUA1[%OjB&Z4 <6p/(InI5~)W(*$*RY,n!<+f!2;8s/]t.EgYDOGHSHܝgIìLOV-oPS6y{L<T=PO~_n&B ӵ V=.ռenG^lo"pG3%Z,~-Rd~3{۟ö9s&J +! Dc'[j{MSKf94mt!A51p1on+G^՚ y,-gI0QC L̃R7ymi vq~t?uq"M`j|> *A\Ui?LptuA-Lmgd/䪃{[t-C@J܅2ʤ!tsδ>ƇY_i>" P(>b kmkT 9^yQQːtm# Ӗ'nP5&dp< Qzʯx.^,'{qwOh"̥( +j}VQj KyR4#7m\cw7;A΋Hsv#6L PGf'Y 25oXAEb^*?;{SCttmh0gOs#YZ $m6%exQ%B^d}r c[Or4m Y0A# Q6 zۺv8#%;؍֝-3́?سO>Őȿ !N@UFC}z٬.9bPtʂ` `\6 rY7%ΛVN;Z^6gY,L'k1[W =&5N>6 1-H$ la/]j9ڪ8ͩ^: #uSrTխ/h_ĺz!rr'G$Iݺf5}ܯbl=XA=2鍷b͟J\BJSo{n?}*!k=Z$y:k!P78cC GeB !ߖe:˂IѪ Q|uxce^K1eؠF_t1+R4`̊ZJλЀAQJeZ-4?Źm:1rJ֨ju~vy6S'<D-{qs}N[5۪Fޜwa{x1C/ziI8z!tMY{[K2Ote%H+p6D~pCFI/<@M{eZ;DM)?J9@Z9>b㇫‡u"D8EA3ڥI;(Bo$+lfg[LcE0s^.x#CK;F#pb]&AQ77Srݚ9T 6z:3f|zF4{GyĘZ7MyK  E\2Ԍ0~{C[+#ɭTRl88;$#INZ1bc# gCiroZxܺ(ʺ[+ Jq>&f|lꈸQxǺnmѴ.2*1<] 컒\%8Ζ ?} 0mN8(1$|j?Qɰy/ f( ^lԶ)4cIn8X2:fDlnL[I2S-6o8UdFP[{߀UR.WAſ73Pc8JAS! >AK>:0pnTmCnTMɼm3-%'aiTt᝷od$ԣqJkٯ5I_gvWt(4|-x;aN*(B+rc\gS6v<*K\l#}|[tGuaUE YQ(M0/ha\2MMu\:7+ Dr-V2q[1Obn{< eE-krW HK k+enbL:Fzqtv4pYȶpd_qgp0ivu測3n(S&-4v6L;Aɽڕٙ')jMwKX竽'q92my3 +;{$iU4n<.N(NגּWa*w1{*.XlBS52+a^h #"SJ$'<'OèqLS =d &ۯcnO?0%/.cJaX.Ygꈼ3wAPI$ߜ9^$}?]짗oa_ `( ?݋u+yO}dk(^{1, &pz+gAxQ,uV+kw6F 6W9QryW\Ri<#\ 4 {%ݛ 9Vu-l#ũ UYp_L>b}:om"] 1$'Ҹ:)7XKCSͰ.dtfc4+Q$V7E,d:2\hm5 mfFst~pV,yA{C?_~81qAK~7K1?#%f8q!.9ՁqBϡgw.|luf fAf mWMq mfmL,.ZIC.YBE)qSXF1Nvd{hBuGo BnԠ!Ĭ({ns kĕK3&48rz<nnNC=8QE$::?k, &@k rd?AȃK VE;0˥,ӯ /:+ICVzOCLWe:ɕ(@~ NDvxmex^y2 E+{] 4MӅA Té !A7'L^=4J5e:; `R}lҚ0eQ'4F#4hTp}Uɶ(B b:jV! feW29,h&H(V~ǃ4x:8lfU#~La Lڝh6y<]Oy`nW]gi +'f'q/UVs+| qK=kBڢ!Ib pHPtĦCOöb :PXрG *ZL  QsG92XQrJJ h؁Yh(V8\GةZ{P#JCo޾>QF&kJ4)MbpU9עe_S`u"0t6<:viB`U 've$;ѷqq!R$9%&\.G D'BcayK5gp6#h.\6+psH)RMɳA].`oF0cϋ߻ƿPIl{IrZm'K0ETZ[ ';vH9d7(]W6$wHL-gLqƨV 8tVSr"4j XY*ײ.8Œ>ܹJ@zDBCle3PtaQ~U;/ywo1lb)&=T%JʧSePWM?vR}Z_E8B!nL2y8z^em>a6!r`87B\Y{3Ϯ6IW.IOS64 UKqldɉ(gb@nՈBwxD,u'qQf3 !2E\f]s Z xdOܾc',@h#[!!0&*Ūĸ/KRZ_93׹Js|/J)EǒHz:,\Pq4oh,~瞏^='Ա7%Vu3@S(ӍU,g&ޱї 9bīᶃ-jI͂k`@(aA'0Am:o*')OQw]2 >^VR-5- ψLU݅#LH^k"O;Om0ny !4$+G:K6oThByFK$7 k6WؚSfI͋439p?cKkTj rh "m;b( (^Jō:.gXX?“|. 6di| C (!}aFhDb~ܲOr0?Ji3Ua>Mܔfή3&@!m>>1Opj~Xt\ (UԔ,K?~>~Wd& p9/41X_,U+ zQH؂Cs%—o9σ?7n +)hRCVfω4HcKcdg-?,>2%d="Kh} %U]A?=U[*V5׵ј]◎Tҫy ދ>^O;x~*̫A{jRں2N.&;[( k$P2YfTzV4(^m!MATw{)3LD/F'7(%6Y:o-jܰՙڐ~D4.nX"?-VXyx,S4ě Ϲ˵K %h_:xV#H+ 岀KlnA>pa SV/ (՟s#MND6s'{拫jw>tD[Z.3;/sn"2F+r}_e_j(zuDk;D vtjIt;Ma-n:$XdČ.Y}jZ~,ˉ&.;+F}1yr 5yTe@nP n>1Z I 6(Mkx%ϳ2_G`6km4ũE":1Ƽt/oWLXnVD;3N :CJnKiJw .i]Ӎ4R*%-KIUm]$Ku[D?v8\\V;ٕ>"<}w.Mz6\H^ok]^8'.E׃#̒9vDWi^2+4(|>}vFr挵eUWyy:Kx4+-ht } 7ן{KiM M-Q9Z9;^?-.J's;!e/;"m4eEIp=-_&#*] *kpDJVaAt} bu?Rlޡ7c1K'A[Y79P0q2x]/ZL)#])*Oεr|0g.jvwL-cG w"h⮼6]cܯA +օGjՎk3.6Jk bdzf{3UBs6&wqw$;iu%ͼ ˚{y\T H_lsi֨Z$j?~{UH>\ C+ĢT ّK(&иTMAvDkW V 9FzFA f`@l] I(L4pW<R ␷[]E#7u;͵oW73LC,Q#r3aq?W\Fblei^%*/~|PөnR Gb=囥B/K$t jRt aBI`٧>\xhX;Dwa^"1cB0 :ʚ%{YTև>dge;NIJ;DFEOf` @#q? p>!'*|V7:2N)M~zh'd4]q-F&,rnJu9 >8neZ&w-uĤlx2ށ{9.'yUQ;4AAyأY^y5<{ GY;ǔW)э-m(B.}2٩mS/$X"= .0y[a5KRD.;^j.5 P-q3G{Ldd:ECŐЅ%*/08 {nj`d|ޱ@jYuщ'edLN\b>#<0-<A][l!OZɠ.)]mӄO8Z#[nzְW#5e{3kZHt'kqFz}9tM%mŰ!Ƽ&$ EVپju4 k ұi{-m#6o[ފ[C tn;a=ۏ TohvуtCcFxnr$ P^оݍD"Zm2\e\UIYF 59@hq aY9ou?G !KxxB2ekiS^J`Ut-N'jqvAagBe%1X =iq"ycfV֕,>ShaֿC+SrdQn储2" s{geGW]~Du$~;l^Vw0wīQ-!zE@ flǑB~5@V4ҴEH n1܎Q&όOqsobG[A䐠sFA`!!xj=7 p!)A k ?[Y)ICn*ܯ_M*5#`Ov 0^%tSeނ J%+\5➗[.Rvk- e8ޢ 5K"Mv Kb_$Cw #: QEP>M%kt^fs+i9Km)-ne<-뀧$kǪLݣe RM^Ƚk?{h Sp\E#JATSLpխUG}ol6f˙y"R_NO Y*zqJ}i[$5.\@D3oRTLu͡GíyROJl&@dKDbe*ғAxTZ:w_o([5pn¶Уl$f)B'o-1a6SP2 nYP[+bkB PҠZJ1 C w?ɺ 9He;>:亙*^Nޫ{>Uno3}xG ":X1%qoff?5|{GU0QKR06]R1_jݢ2^Aش*OG"p3h^ `I^|& ~`z*LAݍ a;hkTC)katxePb1$|ͯ9И՘U)5}8]¾kr .a%9ZHu(^@yEOGѬ9Y"QID(;IQme6Ubw(,"%*1ޥgCv, ?ƅ% lg葵?R/ J(T{Gd0Pfu+6r^$!ln(b<̲,P +[w {;*-|"Yƿ܃i5/Š㢉z"Ի18<ߏ+sB`x}@h׆1j*"c"PԀσ݉&ץT;O)ٖT%q0V^m/9}O ˦Eg"KzGR^e; 1L(rbl}l%X\1U>_G tL\'"߿ T k :-~ܞFAu5]DU=I젨 ;̎6[1u@Rx3$߆x5^:' ҿ3 gahRNOAF`.tH)vx][ q+iin}>s et4t' Nt'z|r)'cWt*HrL?@7¿*T/~&{?ϛIZi{I#9Grkk/f,a$, ;KWWD_uti(ZldïOITϖnrlѓCl6=2କfs"*M%QB5= \,Z>ރ̻M|/BP27<ҸW 1}e6S}ȕ/0M{|gkXW\ƪCڮۿQBueӀx5 rqբǽ\HN@ 5h@ (aKC&rsA]B=`S ֮fnWM(fiYr<0-N*'7А Tr>+rԼ"\%s74 Q7BZ!A +ӪQ{K2j~+󾊛zD&3UdaƖ߂2ĺmMQ6shœ-AD~P޲z̳pePLF`gvEo +@282Ef瑇Bo; p br͑Y+G==L@pKmu >gKBVB G[ȝ]T{h ?nP;PzN3H=DHua[ņ!gQqZ'EvE'_9y&khX @Xw?yh5iG+%Sq krNnlȁ,{e7⻟SwM5S ,~$_c؊D{D]#픚o\EVAqtcGWI#AZPG56/ 4$om~fv CRo]oxa /ui'Ӽ]iZ,ޏ2ڔY{~(ڮ&]jXh,F(7L2 O"@:JG*"jܸ-IcGߑ#z VrubznYu`w`n Y;.eBhWغZ?3ga6JAKoj\Z5bՌj=pdh(%b\|Цf&-n /O̓8aҖ}]!I++}< G:hTKPE 6<[LR/]R7^ >NL}G<%Dǔrjr$N^ݘĺFKn m6k:`Q(!Omk4YL+K[h9KQї1{ŻKӒB8#Pbׯw|'@7kh"Z[ݥr&FjZ,)рݚVvuJ1]b"S;084&pd>G7nXnP}ZYW=TZҏmxNTyCU 6MGd]Q"O<͂H=FPWc Eה';5^NJ;^7g#Rl:D`j;f}:w9*|ɩE.UI j2uBndϴ~(0Yx#Od@5hgQ==\ ȐR)̅piM_ 6i4OZVvrm7p&# dzvڅ6rqu 0ۥ`<1K.z+O~JV<0|86mت !|[5[5͛ \r{H!Hz+LXf6"v`Y692(yv-B3-rlcIZwt pQ@j@[f<\g\]~RGHno)K5jd{ޓܙ4)߻w|D h^>w🫃u?D4\Khī澙N&)^>$8j mIR!Sa|s#yӇ}R,VWۆ$k:nne57 8!CCdӆu|)p (q†2{ 5ZA^څҏ)zFtې+iX9_=*9Mש0؁^c!<֖îFMr]mCcI]ɜuR/ܤHo$A4p>UZ*0W:ot`2%&TG8 m_^/)8ɂp ^`(#OkWC%7#riL#_]?x/ҧ M(/3m~<[\,Vs$ 8.q '!6V`p<6a^Q~MXBYם kx$Hˆȵƾ%&A<÷O1\'`}GB%AhmϿ9v1%nEC& sUSIy,ѓr<\UCFzu2x]e"ibjc!_G9Rwbܪf 3dSj|!*9`Ԥ<0OY xCOkCKܡ qvG"Eoњ&kQtZpTdEcŭf %S/xwq.X]cmr.-hޫGa lʼ[Ѵ!I#AL\3S$|YKa2]JwNm[ ~8ކ0ObyHìIdEYtHCD9mE! mc` ȝߪQ3ZS6q67~J(O-ž5~g#qO.xDQNzLG_mQd\M2"|IO$-썏x[2AVYIV^43d q7Nt~[tLσWl7f8+fVOVCY$Z"N,$5:-~%!(){e+(KSi@c`P3pn>V3N $dos|~L-Lt"$7+{K&Y]ee k & !&[5,B f*pMM-PB/PSsZT_gqzBZ(9}WL)šwՓ$͈Cy 9V2T&&qUgS|/F)ˉ$ȝbNyF9j:!OMcI>VXS$ц5cw:b9^ť>>Tyvc+>m<Wh+ t'oz\lM GYs"FuL:M7^٦/vqҢsG0GO<1^^F!p !VlBwZ[קRJsG619sm &4﹎K;\ @xH1O!v#{b;ykJ)V.Syz \R:_kKq[^ސ,^ ٿ;Sν|c!$ID2n]dBo{GG@ݏx7ufY7FX f޼.шǵsŘu6qJ3mDe+*N{襬-@>>/& d^\l<=YHw&!E~0[X 5մ"[wsd LY+ANz`m+nt0Kdǥl;Vǥ,D>{L:Ӄ.ճ؅B2ǭqot~d2G7nG8O%KpѤϕ 2-wz͋DMhWּ^Yèd>Itcc}W1̥ܩ&{:iÖQ9曈&f;;~zcBn'" ٫ /Yr:>\=t'kOg!;[2Ex`r,]YA1T~gF2#JJj89$, 8E]s+ԻiVr{K5l[y9Cukguƈ sR+m$LܗFW` ;{::T4QAT3xS#IUoiByQ77P:ӑ܌Q{JM77~tX[{հҰG1a.03+lעG߭3kY߰ ]De1ԉ~tԀcƎ5uq-2,1!+ԕy-,]qW81=$HjQְ#Wg]KPC|`D}1-%Kv+J¢9xjnHD((R ϾIG:.j[S3Dk{5Jj@nQ塹Xxc)Uivm/1|= SdnB|E[UYfNU,D{r 50Z&Jz!4،UkD5rXxUe,ϋ䱼(Fb?BmSzɀ]!2oA:Sc?.uwp8giiq0ݜ"enՐu[A V⧉sN5ώMyC$XO^ 2I5!x-E@zgPNeM0ްu`i5$͍A'J}> }D4\-Nja#:K<`Ҵ`UA@Y[}6L P<֞˩YfrlT8D5ɬ*j]gkBU *h̬δ/ҎO`*22m>Le?3|XIPVjZMoc{.C[FI~RGyY:IJEWĒRmCOc%naqQurd[B'ROUW L77e9dpWmUo*DFd_WzŒ؞ ena3n_MD= [ϻŌ!8pe1Nz(\ig58PtW),BSZ'4mZ9w,$]W2CWIsՁLbFs_^OVBem/w}f_=eaXfvVt s؃=B hC䓡uؗ} 'V㺋rY-@j>hi3ƫDZXEoCG$++ϱ (ګycRN#*U#r-埬tyʸ6:D4 }{Y**ߍT&Wm äx Ν'n_bG/%:<ޒh[0r‡pov\X*w {rLFHȷwR ]TI Ao" ˎ꓿S/ADq9a6l5>raQ #"y=nbϫ FQ GO[:L?$GohNMEV u KED\ ͧk |yZχA҆8gEx~T_f);L>kJ̿I&i=׉٪o6N;vz9L`B}ʗ|n;g g.4N5qfצ9'zTB|e;3C/iBt&(b:H-֚׆G*q\_V/;NZdd?01UEN|cd^qcIS7i7E\c00vu$_S%vb<g) v($э|(26 sGH_;AJqb q :Se=ɲB,`2TU+y;|x`ݢ:TrpoJtA#g]a ͯ=/0hvVuw\whzX`k_,W%bZk>2 6-+4!Y/k:`'6R2zNDDyw?AΓ35k֛Q:א̽pd>@ l_}*n59L =b k¸`[u,{xz%^|M\:oոQx@ey>C (I9+ft{4oN7Mef0ᩴYDH{Y2m!*U۶.'6?msթM?b>@h;Alxq%21FJ}+ Z @;sQDa+U~jC2Ic jlX"c Z(#ф^`|s&@&e?!-q`F n.u=V [S8K1N^ù30TWyI1MHN7 lN @MV`R\`<<8qc%0`۩<#C"̇:1N 71- ΁-dP^ODv*[gaBq{N1 Ft )afWOAS *_2ܞԙvRD^Y0>_Cyq^jҺeŧ1 +ۏ)ԋwp.R ;"R]l9;E(֞ߣj!DO D'\ʲW*5߈&qBCW#)~AAO٪ĦMs]^_?7]U1Zό5TAb;C Th==ya=9v[Klf7Oa/ZoZY+H_k$xĈv{7 :nHjh,9h' ~ZuIY)MwA`SJaD@7m[3t bIC}fiAF:uV\o?ÕR _У2X xKΙ~B_{&Sӌ1Ļ &8pĎD6QGGm dAD45|L<8vDrix.<4s2}27@6;PGҽA)n.) )UJ厾nȏltxLG#eANNCWpF\_Ǣ6JK(Vj_xO#їXDD^v"(ȿ2Ɉ.i]CAq Yk}|2mzP&.IgL}FEd*"f`޿gGṆΒmG{}PYm%uWtX>Ts1,dx@&Wܔ!`C5H觱km('Y0a#9ڇP%ӮC80PB K0wri.9G;sx_ZGr`SQ&JUE~6 i4ڌ ѿ͝p`i*~fզiw @O̘'{ /aٌ:Ё1ʝ^Q+fL>z(f[Wm|Z pΨF;EVbeCci"4w#$:uBrK -,Lj$ vy=`#AQǩ .jpIBOv7L6R) Ģdoܮ7\>]\o?#Tѽt3FCTT|n0]s5Lǫj˪zkWy{ƺ=#x ؋иa8̵~[h4CMrgKhc+tya#zzHQ\vn;5PQj 8:bK2sTSL S;0K'[V}^t217l#-(z5Jdˆ:ne(.msa!N?MY60nqv^0WB++=g-ֱr*8dW/G8Rb(umCԑ~҉l-kHNN}daO{!7G_u,!٧l6q 9諽0|U9tأ3f󽉃o;!ZXr6 BZ$|gk9Kl=C# q:_bY/q&0^̯ dHYBķ74П ȧ0O ?rޤvzK֥tZ.862 7wa)TZQ n]MZqV%L%B'9@ ~L=][CͭI/ђۉ8f:LN"O0"W/椦VV{ +ٷHh"Z!~s.V?1c#Ӑv{5T.gvdׇ}ld$\^f}]g85n!e@Ԥj)sFG(I4YCR50j 212F7mpu#5PvV`2:)FIYfi&t*Ez哾(,bxb2iF2w$[6/(ce%#b,X`8^Sc3Mq ~|uhc9*oTIM196&oҩ~^kIA7?0R  V9l?4wJtD_]$"\>_k`Z?E}lJ؎S${d=kZStoqyjk2m]a 3v:h?^wO xS9 >$YlM|~BTnj qAsXy7QDң*$jE+^xGs;CTc3 !.'=4&_\&]& յXո1x>F)|P ;Kg<҇t((ҟ܌d寺2cO2VZL 3J؈{YM(,:Ey k*6ɩR$-p*̏H<#E5>Ǭ5$ꒅ؟YK^yƅ_^vl4IW/# yyF1dUa%f|͵Ji7U?^Q%#y$zi>LS4?RG'/)0y6L3FS㞋Aw-20J/wUsK-]ۜn0>DZz>J߄k^s> 2Y=`Gu&WPGXUaN>9 *~XqR>ߵ(ߦ\?ԭtq䙯avS+&3GT@@ > UƩߍjl6rs)wuKsTĿKRi8ؠ`'sz%qhV- ȸ&pbRB3x_zr(]˜mkLKž!g$78 16R#!@{kI 5~& oz /DB//Zg:I B$!12~g%Q%F~x:oy T0&rq|)a aIisz* >ȀL쭂z\Ŷ{ ϘRڤ4aݧ\%MVN헦ɜPI+Uu4x"WwL&m,u06;o'aMoP嶟ۤI fB6pH76-1L8y@K-[͊`酭@ κG+n撻3PƐ.c,È??+2M]+h{h}3G$,P$?DJdMg+ ԚYṫJq0%frՠO'zFLmO.^IdST#{_{MQlpeGs[9"/G %8) 8(:x?o=yW{=*} }@K^Q,uPܬa0} L_y{7o 1>B~s:#]߽]zZwԪs%"\pZrΐ(qCL$H7 Vp"cՃmw%nq_9V@ƸB)\ELN O>hFf5XRXl㾦qN!*دfYF߾^2| OG+ړuBV.NH<"(  f-J+m+ 2Y0*z w2ԟ97!yRKܚDLt ΢^lwL.;jNX³?E E-ۉ}v(ao`SLCZ/!ɣȡ,AC0@cDӴK4v;~jf[ hN14{KjL~Hd_Df:/bULl}3;pa=~I5\ VߧJXՋJP2}t( ZzYI!K,JTUgJRH-1&Ǹ 8l3,U6X6:Za r4 踥#%F2.GC0 DƳ'h`!j<yWkuQk yz2M գ x 藷'\0պ?w7 G#2 c4qY>pZ$K+V4@P6#HGHo-ՆWEDxY)IJ," !~apU#yaT?,»Vǰö@fvm`E%^Jˠul ٝ;9`g 0P0AnqTT>pL04')vsǜ"*aSdkL#祪eD,Ac5>F a>b֚7?F HW,m?s[6-w!Gh*BIezUaipȿ')˞$) Ȃ .&6};b󰤲<3rt Ct$L rsuR+݀V&x6oiWh/* j+">[ Dx鱚?`)9F%2mЌ vsLg#Jw9`(\--/s `pqiQ+Nhx݄:taV_$}h!CXϾ犨IC (.Udgp2?=+3KjSWs޹LK{A\ʤO#oI4j4D:F.^ua_Jw/ 'RJ8 'fZВPlwXe_= cV>$B6K:k̺EEf3yNEamCyC6欮LX4-G Ϻbdfrkމ%awUu Vh|Jp$fY*q4,I{7iPh܍,T<>BYm =ɾ1Q硷Ż)?KtKpzňI>zUU $7ӂYEŬegܥ{$i:.h[KW> 2?t56Jz=`zGnz0]G4YJ\0hUCo?k7ɅRRL|2DCä ۯ-pX>jk̑S^ۃ/[$_)9nay$XCk<m'1S:p(hdɞޥpi/ \W 7N?Hţ8!Fo56oE扃/?~s(\p (Uhfօ%'=zW-sMj׍zn. #'C`$*G'4Q\ff k6Ms.~QNsX8E?;dy?ABE{ңˋsľ~{`Evg&$R=tBp/Zm!ZYFTzm]2Lj\ƴMEJVDp|Gü XqޟpCD}߬XI(8MĹ];J$ȄhxuI}Z-4N 9&nl o* 8MCuYvop81!&dV6ܫtV nP̂@aR$ ݻ^ϒqEƣAC}4dˤAxA0FO-tiV.O'I4PAMpZ NjUU_;62PMl,)@iL`]po=̳(/lZ'jNIgq:8R:_]T)$?k>S[5ywBN '=:dƊJϸWQˁYXHh5ڑKժd1شwk]]:Oc'R{M㜄GZf"&ZcCZZ? .8lD:azWEY\ږV#_ʅ%\"D~]!CCg}×Bbr rcG )eTPc"WW~x1ov9y:"@#\ƻ>7anrly穆C5PpE ɯƅ8Z61;#곰|~JmIʾ4 v?,O$|m#R74>%_!nUg/א~`Q$ڢsMla%;d\uTc nvQ_< ~i t}v4&dx4dz) AczRͼʷ`>_s8ɛ+U H !E+w4;׽&.4 )m_:ldfpQVt6neuLS+3sSoRnqx,4%f!eu9Ih_/TUa]䑌&gm56[@4AP ~d|Tb '=S2F벷4g 9O:/U " NL)"&D!z '-i!u& ;:i*@A0[xY!?g,+e /6QBޒζ8o@L.WVyU6,!ߏ=nIƤI6-L')̿(2k"ϟ .|@)lц,5 HpPq 2bX)&HH~Qdww;HuҠBzKisHL/,шdn0<;@2/n>vۦ,VA֣Y_:d(7`` *yU "/§r/'ŮbipJb4@޼#dտ tƶNjȗJNs@sJͭzt-4:N.1Z̧mKmupC@ ˣ=% o!{י/%LZiV"(e Q(Flo@3zj=iPax B MD%("n0E7;wZѼЊ*QyZZ9ͱ qjaɆ. N6=TAᷡpb߽6 >:ao&.OaN47/<_ \_B?p6XҷwF~Rr3Ki@8<60wTxu!\3.<,YU$@\BcLUm ݒw  chg͂?pm*2W}_-XW{Wb * .dTfc'`d)_ؚ4oWLؖZ5tN Of0\@(N1#Duqb^F-nyTIG43X-6Gp z)# VЄ`ԞEu P\/aM%7n=0F>@,vNnZ?`TRǧ7y*9}k,0Ҁs`6k8MέMa/Nm[?jw5Lޛ' :#کP9~=SH,%oAl{ЄiXKݽ|zw`_ﴜNo{/{!ր .6c;i{B?eIgf9-+>ˮy'|FӶ헵c-zI৭/tw# yң>DԐ>.DUZjQ˭Ю kSJ>J=z&ׂhqH :ʝj ZI oP|<쁼݈E@> OX}OE߼c-=%3"3ٴMcp~.v],ޯ se" *rE] B8pJ2G)'ejU7}ߡw8z8 ]4;T ñ6&"LT#G7GEÇܒ$De&XdKVɚ$^[#Nbn{fRd2](խL|=1/^MϗGX>o(:D"~49# np6uWq }lY= ^w3+Bxx8d,ۍ{nW(F ;bL [f="2 [cDl)Rd|mM"X-ڵGNu?܍r^j-Ìf=֑3[H~=+(Yʯ2 5^Di*~p/alMoiF D^Cf(XriWZ87u`O6Dž J2x1[msaTP%ӻuOLclaO7,'?-||tV]#`ܹ~ i0_G*Ha3^;˟j9"Ha~|N2ı)~Z* 7O)=]XQ^:o)h;q rZWlߗJռ#^JP3bV Eؗ>8iC E\idycU^z1F^w"yV$r&;v1Uay<9G9d7&/uQ_ˊJ#:J:=$X "J9 T2 2UeJBQBEo'bٓ4 ξjCe1MMVfTr4iQ6 ȭHІQG%)Is>NA&L8n0wjGP-}U 'az5PVîe,K-<xx&GY_ys,+ӗdpp'X^Y:hX&&x)fޫys%<IDn2LzBbJ9ox9v_Ʃ+^qLE"%,ps1ҶDi^I6Q-~@EdtAr8B0CvIݕu8P#j'#",,::s6(Lqq%8܉UH3 BI MkpR,tq(;L{WyF )āzu(5H~ߺ;;m)p|mwեJ)8> yv8=0r>?'%Sߢk`h-8"˿x1c>SΜ;Y>_n݂kA }NДuAٜvLS C i%fnx dJ$?p =t, 8"nNm'na8x>$H "3.O0l]ܮ+ 1{pdq.%:q>Ft".!sz[)r̠'[n(Y>GT7P ѕJ[خK~6N&v.j? cQ*U)#|o)yӂ,k(A0OOF]mp3C/@@ph_] !vzݯdXǏęO.KA0M49~a4ʥ s `-;']2 uVg]pu'6ooy: ^F;(uKf@l+VW :صPk}/yw@i͸9DM M,d&he9K  :ހS ݶBAZ>(~ !&0ߊ)az,d뵼 ly8zQ9M%)ނՋ,|q\b܎EaFЙϥ1!'kX (S6\]^pGۭi !'֑>=C!G0̯:F˜|疣'˗qIXz}[a/<|=8\*Zcv5ˢO+RŻjTNd=< M|&7"b+Q=hp gF{{_"uc!̀9`c{s\yX/2^F%d.Hbb4ZǵO$*𱬩1&Ђ ~Cp/'ݞ$?4ԼeTpH %מ_7Dy;fJ2G9in2&\&7!f1dT<1"(a|4ޥORA~PazOp:8r &6UjZMw:g_|2Zi1F\NK 8kӻl ܀.mfzL|PnwujN1C2kD'>ΪXJ>IJ v(Z_IZuyA+eګ4љ[Ÿu` aH$ +Hl^ކW'FDB{b(wwIm8%aQz9q/|$*;t`d}+?UѵlLWo婜 a%BIm@=ohtװSb|*^+8Iʊ1<4,_6G4ihl4չ{lWWnwrv(^홹廫Tp IZ&Z*y~eo'50jCÅ O`>=n*~bA4Q$Lt36l)- |o%-mS iI\9}5֖x$Zg\w!7w-I|*cxc8a9FHcK8yūPb4;y776ʤܷug#:VTp_.U;H8naA!8xCD.Qݴ"Ai2aCYT;8jzc(OQa6ʼ._VRTY ZaȁFZ?xBnypIF}Щd{"kC6P^\Q4/8{FiKƂkmŠJInS,tr#D.% C5wCu|pY`*޲.NHS "lu)>(:@+Kve]@pԪ,8 oEY 2 ED1~Qo}"z|db/݅\}Ks22@&1b",U{ہi,>oAr;U8tkޠA=ypP s( ?ؠ2?}L~.yHS3hYT'3`N/4#>-_>h>$o zl|(l?w*9K:bWɍTi(迓Z-ˊ o>rWKt.su}k£gٞ ;?. 4r3!<{Ngۚ¿Y2٤ ^I D%v,5mϋ@5F#Rl]G%4o1M4ɚ.ꬣpM~qb4\pټdZ@Bg^[ !Ige+r2?m7r&\VVa7d>9'p̷a,QYaHLo V lfHAu=*x~C V޸)&o JmRՅ/_%_ \n;2$^@4;$`Vl߷Э3Xwaת?4ap}$ˣ-1-o)Y=(1X(Ȼkr|1kFwЅɇ^3 ąqQ$UBēˈ:x(7^5Seq28& !@52瘀TfGUӁiCx4wة/žqkq/Y¨'ctĬ-ZEu.ٙV#SQsZE)Q&؅?5 [wK_;D{9i0˱g(Ǡp4ڮ d򇾚NSEx o[eiÊ1c|5Hվ*O U28 D'Kr=n% Mu᫶ޟSiqA$XVBE didy/\6T{G ^{XEȡxR=^QUȗ3Bbԁ(8c+"1 L4! LzɌ k~c=jGvƤ"@2!].%_-Wrޚ)zخ4IF6N4IO t|ڂH +%Άņ1x+ 7\.z8 9;p,d$8͉4|y3/5w{{"̸?d>9ߍ)1&-=[ rvxA-`DsjLڕfAb߇~Y@V黀<9 ꒊb=ݧgvgP`,BB^4C(8M6/b- ꯧ~ԩs1ϴO@(%_a.T ycs>\r-IMaL*R cR$T=(ʙxM6(o_9QUȶ;|1Q{X8ΟzKa4Rn~M^*`ׯb_$%Й;]]VμOeQ7WLtFUzCz3y-#Ooa:`oUvQ~plS;t,V̻(\~>~Br;9'#mRN)ZLR1A2]6oC%m[6+G$BjE}U…OI{~8d獪tq[pf|xDq_\0'[8Wp waJ!wNftNЋ̮nNG pi]pW;ײ@Zwz&tnt cPsUo͙VR*^a Q ɄpwF8+Ɣ**h58uЗeb+1"HU$GMn1A1"*&C;[%=+1Re'>m /|C8MDZܧcTvY}^^J_~X_2rrt1m.Aj^{e# 1H"[. ;kkfyo!Y;i6o9R y~wB`%9Ǿ@b PܧB }li҈ieVƒi¥鐮Nп>dAwNf#].=XP]82yC HE>:+fLL5a:\aP}tpDmgbjsU6E~kA|oM R\5:hj1?Ij_|O/gyfiɊWģdšsiƴ|E?1 ?,b.ō'Lr&o;=؉r$H|+ZsK.m$ز{SO_]H/B6k<݉mIӜc'Y=& 8uE`43vuxŭNkίRψI!ui)ϻU=N?W)%-חZjsTV =v:QJ.mh-b./NYZ+eKWX<0t '×v'jҞ#h?l>Op$Q>|9z5 eLZ$-]=83]ɜ;kZ{Ѻ#uKv^)+hd@M1{\[TQflԷƭ:R~$}e0k]iotXw`h>g_Dq,P+Eݶ"BQ{LPrnB xk,By9FN SzPO4(BUS }U"q9{8Í dtj|TfѨk =R e¸ox(\.T_nd=exNi(c~"AS,6!h ILXr(Ze&[\9ƶZᯚ0L IxE{k*șc+T ۺYHoxv {:tj%33>(35}Wɼ0xQu@b,@$ tJeC7sܬ7ڝ`+ |>>?ClXÊԮ0 3R] xyd+y )ϓ*I 5,11kU f*2}_`%U)?Mӎ-K"CGy;'C9D~9`ڦKRQlWk&{*Qoh umsG)Uh TX&{Jkp|'`m#g o y<9vd#:ҳSI߅Q VՖ ]ky+M W,'AOӨqv# >/J T U#~BH3)f g`asjj˝5j,/(npǂn\. w@ 3ONWMy$S5>_9O,ܿOY,ƻtauBۯ9M[ X'V&fBbŧ(i4ռh隒LbwHpF ژҙ$*@™ ?L D$rUn\Y*BmV\R9B :5"3UUAG4XxnpQ'Ek0}s"<{;~+]Zwyh]tF)qի!Dv-eM# ?jUBy=UѳQJ4 IRoy]׻r iθlN/?|̑ V DOmf,;H1Ǚ9<2l0>/cljdX_!u#Y%_ #x5y({Ϛq/Ot":8_A6#EIyF -4GyiliRs97lJFT˄\OQ*-afd {56JumUmDWa1N,.%9v|l"q^9-Dq}Vcr2M>w:@ RSEYFPN (\I2'LÑ-D_u|С|{8XngA+kX̡xiybtQwy[| 6;Օiy b6\yumSi,LM}_a$%lb$2NnV۫w1yFf-OZDhox0NrM?2 B`| P&?<'WAtv4ΗU_9[GE=k(_PTY.@{lfa!Ĕͦ,ΐ+O}bSNF43!-[+A`^FqOc-ړ',OKo?0gPv (Ýdepj(&S7}[!epά>g{O}I֪/2H6,[ ?p^Y ޮFA(x0 $(c_r`!" _3 Efzv@[s e#?>iy T=]zXߦjD8DtHߖ/0!.f^rd9 uh_3S;mn490 M -t3fmlLeL#EOCb cKeca?zL@vr"^j0h*Ҥ) 3% @<gu %yrmǤU ?S! 5Yn 0&6E}VC1l *>wkwrr`w[Hbٍޱqp/)FbZlS`"&)؞xiT}pƨRpŝ|r@um|_k<@c9 ^,40&pp'#l2_V^w~AnK@FIs GzU:xI(7=^\ϟ2pzE<:$#B_tH{ňA]:,X=wo K_Kdq0>%RX/'!A`YXҾCZA Ow!QV I `AgOƋ1О07Zj5]Q :uSnEPrJa ΓagkFџ-껪'@y[ j n~[g)4Yȵm@R7stQQSԎ`c!W{Fa"BBnH&@`"2bI{6?YXI0^itS.etCz ?L1bN2HNB'oNRjN|yOʄ %' BfuZM4+A8z&/'~t$HQJwjd 8[ŷ ǣ`v[ -]9uFyO(׶]~&S~P)*-*hːԸ8:>a%yƿɋbtĚJRAч:YP? g l'Hpc~yCU"SH}QTa =ɄΪІ5OǹAI[Z\Pժ>xhn~gFr3[h\{D潋1 x#Ifxv5&=Tʌɂ>o,FaBP)iqּbsL ʈ\>pns l>O>JYfާ{ɕ&5'ZKs#<ty qY>cCpM#A[:#'jZ3h[~ 1>9ҏv"4g)=9>MW%[ ; Y6Uaoc, HS*d=N[e!'P)h-ڃ:_ЯK3J"1š @?p8 `ݱm?^)$@閨_@P`va5x)l-ea\xa^{14AM]wPMq:Eϕ̚ Go²1[5p$)WcJmӮOt;hģa// v]~`εcbPtè㧄e4Zʶ1,+Yڧhk!S `e|}RDSΘzza~"*'®5F=-.v$>X?9cUɩ9D7u)tۅ1N clFig슀A2Oތd/Ea/:~";2'h:pK}m4i2^;w*qH[ (9k B1d:Sx;YDIaWZ_=}њlos t)87HovYyl _(2ů3'A8#fDi O^oI(fd`j`bc.B.\+ndM%N:=]!;ë6ЀW186(^]00֒Aҭ4ggN:1f EaL_6' lC8xE2/ `x/QWJ^U;5!USpDzuGME>4_HV͹9urR,S{xaqhݛ% ŧ֫8Z] >`\̅Ά5.-"u;9h<qv Ɵc>&7n C_Ӄ1 NGx:W7(.0嚻EA1A\xb0d)>!fxrdzh K(7'0X]_[t_}\n1qll,K Pd* OzxC8ZV!8j+Muu\~;rF?>JI3 b`-paɐ-!)@7 psrG݁}{x, ۢ4_x >0Ɩt}du1{!(*C3"Riêyҏծv>S7(WZe- ErSr%Br5d!"\f:s0\.w5r!n-sS$\d!n_lL&{-e̋nE U{7x2sa}Gv=a&Xxc1h4G"˛Q||CO)Ա"ܙ&$O?h+}x/3ԤW-0&n[>i,'?.rkN{6ń_vB)ɂǃ5)$ 55oZ5ɖ `9):0ѷEXl^Cܵn [w#hqmʱ_D㦘k=`+E,c4ܘ3$W`#{Lrw,Yw B&j /;d瞑iZV[_h`Dw,zKobD R0Eg{,9<lN@?ݴ/"#"X m-<5sE'4LY*REvJv< Y!缺+N7ĀQ1Q1 ֟D߈8 ~i~@dc[{A_sTG?6]T@c <1 ~6,ᓭJ[Hi<ɧ^YX*7*e B U#e:$+Xv(Nc v3<#=3㨜F\Cf_h6Lg1˺ˡ4BL?/C [] @.;T^NGӸpjOPA[ACu[I^lٿɍTMGk;^W:j)Rl2c&j5MYINɯpU=̽aO=Ƭ{R0^_`p bC(&w,Rnc@OԿ58KFW+MիRkMeZ`z_ò@ȴAz\_OF]!Eا@iJf5\Qb}[`>&yBrK2ln$eD \5Q<(ङM(m(kj-pgHQgTlA(> ] z]n7v*JZ_pXKYɽ}f>KcQf"O9PflZ6p^K#>6$P /‹3t`Ϋ {7)9,As܋P}fgYMF_Nk((֕$LaniPHO{duYfk*WAu/@pZX*Y-wq9ŐB>@8HsE3, Tbqh 6yYn`\i25y{U7~gZ4Z%vpS|sf"GF^P\h| ĀMiΠ-Rm{p΅AǓ9$rʊ&<36슫).ݪ+'`+\cDIg3H$޳qo(1J|>_0Qwi*Pn2bl|ے]/0G:81L649L;+khiXz2*`M84>e5W׸be5?}XKRW#כD $ .rn@PJF`/\Ĭ؉EOyWHlүr,a*S_v&.B,;U"ǃ?lۆ6ZOqru5֪*:'"%dSj<*Cz+iNP,3qY=%c埃70->$qЮ!ƻgz?[UIB:"Hlb=ΌD2bZzǮ'\C675 Vu- v #JO>kr}f"rO@#uuT:zQp˷@p!C"Ye/ . YKa&:d@R,y?ڞSY guq+Z4>!2cj!)wOIhk7G]cIi/ȽopJu֥yP&09d10  cMJ2-}h/ ,5-]ioH?TqQ3wM{Z53uLWȸ]t_;3@T s3z#4DE_|(b(v&(0x6uz`TXUD~ڽRHn)2&s䭥Sh˷4啀R'Xکjtu];.2=K1yX&%Z#z+F>-GvKF!WŒd<Zg܂|-GlSRf9ᣣiT <=e5{\jmU fN+*3#/}ZUو%S8eӧ/hXR&:?@#e ODualD͟Ha"Xg4cN +x"T8 Ai(`n)'1>^|ȃ@r8EdNp[;I&8$J!Ѻ 괧:OrFVQ+[3p ,0wGȳt3)hAO[7sgAjgQAy¾~VK  njv gil3q.R(>}j^TZK3}9CIYUgp sGKo%ÇнߑzUQ8 ըFa!Ơ:} IMOS 'ڥdx#&ϣ$R /ۏ69<蘥1!%<ʑ|7q *K<~r &v:f>G~p]fɜ# RSP5]td5s>J5hs77Bir/аj td妄C%d+!!ݛ qj9u-"bdk/Z6wNk4ETޯ&)!0rS~ Mu`g8fLu>!^Rc}Jo]JJT ֈFPTKFƿ<+I/Tk˰9xc֯l>`J$V^F+hksQX.>2AsT~vBRw! -&V\Yh%>KnC8Bch5 A|$%AlAn[_7݁=g7{ y@\sTs/j 4_>t gxH&;kc#((aϕE%dA7U: ǴfMV}0āһ[ Y̒{@a [Zdr`\mC󾱑.iI1#oYձ 돾}<\[6R灴"ĩ]\t3sZF>G<ղ>żt,wOb߯y{`},wx6ξ/} ,dVd21MZ|po2)Y`LD-rE(qb(xb?SUGoi5s҃sus *'P/h; ?V`RPmu a!MW,̇Ԭ=in9JWG:g~*3e1$"#?zde#/1/ަ'sY~Clzt 饔㡢0K9Z1'kYlbrMŚX.Кr}71e ꠰2;]۸zSih\ Qs3H$yrX9{!H]\gIL CiTFkK,\`/Y$>:AP I"CJj+0HA #㮀^)ɣJHKqlc%}\1{Z$IdY-8Ѕ\z UL1ل)[i{2*,F2dMG C4ڋTD Xy]}+}'xpKK4mv{PHa4# #N$k@V6-8Ir)"q0dfUу4@gH"GJ'"9H1r}"۟M0%e@Q>W/]A3sf?2';Y÷J@FZ`h %:B3хG 0.y5Vs]i Nr/gky5865VsMf F)iE@7(2?ؽjNtL`.a%+eZJ25g>6!͊4/ZqNo V\\4~dݯ ]['`QǮ`slxsK7 %o")Sԗ7!8&ї Zr O<`siIZE,R݃dZ4]y@!n Ԟn=?>O9D٦™Y5fV~5`OgG/{᯦'.kow2YR9>dnm',(Z#Q#lZG~z5].-9YhR !Ǫޑ'y`խItj ҹf`ZL)-}UOgU4Uqj gΠ+Oǃ~ }sتE9^k+i^|ExtR5<1ai(P*ay?6iUfJ#hzZ%Uw^-8 ;R ֲ&d\ձT7exq%V"k6D<&)SsPPS!WeƯ5r/`.z@p,o)ɚk(orPrapÖ?jׄߌ\]8եht.b]TЕkAҢ޺Fμa<*'Rťizk-@b/[*9&xށbf+K\ Xo\$Y?wYp[8#$#cued<~6Jlf9 'c'*@F]`ʴh1[*H =^,mzt|r4\<WarKr&83zP"[L8ŋw#EYE*%LvZ U=Յ2'Th@fXT8B^270qd{Jo*}5=2\ >㏸\x3oJ×kPOW_|M>:6Dʲ9JwD}vMu<^ӫjL |2R‚ <CtmI^jLok/D%; $2͉LhL"\C* .F= 4zӦ 9POl'&"hvVqiU\.kBx.|35]' BQ 3N}`Eg%dzdnW&'^t!ZUBي_ո.Uh)LY*&0y*xK=L&`$(ߚ1KH /).XU "e chcҜ4.Jrv7kʯ~&u T;fGp&^ _ggw޹ftX] ײFIt_3N;nj!5T52c2T3|fqf*Q >"m!4KM,`n91z8l|%*uiHJ`fy e{_Į@X'xo Wd관x4?QfƊ8eCpDɅ@dq~]4AL1Hѽ 6BX|o%nq8hik j ~_B#I]gkxq>pȕHs\Dfѕ^l\eϓ*9K; f~iuƞ"_P}YD|4:d0̜E?D [q6lhw+WCAG`F(o(>A4ov f.EF{/էϔX}dAg;(OxBixw4N!آ#(دFբG,NI}t%|7v25J@_VX#<gѴ)/8CT,{HCS%w4'?d H1k7'K*KWPF [0.H\g,Uq4n^q $.3߫L 5T9Nzg%7Hˋ)xtp|8%:мPE{d>@Mql5sUq*Z-6T'`IE*y Pk~ >, *KWYjU" @#N;Xyۊt]i\tsm|2?pžjvBƝ+{h6(v@Fu 2 _+\Ahw#WA63/{i &aKeWU_ skD@fkj];2ugEK͐zyd7.:FKn=K15 α*l[,VXMU"LL@P=,Ukޏ{0'h&z{;).M|r٘zՊO/FO$Bبy>fPMadZ%vh?fܒǏP򜞅UȎ7X珖UD7aP {Ưz0ǐW8v>u]v* i4\Y.:X1܁wn[J +2J( ע㖶0! xBNjv  o)!Mawv 'ؒbt_ɠ%zC{p \܀p=27BȍxCPa!6޻v35% l{37*< !j8kE3g)6&bM(ZͫPe+$u$'g!bMPf鯖^I4dOK Wjm0$ο{[r`@j'!:xMHM=焹EبOU>^:9b:Tv M,; >2LwcKʭq\^s/87B,03G QHbRκuJXlWGtB餩UPȄ>hM@6(d8 hDN mS۹6평E;ꌅMɩ|PPKʱe{Ao}LSQ$z{(zt 52RMT恍ؒF]3 EMs8.;WU+sɏ:ZKdch z1X2&!nH<3r>Iyh}9bQw\hZ77@= Cҿ&1P\^]<]YWڊR+"t=?Y W ~ixS;|.3MDh}\dv{Kj/Ls^WjC zcp?͍1T5"K 3hJX͸ "V|5l`˫4HM|=2x(e$# ]a"Pʶ,}'$NIb2Pu[p-p^6!NT}/*]rI\!2NaƅŵQׯ0W=_-CzC`h0IV"{sDXu 3![Bn3/#.r>/(qN+07-cgApCaDk$mD$\sĈF DN{bO_툘S'Hă@mo:6hWK`\=3ϧ"C$H`q\n7@4_8xw$}"-} K %\ZjHYSYb9.sxR|%Sw/3s"[~X(#.=IW 1V B OW4}P>nғ>}q.nň 3(ܑJpY3SV!Tϵv9~t8+Cf.9&[8PAggǸ]!:wMa43vr+=%ۣ[ u ?xv*!\Y$ 5+vsr 2c oMÄu|a1X]b- 3qԆDqXI^漠+UZq  :1ho 7]rzhq\}R_.ڠOL;Cŵd斑F:Zfm@K|-XiSv>>ɦ("|Md=˹lJ So?y O2\UMInv4T֖]͸48&H.濥m+|O臟Wk=l]`gbׇY{VKʕ* CL/4[N-+v_R뻕$-{ib Y\ ;7ʩBgPTL lIC}@׻9JŽz#&O_D,fB&R8z-Λ 4wm !ʷբaGY# seB~$fn0 ܨBٚ\/4?'_uٞ'ői,#Y e5#̑C9sƸk2=dG_vݷ"O{'rC+mW4MN5>xP+P_a@#⋢NC!Ub 7ҤoLeom=Ƚg-^Ù.3X4z Xwkq0 g=ߤjTQ!|M2VmupV3u?VZnݺ|M@aU&H8#;SK90t!F2`xvyw_Ӥ@NwP‘iAX-4*cII^eT og3`a$Qd >>V\zt-^YIi F`V"jpm@BˈRYJ*;ۙ@v߈=fWh^m0&G B%lu.ҡe^,#LߋJ^*eƩG)H@BPz{{OEwkŸ`cۥv ")ynR,ܯv\ҎiiY ?U_ڊ3x6 NJ 3pQ6F |C P3CaH.E9@x-qd"cPѲ1K:pО .F Iϱ51Ĉ+_ĖC qqD96px4Q[ ppKj* NJ+vjŴqL (*W˯vd\?ېu% e Z(IIhv#6O|k_ K.s|wIkPoMgxҮ7{J*1l 0D\QUh11{bjp?R*Rʺ惂`+ 7v9,D<ʖ MZ9ݑC?|eE~fI6|f l};W_ZB* ?5/T̀EQ )n}C萓ymѳ,?H2$}aZG2*0(]rQϱ{֭|=$M-ޭx9wbJ8ƉݢP+R: j˦왒2& D5 pӫa_X=̔=( N tp%q݉Kpn<:tyVQ&AMX昛ts< T3UK#Dc㯮/카aIAj&i[5 Yl4}89!.!E/=۽GArᒗ(6k8='?ťwmJ2 G,C^4L.qCSNz9>F``6Q7I.@L8,71 e  ~l=W@t'i#\!WAZrPYN$]%,(f6k@> (S(J9–' Uح&DB'iݎ:މJ@җ>-vqWOP ?O#+InM&3FQ0x. zGn^m}k'NKM.4Ny)X\Mj,yOuw-#ó Ui7c[b,E gE{\*1<+ѓdF*Nɰ  YcyzsIgt=l}/HAS8W@o[ Z:ssO6^jW>q[mgT~Pk0ͣ֎xxgR.njȀܛXnѓ|xS1i`*}verB hTѮ46{-[F9;7ĕYvj5OJW,Y>%!fbF:* So~1`BRL$-xD DJ~}ޝ(a_U )}ys3HI_FXO_G 9q G-)] #ndv0慓xs-jb&#(PQL`4}ƛ? n7'H܄`0-W=|ٕw;'Ѱ$f0ZT̡aG4 *E9*`/%w|tc<4u0U߽-+lcp"BSN%wp[uJeOB)Lښ\D %IՀIc:WPtGE25r{=o̰5.HDžx{loݲ,㨽!wS8 ΍S%4϶AHϨEkStWQwi@J\*60SN˘v2XW<&őhfr؊uMs\5籾$Lmz1#(Su2h$FeLcX̄

hQLW)bZ3 Ҧ3F^_Eyf˗Dj>(g, NFpcDdNYY'z57lRU̿^9ߙxK78#a~=sKծVKCA\p w o}f,u7dDJgMO ܽ%SpWS^_fuEHq{خ0i IE 1/q]?1Ft8fy{z"å Gj+ZrJL`#75:$NWhz~͔ptQx俈f"cX];n&G=ƧR3mLu6LY(АXEO2+qTϻuFui`"s{ﰥOc?}śipk7T~vPVbyɱ«779qzE#|6CmǁYU!$ZOT`:v{lcΆ;ε#sutI]-FH^$UnwƠ'`^=(H)֏DnZq0dn-`=6GfH/KP2XqW!qAS*3y ?2U_t+ET ^;x.?6(g!,M~).4Ydaq?$Èͤ NA G{QD^,8F.̴<ZiF^<198)d֖W3Byt]b(:6!L&kޔk]/|F=~b.tq.~U" +PtrYFʔk-:-JCڭ$BeΎq1z>ٺz~%#ȗje,T'ޒfm5t&AA -D=r`_—\[gJ8c=țLsG3*:Z.oK{718AQGxX_-ac#yDh sDsAob/;̯#pMVdsƗ=.>i &q~R0/.hsO&'cS۬}guҩùL, vlgrܠz)G"SwuZ7Z,|ejVzY&:Q0a7A#B0_b .PnM}*nImIuw@yJ H5'ZgS qo Wm*<< n&qeUe: )A,V7w3Jօiw$~O_K;3-9= E(ps1G w>ޯN.A3|~P_$ϔy=Lҵgs|hM؃RM.lڷUϛZ֣ߥZ6@+V%f_PEpq$MI˵WV]u*T$c)O*͓yw-۲ e.m55 G0]3m- %M=tS7˫5cK[k E`ՌK—M ņ Wt+먉f@Le 31O}sv$x,:Q91<(A ;/!Nt39mjY O>&xf4y0<)W☍!?*10P ܟ`'ۤTϲ4,F7KDƹ_>NOrQ>b2vlr>8'7Fu|8,C<37c[RDW.(x}ͅ'8ۃmluzt먂d99#垌3&9ImjwYlj:2lkəg? Ty~RXHq+(pNO =SAsB{'8ڳ0/o7;=2{Ê|Lc 7?n\t_PeJy6H)ԺU?F][QY=7@{Wv[i2>i)4;F~؅--v[6e`IgJzTKZ$ƾmt.}*kz5hxb@tl ^hCGxE.y-o cdZIMB'\XwpٜQΛ`j0[GEO9xcP͵,` o\ \X4)]>NT=1DeQύ+L#9aO<)aN?-It\S]GcB2׹--SJ3GiC&Ka*_vLI۲?M>%f 8+K_JK* ae"L4&L\m6軁<=cYrF@0wc<I4O4BFfvx}&r^};w>AoW'aZIAׅ& h.(ëZJH7~r#D[dujfƷ{2WCG9)+ˤ \nm%<\iFP3 ;ЅmE@ݠ問}^MaJ@QxmjgKw7gc>c=?:ؾաdAŒcغ:| _y0z0篭GT7)1 WJ^ԌЇ.xn>70),fR74Ԉjg(zMmu>UM dj3+~W n*GkFc}pt+Yc ^] |s7å؛\CKgB. 7dq4U4ElD񁤂!e_$}r|IPŃ  w z9Mw6R>%\ul,Mx,Y\ɑ< |9܍y,Kfo1O/+ b5zxԥ ma$1cvvreYv Y}Ph n ,ٖX3&~k"*vhj'shx,6@yzݘq&V^fҰ_$/36")Z2@Px6D k]_{$ B%ͭhWned8>:H4`vFLck rT-W3ylc~83ӳS)'ƔydNe8 3_iT̑g {gũf>)]0g2;q^%xW. =2"[Q;N}j[x0S#{WZSg@w`UoD9)U3FP$SJ85Zϊ]h^ $OFgY AJ#nڌn+`OMsu6цh9״5qKJT;76B@pPdpp`Vgأ80O=YIΉQYqỏ\ vakBODc[WhP4Qq }]~80F¸IF ƑevEN\S7J{ .Ζ !htZK 0˼X>vҦAOObUO-28Hm!KoG.(#:}Z;/tODQD2t@GE?3Am&[Y#.y^4ȐHx26Fф}5}EgJ'XƍZ2!#FGN b2 r^=p읧LWS-;I`43`l"]՞:rgӢT y  W埗y &b-eNUx Iˌ $lnQN  [bbLCgȗ8sX^rQI`jY¬rT Ү 7]9GMSR |b=xʣ@$1`8E)pZ=:~Ϫ2E\$0m7=MnAzGJnk8Lq(n"Lj zuɯƾ}{#һOŬ3X͒)o٤cF48cYEމZ`@7ӗ\ Ԗ!?9o5S)&/2U~7bBe8NPZcKSfqtT9z@5hLTqCtd~N0;YFo/'fb= ܷ`* (}?m,5%*D@ԞD" 6w-kaV×NB o|]4<H a!nͫn=SB漐 is+aŒEO_B,=mVK]Gtb;wB*.Z g[َ "'T ~@q EkϦ\6^q{U?(3R|څ 2"^8u-0n@s^ٻүC`xagF|KSHABA\N OYhbQeYH~&,DcuH$F,+V=uh/|* ݵ/ &k| m!ZʫJ,y?)Ki1rnлl:uZBg4"UFb_?(zIFVl)΂,T`ǀ~" "Z>Qz.@PD(xJ 1h_ A]a&2biA54驑TB85and[FUn91EYwdȿ9Tnq7մ:k}Ux#܃ U\U0tjۄE͟9G?šI8ki0n$~}7g%:J-3 ]ty)ʆ=nh_Gi@Yuuʃu/kGF`6}le( eL]毧sݯ w418R-c^7,Bt1=.C9m.:vFHo&_V' d`B}r F -ⴏ{/Xh*Z [”|vxMYS"Faez KbDU٥2֫}V>[ȿ^ܴgl9=Tr7 >t-FR57Xշc׎ZK6v\޸K]洕av<`jp\'R,Aesbd\%]bŝpf~J_V\|Dt4v!2+z48r$GR6z҂@L}?JuKAb|zp:(:ƞ_0RF$OҔ8F"9x_5Ժ;q㽂B53JnYL.`U*r߱Q6|\%r&TiQbV&`P0Ny :i]Y'R !J1~8E3u0i6%n&8 :˒{],xtIMZ>_Hw]ȴlٶ7. eۜ9El53R.N]x6e`z$ -:st>n+~"yBQÇ< A\QFdQRϑU==N2 lT Ӛ>nII=hWΏX+םq-y\g֌L3تczQ=\+SƔ5^FzH⨧.C٭ϷuiػvtYU3ɇ#Hb_1&ItHnSQʼnJ+b(Fߺ N}By憱Yp y%ѣIlUJ2h *vO/Sw-}_Ӛ^4[#Z]d6rwǗ)j6hTۈ!IYD>}3I+Uq.7l28b;Q88v )t7A!ZëYVQ:=DtRNJ)?]z=}ϲl/iՐb<vv!?S5H21Hgp %[C 6 ;H> ʃʹx?َBY^ɯcGqb.mSxvhSH\ -ef:brU 3L+dl˯ثDݿ6Dr.r/=|ȐA}ndo隑̓=btgOCl"K$zTUL,!{nY{[[;Q@]Z@˨ ם<%p K>)P٥ׁl3c"#z?n\ 9p#; X70S}( ϼd' bQ/j&ֆ sO qjIՈQS+fx;)7wXq  4E,gda^3s1h6f5/!xBzm={`&e/g]:7IwϰhCɸXM]H"T^m/qQoX0GD$`+'ي.,xw):6l,;3jZ5q۩mœOaOaMA/K'sW;j]+QGŴ,1حJ (Ҿ-(t41κR M/PXvn(*, OU;uC.z(6 K6tzNx]/$ Iup6\\"0 F%%s}7Ȉ^i0Y[ǹ)-aKG,8D&$gV:'~T恣y C\ !Ul>IBל-dtnZp7H / ڶ"T 5| 2gp}rMp"˃I4oWa9aJ%½,.~[s_Sdvw]Q!lS-]Ad{?csork8J#@ LA&fՈtI,Éď4;jϖffL3| !\ ؎dEݵ77JFCLʒ"4S8C|%Ʃށ}bwt +4$Z+p0v%ăog í8`ML&d_kK So? 'IHظV's)s r amjCSNxj%Յ&J1|I*g(q~ 0IAK4; T>]Iq)#8FLo5g|B(!ryZ!z^(mlMcF9f-(P]Bz̾C.lrd=`"w2j0*JӜHel&1:xZؐ4A|>+ƸifV7˞ϩ%sy^V6a'ՙ']L#ܢl@V)+^d]_J2mȇ0b-3|g~nt`vShD-A|cb0Cs%T9$ eʃy5lVolؔFgcr֑𕨕$&Oe 4E-z9ݑ &S)}iZZ"nlM! = ,&kRLn`<$D1JṢ/ 2 zȇ.ꐆ ,3L7rɟ\΢Dg1sS!] b=a^c .1 :ωD*|gEWhUDIJ{-'aZG ~$6Z2QiIU'W$? 'EP~˶pHSfҺBk>-^ -qPxF.*Ղqȍ\G4JGc?H5w j 1\e/95~z8gC 8k2qߣk~[O1[-:c{> Y}fU7̿ "&&-dt>Op^U:t%XmlRA.&7=)#9)E^v>KK=_5O2iDyZ-ߦE~>CyR,*J5H@BhH NqW< /tF^a#W+ʵ3"vVh#u˖5ֺ 7 Dҥǎ,}`{EAd D;չ?J绸4{CM5εUlfZgBm,-}^h<[ss 9q|?W!Xٴ ~SoC ?-$"U~a$&i t-qÄ~nt`; R9~L5 IJqX\Hߋ#O)l#> DcӦ5-%9 ƑWSKtvWN}2W%lF 7D!]&;4Y1(`mt~'N,y`ern d ::!]AUbӺՂ ?f ,ɇ̭=:9M=%+zL= j%sahfz$6[+fT ̮K!xJ @kvɶ>6gvM!q$=d`^$1'V"&wāDi(ln>X@?}-?f}"jn9Kv6;y'bP %TU'{G3&f)ES  p<={v9ԩDǣtH:&p: $?͛܀KDs2Gy{!Fvn^='j*TNrgȏn}(EbOVܙ_3HW4Ъ/Qm`bbN7",́&Jm1gT-+/A=|?%@&zrO>_&?'.,XJ鮣9w^ ŷG3bͫz*:ui|WH?ſhFv4{u%sfB u@aOP I{-H̑cP4c!2rDU+:\iӃp8ie L8{f %IeO0<´~qn|M c \RPFቬ >XogWNU>W ohSH9N]>gU&aՀ#xZ+m |Ӎ$Sk+݀ sco H:6i}կ= [W Ҏ<r 4IM~G%$HEt-^Ґ$`1iD1Fh:Ɔ2=e|Ix2gPE?o5=&E,w < $tWꄃp0Y ;r/kzlQ{:ܬL@?v+={VxrCB J%kE bL=7S@v)E[u <2D*;`+43)!/~"$@ )yb(3zu ^`l1Nh5@ g!xS A!%o:p{L_@m -1^KI\ ,Um1Rҫ *Y@<$zUڙDڢ1(U" ;PmIڂ$^ƥӾjH4`͡)O0a.H3]zlWVʀZvRΎ#ϭ{u`?xqb?4qi,RYrUk1SSv<tsXB6սMWO~}'G_cA[xW>Wa3Ɂ(Cy"_l8KB܁ E@3Y@XJ+d(g/#,SAxjO8&zURrn5F%׋Zk%Ƌ'Wԯګ$ i[O34L!ĂXKsxM@N+>+ʊrd99;Wb&cĄ>8V"DrRg4m&!6uC]$Ż_@-Cc8VM"ywy a#~^&{9͈h.a]RC;G.hrrKf_xXv,H MxBH0b!i+tc *ʚf}s?UQMT6jix 1Dwz4|$z+g\tL8a 9y&n>kaZ'ʲ8I>Eo[Xb8=l8rPl1#1:J?vJKveC[ץ׸zU<~7)k}VS~JOΪ$BeSȵh_4[-~iލqzU_ 􂙫񦭢JL~kG:ub6N3qÄ,0} `(3/cc,ŧ&; +bc$K lnSq?K܋zh@sÁԌY@JڄhL]Ν;|;7!C@k>cW+_gCuX! aX ͔:g\>YDUd:UWSαڀK$ԋ8!5 絍EF> ›Y@8NY=zZ_#IJʁ5 (QΓvkW_dJp#kGކ}\'O7ʝ4vf1qp1DY-M>V@.)Xλ41`ң0"]P/Э'bl\PڲJ>Ty^㒵ECkg(-0.*\ vU s S j2y XNq68Uh=c-w"z-]]}'4Hc|TTilZ9yFnū!G@h4##A"ث6ٌ9$ܢ}179`H 0$f`/]Ml'hfJ",b? f回eHvAZ}xMh]-D_)Uʄ]ƅn,tuو=7Piƾ.},E?n8h9X;%͕-kr! nLeQAb='Iσv"v*5CSp^M6g0Ou՞}ϲ^ R~ul[Ӎޖ~TYϗQ"Z[wOy +Zwaod/C/cH&,ߖQL!4JPؖ}[umFKIR iP_Pvy.oؓjdNt \^IP7MWn D6N6*\Od"%ޥ>F!\TrlCFNCimH׻Y[I9$ȊaJ+qT* ]bU͸3+@qJ{fii>S +h N .@,__"'َw~ڑso2'Uٓ٦XQDH=h.w8I(Լ,"bP|Ʈ\2IV\>"0Bakue-kmL _# `¥K4rI}6\q*V3 7VY` woE# {7 y'uyo[k%~~ZDc e>#zP\t;[*UVHDKrFAŠ%>{-#i! 7';D=.,uI.2T_4rj>ZBt?"G*?[M Xt 0w %<+(XQ J]\PQ+7$X3ŁZ ʱi.Um+8C6="YV"jYkxڢ1Cb z*!=缥64毵ߵgz1kISY"E Tf-Q Vi@,Lc\Pl[s%;ޝ;+Ø|;4USa:&?B;,=ApGWg%U~hښ1qmjO #ٸEv_K]۫d剦e8[R V~RtCOI_+x1&_\ \ CsRfm,6L;Ђ&cS5Gcue NƠb{K}COo+7Y2p QBFxK}>= 9.;cu-Ѳ#{`f~:SGio4>sn^+Y1*[ZE<{YXl3npmzN 1pO6<8ݴbubWN17:mqG@Y1( LMjYA!YGofolwXE59rɭB NoRddxg6XEM+g3a ?mq8&-";Z5ѭ1mW}O[|FHP  W{L?,v5.f+36MpbP3] 1 \Ղlc_ hmW2.K)TO' )Tr-@k$+cOį .$c6O\_*!2=`5yMgV``Z ps褺vѿ 0qlM{ /,n{qE~MHzAtGдcr(^q,j^[o"]_I |5a{j#=U:DOr3&u6S͵ZtezNg#Z mͣB^dh~p<̛YCqHv 9p0n'jY waQEWkZPb.ǖ<c dԒ5` ?sN4D^ m-wy)6q R*9ޫ2[Ln[]^ !wk]+!:7;{7As@CǑ4<,)^pyXq45VtiR1QN-!&j&nկ z9h\cdm*Dck&q)_j`;6Mf-h:GGYM7%PIN!k|S~w^7&ij(SN<w,nx@ b/XOfU4;#+]H+x]rX"bpS<{Bj0V3 $0kM.:f>qm˜p-aeƲ/l+RoH ݵF 4>I Gi gk^.S= eƪ owd늗F-;C`$NzmBf,߁oa ydIB;n,<㞆253= RЕ9lTn0Nٳ\`sy"vzDaawX+ŋA?{'H:ƕ0%.n2z>@~oX>\Q:F[ECE:2h>4pBQ`6~ʟ5#0=ངkĘWnϬčiU.jOw1x06A\7z؍p?<͘IU\/kfKXqET9_u mk3bCa%{0|@Y)> 𿕲6.ݎZ;dA뻦VOO5֌ 2%X NUcz2]r2f_QeRs^-F`>'݇QpC6kx6lXbpxG6WgÿT(|c;_׻ᒃCʶtֵ2N:!SJ q" ExIVS\Y}vw&XY!Ah)ϑڜqYqKaw~GYv8Ɓ=1"5eOk@R9͚iپ,'6?%9FTMna@>E! G)Zev\X=ErYbM9RuY)2:ݢ(Ď"1F?\.:QS F,L_DqnOIq R%۩rDk, [v|VNvpD_e\yUqFiӥ!j̯ X ldT;_IEoMa!a'3#EN fcTu^NM<)h 8q3<أnlUj:E;M=mܙ5׹+X~?gb` ͪ# 6*WNVR{)'J_0a m_qK{I][CAZEӋPuivPkhn/}^h%@().P=>!I.KmHa"ebW!KO3(jH@#cɑ0 *\/W'M-UքKP.hVkIY5K0nQ,P! sq4l '2pB? 9;cq>nnpC6$4ñغ`$4u&-j=_[KwV=ϧe #{`/9eKio1<}Q^N.8ó.m ש^8 3$wp^QT喋ȇIV@i P3NGwq$`p\߳*a )M@Z6hm1y3 *J6nV?ՖA%.)o?wUc 6H6ёNb\QǢ.g%CT[!&/qe@K }jI6k1USa[.-sH9B'DΖ8elqB\eCa&ᆱ5l Ex tT J͉/ LibCF/kS#xe:81f,l#E&LbҢbuEat~~GrR wQuer/;h+GB+}mn48#F͝ Ű|z "X:d:O]᾿XOM^(ww>UlDv؂*{9WR6v )ttzcOJ~8 {ѽih6\UU\{0nin!0 /!^Ay}AtEo,G?IR۪$^908E\ fx wp@9Qoq<ZҎ% 0;Ke!S tf;]~HlckP,͂P1R\QqbOg "Jbd^kʆ6Iw+Z&6c }b3[sbֶc+LуZ?u w[Œyژueك-_[AI)1Nfjgx7WrMey&'>U`\{ #{ g$5|1<Ț e\yNanrʦE=j0t~8ƶÐm 5 r )RV!3v S0^OZ&k=7IKyF>܃m|3q"<2E [ӊCCZuPbT="au\94ϪK8=e Fd4jk,P ogIh?;2z*02S^U+GK|BI{f2%dc b)6e7e7<AZ HS(VR?TNحȆP$_bD%eoW3R`\|)c8B >ys=-!$;\5[+QD7LG;9E7 D%ᅾPn& }w נtlt%u.s?:NfEisœB{xSG?>Ges-j:wY"mmJc[]3j.pntq˽ivCe&)nֱg-&-y+|B'RUr[T-OxjbdFB#Pq#q>#H`C&8;9Ch]EMw bĞ%nRHX;m@XȄ b~awTzmgb%pGz;k 69'a껻*fzeX*sE)[keX_8GXs[(DM,6''z4p#Bz&{gf~N:H=KnW'Y˓%DvmdAZc `cf 9hfp:TkO*䝃%U5fH.`=Mcō翋BN# mȦNF A:wrJCwsH .w]P523_}@ϙ$5ˬz|}`9"nMs O@|[ 8y)aV?/'~ZH<_z^k˛m Hfe h#>}`L&_e;Ίk4@#!E8n fFDsf3>DK_̗Ф6\ZNL]ZQY!,&?OǜH`JOmm?0t!O'b߀$axP 0Gš菳"xjSe9"l*WjLw$)7Adcs:N17g 'gR=~L8 .N㎷({& &qQ(=Zx6 p8sx6㍞yֶLxz~*)g.hXIQ ,.3l@)D>(.-KlHam|5+UeH\`%5j/?ٮ%z繴 |$d٫*ِ`h+J#_ # xH=Qzmb_ hdjN/IWc$̟Xv.)sae$^n>[D `yx::&ԺG:5Z5wtb_LR:o;wv+$ҌSi|r";ɋk%c<7{EUuBLWWJ{/V[<en Z~iǶ^әeס rQl?YPۉFy)i<nJzF|=U 3zE\Շ0od\W3h+@ڣq>Y͟N@:3~֫΍`glx`u)z \O+_ױY"|}e_Tsx觃Mnۼ }lS9O~\i‡ s0^gMqˬ8j2D@bߞ,}2^xZK7gٯ9'"c@ȍ3“QZ31@lQeӮWoVMvh~y:%Ż n3co?T|ϟ:fnJ]sl_;F=Ya!߯{7gYO,տ[≯jp/G=?OzOEz(anX)usmu;JU 矓bɞ>ڸmi׉XAPto$^Gǹ]t\{!mm2{P':KKrH?wz:!d@x2GC9gىsoulEy9B jLͨ)nxRD"xQGwz+ ]䋠7I)[V6`g_FRvbqwV=JM[-}mQ\Uc"UNt#@-6;!(?[jRsY;)ۣ`Il)E>}-C/GXB9D&rݚ*']%Q--(qXpfmqF (E0.j`XЮyq2{c~d6'&`2گD? u#)͗Lhm;1D^]9t@ijڝ|ݩ֫輕js}HYKs0j.y)ٴjՄh "PQyr%2F=,KH{m-L;Czsw4})"Ý?LR0uGv9W]t34,H'Rc <2:m5%܈0ň= 06e6±+@/i\d,'eSÞA()se9<b^x6_Xd$bY݇ec ͎aѶrfoBΛP=$s; XTLM(>~ <2i'23P>H}AvXp{>h@>*<d,ƛ{E+s7yex=bb;ՋM'xQЍbZ@\ɓPWlήNeؑ xJaa$jhB6k׫\﵌V3K#6qi~PI1biz[-=IwXA ␩kr+?-~IY匩󱷣0숍=±\M5na:*:U u@L seV'k.o *Z ШH9Ws>ML c (kd0w`GGPH}M9c%`YwJK-,UmnU.$aO55zִe-Nh(gX|Y/0\cުLH'J牨i揁[pgWV?㕻>J_1D-pZ. )lY^cRUҧhC{iDW&pذz;+I/4H`rfAsʍm,G[N$EcA3ژrک'#QP88?v0% \uU #ѯ ׻/}{؉h(_'F|'k/z1eS=F.N;i3jHJNnE˒eP헀g'{+XI F-%!(ƘKI3b>jL9L!F]$x;l~Qmӳv,c)nl" tl ˷qV6PZ*LĘ`J%Рx@~ >to_| )eŌp{"'2" 5%(㙹P H#2l+r7|[.yA.9L9oX{MEa=QDc6bVw}3LӠUV)HnqҙW;&>UDFI5;n4="Ÿ i&"~y!W^tH6,/o *8YV#?ߠeȗs9$&j8(NE]J}L_Dl!-B6x̰Q^V2rŒJ]9Zp5W=ϽFro!*18ɭs4=jX=F{+YKOබЁr_PKE0+RQC1TLTqTfޠL"2t5XBB>mE[zcզ`7Xܡ }-[&R(@ڠ,Ḫ}+7$<@kgjBoe ιBݗɁO"[]j.{zlǔ=rœŸhͅd 2b'r :- b㺗[!?j((UV-m~e6]Qj]3AVGZ.3N< P_&aXF2ZMr| 9ֿ艪=21ZEnsbN-QҶ;k:?6Ӊϙ[IBi#N &$C$F%Pf>M%qn-V _9N6H6XgA+z˪ϪƕwDN79{֠şOW=(.jEzG>7@QA?a&[?ݒȒKAKLm _oܧbuIQki`ȯiL#ۿ  F-gm fW`+|pw30ha 6ȅl/aX%)¥h#e9}SZc6*ZRi1՛YDЬ7fj 9甪XaoixTPGCED=OcM'gTDzsbw+9I$>a$c7bU+Hޘ?+qUёBْ[UpOľ=  }tF Dmw<59{I \MrG^#$@\zivvBeoC?o NW UBܣէOAmSi4C&c;^DnIj?!"Ή}t[x@j̮~|p;Jjf*cK^܏菼|lB|__X[I=1#REOo}}lD$ѕgУ[yC-T_2N%p2#)8rjYMPJXP6动Ώb -*uZўڏ-vc r=kF`*Zؤ/)&OS-b<(tOj~0"9Z}f?/7ՐS9o@3\ye"ϣU|zt#kV0#πjANKYTP<.Wnk< ժP}QsE+wMnC>jEC$-  JKRN߇ФN1qO CxyCw(@yoZ k?W#^( dbo"6XxTU:=9'%{L˦s|w6-$ɶ|_z< BP@9Vb Tc([R '31ϲF.ao^UaEqv$ٔ-S(]*  _kNhGh٨1^^|/Chau/Fh0~G[~ڨ{1LKc"6TdP % WI[n*?0mO޼(WN24_H*Ȗ6¾-+brmwr_ӽY~UڙQ)e3^6*F}bƃk>DB/Q'CyqmTv!B "cD\Vj9xtI)/ dMxC ]GE]3Y(B(}:Fyd/wa5%*k/6Mcn'W^EO{-͊~%d40]f=.Rm n([O[F ]J!HPQ| >ӋLA*hGA?D,4[}b$*R@5VZ"#d<<ѩvWxGm2 KQk \(aqγ$4KNis2JZ?du&JYPC+GR=T~敡 S?Ƒ>k6-\"BX/Vdk| ATt$UB{p@X 1|l cBGC4pM[w|ػ6#vX#VxZhoh4кƱ8ψ{% ahHp:j(ߕg{e;m'<5P^A7q&4^| Kg-'-QILMn^2$Z>cv7!V {p}帛{8f[bB伢~[*IY q@ [t8-i_fP^MVS$ HepDYڙ(ù;F 1Κwzґўqmz@ֹ)K7v2(LL5-8v'*,e6&_>JUbG>Hw${jB9=g;/٘c~BfO3-9j0IR{0NwGdT*DhW^Its۶ `PrqL(5@0-7'2Bx_ zf{.kә:`L jD\5 e۹1$ -ݑ3aH"A"$\*wdTXW`e]%|2ߋxI[,d3h1q' # Bi]g d ~aאFx  E+ mdmvTar 1,; f@,6~($⬨[$/Ttu7s8OHd;$Ij&/edCMR+`)H%Һɑ佯 UL_$ŹS|jIޛ )~n%WѺ،<9j#r7'4K19gxz܉=HֻB[wdoSex[.Ļ o\]7OޥWrL82"B. 15npJ\H „K*@V~ϊ@]؂YvNϳ ;FV[-~!W9ȉZ*,gT hV_kjƵ1u`k&}&H2qI,qW$wz㌘q:˭_̻n3Z;vhXijG*l^BTi օEmwJ$UQrL-ޔVkWo"Q34Ǒf$͡?ʙx*U)- -d |=[OE3%+%)] Y H{Rm6xMw1,_ߥ4cp #bWH(Ұc2tTi9"|e  NV()./,5ʇzr֟TgHHD\ǿGiN,j**ejniJt?l[ӎ 'G;t &et-–Y ͆GB] lM utxH@꫄~,j݇E?G_^Åtfe=wSw \ ~_>v2:E 1]5'drcfּY+ڙHD)tapDy;pbV[P|?|.nY٫}C[5Y<}M^@'v/'o9w|cR𑔃Z˽K=u"`n7=ZltΖ`aJw+9,:H{B s5gDtƘ̅TQgϱHԡE^DFth <ۻ0ӽtoSkT u%6voza}c+WE=ѯ1Z4߉XiZܝ E<^5 bJ h&jem&1f2h_kK )P3H=9{*/+gaXDyM|d 3?l okng1 : >SYTX~k@^?x([*-P Qğ4>1M `74gf4-@WvOۊ7Ry75)g~yC PÏ {~uC `N[9/dBLD]7-4,wc0\w:~8VѺv0y@˖F2 `o//Pb]%Կ3]twݐ62I#Ζa/k= DlbV#s:pV p6[JASXLL+ggE0gݓ6R)Q v{TXBec^KbdW< Ek~,Vz~Fd_ \u͔k 3|WOBD[7ѳkRz(ƄĴ$3g.%a(M;[}X!= i:ItuxJ* H1;7ߔLS} vdΚp-=JĀcX@Q06 Ia :?)SZm ,I71R>Ev1xIm_D0!ՆptS)iHg*v4`>r.?Kl;6jkkĩ⏎~'pZݩ7¿aH7ݧ?!$kwK*ݓv`+Fܟc,HȖa4bRQ$9i73SUF1 E `SH1u cO6L\+59 wZd{'߮Τr"Kማq# P](5qPhjֽf^59Be X*FAa6oɄYiS-3q0\<ǠyH9Fh_̤g9/2(N|pc{t"t*5l n.g/gr^|ZBz4aKl)Өׄc=FX8lFNWF4q$ F3X=IqWEIݍu\qI֢T#WZE%#1e Z?lуp%Sݦү8K_7a -2up6NLkl'xMm9w3I.ٿLA4~wl͘͟YMݷ:r봃d^NYY,N4:.HHaϐ]Y'IDaMgJ%tD<`T  LI l'ႫYV/,{Sh[ZFr>+NyUj:*mvOgw>hb 'k tZd+~W\ ( J7h]}Ť˫ 0Q"D-, !mˈ٫ a<{|g+N+])f R) "nOd"Lz̎^Q'mbTO[nJ-9?) 8)YP|چz:-zoBU;1,:qA$皒Ɵh'A6>^Ņ'ՙ#i>M^wO KoAY2xM Ԏ et5^c0zVxy:սIr0E`o$.4ޥ)e\7@/,6dBa9T _g&jv"5ֺ!=R_b" Ci9*C~vD4:U96L#֍scBIF&qNΧc4ȝIlb;0HL>bdL:(ThR6pi.;AD-d$ oY5l9h,ʇ=C <|J4T>E7kDLBVrV0a /gͫEcbd0)|U`UL'eHl6w[ÛFTqaR%5W%?iJj`Eo"%TY0lFiSwj!ౄ~ƴ)8 }yi`& :@/7k{˸ńQɑc; ~J}>HNp(s8'~#\glöB`gOmmG4B-~?/ mjx!~ Ӝj$ h:TUN'ڤEgCGe~VĻ1 MJ Pf563 ?t\x-&:(zIl@8k+;%$M; .KaB/{OK;2%f:e,cΐ]#*Ƚ{6v)=eTᦶ1C6+l R3έf:{?|GXM6SOW'k^=H'0_A@qE 9SS|dF3isYoP`9IFZz"<~<纝L̤VMtrJb;]όj_;mLdh1!0p`MZ{ayyv0&k̴P5a-Kfz S_iJk_[޴d&mxm'z)Ӕ0sI}rO8"WwF!y s~7E D = kޖVl!`4ି2j7QRS$@^-lG>8[E79)gŗ,׉FimLn׌L*IEHԙ;Ln EK>#LLM\s( NUĠC@AA.6 B{^1n7)S#v@e,eo:VvUn4tOujFc>8yvp \qЮQVt0.\ "bG(=n0TS3K9"7Dw2δd|a%l $h"D6 &D[zb >$ZM I R]$5G .ۑ̿Py=k쏓 @lmeS{ g:%fvKDNBrzϚUf8X {|{J {]0j|#sWSs5aR Zgw_Sy܎FKh@``NkfZu{M D2'T (3{mћ^:(NJPҙ_E+ +K w~^|mCQa _cB=QI'tCsM:ygu\nd%4jW0a.pƍ<+Ɵ9ҙG;%7"Qu%Hs>`)SɩU3\>Zae&7Vy)8*aHE)،luZXS {>MѮ$HZvQ廱]:6+# P3=2ȺRNj3Yy"[NC}oXǝA1c9Mm_<;k+-d!L(K)kk8Na3]׵cAT_~pNe rX/SxZ M- 9X8Zٜuw3t]\#<gs4-:Ӭ6K Z7\L 69ͥwt;-1f{xwO;;|>\A&(csrYl tj88Ϲ<[0J3Isz w&G#6*>&:z$Q.)%E] 50=L^bŌ S3ۊ3jr }'fE ͈VƶI }~!o ($a u3y-WBc;뭗4׍Yho,Gq2F6E89&om4oȊږt!AXw!%aBO?w= Bh$ksiǽÁ.&2B.`M?Z@p?򿳷F'dQs‡S!&9~1VӒ㠟zʣߟ¥%b.:g 38ckL^ ̞s8BuJ~wGa`Νvg`$E|ОB 5]RpUF 4Qh! { e^L\D;I!c0獦n\,eX:b~x䬍~cYȼ?S;Ir֭i@D҉:Q?8b=_40Ξ9Ə4/,=S2Y.qXb+:d_`MOzfb`'B/WS=6_ht+/a&TχcdOb[2OK&u۲>u@0l:K?_|۝\byI{S* @jFV:P2G&I5/p mdGEH)wr+KSW ݫRsqPS!0s.8Lh2ZY4,'teX,Hgo:+삪+Ř (Tؤ^_:6n--"f&T^"Ɗ^p`2 uG]O2^ <-h]H@հ+ގg'25EcQFm_K2@&jV'5@> !a>"]`AiS8TE.+,c\pJZF#Zi[0 &BhiQ3qL“#$?RԵ 5p}_,D,)1J͗ng)PLQdkvhc|0$C0+uQK ]n%xNJTȺ_j n^Ӗa#PO{O. xSq={?L[\걓'j ȧ ]ȵ#Nls%-2nOP@SW '{VGr\g`K,'v) D[*iaxQ+~fAaJ&Z`=j?лWBAwSVŸ*.ք@.+qd&Fl&,Ga*o$\/"#Ľ:ý=o5czN|ct&GFsXK6G)(Zm!c 4Fhl#/|E}RmZ H)NF־dПJcF??ID.AN %e4EHqG$f}XYl-(Ѩ7B 2H@g!MdAx8bKZLB c[12o}z&s8PeU/=XՆ=o|hyqHB3b&le~p(&zdl^rӃX6iUu< J;FhǻQߗmey]O]rfBKQ[#IØxZF=0Wf&=DN؉By2;{8cxg \E vhp4tz1 ܅=plp>ɦ&j`SK-uaN@1Ř.^#d%Ii-/(aO-)NS+(Zr*rGlY`ɐ^vNWoH233ﷶ*/% "̞uZdNx\ BUg:@ewUR:l~{!70vFƏ@p|b,9:+*!Bq{i,/'2"vڡ_$"Ҿ[ts_{0FvPHƜXJfn`]]*٨Yw]Q9^-h9WӉ.=JoUیg4TqS19O_M26A5CxX#v<}th.`uö̸.k( ,ע_e8OC?Fh &N_NvfjH Ix}]`*b{g]e<_^ ý B>s߂:T= YpĎC+0HoocLuJc'T;އv2_AN*  {?ZWߏHq. ˋ3UaŌtVdT^CתּUB} 5Js<8V^ ?{99u?تZM؇+PRgDL"#7 It;>!UB@<mŽML*U`%B뵈7,@b% peܟ(AQOH%HmX&}\`G F:]--J짣I/LT6iIr#ф㢻*( |pҮЯ)XeTM/[XtR莡3GtsxlHŴY/!b\#Ѓ eDa|>C] J4ɟ 8U2+h)('a9+%tpʕ0s;7LYN7UY-+?X=Pn=PN&,$*MyHgq(D(;,\t⠨D`{*Z^kG>hB)s Hc'?^/9f8(|HfpoÑm% /ra5d Vv4cG7t OYv>шh7 (_׌cHT^jlXlQD}S1?AUd{g Cz+S&̦ƏcQ?9m ά&5L2B*VK( 7Ro )#^p9BUp\󐗏 W!HMN`48}RFDKX >)R6oHp-<춞-O/pmQ <MZȝ"; {W%`e$;L^XS|"n߈lC?n~c~GㆂDz*u;pIդaE}[$t^eX N}u*xTbvKIgե *IvwKQimDZ JVGT.:U)ʪz$YA|]4?WbY|"emO5(\4臞C+nFPz3u}H]D!2!mqd"{T+3x(,H8s/ (Rv# *57!O6 W;_2xhl̎'*jA4N%0-ri>?/oD7&G!Q7M^^ [i줈%@x+#{' SUg;3WVVѾ\og?kjkVL猱nv-τsq9PN(X4f^m5EFۙւa¡߂³:YQ$|[cFg©As3 wYhj]dži`T䒂Zڳn|k  A {yctZeQS}[݊'_xsiӁa2!UQ?EBxܒ[$zlo¬&Mi!jy=]|kvl̢ALbe&Fli ?^O:x늣jx) C ]%<4E)!e!):ag^(zpY4tZYmY3Oh9%iЇJRR)RvHjФ~b f-'tPj䝮=Kg#Fa|_UI?&(J =XqL: )rqڿM*! .[R|˧_6&Q\uMBYF%(T=RAlލ(?[Ye'jnU5J,gd[2؆"~CI`:O{;G+Nfwr{ dMu/>uz&vhi!ٲ >ExQh4)``rg'MʖQ rV4LWN?+/(_1-$$Fݖ?+f"ʟ+I|O4]3KZDPir E!A ]ѧҢ6&-l>UFMj3e _i?<`GegGgЖKMi!Hzm猢=mڟ;mDlsԎIo>0`KmFbd /N@– ^$`ԥ~T};j4c͕c|>?h؀+t%㯎rIፊl ?>Md- y֍"OÜ`Q؛y^c#˴\#21jedX4ZP7}x[8u夗/c]OUlqvֹc.@#Dҽ`բ2ZpߩKIFN~;g6ֻkfr|4/ }08QR._0bWԭ>]նЍm +7ڕ2ґ>WJ׼㎥\rXɩЏS.DR߇E.\M'BOT<.$,9҆%i 1/h؉I:|@M@m~@nd Ք_%p_VƱAI$7^0ߓLc޿rj slXԫMuօ^>*MJ󐣐my7}Bb-cAK\Uja KeOC&)v#Aʼ(aA”C%ԧsOP_J^7[Xmq%U5H{4 WB{i朕R7iOhRdZbF!fIU|ݴ] g!*T]XA'5Wf4Kuv_R}wZkPYOۏπTΝ/1RJDvKAVS& W<LL!ڊ^v3[t7`1*Z< )ԃSpnf_nQ- #i1AE.MO7$ ^1'V t^kWbVXg@޲@9;[D P a?w} PA9r޴&(vr_o.M֞UA?Ra_>zfE X?l}Wz9v|Xa!pw"ڎG/LJ'` v*m HƼ9Sݼ|=f٦?8۸TP &X Eu{44eӋP s n, V\(uh F:µdu}VOvB܏8/| 5Q/*N \jLգT͂Pn%x'mHR14-%\ տ_Y 1Bq]Ks_꠰&hX2 `ζ^ze7#d e}YZp:IgJk]rT!)&nZ=Dh ҆թA*^*\Kzd5sO5wҒ Y k%hsC=Hut[QP}{(фB1!.XK 8;9$YC35dT#/FfAd6ڋ*p-=NyKL? AU* nY$9+d\Di,rh,>q*Dڋh:l.%)^5Ruק: 63nyMal"_gCWq|^l!n<ljb[F{/PN@Uk5da SH>l3: 2=k@1"n!$i*U0TrsH]ER 5 TjXط.euDaU?u=BI7̐! ~ Am&2*"p.Jy5f80 Is50xث EBHosRꓠn|s&h ]*eMCV KkCAؠYROF{^=8yhj`1Ap$pd~(7;I$脺O}'sՄv[gH G,b 8ְ cP%8u iĤڦ/Jd`z:k~e3S췽f͔{_ l {U#S *x/(Yݿ*pOIC'f"T$ȲUCO  Wz fVv;EuׯDMm>?H\/a(#8]=(&8)d_DV s7<ۉwJl>Gl_`?X;k;[63K8kQRIjٶ~Djǎ@LQQ:|\~ I#*5kU~h@ Pbh[KKr0ls m>ϤBDL,xQY𛎇k^MgUbw;ցT3LS1f3InGs~Ű;/t22t|=" 2I_)~ zHBP4CePw}㎆] !]4рj]EJPuv.c]Xr]Uco"VvVA'@+ч6Co\.aKh%3Qoxu4Y~N땵"@T`HifU)t_Epe;/8H]@ؔl2_}%Ȟ3Ixx^nm2j"}jDWд[s0e۵n6SEwZ` ?x(ai>Tx!m}`JC:dʭ (˝1w .[Kr٠tq3u$=g_ I0nhqޢm Z[ )MFu4'=Д7HΦY ]_+G\j,+.K~`7*8y2:2cs 0[Ɋ@AGEDT<د$G˜":?ZG}h|#֟_u0XRl0%x9Dh#.ЇJͼ&u(a,wXhOЭq:bZW ~ c *$AXU>uqG)auo94ٷk^ E)G&ڎNn(rg|X UOp4HKĹvA@Gmz{.ӟWG,EV<c#:DӜUQmHl7-rclEQ Ň V\וw*QGP}G&ܣ҄>M[wGjJwgJ8Ae."={KxJE[ ƄsY({Ֆ͠ ic<^j'tx\oh +vҴז䨾pjBϒ5QcxYc|2HZ=Ddy/2^8 ٫K( į??>IOXŸX6C=<^(Q@%) ƭx*Zst\s2"..?xvGO713y5@{Ѹx#=o+2RH$Fqk|lXйPnoӱS͞ǎMR0w[pb3@2WӱMWX7}?#{|GPcyJVz\Uz E#nftV m W8Y=NXo-,vv|PK`Ih>1ߔm[\xM;Z>!|j&ؙhNzo/?Q cgߤStX|Z+Kx2z?-+{:FW˞~MO4rت _wzAavޤJ 퀑16'̥LлJs fa YŌX蘚B5`mp? cԒ~hY}{\. qJ49 %w{fukܢh|ĔIn޴kVn:yȦ c4:u=Pck|mJE՚z5bAPY->DFx.ué7]_::9BSařYli#r)Jl_uݣߡdF6[ Z^j ,Ra{JVk[dtM:kD.ͱ.잷eE8KuX$^,+mqFᨾalmbZ$Qhh8=⎳ t4ې;ڐ%R'8{8c ؄Q)v2,NWV1_Q]QW$?$B87,zK W00^FlxB5xY>V_ C.q2̮$(ůy0&k-jóV8gZ6 \}Z.pt\>b,٬bje߇d4ĮWx`lT6U)h%a0OLwǩkс3D떨WdP撕'1?,0^2^f"TH*r67/y{1F{iz߇3wIDvY͂0e!3_Sd_\BS9["&b⒈}) |X=JdF1Yh؍,,&`{ W.۟v[{A&@ ,hXZl2JQ=O٥!";VGy(C|{0D.\Ӥo9OkogqsF◬X%U{}|N6=L8GsWV^+T&W? `*ܢ N2NCiL)? 1y@)䶊1M6o4L"tZ/rg9gr 4a u^a?wP]L4Z: wIZq^pScm^!`'n׉IpK>u%!kZ 3(@Ɩ"{H}/~ٿK-W%F3EKاsY11Q42 HR1mM>x\ّN&Qa;Izf4tJLzWw9AJdL¶^I:Gek~ff +JdlX4?\Ag& ~-5c9P<s/nn{2$j y(XpL㌛VÄp' aNbw*!0e%xTc^ *x܁| jp܄,Tz*s+if~$aU*å0eA=鹬h$g?WP v(e}Vi=ؤ_ 'mWu@9=`?0Sʣs} nxP0Z/i4/w+Yy/)G4mA>!bb\ .ӜOnI5 &WD5jzAadok0#^Ci ]nЀ5VMFt#dfMc{3:oҼD[p+N}k_i7)AA5s}\1yW瀚W8BcfdtbuMe8!i{#3D ݵ \"_I(:;~1SѴDJK12?'qX$(O1.-Z$JgaVYL* uy|RD׸><̅2-jC7L<ţ}]+;1Νt$9!h[~@ԇjvJ3-WnϱQKPj2|G2E64{'B uo @x 'MߖdEyy [JMCD qZ3緎̃F޿0Oƀ" h6-fzQ^oE݇vU 𨵆y1Tm6U UV &`|?XL$&T2M.y\.%?o} flzK|CȺ]YZXm?ʳTBCl6}(pxŊ:7YY4VQTy9PPLFJQ|dgJ7ot~9(8lݼ5(ZB)Dw߭PHH7[ؘ9jzfo`?k,X40Cz$*!%U1+541&0?OhFמC,qG)TYS !&/& t7!Vu1m߱N2ՌKBRhN󑂫|ޘMr@2Xg*[{'Z$g`?Œ?hbQ&w~'՜1 -Z( RȷgLVNsR{k ccDW7ThU8OQ_6 MO0'f#[5/vD iP;8ԡ͘ P tp03 HM zu y/QfUZ\ Q+b?ܼr uҾ$d(] U#ؽ?X]n(C,cDV=!jgB:?eK<ux'HX}7i8j"IF$RW8kv $"_!lzs4,'1-VP%/kw{"e/$dp֢͚F ú? CKj5&rS()wJWl$8 ';Es+ejK; CYnU63r4}T-lWdXt_[$'NFG (˯' [D|Ͳ׋ȁf&C+^ thӄoցzh;f;y $4Lv>oZ["qT2M)*EJq{ԅf_cրOF\R/MI=fSR9c,ky ]`PS$;:+m,M3~銏U>ONBos,Matl_J,#o a^#[9} d Y3be ~>7 :n(o97,*թKˍ+YR%s9e:X{ʤl&*CO;K:0m(lɑYbTnR<@F/e斎%׋gtG|@n؊Fo(B'{ؗtVUJB?hM y'+jGw:֥l )KIp[!MDu\H\\MܱV\p,";Kw[xrx]p:7_rر,;sB_ )]<_P?zghb~=:ylCƝS=%ub+~8^kϑ9@ ۡG0CɒBvz| u l̾ %?(*>d{U9|b2H.(lJE J UlkD/v@͍1Ctq&0t`薿bl[UUVH8Zƭwۨ/^Or_c[Sj4k p3\ٟ34 ANN;8WbjC42/h9|nt_(gwGcp0d_ u;e/._]}ߜ LPw}溱 LmERmp?pc r#g-#|ы6h56Y VF7 b.hh 0*%*5y8W!o)vV9Yr6Z^zX\mT+"HpO1J\Wy="YT&@{ hv)da|˯^ؚSuHA;6eF}mOAR[k6/2ˋ&1G#c9 Gs >yJ熆OCtp7-+7\S6pWSˏP8aPZfٳ,NK8;.\ͯ8o)mX4~O΍Z+;wW}Hgyz\lJhJ:Rhxt_sY#k0}"L:/Qb1pB1/.-+GiuL>@BXz65zyD l<$3??^SN^JA-;ioLo:O`$5S4fӀ $WZ\V7_s lc΅0)̿-(FH1^Юx@ wKNw(ټEU˷I^% I깴9׵|D'//!Qy"".-s'{Kȡ]i m"iwDM[DXLj/LlI?L(cOjxPv/}p[ڊc@,ԀW̉> #77q$uQN,lHeLx?rzJa2[ܩgZØK  _/-YysTڭSgL#yyTQAŹ0s59^\\j\e^~@-{k[*X)RnvW\jL!K:=@KѼZ Iv3Oq@} 7*Kik?|sPoD(s K awgjy`A)8Um;]08?|X&wⶆʔ"Gltxb]-!*BCUz0W\A'BN8Q9OG lkfǕ3 '|XEs(M8e.\V/m~ݔ9"Jߒ*@fpv٣>8!^XYA<%&V*W/}d?XӜ3u vQOzXjUPЭn,)@tҬAYRxFH~N\4 Ɩ5s_N#Nu@W$C?]B~~_-$|ihG>C.:|nCjm kN*ih9:{}?aIX5-k w jg4]8E<;=oavsWhJR8i B8bK8H}A0H^)䂿d{װ @NO3`SlUm`pWLhޜ&k}n 3\㓛JEr6l VMqnjT2 < r%=fh r?۪w|-кh; 9&1*'57AL4ZnsV<wFpl'#jk;1Wػ;ugH퀓o| dȸu_tnmNdiڤ.vãpJfC(Zq|#|_ЃE&3%s<t??mtQ.$ }$WYA0sz 6z1ߌKm :Y!|Pd@s`#hz((,[3j\bKUYJټ-2.3=ֶ`\s ?:SJ|8#gZCB]:{ڙ| fQrYYw;rhw+kΊk[@'NU&yKz6% JOckJKr{/R{ʟw M-}2D }. T]pevCE.Kc4;Ԁ Fw~9kP!PTp^4yRF%);H1ޛgT<]<1nuvHq:>/TנgaUd.Z5n?s~RBLgk8G4=JCTBb7 z{T8L@v+\8¡?+ɽp7&R_wQ)kL]<̵/Nn\5A]lbIN>Xz=A!AW\֡ オ*.bT] ':!D,:tgYZ ,:DZj¬DY6הĜMG;Za' *xFt?YE'kp,e:O9BsdjgWM7#%jV괣T8dZo5>M zRJ9rà7VEǿE"nUX,\#M(=tYf?LLPӳx1b>O@ fOCr~{kQq68(vyI֮wU}rMEqGyΨnNR(~$l)5Q)T}OdK&٧ 6tThr\IIBEjy$׵֮~€cOF }}a)4#sBΑ 61K2  /v{Xr3/Ϸ<^l  Kasl5,҈ƋAS (+ޙ&$伹tt9r-;?1^P\{mނo+:BFIͷ wͮaE^΀kOmE"&~ ԵF4L&OՕ:hj<J#ݔjBli(UM crfHH.ڟ>r.\HQp,=yc&X`U*yćP`>?vL߬85byCJ] J@h2l+~L m\G/p WSz@58aܯ޴Iۖ/(l6wEIqg+F]4K |"J%vj)8.DfXc.o9Aʽn5nWA `:DC7C35zrb$qVZOMɠ~wq9uI2*u.acn,ٸ !$'!#^v )̑/JjkQ)(v̡ݬ O+_H"lmj =[ޒ:O 6nY0?½v+= @=f7ZyCJM1@y{~&u2rsSg}/ qL V23gpHڽ 2~j&VӞaoi5*BE88#&UX򬕁nS][ƌ!?ly+`Ձ |ٮtōAr8Y#ga;ePk _`?Þ߈1mlF5oIe mb^@P37H  un.Hb?}_/@0s-/zg3y4SؘJae`pTg) I^PCnqQ';M*/]<^'_֪\< (+_܁4d=SHoi nLɅPon7_m Y"DhOߞPzS#" OamN-DUH$Awsh<؊DTWj#y+Ir/y(5_䜶q |Jypx*Ǩ),}TBu߉NJ(L\M cJ$˂& F#]M AŪB4>;HΩ?Iq࡫lꦐ-p)ռ2 MTxq(OPjw{M3pőɹ!I2&SQs`WpwnI'`g2tpqr;'2Ǒ'>ªk}*`zhFۍ K`PpQ]UN܀ΓUxZWX0I>> FGm:x׬pֲd}z$ts[ Ybb)ˁ'RV}_44׏`'BJ #_/6ݤՐ`8&x^Amݛ" ]eT &4+m+&X~ e\ صȜ.,hQl-`/ԯ~3 ^TFpzu| mD4V} Ȼz5uyh}`\|t@4e=d.S:y?$T([YKIA8)"?*!b%Ω穾.ei cKy}w8sXmk^`}DW֎@q"cﵺ8HYwS;U |cbOn'WHjs3njtZ*wJ ."USӡ"' (*Y4MF~yN9w9=}jt⎋~= mwin]ĵ+\(L:Dg֘&?Ji.JnWQ S=?Mæ-!ʁ#֭}5vLگڡ!N?wKN"& {I0bf8'S$`<( ܲV~u'g,wS}"tP7EW/nR,M=y@l/; y߀%+ kbIB8EDRL#&C pKaw=Gva25Ç)Y_8-lcx^@*3in7R?=>ݻwJ`u]S@fs0qD@Jt5x+rN]W\ BF00c7.YM\y%wI4%̃4#@w7X]&w+Bi`r˰MmC#k O1dio%V *+[Q F>Y\-?w[awG SM|8{§%ӊX[n ! X|OMo]*k!_=l7*<ttķaM=ӭ-;o#/fV,馲[$ 틍 5;r C<<1y0/, N8s )Vv砬[O0gk FZ uX\<̴? qHvQ0+!LǕ66# pN wS'}y$v ^GX6:2oc7n;r-AxX_"gc/V1; ̖A{\ORVfz- |Jtfٱmx00ߎTj3cb0gFye-J KӪk X,FIr`7 ~ sCM61~7E2p1 $I)Z`kpEh-цP."EM01䏴" #`NμM7 ?c@F7^Wj$B;fi*/eS{v. Mk\S t9Q1τ=j%؉n.=,|/=^2mh_c"'ߔlG< u K!ҽa8mؕ:7CzDzwhD}^wB R}q0uv:.X}J@~Ӓl$̔ўˀ0<׭8[/.66D KlbD=Rf-h*{QbWǯ"jo'Ʀh>ZrBod_ܼv45H{{,Xc~_[ڞ|rtJLa fvl~oB` ]mTH!" mm㪒>Tp@Ɂ]ɤ5BI[QKx@>`0<:(7-F lckZP5\/ܚFQ*[IμQlbՂt]MD d1=^WRσy= f 4¾cLNn-|h%YYg2'S@#S,/"cLޮUd(C vyOSf[?4nAzubgg2pq7{϶"?WXZŭhi j+4V-n xlQh`MHCC08'sƼ"ǫϳ^/lމЈ<\H x@<'blzc`9>w V[yGe{áGuGývBl![;xz ~t>5 v|r+?a_O佹rCr[ &ǧ+F[6h6 C~j5&ަ qo0׏YpyfȟK㛧Mc5X1Gs.-FKq.+e nO$<#*@71&’yN)GH{( JrB5/qmztJYa ]b{ VInDE=3=D`MwyfL,Q!C$ƞIk{! {DKpj:+9m1P/pdoi2$2[b"۬Zu((̼|Y³Lx k_iT;%"1d-Xz0`9p{+NQ"smZۜFXg)^StͽI#L_{&Ny[TLG "*fNEG)Tˡ-qa/ ~v_2ق OdW2)xZHaP!>}Z]Y %ME)#+ qUΥBů[Gξ \{a01M/c$}a bgF6Qb'YC Q˖CJ0,u늹 UN Z` "eףc JoWXmX݄P& 3SDQc0]_l@=Ze7dt8ӲuGZ(zZƓD߰fSk|ohùw!JRc\E2-B·r0$8b+LR You#^w]=|swMcS@ Y%ep& ,r g ԉ%9V*H1'gN&s6eMXBY0k? JՐR1ؐ)e2q9'&BP9-y.6<َ@)iW?t<'Rd?wlױ> ܩ0*;,hy!Bb0%":WYB(-M;s+DDfe".g?tq43Tuw^G ݴ#rhiDD=WУ; V`\$&,ף-6 sin }R0 ?W FY: bvsdिErcֺ*aR4ۡ'=M[Ǯ0uu <؛:"e/fﴶnBxWxT&@eR&w';y?+r?ctv0mavB<.,'㻴y#JGp'LQq_iDk8I/nicE# -Q ׀eRtv7=Dm}]fJs,cB1$_X!GLzS%F㿈n;W4EFWMEkͥhv%zYlҺ3h)B+D߾0;t 7Umiǿ~q+|joگ]$,`'CK QmUFnGBLmk#Hd֩;_ st #]wɉd5|rI `4Mˈ䂔ZqUqm,   xXW R_J lr:b6}Qݏhp^6T3eyPpF"j[g:1i8!`V/˶DpR*@ygF?28epv\AL]knpvp4uCXEH:R S3i˛pju(<>"3̓G#TPhȿݷb4eI J6'uH~azZ"OmQcmxD%CrU{pY d) < HU~ lw>DmE+?Se q{_6V卻h!`Ww1t23gK!O4J]WHы֤DXߴRtFqBql lZ# [K6uw#oL0.']"1b}IjŚgx)b$YQu7"yu0xg_HBcyE_7lԪóŵ N|]v[cr6uё#7ʫƨ.C&C  bɄZ*o?,IEn%^<Q<cu&Af NO29<سA.qC;otgڣ_mʉ r˳L$ C ȝ6];WpU`~źhp<+E\6cN7t>?oy5@"]]J˙&"h$a19$ا8̀]q!Q>"D L#Havw4a5ꔦ >wJ4i^FB=Z (ԖtgUON.a ʅ=T'5|,Gw>HԠ4H/;/]V8Txm`u,TɥCT6aaڮ;x2''l 1itqk^ز8iY=B- Wbz~4Ʋ7 asCݑ ƶZFPb19~l|/7(\ V1b ^%MDeMr7zIEIDrx8U8w2㆘0sЄg o?^pxO`*~*6ORFuwi)*$ӛA"%Uq)Սl4dUUdU7M^ކ!#:ZB[5U$M"gDS XU KHns|Peg! tAojםWEwْvR;옎 Ϻ+dmUtyia/z4aGy4j`:j.$ IG_,u~Jq5!dT=9$_j ؓE5&! XX/٠m98p.=&7~0/ak0,,^]ŗSE Ȉ a^t(Z}= t|nO:@T/ JeQ5VT_+ZlpG\sg ' =Yu7BMUk3Ewk~hͥk24)P>M$n|v@G'T4@JуL5u0< l6fr[C4޽Ηs}Y6-E,ZYȎ]>i~2yHQf?xEj 6FV@f?@*MJz>;+?7Ŝm}"ćٟ=*{D[@*>OMXoG"(@B_(^"h/0Zit2ڜ~rl7 !F̰KbSJw{j9vD-{]]Uq$qGjgb XY:4,<&0?BdyŻV L#fg@J!m̼QЕqf_Әgm &IR@Nw 0,uy ]y42a}kb gj!Y D|x5X<Ć6E iVRV[J9֔h['Shߜ_9> xgtT,2n3mfE+(jīV;j wҸ9C`H4R3Sʌc]؃, (*j$ن "v{y ^Θ5g' XKoPđΆ4<{3QUX?6wM94=5gSLnco# 3eΥ^jή$:}U$9ҽʎIJJ:fKۡӛ/FXTN`q- z v84r"+6lKvT@o͹|OJ$%_Q6=}vj5K L/m4y]$PK?,1݁͌lB]r( ~j[@4^ U*,a߅ڰe|?Hs|ު6 ]<~&˷u7tJ8;Mt>P ?*RgSc Hgj)/HSJ w%]`iTo֯Z LU5TZ3Дw UVH,"Sͩ-×_U}BO,dNWӽ^5ɸQ[Nnn|kPJD*o1OWyQ#d G VisL( ..I`hsL:͆ue0bۆk|)1aQ~54m.Qh_]]|&fES2=y΍ SP]IA_`tZ\R2NXֵ7H@BHă4e'#ìew\ʊqu&OmoTqeegkIKk乚8Y7|u4 XFUQю)/tYn=q2rYoԔtSFAyf(#5ȕ GCCXg`nˉV@lf8r[X/f߂Q1_Jb@҅"̴0#:j{fo,+Kw DNk2mʸMZ{ ݖ:\_N߅*%4I{&jm|co/乹$WXFI#mFuY,8z/'j/o Xjsm.-lV u2։:'\Hcwm >їߖBr9厀o[.jO1•gFU=uݬθm g;\1}D|t&SlbOO8oR ]誨U!jT hT[b8:Y+Ft_vebđhRl9[Zُ SxMiퟁhyrd %42-YFwk$Ԝj]hʮﱧV.L*9ۚE'-N/^D+B{k8L_P΄k nu*iTRҵN4dJ5FkFo/b=d"4q9!5-nn4^#>,,GʿV\q /t*lcq.B.l8>xsJb_DdNK?[3T8čL-sxkBO7[oBQ_hدvivVqəHǻ}63$c uՈYYd%e,uPnu7!OfQ]tLJ!mw t&x;oK\g%Y rT8TwL`cT,=5SàOOLn[$U ŻAP kb/)6 6\BHaVDCa׵lл1uy^"Aʗ{kbV'|,] O}:s]Eo!+Fj;gK^#zD/G3e!=+!)oFp5Ni~rWrp7+AYGمZS$  <5М:w'ojMyWw-YkYmt k'Wv@|S10H#|ɹ^bZ?a#Srj9[D?ƃ{( 읽QeMowƇ,:]Vsǻ:d+V52@O%spkg2#]|{>0 W0 qkfe:x [7Pk1emaFpݯ0m@/^0WޕyT4O4nnԚ)]n<WQl5}7DH@BpadHsdm) nk˯BY^N_500A+^gWR&lax]k,_; KWUOYc'b;FvGĦoμ-^uP<"q}IK6 0kuw k9O<ȡ8Dr\Pv4WWW'j!*(,5F+9$ ci1 p=?*'oݒlPp& r)S=&=Gh.Y5Mw)is) ZDv Qau+Ob俐rS[Wq;@ه60J'o]m64[CIlA]5:JL9eNZ4@r9!8Mi\^`mI&W%*bFWbP+[y )Gt %9/= ⸰yh %i8xpNY(L[vsTdqvt%w a-pkɴd]A\ gj._ca`4-bA8BẉA),TD l;A1U"{5r ^FRD3Y P1QVh& V%>yZHc:kxtxj*RF?/:ji"}wŰxmݵ~&}-@T0ۦh8]^zeot-3޳ǻ'}TPu{m\CUK|r2Z0ЕKa;4m_Ik}ޙ[&t:0i9K EĂM'{ςs35#ubf"Em<)*^B WIߓn\d{[TlohUACW"ܖpBM%G *8 S!o p\,w󾋷ǛuYp-_ Cy)~=;,;3U žx+zJoO7v3.5\3 q?jE'~QUtP2-A0?ԸT(h 7O氝)@,5)码|9'U'$`cNP:v(_PS+>3Ք!ȈoUB]H ӢlZh$;4ubrE~]Mrݸn\V {p9t?PZ Ӻ'NnCѶܦ@Z3=9dJ*~bhiL:X!$E؝DQSzq(вitуېz5~:M My\mC?|& Dx ~l!TiVC 0?.-M.N[½x;KZg#rbTA+T%#|FSX>r+;Bkn`c頇.w<ݘQ1 _ƸAUE#]v$aX}&O@~_?CDO g(G\kx-62+dnv*@?F킖Ґ߮h8r@SZ O]|q^EĮ bD 6=%snZK锟GߜNE w۫PŤL]1 cY2/קGܰ_k*qM>6hhrGeW? OW9Xwm@ &ŵ9k#WZ@MrL={ / +oAuষX+| n4WNftss$&26 q2LBJT924K18t/?&ݯ "zf^Sӆ͵/U\*$L4TUR4B\vMUOc]QT2y:M)n?"mS cZQ 꺇m5, f!fz;1Ik:g-?C-fVM&NaXaT#~aQby&vBӅ ь f-rXx( w(xYַ>R <]q\+ڈ Rb !H5ݎ)68ӗ c:ƏjD* r\ [s:އܜ*Hn/N{gf=3:l+aaWJ X|Y?8ڽM'maJ [h0o]4w^+f!/7n針 D# r:x!,:#pTiEғ\C)>Bユ۱h?>uʛF:Q쥃PMnXqެF.]y5oR←ؙ*PjHOogʍ}K nQ#׻2scdX"]x=8鎻V<&%`jUZ $Uj%LTM?y}vn~+nAgoaMal(žy8g1nZme bDpM%pTnXi&xv½ ZͰ7;t!w豽?bHQua6/$hp‰-?s B?IqHNSSA}5f*)>PO9k|u(r>>Њ~a fF2]`pst(ts awD(c_wjm\ƃW_F,׿8o|4s9#@E6 "# d.OG;peJ>T /Bo.%m֕ k%* Z5;$Ame/řDnCNj]2 5T#-{8+RDbE1 4!_/ji̫/WSw@o'rQaJC8/%-EDW!Om`KB&M!o\%dʪq諻z"R Whm/ї!F|`74\` /~ >f)mWOrv3@T8csJ.Zt0CFl2NޜI [[AɁ"EW(L :y)XaX~G7gAD!|867tqF~.G 6?G#[Pg h!, >??[9AUoH!5M/=s|Y^Å6v `B<J_KU u2k]n!@)*}IxK,4=xF E<"Kce*TaRmQF/jpp$rH).r!#v6̈bLF.% / IQmMOq;k*}݊= fr0QGv8U*5$\c_I|d>9-|OwƦ.Ғdqƒ)~DDj5 \_C@NS7?a{s ա9lSҔOߣtoLC/& Li9ʃZfV - w@c*/#qõoUJZ M2eN0)! "h_g.j]H}Nc H)wJ|*&Vθt2&k^V{7 F p+7ni3 Xg9.+9?B"q8(`<kpBr]l+{y;h@QEÜCN,oԷ<F8/do7EC/3Ș] 4 uپ;}l&o%E-kbxS)k_v70%3qHK;x@{$h<9mUDiKThQ&čb* JVĭe8Ԥfu0dD>r%6"{Y{Vnt1-x`vb5'XSH _}7ɭ< I@)K 8~+{CxatZ ̷W[53bttP@YN=fZ&QjUՀ[* !yc="g$. 53Wqp=Y&RAji]jlۦ0C yY}5/TEVh9OU҄⥴(`Dѩ%Qj%iV(!bYs"P.GU?w-8DNyԮ퀊~C18kv8HJ x>< |~p&""D{ԨkPr&Y.&ADg9ڣh^+cSnN -WNH)Ŀ]AdA+qF,lw3۰J~_,Wbj=Ć sgL~1U>Q2jS|C=)fe ف?$ujoXN#{\BaS`&OcC"pd'HTQvZ&Rq0/Ci+. .g!L{ԬpahL.V2fU9b .NΜzay|m9 6P|l31I*8.&;>%9@*a U;}\ZؘC&l%4[V'Kq`ࣽ"O{Ԕ\Ͼn*80R# }DAx?3" GJsuib>~K΅<'LX1*xwބQ.~lBC{qGP[oFtU. hj܍N8,F& 3AzF(vi׀.`yT bpDW%rX5>~L4`9=G^[Pį8 }}Y y _ؑ1I]:&WnogAuqk*ʆȮu'W#DY$}Èkrt#!0O6 mkJF]z %JVZ׸"Q LYC81]^E/ \pAgg2н eKNݯH2Y;}9Zk'ҝbzI?q{,0+&NlorX΋ p,v0SIg*sݼZ 73^ ZI9sg>q)>n4 MeO$ r$`@)[CrT|jV+>/`q]!"Y/٤ |b3)I.q+~,fXW2A ql 9oX|+(AꄤR`8S12VDFGNmӆuwN$Ϩ*r0M!sV|/l05q |Ɵ-#O8%-b8˕;fNN*Q=-#}]S4HRFNu-ĕYS2_0kw];AB  {C f K$4OU%y0tg64y-Y:*D؄I!8,zRu\ᲱAcLHb'v} .v a'~J/Y]9?/M\V Ą~. dZU1(5;~̏B|) \vb=<Ŷ_5xA){̃Tņ$ 1@v/P2v]v@ Ctd2smH) E:br4cԁհ9sغǎ1b$C j>W 2(CT( $z޳ê9{!C\s@.ToNW ?WRG `|ˀ&sz.O}C'׈bi'89yGbrkP;'W6u>F@eYg$3SGγ/"&c걙_ mh> )d[g(n%9i V } y/dTCO¸Rً^AwheDۋJ'myㄅ|g, lwn{^G&eIfA f&Ch=[ X4溺1#ɬ}1 8lout-RJX`se>jcsG_Y=YRsAk3mK{OŪ{̳kHfBp4Ss R%m*yY J${aԵ(瘨H}𾙲)~pђPp֣^L߼UpUgZR?@֫e-5V"<"plYH-E.X `,Ԝ mE9(y **+A$r6%? +aI"/$8LP@FL p6KD8sdfF^9OrGJ>+_y`r >;P9jne_\!lja"NcW@!ܞ &XbC\֕ePf-27iw8leBeHҠӶN:u:DU.5.kx@"5͘4 a1b倇iZ}oIGfe@ٗyTFe؍1R*+j!^@,0.lj6.r=\AOBH#βwWV pGZ8۬7q`b]6W)0%# >&$~/PceXqvDTT6bD0&]֐#dF=|HTIHdgzgˊvFaӌ&!i<rwC;3f L+#QAL2~}FۉǓ;ّި/CX@WyKC峕JdXT&Q̌gCmRM(1bpա_%,6NFgj~)kaGXP8*9h10ն,/p}!nȼXF#&Mmۄ<:Q=`"1RԈ$^d5 ZAYDW:HsY4&֍uBCk{.*đh +2]T/ըoo=C2hڔ:>gC-2]+CȴƢapΏONv]J*ن>*:hAi':ugHM\,$@ZLg#yX[A.d#_5=f>Ŧl*PrMsRi Ыś7T_KK pso(&wc/=o,,WVmG ĞʩtnwywTH>Y6 -`gtAͺʢwrj*rtܿǩ KY(0k6^5<%)OJ/zp$_ HNꊚXs-nzCFsgv-MG@+u/&@˓$zPޕR9PVҧ7"W`[_WY:i>z'W}W#SVM4գvID3ⓚ|{5TҖA攮֔_=Yս1]!Hn&J!L،U{Kp'}x ioK{M7:Ii2™ٹ(YITr?lYC dcD45ũI-R)](ĵho8 VcvRԔ>E84P֖"q+X=mzJ))H_qRl6MW| k|j <~Sh:ɯᏪOvY\M 9Q="x)`],0c.'DgAJ%>KXm,LPJdkcgR=J)V ?(/EmAYCT Q 7oGNSB"Si@ Ώ\#fH(|6D,t"zIy=fe+}4O,}6{"7ZҦQ.zgPzhܖ1qĐk(AI]։[Jy_">v*Ut ٴwKޅLރyyhfSᙼOK'YK LO_25?H|\t0>`t=yM^z_VǓH籯č9m?pd& US~Z!\X6\^#C1*#reamh}ySv&>T Z W$Yuully_=ay2+Zi\*  \ R6EN KUg&eաʀ"@0@pOVX /R% m!)tռK%|8w :"zb7t6JV*<ڑrJ]H@$e~bUQiŷ[ w%v_*tN /۹ A(a x.?1ͻY8DEMJ X;ϼBp̘؏r^i!.'= ?՟˛@-0, :ɠukH-glIֺMܮ˞8 [LC%#0%R1⴯'^ P?CjN>z\c|[xU<㫸0=5!RA 3@1e7[S 9`FwUk|B޿Usl0_iD{N#)d%g*m|]ǧLz0d-& $'撖h fu53Lav*!JɷplYXĩ}1Քb;C]%̌H> =Rq Ī|& *$O݅[? #>zi ­r ' #I1/_e$hFO_ie C/ipVDxU[9: A sN!>AbzYپ+_X^F 5D8 =ܮCetzv7ӕ[NΞD+5"º_!2U ^&v"{(;PB v{U{]Q(iYb3=0#,؉FŬNΎ"+%K )vôÑi EF<&VN WQm8 X{: S2e^:jmaT Haa*)q;ʈ'fCpZt50VVw$>~^T1#6܃AZ}m5OtӼZ*?(=y 8~R&AL- SU.e1k<._BU$0X~㗀iCˀ/6]6.\2LpCg*ci-)YLW< "j #AA%\ƪ _R А}S3)[ؙ 6k"/L)HU `7F >XnvBQ"u ys'tMdEˮ)H;a2gZ"ݦ#WCn*G[_v!MuF_}/R%&ݹۘ n,{@RMmmy3> V^f-l8˰/ʴ)6fMJEVIИ)h64:@3?4{#(jѸRQQ)c5sH-`.:zYͽuز7hbfN)r۹ I>luo Q%7U_zE_'$o2'-138Ds`/P72\`p }5B SɈ`My^M\^MzAUfeT'rڹZe `YҐ?g@Z܊Z~rqG&hK(yOBf*%5mSf Nۚ/ʈ{럓8a&!^~ pnSuPC=4j h ɽw`ҶG(u&pњ/* LIs*o "m3, IO&XpUFwKi4HY yL MuYJDAܱIfoJ3`NE7Vڕ6KK m ϒ="U_,)t)O ܂B4qLd$U:ر7+ȩhgE̯C f+m> 8E~vwP-'fZkI~-|.ppfK`0"$d)ޚl$ַ/׈??qsyv{xYW*c;~`~NM:{ ţtncF5B;n_dJGΑhrMGշteS^HɰZE`'6?a~Kf3RA`SQ6S6'uRquJ^QQ]1Aq rYWz9?kNC]APHamHyj~)o3ZU0ý%KXכa)93} *{X+T&SA-0+քd-_5qlB+zTkDi+UzTCAXpD*} F'}h u ֒k>  (»gXbK>=_,\ dvغX~U&,@ڀ#fn]0]e v+M H'|4TP,`3 T Tk"ǍDQ5YǥHFdg\jE GFZѾC?/';+ژ85Z44\gL}qi_'kb wZQKFD0-0.qh D2Rh(yp2[)U(dkn`-rl XӦ`= R|)TOza\Nzٵ|3TC~c2iaĺȳ ɷ;ɗX R׏fj϶Z^ -5d [LHq"C|c'BD|"prM!P96G@*n=qYG=CWU L4I[_X5ʢ :9m/j/o9 M2Xuag ?>^*`!XlZe_4aM׷< էfZ`q.>u@K-o%nDGe G6 ), X9(T*faY_NKɇ! ge DD]9xaƯ_k/VXJe'TYdqGԔjIc>ЏAd(Q҆2||!Jxpdo mur{"yEKe|k}YBUiǽQĝ{k9cwB-fI/10X3 AȊ\>zqcsIvU m^O]?3>ʼPkpF /KgrAr $sҥ4=OQ !ac z2x2.xnILM:=,CNTKEi6)MS6ʅx l,z>2dul1W-.Ŧ)* ͡ȇJ'"PR\R0JӦW[?IR-(ׁWq%J6>9o[VY_$ZhLz~l<1JyvfdNM:xa}5 »"h}xoxi:QٝdV(&LƦ\EAG^!vG}j9|H9K`鏟Ԃ%('*R P`:/1=:0sYHAePYqp#gUZr3[j.hshE__Ie)z+K4Jޫ4sU#8DӟVbx#2z(XRDEZĄ9nM%GFלG}tThUƣwY^vGL!{z ;nio_ds,V ]y{6y#.Br-DUՌeEˤK\T ?YOIWvȰ3=^T&{ˊތ^ !?bRC2^dFŒ@ŽEOu_q qXUz|yn0^-(x]&æ_`7ecGp\O3CfPO2LR \#pz=Ɩm?7w·lQRJw#s ,XBR-yO^+OY}ue TuaGZ?*FF [:w̘q\u?&dgJD,E!C Є=vu`2{MS"3|T6Ah7|4C5pP]5">KeDYgX. =J ବk ErL\GDsmOmwW;^gBӜGlfC\v1,`x_ xqo!~7||.j·ʻ {q]6+WFpj7wܥ e dF&k>FwxFv{r;.Wߒ>PΘi9lCq3bD,r"mзH:Z-J`lc5 E|tq  j~ξXͫ?\e^wwT2/T/=]D3}/yN?׏ yf*MQ},RAI N@ˈ?#YXCj֕VC7~GZR\ƭ5Shp0+JhޮdjSY  U?wmMՐ^]-K`` ΢dS<"̐"{K Eu|_^k8k ӴiE;|a%kslaXBZ ۑg#)}^k3nULxU6 B{ 2@_F7Oފսc*BT1GY *#\s2tTVhp54OlapI9(CsP_" l3fl odF1R*DlLp4[%9BW.~R kBȍajG+ráhR;~Ii_1ۇ5%Li{fKdJ$Jmj̺Q=x+tr˳s#mz&ܪcSnpJA 2]f/`gLv0|RAG#3ŠYdYv?j>m*kY M>nfṀ.f_8\E3ɗCt,,\N-IڌK<~B 񪝌na9:%qϣMi5~qhs3TI‹?V0guNEcG&P$aC \<ŝn)JRWϴܰYMPD | ƸK#ړB },XW'%Y?]r7H3 Sbl5IЌ?2Vx{L˂p*:ޑ4JfSb={?YN✌WΤiORIgd_WeݰA O3 dh`F\>xi˺HLc3{0%v]$Ԩ?;pU8_/kgz $a06t]۵C)74Kھ,GG]"r7jH)a`>qa(}y6o*^lN"n<:RI=/~ڭL%A_0kxxfۄD?wT}Qɽ:sl0tư 0zALY0" 5zW~K1W4nׯ"-)YNi#jXWT֪]Wvɗ ŭf 9&W9t)?7|m$'ަkGkHPwyٌRQV* zI=6RGz]cy~Da OQ:<} STnzgS W:";߆.=5M}Ǐ`?Tj*̺'[dぬd318&^dJjO6s'O8rpMy1%Đ<\*1 s*Έj,}t!ƟVK)QjpUXH-!< 3(}90vxI_-{:tӔ'Łk>\T,WIR ΂?2,3b~ R׫K>_?l!)1IWv"|Aw/)R8W!_6o2oF^?梨?14e_|m!04VW 5#]CнL.ߏBHL̬=}c}"OxB}lPbDy+p9/y&Te0;<~fT`NRNF.DEuGH3jc*@v=)P&U91S ! f#zj-*aUr:(ahg|C_;j"$Q:Id>7DŏPc-(Zp!2okJŸju򂂌j3ϙ l NJ"h,>6$1jdh'q˱g*sFuxdUC#2W#V>o ZAT%mHsrh?4JsG*˲?-yZzo~,FsD=Zo~ؑobMְ-{5bմmD*wucFЁ$H/sW=nDDcȐ$kkd$2LVCxlqzٴ)ytּmk!n˩z,!)JgV@A!H]a|^ZD_gf* J`&bÓ϶'F D)Jo~)_i4o9d @Wf"v]=#ڬ'Bzi\4՚N@tv,8UEu޳3BMQƨU-0=N񯋣HHNLA?Na$[DNuB@ޞdcF;7گB%=Ɲ#p.oQb#v~d5оnN2  (ֻ_ڻ~׉k3}v`7y~llV1]I?Dui+_ -68i&imwUW6@ETg:c>zJbA+hP+kH%9.fCF]4*PT#U53L:B`p4:u.F~Q(BNCj-WRgZs8[w(HVv%TY8ҺB1|ѭ4Ao҅]7Ddo5ם0wzK ,_4X@TX1h:M/s#6XIx(K- 3հLRB~y_h,3Tx[z?jȯ8=$v 8W~-X{ri0WrSr+/W8E[US(u'@l%!g;(DVk^ 4uH7 tT77UA f{+%*Qiss37%-{X!zl&ڃ,)\Y 2hXw䞼|+Q51`8u|iȊ|o)NF$ybM%5P^)jP 9{q}\bǨ^rW$Qzam򸺲Vc (" IEMoҗ46Xy._%jZN$6U^ ~gDxB窲Tb1Ju:nѸBI-v[p E̟j~J bvW>𱨸v >ks, EKc KvT nY퟉^jl[ ?t7DI)ds=E1r[` uhUc]ܖNo9c0EXQۯ^.猌=c#u/!aġ-lÎh<7<̋9H#lsR8F)cCϒH0k:&T~uk2wJXR讥d є¥j [j (K9)A4O:=XIHK3/E5Kw_.+'qmߊpN;&FE`ZgK00'VJt7BCSm`^E$ER/X*eN.2:  6mƋhO Hfuͧv=y!5rZ%0vNng&L)SphI7zB_V*w)$ -! lvsIog@aw I9X/I錂'xl/nꩇߪcO;]Lڂ*褹:J]coИPG"A'E3RځrqÌV]9Eee75Tju# }Oڳ߮;mFI+E^ʯn3NOR/Bې>&='zz`~th~Ӂ*7e6Ib|k3(lx쟝$e$$6m$Dc,I{760=% 2ALxQ`w:4 ȦpF98W Se)eI0X)uC*7Iie+@C,|a@LK \K3ׄZu$#&Z.\*e>j6va2gзa5yF*H1JU=-oò>^n3P16o* v W^༏J9_g "LzUE"[rVv3~}-2rh;j|pn`<9Wʿ$b` .pbeM)ͯ[ *r_~*[?_QV]SƊft 8p7f 3w~\?_*8!2tFք&<H4d3N5EUȄݘ[)?;>ҿ5U| $U>#^(B`;kFe ڲ"6h<* kʰ$@3"CLgFV@:y~hG!I4 m8{5H~ Gjl/P@WĬ`mG?p1SD4-]wsqkXE@1WNHӬQ,uSL-7"wn>衔tC r FzH8!txɉ֒\;i*!ES'? ;fPOKgB/m `bޏq$ڻӂ#е4[Zne֩Gg]k k_`a&=h./6(o75q9+ϝZ b,Nb;dł-"=˧K뾸s5$+bڟl&Nq^G웆1/ }~clK JLƀi3"F-ulfg>W,hF.brcE#2{a3drFH9uȌP>ouDE a>~A~XӠ. V[ǐLucml2ptSU[6d!b!s%٣Y$f Vx \7.DK+n͖V~r_L#E<[N!}Ub9!󋵼}`:bnR)yLN`۴v`Τw;<:٬Ss :h1#^8[ 'IE p8?;W2\z4=~ I:_e SԼnQ>:uW=BeRi5> *8`rp "5&ǡ=UU憧z٢ZbYz7WL/#lRVO枏x![ 5d_}*5TyvZ+9D VGW$|bzd$ρVF~Jvvwl鍝'YY쑀r.ׇ2f!W-|_HFұs8nts-=<&^0uP3`'K_ۍ]>g'A`@N%DeҬLQVIn\_\yWZ|=GtB?Tb-y }?h*q$NFڂ(qyb-%X{Cb~ȡj  rV-$P.S3N:duvZ/EhE=l[Ε-ޠԐP`\R߹W$'$NdorQ& h:g 4*V K,ƒe$ C/8']eE_2pI#b+۝Ɗ*P8Hn Ǘ4Nzq ?XlvTy"AZAX8VŔ!&`"EC8%1+aBЀ:#:F"%N82bhcyúlWrƮqLڊFZW43؈^6&iRYNj`z[թ;V|i(C QꦴH nRz/߷EAKo|o_R[cp'uBȲ;)5C Ԝ H? P%WPEK]=gNoziwnìmcQL a> =| Ϯt՗tY: ) ^:ʳ}'%:=5>՜)8 ~O} *Hc'\dbJRx7rX+"gJe,hct ㄎ)gŷ4(bNf:Iɘ3G܁1D P#8έW7%A}=v_F!TLQS0~l"x1sn>% s/b eei Zy^y/GvHL |?S S'v$cLێt >52"7e,(%ZĭtD{2&@g[ĢO .aFx`sHaWiQ)rlO jSbp:l&V =?tOb_?.'rǦ h [ɹ+&f*YZUh5;2>rZ~ҿ.:X~@IP#c]Vrm]pg jC®*$IKv,ZDKy1:y@$vd4DD[2Љ0|B2)^8(mlj6Q@`LNrk v085\sH0VbHaq~a*\JD^+rʞ6xy*մ7 iٳ&:zca=[5cuRf{Kb}0NIySo&UЂ-X$'F3>M XqeQ. S!r}.o{NT{C 9gj4@N4{N 0G--%]%0Bak!j9Yݖ8f20,i<;W|n7LcM)Lt)$ʤ5U{t>硂ʐZ'v?#y9c4&+o^kwؙWrcqLCV%2OþCxůoԂdÛ(X\ K%8u&D8Ӛk)B)} ^qto"Rm{a ןfe./CCZ~8ץ._x[L~eq=;s6?>k 8nˡ2`1*$}j,%s:y[AAi{,OO[HM.ǘlݻmRvE҉oL΂0|IyIxӢ/!})j;CtOaKg3(zYإ@~j#YlQBkVi~bf_t {S\ZuT8W`+1 K(-&sRFbhMF_[ ?ZsH`Vm;Ը}<* ߤ1r9ꔱT)zٿ V+3"ָ{! t#yl1mDWg zN$ǚۮϫe7õ:cJ輣Tl-! mJ~Qfɱhk+5Bx\lm;{5~*tSz[W}vu"P+^er?~lŹh{asM ZIO&LgUEh'|VDլ.2%ARw{ZĘd>PUR!i3AԆ1SZ_)L5i$&< YZc["ݫo,pOVv\\e"u8$~ O !#E>n0%b%b8QťCK:0wլq2 fe^!-wu}6Vpښ!>S߅>V_aKjH 5rTxQ}znA%餴CӪ$?0/þUBKѫnm ނYc, ;M)d RD(_k'y^v6rfX>dP d#t8Z"#KsO4\A*iSZj^6\Ӄ"i-Ɇ[rSuʘ;CWE %%h^#8o, 2ov)\M,o:]^}aa£ih~T)ȅml=A'w;<~ zZbYX_^72LInG]f8Y"q_RPĝ,Jڐ%\/ e0!kQ,B2PccW.(y)(ghSOa!"p<2>g=/YT;~-|X32HKMq4w9 k&Qg#܊ brbobI~wjM >ޫc*lm+<>:<@CJ'~)4lDh7Dmhi _E#%U瞴Bŷ,iJawG oؿxgQv/deԊnRV@G[E׹1g?X gor[HANBqAYWH?|~eˠBݾ/u^"aR- `H8rQ\頔k14mŜQmb\U0@{mT“IQa> i); *wDjI~b] ̱bMPS T}g )"_kTqJAv+j"d$Z tDϒ'a9#D}lu"VDd^܁DGR!J2W{ƄA[W9^?ށ(d 4C-I| u*C6_>+a 9]q7 \qljqE~ұaIPӑ NV$,Ӵ;kHT7N#Y|nKb7 lѭj%!%#7>_ދӵzD{~xmtUw)Di7z^|׋ZVbHpqV8l蒈ċm5ƉZUF=7/Dq5 d$5>eӁ`KBjOEhi)(˛19"90,=79J2Cu|k7}/ !6qfng4l^OaSc>^+^%lxDDqxJ; BEVfhI^}|Yon=pa%Tj$of8+'b49ͱTSԥ=t<}zE'sHCLA2pߑ-x䒔gP)5AnAZ<~ځVd:t@)= ׭\F(A,j/Q(ѬO>slqR\Z]_lRc@f(gٺwշ1v#,-+f52>:(. !j!}y8v*bb$}_5<ZoXoU[el 6˵>>޼ّtv"/֘=op\1ӛ%fsPhť /5APS__HEQ3 D-d ءi| kL_]k5m%t1Q.ia,\6?όThO7Tf' ujvcQ\}2k[9B'x\2z~ KaHym' S㧗Pe"\bk޻ V#l=<ӀIAumN:DIYHDf"F loE4Ckػc1x)R̗أv. 2ؾɳ1t6RūuA顂M/Lӓx⚹HR*0^=߉Va \>M(8=r\1 `pi8~|FpoM_:@v:^=T|H|p) 9[?.g1-J I#ZJ1zOOPt[7OkT߻tKEعw<<3I'3,1V4㢙'Z;m{I=FDyG2CQ&cFw"^M R4'[g)~=\X(9IS 5Ɇrģ>ksj /8C zle#~|}>_tU &Y X 5L(j&Iգ<-l5,lF+&c4XY-翨m \v:QsC`HʼnmdJR0BZVEF['f}b ]S}&Rh^dϨߗ|SwQt3B5L؊eڗ6UTV)W;Tqrm;|2G"Oa쿑N*ߐk>+h:p_/']h?Ԣ!?1\o֒m2j)9Z~N<~,6je!2)Rd ?$?kZ7d їt8k5#Ѱx72!* 3_rZ롂G3^ д:E׏d(HO++F?VM>p27( )i3,}nb9aI:-KD H"*}~^}I5CB$ > [ ? u N%B+9Y L4~Ӈʘ KZj_3-HO"ܫPwK%q.Q=F*oA'Fu4 TZB&+2}(,1,d[S$ng )v ,)e]6k߲&Gn_Yy Gvr*v|"Ϸ߰dr=I4 Ͳ28<A|@_ƇJY8 ϥtQ{؍4Z1K\pp- 2LŰ?Ixsk&YӮ z#I[ *%c"MW SY4.bPp;ƘO87 $K)85R9euI@.?5SyW>z5w寵;]V EPc)IQD4'%Ҁ2>D9lYkW{:腦j . yZ}cfq4"v18P"Y-҈n8>H*sjXCE*m30l~"N1Vgye~F3FQω?P\cܫ-y}$=xFd'_xhBP<$ A_Vf+vQ'vߊ0:IDJ+6͉[˳* q 1 OҴ-PGOC#0U%*r9*02'ˠF G">W4ͼ UCq3Og(m@C߭mJf|&ȷ&Z,a)5i)RY5R`BTv`l eQ۞[=|qjoBL]N?"1⊀f!o8}0 5==e\iuAD@ʏm GVF9Tbu9_9c4WPñJm} uY"dXUA1MMm"ƝN's'lb'5OZs7d6XIsՑe捥v!Є2UNykLksW 4̴Q"bUl?I(ñ(ߡX<Ӿ2 r1)~5#CFoe֝† {Zs~t+CE6;QP@WNPN,/ xB6~ގ?ځnCH,@%cKf3IהTB<=,׏rP l.E)Kn Hz$eB<Fp'()[8PB=nد a={stc1Zl>311ޑ1М+yE}z$7$qhM$P]QS$8 G/fLH(Z\'}md|T#R1Jy1#3tq|,ҳ_\3o]/$ $'xaG$eHN,ljd$,q;U(Bo.'VNNed0V+,~1tطr.LTAe& >MtR&\6UF V0$c9,"./닃}YTt:ڒk&E(UKbpp|-!PV4Fh6Ҡkş&4WQ)CcJes&;~5xf ٮLEU9gpefBt,?oƜGOg#g®m -3=2.Vfkm,A2h<FvZ+CAc-eAv^ ʽեwIxϷŰ%-Abןrn c-WmwJTq"|*g=.𝠂E2Z(#&BLTzM ]=-.uҍPy$a-l@Z4XUؓ5ݴyyEOqa_F?<hֵA1vdJ9ːV$>5Է6D&C_(*?ߥZψRFe{5ݱ4+F' +n/GJ~ zV`B$16 X-Mb6t3]GߕIۣ97}GɝUp?ʨFhLDގ_lT`Ȑ9Eֻ 8\X ?ف=*Q(gSl/W9PC7I_dq Mp+s0}m:\p4@iA*큻[giv.dD|,QvRPD֣;ZK \]Ak:6`yϠ {B4[1O]̺䫿u O[;4[w>gׁ.5|8 Ð֎@j+Vxȸj|Rܧd ˎ+fҏ1bTfG%$nvufI &Ĩ1 zaK= K|CvZREy)HPh$d=( zϡZD J6Isp!6'b Jju@LZU?Ys y@^iDPB; E`*YJrp$2> Pءa1h }&kqT>;_{MJm7ƯqPxqT:uGD`fTodm^DdEih6W-&S|0c@I ?GG^(2uؘ7ga^-jOI<(,.Xtc IL©ؓ%H'aCk!^5BE馕MD%<#I^!ONDSL O[z^1^sKvsF1:$(65.e}1] WJGԿ>~DC#9y.cQrlWuȗF7/b<#GᢖU s[sY~Qy4}wh}R#Bmg A~Mw#v?VOz*GYHǢdADo~'8|VS&\uc$1DO1a2d k( N@ 43R-c{স1)k'/$'Af ===  m2b)Cb.]&m5BH(2l{I&Yzf24@ Y $ֺi?,9#B a?b ?K:\/V燸: [9F'р]nkT\_I`qտ%a;Ǯr@S~zaO0?p"|y[ҎC#LtrC%v)o*$L<}YJgNAM+t#? ݋ GF㴖QX'ah\g\gc s)}j(nR{8|6 ~`Sۯ6}4(J:8oTH16Niڪ.!j-A.@o vgUAi/F*)Zm 1s4-]RKO`-'d+o@GҮ9D8VM Jc0Rs%@B .͓T>ʫ`jA#0D~MlEUboM[X5s ~uj^m"_~hF1bds`5uܒJ+vIݞk2Qq l&dOTNd=)a"7L 4wH>}Y{ED.ze oh-E\ ~0+J0|5j}uK 57h+=ֱ..a3RZ৹K=h^7fl/E&-xl5`:X3&"7R a%A2]9S: 2C'숸T*ԪPu-ްS>#93c>1yj?6sF+ Nb~nms4''`'of;V,L2[񨏯L9 _D*hb I+]K1JS|@ lt\#kNcJ-18e7ݾ5IK0lqpF|L2PV(Hݛ}Ps+^Fn`ڈn5!wC~evR,{}' c<|[Ec>0ϡSΗc z |C!sub |L N|@-M e(,P^K gؘ[cG _ m"Īsh/ x"o6p \Ltey8pϏP#C 2t` Сb?x{gm?ai-/Nޯ#dMt~y$Y R?ԁNbHW1Q̩_AնqS=&eepT_h^L!t=KX.u6Tqt9`8'a9^53#2WI_G8$@{+W,=/ }95qP!/czA@E.8-B>Co#/B+mxtD, ,ϧ AD֧!v74*]UL7эI)zw@ybť=b#}D;!SyPfIj$uK7|`gWR i%+gS3bJMa-/*eN, mo.X~9(^ 3-1x՚gȫo#LvJC_}]3-fѱ6_g#ßKAOGea"$F4:Z2f]8m'Pvr^zC鏴\ӰBױon IXQm{?ϚEq*5`>Dͷ BKh+*fBu>8$wD▱)r',=&H}FKvzTƼ+ORzw+l8Ts~qg¥y E hZ a W#N1y^9?7'jfOLj[;eF?x/?uX"W&!2Ƚb0_ϠT}PV˅:Ev8X{GiȮb8?-Zډ t)X6qD0Z6nrt B`k+c9+AE[V`<{c5x !{" p|:d5/#Pݕ]n"OO2T^O?n E7cs|ﻹf%3rmfI0㱁 ݲOWֻY)f'kmC ?_t>$R\4Q|tL]Ct:4R==l{ظ|0Q0g.UbUU,SUٌV8nh1]/7P:J4eQ ۽Zf c-<% A3lTpusbq75_`tD9h0Øa/YAE nGV`vAzx,W-u-=:b+i2."7`U8- [$ [䵞 %l&pM6+BpZ@m&Bt]y$tMS58}Cyk͘vp>B]?Fe\V. @~]V$囡1Tr:_N6o#LU3͕ʫ53D72_ m6jh27hQGU&MFAG+ԚNf.;nAᯅ@J-z5S93S.c˽*%*鬾3NL5'rnkƓ={,x^MQY1LP2wv1N7a-m'pc$5\a.Ց2f犠*+9Z‚1n<#/~Oz \fMz[GT+<3U׸I_ Dd\W›Ez/ (ȶE\ت>fRWiw=?{Zۻn9_֠]]"bvALU<]'8x\&]Gpt!'}6BG3Qo+K,&=JYAgDH SNUϪ&a[Q%%Xv4дMe=i9)EG6*%al/nGL姼lBƲ9܂7[ CNMhei`%O)PJʼnA9ou=k }4^ADgyebf-@,ؔ+gr `vyky6DN:yR>S52\<:?f{w.jF*(tGٰ+x*H]M[.v:ps#Ni+!W@&*k77@Ƞ]6?p{M )}Bp,j^+Τm?a2 WK&Yp=c.F̭GB8>;ŮųC.ׁТb-K2N۬j%F+*\Q'ɇϪ{KF}|Tg ;p`x oHHV}/"dD\:p'*Ix`w 8885 %6cMf;lGozN^};wY#'$Ջ_"Z%{&̤eY6kfjcWuErT*{7:M3Ah?= 27hO*,=b+0뒵%m{[|(OP@YX5-cK#Q<+ 8(=!o8_n1Qc{/ӎ1 3<I)~ GDɑO66L}ii px ?5.9Fg-e @JT/hΞ ~_&Tc1VqfdzgJX/Q'b{؍uSwsLZs Q[sV R\r(Cr[ٯT8ˇD,y*+`Z %-J\yLX)[9̏Ryji H?sGb .=Nv.toZa..F-:{NA3)d#rضRD,!mP Oo \f5Pl d2BYߜ#둤CZ қq08BdUQ/bqu̦To3/V2ӖzxYqpۊ Pu7Du_ͺ_ː?ZwhhO1&ޖ4PSWy %Kq~h2QoO#~m„*4<޳':"o @N"tJ"Ncєf7SxbI5===E׃43Pt&,mwQd>QV Kհ>6a, hGa[MEPZJ%s=,tjC9LpN Q3#]+F rr8ւHeҵ'S'tmpHBK78 }j,robL\lh(Y@dmC` ..º4nU|^yKޭ[ۨp{Bq/mRlY$q@Rj(=F.Ƴe]lT'E^pCg`1+)8x9- Pd0%8Y6P)/Q@08dh<±jJsɁLK8# PSv$NOO8Lv_7^Qyۢ]R4:$.}ZBpIEqS>,0G<:nkh?Xt -t9vK<*JLACP z_4p50 $|n*d6`:=q'8)%L MvYH_;Cy3MEٿxz*>OEL?ץvREdw[j)gDŽé&%:ӻGRe=>|]rZZwo"wxܪHTlZ4GD:g` W>LԤI8QC[D{;-3Nm1[Lt@2Ui< VcW]jf)4GX/yXqFY >7PP LѺ]he+ Q9_7 pr;"Ɔ%EIV u8%)0xS,=m ﺋH^x①:HmDXQfGtFV?>Yg:w-;з>ͪAtkQxs'!ۮSp:ps24[KyC&N>ۤXp$Nb=zvm1A;&w4j&1 n^vV-rһ2-aAxsp04g:OIѭäai a}i QЦuOpdK3%Vbt',.3RlÄ B;PЫ~UxBAzﵟb'u13`VTHBQ\￵H1p+E:*{o`l!O*z} >)0!rP4&%w dfEDݘ,UGJ_K"I\콱4ȃC|O7Su0Iw;MH?{xu CVOe8ӧn= _'e5IT 6d*_} h.Y3) unI+5?vη[U jȒ1J]\{3vcB,0gp(p$9o03,V? :a %t"hku &@?')n͌Ih$}Xa r6OKeڌHO%Ve19ȗH6~Y.THgh԰uu-;6ӐYQ0.ҞN͐<2^@> )Ato[Xonr2_k`/vڑr?=|n'S׷۞#0Ì5g?iF$Nݔ\ CJh5zN+&2C")+**OċB *^"WCÎv#~I2~n@*%ZX^;H/ʭoNѼ[䞛6p*~$BwlEzafrŘ[g-B0Ǵ|,̧uDíZP0jWJ"mFJ47>.-x:6j݃W6 &͐a,LtN 6%i1ٮ,UYdlXft07jCJ'N6m)jCϔlY@44Rbߢ "lk3,L1x)f&>R rSzA[Adw ;똸 kyBIq8pI5}-1:,JH)ˏq/NYKmΤ9MJ,nϻ~3fC-Fw-cȺ]J2ԭ>,mob7F'7(ҲJُI;o8`(57w[UL]][7bɏ ϽOLⶎ@W 4ɖsǦɷJT@2d7X[pd%eȗ$y^x( ]7b*'%#j8īCZuWi~_\@4,M.ri-~yN+_΃R9dsӐ+Eg*,ڎe:W< 4cF2ÏTFݵ [{c>H}Q+'/bvJEhǴӄXAXkK-TK𑇂S,~y'.O]q +G! Rn-k⒤L0f"W6P7|-Kq՞CGg ̦.&VunkU߹y_Ef['p]PjAo@PܝKS ZI 31\ɥAX]b\4 W' C8&wt&>'Z!U7ל+ylwD5.MKc##K0"0"(ل e}{je$Vj+ hU8=L!$U}hd']r(!hopR 5j|WX$ʞ7)>T=43܈$KāI-yen:m2PSQqcpzsԢ)]U@πu=E @_(eMJ`vtZ.EKi ;ʤvΎ4 V^ND yu(fZGX8g)tnX, P_/@I/-#/02Qa^hy+"N{Hwq86-J}`2ahx`@iv%Nّ= 2 }h;2Y4# ы"SS,.~ _hj :f@V5Yg1xj< H_>J=o~vC7cLExl=F _f didh/«V762۪2Aà"%g:n*!!NtJzx-M} t94WY^XpyΧX̑IجsUzpDZ۬Q#|n`h௟発 uNmJ8NޢA woEt6N~2%EȩVO.%\YhmU) =ZQ.fM *2@,3:`D"]> 9gY@Ԇ˜HgCԓ D6Ȼ2B2ŌEW,‰S8RXKmG_I6V6K.s0Q򠣁um$ [* %X\k>?ɾTԊ6h,[GZ{1VT&mUuz6eiȅ>??:=Rs ~  aܡ_ PVFib$S {&#AJKlu@>@97_I…e@BgU/b}ʴ~h wBP_h˜'W7WhroPnq+%"_ܓ &fHqrT ;]k_.@65kjǿl̶,.)υ_. {C*l^VkÞt`H>\,yxS6,l\JzH w׽xl?qdGxˎ3j(wU[N K|Ę2/#>i촪º#*ZRG1*Hݽi ?L.Cys)Su_,V`#(1+*Ϧ@3TshqQ=4Vng=rxteÖ"gљg0&iƳD/`/^ "ĉRNԭIU`7 c#|KZC~Рc,gl89!u&/APH6kC┲ IuU9+"/LeAJy , BUs/zzy+Z @PXE 0U%[qDœȮNje]U8e]#Фv?o틒1ho 3!s]C /ν0m3zc&; { ;x a*$'// Vo|Th~>1V2H ܬ7 eAA$*R+0%A {LeT*7-JpΗgӛjQGڽMef/h:0gKʔ9|فEc1yo \վLgw.hC3dVUʅi.0[\KuS,NGrUE-VK83-3Ωn~?.Z{G֯QoYI~a=/χad` KsPC)%n *.PN==Om(Y Q_jS~{_Q愥CT=$i{wfyҞVQdDu|&n%܅Sah|[} Ӷx9vZ!sc) }åHKϻ~ Lʲ .rڔoΧvtyuY={h&6gXxr:@G>z@)'t97ep2L Jfo5(ff| BQ Y$&*10.)yLz0\!c}uYe,Ф0: N4 JG9Y_;|"gĕ*9|<=#cY+Q֤.MJ BKwk0i:;åzqiYP !BE}]7u¦АNDd,,^(`b1;?bZzZ6AcI̖E0jlul2zL`;Ftg+2<8 <97|^odM݀"'\[z+Gέǀq.BcYI{놯ݾoޡ K w=n@W:ՅEybQ<ږcEokB^i8NoY!`V;{%1ϊǼ+GGddYp`EToZѢÿZMB׍`(Fs3n]Fhrid{@ =ְ+D9-I,8w>*fا‹-K"'l9@E}5v@&hɝ/FWĥf$J֥ؓ`wۏ<svӓDnق lA1{,Q*0  ܿř mwg \6K˄Qh(QEg_z 1pĭU3EpZ=rz"gFp4us\u:G@D2[:V~-8S^J\raĆ%#WvMky/1z@~T<ɫGwcߟU%(LWOBV,m*jݼSNSE>kstp=ϝgN5wV[8ֿƒݧeNSh k~41j`5M Ob}# sPN5h{,>nf?JBw$Rq/U~% 7)IF0|~Fԉ"}<z2, bA^ը`fE{ή+~؝?_1OI~hSƎn MQӈ"om~pU00G`Dqf+6 RKda,ft p| ޻_S( ,ZlЅHL4`H#G˙ @</HYV$-^k4)m<; t{)[[a,J@f"焊>f6ywV_>2SyExx=6iqP#.$ܞˮ&v-)B0Yw'/04XElA9CY=*# Ǿr_|Leh fX"t@/7 zW[dWEho뼿:h/i0~Eg\,٢i:m%6ƺ0?XQ5eqvFUH΀WO嫘~1}fJI b%zjoĚQ1\>tXLG栏,k, Z]¦&M}Aa-N#1d6;WL@>WyJy5|뻣6J0s(QMJ\`2I=Oadfho>=d|@`6Zuy=w#'^J&P>T\6$lG'dMUݠU$I8ER̶< g=[okk]Odqd &^*]-2ENw9:d>qFmF c "FTTP~0qBajwaߵO e*v`>~:5$hr{ӡppCFP]"d&YB.VWB[oQ~C J3x퉓v84ahblrOO՝IȾ8 ]hFʅ<[ Du u؟HLw>Աz`DY!TZ53:dVj:MYRrDq^w c+KݰSF(ߠCߊ2hIG<UQ }T*j-4ZbˑAWg"SqمAP|ykD0fEQF-%^$žLK[L_iW"aAjA2suf2)R){[NJT>pWtž?d b>W{m!=;F'jV'LWk94Nq CM;Y4JGzdCu{"w6'5GAꛅliKGG}3RQOGObI>;kNnj[Y([\Wpj֮rT$mCp]L@ˏ ĦESX|'q‰.AP~qȕi[kmd.8 k♛`c5`q~7 h%3+jU9wCY.%Βq1 uqo9C.U>xsOI)==! GQ$~[ҖIi1S<+[})=ϡ1R7*h -a{5&R"ϏAPjŶERÈ*8HMu.KGH'DL[xLxq tA˼^ɶtk~%AVr/) swAڮ!RP %@ķaTT*Mbε1IJ9$[u#tO_M84򅨅Rڐ #\(B@翂zΒB>LG.#k5/`{ȵ Aa<:TV` .Pe:I8^+:WKN7u'|ѼI'XU )Qs`hyXqQ<Жg\ e aUu2`ѳ122{bqiߚ{aֹn UJj& Gg6c;aZW\=q}b{|,]>7 &.HɰI-c\\DO0*x]qaD𞟑BEX \NӹگYՎp~)s<@ cVH`e;:pijc,T4x)DKC!]FY1)`Q0Wusw&tm74|3{3\8{p>QD{jF}[=mp4bD4G ]"oNs X C m-(Ze?/wUֹ.__Gv97 4yu%ft0ԥV1۹HGPN#ƌv枍WIiV~aXHahaӼ@-qIzrlNQ{c|4G9R9p ZQh5<#Xm%3dŷ3N5|)k^ӫ'#| nخ!0 3ɞ;NyD#:V Af'f Wפ$AcP#Plv(4GE0 DԖG}6J$ЌձD/,yXI~S:#)uJKy~鮛ibhX#|CޜclGWJk\G넹mjaj\Pw9 F-7R-jGhi֦r]Wƺ_~L6KmM;A'c5ʌz+42 l9Y&6 8SKާڪ `7?ǽz`:@HF@|UVSZJ!G+BFwP&6qNg~<]A +Tkؠ1 ڵ6о&٬vmwD*A]bwZ:'seER-s@^Dk>sŔd}2 6Qt u_uDNK65D幮m{;0Ot[q» uw:pWdß}>\WIò~ccPT ՞r-prɤmQr@K:Z q1>};wGǐ0郢 $uӕU )kH>H>fm! 6 un:O z16Qc@+髿FU ?̃x G{~hEژޯeƿ!=ZWQTY}=Խt~< ~Da7;2)jU1{=|=!ic*kƞ1"EOW N"=w ެ3>|eMW"j("1&@KНUAG %'O[?Qe +dGLpO9IBz; GrcsY#Ӽ;: եpe)Ek267Gn=XIC \倘-wg_h%:ÃCaqp}Ml -}U(Azha%i1y,Yw.(syk~wY,5;fkVV;hdz[pVXwO]/$gNnE1da+~^w촰DO-Z=4{j6US=.GDI')<$KcbWҒEΓ..&ܒA7`}N>[sZaԷ։x[Oi %dy Mg5Bw5 uXFB2T~@ڣh`$ T+K½&|F>1j)PRdvי69^)ڡ ~k&p jdd? R<`# ~\M`a*tD5ζN93\D;+\an>r 4ɗ\e=j W+"vƋj [:ʧykC8TR2 kw#墩ˆhK3y+Þk{2ňe Rg,c圜4Uz B l&cX,\^mCvQsrSu:T='3k1 cbJT2O.ѸU +LiP[o `#ܧA@%{!Nm 2Oԇ t0nd X˧\RS؇֠EM{8S稵ϤSN'o2, gV˛폪nw:^':DtY3C s%"KHJ;dQb$\='%KtܔlwQڷ.s<``$|Y.t݁$a:?MRQimY]t@ycվԻ?#UD<U?#t,wp`QTyc]E?+ϊojpTʥק,.Bnhs؟WtXH׈Č8UƨF#@Ok.#M @S=hn(G+tO}LY'48u5 C`570Sf֑JsMpi ұlA )A6) /6] юB9Sۢ<2L#!q~; k#jb\}(ߧMߨA1 p7ȷ'[4˜^:^ooءXung2=vA4e'?vsG٤UU9̛viM/DxȰVs5J!)% Z1A%iY ֭Wd>2[`ken :@.ch*y`(7BZ`7= !OZ@oI҉kVH>247[x1e=O@yUv{qޜv $6u4={k`h<6#]XfMIo*\p?gUf+e8 ?4hLT)yOeΪӲf!Ch=?O@@~am2"n@ɽH¬W2` wJ E+jQ,ГJ{iT$ͳ-qcY*.)]hi}jqه\y Q=އPou;Dg clr,xxюfsw `DŽ ő(kJzj .F#w&RАH-̡CH&c"o x`Z?p{˿kG7ڏuBDu̱nfP7]z?=mr;0\QܞvLѲ } ԭ/`C UL6#lMZ{Jry(7T|%8,WCLB9\IÙ~U7烱Qj;ގ/RTÝ̔Z]У+7C ؾSc̢X]GPv+i`{V'꬟ӴK݉1N dCjm1Tuiۛb#p:@]X :`D|aStT[2CN_G]o!C̖P;d *m_S>hBɧ5e)|2zl syuǼc#~/5,Qz:}&1Lldb@LlLk,H }b\5C8:EtSuՄqE@S077Sd₣J7K^SRbGe!d1߉*>ЋsYa?Pqu]BQ ߖrh3o` ת s!;LTb RPm ,O:A?g3)I $Ck5>1ޟv%nH;,;ؒO9qoQ0Xr,I[z; ~R,+.'dR}:SkСdҞY*Lmry~7pyŃgiHCF,ӫCs4{^IL؋o6 ΰZDZ87d:Sq#Q\.Wkq~HZE 5'_@ҡ04Z4e5~ͫCe'[gb2~-&ޜCn X\qY}aGz2f*OCs (@-MR2[` Fx$>7?纋}d\xF]2Mс[ ek$; Ѻ(d,jl}2 圑ByS^R|\8XEiJ}*hqY_vFAz>u]!|xP ӴquioZ~ٞx `I!NHAR4&eX6p#lkr^-ߜE pu97.5) z,p_VWOB.c&\k9}zj;`zH;ailmqZ-E;j;:s#3{JԲk")Z1UDGXIIQWu*J9pq$$3 u-^vnDy>r2G_t9>*$˖]_'#HWW*oQW>asiy/ ]"T#1ŭ""'#nju퟉{ةቱ xG*ea$M7Cy.20*1d vy8zLj7 :F VWĢȤrWEzD/'oɑfrAhF|AFz9elB1<>Fay *Ԍ ݞg⇡%,+ieNgb~%IJʿz3ninE,yC-s"oFސ,Q3 [dC~ZX75SK`%'@I2~Wwք."}*-،˦f'׼NMEJ @,B6x6@Ԁ0w| C.̝: [$gU75;u0_~<AK 7t__ x\qPGq^ycn[ј02\ 6P5hg ߩҴSFm{"|G܇INU='f"GdbM=C2bK{jFCl K;jFjX3sbzYdz@x.[L ]hG>'5nLzK<"65Q)fyCegv$=* & EqfW]r4wQ'9)6[y[ [jO^=Υ GJq{\؈l+ñN;j#Ӹ[ɣ;19_DJVJஈX*%;Շs.5j/I PViA <$ԳTEܝTI2HMm4x l7i5x{&E#Q`c Z5-D& nb |E<:ՙ7.ũFݐoȸ '@s{Wus+HnDķ *ép(FW`c}*+G!N_u 'L/3jY$y@/.EO,#%H6-!fЭј)8$ۥ+fT2e+H?7>GȒ)hUEih?4Dzwam͈QqarK/r43~B~*N*% B,6)-pn_w7| ލ 9i.4A|eФ}$hrl"T5jف7kIEKq6EF5^:>ۉڍOmBvr 獡ʃ{y0~a?$S2ʙSa},6%) 6Y|M/wqJ9mvA21u/ .D3O1Ƀ`bawcLGEv[|I.:tԄyϏo1NMCP1V,JԳH@_ y_;"+j430(P*=y+ڋQt(5Q]Ans4?O&*FRZ9Dg(6dWOY/:ro?W_.xvR&Q6AP 7H@|mFfl67-QZtx1@Rvfͼ-&2Q#ޥHx\,S"ĪvםO~IpcvHLRDu+!81$M=}kS Tٯ*]7:SJU 3kiǹlo%38敧$3>ݨVlRкPi(YьÿD5Fz 2'uPq=gei@;D!M+ WiD^.C*ǰylpXzKsFtV5\RU74/BDZS6(zfYS06S 0P7x6X{uǿi<1-WȵׂB}S?%Cs0|a j`r F_Ϝe76e9YXYU?{0<19Vzָ1TEyscR]TQ'%HhFx7lLNMݴ6!D}R̆k[-{3Ye)zLSD)^۬-'E_,i!4C]\2SCzpPgtzJh64+z@YrVIK!"})J:}%=8 qN65. -lFK;(yTL-$yaZfzL=EU:`]_{C")H;?jXO4m׫!{ _g_-4v惛{X-}~ĭy&z4CWS"4fMcn3l[d¨<-L2aL $Ӌoڈp\ wWXmŀťy5z6K&a9X &JX`Mw-4|Cz#R:wvJHh7Ne2Dxe;RܦES.\۸9l'Zs_>[IjGBF5 -fSF05"DN)F|'JteE!>^f9vw?zP,ni*a@rҦZe )Ӗ0v}{)X7j拐7 e<ĨLj'Z0uHݺ͟PEy>LxH:v702ZԌ=D,rtF6ҐiE#Y!P<{8;0 t#e[At0gx~4s3yp&mR4~K4{=Syo@d}D_Iz hN Sf.9_ؒ*6B56>h1Ö;i\4%5kF}y5$)wF&_X2ow48ljtw9^f[ ( b;Kg !-"HQ&-=ɋEپ~u?Qɥ  =W/F3ɓQz7wma 'F)=樉MuEɥ>by*:>Xk#c0a3 }*o  Tjq[zkHIebˎ(u DDWyVBdz>1"sm[5>ؔfyԛCz6pJP宜͛VwzE!lr Cܙ; yW-I"H X[CrX(;S&)>qaBĒ nm dB"|SK{uőK=BygҺ2F$Ǒ'1EnoXȳF6-Xs3Uxo!q]bmR'* dF<LfŁl1uN"@{fyxMݐ&=f2&a TLԎ0|uSf|ouV`[ikb[4=k:d<*&q%eN5S,-;zkI=vx`⾛27+m-2@d|o kFG &Pt,0q΅:☜ R9p͗\"jɫv=r}}=!ё%j#IawD zlJ=eZy79ن8$J4 돑gթEY>ʎ=%"/x@7lW(X S0좂-׎˻{!$d}L! CcCf/7#2;MH>:z-nܶ6^;t$AfAp\cmiV;IUfZR >j9SOͣicщM u;#LnZ"c@sw;{TieUj)6b-LPLq4AFMJLؒbJKvʳ`9hmD~;d(H^N5O QrzE#`$`m!p*>شxIcj7L25`k~&=2T7@)2YE-^"eȀUR(#8alzn?jc@oZ >iC=Hne>*P=V+/:BÂFP[yuF+ pޏ|Jw7/8A&TtXw9h:!3E"@L*䔶3 `xP@QReaI/^Pg_}ސQ<%{}F1n됂)SҝC-ځx9gzɞSs"җشkАfiaM""#>"@K\tr5s f/|s;=M'YJ#dϰ9ZZy0Nh>L\ o RO 8L}H*Iz%%Dmr`y2:G&&|T~T_cJo.z8uKp7]׻DA3?m:1"Zvc%߮zT˅X_Bi:)YL0h,xN:CmIVBrdyq".nL*169:b)}܀N5``ѨK␴Ƅ4 of;O{F.ާ?`N܁rUh;P{Yf=+a*QG 2*:{C3ƭh@OHz%,vB \*&z ñ6[uv֟kxǗ[ w Jc rrwAY{2ᩐB5Lg1k\Ęk ՋX̸nT 1CiK.9AzڿԾxTpt 0 pT69OLWgY3l;9zMtzlte8BbI`iU/Rnd*@u5lr`:JQ~藯><Ž h&/x[ ]9ѕfM ؄OppGsUZZ}]T4Y\PUyI?# zA8 ԓ{ S1ub?w}^֬zfX= Uwt3R)'2ꦼgA{ WRV{r !T#HcBa}/4Ry+zKedg* Q N>Gp}[""񨔬&7R AXS28m6f]*3^i8o5ŃʿiwZ^"a'nCf3FȏαIGR) :Ks a2\F[o֌s&3h+Y2hvy3Վ>m˞DM NٖڱwsI˫# 1=xaST\#FEJ>wJդ~,E 2'ۃV/XUQ26<.שg S-|wGw zXM+b?Trk'REfD@ʳ8\&K*)=K=ybX:t,ҳda9Z&[h%G^77|hZ;tJ8rvIM!΋~iVtC1+#YE S_q8]+!Y"WA׽]_V@]VB&Ws/ʜVG |u>T$\GJ;,3\?#R8UE (sHI}:X'ܸزg0NOޡ};~vٌyT?LC٠#2wox2㢁^ l#k%C.UY%y-e'i)y8q _B "-包gOoԓ:RbHt&H7H˃t#KJ]-\}fGX=]/[f|̛#xxA/EsNC[[L-fSƌ1ҩdv,#ɚ}bwfIIWS9yEUGVhڴ˧g`TM˪'lsy޳ < TQ)Ż7dh/}QTa$`9,l L-vZ:I(?IZBذ bkUÞS8zrs*͚Fqa.%h;2jbXQoCTQ(e*N㡞M%T 4I se@k'Zg)/"i@H.a t2Pg+bbzH)ܑ_$hz]C[` 5:UaxNmCzk$hO*Ci c}yɌ*vl!)s#I |E9!:`+ЕW(^v>cS|AO{LoTX]r(3Frů>Mr!ĿU[p1ܜ^Nߗ8FS3&T^ V%BTJutfg{"h f|~>JQl Y6fĜh?mE@=f?Y_zM#O*I >ux1"))A}jh{zeX\̊%ukb,Y2ťUWEd33̹`+4w*X"]#3x3"~н!`ƽo/pڹeOuNRq2Q:>c'崓tbxY@0dE;/;sc?j\;R$/_ ;ԄVQu A[\a>nQ9+ܑA/8fZdr.@Y}MS,cg|J`*iWkۜvjSm=[APRl(1nW̨?\k78$iۃ BI>!(L殰ZS/%Pψ&)_q2G#d HwjQYɰﷸW8G.C7^fa]w q.ZQwIř:uh0I n%#'X۝-- iW@  {UlγEwcp"y1cHl(BQ=dr]Ma Qr%4Ĺe)NQC_1ʽSnC򶿆#I%%" oInҜX -A 6-&M{ ߡ)~±@ ؝u` [W-Bwg#nr=d@'݇#Đ~GL_iPt7Nϫ! ,\9$F_?5>I⊛e(c&8jU,҃ mvWT\"=XUA9 D}Y$GrgsYa'/z}9~j JzZSCַ3gr:;,s5v̵c,|<<ό`Èp}v7R*ӗW}ujͬvjξʆ4OƤ4!8uHmI+@ 8"_mߌUtVK2@W&7DSXNd-qHC@^ ȕ1X%Rd y66σפ(wwݼڏ.m􇾯v<`UPKbB%_fQÓEN犄rի'n\<]mWvoot "h ޹3ğkY~)+=Nۢ -h cƋ`Hu>]I wk ٞpЏX0jLn(fWPZMH,~FXlA`Sٞ bȖ2M<:Ca\U@jxhsk'UyE/![*54͗sSG6a]1쫥ZɣtM{+ֆ媁\wԞ5nũ}0ݼǷMRDtņe4ݖރLyUJ.v|y>գbJOD$sAӳs*w `Lc51Vh\-q_h; b/ I|FrG\lda=z;άar!K8` IlXz\SoS6E(^`xSCrc8plP_qɆ_8I̸o ' m}H" .gѤ"n"K՚,-]yݜ~MJnBM)q]t:S AY7 z nee-|K00u+Y`3c~_VN|W 7\eϽPȪoN*1SmHР2-;h7fO?-N$AXi7wO>ѩw3U7݇FEg~xe0HcQv*TfsGTXIE%zrv@I4z>#J0C*x/2ֿJ0X JBX+fa* 4̣y%?;`Lr7VA3Hyk|߁ej/Tt??6f,Um;Q_Bzmo][z^\gpN1uiU ]@SQ.FKh8D: )AedѧsIΈ˜ꋙ@3cP=yg 3Fx@`MHbyC;."s}FN*[ۘL-Òhp ShjA̐2A?Oa3ey4" PߋXAנ*~$-{y*6rȦgʨCrPɺkGi:#}9 i{FM!@4pb ŕB{B:IOq6n"jQP-CiQ me\_bՁzIb8rȍ gߖxlc9ZrY j29{M1#g "BHO (Y.l_%!ޠV~\jE"&|v_S3@BZv<ʭ|ҫ_`#2>&nlz|.9Y+\Xg`z7BK.,'Դ]ݞթ*?wM/ϗWx!Y/[4,(f>$YcTpr]>*\Dy:{UK!FU oa`K"L\ߜ'~9!>~&""UPy'P&H2O!d穩BF]cU[qBIvo.m3U ۼ"9BLAҤ 8TDm# Sh( ,ɣZx hڃq'''|=Q%lW ,ު/EK IFQ~Uv p a8k]}H*CIhm3[oDDzƃhdՃ/ح&3r =YUm8Fp)!M")E1Vzom"`UB[6kk7NSbUԡ d`ryu{zb˓O8^g–aލ M|܆p`qgi=hQBI4_X{Jt4|\Av6QִG^HZ!Mm}Q.y, C` ?>;G.srD#?>smg @)>C'=,8MSGHEAZL-`0Տ efGͥE~dnHU拡Wvuϊo)I)n 3. 2"ksDҚ0[6׻Յra _MT#+g)R\.!b [-sQxu>mX殯.T)D4zM /H%"DEdk?1Ձ]Xr(])>üH Ad竏Yuͬ)wt,S Q]AoL1v&KWo\?̒2$Tlfc $qV8|(X4f ǂt-BdG'ͭlivR6d\KRH%"EUU@o$GX,ܪ7 }Q]8[ru]DxjeeSK0"x^lž V ZD]A9}'bTQÿFL# ¿1eIk;cS"/KD ϴa#Pl6oԧHFt6SbsƠ(X6Ah Vf:1~Y^0 JO~ˬX\-$KtgX@iЈAn+Rk/ ǧDX YO$7nμNCeʅV~;Ng~Pc͍b퐴HO& v!_z5wy* ?L"dH@V  z}uDQ:ZlҶ} ,/7*XUT1PSáuR4לa!B+j/$8Z@{sQSH?͒:я>wW돳GS !+b,q~qHNOlzxO %ԀBiȁ_hFmSAxľ5X*x-u=|<.G>"%[pRt0MV5O@Q&PFV _YVt?>mJj@9 8$ۍSwI^<\(\݁ UPP@* _o$)&:D͂m4 ]x&܀WίeR!9Hi,s5pUT]Zr ofP' m N-CwDh+`J{ !([bZ:J5'׳րM+fRz&׆ꆖ57hJsuIxi3Ɨ9-vz@+^`Sul'o[ʜ𛀸ލ߆ xNA.D_<<`$ZƩ DMZ4(H7>Hv$dlIBZbYeo%Jw`iWjɣwkzkgK~/;(ŧ`&Q ]ь`%q&IHcrIH7:Eï=kJ๳3H]t7v  Y Bo4iM%Tg IIݻap)e^=^PFOP8HO g]B 5V\wP#ex?]eӽ?E]_捉V6‡0(>Czg,&dݘu&qϟ5hx"KYP -k=ͪN=#dg!ߙLw`l6,l9_gVQHGsPp"v`!yO(q\k<<0av՛&"$LjmZf卧xw6<~ru}TsEC$TWKL6A4vKVEGcN0rG2z{.T 4ߺ%' mcenrՄ|S-W$[A)͟g|gB}y"6~ɺ W*,gHG9DMc mR!3z GC͟ʐS9?bR9nz״g(kR4(Wŀ f:.H,祈_椤}̫J8s ׼GD@ 5vGb',aIVjS*+9WK%=|lY, aMv?q\:0mg5.Z ۡH 鞧VY++$lNv/ * L_}WL. >7r8f+`D6L@x57bF}Njԇ`ⳗASElؐ{>Fy:j-װ $mDHgCBHd?e|aMwU[޳|?noJ-ь@)4xM1޿jW~?EWfݒû.W|J- , ܯqO١>?'u :5u]+޶:tJ3Kb$^gOZb{ww]߲6K $<;_"PB"` ^ll*)9.@u )|R#bld*OXUyvT}WqK<]k@(XnhVA> |‚=RLi;)&"W|S.W p  mὟ?[: %f(9(Q^^wckn7hf3qxnSmS5J6w#SgSSs+ooXE2႘BroJھM% F#E En*XSu8cP嗷ۦ4>pp\iAT̪| O5hsJnәĭn9kt.e(5Qɝ,ՎxߘS=nc+4k|˜,ppD-uJT/&b0 ѓoy7O_a?$:xti4*AV-x[8q\%QVާrMrLİaZ[G-ߐYe΃-TP+n(^pI5ol]CJdkN {re_(mI:m.82¦>CO{:.y w̃~l&u(_hߚ( ̵7zAS qgOcԮ>he2.ꎥ>uOwip2yu{[+HV$6nM:W}ڃ8.aw: H$JPt]|2O=2{vx#n!hl](LSpwc*Tx^nj4|t2'} 'wz5*b;g2|=Ed6({-Xmf( WTP]@V4)IX7{ƼBy̒g=jٻM9K~bY}?ʫȆ-y8<;+_*]H Tb30eej5c\* \>-G\+qx$P *x OzJ6I`(Ll“$J/<}yH46=Wt~'dz%j*άO| x>-y v4ۢ]ȯ󁆓ZE8XRGMȍωٞBf4dJX_w"BJt79H2V}@Եp|iU# }_Lœ7bY@z`ҹ5q'l}B%(P g qX0Pau3OVC2썯̩q.R&M ]O>\kIz*͇U$ 璝,qpNYfoÊXP)~ ば_T?Qp{V^&qP DME\=M̿R+nyjT5A#/}WJqD1a=3uAj+8 8i%g| gy?XA{r.`!XCITy_ԗ&Y' m4h1 H[ir L y, f3"^JbNW$D)T}xpjFbr̅387&&Vf!KYs}f15s94!C]Ex:+MJ YЍWL0^BikkͻՋD~!Vd\7eM(ޗb;|]h4?-.?dX6,Vl CJePUkmtؼh!{[?<Ë uIN%`뎺ł 3zo e2Z&j)~לbk\Tpi}-Q˨n"lӌJIouEOXZj!h"]'-9}hh̆qumn6oCÛj+`IzƚD24 H?r;m/unL@Yw ] [\XB{qn4OaR4m"k>CYI-p_'-,k*Jr+eORro v6UGKAyANϸσM3C O"43gx OH{{N$$]~ m^Tu*:F&b^"ohJOةb|Ngn -I 7HzE.U(So=dhwĕF ƉhQ>2x{VUV,^$3 ?:ҀVAepDY )cμ MXWs-Wɣu0Z C}=cti:m_!'0.B~ld@hcҸ#ve**[n"MU[.62!/[N[^iFtgv؎3Mt蛚^@x>n\U#uΗ.ϰܹ/CI/ŴhEs>UcP.~f!"gHM_,)Kﭫ\画#Tf: NbV@ oQ\:8盹>Ov8Hu7x%1uHCN= &9*<+Nytp˽aTD A%:@p{^80 @fpG#8r8;M!<3[:_fׂ|11/v.m۝yBe]Wu⃜F &jlY8@0h0:7H9!ԝCM$ֶw/Fw&ӡ=v%.:ώ&T:^wX$ Y6@K瞈yXP1):rL~Z}54+__|vŋT,OwRD{HU&(@:`iIceYyF  a WwÏ_y ^4Mmott'u@CҚJ B ^)ȟ'y*[[}?Թv,4u vp#h>-u/W-@[E^jy>SN['9^bټxHgъpZ-A(Ѳ>Īy> tB.QM3uJ+AJͲ, %? 4fFG^000!AޖbMA x'r2`rlT ߾&P7cR7wbYʧPi9 a;p:KJ x|{ 5AޗPNvF0Q{tb `ش/!1 VW_8Heє_Gq<(1"#* b@i uj0f/Gjk`y<#<bETǯҾQBT<[FjsѮlͽ79Y|"&5{L"MW̽"{8Ҁh)Lbe9Y=B9Q@1HeQ,*F@C!yAۏ+ʹUw V8J ̮W}^4G\NKȁ]YMW]ʛ`%]~m)pxvp^Ֆ jiz ]r\/Q%zrTN/߆z[U@W($#V9M!V-Gi\y紼".vlo \[ºB~:e }^+0ӏEba ˱[ J [ Y7;:{-%2ш5E_1IQxRn@ ɥ+*^ziX2ǥu"+f /5Iau봥DC?2 RT礇c~B?|B :Q^S/\TCGCG+Icp+zJGg)~a9=@~ ?|9e9}C`>R[ɟF-툱>0s[` T)MEC2- iˉ.Fr$'|sBQC0=*ib?Ȑ >SK]W9O_WoATAAa Itw']$*+tQ$oͥm5ϴ MbTPl,0ίR'.- \)i:JפR]|,ApiCLdzWε.ۋ%jvYO|0d.GC0jtJ}(_uňI|g#ݤuк姿A{cLjP ,ʤ w(Iz (kLaftGPgoc ͤ-P.&r)- kJZ%8K[LgShrg٣h9LA,c ZrTaiωod I}01їu| '.]!k$Azh$^m|#!=q&AJ1‡J 7&t'Q _Ҡ1^1lGĖXCzՁ*+amR6ڂEFJ aB"IC#p,$-~ڰ9aPJ x&z.=-mٽղ>mhP{krg D[ PIу'GZqfKU2aiQ%Ä-?1+ ۚ&gl9Fn Ntآry^HrYv'ħ׿= zmAPϝjA8 E(j%k55 `m(ժ?(.-u +1m& $.6)gu\C %eBQ)PTR2G;\IkkˆrȷMB?P\S[NaJ%Jey-y9 To:mQs{ALwckhl1E3Bq JZibY@Xk4dq\ Y8{0GࣆuP[a} جY7&mWy9/czz odVǯ\\7SCL|KdM6R1xŐ9uFيӫ[^:0!Z?:7Λ† 77Ǖ*EgʘJσLo37><6JvWYcJ=,-3rji>b9l0a@[19#b)kA]HQT{N7 LmD\$BPqtd˸X| MqMty,D&vXx"9d]';7?ju[,&V+t)\>\_#Uݯlã zh1 Y}5+h{x_x; X7ʻHcK1 N)7ھ0 =])S&(ԉJ2I)qʷCF̓9&A"RݠHx| ^*`VZD8`j&b`zun5EoI#UdŨ!f4u>-7}^y*׀sg[ǯ[3DpfΑ2b'R0d\4%T,0b`WrNJ4[ƒ,G[Fa{6\уh؝]Yv)! ߒ=b)RVVRAw]_,o& EpGHSyzKX:OS.5Dz m}wUSm\UBpIs,U*Ivd+aO‹U}bT;% HrqU]`ypTԑkm43w4f0p0+S4uz+ dhbP^^ $j_"IbGu.BFw@lsO:Jbk}1NΘg4h ?@:´3p@C7N_nfj/U<8%uDŽiJǐO< rDrX$I nyv<6 Ӷ/ I':ZtN*KnO=%Ak$5DS8>c+͋K*_U5hTto;='ܴ?Z}:8jv1V7'yA8N^ NY9p>P];dV>HWe_/ci&&.!۷al}6OȌ*K=䂯RhޗŌ)B*Ld]Iad}fy|6wEɁ[YIRڜ[Az樲NZ֠'M;*ЂBKt Mr۫%cC 7a8.uDD',ZwPzY]N(e37Sr\\vP֝%&N.R5dP/#A(9KT)Z Qzrp\,:UDXzZ%z7˘[ 6is``#ȂB~ƫ.pniĹ1<+$XkV]|W )GYX7zw>|f(n+nv߲0ע zj}Tǂ7YEMD|!N-7AbEls fCuv"B?{ɹw6}A˷kfZ}XC˛J/,5?,L<['h"pG8WB]EpM4x598Dˇ5nF.gRwVtP,4_5&uՈFպAKA0(9m(٘)"%@vqR /0tЊӦR>eD*2;)n6Ěz -3T }y9x8h)PC#rjjҴho f+V yTKQyUJ2 \Osݚ+`G^}ʭKpR t z͂Qs_Q݀A-qY4Fj% 3bn֖Mb7F.JVqB<I%Doys P>4!BZL>CU]/P1B7gc%Y)Zllv3)NM] 휛a@dY+x缄(£&9:T qAgH<Qa^iti8hMč㙃NÌz HDbWa3|w>a4W0',NE%3DCFumJ!7 UgXń(l4ܫE.L{A@$Kud$|hr9EwX]Ǯ(aq9>6hJ|(FR%Vւ'X8bfjp#Ű"Y'+9amE5q~MżfTNSO#Sƕ./u0x[;\ƏKde3 ˢkW5sH\sQHҏ ?ᘓ$zNwŎk]\% zw|A *FB٨<˥g7 '^*վ& en2E,%>d[_+@؀H&Jq]p 5iOYzWFޓdז[Q4SHD`Tv*gDz+‹'gWoMUY^ʬ-ɅG8Y:Kl`σέ*Rt"B0&^9Ko!>9(")Nl?ٿ,ƽI Hѭ A/7ơ"Ŗ@"mCYr nV=-kk%0],f𯪟t(wQ\j uK*͎hvx(T Zb)l B~M6DKo .;T&< xn^IiR޺+ZoQz]g 踾P05 n!,u:Յ}P.@+B&4@DDggqƩi"vQO+hwD>Ltk+Q+bL\mv#[)@޷YMF6EEN{ 8l6#<K [z)wnM(9 Z?m;HsY5)D1 J>_*R閴 {?YY±XȬXcBFv͆A/}^фCm>t^j `m;`?_V t ekW1Wxl۵s[:qnctqc+U$Fe%P 濘dx k):YWkɆ/J[*(w*K-ؗ1ʁhw@WpO>O%Aũ1JDHxh0mz+#dt/F4a& = л`ߡfʣ{ڿͬ3xjGSNbB?-p 55+1:"VdF{?[l|+ZY4_W2BaaXD-,A,eWPV ]:14shpj~o**^ll%BϪSRI LƄ_yS0yz2uJ XpS2%E2ϷA0W>WGe/<ۛzxh'.ّ{դ#]`>f Ė_}0S-_[-dT3 ;Q4_3A/fy>j D<"aNQ]Ysj.L8!]^NT-;XͩU4&C !~*B+ v 5y:d/H܋QM( J=] 5OSыXɪ G DЭ$Ӑ`jJԔ_:oO ۑ3v]w욯:օW7ׅ:A +f՝XMR4Ɖc`^$ս{]3]wK"5 WD2gE+pFCǹӴCg*7AgƇ7nqS@~:*iݸ탪Au~:D@Z.t@Ve4KHy5B#ymf:X\wd[Ufэ-~Z ҷ? 6 ۣeHF*F_S4s%ӔuR$GJ`]3# E [<6mZx/bGRvvi&?N4GTOWmhϊS^6WEta x5mnly ̈ިix_@~Rc"k谭L89syZAWk%xc>.W s`ݒ֌(lKYJv0r})g0.gO`|V!ƴ~|}% <( s7SGTߣ1. 7:'Ze[#m K>+EK3E7YrrAFVLx9d2Al@qpb9(8G*UdcI ϙr;!RPd:E.ŃdW_I1|W{V^4^HXv_ȍ82}v36=V[/jy "-2D%SS|"G{{_/X8ٰJZP;& S)V8aH8 U l 4"I[9)]:czm5q8+(X Iolfos!Uf [:h$/hqٌX:Ε0{RIn."`g S%J_}HgK@Y^bji|I=HD yE6+'P_j).E/5 D%uلy HЋP/A|Ywr5.g ֕Źwj|ExpߓoƔAHu(8hO2c|^_B'$'3l:%nAWd71V%X(r˱ixhJ(-fCzH#'108Oڛ9}ѥ$fȂUټ (`(_DSݥMPb@[[Q d@yJ _CH)YKA+t9I$nfKlown\3ҀK;/#uA$ S.=#΁y7,ap-ӆRe$̈́S95`3`rH{"} 9YA1AqAttRі\z8O,g:MS+u(^XyCi0t2s,(FC!k{K;{u:>UP`h~fK{BG>qgn> xu\x q1&T.}36x"(E(o3N qiAծ$ {\?I߅-֜2gMHng]1U]+8뭞kKX/n5#%𖇺 ֯ Ib1v=kB&z 2-#UՓɹHd{̫sKv?vcp'PY$Xrp!_o|ʝ`?v@hS2{ܥg2ZYW, j}nT4c˦G0jк4"2xB/X+N."e1lNU2SUхR'4q׵gxk1{hzX"*m*cl<`}MrJ]Q4_N"#Z?`sK1ZC &1uY?l|yn9X;ͤ<yH M̏'5ULz "NHT{тKȪBj \z]ڼhOVM)C:,2H_tVfi=d6ʊ/Œ(#y/, ;}Dj]UM#7(UW@ ]g#8o֦^hM6}-y0d9)0{="#nt[OZl,3%U2K'{ku_(#Mq1SGW`֦ɔ{=۹ld14[ xے0X 2ue" N"I_x£ >`j4cOPKFJ\uj3ێPxZ9 ~"z7.2HAZdk0; %m]x~G܈C)*kݥb0œUTK{ tqj`s np]BU,_8 E-E37y4yZhqx\9N:oK\$mп`7k4d H:;DFk=ӈdY{muJ3' @ t; #CiomJ#=1J/˫RʐՂrYKT.=A,x ֖=$^bjhR.@uq>!2'oqʩzUH]\܈%z_BL^gx~U?<CZ2.駗ڮO_M"} GJdL=7y<^kva/rƿ9p |*P@ܵX E_^}h)1@ΣK[֠UoY0DqFدBw8])>tEKL&C!S}^{ى.IGd~!k ʕ=Eyˢ<-zYo\o@2;5P|tKh%j\"4K4-OD"Gc(2 lQY9rl 9'*{5C(N96MZQe QQRc4~kؤ6:RUA pSvȾaq1zz`(PS z5x84Bl&Uy=aݰ4Da#R\r[?3ǣ8r۰e3P>gP64-T 9l)T["\/?Ijzq{g"PëeFv il7_ 1KlB'awu6pyVLe'& ?/d([JJb.ե8 `R"ۅ`Win7RmD(&m]M.;*Cn2Zxϥ (N+gYTnzrMUQhnXhuh$E>'z*4 J*;x̰gZ6.D ˴>#0a!Xp8 gV=*FuY쒆3FUzS*<ߎ$"A!Vdl΋cWRY&+( ߱O.c9?_{xm%z2*M2u(tyo*NN""Q}cݽ&\.KSj]ͷm[",qƚPQ[EyD3P ;]$;A;+]ؤΞP݄w襽3tb߱>]_+<-{Okb~ޥr`G/4qV6^& >*z 0I1HqRʘ Y"Nu D%s2@R~b+8ԉyi-Sb*#ަҡ ؚ$uoFxrXیPa'ItlΉt⟩4sTVL>f"zZ->thuỴ+C+] h6Wܫ#@jp&E3q$:d7`i_R&q̯1#v6y*|jb&wyQ?i;y(4|;dң~H ,4e/\'-_B-xgy8Dwc4ø&J"8 з8{,,G}2 HyA12M#U . Â,v1rn['jw"tI=dd׼}hZEYg/Ԋ1Kˇv`aIsx'n%us0qq] !һK5Aְx<2r MɴI[ȹ rUbiNlZ ;Ҙm _W]ql(Ws$*tx,WP0R* l__h lQ*\6Ukw!317o@6u4`'ٜ,tK(ߤeIK@ΆSOkJ|FKԧRjp˪Y9Br񍜳P@ﲀ~o;sH31>%tϼ+7GBCOγ$qF#8سcZSs쇕__qK!++DgDG??,n\o0h:e3̘k ˫]w#ֵ;M2ؤ1Uϰ@$FgnGm\QŖc\o_밁0%ŸHx49ea \Mp8['֭C#O74z#,+n \ٹ%8+J[5چOV1{ >ueZa^ța>N )8ހp63n]do߰;8#R#WO沆beٵ-w^ ʜڟ))fwQ3tFߨ $؆>>>o uA [1K|vt4qzCIaI Hhfi.\rBfc)}Wo&Q)hO߄@W"P !>7(6{XH a3гMǴMJIS˓z@01G@y_Žh>U8 Tn @x,%|pYt_[pq QƅcDdhJCO>gdŞk:ҁHnȈYvHۇ@dP$7Iʻ5DhG5DZg \9"=F rVau_[k:ajdcc'u|5R.0z~֥h5j͕טqQ3RٕQgDX։C^.-iO'57rJ ɟjk< 2kܘ#5r%%Jn聆 L [pIN!A e\Tvk3/{[#qS2^ڟGr]ulΨvWn?$= 6=ȧ\Plw$,a0ɧ*(R9㙘Wct-ʢ3)b-0'5hRSsq)5]}&FA?J`>l}q0ؙD7Bʽw|ƙ5tOR;[6. أ2F#GQ%2 'r%\1Vhs̜dA}:Vmېl[u_K+5jꆃ Cz se ptD٦JTUq`.a>Dw=;-=Q͠- @YSU@w|`A~F}8rtL,g-(_^K[SpPuad!,sOG䟡K/iQ-[""d:OF&#Thў'h wsKXTek7bc)9bM˄kSj> TuNP;z6РSb'>0T] Dtd01Qu !]P8ZVhiN_Ȥ8jt*P~f<9)r~j*ZsXsq$(VWGN&K;{{3[*3q{˖Mv Cmu$d֏ꦉ :O8 ,iݸ{.cRExDy}.&O%^ƗI<_͚ȧҖ["B6 8T?IY꼥^Ojjt{[^'t\W0K;_.~Hg[x_s#KEf ҵ#"\T{^kT\w j2ϕ[X"^mѦ~,n 6ͮ*hҧ a𕑜 EE֖5(AYw/r@O>ób氤v?鐎Ivɞ_7PD_g1>m@ԷGH_O\"ͣ~'},d:6F=rq|g\sxT2ۮp~"'5ϧGԨŴ&,#\V5jzd cb#!q6߭\!47̿ nM [9$^I[c+?rgWcֶ~" NZܦﱤgO[]"C0m=<12o|CŢS,ݤBo'rǚ1#dd `90grP<;VE+/_I BSʜ',@>բb[vhK[J9ƸmlEc͟QkMSOt,ˋh+QZ`uw&SZA9"tƊ6!#lc7W)m!ki EV,;j&Nm6ov9?ΟUJ,iБ&fŐK77{dB~[IHbMz:ar Q8obk̞?ΥzЂp{Mh9SyWB_ZRI̚36{ ~b"]Kr5JAv[+m䬄"L#ZKjC'*0mz#qi|l%BR4n!6 A\X`D%0^Vf*~ּAiHk2w{w({ Ff /K-WM-_JP DX}MRaLVn٭&-xh-yj8s'e7VLM[ہdճBYԪ#\r:>?{곉l[[|b-lt KR3BSYVDaPWGu6Ċseh>WˆKimcG6P9|{ Ƕٙmfeq}#єWNOj}vn][qQLz؇h0DxLs|PڜVk=]2ۛ2T?*u]rVȑ 9mwEO) N1On"t>B-M&$1R}i-f ʛ߽sעIGpcWN|Qz+.]hG%bC"R~>7peï'&K^`dY(([pF0N8? VbxjњLJ}&˅a#QeIM_]Rg2-NΠpVNqSآWHGL,[\Sǖ,7C Y~4U]k!(&[[:/]9,]F{"`CeN|I|0 79xSMA8ѣʳ܄AvT#aDHnnhb<&iGM<9×+/קRZrT} 9ULCiȀaKr}亝 M\i.by:n UvEqR@5u+ŌՊ73{]f)T6#A-gbv ˫n=7궍+8bN|4^V*;3lxؕN y u`,Qe`$[j=߉A|Y~k$"/*a%@6raLяʡ/EzK?iΊtB Mg/r/%vz%\H.-#k:ng9c^0~cME y,BcE싼=HsGd*[[ƊARA=ZѮ|j^'m5'L;u ( 7-;3ya) GyvMte*t$rHB7,dY$"0_Fl83j+?9?mmeƱHYHm)q{Ph\{)kz^ vwx ߉e?0U`,2(Nty(vFj\' GxOHZ8( +RfǗh]hA犑C (QN&]qn6 "dN ` }p3Uo_fڛbNpȹú#2y8.9K}Lqm D=5$buz-)A& C9 Y Lhsʊ Z)כ;%A1_)`<S4V#k5msaRz83k,1⾢R%(Y{>KE+& }uyrbݤ$^pZD>㰓(<;̠sl O`УpDp!ָx@Uyܤm5KRzWŏΟ*#̢4óh'퀳_"s5d۬bBnJV6g12_/T]vfBSG28de _l^EQY:NM(\NRt Q&y,Ҽu(HcRj\T\$~)c[P'v:+Rd}AgO{}FWX wn& cþ&NO1uo ЧA%Ie~YureH؊1$g" %;ЂJہ&xu4fpi&(^.QMc4tI8$KtcEV=jg`l]ӳYo#sg+H z%7 ],"Tzaj#ܳdI^HWb`1fJQa&ƽts,VBd9R5 ^pY%݆KS?].dcMv*zZ0. 8А _mUm.(TskYWiLbܡE]B͡ye=)+okyMEH\烤TXXʚ ,WaEM&J.XjⰾefcLM3fհm&' zfH3{-_v7{eίg vc'acu). 4TcM:i4jW즓XE-aHL{l u8?XvP5$R{`CBElriX|w $(/ad`k|b2L X/t xiƅi:TJ> 4K 3~X\PSRl7kQ~7^(ivOj> b!-h Aix |!DCЄEShYp5B`_ DղgW'O88{WO/IMww8oc>"{ w6ud+8xf6g@f v5 $|h un~ߋ g^u`DWQ5|'{cζd2MGXxs5 u, (gihwi|҃h\k[r.]1"3)N}Ⱥm-6鬛[^17ܡn .Ͳ}0n>77oGEhO̿ Osa#jGZvVVNarfQ89|iUnǏ$УwnHVBvQJs%B}.&08~Fxu$睚Ai{rn-YIf㽾N=)6mRDxȿBXz\gX>2zzΨ0a 7Fhk kK& =w&3>2#Er 'V㩑h9pV~i4gA"7v<Hr}0!s *K8]&Ē ݐPD/rY5I UFu&E>{7IeR T4Z/@y7xʧFկH͒P@}%V{Nr)N oXOu gXEXէ19z0**N&{ 7Sx.\+ (QMvi:w{`,4얔rf_VR]}8L+Yj@ю9 *qrO c;Hu3z,“[Wjn/lJ[ ۖyO=DU%y'\5afƏT.⨖x;I>kicʍNWO|agىwhQy^j{#_QgSnW Q0smJUo},9:H_eXDGUB82v phPN_6j)].1n`t3h(r;dӷDGZoggqYШnkbp4 {>ʨ75Siy-uC5W5'=]Y%>-d}AO1(Pyج./._1e $j -NkCI0-X%ꁔr*Bh _TV~}r5!3.>.oOi:4dVW@3ɺUZwk]D <]!ZSkktX꜋#(5zDClP?:t^\fcji(!18X3$T.fHDsVWLɟ(GpXI`wƜv䮭5r-qE$@tc^7%^&r;Gof KnK{rAE c9L56}^jyZfeQ3]Ӎ"ty1QܳAkӢv/0ok{)XwZRBJ L2UIJͻO<9i"各mPDs\Q3d Bg i}Z`Xy M+,۶:*@r8Vg$YdѳmaVu4H?&~@}Ma.m"qZ2_4vڗ@=g w9b 'gE1ؒO-Ѝ‚iN5KGgsoQ"RmtяK[]JY2O֧o]r(r&b8$h Wk{glEg}^kH?>w5Km‹ִٹDu-үמ4C@1Ac-3hD%JZRȯwX)jjkҌɓ xtM $nHQ(X-xVeE&{O ,#=7씈]Sc*{w>rMI~2H!9+a92e ڛ^f]DK^|W-#k!L|tCA&]㫎'R|]@\KpGh[oGL)=3,-\c"aLc~hFR[d. HZJی~}{ #Yk5Qh#zCVNͤB2{lqHK#'V9JMn'~ahhA -\Q7 Aör':[iQ:PyLv`Ȕ,GR_)fCshhOPN IְZ `Q.' ׫@r7ݗB/rJOE]W="5eqݦz4.fʵJ,~_0HOxq4\y~e0|YKț'Ԅt:$]8`9(%x[l*TKPL:w"IFY}!K7JaOU2 4d~ۉzdƹ&0҄.{q?7'Q,Om1o(Z^bD"U,4[:g8rZƇfw̹و%W~k(`yn;v<D+S@ 7o8O3?_?j3`Cs)`W_' f2?Dΐ3*Fq &t/8qN‘q?ӹOs3*MU 5 G[a*&H~0`y>_8kB?칼.C?Daȫ]o 3Zi5{E<6~q)AiS"bUoM#JşSڥ+8z]Gkm}CY K/gy5*`_>M;+mZYMˁlcaqddC|S恤xd ZpH?~`yMN'}n$W ϳ`:؄>6MÌu#ӏ-]~lCdDuy(utMgʴ j߈7G#4UIh1HXZTmw-p nAwo4Bu@qL@%"&US ;U12">rt/gC쵖qޣR"Z% ('ChIZqsW$}9K&46vbLa6J>idDj EZ͜wϱtl+},D JP(g16š U~@ #4j1I?eioK%3_a@u.V7)tBڋUEnRI PT4Hy)B":m$Q0 cF֫۞ga䷟WD$웴AaqER DT*{2 Gzc+'b7Y,#Li2)LhV~ERӚ(\y"Yn}7rxp1~?=RFHUkd.oF53/'82d^EOJ̺m9r /L(CYI w킑eCKO7sbtmsh9Ԋ # gzߏ: G>qwSk0ˡpN(p#@ sNʍE;lh" Jlլ^2)倂`9M*^͛}3Y*as|8EHlZ%нCtzam3tY(8y/9UD nE #{%X9iߵLV7* SRuѢ dù` UjwvιCPjIJvLlqFW?@+gQe5OekտqP2(Uym ń'c[!  |fdƵMd꠿w>Āz&m n"y#7Z%,N,+s) xW/XsBb7O'0: H7#ʉtŠ: c0L5*óGt)$`|bC?T0d|}L8(ל<[` ,}tk(qrf?.S;,duxfӣ,Z"Jq%!FLp1'غ IICn;Ml,!a[PbUӰ}փ3xr#iRr_[QeaNͷ[q)0վpJɂ5Hf4<@,K-g +R@3a9R})۹u.??BZv%ԄbW/ Qױn\ɡԮf +nu[ WYwA@9#ܽs3W2g˧}Ѓrr<ȵleh%0]z>cDB"3\ƈhI65ov)9Ѓ-T.byg^6m;iiD]9\yR&Qww9dh8hYƢ:w4%73j!,81XLe);!\ӷCyl)эW4K߁t,ܨ$O>'vLn,SÞ/<ƵDK&o`̆5Y>y%?ˎYR:i ٴ:z]K}EN(swXgR\S<5{j,îqu}j+ZΤ"w$'\xbTZW¿MQ} s߭4f/g&' xW:%Gqzg+ވGZh( L|CU %2:n c=;ȉ;R .",~f%p]ܟꎮ]^1t~7bg!H/Y?z>Ga-N3O:q4B6Ȩ0;>Ums?+䨙J4~ #kj.D ,Q7qnh7[g5xki.Qz,kNLȓoض@j y^RD4!Ue"wT+՘V_Pfl Hǯ3P^ŕ aq_;Egrdһ':}7svou!pҊmW[M"v,?Eǁ#w#AY;le @;FE}.Y+m#[1mR1$6: Xm/YneCm0-T%Ӏ9"WPkq2jSV:=߸cl_!AO7^T>}[{ Oٔ : &JpL2/%N,}c\'XI.̭E(6(lU6}yiě~ I SCL0~'Q^dm{) ATZHqs3֟Hc_`cSd1= ^zraҌD3 =!EKے J A(07sb` -58ߕk4-箘kаZ~r3ħP 4qu˹Wæ{nZ;-xB1< zC+yVt)[ IZ`'6ģKnY=EѨJ,dj.{Sv0ԚʽCν?O\A聬'9)}̪p hv(Ɵ$ElhB(+9wT %d ;PҶ;OkKV m'ڒgDLB&Խe0q2GhaՁGA9lf4=D: xX~NYn%؎$F yj+t Y PdR8~I.`!$PÚ]֞AbPm!^*hi6Lm0ENb\'7T w  RO~%mT؜+y~Îk"wK>ULD3~e\Ki\ $d5:OkV&)eZX0~ANi'A%u>'tl0v ge:tlhxI_+ %ɲ7$Btͺ'Q{{C$-)q *c<_%=S z޸(R{a ߵm<%)J"7ihYo%W;^r i;ol\P[Z&7}|+Was'^Qv/ӔY>R{Bs~la?͸q ᏼBKKGg I=C?%"*{-G6 h!6~At{э ;{/ơ NXKW&ӴL* 3<Ӳ%8وZQàќP ('GW NIJmcF65%+(.N}#ޗ4[~×zˠRwI7DQ^vMẁwH$.ɠ A1vhwDAOۚn{ OUbw{sߋaJ@\ Asr$,*2tx !DUD%(Z"<%KZ[,L2z3W6}95ԙM+ї'}ҕAܔ:H1`Ms``94s ɛJ &#TmBzs4nm,{4p./@xͿ :%lm1 ^**B$f"-րY?==l~\&-Fְ亁y3h$ 'V^ Ucl7<&OT 6$ 餄# \*jtꃄk+*GЃCP >o XGDdRP4hn5:G'?&_Hjnq 1 .A:MA鄻|GP bw`%0U¬a@|v%puķ}P5~@6 ^jgCQ)[;kpHT4^x.cy=uhҞjW+zʞ='JU)3QؽXK[$,)}1l Pxz5ߖXg.֎,'WlD0J?ؠ[ a: s^_룪&,e~W /RZLy\̰ؓvzbέ̬z)%`-ReF;hRuaeSXv#ޞ.!h@Fhn/aeD@nPDa:pP\*bF숲>DanQ/wq dWPa~RCZ{vy۲D x2ACCP\$0CsufhC$Vޖ 0&ZcY33.$,2P:uՏ(:PȆ@<*X>i{ ǸD55OqTgEoR0h[Q>2P5:_|SyHSLD7~p.2bȹ3ga .B % V#52?-K=5O1FjYV+Km4˒lsNR`|g~CЀ:DR99^{o{|Λg軋Ƞe*:pa Iđ)g7R>\"h#׿tx|A!=r.!MBrηZ5ckᤰ<#-y +zDXxyGIK u٧4C6Vv="nm. S}_F[F 5xSr E9Z-M#vsP&!wfjHxZ-XfI#ۯܰL jX\5􂑨ךbf&BoP4eF48*QI`=-hE@FpJteim$EXVE`wf:W>d'+ҿ"GhddKSVC([rJq'a@k<N;>)Ys3j亱Dx?ByGL5=]6vk·r"!phN6wP&G*E5E9:X@ns7OomTcX`ȧٔ" @)!L$z3Xo M X҈g< =Ƒ}0]S{>OF_&NXnGПF>t%A׼WIjW2, Di~]CH7Xf Ú|qy1BRfi%c:AѠТ*6@P=QT}M ,Q/H7Er(Mܳ)[ n U%.Xg":`3]YWDV2yS*< f]<@6%RQ E(&w =mWjj{UNY0N;w]/`4日 Ew'dH]$V Z &m6(k~=jbcR:ZeʼG3\~sFE$ui-^580x&`ՎTtL.r7-zuD'ЀE{pY 4gB~O,nY|9!3z5⟹*&ɣzgY3b2##13)Hl'BrHr4v(-^vEy!0%c+Dv+ZKWdu˒/ dR5 >"3P^QPGfs-