cloud-init-23.3-150100.8.71.1<>,erp9|;hAw0W`\ct#V7Sq^rqu\YQd#v0`K^`4:OSyNâ+(pL=ٻ,h gXLQ*6yP|jZ`̽倾B+Eqsyu1 _S 5Qo TZzo3G2 :SEAbL 8-HB@̣B&H_i*>^3vg-f`9>@?d   ? ,>flsx px `x Px 0x hx xxxpؘxx*T**(89@:`>;F;G;xHExIOdxXQYQ\R$x]\x^=bcdHeMfPlRudxvD wxxxyx zCcloud-init23.3150100.8.71.1Cloud node initialization toolCloud-init is an init script that initializes a cloud node (VM) according to the fetched configuration data from the admin node.erh04-ch2a?2SUSE Linux Enterprise 15SUSE LLC GPL-3.0https://www.suse.com/System/Managementhttps://github.com/canonical/cloud-initlinuxx86_64/usr/sbin/hidesensitivedatasjX7BBBBXBBBIj+N np <ۥb"%_R fN 9n45: &2= [z 6=_&s hVq!2)t 5%9".  Q xF s #'rj+,"$>_ 5 * L$p\ # g?  r4T1 8m4%L 0h 4)W i-rGw! ,7J2/R !?vH" L $71 B T8@ QHNS6*ZD:5 S"| B, ] ;xDR"v$/~'M-2><nY~VZU)BYV]X\0 9:^adg$1U][XY g!Ye8#O+*>=3A =R G #V'(C1 +H&&>g 2A y ) 2%%@3' d/&p!c>XfX"I!$DT0U:5\ *s p K7`1 8v\j -(R!0#;s "2!) , +#h7ql8dDx 94'q)?Q):U="d $5}Q ^6'[15v q,S " /:,,+bGX x K X T =3&wF]o r"H/ f i Px ::mUK 4! +}O 6YF(4 #o9xHPs7U KvKAA큤A큤A큤A큤A큤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큤큤큤AA큤AeedHedHdHedHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHe^edHeedHedHdHdHdHeeeeeeeedHeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedHdHeeeeedHdHdHdHdHedHeeeeeeedHdHedHeeeeeeeedHdHdHdHdHdHeidHdHedHeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedHdHeidHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHeidHdHdHdHdHdHdHdHdHdHdHdHdHeidHedHeedHdHdHedHdHeieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHeiedHeeeeeeeedHdHeidHdHdHdHdHdHdHdHdHdHdHdHdHdHdHdHedHeeedHdHedHeeeeeeedHdHdHdHdHdHdHdHedHeeeeedHdHdHedHeeeeeeeeeeeeeeeeeeedHdHdHeidHdHdHdHedHeeeedHdHdHdHeidHdHdHdHeidHdHdHdHdHedHeeeedHeidHdHdHdHedHdHdHdHdHdHdHdHdHdHdHdHdHdHdHeidHdHdHdHdHdHdHeidHdHdHdHdHdHeieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedHeeeeeedHdHdHdHedHeeeeeeeeeeeedHeidHdHdHdHeidHdHedHeeedHeeeeeeeeeeeeeeedHdHdHdHdHdHdHdHdHdHdHdHdHdHeidHdHdHdHdHeieieieidHeedHeeedHdHedHeedHdHdHdHdHe0e27921782b92a2a69153c74be78fad5428a3491132c9b21ed519cef272e9a7a5df6c972f880adc375ec32564a00b917fe1bca5aa02359abc0f4906fec65e0911c80199250aeabaa9ced4990d3e222ae83859a983e781c4d6b4c64808fc5a6c20d49d7f9b483a7f90f2f81ff794a7ab43388ead785e47b73ef1c88017d555b8960babe2b1d46efc52b2bda653c7968fd2db476f117a0b047be9f8972642a100ffce07bff7620f8147b712fcb2988ac7d572c0c3bb5feaae5dd9dd508ce4771784056e7c9faf495e67b3aac4f18afe35d3b6d608489c723f79eaf15582f41149542e64ee04a68fdd796ad7f21ec3924a0aa6966f8f4873a199e98812de111db62ee9602c7e9f920f2cb5a3139fc53a12748ace9f99aa09ea6fcbbdce2da48e26fb6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232ab6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232ab6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232ab6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232a42e64ee04a68fdd796ad7f21ec3924a0aa6966f8f4873a199e98812de111db62fce07bff7620f8147b712fcb2988ac7d572c0c3bb5feaae5dd9dd508ce477178b6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232ab6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232ab6b6994d865624c7c2ae0a244bab7d35a8c8005d44b06ac4f33268ea22cc232a7a978528b6f5b1d93e8cf8e0fcd146e5201cd605c443eca4b7478dffb4f7dfe128d648f9e07ada3e8568886e57d326bc58685edc14ffd463d2af56dabc68f3663310425931bafcd491046edb04861c02bfe57b9252236898751c96337fc78406ec24d4fad651b451c9dc6ac9c0f88ff314fb969da148eecc3e572644ec92fd5078d2b2063b6f539fc516e494645dadb50f709a5ec0f41459589b7f7ad0d434ac4be98341c7b0833a00b0aca41f863c126fe09c0f3a0101c18ffe101a53430bb7f40c1f9575af4503a096759fe136cadaa0fda118090a8b1c00197fccaddfa2cb09710ae90dcf19a410552690dc7628780c3395a91b211e0b6f61ea350fd1486017349dd2b84f777dcfc9bd2adbc2d4fa1c6bbf31fb7d5befa2f001fbc0ef1096ba2399c141f3feb3dca25b99bd95bc750f9e9af25ee2fe5465715e55e58ec54bec2c86522f536c741e98822b207bbdb11b4e8af625e42d1f5d75d8eab4d936791e8ff214ccc752f57f930a4d9bacf36676a6737821c5773148cb28da6242a3e8bc294c0f9dc6ceb4b41cc628b6335db0b3beafd9b6b69f640cb31d9000cac567ec2c86522f536c741e98822b207bbdb11b4e8af625e42d1f5d75d8eab4d93679cf516487772b66a2db46e04cc55654089d8dc3065c3cafed0d5daecf23df921c587d891a25d4e1fd999a1a9ed80cd8146950ba8ea38d8f264930a88cc81f7e6c718053ea9a0f1bdb7e401f20b50cac6686c04cada5b7223b92f0d3800e1a4d0bcd1041962e1542e8030f93c8a393ddc2920bd7efecb2fb96d86aed52ba10efc798a31a4c66e573885df151fefceb38273000a4126618c8733a39ae2a9a9a0cdf1d435e1d79784e95f1982b534a7c5f79a32fc3b91eda3f6cd67c97d23e0d1346d76fa9b68ac0ebd9d8c3908edc3be7fac74b4742a7a12bbd1a4407bdc31c8228c02a8d9f2b9580ead6ce47f4c00dcb28c1a091824b832011ab3603ff203f30e9bf24328738a784acaa2e8184e0150c2621873ec2478c102099e35bf04335e06f72bdd350030e37660ef3a092946a7b382f677693fcb35392494477fe47b4e81d5a740409f088c01dbfddbd4712452ff37c1fd9750c0f973d5e274e44608ced327afc39e89350aac127111f3046152c1b8bcaa5c6ea5f98a020164ebd704b05fb6efe13aa324a20715703d96619d8db3d3b39bef557ed7a8215146639dcfd051cbabb6befa3c87edc667289bf493f0b913eb013174b6c27e7aae8e4eb263299b0f8dcde93c29b6502724a181917fadd13be670865df1209d914ab1770cac3db2e01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b87b354571a05199eec5bfc4f9efbd95a4f748e645ad5f95caf7880b0ae9053ef8f9eac79ab226c5cb691bb15925b43087a19a05414b813a9d1ea9e40dd39e0d98c60ee03d62c6c45fe5eec59f23709b966ac544881a85d2a57d6f13278ebb736e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e351f162d931e05bac36cf37889ab116d80ba6e3518d4ed7dbcd8cae9e844c46dd65a5d7a35f1860cd6e62440014d65a88a94374ee4652b0e5ca821a0ff808483a5db8385351c09ca4ad6477bff1f07cd068985ab1f819a6f60746f72ea916f659b862b597572ae63bc0249c8a25841b68d05f1feded275043b42e190e49ed5b6e8485e4533190bc99b1b1db61c56ddc80bd4c2e623c72ba81682aef203912f1792e98a8b078460ea1fda345999da871ca814e7e5936e1dda17bdda1361a80cf587a9df126c68a6456c969349b2a6e650eab016e5ed44d56fc588aa92559cbcc9099a87e118bb1de21b54d41c1220622135c81efbc3a3c0c6bb0137c4b94c6aabfb68ac468b76167e95c25b654ac10fb483f27839b6048a016f8916d57677944a857bb6a65bde1636b2d155d58ff7021a2c1f0ff017ded0375ec8d659198e1def37c287badda44360f5602ab905ca4ed22a84260ce4a12c18bd709be4e33feeb07eb621ec22da12c46f01b6edd9a0b3058a1511baaeb695a14c8c186bb7ec77a2e89a4491306b8a9867f3f581f9c0589697cbb4bfd89f5255f112f3d29fef718f30894bb47bb5dc5fd0088719870397a4f6c7f4519c6acd7eab45766808f4073332c46464b8e62207d7218b7e495607e299c4c822a893b3b256cf8147af637723f4fb2637d964c7ab1eee823edcef1adb923345d2d77515adbf851e9646a6af1224ca269491c3fb82ab07e87866a56b11bb0bda87e64ed25c4670b8cc1303704b22f978f32e52497cff77310cd17936f594bcfa27c39e95e2bc0d191e50c7b12d52af8d5da464d7fcdaa1640704f856eec834647b4605c13826123b8d7dd42c7c71a089c95826810c0a2d8cd892856891606478efd044875ab51e55c2fbdd8e2279593ab9d746b54e4b76ae38b13bb9de046382f8ba0aebd62afc36bebe19771537a3d7e90c84c7e022eb0d7c99174ba9f5b538350ebba8f161d5aaace12073ed710e536820d26015c9035c0daddd201ee12cd8e104d539b0a53d6ddcce889db5297591ecbd46198434c7b4fe9e623b15fd8706fa2b63908107403a1fc810f3d737b87d9a2a5e61a1e55ff186a5d870d15299794393f985a58ff1c9f00b274e3132b98a3de119714acb34ce2cdaf93a1e04f350d77278102022ff710a2a3cdd6879b4790c6116544a0abd57c402a16d01301b65867fc37507d4e786f8eba45402819c87e5da841969cb8e812d64e782581b88aa2d37ba6b4030e99b19170984dee0004ac26393863053321cb1c2b54adf04ef6ef934c9fb203ae56a00297c08b52878b4e4967813b3ef704c7b618441163e866b12e04942f73e4baa7001fc50be3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557098c609132e6600044ecfd31c102b6c3be6296e999c889c127abacc4307ceb372322caa6191651f46736a8c10610c9b342129cadc9a651262a90277a1f25ae5e7dbf90ec61f1693a27772b6287b9350f8a1f7ac0ff38ced504dcc9971b873c2909cd72fb32db3e18c38b82a36a0edee9b3fd0b558f8c272923e30185bc3d3c85aa2220ff0ffb1f7fa7827e45ac136dbcd73bd9d78a791a8eef6ef554266513b5fdac84a316c04c969d235fe074a0b98b6e91b0103fd66a40ae3100f25d9eee20c04f3f84e32162159330426580518af430da275f43d2f962fd5db9eae3e72c705d3fd5616806131d6951d8e51f30860f3aecdff0ed3842a95555624ba210018c7295b2b4069a5f714a3f8e6aeea1cc276f673ee241bd826d3467f024f04e64cb109fe13c822ef4f8633b5b5d1cf88f0349d1413b8d712e4ccdea53e2cc65cede3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551441f11eeb306bf62adba62d76ae76145b5138ed12dc7a5ca71f4d169bd938b7e52fdf6d56d3725f4aa806f537992f8253925414bdfb9b3de9ff25693ed8adbe767f9edb3d459a5bc53488b513e1efcb40c9d56111ac971ee5bcbebd14d6da86f5b7431858ca1f6279eabf70601786623f4e751b8959b59cecf5bfc71571029108c2bf3edbfa7437417197b29d5161026986d4d883058cf68db17892e2cb01c1bdb9b2dbb9baf8e4e908f2b6e10a929b5b08ec5e3b3d96aa532a7c7a36fa70939eea09be502fad95be68d04c7b41787b8fddae595f5e8907c8b41f077e918dea2d55395f190cae404c8970df4adb89824ebb8175b29523b214a1f7abbd61296b07d19cbb49b267138ba2addac0acfc79c03923e38c9d286f862b7b32551a33fef252df15f757f4ade43521c1a80682a5120a1d90d56d0c60a07e4e88cab5c3a9933dae6fc332fd51cc997db9c801bd92b9aca67d3d6c15871f243e41dd17869931bb73ff224bc930e192be097edafb2cfc7879de732863b001295119dc67d34aeba26a93064ab33e94f49d9d6f7b785784451b92546abe054f8226342c0d3aac7d3095833b19289f1ce663f8988d736bd107d9f79ae3b0ebed6df2b35eb98618d446e32b63a4b1cebc72ca7dcf97829624ad7951543b26568c8057535facf12406b2410689682c2f7c93fd70b1c6ef6bda81c6e7f60cf7ec9e268f581b7f0a3b2427cf11a1a5a703f07828b46c0bbabb033f3e1f8b17f8f7704303ad92b2601b5e003472d08dea7c403ef94b9a10eadb75f88036fd373d4a032bb92ffc8336937e12280921cadaeea7ab8d666c61d725a397f560747072f52f7468d39529f095730d7b10f5a788f413386c403caf24b608e03793862aa114c6923c38f6f8c10954e2b2c879fda6547acccfe5cff64091357563347341cdd47445bb5ae9d1dd7dbcc4959f9e898bae070222bf6d5d7968032ae48d6a66a4612d959b08ed45cfb265ce7519904a6537b18708bd369fbd48a92f5b9389e778c48ed705c8b731643ad8d5ca19daab3e775bedc8b523e9b3ccadd371ad2da3f3673a4d67b4b2d20d5fe1cc6747ac4525b88844d5346c07eecafabbb5053bc6475769c5694c8e19b12f949f07ca2afa90d168e314248e4a168d0684b7ddc103f73d72a7adf3411fb8fa8c78f12d7689b29510b64b1cdec7d5a541af906ca871319c5849198b67fa5f3be66220272f7d09a353945d13a9dcb9d348ffcfc28c065713cbee9e9a835e71a23b8cdef02b54149c8a8301d800e2f810864deab75c4e2a4ef41d1bd413e4ad48af6d472b9f3ea12ea95320763782859d4efe13d066584585d92df0abd0976c6d0b6650a99d1c4be85113982e354dc9ca560a36ddf6d6ccb30c14eaba6cebf0aab60354196783fb2e8520d736f0a8b56487f7d2aa02a3f6367a539105ca4a162788b777194aa95866775582e83be95ae3c78d3ef0e901452bf9218102eea4ead64a2e8e21f0f360c47230a6e8479b3410c8f058a17044b4044975112d7175771af65fd9306dec02d9661859c3b19ecc8abf6cc48248cc0ae24b27e9b37857acd454e353c25de8076f02cb76181f9e77d48608c3867628a02dca611122fbbe30660c08912dd42baa4156400c479ff1854fa5208a21aaf2eab11b3c078273951292cce0b832b1fee847b5fa6f23bd276a85e08c7fbca197190b314326c747a943a58e27eaf5f63da397e0a83271ad4efd54d3860aa9c5794b850bc713ce0ad5f1190f6acfb16e1a384fa7bd440f04ebf3ff571da0f934bc135ad70d93300b7cf3ddf9a8e1229ba1aff4dde9da52fa3877e7d97d8ccc588bfaae22b7cefaa84dfb41536b1712d038c932fba484898ac9b4eb411730d6a2836f50659ab180374252f63cb6daceac7c5ba66eb0ebad59aa213e92da71f19263c83d697d98fc46d7d61588c70fa2be655b6a53a77570aa9e7841aa162d90ea9b2a8ad05498495f515f276fe7f1a5d46ccf0d86e58ea696a7269b8076c06bcdbfd127b82459adf936c99cd79d8a09f194d25a126fea594d9f34d3c528ff3fb745d83337aec14bae436aa6d3c8e2428f8864c66d7962afd7c4319c81b5093ea1ec85ca5a829550cde72669068d5eba35a4793ca3465e6557a3ed90b43e3eeedb18a55f12c90f5fd0c656ba7b53db4765c059c66ba607a68f19536e16324d9bbd33448008b30d9f8c16915ae72714ab91a793a82f88ae0b54d6158fe493a62d7f0513a78daa7a832461b124022cffe488ba8d854bc6da4edab4fcae796ce1ef89350882e922c776866da2ab55fe87fdf518008bf9beadc0bcd7386583962480ae11f48fca0a26e2f6cad6d1d485b00fb448ce2c2d7dc96f18f51a97681a1586f5bad1d26a7be5de437510fd2d642834976ee2430ec79a95511136f2fd7709514cc91293a623b9ac98401d3e7dac74ebf27d6243df8d873f1d7f471334ffab9dd8230b97edc216fefb60cd263a5194054b971bef92ac4384c72988d7328224477cbb95ad9f1e2b7e13721f6aa3c656a97dc528d2beb1eda8b0ef1d233a44a1de2f6573efe8b7d9382a3606c487daf2f9d26ad8bf9261e795d22b504cadbb7158db9c1278a536e8c06abc6c93e7ae0c73199f957394abf65755605d00077c1162450010e4cb97141bd729d2e4382d71c68d55d7d47d391e6b5d6233f5ad121b9eac816025f31f9fd01c0b99c762e3252f7cbaaa5428b2a4e41312b1ff06571a819cfc45eb1d6a7137e9abaef2545a2b0b5c1fcde0da8f90bdb94a3939d6d8fe21ac2c9a386abe1c49d82c658f98cf4d775f058d549165e7585183b53ca4ceebec167de5ae4549bce5664f1a47ba7964c5dc772c3300d2259ed03b72603ff48dd1064afef5d1414acbf5f9b6bb1598b8a9fbfb2aa1151c14a6cfdaa141c374999a1b6ce78eb165faf6c6a8b86f6bf5bce2865edf24779a20212323e6a4630219c20425c1686e69dfbc8f730070e388f84db79f6691413b9f5e82e5baf2d6ec80a6d9967327cd8d0fe7b87fe942c688ef400dba24079c333c5bcbc2b735bf256f5f38ea61b95a44a15f7f38ddb66f8a60fd9a914d0a35ed8c316a9ec9209ac0650ee746abe2bc1d538cf03b67ec0f0bdd31f300864167dac0ef76d755970c89aca953efd1d7eb72d94d2c489670fca06c78ee7a66405a40e455862a22f386edf10a9f3a759103b0c315cfb4322fb002a0e33e873ce7819ed938de502ce36043ae4f56a852e9eb4e0215faaea3eef0d083b2cd2162ead94d6094357207edc13d6f24d431e1bf01b23ce7079c39fcdce35ad4fe27f6f289265823b8b7c1936ab0bbf38b51d66af639a5535f085fe7322197f68cf902618785ca81e7a4e0c1b8b32e38876c2b511a5484f731a6bf5eb2e557627e000ae536941b66ba27de5aeff3175b83f130b899933ac7c827ca0a3f58a57218d4ab7cb59b75e02a13f41a76e1c41bed1d085983eb553e964a18c3a86f6a98748357a0de5d2d9bbfc4b150d34c29156042404cd4562aac46efddd53b6e5a07001076d89b2bdf6191bde50fe246353fba2b779766b73771cedd1fa2826e4fbae426ff314eb9a744947c9dce7e3607838226d50dd2de4430f206e12686bdcdad399ac2ba1023182e970fcbe70d0e1124aabf648522da10e7e15af17be2ec1fe65187c6ee65c0a0e741c3a24dfc8468667bcc99be4a51ed6a95faff7752131b40059c16946b148ab198f9fcfbd18fb43b343c4fab5f9f5092554cc7c2a489f86cd2af85cc5a663d894327d4e9e44c8d4edc180b49e132690263da442dc9aaedb41dff385021ca80311f66a54053b44348370ad29b6e3a084792d1804360bd5c3926299706d01e55e5cb3991f6e0182f7ea86d844625bd3d514ee6b1d6dccf6823296f5a95f14d6a94a8eacbb1e65aa4cf52509cee16a59b7d1ccb0f4371ef419e07f7fa4db95e9bf24b2876db8acc1c32a0ed5fe543ee1e07c01cda66093e38538250d77fc1c6c3bbe9ee1d11dd3b21a4eb4a9938fe53eb94868d038b76edf1f1f824cbcc5d49d8f34de5ad29b8d1cd140d04e136a9988f1a9b834f32c513cdc28db2f05e1b1c18af3df5585529df92b1de7bc83df07572aeb5c804e674b76fc9bf60419927771c148fd16841c73a453646db517db1f1111cde4bd7b83cb80d55b0db9d95deb9b6da1d27ea35ac8f6b37bb59f5fcbe42dbf132e58a395ee9fc7937c1c77b592757b0466450405445a8fdcccdc9ad919fde2d4ed0589243c692f4a923d779f3315d4adc010d26ea9757d74a7541f974ac848f881f5292cdd286ea3f33362d9394880d173c8a5bfdf5ed3ab8943e80a832dc85015b9a5c3aa8ce5244559742a8051a46f3a0c188543fddd3356cacacfde4678897d00fe89a9db8fb4348d7053481b590a086481b87f64e9519e0df214ef8c21981ccb3920c4472bf26e6446a408550ae7ce998894ede86fdaea8bd5d601fe07ce7f8c66153742b1634dc6802a59f3b7766df0f0d08e32f4bd5e1c4a1215f38f02029f1008c1fd5b7a916042805562fde403cc4a3dc9e58dc385c2eafb8afac07920e318307e70587a45038f1064dde355b7158256b6028a482c2e6c35169b544451ff4a8ea962ceb65e772d73c319b26f5a8048cb578720a92df23e89ff373cd4b1f25b94f47d71cc05f144b2efc0d2d47503be4ff41f860b502b9fb0604be0178c0780ce69e819a3e2ad42f977725aee8f925209e555fdb8caa62c0ea7c453f9f37f5f3fd23c3dfb5a55ad58c08ffa70cca64e4e363637a76789b29d0d6a3644f19a5a0605884be734901da3d90c8cb39c81230bb2a819f16615acc40904d502053a73423e80f6b63fe92a1ff24320e2e4f09519f1fd7a00bef7ad68f7e125f6c77d3ce1577b132f4c774f85ef80265c7020384adcf2eeda24eeace387d6967dca99843bc328f4a715086913d0325aa1d074b7777c8b5485e138f32ef2f6d6be04701dfeacc0bf2e8b2f572641134011caed550bdc6d41a742328623802ad7d3cd487c4331c84dd58158d4858e7fbfd734ad0b63d2cf6e11854fcc0023ea77ac4cd1ad7231cceca002b0ec9b34a0145726624cecafd9aa9ae352943b2e8994f80cb2f98be4bc62c4c36c76bdfbfa326b27ed3d1acd1542a7fd8789c2cfaab0cbbd752770362bec6a2f5af9b093e9327511590cea89dccdfbe6bef4a85a87de807d810e6a282a5780f54089f8d39609de389eede8fb25262e9f5d86e72a564ef558935fc10edb457ddd400910e22ab1abd84c54effadc7a62b7ccb862277ca3b3996b72c3d2280b9699e5de3698e06b428935cd5cbfc8c5951b10b082e996c36bd3e2b1f380af4bb812360976ddfc68a69ab3882ac03d862c6b37606feb3f922a5825982fe5047254e23455750f41ee2d15df9c64f2ddadd5bbfcf812d01beeea3192d3b090d30c7331ed896d85e4de76fffe1ed43697e3c39c63686efd499fea4a49f544032b4a49275287044a41410488d62e6a4d85631fe233561699e1b8a0793c2a2d6eb98849a55f265cb49352af3823b621d8d14222561ec8efbaea36f801887c731085c74094bac10850427f4bac0b0389cb7aa19370aeb0d5f26ab768e35b7e73677ca765dcbce400805849329db9d15849cb2eb82d2783a78e2165078c946858089156e3bd5086e880386ae18620378162091f27937559a5743c34b46fd10fd2e4b7007268ed77fa7dbae3e1ef0a9609d1b08d0f297253e8bbc8b0426fa5caf952b7a631a00ec42dc10e6f047c88a972afa7880b2f8612c76b5adc9dba688c8299aacbf29bfb1ca92ed936b4f89d16b556d8d41bfb6e761b2000f00e3d85a9696d41474515c928b7dec257b71153c4d15b65ec8d9da1c5bcdf68f1b639f0893798f3d531233ca304198c9075a576bcd7f52353d2cb06aa42c108cedd37955ad680bfe5468f18b75b8a1dea26a8c4077eb56e3a1d3f3ab12f323c18b77752ea580d6b7085f8d59268e817e76167d3d198b413362417d06b8b16e00577d60595f3dbe3b1cff530c08e75602962f7b38e531e6f3f3fb0c83f4569b2034eb50ca08c69459dac7939030977b5e7f4b0730e50a7be5dc5e70275555257d9214f4f1114d56d0912f5566c22a3c3308f53df7aec6c9bf260c3bda432bb3c44bbe70d34d0031aa10e775915ccfd390e47583d3fcf8093fb75c6527e78a4e09d85e4ddcb2e2a9ec55cfe393409762ba93ef346f869f820450a9f0300008b29f1dbbd2a344707d70c59dbc68dfcfe6fd46ae9ce30e5a5c8ff3cf466396ba55760a241c8e8dd70e5b92dabbedf16918920c6d245751bf7d06c2ee065dbc1f2a63023d7c4ecf5ca4f278b9bf4891f060faae2c59bf75bcae38e73864fcbbcda8b9e2d68c946e0a1a8bbfa016dd833fd9b4fa02a67faeff06510d703fd8e2b7232188141d480d66abc96afdc481f31e0c5e2ba2d0489fe3ccca462d977e3d9f8605dc03c3a8f77234577bbe177e700d9dbaba8e8d9cab884bf0a67d43d5b032df01381ec95e44e3fe06ebc0e31499e2de7e2567cf9c40188501a621907aebf313344ba34410833785e24c4c483d77e070c9934a71e377bbd01b1be02833a4912241f9e6c20d7d7430b23002669fb13a31bbecf6688cf03016341afd8d88701ec2781dff9a677e9fe0fa503be865963d97a0f75d51ad524838cb8d8c6cb21dfe50aaf7b62561f1ed3a585b9ab5ea9c4d9501e2e68c1264e9906a8fc5d5fe38251dd753b1f82946209b4af64d3742fa7b2e43f3c7e8bf88439ee297f2fcd793dcc14e02212ad1a05ae202c7dfe3323050ba69e8f1b632457eae9f87fb951500d1d093450ca31c75bc82138ee0b61031f9c6531192f3d07bd74c2de2e9d5f079a2cc43d2816871241c387845c227bb38200a0f43e177ac773bf51200d5800a5151c9037c38407fbde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551d3897b16f726312aa8205e8bff80b39988dd3ec1707d558fd8361b1cd4b5d6be82c14501f9fc4fba6e3faf9f67d7e422195395de7a608d3a7f6eff558247815aaa5cb572f32d135ea612a22644371985a47bd859806b9e1ecba6a01c07145fac597278afe3c7688c9170dbf84f566536a5079aa0bd5ff0300d57fa06c79ec17ffc13b74404c103cf3b3bbe11e609ee7ac49c8f9e41ea2b8fbf0469d2713b369ffc13b74404c103cf3b3bbe11e609ee7ac49c8f9e41ea2b8fbf0469d2713b369acfea0ce4ebf2a1bd7c7f40d0181865f3ba982d4d3cb9d490136cf496c0f98f3eb1e2ba3160965fa9705587c4a6baf5e0279dc94bed64c30eb84d13e596326dac5b9a86e4a62a86bee35cc382ed3439126a30ef61eb6bb5c15ea81a3f24fdf8f0f558da4fba3f4d2a86aabce7b53ea4a7d24d6581408fb754fdbb32fcea79816bb3730897979404d84d12d93f37568902e9532bb239d7e53c66a01c71731f84cff60b12e37263a826dd334d1bddee2d2df41f3db40c196775221bd2f3b959cea8cb016ecebf972bc846c0116e5a89d60d9fa9e27698582b7ca0298d84d2ef1ba5c3e9e3044cb9e4573f6a4d61a40278624d5379e9e3acef4ab2c8cbd34ea02c1bbc20bd69d86364eaa574f0dc4ced80c4a87057f0f143aea46bcbd8fbfad44cb756753f5413941f1e52485f35f8d7c9e2c46888a31275b0af6715e34667ff8a7fecd1e5236f8db0c2d152c71e7dc5003a094ad145f38051961702d5b10dc11c19fdebee358ec7a60f0f83663b4c9503663d97aa330ef8a59eb1e65f63e042f05e5e29c02d729b43684e883b941d69cafd76a4b00bacdbf6c6e825aefe65adf91d1a3a08e782b28037d803e0a272cecb97af6ad160f522bc872b253c50b9314a0db5fa5f0dcc455167cb1ac56f292864ccc5f0e85c3ed969bf159b50ee392ad80925eea9da16cc06dc75bc6228e707b65bd0a496d10d64566c0a61a3a903e593e91e8f28c534ea8f564a3dcbb2782d445ceffe638c82bd826088d85fda22bbddeee215c0da192e6bca3be7eb2f8598f81b2280a064ae3a45b3b8b5a35a5aff00d50d65260e83fbc1c919fadcd69ff6240c7f06959a61553087d00ef93c6d872889aa79d040a9a2443b4b89251b6d95239a932587a91014c87f1b9d0a9695f6533c3d4885fe638c1490888b22f961481147aa255a860278e0f1d138280bf26f5a10983809a35a8d9a0b8fb55589167a4b04d7db8e9d2d5bdd20d3aad8695e21cbcb62c7d71e6e9236097b0edaa5d61f4e656a0dbf1fab5de569417353851acb2e79362724475404f6c3a36a30b581864404c64b7a88691b8519ca4cdb909db00329b096ba885a572c293a113f2f389424bd15f03deb566299a830aa20d1cdd5a45f2560da2825c37574734aeb879fbc0fec4e7122db5ab6e0d0fac291f12b4da68d8cc6f076204363e74557fcea7e4a8e87211612cb54e4428bfa0e2525ada65646ced57c64de0ff228ce012dce599d132c24a7f3e66fac2bd0f6d90e19b03a5439bad5034fa56660e90790634c2e4b83a676959c12f750d7b2b6b00e8c21d8838b227b30506d92ec8b3663a44b795e5f8d77667cd7e90c538994fe1ce662a6a070ea406532758dfa60f2763ca8058dab1af2afee73d97cb1f8e5e31f5b93d793d3db2d1c5178dddaf79a5fa351fc25721077a7c9ce1ed247c81c2a580ceba2bac32433a315387b277111952374e11a20497cd5adf44ab715432c4a1ee2cc8b814634089edc6c8ef4650bccd7bd6342cadd4e220f63c6a301ab35b2f8a2edc40a9ed6d0bf0f281dea9d0c29e5bb455930422cdba9ce1cd64135210df8d0272cd3394b3e7269f2d21c341775c96654fc6e5564edc6733707fda7b275382c9ff9aac22b41a2e133069a5cec548c3ea230a572c0c3b922e927b1e9eebcf5d05cdcae8e6db6e11980ed711eb0730f8da636ce07dd89a5ecc7e33a753e007d4c06ebab737795b99e9f14b4c81e330f8597a36de7e77d71a36183f33840c57aea0c321e4031262785fecc64d8c1ed1b49508ebb94490b83a3810a5ab8f62f0fc2f563e2291e94b6dd042f9fecc076450b5a49f4a45699c2da5cf1bf2014cce120463dc6e4c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dc8ff956d95fcda3477d906d79d81a99ecda40a199e3c650d862558a3c3de9ab5a41836f765cf28e57f642d823552c328b3871a1a89d10537a226f6ce49ccd9c4026958cce0c4a3a29751905ba04c0512bd06cbf97d3aca2fba2eb608ad966df0e17c656f35295d9b54aed2665899548fbaa644969ed2d915dfdd7b89f92bc5e4d10519a4081e3884e8eeb5558e8329692eaeda5936befa1c25d072c34cf4e08274c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dc4c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dc81050b28510d1e8cf549e8e668a4bfccb1e92cb784312a65741a751deeb926fc458e9ab4d4012653706e4369532ff52179a27021b358dff9f28b3591b68f057329cd56724c27619b5bf9e1af38c75391df46f217750fb7e984a668e328586c6e4c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dcffb645243dd11bb329312cf5984e5bca0145fe0dd51050937a8bf4fc4349c9795ea6cddbe1fab21883646792f8f2013eb62c10f2ff06cccc270d20ec8439e1eeb3cf67aad24e4bccf8366aba8c02d3477a5ac7a6d85fba525341338ac80e08e49d17c5cf6bf6b6d9051f1527cce16b7713d855b761c4c9ccdf450c91d93273dc4c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dc56f8af6d7e9b387fd4b35e16d6bcb2a748e183f8351c02f1e3112a9f6e56393b3ae7f319654b4f820d7e26832a7e74bd8ab7e20bdb57e168f6152bdc431d9097c4a6cc2d48b6b0aff15fa9f9993364ae683983cb69b54d23e90daf43c3f84c172057e501cc2f2419e54821bf5703b4e7f051450a5050df00a9df6dc6e8984a59df2951ca09e8d1c7901a2af1c5d5a64fcec53b4953febab158de1cc08ab912e400501b95bce019852eb8871ffb64592579758a15e772df6499c4359ef35418cd6a81ddd917831e8e20577fcd17fcfaacc4b9f994d8ad54ef7fad735bcc788dfe6a81ddd917831e8e20577fcd17fcfaacc4b9f994d8ad54ef7fad735bcc788dfe6a81ddd917831e8e20577fcd17fcfaacc4b9f994d8ad54ef7fad735bcc788dfe4fb130b8110feac55874dbe032addc24fde9358b37581450e4e79bdfa7ff63d6641159fe8384f9bcd0735bb474b59a283932b09ee87565ee202bc53b9df3b678e593d42fc047435089f551bbf59a21927bdfe60025ec0dbbb2b0c50612dc9e7e82a2932e5cab05db371f0c47c000d99da95ef8bd7c2d9dd244837fbd2b1c80afd5ee6e7d91c33ac6e508e66cde5d9015b541d4416b951c03a5d4e9f2233dd6b609150fda7e26a34d17707cd78e971cbe76a261ef51291b2ca45a7a0cd9a1c0f81bd0152728ee5966a23f82c712bbf283beadf4b1ba19b1ac6411d90ba6fbc7c9910b1901fa056c01a8cc39806e89ef1e2577adb0648cd29c8b618d075931a5258ad73bb2fe7fc8bf9494770d30fc0437181cdafd077e2f26b1848908527c8e26a03dfa582e9f8dc589d7295223c328a3aed1318432d194ec636ff9139e5f86e8f007de5d30c59022db8b70d865bc5d79ff457c60002cb353972493ec6388b6fa6e052fbbb3bc97d56e8e3df4307d755b7555376c856c8543f9a056e0572dc0a483f38b079c7f5700ba3aebfdca0db3b936f64ed0b05dc401843b51b5f745d841d24e7c5c6b39a83cf60899b99fee1e7779d2ab52cb5a2bddca0f28b85b953ac2e78901eb35350fb9a9a77c5367674d5e1694199a5b15907b3800607272dad29eb358cc5c37976acdb18c01cbe4a7b8c34751aac5ec3b5e97a010f6ff4a11f3b61c6f9f76a89133e1283ae7d8cb40230b86ededf1d02b4b5434d1594d575432c90623823e93f2ee424e5720aa7b093e1b6b072805a3b015cebeff857c1f3a68354c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dc6a81ddd917831e8e20577fcd17fcfaacc4b9f994d8ad54ef7fad735bcc788dfe6a81ddd917831e8e20577fcd17fcfaacc4b9f994d8ad54ef7fad735bcc788dfee6c5da770f3a1bcd6a911be0f2f832d939befc0e258f5e87bbe4c18b4e0dd2604288ecf0229d9fd215a8e035568b9e3525c02c2b9af8385bc2c6a0eddf797963b1a8e1746bd58d419463455462a17325828fe30c56e9e8deb71065d9942ef8174c2c654d5a9a488048e0c3192ad0665cf1643741450597e4a2cd48636ba257dc93cba58bb5a7ef8379db07ab4bf01da680cc8e3a44aae65b8dd973bb63de3b37bc382f29b696449f7c80c19a1e148a8f518467a8483bf9a508dc1796f3b4e82f4383c369a28452bd4083fe2cabbc82c2040de04a5c420b4cb9cbf21fd72f3db0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85559805d3b8a1cfe48f9b16a3e8dab92938451b68a5d4aa6183b733d52a26fec77a47d32e83817d304a1946ec11078835ba2206eec0d24d4b2e810bed92bdfb5b09fc0655fbc0e56ed673318c16b86e0385fc62b84f767d027d73c6fb29ef5d2b98b4db6f9f384239c4268bd5dd7e8301883a937bb3928d562f07d6b6280280c67b3cebb6db7ab04684752412a47301eef3a85b00ecfd1b134973fe39d782781bd88d55dee930720a34784f16a5947d8be1fd6f93977da0bacc40d683940fddeddaee08c9ef62c5f31c330bf921a22db3ef639838d789f4179590075bbe412642750fc0a9f601f8a1cf8450c191199ef2a636ddb31b93d80570bf45e9a99ae1807a69271ee9045be2bf357a36607cec48601451aa1b111230387b28c3d9e560fbcf679fc822483f1fc1250593b6166044b3aeabda38b5ec00df6002e0f3b80e5725333b7fb255d73b522bf93ad88ab5e59fb1dd52cd7509ed85e5b31d068f21ab04db6fa8a187e8bf0bf256496cc5c26124e87ed3986fb8f325b4b106f8677d444639619aa40f3a31556de2e502757b3b5571a7158c501532c943abb3126cf169c3286577671e83096966f263d1a445e4cd25b94e07a114cb27eb33dad978be030380cdc03f5dadc8395c316687bc6e64db6bab51ac457361eefb119467ca9f7b540f728f87f3883b444b1ec245472bf6c395042f33f0d49fdde92a4aeb1ef808999af07e584186863b62091fe883c176825af293696ac8c226e5ef1f1bad70ee082b6051369c67e09e20e2893db8b5f41707da3fb559cd3f9d699f9a0b3bba4f05c584d6392a1a83b8167dff691f1615e9c9ef5841c5068e7c09d16a273570ddb12b87ef708cac00a7fbdd85026e149f9cb5efcc9cafbec50164a5bd9dcf50704e2980d23dd1991c8b9bbf9becc3272fc205ab071f1c7abff42e785dfa5ddc244a3fd453a02a7ec66d305a88da578e2684d1101bf5c59221b5b02260a565d5ee507965b1988fe09197a798a90cd7f05bf94802149f2b3964beaa0c78d7a00548b0d36e3e6d14ef0a1ac2dda9cfc4923c8f029c52a3b4f425d9f74f682f806526e4f8fa2b81095ff4366ca58f13a8a6b54dcc5458e5f74fb2dfb85d4980229d586cf9144b69a57d0e375b4aaa1f1ef58ea0d1c7649eb2186ab0741ebf083c40c337bcd5ac7f73a9448975884fc5ea047e806c1ca8546d324b7e08f10a95fadc47290a4224ef9a11844d6253cf7faefbea95b907470695674e70e5d29017aee95aa17ed300bf9a72c6022d2023aae92830dc3f7430782bee545587e9ae6296adbaee344e02d591284febbb3aed3d42baf077e8ca63f5556cc7e25834792d9af46670f4552cd71c8d2f004356fa793b29e450d65db1fb361bbfa695d5458ed5610a7cf22a93cb73b9abc59043b4125e7dc7a9f4d2150f0094486c8d6d1f1b8583dbc4da71828f83e29c2ec3442b0e8061952c40d34d0ce2183b155fde7516a1ec807d50da0c904cc8d8d6564d11dbde9148c4f254a28800339cd48b7becea576f9bb635f25cc0abeece73548beda2abf3bc5364a79223053a60e1c2952e56eb900d7f531873035c72e0abb98015278730fd2cd84504150be6b6e0a0066c869cbb9600f6132ed6a63e1a2dc78a6111a2c49dd26241fd11031b3e3d0a99bceb5710c8377d72d1666f148c3ecb8492c5ae4035aac8d2cf8bc993a462fb7357392d362d7e1c01b5f3f1635132189005bdcff87c31b334fc308fd4dc63b345695590facbd10560126b2f54ee23a6e62fe3724d9f957503d6c9f93f741c952b8d9dc065faf905377d09b48b9447dd7787753d6e60b3926c8a3e059e4a702707e0e0e4e74ff4cd5a0473ad6ce682201bbc049156fa948fc8083834df59def5bde2fea2ed3843716775b1bfbe2fa071550a8a12e29d39ae26ca33ee0ee7900e24621f10dc26ab81d96f35efd940b9756d3c7f65adf4d44d0865a615115576cd23a489d461feff393c3d74295c565b52edeed2753e8cf92a3ff920850643a803dbaf84b7066ce4d539fca88057119824eb28420c1dec15a5ea3ecbbe87ddcf90ee646a08474980ab96e66b4328c08eadb898359192eb59d2e259fa31be24315ed0a26201bf0aef934f1511b20300c7ac03b5a4dc8d6fa8890af5015344d51c4e2b123644818597d6be6ab1cc6f25ac61427bddb1158e62acbc9edf0da1dcb310b9f4dd60b1f8a74835d1db83b6ac9a81b5b22aa0d72586ac1385b3e1fb64f7bcf5500961751baf123fb6771fb549f4d36b59e2e518d989615253a4e90ff4356b1544376b9278747d7501f276775bd46ed82380675cad78815b110fb626bbcce47e998080e1a1a1dfa6c95629ebc81c2bea58f98504e2f247447a7dec00b5b359b1276976407869a4caa8786657e5aa457e569e58f3a4219f8be415c1f2595d5457664d1a0220b2d405a1f3b6c19665dcb6a95942b467060e21c163d46a3081d5b3ca31a4ef6a2929ce833057ed3ae054a36646dc62f7744c4129d56ff720130aa2a27327b10b9f77cd71d6987922c10a5cf8483c2fa7dd8229eb15c2d806cb51228df8c837b0b32504653a353068e12993bf10ce9528b8b654b854a93b89007a98732f93fc989c7617a7b37cb24d477a094d36e556970d0046f100c85aa5d672fae72bea2d85eea832bcf38c8e6b6a6048ae0aa8bb950171a3bcb9bd14ceb97788a159d8423e5a9c25249b5b7c8cd00797931edc89b01c37e7879fb3ef87bf5e3607d11743fb243199dd0fac430b45dfe714328b84b44fd3c9420358788d452b4bf48f0f0589ef2c9d939f5c88d71c644888b07168c21cd164207f0aed710a93c0c04e81e3e19e283b9043cc8aa932b7a5656880dfe24210fda63071699baf168a5d75e054ee8ee113579befa83f425eee5b1747b239c6e7247342d1f4062ab7f8ffddb18ffe1d6d790e936473d2e79187f76527cbd15840d66541b99f07f92146980b113052a6255bbd90f513558b7d4d28f8a24c35f8cb4960df920c8d4b3b4d9196655ff819fac6e9438db3865719e38feba4271f4c40348f622c58a668b6a94300ac1302d110b386e46bc4d8304fb67fba1855c156b51a6258c2ca57e7a01820924ea88cd31c7d21d13c6ef90cec95324720663c473dda162d699adbed7f3444e031d61fe554b2c698e6da26bcec26dc49eba040cdddd7ad486e8bcc9fb01ea852f81de4cfe1858e681c56661244d51dc1ee4a11126e1510a16d29593db65314c7052c31d270744e0eabb16fad5bec9254e6f476f7de304c426ba9c6eccaf8b8e5aea7b695a8a5f80b9d96c6e86931702860416deb6d656253b25874ae8a0a3537358dc287a805e82fde666e3e0d2888c1b307e6c3833d2db4b00c062d9fa379cd776e06ed6a903fe90cdbcf10c7f95759eefff5f72b13feff88bf9b27177f80c0198c00da3c1535382bd087ea81ee693e09f77ad52d93536b490a210f4e830c90f88c655ed1a0fb0ccfb8c293adc204ba7883d9b4a738e4cc03b1cd27845a609974836020e330429af8ea0b2895739184e6e50fae48bb5b75e5fe181d994ecf1e704bc56f8816ee6074a7fccc8e0e8f0629281fc58a436e70649ef4500dbcb60e35e743d50ab9b849689e28c825730d41fc9c3b7465d9cd419a32bf0b61ee71b36b260b4179ad3c46c8baa682066d960f82ccfec7025c830434369a3465d44c14cfbd91ec6318d1f5648282185a77aea0c758c79f800b7e1dbd6d0178cec377ea05e1a84d3d9668519fbb25b2b870d527717f4ef40fbde979efd97a2c09e043ac4056e9d0e68b8b4faf205a77eff2ca6825a847004a255dfa5d9823ee3e8f73ce2dd61157d9f92dddf6f085df13c7ce3976883e0d6976036abbb250eb85d63a89719760c8f35a1633406531600b689c27a8415ee817b0d888daa149cc9d3d103886fec21b4a3b67259c162751e733ed8cf3e93eb00e3da7b04d4143011bd4a87b4ea1cd0d1f20b7c512607e2f72efb7ab5878959f353180bef0694c3c5f8cb13de5f5ee8a1a6bcfac3dd2cffd1b1f850d8e69caaa96f4a56d95a6c4f757ab9e587d9b79841735492ae49405d4b433db31f61214c52a379f77390ec7bd7ca4368948cb998b56bf1ed91c4f4ed0970775aa0e5506aaf0c2f4fc1a5ea8d6ede3239e75d8528b7c8a57967f67d42b20b4ee5416faa8a4e907e3794ed062ba28ed6b00d70a6c62343bbacb1a950ee85eee08c6d370ab38e75a839e098df3bed659c527bbda77dadfd7af442b792a6c440114c30305191cfa3c6fd567a09c0541943e7ee6feb835314c040fcd907a67ab42420b803642533af8b485f214d562468236e95ed885d3093036169f656b28f551e84167cf1c6376f01eeaa7694e52ef5c3c34cf832c18787087e6db19c887fd1cfabac37c42a93c3646cf1e5a346e181386e9d854dff271d7921b8f67a9c4eed65147d825ceab209eb6a54adecc02eff4ecc9674ac407639e44f8bdae5756d7ebf5bd2eb37e987f5822a2fe6ceee1cb2bfade11a0351f6b4618bda10586f758700c24d737d63a7552c96059675915b2f33cf5c23ca9c3489c37bf230aa1b02a090c408d7840c41e08c82567ea451e5f0dd42db2819f938cd1dc5775f29d3f94294c8a711088eb1f04ffc91103537c583a016a7d915e30a9ea469b5edf85a91b3c0bc799434a000d8a7ab5d9a90625d2e48d26faf0935eb1ab78c5cd24456a7317043d1b2f27466aa645f5228b1b83441d59f6f9bc98693a652e38d13cbd45cafe4e0a3fdf98927361af6412411e265ad74c9c6312d784c708e988c01d813cb034f09a749da6410902c56c416e22c13761fbd0623492fec128788cb1920dc970e1d831871d38cd6a84fae341dddff2a6c4a42c68e0d9a7fc498f7c1f4acda60a4f5d0fc533b37302fd55d6e0960ccfbd0aa38b4d655bc03fc4fca6506e499e0a549f0c55d4cc64fa00b505afdfb41d6fc122f69cade93ae3ea09a09eee180b2df628a6845adc5aeb35c73194fa63f3a5124af76027c96cea1e3ccb3a8b415910dc773daab3e6222fe24b5b2096313d2f700fc1391c6f5e69edf50b71ab8e9c922bf4fc05cc2027591bc66bab07417f932f6e039ca8c2805af7a03d18b225d1413213d1392f5fb3eafd63de572f20f6f8cb7bfc382c476d1be90ee2e04de64fc66870b0ff99f1407bd9ad98f75f3ada177377e7acbafdb295f47683c306f0d81c1f1df287b18804fbba145357a722df42e25de8160e81d7d5f9ecbbf57747fc0d6557915b0a45c3e4c557899c07c02bbca2c168a5e2bcfeb15240582e4ced2c2eeab419c9d1b37f57819782f8e8b82ab51eef1af5957a9619c00c705e7846804891cce4521a58ca8ffdc04bec29b7596052e4f159b26d66a1da4dc11efd3de59420123a49582198acadb12c3762e8a9225f17b553b9f13884dbcada745755227ad24150f576205c1bd0252c3c09efc9c5385ca6f3bda79c65d9dd0d15ed1599868957800d0e8a64370b72b36611ff754eda653035d06e2d055561e4f684d6c70607d210c6a3fb9d3096d591f7be637b51a99fac5f0c9b817029a99916d891f396aeb22d5ae56eb9ea8af96b889370f91443a308f8039dd9bdbdd9fe4ce6a8b508476792f4689820635f5f9e8768f831deddc785bcd1c459987e75ef69a7efc16042748c15b583abb26be6af520da6cb5efa5969163c37552f92fa5d8474db45137610d57465114d0a38e75ce60891e55030334424e9acca992ad72d0d6c4a47bad62d80ea3e20d1419524b9407688cdf43de7dc4dd6a19d4e24321041f4b8ef5b6ffff0695a9efe68d03c5c95def97227456d985c4fcca6f5405932989ab408ebd32efae2e3ced3c544fe47576a4e695a97914295f0f82575877ce925ed99e474c1600e89bd9470eb2a7f6ab9146de816d317d8ab716139cf504ce9042544318ced6efa371f6076e4f67b03ed28584e4d7dec9b17db2724ec0f15833e619a2f76bf691d0776559cfb9108829a1015e88d5a4546d867133ac2bd2c94d87dcb5f3f5762cb14b8f41d7b3c97a2591a307a7d5fbe87130153dd7103ae4ced71357fc06d68392255d589135a98cc53f8029fed8b8c9f336dd82b5d0be7379be6a05d6cc88d5730f6bd60dcfac6bdedb8f668428228bf7856a1f0fc83fd8dd407c938ca5eaaaf0d05c4a706030ed05660afef0d756104150506e16cd11b5d93f67b11573423e0191b3791bc58e4f265b4b4cd0430caf00f7d98c509c3fc44427664578e75343698517f3fec34319357351a5fd1ae63ddf9101860eb7a2dd613aca9f289bd14c7cdcc4aa8a0408dce362042326686c89bc2a39845574c108a000d555d3dbe4b842c011d89feb9f89dde071d57c210e24c62e5de2b7b579680f45f1b66ea6077917c7162087a39fd230f46d8dcab390cb673fa6813b8d9e4e90c6e5978e580b044a7af447170dbdf69840022c650ce842f502424df84ca4de386689b0d216842178ae262dee17137afe736b5871cf6537ae0ff26532ae2b08a4000dbbcc56b330d9b1a2263f4bc17ed2a32a2b8452409d073d1217e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8558fe40523c8c260d4d7c5586b07794a1cbcfc8e51beaa4eb83e023de7e9fa5f92ce2ea94565e2e1860edce04436fd41f1a5e1864e4b71b9c5df4eecdc88b4454253b58106e8354f65f5eab566053c6051dc159c9026bd618b79258fe50dd6c6b4600c7f294c35502f32ce2b7d57b2d7faa48fd98e6906e70df9fcf3e13869c90c0ad374482678e16f1cef0c0d296a3176a14ff2ce75aea2a538ae2a5da197122756ec23861533bb49e42467ddab063313dfec96f7ebf3b4a0b1996a48de925747d529a4c6381281c93376662e0e7025f7dfee53b7faa4b55dcd99742648be562c8096fdd1996f2c995706215e0ed7b43975699399f937ba6ebb5d67406cb562d2879736742e8dc5c828ece2cdd2d37df30ff321573a532e9ec3b655a7651b08c8e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e4c3538b06a7f065c55085d3a28000173099205d284b07701ebd7ff515e4e0adbf3eb9ab959187480701901b1fbc0ac5796267b82dc546b2b19d71e50d3347935198e7f8c24e318b3715e6bef4f7f32339d083f0b911cc72b502aca9773ca2f49ac1fc33ecefb5d8edff8b318d43e3d7ad0a206373b1651145eb7b84b0bd347cc0fbf8007054194b01a4003fd90e68fddc84bd7fd0ea0415a7c4212084e87f0f691919fc545e683f3336e9685b7b7f2de9249d4a0f829438798660bc2aec1bc3e9c851e87bfd480216ec24ce1ca8fe7fb4f8ebde34f8b3528c1018542e6a3c6228c03c9013c1f5a3e2a8b9220d77f3d100e06e25da37fc5197dcce8619aaa1c7f4a1270a17f6b55a6cc8ac416f8320d534198e5ed83607230362fc493469770c5bc089305c118625c3b7dae00b5d27ec1c78ab54b238b5238b340205711bc86d9c15cfff2c5b771139d28139aad61b535f54d6a31bbddfe7d1468feb766f8358d08c700c02e670402879f5252a3a8c574bc06a22d2e6f0b39ae3df3ddccddbbc75e89e8cb695d334ed9d9cb2916297fcda7495ecf0a58a13d1ae1987e88ece125b31d5034b36d7266094b4987b9665d32b47846e077683d0db92d30f4d96e6572d4469017a58b9484287086b3370a3afcdfe2c93c7ab21723f7435cd8f6631a6abf498e33718508e80cdc53dc751c170359c081d395f97bbbd9575cce0ba25001346971708eeb2d01aad7d007251ebd9055cec813ab00d95a70b430262866762fa873e43bc7291dec0e5180acfb1f45821eeed1284ebe945e785955563cb1b7cc6a4d280bf2cddf858d2679a55e105d31b1b93908a680894e347ba9f1b1bede42d6dc3165a86591c0af5f1e228252b9c495dc4ba8aa23d201805f3081b9b67bae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e5076c193abeb4027041f3a5f5e9c1e6d89d3ea444bfe4d3c87c68ac4837e168e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8558c6e17aee23337b95a27c182eb843d29e5a4b89755272acdcea2bf161b214444837186d9d020071c320d765a471d087db07737d85b2843ce81bf70f51b7466a21331c78af2c5da817faf9addcc486c1b9573920d0f8687fc1ac83929b1abe670d12ee20c700ff5dd5ef3d6bd6c5158888f5e478a522da7478c86815192fda340d5eb33315a97e5fd5983cfbd7d22c01ce7f585de30d77ecce1c55acba3790347d826c6538e9616a1b44f288a4e43846d4fc0f918a0a73efbc486f75ad208542e9de8fc5d1891069e46b805e45a2ae71883e32250e8d250b54e6e8d387b6f8019a751212433db218a6fdd146f02cf89df31758646fd37f7de2f403ca3cfaf52a051aa787e006f117fa66f9d2ee194468ce49bfef6169010c1ef2ab865c0f6b71f08985c1dc60451026ac902c85d2406aa3616516490b2f879598e16919ad5b95c49196f24cea409c920dc701c81c1289cb2586e81d477c009fd1baf204a2a197f8ab2226545ea64a8165927ad7b7f5a9c5a59e72f32b0e8cfa41cd207c92ea5fba88a9ba1a26f6677ba2d2f464581bc54ec54cba78830fdab0afebd12570e659261d1cb7fc41e4076cb0f2019efcf0f31e3185197f859924649da0db5544bfd648063e0bdf3a16f3108368ac8853aa98fbb87966f85d62bdd77aa6a6efb55580ac023aefb3c6b798536b9ac1310bfd6542501647ebc7feb4e94b61e5fad867917abd7940584b7e29b82e562ed63db15e2b68155bb6a52ca28a80a0fb5063ef2a71c53b5f5264adef7bf6f12b3e46d95629b21c9ebaa315afb1e57dfebf9a3553ce9b1ab59c54cf31a15ce79c2091f7c66c2b7199504363bc1d40d187f920e3db76d37b5060785b6588dcb00b4a1eb7efcdf0ac454b6f77d8289ed1dda737b777951d40177b2ea503d72f2bd97e8ba558de0795fb15106c2074da03e875208ead703361308034ea00abe37a2daf22fcd17feb6584083d29cb93b5fd14eda4a94f54c9b63a9e628316e1b712242164fb74028e41c23391b6724042a66c2a52a4a081e46f59d5f1cb7bfe2e95bd50f56f92fe170c43b932332efa2b6d02765827686e442e326b694975b1da58530d4fe420fa3dd0bfdfa2149f579af8b0418fe00bb13f9ba854b1cf3d7a9261b8473320b1a3a5c2092f653ddfd9d1b79683faa5361468b4a7bf329dd67647104ca5e83f0bec4d7a1ea7b633acf7054ac57d32f43d707de57f533833f11e414b939e5cce282886e801118d1cf4419c743761c67b75782596146e657de6ed6e9c82178fbfcd5eb4549d61f7a2ffd9cbb75f95bfe517f4acc4913f9f3a0ee83c02f1153bd407550b37d7b56d39b6d26357531e14b1802f95c1634a6e1cf319b551ee110a76486551b33cf7fdc294c8804a34e4b444ef213ba2ab4e5345ebf8b5ea10b83b65f2dd74395b8537592a5747f00b135eb5840d0151a5f08c4bbf9230c23717c4c95104253febab4b9143acc8951f375504a3a64f7ef13326b254ea93629f3e7a798764aeb69eecb4f1698e1d41ff0627527a5dbfcaf0ea5185875248587348baf33df176a3296cf2840543ac4bb539065544ff3ae4b2783979f469f27788a01744efc68b54aa13bf6f2e345fb7af52ac5eb6df001a0ab4b458050befb8a2a6fc4b1984a0f912d07554599a08101199d754cb810a300b6b809fdb6f93c43d40f2a62ee288a1d181fdb828963c0aaaa62e453fb979c19332fb569134c4c54d3779f1f25cd976e2f41cee1e4f9dff46424a216598103db0b58f0664f62c51287c1fdf37272eab06e42fc15085676fe90cc338ee4fef6870b31dbe31b926c578c2cb1b67483d9690dba7fd46240c525fef23be2f2690af815242250b1b46764d8f03e0b1b3b416b8d6b39d39e0f43a46df28a37800f266dffada811d45327c930e82971ba78f76f004d677a29f6b5080739bdd4ce3b2397d7662b381fcfd8af1292ab92a12af7b4e866e61d7f23b431f49656c82be41323b38bebf9bbd4225363017d2eeee737ab186c76fcfd93f0df9a99f58dd4e078f3c283692b3154690d39a3fe9c9d02c3b0aba8452c5b109f40ef7f0d2b11667c9de8deeab80f02218c5976d0a2587f3c38e8542d2131fdff5fc0066bd2079d494dccfb602ca43a6cdb0e090688a9560447993ae898fad94521b472b338160aae0163c8ddb4780313a1ddcb09b953ebb1669acd5465448c6b885cd5545c36161adb699e9070bbbadda229089d593300bf7ec3d694079c957d4e6327cb106c8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903b1842703b4253d4e037a5a17d8e57d436483cad532ff76eec92da8443c463d7310c99ee8eb2dd56e6f110587cdf4dc30878e7f427d27ab41c7637763099b064df0ecefb8ea6acaab244232415b92984735aac9b6ee3b3bf3df27c8bd885030farootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootcloud-init-23.3-150100.8.71.1.src.rpmcloud-initcloud-init(x86-64)config(cloud-init)@@@@      /bin/bash/bin/sh/bin/sh/usr/bin/python3bashcloud-init-configconfig(cloud-init)dhcp-clientdmidecodee2fsprogsfilegrowpartnet-toolsopensshprocpspython(abi)python3-Jinja2python3-PyYAMLpython3-configobjpython3-jsonpatchpython3-jsonschemapython3-netifacespython3-oauthlibpython3-passlibpython3-pyserialpython3-requestspython3-serialpython3-setuptoolspython3-xmlrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)sudosystemdsystemdsystemdsystemdutil-linuxwgetwicked-service0.723.3-150100.8.71.13.65.0.23.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1eie#@d@dddJcd5KcU@c@ccFb@b8a)@a @a @`:@`r`m` @_@_@___u@___@^W@^^@^x^}^|@^{G^E:@^C^C^*@^!^@^]@]µ]@]@]@]@]@]]Z@]Z@]V];\\@\O\Z@\o@\o@\o@\R@\G\3?@[<@[ٙ@[Ѱ@[@[@[>@[3|@[@Z@ZZI@ZZ@Zp^@Zo Z`@Z]@Z'Z@Zr@Z@Z }Z@ZYYéYX@Y@YzY@XXX@X@X@X@XU(XOXN@XN@XJXIK@X@X>@X<@X5X43@X(UXX2@X@X@X=X=X=X=X=X@XXX`@W@WWڍ@W;W;W@WUeW(V@VU3@U\w@U>$U+TgT[@Tи@To)@michal.vyskocil@gmail.comrjschwei@suse.comrjschwei@suse.comdmueller@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comsteven.kowalik@suse.comrjschwei@suse.comqydwhotmail@gmail.comalarrosa@suse.comrjschwei@suse.comrjschwei@suse.comjmassaguerpla@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.commloviska@suse.comjgleissner@suse.comjgleissner@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comdimstar@opensuse.orgrjschwei@suse.comtchvatal@suse.comrjschwei@suse.comrjschwei@suse.competr.pavlu@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comdimstar@opensuse.orgrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.combwiedemann@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comdmueller@suse.comrjschwei@suse.comdmueller@suse.comrjschwei@suse.comgmoro@suse.comdimstar@opensuse.orgrjschwei@suse.comkukuk@suse.derjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comdmueller@suse.comkukuk@suse.derjschwei@suse.comrjschwei@suse.comkukuk@suse.dedmueller@suse.comkukuk@suse.derjschwei@suse.comrjschwei@suse.comkukuk@suse.derjschwei@suse.comkukuk@suse.dedmueller@suse.comdmueller@suse.comjgleissner@suse.comdmueller@suse.comkukuk@suse.dekukuk@suse.comkukuk@suse.comkukuk@suse.dekukuk@suse.dekukuk@suse.derjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.combwiedemann@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comdmueller@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comjoachim.gleissner@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comrjschwei@suse.comtbechtold@suse.comrjschwei@suse.comtbechtold@suse.comtbechtold@suse.comreik.keutterling@nodefall.de- Move fdupes call back to %install (boo#1214169)- Update to version 23.3 (bsc#1216011, bsc#1215794, bsc#1215740) + Remove patches included upstream: - cloud-init-fix-ca-test.patch - cloud-init-cve-2023-1786-redact-instance-data-json-main.patch - cloud-init-power-rhel-only.patch - cloud-init-flake8-fixes.patch + Add - cloud-init-keep-flake.patch - cloud-init-lint-fixes.patch + Update - cloud-init-write-routes.patch (bsc#1216007) + Bump pycloudlib to 1!5.1.0 for ec2 mantic daily image support (#4390) + Fix cc_keyboard in mantic (LP: #2030788) + ec2: initialize get_instance_userdata return value to bytes (#4387) [Noah Meyerhans] + cc_users_groups: Add doas/opendoas support (#4363) [dermotbradley] + Fix pip-managed ansible + status: treat SubState=running and MainPID=0 as service exited + azure/imds: increase read-timeout to 30s (#4372) [Chris Patterson] + collect-logs fix memory usage (SC-1590) (#4289) [Alec Warren] (LP: #1980150) + cc_mounts: Use fallocate to create swapfile on btrfs (#4369) [王煎饼] + Undocument nocloud-net (#4318) + feat(akamai): add akamai to settings.py and apport.py (#4370) + read-version: fallback to get_version when git describe fails (#4366) + apt: fix cloud-init status --wait blocking on systemd v 253 (#4364) + integration tests: Pass username to pycloudlib (#4324) + Bump pycloudlib to 1!5.1.0 (#4353) + cloud.cfg.tmpl: reorganise, minimise/reduce duplication (#4272) [dermotbradley] + analyze: fix (unexpected) timestamp parsing (#4347) [Mina Galić] + cc_growpart: fix tests to run on FreeBSD (#4351) [Mina Galić] + subp: Fix spurious test failure on FreeBSD (#4355) [Mina Galić] + cmd/clean: fix tests on non-Linux platforms (#4352) [Mina Galić] + util: Fix get_proc_ppid() on non-Linux systems (#4348) [Mina Galić] + cc_wireguard: make tests pass on FreeBSD (#4346) [Mina Galić] + unittests: fix breakage in test_read_cfg_paths_fetches_cached_datasource (#4328) [Ani Sinha] + Fix test_tools.py collection (#4315) + cc_keyboard: add Alpine support (#4278) [dermotbradley] + Flake8 fixes (#4340) [Robert Schweikert] + cc_mounts: Fix swapfile not working on btrfs (#4319) [王煎饼] (LP: #1884127) + ds-identify/CloudStack: $DS_MAYBE if vm running on vmware/xen (#4281) [Wei Zhou] + ec2: Support double encoded userdata (#4276) [Noah Meyerhans] + cc_mounts: xfs is a Linux only FS (#4334) [Mina Galić] + tests/net: fix TestGetInterfaces' mock coverage for get_master (#4336) [Chris Patterson] + change openEuler to openeuler and fix some bugs in openEuler (#4317) [sxt1001] + Replace flake8 with ruff (#4314) + NM renderer: set default IPv6 addr-gen-mode for all interfaces to eui64 (#4291) [Ani Sinha] + cc_ssh_import_id: add Alpine support and add doas support (#4277) [dermotbradley] + sudoers not idempotent (SC-1589) (#4296) [Alec Warren] (LP: #1998539) + Added support for Akamai Connected Cloud (formerly Linode) (#4167) [Will Smith] + Fix reference before assignment (#4292) + Overhaul module reference page (#4237) [Sally] + replaced spaces with commas for setting passenv (#4269) [Alec Warren] + DS VMware: modify a few log level (#4284) [PengpengSun] + tools/read-version refactors and unit tests (#4268) + Ensure get_features() grabs all features (#4285) + Don't always require passlib dependency (#4274) + tests: avoid leaks into host system checking of ovs-vsctl cmd (#4275) + Fix NoCloud kernel commandline key parsing (#4273) + testing: Clear all LRU caches after each test (#4249) + Remove the crypt dependency (#2139) [Gonéri Le Bouder] + logging: keep current file mode of log file if its stricter than the new mode (#4250) [Ani Sinha] + Remove default membership in redundant groups (#4258) [Dave Jones] (LP: #1923363) + doc: improve datasource_creation.rst (#4262) + Remove duplicate Integration testing button (#4261) [Rishita Shaw] + tools/read-version: fix the tool so that it can handle version parsing errors (#4234) [Ani Sinha] + net/dhcp: add udhcpc support (#4190) [Jean-François Roche] + DS VMware: add i386 arch dir to deployPkg plugin search path [PengpengSun] + LXD moved from linuxcontainers.org to Canonical [Simon Deziel] + cc_mounts.py: Add note about issue with creating mounts inside mounts (#4232) [dermotbradley] + lxd: install lxd from snap, not deb if absent in image + landscape: use landscape-config to write configuration + Add deprecation log during init of DataSourceDigitalOcean (#4194) [tyb-truth] + doc: fix typo on apt.primary.arches (#4238) [Dan Bungert] + Inspect systemd state for cloud-init status (#4230) + instance-data: add system-info and features to combined-cloud-config (#4224) + systemd: Block login until config stage completes (#2111) (LP: #2013403) + tests: proposed should invoke apt-get install -t=-proposed (#4235) + cloud.cfg.tmpl: reinstate ca_certs entry (#4236) [dermotbradley] + Remove feature flag override ability (#4228) + tests: drop stray unrelated file presence test (#4227) + Update LXD URL (#4223) [Sally] + schema: add network v1 schema definition and validation functions + tests: daily PPA for devel series is version 99.daily update tests to match (#4225) + instance-data: write /run/cloud-init/combined-cloud-config.json + mount parse: Fix matching non-existent directories (#4222) [Mina Galić] + Specify build-system for pep517 (#4218) + Fix network v2 metric rendering (#4220) + Migrate content out of FAQ page (SD-1187) (#4205) [Sally] + setup: fix generation of init templates (#4209) [Mina Galić] + docs: Correct some bootcmd example wording + fix changelog + tests: reboot client to assert x-shellscript-per-boot is triggered + nocloud: parse_cmdline no longer detects nocloud-net datasource (#4204) (LP: 4203, #2025180) + Add docstring and typing to mergemanydict (#4200) + BSD: add dsidentify to early startup scripts (#4182) [Mina Galić] + handler: report errors on skipped merged cloud-config.txt parts (LP: #1999952) + Add cloud-init summit writeups (#4179) [Sally] + tests: Update test_clean_log for oci (#4187) + gce: improve ephemeral fallback NIC selection (CPC-2578) (#4163) + tests: pin pytest 7.3.1 to avoid adverse testpaths behavior (#4184) + Ephemeral Networking for FreeBSD (#2165) [Mina Galić] + Clarify directory syntax for nocloud local filesystem. (#4178) + Set default renderer as sysconfig for centos/rhel (#4165) [Ani Sinha] + Test static routes and netplan 0.106 + FreeBSD fix parsing of mount and mount options (#2146) [Mina Galić] + test: add tracking bug id (#4164) + tests: can't match MAC for LXD container veth due to netplan 0.106 (#4162) + Add kaiwalyakoparkar as a contributor (#4156) [Kaiwalya Koparkar] + BSD: remove datasource_list from cloud.cfg template (#4159) [Mina Galić] + launching salt-minion in masterless mode (#4110) [Denis Halturin] + tools: fix run-container builds for rockylinux/8 git hash mismatch (#4161) + fix doc lint: spellchecker tripped up (#4160) [Mina Galić] + Support Ephemeral Networking for BSD (#2127) + Added / fixed support for static routes on OpenBSD and FreeBSD (#2157) [Kadir Mueller] + cc_rsyslog: Refactor for better multi-platform support (#4119) [Mina Galić] (LP: #1798055) + tests: fix test_lp1835584 (#4154) + cloud.cfg mod names: docs and rename salt_minion and set_password (#4153) + tests: apt support for deb822 format .sources files on mantic + vultr: remove check_route check (#2151) [Jonas Chevalier] + Update SECURITY.md (#4150) [Indrranil Pawar] + Update CONTRIBUTING.rst (#4149) [Indrranil Pawar] + Update .github-cla-signers (#4151) [Indrranil Pawar] + Standardise module names in cloud.cfg.tmpl to only use underscore (#4128) [dermotbradley] + tests: update test_webhook_reporting + Modify PR template so autoclose works + doc: add missing semi-colon to nocloud cmdline docs (#4120) + .gitignore: extend coverage pattern (#4143) [Mina Galić] From 23.2.2 + Fix NoCloud kernel commandline key parsing (#4273) (Fixes: #4271) (LP: #2028562) + Fix reference before assignment (#4292) (Fixes: #4288) (LP: #2028784) From 23.2.1 + nocloud: Fix parse_cmdline detection of nocloud-net datasource (#4204) (Fixes: 4203) (LP: #2025180) From 23.2 + BSD: simplify finding MBR partitions by removing duplicate code [Mina Galić] + tests: bump pycloudlib version for mantic builds + network-manager: Set higher autoconnect priority for nm keyfiles (#3671) [Ani Sinha] + alpine.py: change the locale file used (#4139) [dermotbradley] + cc_ntp: Sync up with current FreeBSD ntp.conf (#4122) [Mina Galić] + config: drop refresh_rmc_and_interface as RHEL 7 no longer supported [Robert Schweikert] + docs: Add feedback button to docs + net/sysconfig: enable sysconfig renderer if network manager has ifcfg-rh plugin (#4132) [Ani Sinha] + For Alpine use os-release PRETTY_NAME (#4138) [dermotbradley] + network_manager: add a method for ipv6 static IP configuration (#4127) [Ani Sinha] + correct misnamed template file host.mariner.tmpl (#4124) [dermotbradley] + nm: generate ipv6 stateful dhcp config at par with sysconfig (#4115) [Ani Sinha] + Add templates for GitHub Issues + Add 'peers' and 'allow' directives in cc_ntp (#3124) [Jacob Salmela] + FreeBSD: Fix user account locking (#4114) [Mina Galić] (GH: #1854594) + FreeBSD: add ResizeGrowFS class to cc_growpart (#2334) [Mina Galić] + Update tests in Azure TestCanDevBeReformatted class (#2771) [Ksenija Stanojevic] + Replace Launchpad references with GitHub Issues + Fix KeyError in iproute pformat (#3287) [Dmitry Zykov] + schema: read_cfg_paths call init.fetch to lookup /v/l/c/instance + azure/errors: introduce reportable errors for imds (#3647) [Chris Patterson] + FreeBSD (and friends): better identify MBR slices (#2168) [Mina Galić] (LP: #2016350) + azure/errors: add host reporting for dhcp errors (#2167) [Chris Patterson] + net: purge blacklist_drivers across net and azure (#2160) [Chris Patterson] + net: refactor hyper-v VF filtering and apply to get_interfaces() (#2153) [Chris Patterson] + tests: avoid leaks to underlying filesystem for /etc/cloud/clean.d (#2251) + net: refactor find_candidate_nics_on_linux() to use get_interfaces() (#2159) [Chris Patterson] + resolv_conf: Allow > 3 nameservers (#2152) [Major Hayden] + Remove mount NTFS error message (#2134) [Ksenija Stanojevic] + integration tests: fix image specification parsing (#2166) + ci: add hypothesis scheduled GH check (#2149) + Move supported distros list to docs (#2162) + Fix logger, use instance rather than module function (#2163) + README: Point to Github Actions build status (#2158) + Revert "fix linux-specific code on bsd (#2143)" (#2161) + Do not generate dsa and ed25519 key types when crypto FIPS mode is enabled (#2142) [Ani Sinha] (LP: 2017761) + Add documentation label automatically (#2156) + sources/azure: report success to host and introduce kvp module (#2141) [Chris Patterson] + setup.py: use pkg-config for udev/rules path (#2137) [dankm] + openstack/static: honor the DNS servers associated with a network (#2138) [Gonéri Le Bouder] + fix linux-specific code on bsd (#2143) + cli: schema validation of jinja template user-data (SC-1385) (#2132) (LP: #1881925) + gce: activate network discovery on every boot (#2128) + tests: update integration test to assert 640 across reboots (#2145) + Make user/vendor data sensitive and remove log permissions (#2144) (LP: #2013967) + Update kernel command line docs (SC-1457) (#2133) + docs: update network configuration path links (#2140) [d1r3ct0r] + sources/azure: report failures to host via kvp (#2136) [Chris Patterson] + net: Document use of `ip route append` to add routes (#2130) + dhcp: Add missing mocks (#2135) + azure/imds: retry fetching metadata up to 300 seconds (#2121) [Chris Patterson] + [1/2] DHCP: Refactor dhcp client code (#2122) + azure/errors: treat traceback_base64 as string (#2131) [Chris Patterson] + azure/errors: introduce reportable errors (#2129) [Chris Patterson] + users: schema permit empty list to indicate create no users + azure: introduce identity module (#2116) [Chris Patterson] + Standardize disabling cloud-init on non-systemd (#2112) + Update .github-cla-signers (#2126) [Rob Tongue] + NoCloud: Use seedfrom protocol to determine mode (#2107) + rhel: Remove sysvinit files. (#2114) + tox.ini: set -vvvv --showlocals for pytest (#2104) [Chris Patterson] + Fix NoCloud kernel commandline semi-colon args + run-container: make the container/VM timeout configurable (#2118) [Paride Legovini] + suse: Remove sysvinit files. (#2115) + test: Backport assert_call_count for old requests (#2119) + Add "licebmi" as contributor (#2113) [Mark Martinez] + Adapt DataSourceScaleway to upcoming IPv6 support (#2033) [Louis Bouchard] + rhel: make sure previous-hostname file ends with a new line (#2108) [Ani Sinha] + Adding contributors for DataSourceAkamai (#2110) [acourdavAkamai] + Cleanup ephemeral IP routes on exception (#2100) [sxt1001] + commit 09a64badfb3f51b1b391fa29be19962381a4bbeb [sxt1001] (LP: #2011291) + Standardize kernel commandline user interface (#2093) + config/cc_resizefs: fix do_resize arguments (#2106) [Chris Patterson] + Fix test_dhclient_exits_with_error (#2105) + net/dhcp: catch dhclient failures and raise NoDHCPLeaseError (#2083) [Chris Patterson] + sources/azure: move pps handling out of _poll_imds() (#2075) [Chris Patterson] + tests: bump pycloudlib version (#2102) + schema: do not manipulate draft4 metaschema for jsonschema 2.6.0 (#2098) + sources/azure/imds: don't count timeout errors as connection errors (#2074) [Chris Patterson] + Fix Python 3.12 unit test failures (#2099) + integration tests: Refactor instance checking (#1989) + ci: migrate remaining jobs from travis to gh (#2085) + missing ending quote in instancedata docs(#2094) [Hong L] + refactor: stop passing log instances to cc_* handlers (#2016) [d1r3ct0r] + tests/vmware: fix test_no_data_access_method failure (#2092) [Chris Patterson] + Don't change permissions of netrules target (#2076) (LP: #2011783) + tests/sources: patch util.get_cmdline() for datasource tests (#2091) [Chris Patterson] + macs: ignore duplicate MAC for devs with driver driver qmi_wwan (#2090) (LP: #2008888) + Fedora: Enable CA handling (#2086) [František Zatloukal] + Send dhcp-client-identifier for InfiniBand ports (#2043) [Waleed Mousa] + cc_ansible: complete the examples and doc (#2082) [Yves] + bddeb: for dev package, derive debhelper-compat from host system + apport: only prompt for cloud_name when instance-data.json is absent + datasource: Optimize datasource detection, fix bugs (#2060) + Handle non existent ca-cert-config situation (#2073) [Shreenidhi Shedi] + sources/azure: add networking check for all source PPS (#2061) [Chris Patterson] + do not attempt dns resolution on ip addresses (#2040) + chore: fix style tip (#2071) + Fix metadata IP in instancedata.rst (#2063) [Brian Haley] + util: Pass deprecation schedule in deprecate_call() (#2064) + config: Update grub-dpkg docs (#2058) + docs: Cosmetic improvements and styling (#2057) [s-makin] + cc_grub_dpkg: Added UEFI support (#2029) [Alexander Birkner] + tests: Write to /var/spool/rsyslog to adhere to apparmor profile (#2059) + oracle-ds: prefer system_cfg over ds network config source (#1998) (LP: #1956788) + Remove dead code (#2038) + source: Force OpenStack when it is only option (#2045) (LP: #2008727) + cc_ubuntu_advantage: improve UA logs discovery + sources/azure: fix regressions in IMDS behavior (#2041) [Chris Patterson] + tests: fix test_schema (#2042) + dhcp: Cleanup unused kwarg (#2037) + sources/vmware/imc: fix-missing-catch-few-negtive-scenarios (#2027) [PengpengSun] + dhclient_hook: remove vestigal dhclient_hook command (#2015) + log: Add standardized deprecation tooling (SC-1312) (#2026) + Enable SUSE based distros for ca handling (#2036) [Robert Schweikert] From 23.1.2 + Make user/vendor data sensitive and remove log permissions (LP: #2013967) (CVE-2023-1786) From 23.1.1 + source: Force OpenStack when it is only option (#2045) + sources/azure: fix regressions in IMDS behavior (#2041) [Chris Patterson]- Add cloud-init-flake8-fixes.patch - Revert chnages from previous commit + Disabling checks the primary maintainer enabled for specific reasons is not a fix.- update to 23.1.2: * Make user/vendor data sensitive and remove log permissions * source: Force OpenStack when it is only option (#2045) * sources/azure: fix regressions in IMDS behavior - drop cloud-init-cve-2023-1786-redact-instance-data-json-main.patch (upstream) - spec-file cleanups, including dropping flake8 (as build fails with newer flake8 versions)- Update cloud-init-write-routes.patch (bsc#1212879) + Add necessary import statement - Enable flake8 linting, fix up patches + cloud-init-cve-2023-1786-redact-instance-data-json-main.patch + cloud-init-power-rhel-only.patch + cloud-init-write-routes.patch + datasourceLocalDisk.patch- Add cloud-init-power-rhel-only.patch (bsc#1210273) + Config module cc_refresh_rmc_and_interface is implemented such that it will only work on RH distros. Set the module availability accordingly.- Sensitive data exposure (bsc#1210277, CVE-2023-1786) + Add hidesensitivedata + Add cloud-init-cve-2023-1786-redact-inst-data.patch + Do not expose sensitive data gathered from the CSP- Update to version 23.1 + Remove patches included upstream: - cloud-init-btrfs-queue-resize.patch - cloud-init-micro-is-suse.patch - cloud-init-suse-afternm.patch - cloud-init-prefer-nm.patch - cloud-init-transact-up.patch + Forward port - cloud-init-write-routes.patch + Added - cloud-init-fix-ca-test.patch + Support transactional-updates for SUSE based distros (#1997) [Robert Schweikert] + Set ownership for new folders in Write Files Module (#1980) [Jack] (LP: #1990513) + add OpenCloudOS and TencentOS support (#1964) [wynnfeng] + lxd: Retry if the server isn't ready (#2025) + test: switch pycloudlib source to pypi (#2024) + test: Fix integration test deprecation message (#2023) + Recognize opensuse-microos, dev tooling fixes [Robert Schweikert] + sources/azure: refactor imds handler into own module (#1977) [Chris Patterson] + docs: deprecation generation support [1/2] (#2013) + add function is_virtual to distro/FreeBSD (#1957) [Mina Galić] + cc_ssh: support multiple hostcertificates (#2018) (LP: #1999164) + Fix minor schema validation regression and fixup typing (#2017) + doc: Reword user data debug section (#2019) + Overhaul/rewrite of certificate handling as follows: (#1962) [dermotbradley] (LP: #1931174) + disk_setup: use byte string when purging the partition table (#2012) [Stefan Prietl] + cli: schema also validate vendordata*. + ci: sort and add checks for cla signers file [Stefan Prietl] + Add "ederst" as contributor (#2010) [Stefan Prietl] + readme: add reference to packages dir (#2001) + docs: update downstream package list (#2002) + docs: add google search verification (#2000) [s-makin] + docs: fix 404 render use default notfound_urls_prefix in RTD conf (#2004) + Fix OpenStack datasource detection on bare metal (#1923) [Alexander Birkner] (LP: #1815990) + docs: add themed RTD 404 page and pointer to readthedocs-hosted (#1993) + schema: fix gpt labels, use type string for GUID (#1995) + cc_disk_setup: code cleanup (#1996) + netplan: keep custom strict perms when 50-cloud-init.yaml exists + cloud-id: better handling of change in datasource files [d1r3ct0r] (LP: #1998998) + tests: Remove restart check from test + Ignore duplicate macs from mscc_felix and fsl_enetc (LP: #1997922) + Warn on empty network key (#1990) + Fix Vultr cloud_interfaces usage (#1986) [eb3095] + cc_puppet: Update puppet service name (#1970) [d1r3ct0r] (LP: #2002969) + docs: Clarify networking docs (#1987) + lint: remove httpretty (#1985) [sxt1001] + cc_set_passwords: Prevent traceback when restarting ssh (#1981) + tests: fix lp1912844 (#1978) + tests: Skip ansible test on bionic (#1984) + Wait for NetworkManager (#1983) [Robert Schweikert] + docs: minor polishing (#1979) [s-makin] + CI: migrate integration-test to GH actions (#1969) + Fix permission of SSH host keys (#1971) [Ron Gebauer] + Fix default route rendering on v2 ipv6 (#1973) (LP: #2003562) + doc: fix path in net_convert command (#1975) + docs: update net_convert docs (#1974) + doc: fix dead link + cc_set_hostname: ignore /var/lib/cloud/data/set-hostname if it's empty (#1967) [Emanuele Giuseppe Esposito] + distros/rhel.py: _read_hostname() missing strip on "hostname" (#1941) [Mark Mielke] + integration tests: add IBM VPC support (SC-1352) (#1915) + machine-id: set to uninitialized to trigger regeneration on clones (LP: #1999680) + sources/azure: retry on connection error when fetching metdata (#1968) [Chris Patterson] + Ensure ssh state accurately obtained (#1966) + bddeb: drop dh-systemd dependency on newer deb-based releases [d1r3ct0r] + doc: fix `config formats` link in cloudsigma.rst (#1960) + Fix wrong subp syntax in cc_set_passwords.py (#1961) + docs: update the PR template link to readthedocs (#1958) [d1r3ct0r] + ci: switch unittests to gh actions (#1956) + Add mount_default_fields for PhotonOS. (#1952) [Shreenidhi Shedi] + sources/azure: minor refactor for metadata source detection logic (#1936) [Chris Patterson] + add "CalvoM" as contributor (#1955) [d1r3ct0r] + ci: doc to gh actions (#1951) + lxd: handle 404 from missing devices route for LXD 4.0 (LP: #2001737) + docs: Diataxis overhaul (#1933) [s-makin] + vultr: Fix issue regarding cache and region codes (#1938) [eb3095] + cc_set_passwords: Move ssh status checking later (SC-1368) (#1909) (LP: #1998526) + Improve Wireguard module idempotency (#1940) [Fabian Lichtenegger-Lukas] + network/netplan: add gateways as on-link when necessary (#1931) [Louis Sautier] (LP: #2000596) + tests: test_lxd assert features.networks.zones when present (#1939) + Use btrfs enquque when available (#1926) [Robert Schweikert] + sources/azure: drop description for report_failure_to_fabric() (#1934) [Chris Patterson] + cc_disk_setup.py: fix MBR single partition creation (#1932) [dermotbradley] (LP: #1851438) + Fix typo with package_update/package_upgrade (#1927) [eb3095] + sources/azure: fix device driver matching for net config (#1914) [Chris Patterson] + BSD: fix duplicate macs in Ifconfig parser (#1917) [Mina Galić] + test: mock dns calls (#1922) + pycloudlib: add lunar support for integration tests (#1928) + nocloud: add support for dmi variable expansion for seedfrom URL (LP: #1994980) + tools: read-version drop extra call to git describe --long + doc: improve cc_write_files doc (#1916) + read-version: When insufficient tags, use cloudinit.version.get_version + mounts: document weird prefix in schema (#1913) + add utility function test cases (#1910) [sxt1001] + test: mock file deletion in dhcp tests (#1911) + Ensure network ready before cloud-init service runs on RHEL (#1893) (LP: #1998655) + docs: add copy button to code blocks (#1890) [s-makin] + netplan: define features.NETPLAN_CONFIG_ROOT_READ_ONLY flag + azure: fix support for systems without az command installed (#1908) + Networking Clarification (#1892) + Fix the distro.osfamily output problem in the openEuler system. (#1895) [sxt1001] (LP: #1999042) + pycloudlib: bump commit dropping azure api smoke test + net: netplan config root read-only as wifi config can contain creds + autoinstall: clarify docs for users + sources/azure: encode health report as utf-8 (#1897) [Chris Patterson] + Add back gateway4/6 deprecation to docs (#1898) + networkd: Add support for multiple [Route] sections (#1868) [Nigel Kukard] + doc: add qemu tutorial (#1863) + lint: fix tip-flake8 and tip-mypy (#1896) + Add support for setting uid when creating users on FreeBSD (#1888) [einsibjarni] + Fix exception in BSD networking code-path (#1894) [Mina Galić] + Append derivatives to is_rhel list in cloud.cfg.tmpl (#1887) [Louis Abel] + FreeBSD init: use cloudinit_enable as only rcvar (#1875) [Mina Galić] + feat: add support aliyun metadata security harden mode (#1865) [Manasseh Zhou] + docs: uprate analyze to performance page [s-makin] + test: fix lxd preseed managed network config (#1881) + Add support for static IPv6 addresses for FreeBSD (#1839) [einsibjarni] + Make 3.12 failures not fail the build (#1873) + Docs: adding relative links [s-makin] + Update read-version + Fix setup.py to align with PEP 440 versioning replacing trailing + travis: promote 3.11-dev to 3.11 (#1866) + test_cloud_sigma: delete useless test (#1828) [sxt1001] + Add "nkukard" as contributor (#1864) [Nigel Kukard] + tests: ds-id mocks for vmware-rpctool as utility may not exist in env + doc: add how to render new module doc (#1855) + doc: improve module creation explanation (#1851) + Add Support for IPv6 metadata to OpenStack (#1805) [Marvin Vogt] (LP: #1906849) + add xiaoge1001 to .github-cla-signers (#1854) [sxt1001] + network: Deprecate gateway{4,6} keys in network config v2 (#1794) (LP: #1992512) + VMware: Move Guest Customization transport from OVF to VMware (#1573) [PengpengSun] + doc: home page links added (#1852) [s-makin] From 22.4.2 + status: handle ds not defined in status.json (#1876) (LP: #1997559) From 22.4.1 + net: skip duplicate mac check for netvsc nic and its VF (#1853) [Anh Vo] (LP: #1844191) + ChangeLog: whitespace cleanup (#1850) + changelog: capture 22.3.1-4 releases- Add cloud-init-transact-up.patch to support transactional-updates- Add cloud-init-prefer-nm.patch + Prefer NetworkManager of sysconfig when available - Remove six dependency (bsc#1198269)- Update to version 22.4 (bsc#1201010) + Remove patches included upstream: - cloud-init-vmware-test.patch - cloud-init-sysctl-not-in-bin.patch + Forward port: - cloud-init-write-routes.patch - cloud-init-break-resolv-symlink.patch - cloud-init-sysconf-path.patch - cloud-init-no-tempnet-oci.patch + Add cloud-init-btrfs-queue-resize.patch (bsc#1171511) + Add cloud-init-micro-is-suse.patch (bsc#1203393) [Martin Petersen] + Add cloud-init-suse-afternm.patch + test: fix pro integration test [Alberto Contreras] + cc_disk_setup: pass options in correct order to utils (#1829) [dermotbradley] + tests: text_lxd basic_preseed verify_clean_log (#1826) + docs: switch sphinx theme to furo (SC-1327) (#1821) [Alberto Contreras] + tests: activate Ubuntu Pro tests (only on Jenkins) (#1777) [Alberto Contreras] + tests: test_lxd assert features.storage.buckets when present (#1827) + tests: replace missed ansible install-method with underscore (#1825) + tests: replace ansible install-method with underscore + ansible: standardize schema keys + ci: run json tool on 22.04 rather than 20.04 (#1823) + Stop using devices endpoint for LXD network config (#1819) + apport: address new curtin log and config locations (#1812) + cc_grub: reword docs for clarity (#1818) + tests: Fix preseed test (#1820) + Auto-format schema (#1810) + Ansible Control Module (#1778) + Fix last reported event possibly not being sent (#1796) (LP: #1993836) + tests: Ignore unsupported lxd project keys (#1817) [Alberto Contreras] + udevadm settle should handle non-udev system gracefully (#1806) [dermotbradley] + add mariner support (#1780) [Minghe Ren] + Net: add BSD ifconfig(8) parser and state class (#1779) [Mina Galić] + adding itjamie to .github-cla-signers [Jamie (Bear) Murphy] + Fix inconsistency between comment and statement (#1809) [Guillaume Gay] + Update .github-cla-signers (#1811) [Guillaume Gay] + alpine.py: Add Alpine-specific manage_service function and update tests (#1804) [dermotbradley] + test: add 3.12-dev to Travis CI (#1798) [Alberto Contreras] + add NWCS datasource (#1793) [shell-skrimp] + Adding myself as CLA signer (#1799) [s-makin] + apport: fix some data collection failures due to symlinks (#1797) [Dan Bungert] + read-version: Make it compatible with bionic (#1795) [Alberto Contreras] + lxd: add support for lxd preseed config(#1789) + Enable hotplug for LXD datasource (#1787) + cli: collect logs and apport subiquity support + add support for Container-Optimized OS (#1748) [vteratipally] + test: temporarily disable failing integration test (#1792) + Fix LXD/nocloud detection on lxd vm tests (#1791) + util: Implement __str__ and __iter__ for Version (#1790) + cc_ua: consume ua json api for enable commands [Alberto Contreras] + Add clarity to cc_final_message docs (#1788) + cc_ntp: add support for BSDs (#1759) [Mina Galić] (LP: #1990041) + make Makefile make agnostic (#1786) [Mina Galić] + Remove hardcoding and unnecessary overrides in Makefile (#1783) [Joseph Mingrone] + Add my username (Jehops) to .github-cla-signers (#1784) [Joseph Mingrone] + Temporarily remove broken test (#1781) + Create reference documentation for base config + cc_ansible: add support for galaxy install (#1736) + distros/manage_services: add support to disable service (#1772) [Mina Galić] (LP: #1991024) + OpenBSD: remove pkg_cmd_environ function (#1773) [Mina Galić] (LP: 1991567) + docs: Correct typo in the FAQ (#1774) [Maximilian Wörner] + tests: Use LXD metadata to determine NoCloud status (#1776) + analyze: use init-local as start of boot record (#1767) [Chris Patterson] + docs: use opensuse for distro name in package doc (#1771) + doc: clarify packages as dev only (#1769) [Alberto Contreras] + Distro manage service: Improve BSD support (#1758) [Mina Galić] (LP: #1990070) + testing: check logs for critical errors (#1765) [Chris Patterson] + cc_ubuntu_advantage: Handle already attached on Pro [Alberto Contreras] + doc: Add configuration explanation (SC-1169) + Fix Oracle DS primary interface when using IMDS (#1757) (LP: #1989686) + style: prefer absolute imports over relative imports [Mina Galić] + tests: Fix ip log during instance destruction (#1755) [Alberto Contreras] + cc_ubuntu_advantage: add ua_config in auto-attach [Alberto Contreras] + apt configure: sources write/append mode (#1738) [Fabian Lichtenegger-Lukas] + networkd: Add test and improve typing. (#1747) [Alberto Contreras] + pycloudlib: bump commit for gce cpu architecture support (#1750) + commit ffcb29bc8315d1e1d6244eeb1cbd8095958f7bad (LP: #1307667) + testing: workaround LXD vendor data (#1740) + support dhcp{4,6}-overrides in networkd renderer (#1710) [Aidan Obley] + tests: Drop httpretty in favor of responses (#1720) [Alberto Contreras] + cc_ubuntu_advantage: Implement custom auto-attach behaviors (#1583) [Alberto Contreras] + Fix Oracle DS not setting subnet when using IMDS (#1735) (LP: #1989686) + testing: focal lxd datasource discovery (#1734) + cc_ubuntu_advantage: Redact token from logs (#1726) [Alberto Contreras] + docs: make sure echo properly evaluates the string (#1733) [Mina Galić] + net: set dhclient lease and pid files (#1715) + cli: status machine-readable output --format yaml/json (#1663) (LP: #1883122) + tests: Simplify does_not_raise (#1731) [Alberto Contreras] + Refactor: Drop inheritance from object (#1728) [Alberto Contreras] + testing: LXD datasource now supported on Focal (#1732) + Allow jinja templating in /etc/cloud (SC-1170) (#1722) (LP: #1913461) + sources/azure: ensure instance id is always correct (#1727) [Chris Patterson] + azure: define new attribute for pre-22.3 pickles (#1725) + doc: main page Diátaxis rewording (SC-967) (#1701) + ubuntu advantage: improved idempotency, enable list is now strict + [Fabian Lichtenegger-Lukas] + test: bump pycloudlib (#1724) [Alberto Contreras] + cloud.cfg.tmpl: make sure "centos" settings are identical to "rhel" (#1639) [Emanuele Giuseppe Esposito] + lxd: fetch 1.0/devices content (#1712) [Alberto Contreras] + Update docs according to ad8f406a (#1719) + testing: Port unittests/analyze to pytest (#1708) [Alberto Contreras] + doc: Fix rtd builds. (#1718) [Alberto Contreras] + testing: fully mock noexec calls (#1717) [Alberto Contreras] + typing: Add types to cc_.handle (#1700) [Alberto Contreras] + Identify 3DS Outscale Datasource as Ec2 (#1686) [Maxime Dufour] + config: enable bootstrapping pip in ansible (#1707) + Fix cc_chef typing issue (#1716) + Refactor instance json files to use Paths (SC-1238) (#1709) + tools: read-version check GITHUB_REF and git branch --show-current (#1677) + net: Ensure a tmp with exec permissions for dhcp (#1690) [Alberto Contreras] (LP: #1962343) + testing: Fix test regression in test_combined (#1713) [Alberto Contreras] + Identify Huawei Cloud as OpenStack (#1689) [huang xinjie] + doc: add reporting suggestion to FAQ (SC-1236) (#1698) From 22.3 + sources: obj.pkl cache should be written anyime get_data is run (#1669) + schema: drop release number from version file (#1664) + pycloudlib: bump to quiet azure HTTP info logs (#1668) + test: fix wireguard integration tests (#1666) + Github is deprecating the 18.04 runner starting 12.1 (#1665) + integration tests: Ensure one setup for all tests (#1661) + tests: ansible test fixes (#1660) + Prevent concurrency issue in test_webhook_hander.py (#1658) + Workaround net_setup_link race with udev (#1655) (LP: #1983516) + test: drop erroneous lxd assertion, verify command succeeded (#1657) + Fix Chrony usage on Centos Stream (#1648) [Sven Haardiek] (LP: #1885952) + sources/azure: handle network unreachable errors for savable PPS (#1642) [Chris Patterson] + Return cc_set_hostname to PER_INSTANCE frequency (#1651) (LP: #1983811) + test: Collect integration test time by default (#1638) + test: Drop forced package install hack in lxd integration test (#1649) + schema: Resolve user-data if --system given (#1644) [Alberto Contreras] (LP: #1983306) + test: use fake filesystem to avoid file removal (#1647) [Alberto Contreras] + tox: Fix tip-flake8 and tip-mypy (#1635) [Alberto Contreras] + config: Add wireguard config module (#1570) [Fabian Lichtenegger-Lukas] + tests: can run without azure-cli, tests expect inactive ansible (#1643) + typing: Type UrlResponse.contents (#1633) [Alberto Contreras] + testing: fix references to `DEPRECATED.` (#1641) [Alberto Contreras] + ssh_util: Handle sshd_config.d folder [Alberto Contreras] (LP: #1968873) + schema: Enable deprecations in cc_update_etc_hosts (#1631) [Alberto Contreras] + Add Ansible Config Module (#1579) + util: Support Idle process state in get_proc_ppid() (#1637) + schema: Enable deprecations in cc_growpart (#1628) [Alberto Contreras] + schema: Enable deprecations in cc_users_groups (#1627) [Alberto Contreras] + util: Fix error path and parsing in get_proc_ppid() + main: avoid downloading full contents cmdline urls (#1606) [Alberto Contreras] (LP: #1937319) + schema: Enable deprecations in cc_scripts_vendor (#1629) [Alberto Contreras] + schema: Enable deprecations in cc_set_passwords (#1630) [Alberto Contreras] + sources/azure: add experimental support for preprovisioned os disks (#1622) [Chris Patterson] + Remove configobj a_to_u calls (#1632) [Stefano Rivera] + cc_debug: Drop this module (#1614) [Alberto Contreras] + schema: add aggregate descriptions in anyOf/oneOf (#1636) + testing: migrate test_sshutil to pytest (#1617) [Alberto Contreras] + testing: Fix test_ca_certs integration test (#1626) [Alberto Contreras] + testing: add support for pycloudlib's pro images (#1604) [Alberto Contreras] + testing: migrate test_cc_set_passwords to pytest (#1615) [Alberto Contreras] + network: add system_info network activator cloud.cfg overrides (#1619) (LP: #1958377) + docs: Align git remotes with uss-tableflip setup (#1624) [Alberto Contreras] + testing: cover active config module checks (#1609) [Alberto Contreras] + lxd: lvm avoid thinpool when kernel module absent + lxd: enable MTU configuration in cloud-init + doc: pin doc8 to last passing version + cc_set_passwords fixes (#1590) + Modernise importer.py and type ModuleDetails (#1605) [Alberto Contreras] + config: Def activate_by_schema_keys for t-z (#1613) [Alberto Contreras] + config: define activate_by_schema_keys for p-r mods (#1611) [Alberto Contreras] + clean: add param to remove /etc/machine-id for golden image creation + config: define `activate_by_schema_keys` for a-f mods (#1608) [Alberto Contreras] + config: define activate_by_schema_keys for s mods (#1612) [Alberto Contreras] + sources/azure: reorganize tests for network config (#1586) + [Chris Patterson] + config: Define activate_by_schema_keys for g-n mods (#1610) [Alberto Contreras] + meta-schema: add infra to skip inapplicable modules [Alberto Contreras] + sources/azure: don't set cfg["password"] for default user pw (#1592) [Chris Patterson] + schema: activate grub-dpkg deprecations (#1600) [Alberto Contreras] + docs: clarify user password purposes (#1593) + cc_lxd: Add btrfs and lvm lxd storage options (SC-1026) (#1585) + archlinux: Fix distro naming[1] (#1601) [Kristian Klausen] + cc_ubuntu_autoinstall: support live-installer autoinstall config + clean: allow third party cleanup scripts in /etc/cloud/clean.d (#1581) + sources/azure: refactor chassis asset tag handling (#1574) [Chris Patterson] + Add "netcho" as contributor (#1591) [Kaloyan Kotlarski] + testing: drop impish support (#1596) [Alberto Contreras] + black: fix missed formatting issue which landed in main (#1594) + bsd: Don't assume that root user is in root group (#1587) + docs: Fix comment typo regarding use of packages (#1582) [Peter Mescalchin] + Update govc command in VMWare walkthrough (#1576) [manioo8] + Update .github-cla-signers (#1588) [Daniel Mullins] + Rename the openmandriva user to omv (#1575) [Bernhard Rosenkraenzer] + sources/azure: increase read-timeout to 60 seconds for wireserver (#1571) [Chris Patterson] + Resource leak cleanup (#1556) + testing: remove appereances of FakeCloud (#1584) [Alberto Contreras] + Fix expire passwords for hashed passwords (#1577) [Sadegh Hayeri] (LP: #1979065) + mounts: fix suggested_swapsize for > 64GB hosts (#1569) [Steven Stallion] + Update chpasswd schema to deprecate password parsing (#1517) + tox: Remove entries from default envlist (#1578) (LP: #1980854) + tests: add test for parsing static dns for existing devices (#1557) [Jonas Konrad] + testing: port cc_ubuntu_advantage test to pytest (#1559) [Alberto Contreras] + Schema deprecation handling (#1549) [Alberto Contreras] + Enable pytest to run in parallel (#1568) + sources/azure: refactor ovf-env.xml parsing (#1550) [Chris Patterson] + schema: Force stricter validation (#1547) + ubuntu advantage config: http_proxy, https_proxy (#1512) [Fabian Lichtenegger-Lukas] + net: fix interface matching support (#1552) (LP: #1979877) + Fuzz testing jsonchema (#1499) [Alberto Contreras] + testing: Wait for changed boot-id in test_status.py (#1548) + CI: Fix GH pinned-format jobs (#1558) [Alberto Contreras] + Typo fix (#1560) [Jaime Hablutzel] + tests: mock dns lookup that causes long timeouts (#1555) + tox: add unpinned env for do_format and check_format (#1554) + cc_ssh_import_id: Substitute deprecated warn (#1553) [Alberto Contreras] + Remove schema errors from log (#1551) (LP: #1978422) (CVE-2022-2084) + Update WebHookHandler to run as background thread (SC-456) (#1491) (LP: #1910552) + testing: Don't run custom cloud dir test on Bionic (#1542) + bash completion: update schema command (#1543) (LP: #1979547) + CI: add non-blocking run against the linters tip versions (#1531) [Paride Legovini] + Change groups within the users schema to support lists and strings (#1545) [RedKrieg] + make it clear which username should go in the contributing doc (#1546) + Pin setuptools for Travis (SC-1136) (#1540) + Fix LXD datasource crawl when BOOT enabled (#1537) + testing: Fix wrong path in dual stack test (#1538) + cloud-config: honor cloud_dir setting (#1523) [Alberto Contreras] (LP: #1976564) + Add python3-debconf to pkg-deps.json Build-Depends (#1535) [Alberto Contreras] + redhat spec: udev/rules.d lives under /usr/lib on rhel-based systems (#1536) + tests/azure: add test coverage for DisableSshPasswordAuthentication (#1534) [Chris Patterson] + summary: Add david-caro to the cla signers (#1527) [David Caro] + Add support for OpenMandriva (https://openmandriva.org/) (#1520) [Bernhard Rosenkraenzer] + tests/azure: refactor ovf creation (#1533) [Chris Patterson] + Improve DataSourceOVF error reporting when script disabled (#1525) [rong] + tox: integration-tests-jenkins: softfail if only some test failed (#1528) [Paride Legovini] + CI: drop linters from Travis CI (moved to GH Actions) (#1530) [Paride Legovini] + sources/azure: remove unused encoding support for customdata (#1526) [Chris Patterson] + sources/azure: remove unused metadata captured when parsing ovf (#1524) [Chris Patterson] + sources/azure: remove dscfg parsing from ovf-env.xml (#1522) [Chris Patterson] + Remove extra space from ec2 dual stack crawl message (#1521) + tests/azure: use namespaces in generated ovf-env.xml documents (#1519) [Chris Patterson] + setup.py: adjust udev/rules default path (#1513) [Emanuele Giuseppe Esposito] + Add python3-deconf dependency (#1506) [Alberto Contreras] + Change match macadress param for network v2 config (#1518) [Henrique Caricatti Capozzi] + sources/azure: remove unused userdata property from ovf (#1516) [Chris Patterson] + sources/azure: minor refactoring to network config generation (#1497) [Chris Patterson] + net: Implement link-local ephemeral ipv6 + Rename function to avoid confusion (#1501) + Fix cc_phone_home requiring 'tries' (#1500) (LP: #1977952) + datasources: replace networking functions with stdlib and cloudinit.net + code + Remove xenial references (#1472) [Alberto Contreras] + Oracle ds changes (#1474) [Alberto Contreras] (LP: #1967942) + improve runcmd docs (#1498) + add 3.11-dev to Travis CI (#1493) + Only run github actions on pull request (#1496) + Fix integration test client creation (#1494) [Alberto Contreras] + tox: add link checker environment, fix links (#1480) + cc_ubuntu_advantage: Fix doc (#1487) [Alberto Contreras] + cc_yum_add_repo: Fix repo id canonicalization (#1489) [Alberto Contreras] (LP: #1975818) + Add linitio as contributor in the project (#1488) [Kevin Allioli] + net-convert: use yaml.dump for debugging python NetworkState obj (#1484) (LP: #1975907) + test_schema: no relative $ref URLs, replace $ref with local path (#1486) + cc_set_hostname: do not write "localhost" when no hostname is given + (#1453) [Emanuele Giuseppe Esposito] + Update .github-cla-signers (#1478) [rong] + schema: write_files defaults, versions $ref full URL and add vscode (#1479) + docs: fix external links, add one more to the list (#1477) + doc: Document how to change module frequency (#1481) + tests: bump pycloudlib (#1482) + tests: bump pycloudlib pinned commit for kinetic Azure (#1476) + testing: fix test_status.py (#1475) + integration tests: If KEEP_INSTANCE = True, log IP (#1473) + Drop mypy excluded files (#1454) [Alberto Contreras] + Docs additions (#1470) + Add "formatting tests" to Github Actions + Remove unused arguments in function signature (#1471) + Changelog: correct errant classification of LP issues as GH (#1464) + Use Network-Manager and Netplan as default renderers for RHEL and Fedora (#1465) [Emanuele Giuseppe Esposito] From 22.2 + Fix test due to caplog incompatibility (#1461) [Alberto Contreras] + Align rhel custom files with upstream (#1431) [Emanuele Giuseppe Esposito] + cc_write_files: Improve schema. (#1460) [Alberto Contreras] + cli: Redact files with permission errors in commands (#1440) + [Alberto Contreras] (LP: #1953430) + Improve cc_set_passwords. (#1456) [Alberto Contreras] + testing: make fake cloud-init wait actually wait (#1459) + Scaleway: Fix network configuration for netplan 0.102 and later (#1455) [Maxime Corbin] + Fix 'ephmeral' typos in disk names(#1452) [Mike Hucka] + schema: version schema-cloud-config-v1.json (#1424) + cc_modules: set default meta frequency value when no config available (#1457) + Log generic warning on non-systemd systems. (#1450) [Alberto Contreras] + cc_snap.maybe_install_squashfuse no longer needed in Bionic++. (#1448) [Alberto Contreras] + Drop support of *-sk keys in cc_ssh (#1451) [Alberto Contreras] + testing: Fix console_log tests (#1437) + tests: cc_set_passoword update for systemd, non-systemd distros (#1449) + Fix bug in url_helper/dual_stack() logging (#1426) + schema: render schema paths from _CustomSafeLoaderWithMarks (#1391) + testing: Make integration tests kinetic friendly (#1441) + Handle error if SSH service no present. (#1422) [Alberto Contreras] (LP: #1969526) + Fix network-manager activator availability and order (#1438) + sources/azure: remove reprovisioning marker (#1414) [Chris Patterson] + upstart: drop vestigial support for upstart (#1421) + testing: Ensure NoCloud detected in test (#1439) + Update .github-cla-signers kallioli [Kevin Allioli] + Consistently strip top-level network key (#1417) (LP: #1906187) + testing: Fix LXD VM metadata test (#1430) + testing: Add NoCloud setup for NoCloud test (#1425) + Update linters and adapt code for compatibility (#1434) [Paride Legovini] + run-container: add support for LXD VMs (#1428) [Paride Legovini] + integration-reqs: bump pycloudlib pinned commit (#1427) [Paride Legovini] + Fix NoCloud docs (#1423) + Docs fixes (#1406) + docs: Add docs for module creation (#1415) + Remove cheetah from templater (#1416) + tests: verify_ordered_items fallback to re.escape if needed (#1420) + Misc module cleanup (#1418) + docs: Fix doc warnings and enable errors (#1419) [Alberto Contreras] (LP: #1876341) + Refactor cloudinit.sources.NetworkConfigSource to enum (#1413) [Alberto Contreras] (LP: #1874875) + Don't fail if IB and Ethernet devices 'collide' (#1411) + Use cc_* module meta defintion over hardcoded vars (SC-888) (#1385) + Fix cc_rsyslog.py initialization (#1404) [Alberto Contreras] + Promote cloud-init schema from devel to top level subcommand (#1402) + mypy: disable missing imports warning for httpretty (#1412) [Chris Patterson] + users: error when home should not be created AND ssh keys provided [Jeffrey 'jf' Lim] + Allow growpart to resize encrypted partitions (#1316) + Fix typo in integration_test.rst (#1405) [Alberto Contreras] + cloudinit.net refactor: apply_network_config_names (#1388) [Alberto Contreras] (LP: #1884602) + tests/azure: add fixtures for hardcoded paths (markers and data_dir) (#1399) [Chris Patterson] + testing: Add responses workaround for focal/impish (#1403) + cc_ssh_import_id: fix is_key_in_nested_dict to avoid early False + Fix ds-identify not detecting NoCloud seed in config (#1381) (LP: #1876375) + sources/azure: retry dhcp for failed processes (#1401) [Chris Patterson] + Move notes about refactorization out of CONTRIBUTING.rst (#1389) + Shave ~8ms off generator runtime (#1387) + Fix provisioning dhcp timeout to 20 minutes (#1394) [Chris Patterson] + schema: module example strict testing fix seed_random + cc_set_hostname: examples small typo (perserve vs preserve) [Wouter Schoot] + sources/azure: refactor http_with_retries to remove **kwargs (#1392) [Chris Patterson] + declare dependency on ssh-import-id (#1334) + drop references to old dependencies and old centos script + sources/azure: only wait for primary nic to be attached during restore (#1378) [Anh Vo] + cc_ntp: migrated legacy schema to cloud-init-schema.json (#1384) + Network functions refactor and bugfixes (#1383) + schema: add JSON defs for modules cc_users_groups (#1379) (LP: #1858930) + Fix doc typo (#1382) [Alberto Contreras] + Add support for dual stack IPv6/IPv4 IMDS to Ec2 (#1160) + Fix KeyError when rendering sysconfig IPv6 routes (#1380) (LP: #1958506) + Return a namedtuple from subp() (#1376) + Mypy stubs and other tox maintenance (SC-920) (#1374) + Distro Compatibility Fixes (#1375) + Pull in Gentoo patches (#1372) + schema: add json defs for modules U-Z (#1360) (LP: #1858928, #1858929, #1858931, #1858932) + util: atomically update sym links to avoid Suppress FileNotFoundError + when reading status (#1298) [Adam Collard] (LP: #1962150) + schema: add json defs for modules scripts-timezone (SC-801) (#1365) + docs: Add first tutorial (SC-900) (#1368) + BUG 1473527: module ssh-authkey-fingerprints fails Input/output error… (#1340) [Andrew Lee] (LP: #1473527) + add arch hosts template (#1371) + ds-identify: detect LXD for VMs launched from host with > 5.10 kernel (#1370) (LP: #1968085) + Support EC2 tags in instance metadata (#1309) [Eduardo Dobay] + schema: add json defs for modules e-install (SC-651) (#1366) + Improve "(no_create_home|system): true" test (#1367) [Jeffrey 'jf' Lim] + Expose https_proxy env variable to ssh-import-id cmd (#1333) [Michael Rommel] + sources/azure: remove bind/unbind logic for hot attached nic (#1332) [Chris Patterson] + tox: add types-* packages to check_format env (#1362) + tests: python 3.10 is showing up in cloudimages (#1364) + testing: add additional mocks to test_net tests (#1356) [yangzz-97] + schema: add JSON schema for mcollective, migrator and mounts modules (#1358) + Honor system locale for RHEL (#1355) [Wei Shi] + doc: Fix typo in cloud-config-run-cmds.txt example (#1359) [Ali Shirvani] + ds-identify: also discover LXD by presence from DMI board_name = LXD (#1311) + black: bump pinned version to 22.3.0 to avoid click dependency issues (#1357) + Various doc fixes (#1330) + testing: Add missing is_FreeBSD mock to networking test (#1353) + Add --no-update to add-apt-repostory call (SC-880) (#1337) + schema: add json defs for modules K-L (#1321) (LP: #1858899, #1858900, #1858901, #1858902) + docs: Re-order readthedocs install (#1354) + Stop cc_ssh_authkey_fingerprints from ALWAYS creating home (#1343) [Jeffrey 'jf' Lim] + docs: add jinja2 pin (#1352) + Vultr: Use find_candidate_nics, use ipv6 dns (#1344) [eb3095] + sources/azure: move get_ip_from_lease_value out of shim (#1324) [Chris Patterson] + Fix cloud-init status --wait when no datasource found (#1349) (LP: #1966085) + schema: add JSON defs for modules resize-salt (SC-654) (#1341) + Add myself as a future contributor (#1345) [Neal Gompa (ニール・ゴンパ)] + Update .github-cla-signers (#1342) [Jeffrey 'jf' Lim] + add Requires=cloud-init-hotplugd.socket in cloud-init-hotplugd.service + file (#1335) [yangzz-97] + Fix sysconfig render when set-name is missing (#1327) [Andrew Kutz] (LP: #1855945) + Refactoring helper funcs out of NetworkState (#1336) [Andrew Kutz] + url_helper: add tuple support for readurl timeout (#1328) [Chris Patterson] + Make fs labels match for ds-identify and docs (#1329) + Work around bug in LXD VM detection (#1325) + Remove redundant generator logs (#1318) + tox: set verbose flags for integration tests (#1323) [Chris Patterson] + net: introduce find_candidate_nics() (#1313) [Chris Patterson] + Revert "Ensure system_cfg read before ds net config on Oracle (#1174)" (#1326) + Add vendor_data2 support for ConfigDrive source (#1307) [cvstealth] + Make VMWare data source test host independent and expand testing (#1308) [Robert Schweikert] + Add json schemas for modules starting with P + sources/azure: remove lease file parsing (#1302) [Chris Patterson] + remove flaky test from ci (#1322) + ci: Switch to python 3.10 in Travis CI (#1320) + Better interface handling for Vultr, expect unexpected DHCP servers (#1297) [eb3095] + Remove unused init local artifact (#1315) + Doc cleanups (#1317) + docs improvements (#1312) + add support for jinja do statements, add unit test (#1314) [Paul Bruno] (LP: #1962759) + sources/azure: prevent tight loops for DHCP retries (#1285) [Chris Patterson] + net/dhcp: surface type of DHCP lease failure to caller (#1276) [Chris Patterson] + Stop hardcoding systemctl location (#1278) [Robert Schweikert] + Remove python2 syntax from docs (#1310) + [tools/migrate-lp-user-to-github] Rename master branch to main (#1301) [Adam Collard] + redhat: Depend on "hostname" package (#1288) [Lubomir Rintel] + Add native NetworkManager support (#1224) [Lubomir Rintel] + Fix link in CLA check to point to contribution guide. (#1299) [Adam Collard] + check for existing symlink while force creating symlink (#1281) [Shreenidhi Shedi] + Do not silently ignore integer uid (#1280) (LP: #1875772) + tests: create a IPv4/IPv6 VPC in Ec2 integration tests (#1291) + Integration test fix ppa (#1296) + tests: on official EC2. cloud-id actually startswith aws not ec2 (#1289) + test_ppa_source: accept both http and https URLs (#1292) [Paride Legovini] + Fix apt test on azure + add "lkundrak" as contributor [Lubomir Rintel] + Holmanb/integration test fix ppa (#1287) + Include missing subcommand in manpage (#1279) + Clean up artifacts from pytest, packaging, release with make clean (#1277) + sources/azure: ensure retries on IMDS request failure (#1271) [Chris Patterson] + sources/azure: removed unused savable PPS paths (#1268) [Chris Patterson] + integration tests: fix Azure failures (#1269) From 22.1 + sources/azure: report ready in local phase (#1265) [Chris Patterson] + sources/azure: validate IMDS network configuration metadata (#1257) [Chris Patterson] + docs: Add more details to runcmd docs (#1266) + use PEP 589 syntax for TypeDict (#1253) + mypy: introduce type checking (#1254) [Chris Patterson] + Fix extra ipv6 issues, code reduction and simplification (#1243) [eb3095] + tests: when generating crypted password, generate in target env (#1252) + sources/azure: address mypy/pyright typing complaints (#1245) [Chris Patterson] + Docs for x-shellscript* userdata (#1260) + test_apt_security: azure platform has specific security URL overrides (#1263) + tests: lsblk --json output changes mountpoint key to mountpoinst [] (#1261) + mounts: fix mount opts string for ephemeral disk (#1250) [Chris Patterson] + Shell script handlers by freq (#1166) [Chris Lalos] + minor improvements to documentation (#1259) [Mark Esler] + cloud-id: publish /run/cloud-init/cloud-id- files (#1244) + add "eslerm" as contributor (#1258) [Mark Esler] + sources/azure: refactor ssh key handling (#1248) [Chris Patterson] + bump pycloudlib (#1256) + sources/hetzner: Use EphemeralDHCPv4 instead of static configuration (#1251) [Markus Schade] + bump pycloudlib version (#1255) + Fix IPv6 netmask format for sysconfig (#1215) [Harald] (LP: #1959148) + sources/azure: drop debug print (#1249) [Chris Patterson] + tests: do not check instance.pull_file().ok() (#1246) + sources/azure: consolidate ephemeral DHCP configuration (#1229) [Chris Patterson] + cc_salt_minion freebsd fix for rc.conf (#1236) + sources/azure: fix metadata check in _check_if_nic_is_primary() (#1232) [Chris Patterson] + Add _netdev option to mount Azure ephemeral disk (#1213) [Eduardo Otubo] + testing: stop universally overwriting /etc/cloud/cloud.cfg.d (#1237) + Integration test changes (#1240) + Fix Gentoo Locales (#1205) + Add "slingamn" as contributor (#1235) [Shivaram Lingamneni] + integration: do not LXD bind mount /etc/cloud/cloud.cfg.d (#1234) + Integration testing docs and refactor (#1231) + vultr: Return metadata immediately when found (#1233) [eb3095] + spell check docs with spellintian (#1223) + docs: include upstream python version info (#1230) + Schema a d (#1211) + Move LXD to end ds-identify DSLIST (#1228) (LP: #1959118) + fix parallel tox execution (#1214) + sources/azure: refactor _report_ready_if_needed and _poll_imds (#1222) [Chris Patterson] + Do not support setting up archive.canonical.com as a source (#1219) [Steve Langasek] (LP: #1959343) + Vultr: Fix lo being used for DHCP, try next on cmd fail (#1208) [eb3095] + sources/azure: refactor _should_reprovision[_after_nic_attach]() logic (#1206) [Chris Patterson] + update ssh logs to show ssh private key gens pub and simplify code (#1221) [Steve Weber] + Remove mitechie from stale PR github action (#1217) + Include POST format in cc_phone_home docs (#1218) (LP: #1959149) + Add json parsing of ip addr show (SC-723) (#1210) + cc_rsyslog: fix typo in docstring (#1207) [Louis Sautier] + Update .github-cla-signers (#1204) [Chris Lalos] + sources/azure: drop unused case in _report_failure() (#1200) [Chris Patterson] + sources/azure: always initialize _ephemeral_dhcp_ctx on unpickle (#1199) [Chris Patterson] + Add support for gentoo templates and cloud.cfg (#1179) [vteratipally] + sources/azure: unpack ret tuple in crawl_metadata() (#1194) [Chris Patterson] + tests: focal caplog has whitespace indentation for multi-line logs (#1201) + Seek interfaces, skip dummy interface, fix region codes (#1192) [eb3095] + integration: test against the Ubuntu daily images (#1198) [Paride Legovini] + cmd: status and cloud-id avoid change in behavior for 'not run' (#1197) + tox: pass PYCLOUDLIB_* env vars into integration tests when present (#1196) + sources/azure: set ovf_is_accessible when OVF is read successfully (#1193) [Chris Patterson] + Enable OVF environment transport via ISO in example (#1195) [Megian] + sources/azure: consolidate DHCP variants to EphemeralDHCPv4WithReporting (#1190) [Chris Patterson] + Single JSON schema validation in early boot (#1175) + Add DatasourceOVF network-config propery to Ubuntu OVF example (#1184) [Megian] + testing: support pycloudlib config file (#1189) + Ensure system_cfg read before ds net config on Oracle (SC-720) (#1174) (LP: #1956788) + Test Optimization Proposal (SC-736) (#1188) + cli: cloud-id report not-run or disabled state as cloud-id (#1162) + Remove distutils usage (#1177) [Shreenidhi Shedi] + add .python-version to gitignore (#1186) + print error if datasource import fails (#1170) [Emanuele Giuseppe Esposito] + Add new config module to set keyboard layout (#1176) [maxnet] (LP: #1951593) + sources/azure: rename metadata_type -> MetadataType (#1181) [Chris Patterson] + Remove 3.5 and xenial support (SC-711) (#1167) + tests: mock LXD datasource detection in ds-identify on LXD containers (#1178) + pylint: silence errors on compat code for old jsonschema (#1172) [Paride Legovini] + testing: Add 3.10 Test Coverage (#1173) + Remove unittests from integration test job in travis (#1141) + Don't throw exceptions for empty cloud config (#1130) + bsd/resolv.d/ avoid duplicated entries (#1163) [Gonéri Le Bouder] + sources/azure: do not persist failed_desired_api_version flag (#1159) [Chris Patterson] + Update cc_ubuntu_advantage calls to assume-yes (#1158) [John Chittum] (LP: #1954842) + openbsd: properly restart the network on 7.0 (#1150) [Gonéri Le Bouder] + Add .git-blame-ignore-revs (#1161) + Adopt Black and isort (SC-700) (#1157) + Include dpkg frontend lock in APT_LOCK_FILES (#1153) + tests/cmd/query: fix test run as root and add coverage for defaults (#1156) [Chris Patterson] (LP: #1825027) + Schema processing changes (SC-676) (#1144) + Add dependency workaround for impish in bddeb (#1148) + netbsd: install new dep packages (#1151) [Gonéri Le Bouder] + find_devs_with_openbsd: ensure we return the last entry (#1149) [Gonéri Le Bouder] + sources/azure: remove unnecessary hostname bounce (#1143) [Chris Patterson] + find_devs/openbsd: accept ISO on disk (#1132) [Gonéri Le Bouder] + Improve error log message when mount failed (#1140) [Ksenija Stanojevic] + add KsenijaS as a contributor (#1145) [Ksenija Stanojevic] + travis - don't run integration tests if no deb (#1139) + factor out function for getting top level directory of cloudinit (#1136) + testing: Add deterministic test id (#1138) + mock sleep() in azure test (#1137) + Add miraclelinux support (#1128) [Haruki TSURUMOTO] + docs: Make MACs lowercase in network config (#1135) (LP: #1876941) + Add Strict Metaschema Validation (#1101) + update dead link (#1133) + cloudinit/net: handle two different routes for the same ip (#1124) [Emanuele Giuseppe Esposito] + docs: pin mistune dependency (#1134) + Reorganize unit test locations under tests/unittests (#1126) + Fix exception when no activator found (#1129) (LP: #1948681) + jinja: provide and document jinja-safe key aliases in instance-data (SC-622) (#1123) + testing: Remove date from final_message test (SC-638) (#1127) + Move GCE metadata fetch to init-local (SC-502) (#1122) + Fix missing metadata routes for vultr (#1125) [eb3095] + cc_ssh_authkey_fingerprints.py: prevent duplicate messages on console (#1081) [dermotbradley] + sources/azure: remove unused remnants related to agent command (#1119) [Chris Patterson] + github: update PR template's contributing URL (#1120) [Chris Patterson] + docs: Rename HACKING.rst to CONTRIBUTING.rst (#1118) + testing: monkeypatch system_info call in unit tests (SC-533) (#1117) + Fix Vultr timeout and wait values (#1113) [eb3095] + lxd: add preference for LXD cloud-init.* config keys over user keys (#1108) + VMware: source /etc/network/interfaces.d/* on Debian [chengcheng-chcheng] (LP: #1950136) + Add cjp256 as contributor (#1109) [Chris Patterson] + integration_tests: Ensure log directory exists before symlinking to it (#1110) + testing: add growpart integration test (#1104) + integration_test: Speed up CI run time (#1111) + Some miscellaneous integration test fixes (SC-606) (#1103) + tests: specialize lxd_discovery test for lxd_vm vendordata (#1106) + Add convenience symlink to integration test output (#1105) + Fix for set-name bug in networkd renderer (#1100) [Andrew Kutz] (LP: #1949407) + Wait for apt lock (#1034) (LP: #1944611) + testing: stop chef test from running on openstack (#1102) + alpine.py: add options to the apk upgrade command (#1089) [dermotbradley]- Update to version 21.4 (bsc#1192343, jsc#PM-3181) + Also include VMWare functionality for (jsc#PM-3175) + Remove patches included upstream: - cloud-init-purge-cache-py-ver-change.patch - cloud-init-update-test-characters-in-substitution-unit-test.patch + Forward port: - cloud-init-write-routes.patch - cloud-init-no-tempnet-oci.patch + Add cloud-init-vmware-test.patch - Test is system dependend, not properly mocked + Azure: fallback nic needs to be reevaluated during reprovisioning (#1094) [Anh Vo] + azure: pps imds (#1093) [Anh Vo] + testing: Remove calls to 'install_new_cloud_init' (#1092) + Add LXD datasource (#1040) + Fix unhandled apt_configure case. (#1065) [Brett Holman] + Allow libexec for hotplug (#1088) + Add necessary mocks to test_ovf unit tests (#1087) + Remove (deprecated) apt-key (#1068) [Brett Holman] (LP: #1836336) + distros: Remove a completed "TODO" comment (#1086) + cc_ssh.py: Add configuration for controlling ssh-keygen output (#1083) [dermotbradley] + Add "install hotplug" module (SC-476) (#1069) (LP: #1946003) + hosts.alpine.tmpl: rearrange the order of short and long hostnames (#1084) [dermotbradley] + Add max version to docutils + cloudinit/dmi.py: Change warning to debug to prevent console display (#1082) [dermotbradley] + remove unnecessary EOF string in disable-sshd-keygen-if-cloud-init-active.conf (#1075) [Emanuele Giuseppe Esposito] + Add module 'write-files-deferred' executed in stage 'final' (#916) [Lucendio] + Bump pycloudlib to fix CI (#1080) + Remove pin in dependencies for jsonschema (#1078) + Add "Google" as possible system-product-name (#1077) [vteratipally] + Update Debian security suite for bullseye (#1076) [Johann Queuniet] + Leave the details of service management to the distro (#1074) [Andy Fiddaman] + Fix typos in setup.py (#1059) [Christian Clauss] + Update Azure _unpickle (SC-500) (#1067) (LP: #1946644) + cc_ssh.py: fix private key group owner and permissions (#1070) [Emanuele Giuseppe Esposito] + VMware: read network-config from ISO (#1066) [Thomas Weißschuh] + testing: mock sleep in gce unit tests (#1072) + CloudStack: fix data-server DNS resolution (#1004) [Olivier Lemasle] (LP: #1942232) + Fix unit test broken by pyyaml upgrade (#1071) + testing: add get_cloud function (SC-461) (#1038) + Inhibit sshd-keygen@.service if cloud-init is active (#1028) [Ryan Harper] + VMWARE: search the deployPkg plugin in multiarch dir (#1061) [xiaofengw-vmware] (LP: #1944946) + Fix set-name/interface DNS bug (#1058) [Andrew Kutz] (LP: #1946493) + Use specified tmp location for growpart (#1046) [jshen28] + .gitignore: ignore tags file for ctags users (#1057) [Brett Holman] + Allow comments in runcmd and report failed commands correctly (#1049) [Brett Holman] (LP: #1853146) + tox integration: pass the *_proxy, GOOGLE_*, GCP_* env vars (#1050) [Paride Legovini] + Allow disabling of network activation (SC-307) (#1048) (LP: #1938299) + renderer: convert relative imports to absolute (#1052) [Paride Legovini] + Support ETHx_IP6_GATEWAY, SET_HOSTNAME on OpenNebula (#1045) [Vlastimil Holer] + integration-requirements: bump the pycloudlib commit (#1047) [Paride Legovini] + Allow Vultr to set MTU and use as-is configs (#1037) [eb3095] + pin jsonschema in requirements.txt (#1043) + testing: remove cloud_tests (#1020) + Add andgein as contributor (#1042) [Andrew Gein] + Make wording for module frequency consistent (#1039) [Nicolas Bock] + Use ascii code for growpart (#1036) [jshen28] + Add jshen28 as contributor (#1035) [jshen28] + Skip test_cache_purged_on_version_change on Azure (#1033) + Remove invalid ssh_import_id from examples (#1031) + Cleanup Vultr support (#987) [eb3095] + docs: update cc_disk_setup for fs to raw disk (#1017) + HACKING.rst: change contact info to James Falcon (#1030) + tox: bump the pinned flake8 and pylint version (#1029) [Paride Legovini] (LP: #1944414) + Add retries to DataSourceGCE.py when connecting to GCE (#1005) [vteratipally] + Set Azure to apply networking config every BOOT (#1023) + Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) (LP: #1939603) + docs: fix typo and include sudo for report bugs commands (#1022) [Renan Rodrigo] (LP: #1940236) + VMware: Fix typo introduced in #947 and add test (#1019) [PengpengSun] + Update IPv6 entries in /etc/hosts (#1021) [Richard Hansen] (LP: #1943798) + Integration test upgrades for the 21.3-1 SRU (#1001) + Add Jille to tools/.github-cla-signers (#1016) [Jille Timmermans] + Improve ug_util.py (#1013) [Shreenidhi Shedi] + Support openEuler OS (#1012) [zhuzaifangxuele] + ssh_utils.py: ignore when sshd_config options are not key/value pairs (#1007) [Emanuele Giuseppe Esposito] + Set Azure to only update metadata on BOOT_NEW_INSTANCE (#1006) + cc_update_etc_hosts: Use the distribution-defined path for the hosts file (#983) [Andy Fiddaman] + Add CloudLinux OS support (#1003) [Alexandr Kravchenko] + puppet config: add the start_agent option (#1002) [Andrew Bogott] + Fix `make style-check` errors (#1000) [Shreenidhi Shedi] + Make cloud-id copyright year (#991) [Andrii Podanenko] + Add support to accept-ra in networkd renderer (#999) [Shreenidhi Shedi] + Update ds-identify to pass shellcheck (#979) [Andrew Kutz] + Azure: Retry dhcp on timeouts when polling reprovisiondata (#998) [aswinrajamannar] + testing: Fix ssh keys integration test (#992) - From 21.3 + Azure: During primary nic detection, check interface status continuously before rebinding again (#990) [aswinrajamannar] + Fix home permissions modified by ssh module (SC-338) (#984) (LP: #1940233) + Add integration test for sensitive jinja substitution (#986) + Ignore hotplug socket when collecting logs (#985) (LP: #1940235) + testing: Add missing mocks to test_vmware.py (#982) + add Zadara Edge Cloud Platform to the supported clouds list (#963) [sarahwzadara] + testing: skip upgrade tests on LXD VMs (#980) + Only invoke hotplug socket when functionality is enabled (#952) + Revert unnecesary lcase in ds-identify (#978) [Andrew Kutz] + cc_resolv_conf: fix typos (#969) [Shreenidhi Shedi] + Replace broken httpretty tests with mock (SC-324) (#973) + Azure: Check if interface is up after sleep when trying to bring it up (#972) [aswinrajamannar] + Update dscheck_VMware's rpctool check (#970) [Shreenidhi Shedi] + Azure: Logging the detected interfaces (#968) [Moustafa Moustafa] + Change netifaces dependency to 0.10.4 (#965) [Andrew Kutz] + Azure: Limit polling network metadata on connection errors (#961) [aswinrajamannar] + Update inconsistent indentation (#962) [Andrew Kutz] + cc_puppet: support AIO installations and more (#960) [Gabriel Nagy] + Add Puppet contributors to CLA signers (#964) [Noah Fontes] + Datasource for VMware (#953) [Andrew Kutz] + photon: refactor hostname handling and add networkd activator (#958) [sshedi] + Stop copying ssh system keys and check folder permissions (#956) [Emanuele Giuseppe Esposito] + testing: port remaining cloud tests to integration testing framework (SC-191) (#955) + generate contents for ovf-env.xml when provisioning via IMDS (#959) [Anh Vo] + Add support for EuroLinux 7 && EuroLinux 8 (#957) [Aleksander Baranowski] + Implementing device_aliases as described in docs (#945) [Mal Graty] (LP: #1867532) + testing: fix test_ssh_import_id.py (#954) + Add ability to manage fallback network config on PhotonOS (#941) [sshedi] + Add VZLinux support (#951) [eb3095] + VMware: add network-config support in ovf-env.xml (#947) [PengpengSun] + Update pylint to v2.9.3 and fix the new issues it spots (#946) [Paride Legovini] + Azure: mount default provisioning iso before try device listing (#870) [Anh Vo] + Document known hotplug limitations (#950) + Initial hotplug support (#936) + Fix MIME policy failure on python version upgrade (#934) + run-container: fixup the centos repos baseurls when using http_proxy (#944) [Paride Legovini] + tools: add support for building rpms on rocky linux (#940) + ssh-util: allow cloudinit to merge all ssh keys into a custom user file, defined in AuthorizedKeysFile (#937) [Emanuele Giuseppe Esposito] (LP: #1911680) + VMware: new "allow_raw_data" switch (#939) [xiaofengw-vmware] + bump pycloudlib version (#935) + add renanrodrigo as a contributor (#938) [Renan Rodrigo] + testing: simplify test_upgrade.py (#932) + freebsd/net_v1 format: read MTU from root (#930) [Gonéri Le Bouder] + Add new network activators to bring up interfaces (#919) + Detect a Python version change and clear the cache (#857) [Robert Schweikert] + cloud_tests: fix the Impish release name (#931) [Paride Legovini] + Removed distro specific network code from Photon (#929) [sshedi] + Add support for VMware PhotonOS (#909) [sshedi] + cloud_tests: add impish release definition (#927) [Paride Legovini] + docs: fix stale links rename master branch to main (#926) + Fix DNS in NetworkState (SC-133) (#923) + tests: Add 'adhoc' mark for integration tests (#925) + Fix the spelling of "DigitalOcean" (#924) [Mark Mercado] + Small Doc Update for ReportEventStack and Test (#920) [Mike Russell] + Replace deprecated collections.Iterable with abc replacement (#922) (LP: #1932048) + testing: OCI availability domain is now required (SC-59) (#910) + add DragonFlyBSD support (#904) [Gonéri Le Bouder] + Use instance-data-sensitive.json in jinja templates (SC-117) (#917) (LP: #1931392) + doc: Update NoCloud docs stating required files (#918) (LP: #1931577) + build-on-netbsd: don't pin a specific py3 version (#913) [Gonéri Le Bouder] + Create the log file with 640 permissions (#858) [Robert Schweikert] + Allow braces to appear in dhclient output (#911) [eb3095] + Docs: Replace all freenode references with libera (#912) + openbsd/net: flush the route table on net restart (#908) [Gonéri Le Bouder] + Add Rocky Linux support to cloud-init (#906) [Louis Abel] + Add "esposem" as contributor (#907) [Emanuele Giuseppe Esposito] + Add integration test for #868 (#901) + Added support for importing keys via primary/security mirror clauses (#882) [Paul Goins] (LP: #1925395) + [examples] config-user-groups expire in the future (#902) [Geert Stappers] + BSD: static network, set the mtu (#894) [Gonéri Le Bouder] + Add integration test for lp-1920939 (#891) + Fix unit tests breaking from new httpretty version (#903) + Allow user control over update events (#834) + Update test characters in substitution unit test (#893) + cc_disk_setup.py: remove UDEVADM_CMD definition as not used (#886) [dermotbradley] + Add AlmaLinux OS support (#872) [Andrew Lukoshko]- systemctl location (bsc#1193531) - Add cloud-init-sysctl-not-in-bin.patch - The sytemctl executable is not necessarily in '/bin'- Remove unneeded BuildRequires on python3-nose.- Update to version 21.2 (bsc#1186004) + Remove patches included upstream: - cloud-init-azure-def-usr-pass.patch - cloud-init-after-kvp.diff - cloud-init-recognize-hpc.patch - use_arroba_to_include_sudoers_directory-bsc_1181283.patch - cloud-init-bonding-opts.patch - cloud-init-log-file-mode.patch - cloud-init-no-pwd-in-log.patch - 0001-templater-drop-Jinja-Python-2-compatibility-shim.patch + Remove cloud-init-sle12-compat.patch, version in SLE 12 is frozen to 20.2 + Remove cloud-init-tests-set-exec.patch no longer needed + Forward port: - cloud-init-write-routes.patch - cloud-init-break-resolv-symlink.patch - cloud-init-sysconf-path.patch - cloud-init-no-tempnet-oci.patch + Add \r\n check for SSH keys in Azure (#889) + Revert "Add support to resize rootfs if using LVM (#721)" (#887) (LP: #1922742) + Add Vultaire as contributor (#881) [Paul Goins] + Azure: adding support for consuming userdata from IMDS (#884) [Anh Vo] + test_upgrade: modify test_upgrade_package to run for more sources (#883) + Fix chef module run failure when chef_license is set (#868) [Ben Hughes] + Azure: Retry net metadata during nic attach for non-timeout errs (#878) [aswinrajamannar] + Azure: Retrieve username and hostname from IMDS (#865) [Thomas Stringer] + Azure: eject the provisioning iso before reporting ready (#861) [Anh Vo] + Use `partprobe` to re-read partition table if available (#856) [Nicolas Bock] (LP: #1920939) + fix error on upgrade caused by new vendordata2 attributes (#869) (LP: #1922739) + add prefer_fqdn_over_hostname config option (#859) [hamalq] (LP: #1921004) + Emit dots on travis to avoid timeout (#867) + doc: Replace remaining references to user-scripts as a config module (#866) [Ryan Harper] + azure: Removing ability to invoke walinuxagent (#799) [Anh Vo] + Add Vultr support (#827) [David Dymko] + Fix unpickle for source paths missing run_dir (#863) [lucasmoura] (LP: #1899299) + sysconfig: use BONDING_MODULE_OPTS on SUSE (#831) [Jens Sandmann] + bringup_static_routes: fix gateway check (#850) [Petr Fedchenkov] + add hamalq user (#860) [hamalq] + Add support to resize rootfs if using LVM (#721) [Eduardo Otubo] (LP: #1799953) + Fix mis-detecting network configuration in initramfs cmdline (#844) (LP: #1919188) + tools/write-ssh-key-fingerprints: do not display empty header/footer (#817) [dermotbradley] + Azure helper: Ensure Azure http handler sleeps between retries (#842) [Johnson Shi] + Fix chef apt source example (#826) [timothegenzmer] + .travis.yml: generate an SSH key before running tests (#848) + write passwords only to serial console, lock down cloud-init-output.log (#847) (LP: #1918303) + Fix apt default integration test (#845) + integration_tests: bump pycloudlib dependency (#846) + Fix stack trace if vendordata_raw contained an array (#837) [eb3095] + archlinux: Fix broken locale logic (#841) [Kristian Klausen] (LP: #1402406) + Integration test for #783 (#832) + integration_tests: mount more paths IN_PLACE (#838) + Fix requiring device-number on EC2 derivatives (#836) (LP: #1917875) + Remove the vi comment from the part-handler example (#835) + net: exclude OVS internal interfaces in get_interfaces (#829) (LP: #1912844) + tox.ini: pass OS_* environment variables to integration tests (#830) + integration_tests: add OpenStack as a platform (#804) + Add flexibility to IMDS api-version (#793) [Thomas Stringer] + Fix the TestApt tests using apt-key on Xenial and Hirsute (#823) [Paride Legovini] (LP: #1916629) + doc: remove duplicate "it" from nocloud.rst (#825) [V.I. Wood] + archlinux: Use hostnamectl to set the transient hostname (#797) [Kristian Klausen] + cc_keys_to_console.py: Add documentation for recently added config key (#824) [dermotbradley] + Update cc_set_hostname documentation (#818) [Toshi Aoyama] From 21.1 + Azure: Support for VMs without ephemeral resource disks. (#800) [Johnson Shi] (LP: #1901011) + cc_keys_to_console: add option to disable key emission (#811) [Michael Hudson-Doyle] (LP: #1915460) + integration_tests: introduce lxd_use_exec mark (#802) + azure: case-insensitive UUID to avoid new IID during kernel upgrade (#798) (LP: #1835584) + stale.yml: don't ask submitters to reopen PRs (#816) + integration_tests: fix use of SSH agent within tox (#815) + integration_tests: add UPGRADE CloudInitSource (#812) + integration_tests: use unique MAC addresses for tests (#813) + Update .gitignore (#814) + Port apt cloud_tests to integration tests (#808) + integration_tests: fix test_gh626 on LXD VMs (#809) + Fix attempting to decode binary data in test_seed_random_data test (#806) + Remove wait argument from tests with session_cloud calls (#805) + Datasource for UpCloud (#743) [Antti Myyrä] + test_gh668: fix failure on LXD VMs (#801) + openstack: read the dynamic metadata group vendor_data2.json (#777) [Andrew Bogott] (LP: #1841104) + includedir in suoders can be prefixed by "arroba" (#783) [Jordi Massaguer Pla] + [VMware] change default max wait time to 15s (#774) [xiaofengw-vmware] + Revert integration test associated with reverted #586 (#784) + Add jordimassaguerpla as contributor (#787) [Jordi Massaguer Pla] + Add Rick Harding to CLA signers (#792) [Rick Harding] + HACKING.rst: add clarifying note to LP CLA process section (#789) + Stop linting cloud_tests (#791) + cloud-tests: update cryptography requirement (#790) [Joshua Powers] + Remove 'remove-raise-on-failure' calls from integration_tests (#788) + Use more cloud defaults in integration tests (#757) + Adding self to cla signers (#776) [Andrew Bogott] + doc: avoid two warnings (#781) [Dan Kenigsberg] + Use proper spelling for Red Hat (#778) [Dan Kenigsberg] + Add antonyc to .github-cla-signers (#747) [Anton Chaporgin] + integration_tests: log image serial if available (#772) + [VMware] Support cloudinit raw data feature (#691) [xiaofengw-vmware] + net: Fix static routes to host in eni renderer (#668) [Pavel Abalikhin] + .travis.yml: don't run cloud_tests in CI (#756) + test_upgrade: add some missing commas (#769) + cc_seed_random: update documentation and fix integration test (#771) (LP: #1911227) + Fix test gh-632 test to only run on NoCloud (#770) (LP: #1911230) + archlinux: fix package upgrade command handling (#768) [Bao Trinh] + integration_tests: add integration test for LP: #1910835 (#761) + Fix regression with handling of IMDS ssh keys (#760) [Thomas Stringer] + integration_tests: log cloud-init version in SUT (#758) + Add ajmyyra as contributor (#742) [Antti Myyrä] + net_convert: add some missing help text (#755) + Missing IPV6_AUTOCONF=no to render sysconfig dhcp6 stateful on RHEL (#753) [Eduardo Otubo] + doc: document missing IPv6 subnet types (#744) [Antti Myyrä] + Add example configuration for datasource `AliYun` (#751) [Xiaoyu Zhong] + integration_tests: add SSH key selection settings (#754) + fix a typo in man page cloud-init.1 (#752) [Amy Chen] + network-config-format-v2.rst: add Netplan Passthrough section (#750) + stale: re-enable post holidays (#749) + integration_tests: port ca_certs tests from cloud_tests (#732) + Azure: Add telemetry for poll IMDS (#741) [Johnson Shi] + doc: move testing section from HACKING to its own doc (#739) + No longer allow integration test failures on travis (#738) + stale: fix error in definition (#740) + integration_tests: set log-cli-level to INFO by default (#737) + PULL_REQUEST_TEMPLATE.md: use backticks around commit message (#736) + stale: disable check for holiday break (#735) + integration_tests: log the path we collect logs into (#733) + .travis.yml: add (most) supported Python versions to CI (#734) + integration_tests: fix IN_PLACE CLOUD_INIT_SOURCE (#731) + cc_ca_certs: add RHEL support (#633) [cawamata] + Azure: only generate config for NICs with addresses (#709) [Thomas Stringer] + doc: fix CloudStack configuration example (#707) [Olivier Lemasle] + integration_tests: restrict test_lxd_bridge appropriately (#730) + Add integration tests for CLI functionality (#729) + Integration test for gh-626 (#728) + Some test_upgrade fixes (#726) + Ensure overriding test vars with env vars works for booleans (#727) + integration_tests: port lxd_bridge test from cloud_tests (#718) + Integration test for gh-632. (#725) + Integration test for gh-671 (#724) + integration-requirements.txt: bump pycloudlib commit (#723) + Drop unnecessary shebang from cmd/main.py (#722) [Eduardo Otubo] + Integration test for LP: #1813396 and #669 (#719) + integration_tests: include timestamp in log output (#720) + integration_tests: add test for LP: #1898997 (#713) + Add integration test for power_state_change module (#717) + Update documentation for network-config-format-v2 (#701) [ggiesen] + sandbox CA Cert tests to not require ca-certificates (#715) [Eduardo Otubo] + Add upgrade integration test (#693) + Integration test for 570 (#712) + Add ability to keep snapshotted images in integration tests (#711) + Integration test for pull #586 (#706) + integration_tests: introduce skipping of tests by OS (#702) + integration_tests: introduce IntegrationInstance.restart (#708) + Add lxd-vm to list of valid integration test platforms (#705) + Adding BOOTPROTO = dhcp to render sysconfig dhcp6 stateful on RHEL (#685) [Eduardo Otubo] + Delete image snapshots created for integration tests (#682) + Parametrize ssh_keys_provided integration test (#700) [lucasmoura] + Drop use_sudo attribute on IntegrationInstance (#694) [lucasmoura] + cc_apt_configure: add riscv64 as a ports arch (#687) [Dimitri John Ledkov] + cla: add xnox (#692) [Dimitri John Ledkov] + Collect logs from integration test runs (#675) From 20.4.1 + Revert "ssh_util: handle non-default AuthorizedKeysFile config (#586)" From 20.4 + tox: avoid tox testenv subsvars for xenial support (#684) + Ensure proper root permissions in integration tests (#664) [James Falcon] + LXD VM support in integration tests (#678) [James Falcon] + Integration test for fallocate falling back to dd (#681) [James Falcon] + .travis.yml: correctly integration test the built .deb (#683) + Ability to hot-attach NICs to preprovisioned VMs before reprovisioning (#613) [aswinrajamannar] + Support configuring SSH host certificates. (#660) [Jonathan Lung] + add integration test for LP: #1900837 (#679) + cc_resizefs on FreeBSD: Fix _can_skip_ufs_resize (#655) [Mina Galić] (LP: #1901958, #1901958) + DataSourceAzure: push dmesg log to KVP (#670) [Anh Vo] + Make mount in place for tests work (#667) [James Falcon] + integration_tests: restore emission of settings to log (#657) + DataSourceAzure: update password for defuser if exists (#671) [Anh Vo] + tox.ini: only select "ci" marked tests for CI runs (#677) + Azure helper: Increase Azure Endpoint HTTP retries (#619) [Johnson Shi] + DataSourceAzure: send failure signal on Azure datasource failure (#594) [Johnson Shi] + test_persistence: simplify VersionIsPoppedFromState (#674) + only run a subset of integration tests in CI (#672) + cli: add + -system param to allow validating system user-data on a machine (#575) + test_persistence: add VersionIsPoppedFromState test (#673) + introduce an upgrade framework and related testing (#659) + add + -no-tty option to gpg (#669) [Till Riedel] (LP: #1813396) + Pin pycloudlib to a working commit (#666) [James Falcon] + DataSourceOpenNebula: exclude SRANDOM from context output (#665) + cloud_tests: add hirsute release definition (#662) + split integration and cloud_tests requirements (#652) + faq.rst: add warning to answer that suggests running `clean` (#661) + Fix stacktrace in DataSourceRbxCloud if no metadata disk is found (#632) [Scott Moser] + Make wakeonlan Network Config v2 setting actually work (#626) [dermotbradley] + HACKING.md: unify network-refactoring namespace (#658) [Mina Galić] + replace usage of dmidecode with kenv on FreeBSD (#621) [Mina Galić] + Prevent timeout on travis integration tests. (#651) [James Falcon] + azure: enable pushing the log to KVP from the last pushed byte (#614) [Moustafa Moustafa] + Fix launch_kwargs bug in integration tests (#654) [James Falcon] + split read_fs_info into linux & freebsd parts (#625) [Mina Galić] + PULL_REQUEST_TEMPLATE.md: expand commit message section (#642) + Make some language improvements in growpart documentation (#649) [Shane Frasier] + Revert ".travis.yml: use a known-working version of lxd (#643)" (#650) + Fix not sourcing default 50-cloud-init ENI file on Debian (#598) [WebSpider] + remove unnecessary reboot from gpart resize (#646) [Mina Galić] + cloudinit: move dmi functions out of util (#622) [Scott Moser] + integration_tests: various launch improvements (#638) + test_lp1886531: don't assume /etc/fstab exists (#639) + Remove Ubuntu restriction from PR template (#648) [James Falcon] + util: fix mounting of vfat on *BSD (#637) [Mina Galić] + conftest: improve docstring for disable_subp_usage (#644) + doc: add example query commands to debug Jinja templates (#645) + Correct documentation and testcase data for some user-data YAML (#618) [dermotbradley] + Hetzner: Fix instance_id / SMBIOS serial comparison (#640) [Markus Schade] + .travis.yml: use a known-working version of lxd (#643) + tools/build-on-freebsd: fix comment explaining purpose of the script (#635) [Mina Galić] + Hetzner: initialize instance_id from system-serial-number (#630) [Markus Schade] (LP: #1885527) + Explicit set IPV6_AUTOCONF and IPV6_FORCE_ACCEPT_RA on static6 (#634) [Eduardo Otubo] + get_interfaces: don't exclude Open vSwitch bridge/bond members (#608) [Lukas Märdian] (LP: #1898997) + Add config modules for controlling IBM PowerVM RMC. (#584) [Aman306] (LP: #1895979) + Update network config docs to clarify MAC address quoting (#623) [dermotbradley] + gentoo: fix hostname rendering when value has a comment (#611) [Manuel Aguilera] + refactor integration testing infrastructure (#610) [James Falcon] + stages: don't reset permissions of cloud-init.log every boot (#624) (LP: #1900837) + docs: Add how to use cloud-localds to boot qemu (#617) [Joshua Powers] + Drop vestigial update_resolve_conf_file function (#620) [Scott Moser] + cc_mounts: correctly fallback to dd if fallocate fails (#585) (LP: #1897099) + .travis.yml: add integration-tests to Travis matrix (#600) + ssh_util: handle non-default AuthorizedKeysFile config (#586) [Eduardo Otubo] + Multiple file fix for AuthorizedKeysFile config (#60) [Eduardo Otubo] + bddeb: new + -packaging-branch argument to pull packaging from branch (#576) [Paride Legovini] + Add more integration tests (#615) [lucasmoura] + DataSourceAzure: write marker file after report ready in preprovisioning (#590) [Johnson Shi] + integration_tests: emit settings to log during setup (#601) + integration_tests: implement citest tests run in Travis (#605) + Add Azure support to integration test framework (#604) [James Falcon] + openstack: consider product_name as valid chassis tag (#580) [Adrian Vladu] (LP: #1895976) + azure: clean up and refactor report_diagnostic_event (#563) [Johnson Shi] + net: add the ability to blacklist network interfaces based on driver during enumeration of physical network devices (#591) [Anh Vo] + integration_tests: don't error on cloud-init failure (#596) + integration_tests: improve cloud-init.log assertions (#593) + conftest.py: remove top-level import of httpretty (#599) + tox.ini: add integration-tests testenv definition (#595) + PULL_REQUEST_TEMPLATE.md: empty checkboxes need a space (#597) + add integration test for LP: #1886531 (#592) + Initial implementation of integration testing infrastructure (#581) [James Falcon] + Fix name of ntp and chrony service on CentOS and RHEL. (#589) [Scott Moser] (LP: #1897915) + Adding a PR template (#587) [James Falcon] + Azure parse_network_config uses fallback cfg when generate IMDS network cfg fails (#549) [Johnson Shi] + features: refresh docs for easier out-of-context reading (#582) + Fix typo in resolv_conf module's description (#578) [Wacław Schiller] + cc_users_groups: minor doc formatting fix (#577) + Fix typo in disk_setup module's description (#579) [Wacław Schiller] + Add vendor-data support to seedfrom parameter for NoCloud and OVF (#570) [Johann Queuniet] + boot.rst: add First Boot Determination section (#568) (LP: #1888858) + opennebula.rst: minor readability improvements (#573) [Mina Galić] + cloudinit: remove unused LOG variables (#574) + create a shutdown_command method in distro classes (#567) [Emmanuel Thomé] + user_data: remove unused constant (#566) + network: Fix type and respect name when rendering vlan in sysconfig. (#541) [Eduardo Otubo] (LP: #1788915, #1826608) + Retrieve SSH keys from IMDS first with OVF as a fallback (#509) [Thomas Stringer] + Add jqueuniet as contributor (#569) [Johann Queuniet] + distros: minor typo fix (#562) + Bump the integration-requirements versioned dependencies (#565) [Paride Legovini] + network-config-format-v1: fix typo in nameserver example (#564) [Stanislas] + Run cloud-init-local.service after the hv_kvp_daemon (#505) [Robert Schweikert] + Add method type hints for Azure helper (#540) [Johnson Shi] + systemd: add Before=shutdown.target when Conflicts=shutdown.target is used (#546) [Paride Legovini] + LXD: detach network from profile before deleting it (#542) [Paride Legovini] (LP: #1776958) + redhat spec: add missing BuildRequires (#552) [Paride Legovini] + util: remove debug statement (#556) [Joshua Powers] + Fix cloud config on chef example (#551) [lucasmoura] From 20.3 + Azure: Add netplan driver filter when using hv_netvsc driver (#539) [James Falcon] (LP: #1830740) + query: do not handle non-decodable non-gzipped content (#543) + DHCP sandboxing failing on noexec mounted /var/tmp (#521) [Eduardo Otubo] + Update the list of valid ssh keys. (#487) [Ole-Martin Bratteng] (LP: #1877869) + cmd: cloud-init query to handle compressed userdata (#516) (LP: #1889938) + Pushing cloud-init log to the KVP (#529) [Moustafa Moustafa] + Add Alpine Linux support. (#535) [dermotbradley] + Detect kernel version before swap file creation (#428) [Eduardo Otubo] + cli: add devel make-mime subcommand (#518) + user-data: only verify mime-types for TYPE_NEEDED and x-shellscript (#511) (LP: #1888822) + DataSourceOracle: retry twice (and document why we retry at all) (#536) + Refactor Azure report ready code (#468) [Johnson Shi] + tox.ini: pin correct version of httpretty in xenial{,-dev} envs (#531) + Support Oracle IMDSv2 API (#528) [James Falcon] + .travis.yml: run a doc build during CI (#534) + doc/rtd/topics/datasources/ovf.rst: fix doc8 errors (#533) + Fix 'Users and Groups' configuration documentation (#530) [sshedi] + cloudinit.distros: update docstrings of add_user and create_user (#527) + Fix headers for device types in network v2 docs (#532) [Caleb Xavier Berger] + Add AlexBaranowski as contributor (#508) [Aleksander Baranowski] + DataSourceOracle: refactor to use only OPC v1 endpoint (#493) + .github/workflows/stale.yml: s/Josh/Rick/ (#526) + Fix a typo in apt pipelining module (#525) [Xiao Liang] + test_util: parametrize devlist tests (#523) [James Falcon] + Recognize LABEL_FATBOOT labels (#513) [James Falcon] (LP: #1841466) + Handle additional identifier for SLES For HPC (#520) [Robert Schweikert] + Revert "test-requirements.txt: pin pytest to <6 (#512)" (#515) + test-requirements.txt: pin pytest to <6 (#512) + Add "tsanghan" as contributor (#504) [tsanghan] + fix brpm building (LP: #1886107) + Adding eandersson as a contributor (#502) [Erik Olof Gunnar Andersson] + azure: disable bouncing hostname when setting hostname fails (#494) [Anh Vo] + VMware: Support parsing DEFAULT-RUN-POST-CUST-SCRIPT (#441) [xiaofengw-vmware] + DataSourceAzure: Use ValueError when JSONDecodeError is not available (#490) [Anh Vo] + cc_ca_certs.py: fix blank line problem when removing CAs and adding new one (#483) [dermotbradley] + freebsd: py37-serial is now py37-pyserial (#492) [Gonéri Le Bouder] + ssh exit with non-zero status on disabled user (#472) [Eduardo Otubo] (LP: #1170059) + cloudinit: remove global disable of pylint W0107 and fix errors (#489) + networking: refactor wait_for_physdevs from cloudinit.net (#466) (LP: #1884626) + HACKING.rst: add pytest.param pytest gotcha (#481) + cloudinit: remove global disable of pylint W0105 and fix errors (#480) + Fix two minor warnings (#475) + test_data: fix faulty patch (#476) + cc_mounts: handle missing fstab (#484) (LP: #1886531) + LXD cloud_tests: support more lxd image formats (#482) [Paride Legovini] + Add update_etc_hosts as default module on *BSD (#479) [Adam Dobrawy] + cloudinit: fix tip-pylint failures and bump pinned pylint version (#478) + Added BirknerAlex as contributor and sorted the file (#477) [Alexander Birkner] + Update list of types of modules in cli.rst [saurabhvartak1982] + tests: use markers to configure disable_subp_usage (#473) + Add mention of vendor-data to no-cloud format documentation (#470) [Landon Kirk] + Fix broken link to OpenStack metadata service docs (#467) [Matt Riedemann] + Disable ec2 mirror for non aws instances (#390) [lucasmoura] (LP: #1456277) + cloud_tests: don't pass + -python-version to read-dependencies (#465) + networking: refactor is_physical from cloudinit.net (#457) (LP: #1884619) + Enable use of the caplog fixture in pytest tests, and add a cc_final_message test using it (#461) + RbxCloud: Add support for FreeBSD (#464) [Adam Dobrawy] + Add schema for cc_chef module (#375) [lucasmoura] (LP: #1858888) + test_util: add (partial) testing for util.mount_cb (#463) + .travis.yml: revert to installing ubuntu-dev-tools (#460) + HACKING.rst: add details of net refactor tracking (#456) + .travis.yml: rationalise installation of dependencies in host (#449) + Add dermotbradley as contributor. (#458) [dermotbradley] + net/networking: remove unused functions/methods (#453) + distros.networking: initial implementation of layout (#391) + cloud-init.service.tmpl: use "rhel" instead of "redhat" (#452) + Change from redhat to rhel in systemd generator tmpl (#450) [Eduardo Otubo] + Hetzner: support reading user-data that is base64 encoded. (#448) [Scott Moser] (LP: #1884071) + HACKING.rst: add strpath gotcha to testing gotchas section (#446) + cc_final_message: don't create directories when writing boot-finished (#445) (LP: #1883903) + .travis.yml: only store new schroot if something has changed (#440) + util: add ensure_dir_exists parameter to write_file (#443) + printing the error stream of the dhclient process before killing it (#369) [Moustafa Moustafa] + Fix link to the MAAS documentation (#442) [Paride Legovini] (LP: #1883666) + RPM build: disable the dynamic mirror URLs when using a proxy (#437) [Paride Legovini] + util: rename write_file's copy_mode parameter to preserve_mode (#439) + .travis.yml: use $TRAVIS_BUILD_DIR for lxd_image caching (#438) + cli.rst: alphabetise devel subcommands and add net-convert to list (#430) + Default to UTF-8 in /var/log/cloud-init.log (#427) [James Falcon] + travis: cache the chroot we use for package builds (#429) + test: fix all flake8 E126 errors (#425) [Joshua Powers] + Fixes KeyError for bridge with no "parameters:" setting (#423) [Brian Candler] (LP: #1879673) + When tools.conf does not exist, running cmd "vmware-toolbox-cmd config get deployPkg enable-custom-scripts", the return code will be EX_UNAVAILABLE(69), on this condition, it should not take it as error. (#413) [chengcheng-chcheng] + Document CloudStack data-server well-known hostname (#399) [Gregor Riepl] + test: move conftest.py to top-level, to cover tests/ also (#414) + Replace cc_chef is_installed with use of subp.is_exe. (#421) [Scott Moser] + Move runparts to subp. (#420) [Scott Moser] + Move subp into its own module. (#416) [Scott Moser] + readme: point at travis-ci.com (#417) [Joshua Powers] + New feature flag functionality and fix includes failing silently (#367) [James Falcon] (LP: #1734939) + Enhance poll imds logging (#365) [Moustafa Moustafa] + test: fix all flake8 E121 and E123 errors (#404) [Joshua Powers] + test: fix all flake8 E241 (#403) [Joshua Powers] + test: ignore flake8 E402 errors in main.py (#402) [Joshua Powers] + cc_grub_dpkg: determine idevs in more robust manner with grub-probe (#358) [Matthew Ruffell] (LP: #1877491) + test: fix all flake8 E741 errors (#401) [Joshua Powers] + tests: add groovy integration tests for ubuntu (#400) + Enable chef_license support for chef infra client (#389) [Bipin Bachhao] + testing: use flake8 again (#392) [Joshua Powers] + enable Puppet, Chef mcollective in default config (#385) [Mina Galić (deprecated: Igor Galić)] (LP: #1880279) + HACKING.rst: introduce .net + > Networking refactor section (#384) + Travis: do not install python3-contextlib2 (dropped dependency) (#388) [Paride Legovini] + HACKING: mention that .github-cla-signers is alpha-sorted (#380) + Add bipinbachhao as contributor (#379) [Bipin Bachhao] + cc_snap: validate that assertions property values are strings (#370) + conftest: implement partial disable_subp_usage (#371) + test_resolv_conf: refresh stale comment (#374) + cc_snap: apply validation to snap.commands properties (#364) + make finding libc platform independent (#366) [Mina Galić (deprecated: Igor Galić)] + doc/rtd/topics/faq: Updates LXD docs links to current site (#368) [TomP] + templater: drop Jinja Python 2 compatibility shim (#353) + cloudinit: minor pylint fixes (#360) + cloudinit: remove unneeded __future__ imports (#362) + migrating momousta lp user to Moustafa-Moustafa GitHub user (#361) [Moustafa Moustafa] + cloud_tests: emit dots on Travis while fetching images (#347) + Add schema to apt configure config (#357) [lucasmoura] (LP: #1858884) + conftest: add docs and tests regarding CiTestCase's subp functionality (#343) + analyze/dump: refactor shared string into variable (#350) + doc: update boot.rst with correct timing of runcmd (#351) + HACKING.rst: change contact info to Rick Harding (#359) [lucasmoura] + HACKING.rst: guide people to add themselves to the CLA file (#349) + HACKING.rst: more unit testing documentation (#354) + .travis.yml: don't run lintian during integration test package builds (#352) + Add test to ensure docs examples are valid cloud-init configs (#355) [James Falcon] (LP: #1876414) + make suse and sles support 127.0.1.1 (#336) [chengcheng-chcheng] + Create tests to validate schema examples (#348) [lucasmoura] (LP: #1876412) + analyze/dump: add support for Amazon Linux 2 log lines (#346) (LP: #1876323) + bsd: upgrade support (#305) [Gonéri Le Bouder] + Add lucasmoura as contributor (#345) [lucasmoura] + Add "therealfalcon" as contributor (#344) [James Falcon] + Adapt the package building scripts to use Python 3 (#231) [Paride Legovini] + DataSourceEc2: use metadata's NIC ordering to determine route-metrics (#342) (LP: #1876312) + .travis.yml: introduce caching (#329) + cc_locale: introduce schema (#335) + doc/rtd/conf.py: bump copyright year to 2020 (#341) + yum_add_repo: Add Centos to the supported distro list (#340)- Add cloud-init-update-test-characters-in-substitution-unit-test.patch to fix unit test fail in TestGetPackageMirrorInfo::test_substitution.- Add patch from upstream to remove python2 compatibility so cloud-init builds fine in Tumbleweed with a recent Jinja2 version. This patch is only applied in TW. * 0001-templater-drop-Jinja-Python-2-compatibility-shim.patch- Add cloud-init-log-file-mode.patch (bsc#1183939) + Change log file creation mode to 640 - Add cloud-init-no-pwd-in-log.patch (bsc#1184758, CVE-2021-3429) + Do not write the generated password to the log file - Add cloud-init-purge-cache-py-ver-change.patch- Add cloud-init-bonding-opts.patch (bsc#1184085) + Write proper bonding option configuration for SLE/openSUSE - Fix application and inclusion of use_arroba_to_include_sudoers_directory-bsc_1181283.patchfix (bsc#1181283)- Add use_arroba_to_include_sudoers_directory-bsc_1181283.patchfix (bsc#1181283) - Do not including sudoers.d directory twice- Update cloud-init-write-routes.patch (bsc#1180176) + Follow up to previous changes. Fix order of operations error to make gateway comparison between subnet configuration and route configuration valuable rather than self-comparing.- Add cloud-init-sle12-compat.patch (jsc#PM-2335) - Python 3.4 compatibility in setup.py - Disable some test for mock version compatibility- Add wget as a requirement (bsc#1178029) + wget is used in the CloudStack data source- Add cloud-init-azure-def-usr-pass.patch (bsc#1179150, bsc#1179151) + Properly set the password for the default user in all circumstances- Patch the full package version into the cloud-init version file- Update cloud-init-write-routes.patch (bsc#1177526) + Fix missing default route when dual stack network setup is used. Once a default route was configured for Ipv6 or IPv4 the default route configuration for the othre protocol was skipped.- Update cloud-init-write-routes.patch (bsc#1177526) + Avoid exception if no gateway information is present and warning is triggered for existing routing.- Update to version 20.2 (bsc#1174443, bsc#1174444) + Remove patches included upstream: - 0001-Make-tests-work-with-Python-3.8-139.patch - cloud-init-ostack-metadat-dencode.patch - cloud-init-use-different-random-src.diff - cloud-init-long-pass.patch - cloud-init-mix-static-dhcp.patch + Remove patches build switched to Python 3 for all distributions (jsc#PM-2335) - cloud-init-python2-sigpipe.patch - cloud-init-template-py2.patch + Add - cloud-init-after-kvp.diff - cloud-init-recognize-hpc.patch + doc/format: reference make-mime.py instead of an inline script (#334) + Add docs about creating parent folders (#330) [Adrian Wilkins] + DataSourceNoCloud/OVF: drop claim to support FTP (#333) (LP: #1875470) + schema: ignore spurious pylint error (#332) + schema: add json schema for write_files module (#152) + BSD: find_devs_with_ refactoring (#298) [Gonéri Le Bouder] + nocloud: drop work around for Linux 2.6 (#324) [Gonéri Le Bouder] + cloudinit: drop dependencies on unittest2 and contextlib2 (#322) + distros: handle a potential mirror filtering error case (#328) + log: remove unnecessary import fallback logic (#327) + .travis.yml: don't run integration test on ubuntu/* branches (#321) + More unit test documentation (#314) + conftest: introduce disable_subp_usage autouse fixture (#304) + YAML align indent sizes for docs readability (#323) [Tak Nishigori] + network_state: add missing space to log message (#325) + tests: add missing mocks for get_interfaces_by_mac (#326) (LP: #1873910) + test_mounts: expand happy path test for both happy paths (#319) + cc_mounts: fix incorrect format specifiers (#316) (LP: #1872836) + swap file "size" being used before checked if str (#315) [Eduardo Otubo] + HACKING.rst: add pytest version gotchas section (#311) + docs: Add steps to re-run cloud-id and cloud-init (#313) [Joshua Powers] + readme: OpenBSD is now supported (#309) [Gonéri Le Bouder] + net: ignore 'renderer' key in netplan config (#306) (LP: #1870421) + Add support for NFS/EFS mounts (#300) [Andrew Beresford] (LP: #1870370) + openbsd: set_passwd should not unlock user (#289) [Gonéri Le Bouder] + tools/.github-cla-signers: add beezly as CLA signer (#301) + util: remove unnecessary lru_cache import fallback (#299) + HACKING.rst: reorganise/update CLA signature info (#297) + distros: drop leading/trailing hyphens from mirror URL labels (#296) + HACKING.rst: add note about variable annotations (#295) + CiTestCase: stop using and remove sys_exit helper (#283) + distros: replace invalid characters in mirror URLs with hyphens (#291) (LP: #1868232) + rbxcloud: gracefully handle arping errors (#262) [Adam Dobrawy] + Fix cloud-init ignoring some misdeclared mimetypes in user-data. [Kurt Garloff] + net: ubuntu focal prioritize netplan over eni even if both present (#267) (LP: #1867029) + cloudinit: refactor util.is_ipv4 to net.is_ipv4_address (#292) + net/cmdline: replace type comments with annotations (#294) + HACKING.rst: add Type Annotations design section (#293) + net: introduce is_ip_address function (#288) + CiTestCase: remove now-unneeded parse_and_read helper method (#286) + .travis.yml: allow 30 minutes of inactivity in cloud tests (#287) + sources/tests/test_init: drop use of deprecated inspect.getargspec (#285) + setup.py: drop NIH check_output implementation (#282) + Identify SAP Converged Cloud as OpenStack [Silvio Knizek] + add Openbsd support (#147) [Gonéri Le Bouder] + HACKING.rst: add examples of the two test class types (#278) + VMWware: support to update guest info gc status if enabled (#261) [xiaofengw-vmware] + Add lp-to-git mapping for kgarloff (#279) + set_passwords: avoid chpasswd on BSD (#268) [Gonéri Le Bouder] + HACKING.rst: add Unit Testing design section (#277) + util: read_cc_from_cmdline handle urlencoded yaml content (#275) + distros/tests/test_init: add tests for _get_package_mirror_info (#272) + HACKING.rst: add links to new Code Review Process doc (#276) + freebsd: ensure package update works (#273) [Gonéri Le Bouder] + doc: introduce Code Review Process documentation (#160) + tools: use python3 (#274) + cc_disk_setup: fix RuntimeError (#270) (LP: #1868327) + cc_apt_configure/util: combine search_for_mirror implementations (#271) + bsd: boottime does not depend on the libc soname (#269) [Gonéri Le Bouder] + test_oracle,DataSourceOracle: sort imports (#266) + DataSourceOracle: update .network_config docstring (#257) + cloudinit/tests: remove unneeded with_logs configuration (#263) + .travis.yml: drop stale comment (#255) + .gitignore: add more common directories (#258) + ec2: render network on all NICs and add secondary IPs as static (#114) (LP: #1866930) + ec2 json validation: fix the reference to the 'merged_cfg' key (#256) [Paride Legovini] + releases.yaml: quote the Ubuntu version numbers (#254) [Paride Legovini] + cloudinit: remove six from packaging/tooling (#253) + util/netbsd: drop six usage (#252) + workflows: introduce stale pull request workflow (#125) + cc_resolv_conf: introduce tests and stabilise output across Python versions (#251) + fix minor issue with resolv_conf template (#144) [andreaf74] + doc: CloudInit also support NetBSD (#250) [Gonéri Le Bouder] + Add Netbsd support (#62) [Gonéri Le Bouder] + tox.ini: avoid substition syntax that causes a traceback on xenial (#245) + Add pub_key_ed25519 to cc_phone_home (#237) [Daniel Hensby] + Introduce and use of a list of GitHub usernames that have signed CLA (#244) + workflows/cla.yml: use correct username for CLA check (#243) + tox.ini: use xenial version of jsonpatch in CI (#242) + workflows: CLA validation altered to fail status on pull_request (#164) + tox.ini: bump pyflakes version to 2.1.1 (#239) + cloudinit: move to pytest for running tests (#211) + instance-data: add cloud-init merged_cfg and sys_info keys to json (#214) (LP: #1865969) + ec2: Do not fallback to IMDSv1 on EC2 (#216) + instance-data: write redacted cfg to instance-data.json (#233) (LP: #1865947) + net: support network-config:disabled on the kernel commandline (#232) (LP: #1862702) + ec2: only redact token request headers in logs, avoid altering request (#230) (LP: #1865882) + docs: typo fixed: dta → data [Alexey Vazhnov] + Fixes typo on Amazon Web Services (#217) [Nick Wales] + Fix docs for OpenStack DMI Asset Tag (#228) [Mark T. Voelker] (LP: #1669875) + Add physical network type: cascading to openstack helpers (#200) [sab-systems] + tests: add focal integration tests for ubuntu (#225) - From 20.1 (first vesrion after 19.4) + ec2: Do not log IMDSv2 token values, instead use REDACTED (#219) (LP: #1863943) + utils: use SystemRandom when generating random password. (#204) [Dimitri John Ledkov] + docs: mount_default_files is a list of 6 items, not 7 (#212) + azurecloud: fix issues with instances not starting (#205) (LP: #1861921) + unittest: fix stderr leak in cc_set_password random unittest output. (#208) + cc_disk_setup: add swap filesystem force flag (#207) + import sysvinit patches from freebsd-ports tree (#161) [Igor Galić] + docs: fix typo (#195) [Edwin Kofler] + sysconfig: distro-specific config rendering for BOOTPROTO option (#162) [Robert Schweikert] (LP: #1800854) + cloudinit: replace "from six import X" imports (except in util.py) (#183) + run-container: use 'test -n' instead of 'test ! -z' (#202) [Paride Legovini] + net/cmdline: correctly handle static ip= config (#201) [Dimitri John Ledkov] (LP: #1861412) + Replace mock library with unittest.mock (#186) + HACKING.rst: update CLA link (#199) + Scaleway: Fix DatasourceScaleway to avoid backtrace (#128) [Louis Bouchard] + cloudinit/cmd/devel/net_convert.py: add missing space (#191) + tools/run-container: drop support for python2 (#192) [Paride Legovini] + Print ssh key fingerprints using sha256 hash (#188) (LP: #1860789) + Make the RPM build use Python 3 (#190) [Paride Legovini] + cc_set_password: increase random pwlength from 9 to 20 (#189) (LP: #1860795) + .travis.yml: use correct Python version for xenial tests (#185) + cloudinit: remove ImportError handling for mock imports (#182) + Do not use fallocate in swap file creation on xfs. (#70) [Eduardo Otubo] (LP: #1781781) + .readthedocs.yaml: install cloud-init when building docs (#181) (LP: #1860450) + Introduce an RTD config file, and pin the Sphinx version to the RTD default (#180) + Drop most of the remaining use of six (#179) + Start removing dependency on six (#178) + Add Rootbox & HyperOne to list of cloud in README (#176) [Adam Dobrawy] + docs: add proposed SRU testing procedure (#167) + util: rename get_architecture to get_dpkg_architecture (#173) + Ensure util.get_architecture() runs only once (#172) + Only use gpart if it is the BSD gpart (#131) [Conrad Hoffmann] + freebsd: remove superflu exception mapping (#166) [Gonéri Le Bouder] + ssh_auth_key_fingerprints_disable test: fix capitalization (#165) [Paride Legovini] + util: move uptime's else branch into its own boottime function (#53) [Igor Galić] (LP: #1853160) + workflows: add contributor license agreement checker (#155) + net: fix rendering of 'static6' in network config (#77) (LP: #1850988) + Make tests work with Python 3.8 (#139) [Conrad Hoffmann] + fixed minor bug with mkswap in cc_disk_setup.py (#143) [andreaf74] + freebsd: fix create_group() cmd (#146) [Gonéri Le Bouder] + doc: make apt_update example consistent (#154) + doc: add modules page toc with links (#153) (LP: #1852456) + Add support for the amazon variant in cloud.cfg.tmpl (#119) [Frederick Lefebvre] + ci: remove Python 2.7 from CI runs (#137) + modules: drop cc_snap_config config module (#134) + migrate-lp-user-to-github: ensure Launchpad repo exists (#136) + docs: add initial troubleshooting to FAQ (#104) [Joshua Powers] + doc: update cc_set_hostname frequency and descrip (#109) [Joshua Powers] (LP: #1827021) + freebsd: introduce the freebsd renderer (#61) [Gonéri Le Bouder] + cc_snappy: remove deprecated module (#127) + HACKING.rst: clarify that everyone needs to do the LP->GH dance (#130) + freebsd: cloudinit service requires devd (#132) [Gonéri Le Bouder] + cloud-init: fix capitalisation of SSH (#126) + doc: update cc_ssh clarify host and auth keys [Joshua Powers] (LP: #1827021) + ci: emit names of tests run in Travis (#120)- Disable testing to aid elimination of unittest2 in Factory- bsc#1170154: rsyslog warning, '~' is deprecated + replace deprecated syntax '& ~' by '& stop' for more information please see https://www.rsyslog.com/rsyslog-error-2307/- Update cloud-init-write-routes.patch + Explicitly test for netconfig version 1 as well as 2- Update cloud-init-write-routes.patch + Handle netconfig v2 device configurations (bsc#1171546, bsc#1171995)- Update cloud-init-write-routes.patch + In cases where the config contains 2 or more default gateway specifications for an interface only write the first default route, log warning message about skipped routes + Avoid writing invalid route specification if neither the network nor destination is specified in the route configuration- Update cloud-init-write-routes.patch + Still need to consider the "network" configuration option for the v1 config implementation. Fixes regression introduced with update from Wed Feb 12 19:30:42- Update cloud-init-write-routes.patch (bsc#1165296) + Add the default gateway to the ifroute config file when specified as part of the subnet configuration + Fix typo to properly extrakt provided netmask data (bsc#1163178)- Add cloud-init-long-pass.patch (bsc#1162936, CVE-2020-8632) + Increase the default length of generated passwords- Add cloud-init-use-different-random-src.diff (bsc#1162937, CVE-2020-8631) + Use non-deterministic generator for password generation.- Update cloud-init-write-routes.patch (bsc#1163178) + Entries in the routes definition have changed causing a traceback during rout config file writing. This patch update addresses the issue by extracting the new entries properly.- BuildRequire pkgconfig(udev) instead of udev: allow OBS to shortcut through the -mini flavor.- Add cloud-init-no-tempnet-oci.patch (bsc#1161132, bsc#1161133) + Do not attempt to configure an ephemeral network on OCI. We boot off iSCSI and the network is up. Just read the data.- Add patch to build properly with python 3.8: * 0001-Make-tests-work-with-Python-3.8-139.patch- Update to version 19.4 + Remove patches included upstream: - cloud-init-after-wicked.patch - cloud-init-noresolv-merge-no-dns-data.diff - cloud-init-renderer-detect.patch - cloud-init-trigger-udev.patch + Removed patches merged with cloud-init-mix-static-dhcp.patch - cloud-init-proper-ipv6-setting.patch - cloud-init-static-net.patch + Added cloud-init-mix-static-dhcp.patch (bsc#1157894) + Forward port cloud-init-sysconf-path.patch + doc: specify _ over - in cloud config modules + [Joshua Powers] (LP: #1293254) + tools: Detect python to use via env in migrate-lp-user-to-github + [Adam Dobrawy] + Partially revert "fix unlocking method on FreeBSD" (#116) + tests: mock uid when running as root (#113) + [Joshua Powers] (LP: #1856096) + cloudinit/netinfo: remove unused getgateway (#111) + docs: clear up apt config sections (#107) [Joshua Powers] (LP: #1832823) + doc: add kernel command line option to user data (#105) + [Joshua Powers] (LP: #1846524) + config/cloud.cfg.d: update README [Joshua Powers] (LP: #1855006) + azure: avoid re-running cloud-init when instance-id is byte-swapped + (#84) [AOhassan] + fix unlocking method on FreeBSD [Igor Galić] (LP: #1854594) + debian: add reference to the manpages [Joshua Powers] + ds_identify: if /sys is not available use dmidecode (#42) + [Igor Galić] (LP: #1852442) + docs: add cloud-id manpage [Joshua Powers] + docs: add cloud-init-per manpage [Joshua Powers] + docs: add cloud-init manpage [Joshua Powers] + docs: add additional details to per-instance/once [Joshua Powers] + Update doc-requirements.txt [Joshua Powers] + doc-requirements: add missing dep [Joshua Powers] + dhcp: Support RedHat dhcp rfc3442 lease format for option 121 (#76) + [Eric Lafontaine] (LP: #1850642) + network_state: handle empty v1 config (#45) (LP: #1852496) + docs: Add document on how to report bugs [Joshua Powers] + Add an Amazon distro in the redhat OS family [Frederick Lefebvre] + removed a couple of "the"s [gaughen] + docs: fix line length and remove highlighting [Joshua Powers] + docs: Add security.md to readthedocs [Joshua Powers] + Multiple file fix for AuthorizedKeysFile config (#60) [Eduardo Otubo] + Revert "travis: only run CI on pull requests" + doc: update links on README.md [Joshua Powers] + doc: Updates to wording of README.md [Joshua Powers] + Add security.md [Joshua Powers] + setup.py: Amazon Linux sets libexec to /usr/libexec (#52) + [Frederick Lefebvre] + Fix linting failure in test_url_helper (#83) [Eric Lafontaine] + url_helper: read_file_or_url should pass headers param into readurl + (#66) (LP: #1854084) + dmidecode: log result *after* stripping n [Igor Galić] + cloud_tests: add azure platform support to integration tests + [ahosmanmsft] + set_passwords: support for FreeBSD (#46) [Igor Galić] + tools: migrate-lp-user-to-github removes repo_dir if created (#35) + Correct jumbled documentation for cc_set_hostname module (#64) + [do3meli] (LP: #1853543) + FreeBSD: fix for get_linux_distro() and lru_cache (#59) + [Igor Galić] (LP: #1815030) + ec2: Add support for AWS IMDS v2 (session-oriented) (#55) + tests: Fix cloudsigma tests when no dmidecode data is present. (#57) + [Scott Moser] + net: IPv6, accept_ra, slaac, stateless (#51) + [Harald] (LP: #1806014, #1808647) + docs: Update the configdrive datasource links (#44) + [Joshua Powers] (LP: #1852461) + distro: correctly set usr_lib_exec path for FreeBSD distro (#40) + [Igor Galić] (LP: #1852491) + azure: support secondary ipv6 addresses (#33) + Fix metadata check when local-hostname is null (#32) + [Mark Goddard] (LP: #1852100) + switch default FreeBSD salt minion pkg from py27 to py36 + [Dominic Schlegel] + travis: only run CI on pull requests + add data-server dns entry as new metadata server detection [Joshua Hügli] + pycodestyle: remove unused local variable + reporting: Using a uuid to enforce uniqueness on the KVP keys. [momousta] + docs: touchups in rtd intro and README.md + doc: update launchpad git refs to github + github: drop pull-request template to prepare for migration + tools: add migrate-lp-user-to-github script to link LP to github + github: new basic project readme - From 19.3 + azure: support matching dhcp route-metrics for dual-stack ipv4 ipv6 + (LP: #1850308) + configdrive: fix subplatform config-drive for /config-drive source + [David Kindred] (LP: #1849731) + DataSourceSmartOS: reconfigure network on each boot + [Mike Gerdts] (LP: #1765801) + Add config for ssh-key import and consuming user-data [Pavel Zakharov] + net: fix subnet_is_ipv6() for stateless|stateful + [Harald Jensås] (LP: #1848690) + OVF: disable custom script execution by default [Xiaofeng Wang] + cc_puppet: Implement csr_attributes.yaml support [Matthias Baur] + cloud-init.service: on centos/fedora/redhat wait on NetworkManager.service + (LP: #1843334) + azure: Do not lock user on instance id change [Sam Eiderman] (LP: #1849677) + net/netplan: use ipv6-mtu key for specifying ipv6 mtu values + Fix usages of yaml, and move yaml_dump to safeyaml.dumps. (LP: #1849640) + exoscale: Increase url_max_wait to 120s. [Chris Glass] + net/sysconfig: fix available check on SUSE distros + [Robert Schweikert] (LP: #1849378) + docs: Fix incorrect Azure IMDS IP address [Joshua Powers] (LP: #1849508) + introduce .travis.yml + net: enable infiniband support in eni and sysconfig renderers + [Darren Birkett] (LP: #1847114) + guestcust_util: handle special characters in config file [Xiaofeng Wang] + fix some more typos in comments [Dominic Schlegel] + replace any deprecated log.warn with log.warning + [Dominic Schlegel] (LP: #1508442) + net: handle openstack dhcpv6-stateless configuration + [Harald Jensås] (LP: #1847517) + Add .venv/ to .gitignore [Dominic Schlegel] + Small typo fixes in code comments. [Dominic Schlegel] + cloud_test/lxd: Retry container delete a few times + Add Support for e24cloud to Ec2 datasource. (LP: #1696476) + Add RbxCloud datasource [Adam Dobrawy] + get_interfaces: don't exclude bridge and bond members (LP: #1846535) + Add support for Arch Linux in render-cloudcfg [Conrad Hoffmann] + util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary + (LP: #1801364) + debian/ubuntu: add missing word to netplan/ENI header (LP: #1845669) + ovf: do not generate random instance-id for IMC customization path + sysconfig: only write resolv.conf if network_state has DNS values + (LP: #1843634) + sysconfig: use distro variant to check if available (LP: #1843584) + systemd/cloud-init.service.tmpl: start after wicked.service + [Robert Schweikert] + docs: fix zstack documentation lints + analyze/show: remove trailing space in output + Add missing space in warning: "not avalid seed" [Brian Candler] + pylintrc: add 'enter_context' to generated-members list + Add datasource for ZStack platform. [Shixin Ruan] (LP: #1841181) + docs: organize TOC and update summary of project [Joshua Powers] + tools: make clean now cleans the dev directory, not the system + docs: create cli specific page [Joshua Powers] + docs: added output examples to analyze.rst [Joshua Powers] + docs: doc8 fixes for instancedata page [Joshua Powers] + docs: clean up formatting, organize boot page [Joshua Powers] + net: add is_master check for filtering device list (LP: #1844191) + docs: more complete list of availability [Joshua Powers] + docs: start FAQ page [Joshua Powers] + docs: cleanup output & order of datasource page [Joshua Powers] + Brightbox: restrict detection to require full domain match .brightbox.com + VMWware: add option into VMTools config to enable/disable custom script. + [Xiaofeng Wang] + net,Oracle: Add support for netfailover detection + atomic_helper: add DEBUG logging to write_file (LP: #1843276) + doc: document doc, create makefile and tox target [Joshua Powers] + .gitignore: ignore files produced by package builds + docs: fix whitespace, spelling, and line length [Joshua Powers] + docs: remove unnecessary file in doc directory [Joshua Powers] + Oracle: Render secondary vnic IP and MTU values only + exoscale: fix sysconfig cloud_config_modules overrides (LP: #1841454) + net/cmdline: refactor to allow multiple initramfs network config sources + ubuntu-drivers: call db_x_loadtemplatefile to accept NVIDIA EULA + (LP: #1840080) + Add missing #cloud-config comment on first example in documentation. + [Florian Müller] + ubuntu-drivers: emit latelink=true debconf to accept nvidia eula + (LP: #1840080) + DataSourceOracle: prefer DS network config over initramfs + format.rst: add text/jinja2 to list of content types (+ cleanups) + Add GitHub pull request template to point people at hacking doc + cloudinit/distros/parsers/sys_conf: add docstring to SysConf + pyflakes: remove unused variable [Joshua Powers] + Azure: Record boot timestamps, system information, and diagnostic events + [Anh Vo] + DataSourceOracle: configure secondary NICs on Virtual Machines + distros: fix confusing variable names + azure/net: generate_fallback_nic emits network v2 config instead of v1 + Add support for publishing host keys to GCE guest attributes [Rick Wright] + New data source for the Exoscale.com cloud platform [Chris Glass] + doc: remove intersphinx extension + cc_set_passwords: rewrite documentation (LP: #1838794) + net/cmdline: split interfaces_by_mac and init network config determination + stages: allow data sources to override network config source order + cloud_tests: updates and fixes + Fix bug rendering MTU on bond or vlan when input was netplan. (LP: #1836949) + net: update net sequence, include wait on netdevs, opensuse netrules path (LP: #1817368)- Add cloud-init-proper-ipv6-setting.patch (bsc#1156139) + Set proper IPv6 interface variable in ifcfg file- Update cloud-init-write-routes.patch (bsc#1155376) + Write a route's destination network in CIDR notation instead of using the netmask. This provides support for correctly recording IPv6 routes.- Add cloud-init-renderer-detect.patch (bsc#1154092, boo#1142988) + Short curcuit the conditional for identifying the sysconfig renderer. If we find ifup/ifdown accept the renderer as available.- Add cloud-init-break-resolv-symlink.patch (bsc#1151488) + If /etc/resolv.conf is a symlink break it. This will avoid netconfig from clobbering the changes cloud-init applied.- Update to cloud-init 19.2 (bsc#1099358, bsc#1145622) + Remove, included upstream - cloud-init-detect-nova.diff - cloud-init-add-static-routes.diff + net: add rfc3442 (classless static routes) to EphemeralDHCP (LP: #1821102) + templates/ntp.conf.debian.tmpl: fix missing newline for pools (LP: #1836598) + Support netplan renderer in Arch Linux [Conrad Hoffmann] + Fix typo in publicly viewable documentation. [David Medberry] + Add a cdrom size checker for OVF ds to ds-identify [Pengpeng Sun] (LP: #1806701) + VMWare: Trigger the post customization script via cc_scripts module. [Xiaofeng Wang] (LP: #1833192) + Cloud-init analyze module: Added ability to analyze boot events. [Sam Gilson] + Update debian eni network configuration location, retain Ubuntu setting [Janos Lenart] + net: skip bond interfaces in get_interfaces [Stanislav Makar] (LP: #1812857) + Fix a couple of issues raised by a coverity scan + Add missing dsname for Hetzner Cloud datasource [Markus Schade] + doc: indicate that netplan is default in Ubuntu now + azure: add region and AZ properties from imds compute location metadata + sysconfig: support more bonding options [Penghui Liao] + cloud-init-generator: use libexec path to ds-identify on redhat systems (LP: #1833264) + tools/build-on-freebsd: update to python3 [Gonéri Le Bouder] + Allow identification of OpenStack by Asset Tag [Mark T. Voelker] (LP: #1669875) + Fix spelling error making 'an Ubuntu' consistent. [Brian Murray] + run-container: centos: comment out the repo mirrorlist [Paride Legovini] + netplan: update netplan key mappings for gratuitous-arp (LP: #1827238) + freebsd: fix the name of cloudcfg VARIANT [Gonéri Le Bouder] + freebsd: ability to grow root file system [Gonéri Le Bouder] + freebsd: NoCloud data source support [Gonéri Le Bouder] (LP: #1645824) + Azure: Return static fallback address as if failed to find endpoint [Jason Zions (MSFT)]- Add cloud-init-after-wicked.patch - Change the service order, the cloud-init service wants to run after networking is started- Add cloud-init-noresolv-merge-no-dns-data.diff - Avoid writing resolv.conf if the network configuration contains no dns entries.- Follow up to update cloud-init-trigger-udev.patch (bsc#1144363) - In this implementation the "name" is not yet an attribute, use get() to obtain the value from a dict. Source code version confusion.- Add cloud-init-add-static-routes.diff (bsc#1141969) + Properly handle static routes. The EphemeralDHCP context manager did not parse or handle rfc3442 classless static routes which prevented reading datasource metadata in some clouds.- Update cloud-init-trigger-udev.patch (bsc#1144363) - The __str__ implementation no longer delivers the name of the interface, use the "name" attribute instead to form a proper path in the sysfs tree- Update cloud-init-write-routes.patch (boo#1144881, bsc#1148645) + If no routes are set for a subnet but the subnet has a gateway specified, set the gateway as the default route for the interface- Follow the ever changing inconsistencies of version definitions and detection in the build service. + No more suse_version in SUSE internal instance for SLES 15 SP1- BuildRequire pkgconfig(systemd) instead of systemd: allow OBS to shortcut the build queues by allowing usage of systemd-mini- Update to version 19.1 (bsc#1136440, bsc#1129124) + Remove, included upstream - fix-default-systemd-unit-dir.patch - cloud-init-sysconf-ethsetup.patch - cloud-init-handle-def-route-set.patch - cloud-init-no-empty-resolv.patch - cloud-init-proper-ipv6-varname.patch + Forward port - cloud-init-trigger-udev.patch + Add cloud-init-detect-nova.diff (bsc#1136440) + Modify cloud-init-python2-sigpipe.patch, import signal and constants + Update spec to account for new location of bash completion + freebsd: add chpasswd pkg in the image [Gonéri Le Bouder] + tests: add Eoan release [Paride Legovini] + cc_mounts: check if mount -a on no-change fstab path [Jason Zions (MSFT)] (LP: #1825596) + replace remaining occurrences of LOG.warn [Daniel Watkins] + DataSourceAzure: Adjust timeout for polling IMDS [Anh Vo] + Azure: Changes to the Hyper-V KVP Reporter [Anh Vo] + git tests: no longer show warning about safe yaml. + tools/read-version: handle errors [Chad Miller] + net/sysconfig: only indicate available on known sysconfig distros (LP: #1819994) + packages: update rpm specs for new bash completion path [Daniel Watkins] (LP: #1825444) + test_azure: mock util.SeLinuxGuard where needed [Jason Zions (MSFT)] (LP: #1825253) + setup.py: install bash completion script in new location [Daniel Watkins] + mount_cb: do not pass sync and rw options to mount [Gonéri Le Bouder] (LP: #1645824) + cc_apt_configure: fix typo in apt documentation [Dominic Schlegel] + Revert "DataSource: move update_events from a class to an instance..." [Daniel Watkins] + Change DataSourceNoCloud to ignore file system label's case. [Risto Oikarinen] + cmd:main.py: Fix missing 'modules-init' key in modes dict [Antonio Romito] (LP: #1815109) + ubuntu_advantage: rewrite cloud-config module + Azure: Treat _unset network configuration as if it were absent [Jason Zions (MSFT)] (LP: #1823084) + DatasourceAzure: add additional logging for azure datasource [Anh Vo] + cloud_tests: fix apt_pipelining test-cases + Azure: Ensure platform random_seed is always serializable as JSON. [Jason Zions (MSFT)] + net/sysconfig: write out SUSE-compatible IPv6 config [Robert Schweikert] + tox: Update testenv for openSUSE Leap to 15.0 [Thomas Bechtold] + net: Fix ipv6 static routes when using eni renderer [Raphael Glon] (LP: #1818669) + Add ubuntu_drivers config module [Daniel Watkins] + doc: Refresh Azure walinuxagent docs [Daniel Watkins] + tox: bump pylint version to latest (2.3.1) [Daniel Watkins] + DataSource: move update_events from a class to an instance attribute [Daniel Watkins] (LP: #1819913) + net/sysconfig: Handle default route setup for dhcp configured NICs [Robert Schweikert] (LP: #1812117) + DataSourceEc2: update RELEASE_BLOCKER to be more accurate [Daniel Watkins] + cloud-init-per: POSIX sh does not support string subst, use sed (LP: #1819222) + Support locking user with usermod if passwd is not available. + Example for Microsoft Azure data disk added. [Anton Olifir] + clean: correctly determine the path for excluding seed directory [Daniel Watkins] (LP: #1818571) + helpers/openstack: Treat unknown link types as physical [Daniel Watkins] (LP: #1639263) + drop Python 2.6 support and our NIH version detection [Daniel Watkins] + tip-pylint: Fix assignment-from-return-none errors + net: append type:dhcp[46] only if dhcp[46] is True in v2 netconfig [Kurt Stieger] (LP: #1818032) + cc_apt_pipelining: stop disabling pipelining by default [Daniel Watkins] (LP: #1794982) + tests: fix some slow tests and some leaking state [Daniel Watkins] + util: don't determine string_types ourselves [Daniel Watkins] + cc_rsyslog: Escape possible nested set [Daniel Watkins] (LP: #1816967) + Enable encrypted_data_bag_secret support for Chef [Eric Williams] (LP: #1817082) + azure: Filter list of ssh keys pulled from fabric [Jason Zions (MSFT)] CVE-2019-0816 + doc: update merging doc with fixes and some additional details/examples + tests: integration test failure summary to use traceback if empty error + This is to fix https://bugs.launchpad.net/cloud-init/+bug/1812676 [Vitaly Kuznetsov] + EC2: Rewrite network config on AWS Classic instances every boot [Guilherme G. Piccoli] (LP: #1802073) + netinfo: Adjust ifconfig output parsing for FreeBSD ipv6 entries (LP: #1779672) + netplan: Don't render yaml aliases when dumping netplan (LP: #1815051) + add PyCharm IDE .idea/ path to .gitignore [Dominic Schlegel] + correct grammar issue in instance metadata documentation [Dominic Schlegel] (LP: #1802188) + clean: cloud-init clean should not trace when run from within cloud_dir (LP: #1795508) + Resolve flake8 comparison and pycodestyle over-ident issues [Paride Legovini] + opennebula: also exclude epochseconds from changed environment vars (LP: #1813641) + systemd: Render generator from template to account for system differences. [Robert Schweikert] + sysconfig: On SUSE, use STARTMODE instead of ONBOOT [Robert Schweikert] (LP: #1799540) + flake8: use ==/!= to compare str, bytes, and int literals [Paride Legovini] + opennebula: exclude EPOCHREALTIME as known bash env variable with a delta (LP: #1813383) + tox: fix disco httpretty dependencies for py37 (LP: #1813361) + run-container: uncomment baseurl in yum.repos.d/*.repo when using a proxy [Paride Legovini] + lxd: install zfs-linux instead of zfs meta package [Johnson Shi] (LP: #1799779) + net/sysconfig: do not write a resolv.conf file with only the header. [Robert Schweikert] + net: Make sysconfig renderer compatible with Network Manager. [Eduardo Otubo] + cc_set_passwords: Fix regex when parsing hashed passwords [Marlin Cremers] (LP: #1811446) + net: Wait for dhclient to daemonize before reading lease file [Jason Zions] (LP: #1794399) + [Azure] Increase retries when talking to Wireserver during metadata walk [Jason Zions] + Add documentation on adding a datasource. + doc: clean up some datasource documentation. + ds-identify: fix wrong variable name in ovf_vmware_transport_guestinfo. + Scaleway: Support ssh keys provided inside an instance tag. [PORTE Loïc] + OVF: simplify expected return values of transport functions. + Vmware: Add support for the com.vmware.guestInfo OVF transport. (LP: #1807466) + HACKING.rst: change contact info to Josh Powers + Update to pylint 2.2.2.- Update cloud-init-write-routes.patch (bsc#1132692) + Properly accumulate all the defined routes for a given network device. Previously only the last defined route was written to the routes file.- Update cloud-init-trigger-udev.patch (bsc#1125950) + Write the udev rules to a different file than the default + Settle udev if not all configured devices are in the device tree to avoid race condition between udev and cloud-init- Add cloud-init-trigger-udev.patch (bsc#1125950) + When the user configures a new rules file for network devices the rules may not apply immediately, trigger udevadm- Modify cloud-init-write-routes.patch (bsc#1125992) + Fix the order of calls, the SUSE implementation of route config file writing must clobber the default implementation.- Add cloud-init-proper-ipv6-varname.patch (bsc#1126101) + Use the proper name to designate IPv6 addresses in ifcfg-* files- Modify cloud-init-write-routes.patch (boo#1123694) + Drop a '-' in the route file for the last column- Add cloud-init-no-empty-resolv.patch (bsc#1119397)- Update to version 18.5 (bsc#1121878, boo#1116767) + Remove 0001-Fix-the-service-order-for-SUSE-distributions.patch 0001-Follow-the-ever-bouncing-ball-for-openSUSE-distribut.patch 0002-Add-tests-for-additional-openSUSE-distro-condition-m.patch included upstream + Forward port cloud-init-sysconf-ethsetup.patch + Add cloud-init-write-routes.patch + Add cloud-init-handle-def-route-set.patch + tests: add Disco release [Joshua Powers] + net: render 'metric' values in per-subnet routes (LP: #1805871) + write_files: add support for appending to files. [James Baxter] + config: On ubuntu select cloud archive mirrors for armel, armhf, arm64. (LP: #1805854) + dhclient-hook: cleanups, tests and fix a bug on 'down' event. + NoCloud: Allow top level 'network' key in network-config. (LP: #1798117) + ovf: Fix ovf network config generation gateway/routes (LP: #1806103) + azure: detect vnet migration via netlink media change event [Tamilmani Manoharan] + Azure: fix copy/paste error in error handling when reading azure ovf. + [Adam DePue] + tests: fix incorrect order of mocks in test_handle_zfs_root. + doc: Change dns_nameserver property to dns_nameservers. [Tomer Cohen] + OVF: identify label iso9660 filesystems with label 'OVF ENV'. + logs: collect-logs ignore instance-data-sensitive.json on non-root user (LP: #1805201) + net: Ephemeral*Network: add connectivity check via URL + azure: _poll_imds only retry on 404. Fail on Timeout (LP: #1803598) + resizefs: Prefix discovered devpath with '/dev/' when path does not exist [Igor Galić] + azure: retry imds polling on requests.Timeout (LP: #1800223) + azure: Accept variation in error msg from mount for ntfs volumes [Jason Zions] (LP: #1799338) + azure: fix regression introduced when persisting ephemeral dhcp lease [asakkurr] + azure: add udev rules to create cloud-init Gen2 disk name symlinks (LP: #1797480) + tests: ec2 mock missing httpretty user-data and instance-identity routes + azure: remove /etc/netplan/90-hotplug-azure.yaml when net from IMDS + azure: report ready to fabric after reprovision and reduce logging [asakkurr] (LP: #1799594) + query: better error when missing read permission on instance-data + instance-data: fallback to instance-data.json if sensitive is absent. (LP: #1798189) + docs: remove colon from network v1 config example. [Tomer Cohen] + Add cloud-id binary to packages for SUSE [Jason Zions] + systemd: On SUSE ensure cloud-init.service runs before wicked [Robert Schweikert] (LP: #1799709) + update detection of openSUSE variants [Robert Schweikert] + azure: Add apply_network_config option to disable network from IMDS (LP: #1798424) + Correct spelling in an error message (udevadm). [Katie McLaughlin] + tests: meta_data key changed to meta-data in ec2 instance-data.json (LP: #1797231) + tests: fix kvm integration test to assert flexible config-disk path (LP: #1797199) + tools: Add cloud-id command line utility + instance-data: Add standard keys platform and subplatform. Refactor ec2. + net: ignore nics that have "zero" mac address. (LP: #1796917) + tests: fix apt_configure_primary to be more flexible + Ubuntu: update sources.list to comment out deb-src entries. (LP: #74747)- Add cloud-init-ostack-metadat-dencode.patch (bsc#1101894)- Add cloud-init-static-net.patch (boo#1114160)- Update to version 18.4 (bsc#1087331, bsc#1097388, boo#1111427, bsc#1095627) + Remove cloud-init-no-user-lock-if-already-locked.patch cloud-init 18.4 is not supported on SLE 11 code base + Remove 0001-Support-chrony-configuration-lp-1731619.patch Included upstream + Remove 0003-Distro-dependent-chrony-config-file.patch Included upstream + Remove 0001-switch-to-using-iproute2-tools.patch Included upstream + Remove cloud-init-no-python-linux-dist.patch Included upstream + Remove cloud-init-no-trace-empt-sect.patch Included upstream + Remove cloud-init-setpath-dsitentify.patch Included upstream + Modify fix-default-systemd-unit-dir.patch Use pkg-config, only modify the generator + Remove cloud-init-sysconfig-netpathfix.patch Fixed upstream + Removed cloud-init-skip-ovf-tests.patch Fixed upstream + Removed cloud-init-translate-netconf-ipv4-keep-gw.patch Fixed upstream + Add cloud-init-template-py2.patch avoid Python 3 dependency when we build for distros with Python 2 support + Add 0001-Follow-the-ever-bouncing-ball-for-openSUSE-distribut.patch + Add 0002-Add-tests-for-additional-openSUSE-distro-condition-m.patch + Add cloud-init-sysconf-path.patch + Add cloud-init-sysconf-ethsetup.patch + Add 0001-Fix-the-service-order-for-SUSE-distributions.patch + Add dhcp-client as requirement cloud-init uses dhclient to setup temporary network for metadata retrieval. THis is needed until lp#1733226 is addressed + add rtd example docs about new standardized keys + use ds._crawled_metadata instance attribute if set when writing instance-data.json + ec2: update crawled metadata. add standardized keys + tests: allow skipping an entire cloud_test without running. + tests: disable lxd tests on cosmic + cii-tests: use unittest2.SkipTest in ntp_chrony due to new deps + lxd: adjust to snap installed lxd. + docs: surface experimental doc in instance-data.json + tests: fix ec2 integration tests. process meta_data instead of meta-data + Add support for Infiniband network interfaces (IPoIB). [Mark Goddard] + cli: add cloud-init query subcommand to query instance metadata + tools/tox-venv: update for new features. + pylint: ignore warning assignment-from-no-return for _write_network + stages: Fix bug causing datasource to have incorrect sys_cfg. (LP: #1787459) + Remove dead-code _write_network distro implementations. + net_util: ensure static configs have netmask in translate_network result [Thomas Berger] (LP: #1792454) + Fall back to root:root on syslog permissions if other options fail. [Robert Schweikert] + tests: Add mock for util.get_hostname. [Robert Schweikert] (LP: #1792799) + ds-identify: doc string cleanup. + OpenStack: Support setting mac address on bond. [Fabian Wiesel] (LP: #1682064) + bash_completion/cloud-init: fix shell syntax error. + EphemeralIPv4Network: Be more explicit when adding default route. (LP: #1792415) + OpenStack: support reading of newer versions of metdata. + OpenStack: fix bug causing 'latest' version to be used from network. (LP: #1792157) + user-data: jinja template to render instance-data.json in cloud-config (LP: #1791781) + config: disable ssh access to a configured user account + tests: print failed testname instead of docstring upon failure + tests: Disallow use of util.subp except for where needed. + sysconfig: refactor sysconfig to accept distro specific templates paths + Add unit tests for config/cc_ssh.py [Francis Ginther] + Fix the built-in cloudinit/tests/helpers:skipIf + read-version: enhance error message [Joshua Powers] + hyperv_reporting_handler: simplify threaded publisher + VMWare: Fix a network config bug in vm with static IPv4 and no gateway. [Pengpeng Sun] (LP: #1766538) + logging: Add logging config type hyperv for reporting via Azure KVP [Andy Liu] + tests: disable other snap test as well [Joshua Powers] + tests: disable snap, fix write_files binary [Joshua Powers] + Add datasource Oracle Compute Infrastructure (OCI). + azure: allow azure to generate network configuration from IMDS per boot. + Scaleway: Add network configuration to the DataSource [Louis Bouchard] + docs: Fix example cloud-init analyze command to match output. [Wesley Gao] + netplan: Correctly render macaddress on a bonds and bridges when provided. (LP: #1784699) + tools: Add 'net-convert' subcommand command to 'cloud-init devel'. + redhat: remove ssh keys on new instance. (LP: #1781094) + Use typeset or local in profile.d scripts. (LP: #1784713) + OpenNebula: Fix null gateway6 [Akihiko Ota] (LP: #1768547) + oracle: fix detect_openstack to report True on OracleCloud.com DMI data (LP: #1784685) + tests: improve LXDInstance trying to workaround or catch bug. + update_metadata re-config on every boot comments and tests not quite right [Mike Gerdts] + tests: Collect build_info from system if available. + pylint: Fix pylint warnings reported in pylint 2.0.0. + get_linux_distro: add support for rhel via redhat-release. + get_linux_distro: add support for centos6 and rawhide flavors of redhat (LP: #1781229) + tools: add '--debug' to tools/net-convert.py + tests: bump the version of paramiko to 2.4.1. + docs: note in rtd about avoiding /tmp when writing files (LP: #1727876) + ubuntu,centos,debian: get_linux_distro to align with platform.dist (LP: #1780481) + Fix boothook docs on environment variable name (INSTANCE_I -> INSTANCE_ID) [Marc Tamsky] + update_metadata: a datasource can support network re-config every boot + tests: drop salt-minion integration test (LP: #1778737) + Retry on failed import of gpg receive keys. + tools: Fix run-container when neither source or binary package requested. + docs: Fix a small spelling error. [Oz N Tiram] + tox: use simplestreams from git repository rather than bzr. - From 18.3 + docs: represent sudo:false in docs for user_groups config module + Explicitly prevent `sudo` access for user module [Jacob Bednarz] (LP: #1771468) + lxd: Delete default network and detach device if lxd-init created them. (LP: #1776958) + openstack: avoid unneeded metadata probe on non-openstack platforms (LP: #1776701) + stages: fix tracebacks if a module stage is undefined or empty [Robert Schweikert] (LP: #1770462) + Be more safe on string/bytes when writing multipart user-data to disk. (LP: #1768600) + Fix get_proc_env for pids that have non-utf8 content in environment. (LP: #1775371) + tests: fix salt_minion integration test on bionic and later + tests: provide human-readable integration test summary when --verbose + tests: skip chrony integration tests on lxd running artful or older + test: add optional --preserve-instance arg to integraiton tests + netplan: fix mtu if provided by network config for all rendered types (LP: #1774666) + tests: remove pip install workarounds for pylxd, take upstream fix. + subp: support combine_capture argument. + tests: ordered tox dependencies for pylxd install + util: add get_linux_distro function to replace platform.dist [Robert Schweikert] (LP: #1745235) + pyflakes: fix unused variable references identified by pyflakes 2.0.0. + Do not use the systemd_prefix macro, not available in this environment [Robert Schweikert] + doc: Add config info to ec2, openstack and cloudstack datasource docs + Enable SmartOS network metadata to work with netplan via per-subnet routes [Dan McDonald] (LP: #1763512) + openstack: Allow discovery in init-local using dhclient in a sandbox. (LP: #1749717) + tests: Avoid using https in httpretty, improve HttPretty test case. (LP: #1771659) + yaml_load/schema: Add invalid line and column nums to error message + Azure: Ignore NTFS mount errors when checking ephemeral drive [Paul Meyer] + packages/brpm: Get proper dependencies for cmdline distro. + packages: Make rpm spec files patch in package version like in debs. + tools/run-container: replace tools/run-centos with more generic. + Update version.version_string to contain packaged version. (LP: #1770712) + cc_mounts: Do not add devices to fstab that are already present. [Lars Kellogg-Stedman] + ds-identify: ensure that we have certain tokens in PATH. (LP: #1771382) + tests: enable Ubuntu Cosmic in integration tests [Joshua Powers] + read_file_or_url: move to url_helper, fix bug in its FileResponse. + cloud_tests: help pylint [Ryan Harper] + flake8: fix flake8 errors in previous commit. + typos: Fix spelling mistakes in cc_mounts.py log messages [Stephen Ford] + tests: restructure SSH and initial connections [Joshua Powers] + ds-identify: recognize container-other as a container, test SmartOS. + cloud-config.service: run After snap.seeded.service. (LP: #1767131) + tests: do not rely on host /proc/cmdline in test_net.py [Lars Kellogg-Stedman] (LP: #1769952) + ds-identify: Remove dupe call to is_ds_enabled, improve debug message. + SmartOS: fix get_interfaces for nics that do not have addr_assign_type. + tests: fix package and ca_cert cloud_tests on bionic (LP: #1769985) + ds-identify: make shellcheck 0.4.6 happy with ds-identify. + pycodestyle: Fix deprecated string literals, move away from flake8. + azure: Add reported ready marker file. [Joshua Chan] (LP: #1765214) + tools: Support adding a release suffix through packages/bddeb. + FreeBSD: Invoke growfs on ufs filesystems such that it does not prompt. [Harm Weites] (LP: #1404745) + tools: Re-use the orig tarball in packages/bddeb if it is around. + netinfo: fix netdev_pformat when a nic does not have an address assigned. (LP: #1766302) + collect-logs: add -v flag, write to stderr, limit journal to single boot. (LP: #1766335) + IBMCloud: Disable config-drive and nocloud only if IBMCloud is enabled. (LP: #1766401) + Add reporting events and log_time around early source of blocking time [Ryan Harper] + IBMCloud: recognize provisioning environment during debug boots. (LP: #1767166) + net: detect unstable network names and trigger a settle if needed [Ryan Harper] (LP: #1766287) + IBMCloud: improve documentation in datasource. + sysconfig: dhcp6 subnet type should not imply dhcpv4 [Vitaly Kuznetsov] + packages/debian/control.in: add missing dependency on iproute2. (LP: #1766711) + DataSourceSmartOS: add locking of serial device. [Mike Gerdts] (LP: #1746605) + DataSourceSmartOS: sdc:hostname is ignored [Mike Gerdts] (LP: #1765085) + DataSourceSmartOS: list() should always return a list [Mike Gerdts] (LP: #1763480) + schema: in validation, raise ImportError if strict but no jsonschema. + set_passwords: Add newline to end of sshd config, only restart if updated. (LP: #1677205) + pylint: pay attention to unused variable warnings. + doc: Add documentation for AliYun datasource. [Junjie Wang] + Schema: do not warn on duplicate items in commands. (LP: #1764264) + net: Depend on iproute2's ip instead of net-tools ifconfig or route + DataSourceSmartOS: fix hang when metadata service is down [Mike Gerdts] (LP: #1667735) + DataSourceSmartOS: change default fs on ephemeral disk from ext3 to ext4. [Mike Gerdts] (LP: #1763511) + pycodestyle: Fix invalid escape sequences in string literals. + Implement bash completion script for cloud-init command line [Ryan Harper] + tools: Fix make-tarball cli tool usage for development + renderer: support unicode in render_from_file. + Implement ntp client spec with auto support for distro selection [Ryan Harper] (LP: #1749722) + Apport: add Brightbox, IBM, LXD, and OpenTelekomCloud to list of clouds. + tests: fix ec2 integration network metadata validation + tests: fix integration tests to support lxd 3.0 release + correct documentation to match correct attribute name usage. [Dominic Schlegel] (LP: #1420018) + cc_resizefs, util: handle no /dev/zfs [Ryan Harper] + doc: Fix links in OpenStack datasource documentation. [Dominic Schlegel] (LP: #1721660)- Add a modified version of fix-default-systemd-unit-dir.patch + Removed pre-maturely, still needs 1 part of the patch- Remove fix-default-systemd-unit-dir.patch + No longer needed, proper systemd config dir is queried from pckg-config- The distribution inidcator is set to suse during template expansion, we do not replace anything set to ubuntu - Do not run cloud-init after network-online, this breaks functionality in cloud-init. Certain parts of the code running in this phase expect to run before the network is on-line. This "re-introduces" boo#1097388. But the changes made are not generic enough. - Root should not be enabled by default. For image builders/users that want root access by default they should provide an appropriate configuration file during image build or image setup- Let distribution default to opensuse/sles (boo#1099340) - do not disable root user to make it easier to work with - Run metadata detection after network-online (boo#1097388)- Re-add generator (bsc#1089824, boo#1093501) + Add cloud-init-setpath-dsitentify.patch, upstream solution to hanle PATH issue + Re-enable th egenerator to reduce effort in cloud-init configuration- Drop the generator (bsc#1089824, boo#1093501) + The generator spawns a script called ds-identify which in turn calls blkid. When the generator executes the environment may or may not be ready. The generator speeds up the boot process in cases where cloud-init is enabled but we are not in an environment where cloud-init should run -> Don't do that.- Update to version 18.2 (bsc#1092637, bsc#1084509) + Forward port cloud-init-python2-sigpipe.patch + Forward port cloud-init-no-python-linux-dist.patch + Add cloud-init-no-trace-empt-sect.patch + Hetzner: Exit early if dmi system-manufacturer is not Hetzner. + Add missing dependency on isc-dhcp-client to trunk ubuntu packaging. + (LP: #1759307) + FreeBSD: resizefs module now able to handle zfs/zpool. + [Dominic Schlegel] (LP: #1721243) + cc_puppet: Revert regression of puppet creating ssl and ssl_cert dirs + Enable IBMCloud datasource in settings.py. + IBMCloud: Initial IBM Cloud datasource. + tests: remove jsonschema from xenial tox environment. + tests: Fix newly added schema unit tests to skip if no jsonschema. + ec2: Adjust ec2 datasource after exception_cb change. + Reduce AzurePreprovisioning HTTP timeouts. + [Douglas Jordan] (LP: #1752977) + Revert the logic of exception_cb in read_url. + [Kurt Garloff] (LP: #1702160, #1298921) + ubuntu-advantage: Add new config module to support + ubuntu-advantage-tools + Handle global dns entries in netplan (LP: #1750884) + Identify OpenTelekomCloud Xen as OpenStack DS. + [Kurt Garloff] (LP: #1756471) + datasources: fix DataSource subclass get_hostname method signature + (LP: #1757176) + OpenNebula: Update network to return v2 config rather than ENI. + [Akihiko Ota] + Add Hetzner Cloud DataSource + net: recognize iscsi root cases without ip= on kernel command line. + (LP: #1752391) + tests: fix flakes warning for unused variable + tests: patch leaked stderr messages from snap unit tests + cc_snap: Add new module to install and configure snapd and snap + packages. + tests: Make pylint happy and fix python2.6 uses of assertRaisesRegex. + netplan: render bridge port-priority values (LP: #1735821) + util: Fix subp regression. Allow specifying subp command as a string. + (LP: #1755965) + doc: fix all warnings issued by 'tox -e doc' + FreeBSD: Set hostname to FQDN. [Dominic Schlegel] (LP: #1753499) + tests: fix run_tree and bddeb + tests: Fix some warnings in tests that popped up with newer python. + set_hostname: When present in metadata, set it before network bringup. + (LP: #1746455) + tests: Centralize and re-use skipTest based on json schema presense. + This commit fixes get_hostname on the AzureDataSource. + [Douglas Jordan] (LP: #1754495) + shellify: raise TypeError on bad input. + Make salt minion module work on FreeBSD. + [Dominic Schlegel] (LP: #1721503) + Simplify some comparisions. [Rémy Léone] + Change some list creation and population to literal. [Rémy Léone] + GCE: fix reading of user-data that is not base64 encoded. (LP: #1752711) + doc: fix chef install from apt packages example in RTD. + Implement puppet 4 support [Romanos Skiadas] (LP: #1446804) + subp: Fix subp usage with non-ascii characters when no system locale. + (LP: #1751051) + salt: configure grains in grains file rather than in minion config. [Daniel Wallace]- Update to version 18.1 (bsc#1085787, bsc#1084749) + Forward port cloud-init-python2-sigpipe.patch + Forward port 0003-Distro-dependent-chrony-config-file.patch partial integration into 0001-Support-chrony-configuration-lp-1731619.patch + Forward port cloud-init-no-python-linux-dist.patch + Remove 0002-Disable-method-deprecation-warning-for-pylint.patch use new cloud-init internal distro detection code + Remove cloud-init-resize-ro-btrfs.patch included upstream + Remove 0001-Set-syslog_fix_perms-for-SUSE-distro-addresses-bsc-1.patch included upstream + OVF: Fix VMware support for 64-bit platforms. [Sankar Tanguturi] + ds-identify: Fix searching for iso9660 OVF cdroms. (LP: #1749980) + SUSE: Fix groups used for ownership of cloud-init.log [Robert Schweikert] + ds-identify: check /writable/system-data/ for nocloud seed. (LP: #1747070) + tests: run nosetests in cloudinit/ directory, fix py26 fallout. + tools: run-centos: git clone rather than tar. + tests: add support for logs with lxd from snap and future lxd 3. (LP: #1745663) + EC2: Fix get_instance_id called against cached datasource pickle. (LP: #1748354) + cli: fix cloud-init status to report running when before result.json (LP: #1747965) + net: accept network-config in netplan format for renaming interfaces (LP: #1709715) + Fix ssh keys validation in ssh_util [Tatiana Kholkina] + docs: Update RTD content for cloud-init subcommands. + OVF: Extend well-known labels to include OVFENV. (LP: #1698669) + Fix potential cases of uninitialized variables. (LP: #1744796) + tests: Collect script output as binary, collect systemd journal, fix lxd. + HACKING.rst: mention setting user name and email via git config. + Azure VM Preprovisioning support. [Douglas Jordan] (LP: #1734991) + tools/read-version: Fix read-version when in a git worktree. + docs: Fix typos in docs and one debug message. [Florian Grignon] + btrfs: support resizing if root is mounted ro. [Robert Schweikert] (LP: #1734787) + OpenNebula: Improve network configuration support. [Akihiko Ota] (LP: #1719157, #1716397, #1736750) + tests: Fix EC2 Platform to return console output as bytes. + tests: Fix attempted use of /run in a test case. + GCE: Improvements and changes to ssh key behavior for default user. [Max Illfelder] (LP: #1670456, #1707033, #1707037, #1707039) + subp: make ProcessExecutionError have expected types in stderr, stdout. + tests: when querying ntp server, do not do dns resolution. + Recognize uppercase vfat disk labels [James Penick] (LP: #1598783) + tests: remove zesty as supported OS to test [Joshua Powers] + Do not log warning on config files that represent None. (LP: #1742479) + tests: Use git hash pip dependency format for pylxd. + tests: add integration requirements text file [Joshua Powers] + MAAS: add check_instance_id based off oauth tokens. (LP: #1712680) + tests: update apt sources list test [Joshua Powers] + tests: clean up image properties [Joshua Powers] + tests: rename test ssh keys to avoid appearance of leaking private keys. [Joshua Powers] + tests: Enable AWS EC2 Integration Testing [Joshua Powers] + cli: cloud-init clean handles symlinks (LP: #1741093) + SUSE: Add a basic test of network config rendering. [Robert Schweikert] + Azure: Only bounce network when necessary. (LP: #1722668) + lint: Fix lints seen by pylint version 1.8.1. + cli: Fix error in cloud-init modules --mode=init. (LP: #1736600)- update cloud-init-sysconfig-netpathfix.patch: * skip checking for files in /etc/sysconfig that never exist on a wickedd based system- Fix logfile permission settings (bsc#1080595) + Add 0001-Set-syslog_fix_perms-for-SUSE-distro-addresses-bsc-1.patch- drop dependency on boto (only used in examples, and should really be ported to botocore/boto3 instead)- Update to version 17.2 (boo#1069635, bsc#1072811) + Add cloud-init-skip-ovf-tests.patch + Add cloud-init-no-python-linux-dist.patch + Add 0001-switch-to-using-iproute2-tools.patch + Add 0001-Support-chrony-configuration-lp-1731619.patch + Add 0002-Disable-method-deprecation-warning-for-pylint.patch + Add 0003-Distro-dependent-chrony-config-file.patch + removed cloud-init-add-variant-cloudcfg.patch replaced by cloud-init-no-python-linux-dist.patch + removed zypp_add_repos.diff included upstream + removed zypp_add_repo_test.patch included upstream + removed cloud-init-hosts-template.patch included upstream + removed cloud-init-more-tasks.patch included upstream + removed cloud-init-final-no-apt.patch included upstream + removed cloud-init-ntp-conf-suse.patch included upstream + removed cloud-init-break-cycle-local-service.patch included upstream + removed cloud-init-reproduce-build.patch included upstream + For the complete changelog see https://launchpad.net/cloud-init/trunk/17.2- patch distribution detection until a fix is delivered to python3 (bsc#997614) add cloud-init-add-variant-cloudcfg.patch- Fix usage of fdupes macro: there is no '-n' parameter to the macro (there would be to fdupes, the command, though).- Add cloud-init-reproduce-build.patch (boo#1069635) + Make builds reproducible- Add cloud-init-resize-ro-btrfs.patch + cc_resizefs fails if the current root is a read-only btrfs subvolume, use an always writeable subvolume instead [bsc#1042913]- Add cloud-init-break-cycle-local-service.patch + Let systemd pull in the default targets. This breaks a cycle- Fix variable name in cloud-init-translate-netconf-ipv4-keep-gw.patch- Add cloud-init-translate-netconf-ipv4-keep-gw.patch (boo#1064854) + Properly insert the gateway information for v1 json network config data- Add cloud-init-ntp-conf-suse.patch + ntp configuration was broken on sles and opensuse lp#1726572- Add cloud-init-hosts-template.patch (bsc#1064594) + Properly expand the /etc/hosst file when manage_etc_hosts is set- Fix sed expression to set distro properly (boo#1063716)- Update to version 17.1 (bsc#1035106) + Version numbering scheme change now YY.NUMBER_OF_RELESE_THAT_YEAR + Remove cloud.cfg.suse, use generated default config file + Remove addopenSUSEBase.patch, included upstream + Remove suseIntegratedHandler.patch, included upstream + Remove openSUSEhostsTemplate.diff, included upstream + Remove cloud-init-handle-no-carrier.patch, included upstream + Remove cloud-init-digital-ocean-datasource.patch, use upstream implementation + Remove cloud-init-digital-ocean-datasource-enable-by-default.patch, use upstream implementation + Remove cloud-init-fix-unicode-handling-binarydecode.patch, included upstream + Remove cloud-init-no-dmidecode-on-ppc64.patch, included upstream + Remove dataSourceOpenNebula.patch, use upstream implementation + Remove setupSUSEsysVInit.diff, included upstream + Remove suseSysVInit.diff, included upstream + Remove cloud-init-finalbeforelogin.patch, don't block login + Remove cloud-init-handle-not-implemented-query.patch, query option removed + Remove cloud-init-spceandtabs-clean.patch, indentation fixed upstream + Remove dynamicInitCmd.diff, different solution from upstream + Added cloud-init-more-tasks.patch, (bsc#1047363) replace cloud-init-finalbeforelogin.patch + Forward port cloud-init-python2-sigpipe.patch + Remove cloud-init-net-eni.patch, included upstream + Remove cloud-init-service.patch, included upstream + Forward port cloud-init-sysconfig-netpathfix.patch + Remove cloud-init-net-sysconfig-lp1665441.patch, included upstream + Remove cloud-init-python26.patch, included upstream + Remove skip-argparse-on-python3.patch + Add cloud-init-tests-set-exec.patch + Add cloud-init-final-no-apt.patch + Add zypp_add_repo_test.patch + doc: document GCE datasource. [Arnd Hannemann] + suse: updates to templates to support openSUSE and SLES. + [Robert Schweikert] (LP: #1718640) + suse: Copy sysvinit files from redhat with slight changes. + [Robert Schweikert] (LP: #1718649) + docs: fix sphinx module schema documentation [Chad Smith] + tests: Add cloudinit package to all test targets [Chad Smith] + Makefile: No longer look for yaml files in obsolete ./bin/. + tests: fix ds-identify unit tests to set EC2_STRICT_ID_DEFAULT. + ec2: Fix maybe_perform_dhcp_discovery to use /var/tmp as a tmpdir + [Chad Smith] (LP: #1717627) + Azure: wait longer for SSH pub keys to arrive. + [Paul Meyer] (LP: #1717611) + GCE: Fix usage of user-data. (LP: #1717598) + cmdline: add collect-logs subcommand. [Chad Smith] (LP: #1607345) + CloudStack: consider dhclient lease files named with a hyphen. + (LP: #1717147) + resizefs: Drop check for read-only device file, do not warn on + overlayroot. [Chad Smith] + Do not provide systemd-fsck drop-in which could cause ordering cycles. + [Balint Reczey] (LP: #1717477) + tests: Enable the NoCloud KVM platform [Joshua Powers] + resizefs: pass mount point to xfs_growfs [Dusty Mabe] + vmware: Enable nics before sending the SUCCESS event. [Sankar Tanguturi] + cloud-config modules: honor distros definitions in each module + [Chad Smith] (LP: #1715738, #1715690) + chef: Add option to pin chef omnibus install version + [Ethan Apodaca] (LP: #1462693) + tests: execute: support command as string [Joshua Powers] + schema and docs: Add jsonschema to resizefs and bootcmd modules + [Chad Smith] + tools: Add xkvm script, wrapper around qemu-system [Joshua Powers] + vmware customization: return network config format + [Sankar Tanguturi] (LP: #1675063) + Ec2: only attempt to operate at local mode on known platforms. + (LP: #1715128) + Use /run/cloud-init for tempfile operations. (LP: #1707222) + ds-identify: Make OpenStack return maybe on arch other than intel. + (LP: #1715241) + tests: mock missed openstack metadata uri network_data.json + [Chad Smith] (LP: #1714376) + relocate tests/unittests/helpers.py to cloudinit/tests + [Lars Kellogg-Stedman] + tox: add nose timer output [Joshua Powers] + upstart: do not package upstart jobs, drop ubuntu-init-switch module. + tests: Stop leaking calls through unmocked metadata addresses + [Chad Smith] (LP: #1714117) + distro: allow distro to specify a default locale [Ryan Harper] + tests: fix two recently added tests for sles distro. + url_helper: dynamically import oauthlib import from inside oauth_headers + [Chad Smith] + tox: make xenial environment run with python3.6 + suse: Add support for openSUSE and return SLES to a working state. + [Robert Schweikert] + GCE: Add a main to the GCE Datasource. + ec2: Add IPv6 dhcp support to Ec2DataSource. [Chad Smith] (LP: #1639030) + url_helper: fail gracefully if oauthlib is not available + [Lars Kellogg-Stedman] (LP: #1713760) + cloud-init analyze: fix issues running under python 2. [Andrew Jorgensen] + Configure logging module to always use UTC time. + [Ryan Harper] (LP: #1713158) + Log a helpful message if a user script does not include shebang. + [Andrew Jorgensen] + cli: Fix command line parsing of coniditionally loaded subcommands. + [Chad Smith] (LP: #1712676) + doc: Explain error behavior in user data include file format. + [Jason Butz] + cc_landscape & cc_puppet: Fix six.StringIO use in writing configs + [Chad Smith] (LP: #1699282, #1710932) + schema cli: Add schema subcommand to cloud-init cli and cc_runcmd schema + [Chad Smith] + Debian: Remove non-free repositories from apt sources template. + [Joonas Kylmälä] (LP: #1700091) + tools: Add tooling for basic cloud-init performance analysis. + [Chad Smith] (LP: #1709761) + network: add v2 passthrough and fix parsing v2 config with bonds/bridge + params [Ryan Harper] (LP: #1709180) + doc: update capabilities with features available, link doc reference, + cli example [Ryan Harper] + vcloud directory: Guest Customization support for passwords + [Maitreyee Saikia] + ec2: Allow Ec2 to run in init-local using dhclient in a sandbox. + [Chad Smith] (LP: #1709772) + cc_ntp: fallback on timesyncd configuration if ntp is not installable + [Ryan Harper] (LP: #1686485) + net: Reduce duplicate code. Have get_interfaces_by_mac use + get_interfaces. + tests: Fix build tree integration tests [Joshua Powers] + sysconfig: Dont repeat header when rendering resolv.conf + [Ryan Harper] (LP: #1701420) + archlinux: Fix bug with empty dns, do not render 'lo' devices. + (LP: #1663045, #1706593) + cloudinit.net: add initialize_network_device function and tests + [Chad Smith] + makefile: fix ci-deps-ubuntu target [Chad Smith] + tests: adjust locale integration test to parse default locale. + tests: remove 'yakkety' from releases as it is EOL. + tests: Add initial tests for EC2 and improve a docstring. + locale: Do not re-run locale-gen if provided locale is system default. + archlinux: fix set hostname usage of write_file. + [Joshua Powers] (LP: #1705306) + sysconfig: support subnet type of 'manual'. + tools/run-centos: make running with no argument show help. + Drop rand_str() usage in DNS redirection detection + [Bob Aman] (LP: #1088611) + sysconfig: use MACADDR on bonds/bridges to configure mac_address + [Ryan Harper] (LP: #1701417) + net: eni route rendering missed ipv6 default route config + [Ryan Harper] (LP: #1701097) + sysconfig: enable mtu set per subnet, including ipv6 mtu + [Ryan Harper] (LP: #1702513) + sysconfig: handle manual type subnets [Ryan Harper] (LP: #1687725) + sysconfig: fix ipv6 gateway routes [Ryan Harper] (LP: #1694801) + sysconfig: fix rendering of bond, bridge and vlan types. + [Ryan Harper] (LP: #1695092) + Templatize systemd unit files for cross distro deltas. [Ryan Harper] + sysconfig: ipv6 and default gateway fixes. [Ryan Harper] (LP: #1704872) + net: fix renaming of nics to support mac addresses written in upper + case. (LP: #1705147) + tests: fixes for issues uncovered when moving to python 3.6. + (LP: #1703697) + sysconfig: include GATEWAY value if set in subnet + [Ryan Harper] (LP: #1686856) + Scaleway: add datasource with user and vendor data for Scaleway. + [Julien Castets] + Support comments in content read by load_shell_content. + cloudinitlocal fail to run during boot [Hongjiang Zhang] + doc: fix disk setup example table_type options + [Sandor Zeestraten] (LP: #1703789) + tools: Fix exception handling. [Joonas Kylmälä] (LP: #1701527) + tests: fix usage of mock in GCE test. + test_gce: Fix invalid mock of platform_reports_gce to return False + [Chad Smith] + test: fix incorrect keyid for apt repository. + [Joshua Powers] (LP: #1702717) + tests: Update version of pylxd [Joshua Powers] + write_files: Remove log from helper function signatures. + [Andrew Jorgensen] + doc: document the cmdline options to NoCloud [Brian Candler] + read_dmi_data: always return None when inside a container. (LP: #1701325) + requirements.txt: remove trailing white space. + Azure: Add network-config, Refactor net layer to handle duplicate macs. + [Ryan Harper] + Tests: Simplify the check on ssh-import-id [Joshua Powers] + tests: update ntp tests after sntp added [Joshua Powers] + FreeBSD: Make freebsd a variant, fix unittests and + tools/build-on-freebsd. + FreeBSD: fix test failure + FreeBSD: replace ifdown/ifup with "ifconfig down" and "ifconfig up". + [Hongjiang Zhang] (LP: #1697815) + FreeBSD: fix cdrom mounting failure if /mnt/cdrom/secure did not exist. + [Hongjiang Zhang] (LP: #1696295) + main: Don't use templater to format the welcome message + [Andrew Jorgensen] + docs: Automatically generate module docs form schema if present. + [Chad Smith] + debian: fix path comment in /etc/hosts template. + [Jens Sandmann] (LP: #1606406) + suse: add hostname and fully qualified domain to template. + [Jens Sandmann] + write_file(s): Print permissions as octal, not decimal [Andrew Jorgensen] + ci deps: Add --test-distro to read-dependencies to install all deps + [Chad Smith] + tools/run-centos: cleanups and move to using read-dependencies + pkg build ci: Add make ci-deps- target to install pkgs + [Chad Smith] + systemd: make cloud-final.service run before apt daily services. + (LP: #1693361) + selinux: Allow restorecon to be non-fatal. [Ryan Harper] (LP: #1686751) + net: Allow netinfo subprocesses to return 0 or 1. + [Ryan Harper] (LP: #1686751) + net: Allow for NetworkManager configuration [Ryan McCabe] (LP: #1693251) + Use distro release version to determine if we use systemd in redhat spec + [Ryan Harper] + net: normalize data in network_state object + Integration Testing: tox env, pyxld 2.2.3, and revamp framework + [Wesley Wiedenmeier] + Chef: Update omnibus url to chef.io, minor doc changes. [JJ Asghar] + tools: add centos scripts to build and test [Joshua Powers] + Drop cheetah python module as it is not needed by trunk [Ryan Harper] + rhel/centos spec cleanups. + cloud.cfg: move to a template. setup.py changes along the way. + Makefile: add deb-src and srpm targets. use PYVER more places. + makefile: fix python 2/3 detection in the Makefile [Chad Smith] + snap: Removing snapcraft plug line [Joshua Powers] (LP: #1695333) + RHEL/CentOS: Fix default routes for IPv4/IPv6 configuration. + [Andreas Karis] (LP: #1696176) + test: Fix pyflakes complaint of unused import. + [Joshua Powers] (LP: #1695918) + NoCloud: support seed of nocloud from smbios information + [Vladimir Pouzanov] (LP: #1691772) + net: when selecting a network device, use natural sort order + [Marc-Aurèle Brothier] + fix typos and remove whitespace in various docs [Stephan Telling] + systemd: Fix typo in comment in cloud-init.target. [Chen-Han Hsiao] + Tests: Skip jsonschema related unit tests when dependency is absent. + [Chad Smith] (LP: #1695318) + azure: remove accidental duplicate line in merge. + azure: identify platform by well known value in chassis asset tag. + [Chad Smith] (LP: #1693939) + tools/net-convert.py: support old cloudinit versions by using kwargs. + ntp: Add schema definition and passive schema validation. + [Chad Smith] (LP: #1692916) + Fix eni rendering for bridge params that require repeated key for + values. [Ryan Harper] + net: remove systemd link file writing from eni renderer [Ryan Harper] + AliYun: Enable platform identification and enable by default. + [Junjie Wang] (LP: #1638931) + net: fix reading and rendering addresses in cidr format. + [Dimitri John Ledkov] (LP: #1689346, #1684349) + disk_setup: udev settle before attempting partitioning or fs creation. + (LP: #1692093) + GCE: Update the attribute used to find instance SSH keys. + [Daniel Watkins] (LP: #1693582) + nplan: For bonds, allow dashed or underscore names of keys. + [Dimitri John Ledkov] (LP: #1690480) + python2.6: fix unit tests usage of assertNone and format. + test: update docstring on test_configured_list_with_none + fix tools/ds-identify to not write None twice. + tox/build: do not package depend on style requirements. + cc_ntp: Restructure cc_ntp unit tests. [Chad Smith] (LP: #1692794) + flake8: move the pinned version of flake8 up to 3.3.0 + tests: Apply workaround for snapd bug in test case. [Joshua Powers] + RHEL/CentOS: Fix dual stack IPv4/IPv6 configuration. + [Andreas Karis] (LP: #1679817, #1685534, #1685532) + disk_setup: fix several issues with gpt disk partitions. (LP: #1692087) + function spelling & docstring update [Joshua Powers] + Fixing wrong file name regression. [Joshua Powers] + tox: move pylint target to 1.7.1 + Fix get_interfaces_by_mac for empty macs (LP: #1692028) + DigitalOcean: remove routes except for the public interface. + [Ben Howard] (LP: #1681531.) + netplan: pass macaddress, when specified, for vlans + [Dimitri John Ledkov] (LP: #1690388) + doc: various improvements for the docs on cc_users_groups. + [Felix Dreissig] + cc_ntp: write template before installing and add service restart + [Ryan Harper] (LP: #1645644) + cloudstack: fix tests to avoid accessing /var/lib/NetworkManager + [Lars Kellogg-Stedman] + tests: fix hardcoded path to mkfs.ext4 [Joshua Powers] (LP: #1691517) + Actually skip warnings when .skip file is present. + [Chris Brinker] (LP: #1691551) + netplan: fix netplan render_network_state signature. + [Dimitri John Ledkov] (LP: #1685944) + Azure: fix reformatting of ephemeral disks on resize to large types. + (LP: #1686514) + Revert "tools/net-convert: fix argument order for render_network_state" + make deb: Add devscripts dependency for make deb. Cleanup + packages/bddeb. [Chad Smith] (LP: #1685935) + tools/net-convert: fix argument order for render_network_state + [Ryan Harper] (LP: #1685944) + openstack: fix log message copy/paste typo in _get_url_settings + [Lars Kellogg-Stedman] + unittests: fix unittests run on centos [Joshua Powers] + Improve detection of snappy to include os-release and kernel cmdline. + (LP: #1689944) + Add address to config entry generated by _klibc_to_config_entry. + [Julien Castets] (LP: #1691135) + sysconfig: Raise ValueError when multiple default gateways are present. + [Chad Smith] (LP: #1687485) + FreeBSD: improvements and fixes for use on Azure + [Hongjiang Zhang] (LP: #1636345) + Add unit tests for ds-identify, fix Ec2 bug found. + fs_setup: if cmd is specified, use shell interpretation. + [Paul Meyer] (LP: #1687712) + doc: document network configuration defaults policy and formats. + [Ryan Harper] + Fix name of "uri" key in docs for "cc_apt_configure" module + [Felix Dreissig] + tests: Enable artful [Joshua Powers] + nova-lxd: read product_name from environment, not platform. + (LP: #1685810) + Fix yum repo config where keys contain array values + [Dylan Perry] (LP: #1592150) + template: Update debian backports template [Joshua Powers] (LP: #1627293) + rsyslog: replace ~ with stop [Joshua Powers] (LP: #1367899) + Doc: add additional RTD examples [Joshua Powers] (LP: #1459604) + Fix growpart for some cases when booted with root=PARTUUID. + (LP: #1684869) + pylint: update output style to parseable [Joshua Powers] + pylint: fix all logging warnings [Joshua Powers] + CloudStack: Add NetworkManager to list of supported DHCP lease dirs. + [Syed] + net: kernel lies about vlans not stealing mac addresses, when they do + [Dimitri John Ledkov] (LP: #1682871) + ds-identify: Check correct path for "latest" config drive + [Daniel Watkins] (LP: #1673637) + doc: Fix example for resolve.conf configuration. + [Jon Grimm] (LP: #1531582) + Fix examples that reference upstream chef repository. + [Jon Grimm] (LP: #1678145) + doc: correct grammar and improve clarity in merging documentation. + [David Tagatac] + doc: Add missing doc link to snap-config module. [Ryan Harper] + snap: allows for creating cloud-init snap [Joshua Powers] + DigitalOcean: assign IPv4ll address to lowest indexed interface. + [Ben Howard] + DigitalOcean: configure all NICs presented in meta-data. [Ben Howard] + Remove (and/or fix) URL shortener references [Jon Grimm] (LP: #1669727) + HACKING.rst: more info on filling out contributors agreement. + util: teach write_file about copy_mode option + [Lars Kellogg-Stedman] (LP: #1644064) + DigitalOcean: bind resolvers to loopback interface. [Ben Howard] + tests: fix AltCloud tests to not rely on blkid (LP: #1636531) + OpenStack: add 'dvs' to the list of physical link types. (LP: #1674946) + Fix bug that resulted in an attempt to rename bonds or vlans. + (LP: #1669860) + tests: update OpenNebula and Digital Ocean to not rely on host + interfaces. + net: in netplan renderer delete known image-builtin content. + (LP: #1675576) + doc: correct grammar in capabilities.rst [David Tagatac] + ds-identify: fix detecting of maas datasource. (LP: #1677710) + netplan: remove debugging prints, add debug logging [Ryan Harper] + ds-identify: do not write None twice to datasource_list. + support resizing partition and rootfs on system booted without + initramfs. [Steve Langasek] (LP: #1677376) + apt_configure: run only when needed. (LP: #1675185) + OpenStack: identify OpenStack by product 'OpenStack Compute'. + (LP: #1675349) + GCE: Search GCE in ds-identify, consider serial number in check. + (LP: #1674861) + Add support for setting hashed passwords [Tore S. Lonoy] (LP: #1570325) + Fix filesystem creation when using "partition: auto" + [Jonathan Ballet] (LP: #1634678) + ConfigDrive: support reading config drive data from /config-drive. + (LP: #1673411) + ds-identify: fix detection of Bigstep datasource. (LP: #1674766) + test: add running of pylint [Joshua Powers] + ds-identify: fix bug where filename expansion was left on. + advertise network config v2 support (NETWORK_CONFIG_V2) in features. + Bigstep: fix bug when executing in python3. [root] + Fix unit test when running in a system deployed with cloud-init. + Bounce network interface for Azure when using the built-in path. + [Brent Baude] (LP: #1674685) + cloudinit.net: add network config v2 parsing and rendering [Ryan Harper] + net: Fix incorrect call to isfile [Joshua Powers] (LP: #1674317) + net: add renderers for automatically selecting the renderer. + doc: fix config drive doc with regard to unpartitioned disks. + (LP: #1673818) + test: Adding integratiron test for password as list [Joshua Powers] + render_network_state: switch arguments around, do not require target + support 'loopback' as a device type. + Integration Testing: improve testcase subclassing [Wesley Wiedenmeier] + gitignore: adding doc/rtd_html [Joshua Powers] + doc: add instructions for running integration tests via tox. + [Joshua Powers] + test: avoid differences in 'date' output due to daylight savings. + Fix chef config module in omnibus install. [Jeremy Melvin] (LP: #1583837) + Add feature flags to cloudinit.version. [Wesley Wiedenmeier] + tox: add a citest environment + Further fix regression to support 'password' for default user. + fix regression when no chpasswd/list was provided. + Support chpasswd/list being a list in addition to a string. + [Sergio Lystopad] (LP: #1665694) + doc: Fix configuration example for cc_set_passwords module. + [Sergio Lystopad] (LP: #1665773) + net: support both ipv4 and ipv6 gateways in sysconfig. + [Lars Kellogg-Stedman] (LP: #1669504) + net: do not raise exception for > 3 nameservers + [Lars Kellogg-Stedman] (LP: #1670052) + ds-identify: report cleanups for config and exit value. (LP: #1669949) + ds-identify: move default setting for Ec2/strict_id to a global. + ds-identify: record not found in cloud.cfg and always add None. + Support warning if the used datasource is not in ds-identify's list. + tools/ds-identify: make report mode write namespaced results. + Move warning functionality to cloudinit/warnings.py + Add profile.d script for showing warnings on login. + Z99-cloud-locale-test.sh: install and make consistent. + tools/ds-identify: look at cloud.cfg when looking for ec2 strict_id. + tools/ds-identify: disable vmware_guest_customization by default. + tools/ds-identify: ovf identify vmware guest customization. + Identify Brightbox as an Ec2 datasource user. (LP: #1661693) + DatasourceEc2: add warning message when not on AWS. + ds-identify: add reading of datasource/Ec2/strict_id + tools/ds-identify: add support for found or maybe contributing config. + tools/ds-identify: read the seed directory on Ec2 + tools/ds-identify: use quotes in local declarations. + tools/ds-identify: fix documentation of policy setting in a comment. + ds-identify: only run once per boot unless --force is given. + flake8: fix flake8 complaints in previous commit. + net: correct errors in cloudinit/net/sysconfig.py + [Lars Kellogg-Stedman] (LP: #1665441) + ec2_utils: fix MetadataLeafDecoder that returned bytes on empty + apply the runtime configuration written by ds-identify. + ds-identify: fix checking for filesystem label (LP: #1663735) + ds-identify: read ds=nocloud properly (LP: #1663723) + support nova-lxd by reading platform from environment of pid 1. + (LP: #1661797) + ds-identify: change aarch64 to use the default for non-dmi systems. + Remove style checking during build and add latest style checks to tox + [Joshua Powers] (LP: #1652329) + code-style: make master pass pycodestyle (2.3.1) cleanly, currently: + [Joshua Powers] + manual_cache_clean: When manually cleaning touch a file in instance dir. + Add tools/ds-identify to identify datasources available. + Fix small typo and change iso-filename for consistency [Robin Naundorf] + Fix eni rendering of multiple IPs per interface + [Ryan Harper] (LP: #1657940) + tools/mock-meta: support python2 or python3 and ipv6 in both. + tests: remove executable bit on test_net, so it runs, and fix it. + tests: No longer monkey patch httpretty for python 3.4.2 + Add 3 ecdsa-sha2-nistp* ssh key types now that they are standardized + [Lars Kellogg-Stedman] (LP: #1658174) + reset httppretty for each test [Lars Kellogg-Stedman] (LP: #1658200) + build: fix running Make on a branch with tags other than master + EC2: Do not cache security credentials on disk + [Andrew Jorgensen] (LP: #1638312) + doc: Fix typos and clarify some aspects of the part-handler + [Erik M. Bray] + doc: add some documentation on OpenStack datasource. + OpenStack: Use timeout and retries from config in get_data. + [Lars Kellogg-Stedman] (LP: #1657130) + Fixed Misc issues related to VMware customization. [Sankar Tanguturi] + Fix minor docs typo: perserve > preserve [Jeremy Bicha] + Use dnf instead of yum when available + [Lars Kellogg-Stedman] (LP: #1647118) + validate-yaml: use python rather than explicitly python3 + Get early logging logged, including failures of cmdline url. - From 0.7.9 + doc: adjust headers in tests documentation for consistency. + pep8: fix issue found in zesty build with pycodestyle. + integration test: initial commit of integration test framework + [Wesley Wiedenmeier] + LICENSE: Allow dual licensing GPL-3 or Apache 2.0 [Jon Grimm] + Fix config order of precedence, putting kernel command line over system. + [Wesley Wiedenmeier] (LP: #1582323) + pep8: whitespace fix + Update the list of valid ssh keys. [Michael Felt] + network: add ENI unit test for statically rendered routes. + set_hostname: avoid erroneously appending domain to fqdn + [Lars Kellogg-Stedman] (LP: #1647910) + doc: change 'nobootwait' to 'nofail' in docs [Anhad Jai Singh] + Replace an expired bit.ly link in code comment. + user-groups: fix bug when groups was provided as string and had spaces + (LP: #1354694) + mounts: use mount -a again to accomplish mounts (LP: #1647708) + CloudSigma: Fix bug where datasource was not loaded in local search. + (LP: #1648380) + when adding a user, strip whitespace from group list [Lars Kellogg-Stedman] + (LP: #1354694) + fix decoding of utf-8 chars in yaml test + Replace usage of sys_netdev_info with read_sys_net (LP: #1625766) + fix problems found in python2.6 test. + OpenStack: extend physical types to include hyperv, hw_veb, vhost_user. + (LP: #1642679) + tests: fix assumptions that expected no eth0 in system. (LP: #1644043) + net/cmdline: Consider ip= or ip6= on command line not only ip= + (LP: #1639930) + Just use file logging by default (LP: #1643990) + Improve formatting for ProcessExecutionError [Wesley Wiedenmeier] + flake8: fix trailing white space + Doc: various documentation fixes [Sean Bright] + cloudinit/config/cc_rh_subscription.py: Remove repos before adding + [Brent Baude] + packages/redhat: fix rpm spec file. + main: set TZ in environment if not already set. [Ryan Harper] + Azure: No longer rely on walinux agent. (LP: #1538522) + disk_setup: Use sectors as unit when formatting MBR disks with sfdisk. + [Daniel Watkins] (LP: #1460715) + Add activate_datasource, for datasource specific code paths. (LP: #1611074) + systemd: cloud-init-local use RequiresMountsFor=/var/lib/cloud + (LP: #1642062) + systemd: cloud-init remove After=systemd-networkd-wait-online + systemd: cloud-init-local change Before basic to sysinit + pep8: fix style errors reported by pycodestyle 2.1.0 + systemd: drop both Wants and After local-fs.target + systemd: networking service adjustments. (LP: #1636912) + systemd: replace Before=basic.target, dbus.target with sysinit.target + (LP: #1629797) + doc: Add documentation on stages of boot. + doc: make the RST files consistently formated and other improvements. + Ec2: fix syntax and tox in previous commit. + Ec2: protect against non-dictionary in block-device-mapping. + doc: fixed example to not overwrite /etc/hosts [Chris Glass] + Doc: fix spelling / typos in ca_certs and scripts_vendor. + pyflakes: fix issue with pyflakes 1.3 found in ubuntu zesty-proposed. + net/cmdline: Further adjustments to ipv6 support [LaMont Jones] + (LP: #1621615) + Add coverage dependency to bddeb to fix package build. + doc: improve HACKING.rst file + dmidecode: Allow dmidecode to be used on aarch64 [Robert Schweikert] + AliYun: Add new datasource for Ali-Cloud ECS [kaihuan.pkh] + Add coverage collection to tox unit tests. [Joshua Powers] + cc_users_groups: fix remaing call to ds.normalize_user_groups [Ryan Harper] + disk-config: udev settle after partitioning in gpt format. (LP: #1626243) + unittests: do not read system /etc/cloud/cloud.cfg.d (LP: #1635350) + Add documentation for logging features. [Wesley Wiedenmeier] + Add support for snap create-user on Ubuntu Core images. [Ryan Harper] + Fix sshd restarts for rhel distros. [Jim Gorz] + OpenNebula: replace 'ip' parsing with cloudinit.net usage. + Fix python2.6 things found running in centos 6. + Move user/group functions to new ug_util file + DigitalOcean: enable usage of data source by default. + update Gentoo initscripts to run in the correct order [Matthew Thode] + MAAS: improve the main of datasource to look at kernel cmdline config. + tests: silence the Cheetah UserWarning about NameMapper C version. + systemd: Run cloud-init.service Before dbus.socket not dbus.target + [Daniel Watkins] (LP: #1629797) + systemd: run cloud-init.service Before dbus.service (LP: #1629797) + unittests: fix use of mock 2.0 'assert_called' when running make check + [Ryan Harper] + Improve module documentation and doc cleanup. [Wesley Wiedenmeier] + lxd: Update network config for LXD 2.3 [Stéphane Graber] + DigitalOcean: use meta-data for network configruation [Ben Howard] + ntp: move to run after apt configuration (LP: #1628337) + Decode unicode types in decode_binary [Robert Schweikert] + systemd: Ensure that cloud-init-local happens before NetworkManager + Allow ephemeral drive to be unpartitioned [Paul Meyer] + subp: add 'update_env' argument + net: support reading ipv6 dhcp config from initramfs [LaMont Jones] + (LP: #1621615, #1621507) + Adjust mounts and disk configuration for systemd. (LP: #1611074) + dmidecode: run dmidecode only on i?86 or x86_64 arch. [Robert Schweikert] + systemd: put cloud-init.target After multi-user.target (LP: #1623868)- add skip-argparse-on-python3.patch: don't depend on argparse for python3, it is builtin there (as of python 3.2, so the patch should be good enough)- python_sitelib does not seem to exist for non single-spec python modules, use python2_sitelib and python3_sitelib instead.- Drop python-cheetah as requirement + Cheetah is no maintained and cloud-init switches to Jinja2 as templating engine if Cheetah is not available - Drop argparse as dependency for Py3 build + argparse is built into Python- Modify cloud-init-finalbeforelogin.patch (bsc#1047363) + Support user processes running in coud-init-final to consume a large number of threads. - Modify cloud-init-service.patch (bsc#1055649) + Start after dbus.service, needed by hotnamectl - Modify cloud-init-handle-not-implemented-query.patch + print needs () for Python3 - Add cloud-init-spceandtabs-clean.patch + Fix inconsistent use of spaces and tabs in various files - Modify suseIntegratedHandler.patch + Fix mode setting passed to function for file writing - Set packag up to build with Python 3 for distros later than SLE 12- On Tumbleweed we need net-tools-deprecated to setup the network- add cloud-init-net-sysconfig-lp1665441.patch (lp#1665441)- Don't call insserv if we use systemd- Do not set mount options for ephemeral drive, use the defaults that are built into the code (bsc#930524)- Update fix-default-systemd-unit-dir.patch (bsc#1024709) + based on work by Thomas Abraham - Add cloud-init-handle-not-implemented-query.patch (boo#1017832)- Require net-tools for network setup- Configuration split (bsc#1016160)- fix syntax error in datasource LocalDisk (fix got somehow lost)- adjust license (as of 0.7.8 AGPL-3.0 was added)- fix unintentional edit in last change again- Modify suseIntegratedHandler.patch (bsc#998103) + Store previous hostname so update_hostname module does not overwrite manually set hostnames - cloud-init-python26.patch + Compatibility fixes with Python 2.6- fix the cloud.cfg split, cyclic non-versioned dependencies are bad. also fix changelog entries- add datasourceLocalDisk.patch: * Fix datasourceLocalDisk module in case directory exists but is empty.- Add Conflicts for otherproviders of cloud-init-config. - Add require for python-six (used by several modules)- Add LocalDisk datasource datasourceLocalDisk.patch [FATE#321107]- Reworked zypp_add_repos.diff to behave similar to zypper ar- Move cloud.cfg into an own sub-package, so that we can have a product specific version. [FATE#322039]- Add zypp_add_repos.diff to support repos for zypper [FATE#322038]- Modify suseIntegratedHandler.patch (bsc#1007529) + Fall back to the previous method of writing network information We have to work out upstream how to have distro specific renderer for sysconfig- Add cloud-init-sysconfig-netpathfix.patch (bsc#1007529) + Fix the default path for network scripts - Cosmetic changes to suseIntegratedHandler.patch- Update cloud-init-no-dmidecode-on-ppc64.patch (bsc#1005616) + aarch64 does support dmidecode- Update cloud-init-service.patch + Break another cycle this one in -final- Update cloud-init-service.patch + Better match upstream intend Ubuntu networking.service is equivalent to SUSE wicked, thus we cannot translate networking to network, but need to translate it to wicked- Update cloud-init-service.patch + We need the following order: - something brings networking fully up (in our case wicked) - cloud-init.service runs - network-online.target is reached- Update cloud-init-service.patch + The network must be up an running in order to get ssh key injected- Update cloud-init-service.patch + Had self reference and thus cloud-init.service was never executed which caused ssh key loading failure- Do not own /lib/udev to not conflict with udev rpm- Forward port suseIntegratedHandler.patch + Implement new abstract interfaces + Some minor implementation fixes- Appease the build service, differences between OBS and IBS, and own the directories- Fix package, udev rules should be in /usr for distros after SLES 11- add cloud-init-digital-ocean-datasource-enable-by-default.patch, cloud-init-digital-ocean-datasource.patch: add DigitalOcean support - run tests on build- Add cloud-init-handle-no-carrier.patch (boo#1003977) - Handle the exception when attempting to detect if the network device is up when it is not- Update cloud-init-service.patch (boo#999942) - Backport upstream commits 3705bb5964a and 6e45ffb21e96- Decoding error (boo#998843) + Added cloud-init-fix-unicode-handling-binarydecode.patch - Fix dependencies, depends on oauthlib instead of oauth- Fix dataSourceOpenNebula.patch, missing closing paren (boo#998836)- Fix typo in cloud-init-service.patch- update to version 0.7.8 (bsc#998103) + added cloud-init-net-eni.patch based on work by eblock - Using config-drive instead of metadata failed because the network translation to Ubuntu-style did not return gateway information to opensuse.py + added cloud-init-service.patch based on work by eblock - The service file cloud-init.service referenced networking.service which on SUSE is network.service + remove no_logic_change.patch included in updated upstream source + forward port suseIntegratedHandler.patch + forward port setupSUSEsysVInit.diff + forward port cloud-init-no-dmidecode-on-ppc64.patch + foward port dataSourceOpenNebula.patch + forward port fix-default-systemd-unit-dir.patch + forward port cloud-init-finalbeforelogin.patch + forward port cloud-init-python2-sigpipe.patch + SmartOS: more improvements for network configuration + add ntp config module [Ryan Harper] + ChangeLog: update changelog for previous commit. + Add distro tags on config modules that should have it. + NoCloud: fix bug providing network-interfaces via meta-data. (LP: 1577982) + ConfigDrive: recognize 'tap' as a link type. (LP: #1610784) + Upgrade to a configobj package new enough to work + MAAS: add vendor-data support (LP: #1612313) + DigitalOcean: use the v1.json endpoint [Ben Howard] + Get Azure endpoint server from DHCP client [Brent Baude] + Apt: add new apt configuration format [Christian Ehrhardt] + distros: fix get_primary_arch method use of os.uname [Andrew Jorgensen] + Fix Gentoo net config generation [Matthew Thode] + Minor cleanups to atomic_helper and add unit tests. + azure dhclient-hook cleanups + network: fix get_interface_mac for bond slave, read_sys_net for ENOTDIR + Generate a dummy bond name for OpenStack (LP: #1605749) + add install option for openrc [Matthew Thode] + Add a module that can configure spacewalk. + python2.6: fix dict comprehension usage in _lsb_release. + apt-config: allow both old and new format to be present. [Christian Ehrhardt] (LP: #1616831) + bddeb: add --release flag to specify the release in changelog. + salt minion: update default pki directory for newer salt minion. (LP: #1609899) + Fix typo in default keys for phone_home [Roland Sommer] (LP: #1607810) + apt config conversion: treat empty string as not provided. (LP: #1621180) + tests: cleanup tempdirs in apt_source tests + systemd: Better support package and upgrade. (LP: #1576692, #1621336) + remove obsolete .bzrignore + DataSourceOVF: fix user-data as base64 with python3 (LP: #1619394) + Allow link type of null in network_data.json [Jon Grimm] (LP: #1621968) from 0.7.7: + Digital Ocean: add datasource for Digital Ocean. [Neal Shrader] + expose uses_systemd as a distro function (fix rhel7) + fix broken 'output' config (LP: #1387340) + begin adding cloud config module docs to config modules (LP: #1383510) + retain trailing eol from template files (sources.list) when rendered with jinja (LP: #1355343) + Only use datafiles and initsys addon outside virtualenvs + Fix the digital ocean test case on python 2.6 + Increase the usefulness, robustness, configurability of the chef module so that it is more useful, more documented and better for users + Fix how '=' signs are not handled that well in ssh_utils (LP: #1391303) + Be more tolerant of ssh keys passed into 'ssh_authorized_keys'; allowing for list, tuple, set, dict, string types and warning on other unexpected types + Update to use newer/better OMNIBUS_URL for chef module + GCE: Allow base64 encoded user-data (LP: #1404311) [Wayne Witzell III] + GCE: use short hostname rather than fqdn (LP: #1383794) [Ben Howard] + systemd: make init stage run before login prompts shown [Steve Langasek] + hostname: on first boot apply hostname to be same as is written for persistent hostname. (LP: #1246485) + remove usage of dmidecode on linux in favor of /sys interface [Ben Howard] + python3 support [Barry Warsaw, Daniel Watkins, Josh Harlow] (LP: #1247132) + support managing gpt partitions in disk config [Daniel Watkins] + Azure: utilze gpt support for ephemeral formating [Daniel Watkins] + CloudStack: support fetching password from virtual router [Daniel Watkins] (LP: #1422388) + readurl, read_file_or_url returns bytes, user must convert as necessary + SmartOS: use v2 metadata service (LP: #1436417) [Daniel Watkins] + NoCloud: fix local datasource claiming found without explicit dsmode + Snappy: add support for installing snappy packages and configuring. + systemd: use network-online instead of network.target (LP: #1440180) [Steve Langasek] + Add functionality to fixate the uid of a newly added user. + Don't overwrite the hostname if the user has changed it after we set it. + GCE datasource does not handle instance ssh keys (LP: 1403617) + sysvinit: make cloud-init-local run before network (LP: #1275098) [Surojit Pathak] + Azure: do not re-set hostname if user has changed it (LP: #1375252) + Fix exception when running with no arguments on Python 3. [Daniel Watkins] + Centos: detect/expect use of systemd on centos 7. [Brian Rak] + Azure: remove dependency on walinux-agent [Daniel Watkins] + EC2: know about eu-central-1 availability-zone (LP: #1456684) + Azure: remove password from on-disk ovf-env.xml (LP: #1443311) [Ben Howard] + Doc: include information on user-data in OpenStack [Daniel Watkins] + Systemd: check for systemd using sd_booted symantics (LP: #1461201) [Lars Kellogg-Stedman] + Add an rh_subscription module to handle registration of Red Hat instances. [Brent Baude] + cc_apt_configure: fix importing keys under python3 (LP: #1463373) + cc_growpart: fix specification of 'devices' list (LP: #1465436) + CloudStack: fix password setting on cloudstack > 4.5.1 (LP: #1464253) + GCE: fix determination of availability zone (LP: #1470880) + ssh: generate ed25519 host keys (LP: #1461242) + distro mirrors: provide datasource to mirror selection code to support GCE regional mirrors. (LP: #1470890) + add udev rules that identify ephemeral device on Azure (LP: #1411582) + _read_dmi_syspath: fix bad log message causing unintended exception + rsyslog: add additional configuration mode (LP: #1478103) + status_wrapper in main: fix use of print_exc when handling exception + reporting: add reporting module for web hook or logging of events. + NoCloud: fix consumption of vendordata (LP: #1493453) + power_state_change: support 'condition' to disable or enable poweroff + ubuntu fan: support for config and installing of ubuntu fan (LP: #1504604) + Azure: support extracting SSH key values from ovf-env.xml (LP: #1506244) + AltCloud: fix call to udevadm settle (LP: #1507526) + Ubuntu templates: modify sources.list template to provide same sources as install from server or desktop ISO. (LP: #1177432) + cc_mounts: use 'nofail' if system uses systemd. (LP: #1514485) + Azure: get instance id from dmi instead of SharedConfig (LP: #1506187) + systemd/power_state: fix power_state to work even if cloud-final exited non-zero (LP: #1449318) + SmartOS: Add support for Joyent LX-Brand Zones (LP: #1540965) [Robert C Jennings] + systemd: support using systemd-detect-virt to detect container (LP: #1539016) [Martin Pitt] + docs: fix lock_passwd documentation [Robert C Jennings] + Azure: Handle escaped quotes in WALinuxAgentShim.find_endpoint. (LP: #1488891) [Dan Watkins] + lxd: add support for setting up lxd using 'lxd init' (LP: #1522879) + Add Image Customization Parser for VMware vSphere Hypervisor Support. [Sankar Tanguturi] + timezone: use a symlink rather than copy for /etc/localtime unless it is already a file (LP: #1543025). + Enable password changing via a hashed string [Alex Sirbu] + Added BigStep datasource [Alex Sirbu] + No longer run pollinate in seed_random (LP: #1554152) + groups: add defalt user to 'lxd' group. Create groups listed for a user if they do not exist. (LP: #1539317) + dmi data: fix failure of reading dmi data for unset dmi values + doc: mention label for nocloud datasource must be 'cidata' [Peter Hurley] + ssh_pwauth: fix module to support 'unchanged' and match behavior described in documentation [Chris Cosby] + quickly check to see if the previous instance id is still valid to avoid dependency on network metadata service on every boot (LP: #1553815) + support network configuration in cloud-init --local with support device naming via systemd.link. + FreeBSD: add support for installing packages, setting password and timezone. Change default user to 'freebsd'. [Ben Arblaster] + locale: list unsupported environment settings in warning (LP: #1558069) + disk_setup: correctly send --force to mkfs on block devices (LP: #1548772) + chef: fix chef install from gems (LP: #1553345) + systemd: do not specify After of obsolete syslog.target (LP: #1536964) + centos: Ensure that resolve conf object is written as a str (LP: #1479988) + chef: straighten out validation_cert and validation_key (LP: #1568940) + phone_home: allow usage of fqdn (LP: #1566824) [Ollie Armstrong] + cloudstack: Only use DHCPv4 lease files as a datasource (LP: #1576273) [Wido den Hollander] + Paths: fix instance path if datasource's id has a '/'. (LP: #1575938) [Robert Jennings] + Ec2: do not retry requests for user-data path on 404. + settings on the kernel command line (cc:) override all local settings rather than only those in /etc/cloud/cloud.cfg (LP: #1582323) + Improve merging documentation [Daniel Watkins] + apt sources: support inserting key/key-id only, custom sources.list, long gpg key fingerprints with spaces, and dictionary format (LP: #1574113) + SmartOS: datasource improvements and support for metadata service providing networking information. + Datasources: centrally handle 'dsmode' and no longer require datasources to "pass" if modules_init should be executed with network access. + ConfigDrive: improved support for networking information from a network_data.json or older interfaces formated network_config. + Change missing Cheetah log warning to debug [Andrew Jorgensen] + Remove trailing dot from GCE metadata URL (LP: #1581200) [Phil Roche] + support network rendering to sysconfig (for centos and RHEL) + write_files: if no permissions are given, just use default without warn. + user_data: fix error when user-data is not utf-8 decodable (LP: #1532072) + fix mcollective module with python3 (LP: #1597699) [Sergii Golovatiuk]- Add cloud-init-python2-sigpipe.patch (bsc#903449) + Restore SIGPIPE default handler when executing shell scripts- Add cloud-init-finalbeforelogin.patch (bsc#978048) + Ordering issue, avoid login prompt before cloud-init is finished- Update suseIntegratedHandler.patch (bsc#971275) + Properly handle the package_upgrade configuration option- Add dependency on jinja2 (bsc#948995,bsc#948996)- Add no_logic_change.patch to undo upstream logic changes introduced during style clean up- Properly write the routes file for static networks (bnc#920190) + modify suseIntegratedHandler.patch - Remove suseSetInitCmd.patch + is now integrated with suseIntegratedHandler.patch- pmtools only exist on Intel architecture (bnc#928552)- update to 0.7.6: - open 0.7.6 - Enable vendordata on CloudSigma datasource (LP: #1303986) - Poll on /dev/ttyS1 in CloudSigma datasource only if dmidecode says we're running on cloudsigma (LP: #1316475) [Kiril Vladimiroff] - SmartOS test: do not require existance of /dev/ttyS1. [LP: #1316597] - doc: fix user-groups doc to reference plural ssh-authorized-keys (LP: #1327065) [Joern Heissler] - fix 'make test' in python 2.6 - support jinja2 as a templating engine. Drop the hard requirement on cheetah. This helps in python3 effort. (LP: #1219223) - change install path for systemd files to /lib/systemd/system [Dimitri John Ledkov] - change trunk debian packaging to use pybuild and drop cdbs. [Dimitri John Ledkov] - SeLinuxGuard: remove invalid check that looked for stat.st_mode in os.lstat. - do not write comments in /etc/timezone (LP: #1341710) - ubuntu: provide 'ubuntu-init-switch' module to aid in systemd testing. - status/result json: remove 'end' entry which was always null - systemd: make cloud-init block ssh service startup to guarantee keys are generated. [Jordan Evans] (LP: #1333920) - default settings: fix typo resulting in OpenStack and GCE not working unless config explicitly provided (LP: #1329583) [Garrett Holmstrom]) - fix rendering resolv.conf if no 'options' are provided (LP: #1328953) - docs: fix disk-setup to reference 'table_type' [Rail Aliiev] (LP: #1313114) - ssh_authkey_fingerprints: fix bug that prevented disabling the module. (LP: #1340903) [Patrick Lucas] - no longer use pylint as a checker, fix pep8 [Jay Faulkner]. - Openstack: do not load some urls twice. - FreeBsd: fix initscripts and add working config file [Harm Weites] - Datasource: fix broken logic to provide hostname if datasource does not provide one - Improved and less verbose logging. - resizefs: first check that device is writable. - configdrive: fix reading of vendor data to be like metadata service reader. [Jay Faulkner] - resizefs: fix broken background resizing [Jay Faulkner] (LP: #1338614) - cc_grub_dpkg: fix EC2 hvm instances to avoid prompt on grub update. (LP: #1336855) - FreeBsd: support config drive datasource [Joseph bajin] - cc_mounts: support creating a swap file - Refresh addopenSUSEBase.patch - Refresh setupSUSEsysVInit.diff - Removed cloudinit-datasources.patch. Applied upstream - BuildRequires pkg-config. Needed to find correct systemd unit dir. - Add fix-default-systemd-unit-dir.patch . Use better default for systemd system unit dir.- Fix (bnc#919305 & bnc#918952) - Properly handle persistent network device names for OpenNebula + add dataSourceOpenNebula.patch - Properly set up network mode if interface config file + modified suseIntegratedHandler.patch- Require e2fsprogs for filesystem resizing- Remove Requires for python-yaml . There's already the right requirement for python-PyYAML- fixed syntax error in dmidecode on ppc64 patch (bnc#914920)/bin/shh04-ch2a 1703255410  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABC>>FGH>JKLM>OPQRSTUUUXYZ[\]^_`abcdefghijk>UUopq>stuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijmnopqrstuvwxyz23.3-150100.8.71.123.3-150100.8.71.123.3-150100.8.71.1         !!""""!!! ##$$$$$$$$$$$$$$$$$$#########%%&&&%%######### ''((('' ))))))))))))))))))))))))))))))))*******************************)++,,,,,++++)--...........----------//0/11222222222222221111111111111- 344444456789::;;;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR8dR=Q25outf-8878880bdb93d1f0b3dd75c08d80bb5811f7308338300e09ef769f65431905d06?7zXZ !t/]"k%%1ƷmO8uWV/ݷumy X́xS5#UFςH-NM[!o֔6MvJ6Tc˭H 0Þ##f 3>5Ix<툉YNQG~{XUɆT6UDh{@Sy[٘·k$7r=0.Dm}@ ,tX[E`,k/c/q`3`[A?t| ^~sY Yb|xV7H ׾/:r6a~਻m9 &ɧ%䞄FO4UoI*p Ot<8%4wKTE.+v=%U YZVQ솁7"SyaaoЩ"شO F6%EOxŴ M D.pܷ%;,޹t%!Y9Ĺ+$o-Ej>4p\7wc+7f@J /6#+rgn@bSic-d~,Mujp}4<6}cJ.wOG'S9Rkefm/-T ?B=:tQm,NjP2X'i6e52pE"b [ )+^se \>Oz8%iU4ib{|I;:5︅XیU7Ƀʨ8lF5ጁϣxLQI0A#nȅInǩAa.rRGl&}Ө3l3bp5 [m!w|+nT}v ,DaU}#Wr/&痠HJcٯ!#crY'*5y. -a]IT<5=$8Rt l/~5VivѢ9 *ۊ04 }wrtnmdޮ#'15XS1Hd֡`/(A*$S

>ђ@sW!tLqQ~ "r%o-bdNR?|JdK*p/%; B`| wQq AXv*r*z^?.M>Ah,axP'x'=Ě$к6UyeG-'?,Yn856$թ_   $ں"|Żtr>'~-\,vdp)*g (n\}Homo Xu(I`R3e*8]D"͗|M 2΃!!=Sdu2*j ce@#1 ш'OC3CsX~ Z}3S "LUX#ĖUVM}du 5g| {3:N,OtxOeqr)?'71,lV[ʥԵ{ϭIlW-媔Hk]НL9xo1N)s留jns7CCnzH ihɏ:xPkYwۇ-O \/L'd*3Rx6/RDY][J8 jb"]"!N]qo!X+[ҁjlbH҃+ee+23^S`x{n'.k 5B9v z頝{en.|w:ǚnp> Dљ`j})>f3т-IYBby(H CKȟ8{k!ω8n;~TPQXN?{;-8{<EW{)hP\\rK0tD,*o*$sBͅvT+/\ 2WuUdV(O 7&:Ɛ wwfHdj:tV 67k2]g Cs.ْ9jYiɄ1~ ,Q<>@[!ٞJ5!13}& _r_쨤ƹH"00"^uC6OPvs3ʲG6+=V58ֲa4!RUlKn%"?so~ɞJZc {ZzȓnPO  1M7epCɊX .<;] : {8=,j+g(<]9ʍw&wV\SQyAkn)0)Ggo 3޷A/p0|xYC!G_ E\~vпWR3` 0ټ9df\OTg^)5-4ռ5 %rcL/덄/S^JcAHnH;G٠ Hx;1.4uk.FiwvͅX۬&VXjd/[[,!~Z h"rKP+m ,b!R~+IˡDmVBXzþ| ף|IDWHMWwEHiD @Q[g ãjGs=NQ-gWvkEzu :`k9>@qNAh%,-swlj K%yt{=E^e^/? puu-kE@1]68;QĤr ܞ)͏pGZ^;g̤/(l fܮX7~U/`T` 9 6겴2V-$,pW||6>@3"TKw!n!^*6*d[yzTPCP@k˫ܠ P -ļcEA\f وG|1g"fc}M#sQ۩/N$ѝm;xՋ$)'`xV%E@ ?eխXxP=a5֪t4 :+_@%b|QZ|r@ɡ` EΕb$xZ(G߮Pм)FU1zqLU0_Ίw#LXfTz͠tn#:2%ڱ+崅CrslYRwFfqyCDsHxդKgFk\-x? d h7z. ]#;?/<p=:hGE%ֱ򙆦G1%[9I>.<ɺ?9ΨY|oZPݻCiVw!P͚tJ4YS0n}1Ri: ֭?@Zz ZRb_XfU eM}+޻D^Ombso_ R 56\ot˙OOzx })0$a̮l;;_/^n)*G|s<1q^O-b7n>gG&G:S$8-vxwڭ2E_se[N{9(NdBx^iV /E;DsIK{yQ;~k{Kz1APmw0.Ps\@]˗Ѝr1|M`7obfujvXlj!<1&>ӽrB!0#&lg{%N%C4Dk Y_3D &vӌdd"78ꘄv ,AzR}_]9vt| 3 ZQk봪֬c#a 6ҊAV$.k?>oTSGFnx`,dxDNd5Nv1q ~gJyyFX)eZF[mNe 3q P/v>OY:a5 n -ۓsOR/ zpkYq+Ȃ0[<i~' p%V{WZ_{4B3pch4!vԀa+&e_SN(i%W3ZL?Qu{břR)}s,]~6ˀMcO<zcxB]ZfW@Qpfd0ot'ul5ҶEL@.,\Ҳ~5'FNjʩ; }Hؿi,THn;7@ "6qbqO*5ѕa) M9&7[{*H؈YnS=+E%+j}d&Љ(ygU_nLzz|^ B]IwYV98-)({Xl 4TL]ϚÜ@g4s0Qg,|Gu5.nTu.B9K~rWfi[J*Fe~ [+ ҥ6I7Uݯ1+G`B-V,~C1 sˍ{4807d5VN&tL!s={m"lư}nD0 7D%G>RMz,wsYv`ih/9NM\/nhLBm+hTc EĜfT\\xBc>i݀r 0e! r"+P@@G#5 俑c?sd,пEc̶~zh^ޗCVΏeP9 $):E&j)iNǪ&qpGYL#Z*aYΡ3ycx|HJ[i=jTH97< z/?s@J9ɐ ?4|D &4+mǮg?UU<ʦ=sEQeT&Qhqo tdeJm,MyTNT-$ՠ#Z \gsit_+F7^sp?q^9hw]3=|& [ORNǨ 4a1*1vYѾaP{Uz KK,C8'2z)vc.##[.F(pmqu@ujC**eIwd]d!YSЄsN⹰3*eTW!/[-4.e" mr;N`LxdH -q|1Xq~)| YџVS*)-w@{To47GE>xMp, V&c:sdJof3CKlcTDH8V,t:`moY M3Ύvn6҅+TM@ʰW/ a] 5h?;_!rCȥ69C 9,U34CEfvQ¤0X3wsPjx`e` Y/nqEVC{tq";Lmya$m@cV, 3!̇5FLå8FQ$:p_mSղgfd1?3gboז"?FƲcaUq5s׫ԦTLI~-b2S:7+ӂi y9)O3\D<#(<m4ե&tfًWD,'^ysHuOęOuKenZA绕'6mNҩNكh\o~'.#F}F]wHpI2 &UKX %ky#8̛tb;=@a@X3\^t$tK#xY`rUQ]V+u:W^Na)K{KɐRZL;%0l-j~Qت% uX@ʩW8|O@i)nX0r@cm!QT]8?q$JGq?2D5 ˌ{#tGYy޲0qjખ ߳cWnnB 1EP :wφG0W);lT:+K,4L|y,NAy蘿|UTk =$[@ѐDD뱁?H{l1u Œ428BX/|?*8୧+x.ZnxTTQsbCA*`5*Q/6Y#>33gch&@ܨHȿ6RZ ؁!-ReQfm1Ai `M/w|.3u:}bk{)J]v*h Y¶OIaʞA'ݾPߌ[RB}+&a/Epii?xB4xJѪ!?E™"bUV`v. wbC ނqh4]>r(ZNuN(4\jTGe03/JwWO|#nqK5Kt]zBr1ׇvﲐpsVyvkA"X;w["Y? wN.1.${g2D B!P : ?:Ha&b;WA7\n"}h^4 E]wƽKI 7}i;̡IzN9v#4J墝IpHBtK8Iz:gthj8_&Ah$ /1em1z=P eqVϩzYUFfr`5n>hLpCS.̛."+o~eUKC2&9YI tRH>zdipU!Rf77+n E}j6OBU-ٴ z@]D#ɋUl?0rJ0E <'sPnO|e:fk9 !6䣚fob-Y-ϋ$0~!,ҽ(60N e&ܕUb g{`0jznkqзT! Vo5i͏&ΏG SZ%OsӇ$@fw?&=w<p6~$Ug' Ͼ 7k>pn$v1߮6DN)lH^'IMV'08쯯e<7!>X"*Ȳmzg>MKKWQPs#݅~ WlZZ}S3xV1=hL v88bwm"?kW *M!cA7yrʟ!g'5F 7yr*)e Z4;WD[a@CHJ5^qaYgzubc#a V # o~V]DEAhu576,~ھH6h:xZkxK)t꯷y&5xlk`PvB9XHYuعz+ۍ{K`3gӢ?< FyLq= WoDdz qk=MK6PJ#z{E07r:eA PL6~\u)t+SDN]5"@\m M\zٵ2Ut׍oq'pM5zxi"RXФ’{D\Z$Ʃ`*-24_f~Cf(_! ڜd+X5>=02@8E .U]'w&׋2́tlۓ{PIЎP`%4 ^;H/x X-kl\& gٞأ!.}'O_DH; %,~8}&OوO9F+T~,h(1^~<ŸDi[h𢂒Z{LkQS= Ekp\ǽ@Fkz?$t-EmRlSxwYPhq,$t$; \9:#9$JF>uW4.f>cD~ 4Cz{Mef%{j- ,*N0:NQH3èi6/x1iuϣmkqqYw_W4];3T‰>v! @/V E FcJ8ɼYGC2VXXD[ݙ'`=uEؤ>/iE#Ͳ X0d't3ImP.$8r{Lw0p0?VyR˷|NE('ڃ'Yn~*6F$1wˡsYs5Ff"6eTd)KB0I ܨ.s Ӑ!UY.36z$Uf~Xvl:ߪgL)^(\WW%$]ZvFDnYv)`&YAϟ0Z2ɿ\&wj3Sq/EI!0<F u(vףmI@Rh[+ߺGDnN]el @e'v,ȍ.4 a>괪7,(T4]tсmWuQBPƭ{83\Q Z\A"U oh.+daM\eK_kuTdqsT1j2̦f]nYcڒ'trAckkX8 t㋚[!Ig1cWH0eg,ീl۰,[ \dLp"ojb(%;g7> ۃvP 4%{װPA.%hnFaUĭxv_CdY/ Ihxwe#P!6k;SSٞ (,t:8nؼpdS"gЈP?ǕDFOK 2ip[bڦ&JCOdb'\+:=4fbkj|&@Βcg4< 6@≖d ,R=> E8I ,q+A҆LJ#dg1"6tV bP2 ߆ǖ5h>0- 6{Gk޻ܴ/ubz??D~.WPz xbKL%(Gv U fNϘicoa<|$;߱ȇ{Y ؛(UkR#EEշ\jyi%sO[ 6M;WnnpHym,P=:p `-dRu9_ٕ탆?3hG0 Q˘Q4csJYx&"5=e 3lʸhfQOOy$KzFLiKˆ xl_@%МmԷ3`~aƧ_e od[4yWnV*y1JEL,}~s3/e&ɛ%T\s0dp|AOT?kH` S[Ԁx,TdHbcqO][wSUstP\l~Uj{)V;{h1gӒƑ`Ncc eW1bR(H'a\Ti#!5>̩bUCaX ](u,s=#ɵ ,("{48ß[ v"D持n@ݒ@ -#u[Ppq` X8FN^GJQr2r@ƟVºMR壁@̰>Q<X,n̦q$Ֆd ˌ3B֩Se\[QgW|x* PU 䈎\v&jڍƒtRƻ`,MۦzBp$g!ȕWU_'6r./{ C02re@QלqB5hj.2w+aK}# \>(_pCSuOG!$&J  Ҋ΢-F@#vT )$u*˸/}{9u31k&U!Mm:ev}4LOn4"N2nkPTyƺ˄-vanP)_L#wƣPM M}\=nV24Hh@C#2+J#>4c k$%AF*XbY1weŒ:FS*4`fgǝ>DB$p&exAJG5'Tt'A^Pa [W;F8>Fq`@gghqF͉ @0&QͯC[yma HE2i>Vϟ({^jHI })# Q11>D[bbM;.9'lJSjBK ,4ɜC`xd|ٜ $-XUK-rP gɸwihMo #e 7lli9۱ }j(jJyyYJ 0^4m]Slցe;zXY+HEX)7Qz&AD'蝮TS=~.$Pno)Ӂ|p*c_žfDr}npN ^[ q'0ǽ2oTƝLE-b+8NgFNuм[#yV>\ؐz*Lui]]/׸j6(nZaN]zV>q0&G5OiRg^;>P#WXXYxpoj䔙b΄aM`LFՔyb}ȇZ7+HHgH~I>k_ Q(IьȂ$Ehژms( L܆U'jwFeA$WdK;3ѣxA@lvWg0")#^;Ҁ\R%#"ϿiWckOՔ"՗̶h2Uou0)8ԱqxOz|}Pb]S`R{xeS~99)2 1:mc6Uゞq`hߕ~:2E^9_Pԯ"}S9GculŸ-Q??"f1{ r":tQξ:#.bS˔uە:H0̼PV&wx8.)gPO}?3wa8 L]":a᭸蕤]m[>IFO]Wp•GIu,m*U< ~+\_Q;xUijzխb\iZQvJHcwG6}4Y`돡E$fzBs,s$$+xKY| JJIu]^_f 06BۙJV_C8j)Fq]f^$$$JPM>jn0|wknNٲ=W B}d*9n]ͳOi$^YHXvaXx^B"k7?~LM=vI1g_rEm XL$ߓ5ތ0=Oћ [z`5ZYk~mD%B>-8i.ېSdUԈN{4@[4O:ȑOBY|ƞ]Ioijf pI8Z-F r]` rPf\Txc'k$HwEMbu$yG[5kO ܠo#`DP|aV$Jodz=+g[xJy lyp~ K+aTg2j'h̗ȐX16H ?ƠkcVCk9n+KiS[}T~+-S{T@B!bͅKa˾h Q_(e!MS 1<<( &.Ίs@vUoD,+zYȶzQbhŦӖ1æfil&t2q#J Z]$Kwxc|.QSj.ۡyB_ ĠPp܂>a1'Æ\5D WfDɑR^h3 YA&[xo̵$z︱  |p QHM:]bļa#^bfY 5{ͅJNn~qīo_8Fm"U1@+>qR{;e8kDY/V9w&6aCY+ 76{ztVu=QoW4iU8oPsJuЀؗyfKiT_1T &dh.|8 \BC v^S|)NXyMG: "DQ;ߺQ߿pDPU?+{ @S{hOC%Qt[>]ߔ46 t f}PUHqZ EPYU,a>^eaiMzq>UDˎ7Y÷fQ.Y: 8ǐK^k7T$xom2=7m9m_ [&iP7jdzc=?rtW:IsV/uUt8s@% VSX>Dk/}Ҩ?Ӑf#e-n!MWrsPHli(Wܹ'^ٹ hSfK[J*k>lNgJ-dAKY pQZ\w&eWs-Ƀڏ˨RjoIvHmI JՕ3+s4ZV&V4) GgS8ba(OS./ɃV)L4tC kڜP;:`]LmRr VΉK/$dM^J\ӮvlBmF'҇Ɂ E% ډl8_<j+/v1= eV8UbyXl(}X+l^iB9Hp\71u&K679& $?D@;1 ieto6hbrkCc,9՛P~̃3ta6G')Fr즡 ;OF`'nMh~~oÌyz^P%~sN6< ^Qcj\8 GHTPy'O,XƜV~ڋocb'H VU'`Wldწ1)g:eZ~RίUwe3ASi,7F5pݥڔu8ө ~9 w:iOfkH[ybj*EeƵ Y!4{J' t4(r2.' 3r}&eCc QfO Z+!0o[ilJ;^b-r pnFջCSOg-PQXo%^FChNDLDqjR؞.@$ a s @/ّxRJHF^QNx73}0pڛ`q"wrYu5l#qNDQHUYVM}NjIc]~IiA 6Ax3H6ܵ4rM88t=4 ⎱pEgv PP t#k+d3Z]71b|ߛ.x;>A8W:g&"ɴ:T+jv} |()Mu&\ibQ-{AtLf/78510N2H+2f[SqT 2/צ㫾k[a.nk\s2*k {f&IjΓBymE_|@\EOJb0QWW+'4?(Uc?p(z=V#k%_kfчdG8i5w&>p´YYdРjߠ&}$|1mRˋWMJ-M},`#PiIU4JNޏbHQ b`5i)zVF)&}^y"xE CQXig 7B?&ln00#ͷ~wv>4ڎ,B)\%4Y{0CJ> A(I Y?3 1SC1`|SPt$/|hǨm†VjWw*WwFZch|"*hhN*П9> # s9zS"xraD ɀv2G==#DAu Ff)<s+[v4 WE*\FGωO avxrB{([ l1k{ qz\e!9nrs \y_Q0t4]d6V"glJQ8r7S0g]Ancs+Մ=7g1Q8OwW)c^VVì79r? :pENp%& I~{FdH%!:,sl m:guOY[DquTGVEywIe΃%&^Lrܷ0qZxkH;T[7ӲҏixI\"wU``P>*ZE Ge>tJ]:}0Ա*R)uJ8./+upr1ȭ'%{eI'x,Lke,,,)I؂e,Ao-xeȗ`iAMrrAI?(:bc1]Cy5%,Qp#m߸]'ieu ,<7#uW`9ZԱ3)U"`&Fe)^ɭrBUZWMgĖs/Dr\QD=PSwk׶u9( <;7+lZ2=]ޱ0^*c*e3s8L;=5Eci3[>JrEQP>(5ݍlXۘϩIէIzme8wߣm߳\ˣ3H53Ar>nQ2%R. ċZI;6s.m~8dzr XzSUn0/co( K6z} A1KG$eaWޥ/Rb~M w7d9sv7+yL0tdSu[9t.]PEΨzi6BcDz4۬iC-uhOL 4_/S@-.bLBkU쐀/)s,#pݰu0Zɭ[n|ObrY+@#5L|VdDߞQ'pSPX#>8gn؇RIv7Zrn eԸ8e} yB(xbȁGgȞ*Ȣ2˥ ,ʚ 5ɿ6pAtñw3\~oqJ;O6h#Mn/`K rm81яv`LMO^E1Wt,\C83W]`$9{mblek-ϳ2۱ =@IAaw#]R{{Łp'vbOZDBS.y7JY6屧};0 y,BA\'#:5q}HEb}]A.f_p|[OeUq'!gPbO`}wLwס侓_*3HbژQzBZ=#R>*ҧt} y%C6zAJ9x~I:1 Z=*G`?zAj+{<"3jG- 6;=Cޛ0)Eٶi_LZJH]`,VZ_$5i` bPBg,gQ&ipAa} lҖ'$4 cS <٘K*>2F.K5~0RX. /aޑJR.oic.7 +̪@X\w+@n?^$L1w YaN+Kt=3e\ ٘a0?9$H@mgөy9[VO|#ͥ^)w .!T;R'iJpO> ,7C3ko?9F] k#{' vdirs #]t3by~gh6zeڪmHg&~[8ݶ9e;U9E ZgV婑4z&|KmL[d^< cY""c"~,?re Y(("}p3r$StRqx w6ߦi`??_y<4\3tţTjgӹd={(+qʋB$D}. {s=:{/pijByNuںCr ?$XE.O~R 6ۯLB~aQçJGwGC&|o%y[ !әWZbW LO*iDjw$6iql['KH 94Xw<< R;v>.qwǫL8YLxD\ܺn ,Ql޴ ^c55n(/ܱ48$+t8ʹZZb!:P6;F{3&Ys7ྙfrA;Ѫ#u8,ޖ\rkr |H}c8WgɌÐR; Tk6%Z\w'()m K_7zȺK;6Q{ț0c>tu[_9huSo$l5O~?Fk: ꧁?2Y[$k~H/6fVr1:WvgS:\ Tfz&i6+lkdIYW$į,gj~. MJ kwsdv71yg?cTTgk!w\3݌mLG,it]9. utwT*inV3h5? n6ňˁY3٪F&w&sbda Glտ;@ JOr1sҌME+|}?n:?odj7ҡ殐59 |X=*,YZql͡cGE jP咽J*Wx5ڒv#wB1Nih8ڶךd;2Y6F3\6WJ J:;i kS0o!N[@W4P) wRLxM!bcw0ob1 pdDzJ+LEHYy/y~ӘTFL;x8&kDt 5Mus _o j:?TI>5vo%&,3(nDȩʴ֬ǰla3,dSrll(Pၹ1>@,'H8)mYlR|_Oែ >m ϝ{dwh(G2?Iݢ nF{`ܙ[3rְ?E}gc<xbCAEI_bY#c\AP@;ꋡ~*nPdFGozʚ'y;$Y1 ><3{/tX\']Q!\=k.ͤE;pI2DS+? o'̎'FGW"zlD@x27XkSLn;?qR%~=>왾)!J* _]HB G\X=/e Ibj D+wt[f&8585?(\>!OO$5΁Qu,&q24IL0(}j;v >N5#f/ÌZ<%sU %tDx0r=܊080BJhXŞ[Ve?h觡"fg-,sīx{yx:ڛߐHHM)oάHǵߨY}BXLH#{%i1J'u4&L@ClX̙t%A^)veI4 1]S^C 7ram7V F!,RyQR%j]jz-{Z!)gĿWB {z7ךo9.AHZ e?w'_FEHNW(3 [5p=lR4iv{% ЖKdW(#Sе N6'Z7 PZ%b7"ܫ㷅'yH̏85~]+P-3qSLa2!+'2IpYxj5i脩t +ö>e}mѩ9!PU1S}͕IvtXD#ߺX\a" gw,FXc(˳YBܧ+֣)rIDEұ8yMuꜤ OjW&o#X-|7IJz& Sa=e:sO&Dj\{)g mZ.޹fM'IIBQh,¯-{O_LWݬ'XWmWY垚G ψ+ju֑o-juS M'WXl߁FgB_HƷb#feT$I> s)kc*Q 畃 ] t(o^lVX=B" tZG>$"jmTۍԷ# C"˛W/93Ze>ǀqbם^b2]%0v??nAub&C,zǖw0PdT)J&mրpI ;qhd F0TcSV+1]æ'ȶl[)f~1ֽ|p^d*& "܆=- W |t '-KIwXOnY4K侉d&(m,auk݈w*^cPZx6$6s`rcO!>UKN}p"U(b}W(s?B+O0\~Kl~D̞331{*!͟V[Z6SͰMS˦2]J$yeͲ| Ȱ&Jo*4ܾ/;SqW1SާPN]:8Dt]hNEN'G஑d Cd1qI=i aާLՄ̘9 U"k0E15;*+q6e#PrvvO B<|_\zND~ b'Ғ*pw~- g8]Vrz5F&[#no4}A.jW6&%ټd@kJ1sXd, >= ` nrGv \}]iZ2r9+xC-cD\x7h0b}3N~D8ivߋ?E;nPPCx,x~Xz(~|2IHwFV1{Ζ`ݐj͹ uNe #R Έggzk8L;"IΙ 5r#- {(* *wC@(ౖ$4zͥe 3˸eYjsqQEuϵ< exIŪF zkw07A ^s&1l M\v~w-k‚l6ҰQ[B YȎ19]g=d=#:{oqm@U'Tob-H6>qz fng!kCvJfdof >ؘm~ly:iֱonycK\aRlWT7*(L,GEЍCdh@U))W?7Q*CE7xXA,#_#(> ҉lE" HBbGH2n j`m"lIڑ8bP>NX,2Iʀ K^sx#W%.ȥO^^ 7H|I8Vd٤ rN7`h0W@ֱR^8XaT/,=wCWxU/c%xA ue2md/CYU^)uci5_?OݔS\Y dT:,B2й\B5-&x!o-z]߄ yhBu V2=:ZeѪKLO0@>|u9T,1ק{I_(^5sdx&SQ^v3cG]Xe3M v]0 jxS,DJ.p -gqH֥wjb U,!n#z'YVrso#[dթ]M(znVMP (`."ϳ8(iw! i8[Υ1pUJvZmu?O)* .\+?/pC9옅CrfV9T;R5(=H XmO'_1&m,x'ɹ_1JHZkcQbASrqHd1۳˥8vQgx;J2.V *8IH1odLD̜M4r.鄘 ] ~ yCT6k5g^I|C>"~p1.` ӄHƈ4,UWTؐFI*gyzCh0j6f3z%s>E8t$wR*Ӭ{q pB cl ]7%yUP$+"Mtk-)'2#Of;4pXjxDZzA7>gpgŲ1ax42t5԰$&iI0~DB48$@WL3@iUIH,.KXdbUT-+ /**cyE(ʀ9?ap7d2kز kϡ?wC#9qxN|T$ݘt7hWj Loޭ" Vt:ealldgƈEؘ/$h}Á;L„ V,g9`U5b<Ъ'dkdoJz[V^C~}bp'3pYV ^¾2Lzfp YR_L)fIv$ ^}M^2%try{l,.⍲$L핦}ˋ?Ib‰zS5~Kt _}q<#=HN2XVKA0C<ЬvZj13\KRnZP;Tr;G $-2 t h)jYOkuew 7OwhM`*6O F7% g:dIш8d\ 8ݑJ;i#fyhu%6oޞbpps+?F2%;̖2{X3>P#c/jN+]uՐ';YKc=yg1 x$MXü/P1&t_p %Tx xԗ E#[") O=% qoȮthe$8'zH\ LBbOQWr&He4.0TKjcR28c"at"yܐLFm Ǣlz VXT, ,sg!UpUT>mgwFwVeؘJ ,͇TWrTș0o\8.\ GO0 f>|E"ONLweK>{ڝgckFE"b*:2KG~a똝<kֽ^<_~۬w"ΈH  R9fkeK:@d]4$Ukq]8\3OQ:bX \J8 AVF̉dP˧Bj3KG1*ЋDQͶ#ekuj*i];ozmIԫԎ?lj,bi5I5<֨f 5S݄|nAOv-),I9[%`5H+\6P@n&gue7GmxX9liIGd5Ld=C|ڰRMl@u'@*}gh nG!ǛO`Rv""ahECJxűKaq^]G չoVkl,R5%+l-'Je68BPDpFCeT=H9fF(g0z3|^v޲gG̸bƖD&i"DǭDK¸s*)8DF$RY#yq4X CN = *L.AMXa>#=i >#toLQh{[*2Ox 2I<1S#mJ*3QCvUC&# j:?H||+?>'7ȰU$G*lG]!hhgV&@09]y:#! |~| ͑,C] ڟȇBxbɎYZ"qz7 _Fr6sUl# kF}#'}> 4F )DF׬%{2V{wLS$>N,Ti`aCp`?<4FyÀBڒBzG^~_%Trhi#(=Չ-hXk̐!.wwiz}%#=>r}7tKFgT1#^d؇$~kAXQMe axs_s7l!B +QWvD͸F*Ʈ,"IL(;c4jh%d']e|IVA;&\ P@ƶܳӳ&tFCt4RIvy-7pgUCĞ3R݃5p *9::*k0YJ7:{@ܗ_aXN0g(BFa={c1;l z%Րޮ,-?&h5HsKED;T=g.f_60BW xE(X^#7P0oO+^'Yei|13FyZ,ɺ-T,ؑ=Nxjkiz4aB5]رOD2*_{-oFY|tBiL=D-5ClQg?xv\}b=,/jU 'GbRUr F07N5H0CjU"#8ֺ̯+w YsnxZͦu0Ĭ+83;:!=~ܪd])ﰯ}mtmoNjt[2E`m;SAX2}cG! Hd='ܱϘ>Gh \B1 Fԟxy[\c"P@&uiS%)V+ ֿac!ddٷF>W`;U( j0ʕ WOR@sl=_곩VG)yMTs MB7O #DoR󟫻 $qϖY+GZqC1DEDC6'iCc+=>٬`5#pdd2׀1*ZCsQ?4C|/"d S&8B4wDa[Κcq N:EYޟMw bu/nhcV2`%)Z(m+,繤}FW7O޼T xCZyL$-EUo<&BD!?Jmj-T BPP=v`y>1b+2݊=,s=i9S#\orM7AobUZGvطԇG>żM*Z[j HTQEa؎ey›(7?gu{g}J)Pؚ Zn(P2fd[:.TKk$.%x 9Ek-Cw.bF"s>fxC-&-玠GzAWa$Ar߇Lz1I(d7iS 0/w}&;/M/f}QR [C0 l6cW+jE9l36%WP rLFӂp;ܠ6 cGW)~@y arn!9kQR\6'(bi6> i3x}#>`|HYHKYIv4YqWZ4x{$3|wذx diAUIvy_ Y^ NfL@&c'߳b '0Yǂ (EA!: [RO uX {g,'g]hY̕2M`BNz|Z.,g"k՝)<^ rC`pzlRi-SK?x創x%6{E-c: 2R+[ IKi{/V߯hiIiN0vh4YDbֺAוb\w - j`褘Pnk$I>n=Hv1*S{vw+} oyL,ɞaXȏ^qjZVV1NWHE ~H=vR\S[T-ƨ[h>a0N( K!D@ ŤBIt,TfoO$2n]PWer; }'[[ (8|#֛[w0XV8eI 6VU, 7WdOgbn1^~ `5dzҁCe?թ!ꑌ8FJe%4X)Ě-cþxgB1ą术Qzz!mĈRfЎݰdۚ5Ly2hENUF~npGl9ov˭K~>J"e Z,[awĿi{ dO<"Y:s+u`\ăpxHE tbE\X:V0&).2Rc ~NV]r%GޭP]WDTpgee(OTVQ1TR Po[J ?|"1604AGuKY*{^瘈hT   i޻U`x=HgnDYska,@J}\W=v><t Q҃ʊ*K8)3l2A ։G-dE9\0D/Bޥ9 &} &>xQe mm(ZKaNʌH93Q'Es$]g&+ύT&FShr"J%SZm8w+: tq,bCwMSj:~J@pl99}M6RmY=ɒ-a^ȽŶa, -GXQm+Tm$o-lt Hȴ:Fɳ| ]̲f(pU^!s{ͮ>ug?<& /ήu06n_Bj湲N@\ۄ/K_iMkbN|~2x;u@ }Ƃ<0dK؞7nES3I6QQ5 X<-LQI ]dC .O}W0BRIAӖaRVRɔ z. J$E'Krɰ[)sf 1ԃKI+ BB*uNy\ӊsʝyMy:ZR xqJC 9cka״vtE{ڭwmoH'x͚bU-C 9L$.QP}02~bB ߢr/]ώ 8p_ݛihH1Jsg "D<$f άg4^ .uqO0%8էt}&6&z ~/^8 hESS"9a L#aYn3ˇﮏ Mv݈Z@xCYW2bqk 1TC)*ע@?rQ tGUOc\B!0d6 }XYQCXwԪWĩxoGVyYVu1`g^(IX-g2N߂?{Uc}T ~fcFyӂ糂XTh@g4C BCG6dX,S )S=m݂'X36GhP+bܶ—lڊuRQLp4N` @ijsQv$ȤNrQƩ5 Ծd.]ӟȀ)|*"XT'ؔ ~fq8QE!PDPv;KLPӖ괲&>ZM$Psj?fʍ3u0VyKyڜ@RۂLo̽fEA ,mKvֶۛWPdL6ZaU fI'QiDz}"n%%- yhT/t^X.t5ڈ)Z| ?.ui^,$XZFmY:jݹN^e^ $ؠ₺r}L׶@z ƁB& I0uOes38\ b_oP 022?@'FiNhýIր!״O& b=Vng+ 7߽R^NB%O,3D5 u(LxKd/.LLPmpY\DWM>`B{3ż͜tej\0>|a#xU[ER}L$E4+3&|{@$|c*ŢP!8/lvQ+b{zs󏸇.]>v>s\OW(7t{dqznS U bJEѥւ>-FCt{eCqIm&:ztxFZY;'H1%+4ZY>i8-DмW:9.glc@fB_[Z< s=;o\̋0#-jx=V(~u_vr6)-ra-t Yú}$Zt-U/uTfLpMdQXLj+egmA$d.k3ĀeXXhc>Imx,0uߜHҡ/]}d$*UBCyCLJ,|~#PKv /A`]nQ %wrT(|?H< X;}!\a|/P늝Wq1Y"s;XAY=S3 dSNl$L tVsrLk&͎?}etG6ĉ nd* `*ʕ 6fG?c)NQ K02#h *uԨBdg~iX7L;C1 9deSmG!B\ `SL&繆oQZx9wJA!G!6IWQ[OEwΌSYO:up.LilzM^y#~aoۓnԲ#@؝`ʋEzQ0;ZL 3~B#vq 㘫xQB;&N!Cv)-i3W%4k1-N}s5F"kzzow&3:M1с!j(Uv]41&8ZJ.">=ӕd =),"¾NWgDp㊸^, |>UKm9D!88̊>_ր/l݇FчO c3+-3τҢfi0!.˝"G|u3y>~N4:|/+HyCP~!U.9ph0(aG3UT[%r**%dng6\Y:^\v:T\ l^0efI5ߑI $NC ў̬WyeE ?.rOGJH8fa./'YpV 7n-mJ>zhlڿ\˔y#b{Fb$}Zcƽ\wVQ|yV%p& ܮ[; MLOf&6mɹsXdQ}#F*`Tovw!' R3(ALJ泵O), PI,5ػ3lAVFd%L}Ԃ1\Eӊ3] y5cF^R4ެ`9W,p{"El\R? P="Y0N=vř0ȋ 4Մ>yU19& {-nUl=ule2樕̉=)vfx7fWJ@BcK [tP0rl9mzbԞWw%t\>%z :^0o[ߑJ97R |0nu7w!@oD/5.E>w"2uE$Q\QPqۅYp#""$C7amM}@dqbNH~[`J̈́6NՅ`"^o qž{hm֒Nxg;MTyٽ  Va iĸf(ݑX$KݠР+Q|UdӾz&9rL1(FRO0jf t{}G,בUAOoej=mY|1NP;Ldv)j@%+\V@f9wS/R ckXtl;DI'4xnkh-(?xfE頽̴:}٩qdycK/lgc='sbPS$fA_ix MJC|bncOPQ* ubt`Av_* =0dr|tYèCuϡ2fyeUM/96dq#.sXkDBRJj W)LZ=f{ Wyy=Z̖>k["=V2HCg %l\$Ҳ!$c,[e,HoՂ2[|8_ˮ/>3э`N6O"NcdEƒ3r}|{~kPʔkHd 4+ؐ*QsHL*vq&*Zah d IvZmIk8-.K~[UGDzWP~,tl qMBq-JTMԲ !XD8W%Oqzѯ%1d _}'>KZdSs@gmDM3_(Tvk]D_aL/߯D.ev҂yL79]*XbS`x#AY'PvU@ ZX?T,OZW z"WX.^NZM(3OsNU #- hmZʵW`'M\s7IߢSPL6v衟 ꊐ3@:yW2DԷѬW[ 9%c[,j+N XUKV p/el~ $Wn,}ht\rֿ(k؆hY]X,2^ZhJ"rG`Q$3E}?ƍ2k!D.1XjiωU>t`kY5y0QpwAkcGg3h~80S /31ŧtձAT=~YXƇB5|,i~اkl4Z Y |[N]tA8VfcvbRT֝0M!9Abxe%WSV7QCoףJbLe2Ԕ OxT 8(f&!d"I|{Ǧ`a!:l?r^ jxPr)|̰Bև<ː LYXFө^2D^􍴸@cl-M.|sMM# ff|}by=4ĜɑwwQ"e>DAt(6&~}I.FMPN>*@ MQ ~,ڙJZ 5@;;mߠ?m*=@,Q ԻF,lV&-'DGc*NDbXSF#A1uNvpOۭdƥ|ܖFP3Ur%hoUomaksl٦:| `j"zu/8B~<^/rpC[aIy+U4G qǛv cnxc)I%{? `}UDOEeN*מgp^YsTvح QR5 03 L\. mgC^QF8ܷ ׸V)a YY|=IϣO CjDujÓ_Y8pzM,Wn4 dUrWF:$qO:F]lQ͵vB8qvzҊ+<4,#b#JIFO$4=n)"g8GaoiwF(ʨp90{DXZتMOjZ泰-۩3HvN-lX}ȩGldNN+tvD3ۍ-[ZfRG-`:ů T#06ƵeK (q?8aSu vБB&t#^E@n805d<RZd2̿A~"i` ;WzFb0ogugf|TU=,еU&id.1MKsIB ?;l*֩29WO!aȠ\ W.]ekDstب%VlX4k)s$Ya˸RmȬti#B y?G#CVoK(8(G6k1ѢՃN e4%:5*W6vaz(֏h[ %vKV)E%mg\2Gv3sƋjhV[xlrGuS{x])B)ơVj62nwB 2wo:K|42bFzN{Y?P|A:Z|e f*Z.c楟TGѱDָWDEM[I(=%ɪmicj:&Vk1EuF9""1lju `GxGZ#Wg|} wXi7uVTX{"+ [ Y ?54`gJ&X2N0Ξtdil>IЈmlDx{YAZxYЖbvڃ5&|P0Yuc;(-A%e;W5` |zlEIc՚h.~d7^>&k$K\ ,To^*p O+ƫq[N/D[ŠZDFkh_,601vgNw!5 gRhe>:h058U~:~WAC1͆iȶ@f=> yE,˗mcx S*xCʿ\>0b/:bmܕSv܇(X,տnUGi|w-0U1T 5X=^K4ѿNS^/JVkrQ(fl7edRIS~|:H$a|V(nPk8,cO$n G C&T3t7tT;B퉦pn uwjG A<~F8ID>9Z )j'>NiFH+)lE rz4[!"pYo>vXE{zϡjnήU=m2$u,.XGr]D;9(ͣȣh#0F}I=QIE6@<^^4IT06%;R]KC@(@v|&rnV:H񵷩_I+(&=_'o ,8I y OG#e=Քms lA]4 24z I$j} 1fA%LŽbEdz". F\$|- b4|)AP?b̤` H%Onypi`yy!/H_h"(+>pʼNP-c9K 3o'<Լ?/D?`&ED :D 5NWOڠ?UeRQ77:9S4Syy)̋ehVr VZGǙGpoʵưՔBtI{Xթ+ןKL3.Ts}/e".SJ8Ͱ2{@OK|g f,qcc\!w3{F E%۴u̐ iJLT Xh3g[QZ6Ec% 5N"uQm=,ªFkJGRN@,W ~n瞛7wG=ļi`)8[©ke\ _2'!$694l(H=UQrww._rԡM_lČtlSu$s=Ԙ`4{+zώmz4h݈-b \$vԳ0P 4m2Z\A+<>ua#v4>N[|v5U?uD%ThtF |nMY:SJd1)=׊;fo2$_n/s7˯ ?P7, u$=x10qz ):܇'t\L%J 3 T/T95p}r\h溊YG$z9N a@Ce!rE[fh!9F\9VM-u*9QGo Uq82}WYۺ2'SmO%uaOJO !9W9LAJp lze}UMr|r_nA$ UZ'v1ݪ1Y3H-/$`폅 MƘoaH:ȥ'VxVh^skl M$OD&kcbU5)@­S}Q{u:I˫VR |G8$f>0~_u##VP}YŧjqYR.n B68kq=_ ySfb4"֌R0Xm'j$y@G 3R3 -/H;uH TM`IPPW~-_zDjnr*] g>j⣷ nCK ا-N=Njsr*P*>LmPvuyȬP{;hm-,r~д ..iB(K VQъ6 0Ku@^6;M^6Vde##n (Yq,tKR\: i p]8gVCIRk%|D 6?TxWc$$Zi`~_0>zg,kc:T:,\HżR Mqٰe,X‚sD֍cY|'P :x)'V܍."fmD>0]roN @B9"E4vX`H^MQ.0ED_g| U7QiZ4Ǚ<^NYsA)[MĐ%7*|8cT^gLyb;ɜ2)T0)D5Â9kjXCD#LЧb @uWzkM +* +}T l' ]Ub3N?:m@+ XDDVvUK P҇OYջE<`)Wt~:^nXZ9b 衟͔0E QXQBl~UQ;X}ݢdPOAbVOD돀%Vj+YQc,J":!MGP_[ cTm.hKKZS~w]vd>%zRY*B5kX3Ϡw L۷]>.y<Af̱&'Kb = y;rwZ_i2>k c鋩U.B(Uh-k6'n,Pi-/I*)Pn >|`bfȯ~?kSߤYoAi 7'Ա W06`/#9?glϽ ێݔhKUQU5XWpTL䲓R.sQgDLk,c*ZN ](id5a t 5ɢ|64ƨ(慭~Ѐ-Qi w;Bfln5,胀ZWd$&rYޥ&ZF6!sfZ'=H,K\?2i^^RSĂiR#,I:0_ 5ݕOO]d2p]cHSu?T&IG\&7Df(b拿K s2}hs-rR#%;Zb聺b7ѾK%R>> 3)=K7CT&uzHoJT?fx^_xBݕ*s ҝ"0_\&j<{9w02'c/B"&#GtYK۽J_D? QDYr!b(?YaRM8@ a!bd;hm&Q)hrN".]|jeK}y˜aJxQ/urk&V3B#8ޟj . cσ}Ca32QMxu[꼖o) #{e^]3F;UH ;쁈r1~c$ Z.%'TKkUt 7XȖS `.`é\ҝ \|ZafhhTG$¾ͪ( rwU6,2!ML=SB3 }u@ksޟdۈ+ͣRێ{l_3+uKj&&zKu=4y&Ƕ^ŋr,,AJo/d91rcf5R v(&!y` k|&(nL7jop:!˷xru4,*v=Qٹ2n+jR6HR&xYc8f"Hgnn*(o/ tZsړ; z.KM0B_fOxh, }wtl+!U-IBp$)=Z۷忤e_\ z̧6寯!b?J=kcAq6>π"M(K$J`CͰUڒֹ@/*Y_.T D+)ci 't?b@5~'D WV;;KFj%0OS>q/)Z4$\;>fp ُ ѧRRO*+t HSK'nq<Z%-e>p8% ` dҕyiAT9m"=Hsк\mB:e6[i߰ƙ1A1>{+gosT:saMհ@FT>&_֧XCc'Tych\]$~{+y曵nWZ-<\}3c(YUF? ςág^W+ eŧb@_'CHut:yG<3@~uJcm ٗNML-kQH4%uQHuZr_3+Jd'yFRȔsi=Xxv@4Q-73 5 6g"po'Ȉ;,hXy H.N`U)͌ʴB(@/VG"4>]'B=F'@* t2Pp3$G>W Y3'h0=ZLV]{gg24~. SCUV>G%OIFzW' %zTQ7Mur5}O58'`Q^!L+3P!fD%^珫c0ûeZE 7&Ĵt Nݟj)l}XJ<cr}|m%*V2vCF--4IÈ}ny;zk4[V(u{{0=%nsX+`}Ulcc:'׏ZTg5U|cd%D@*%nm!8Lw5[ D;Ye"^ȆsY`1,4Y `րV?GuYO8j{o1i'wZ^h jǼ=AJQ/,2,)Z&[/)xO>"vS /C1]~*D@db7jtmYdFLF꣰,,E[4F|*Ƭ|.1gAMB TJ ^k EJjM2s>ˑ`bYJˢh~M1SeTom"lZoU;o{aQQQTgT v p (|O&DnfQSU: T-tUIc&PjXşf8<킃*#P@gKud=,` ~^QnD; 秶/~g,cg7ISĎ?b$'̓;T۹k aªQyUuiR+d g1Nʷ6R8kxd3USTM-8AO,kեws >W2K<{9w Ջ|)+]n[,2zʖ}&-W:D ^JZät?wb \p#?LEp:WWW ؄e9I#PnQAFG0CGd B_ǹN4z%^@n5"\qҺRq %4|e8F\1*0-)*2p>$5Yfo?>.i1`e%`18mMNR>B _GVwBs ; 0<\LnO g<bWzs4:lj/(s+G[DwB] 5ޯ[ 6ql'{e`i]# Q{G`i;,K53_kXAkc '=̃w #a,^%5^.6/NƜ\;nu&i؄ 20fu1TPqOܡ M"k|DDqЧ ~=-eXE{!Գ&ig7CD5+ MkFBrʤ Xuut6DZ';Rls a/!8uM-0aMbސ79 ? ITAEgB*L^X kr[됓/]PU8oI;!|עwnTQfZ3qPC[~n0- т\E7'?"-k$#?K!1Hūɰ~v#NP &y SiGDZg*P9/dY.d7&VީזVPܭUCoGe-ofL ;y'%U'U ў|I#pz=PmLP4C/&a˘SmmSvL!qeau]Z6qdtׇ :ۆҫI-6E9z |R.pdƥ_c_#o;kEPU@c8lP\@P"hQ6Ai!(i`SG1&GfHS [e1qyvZ.Xt%^BC&ܾro) خit~^5]W5`κ%ɽ 6txL8'/,\{?&4w! 2(uQ A; o ^vd 8ǓQn ZobW@_'x(3p F !,l>ණW2FXF|OpX*5)ˎ>5)nOV@p Vv5Z.LO/Ő6s/>J,lireY!܌|YTJ iE#321DSwܤS> op=J- nJS! ?\Pc".Ȏ"]շ؛6K1p>*y64/;!`-*3q馺R]ӰV#]W90^TpKhX}v^T }Db}h#}}2Gj /%f]f(Ɍsd&|$GMc3G8|n@{Ty4' i*CBY Ni)٧~+sޓBhL4$e7 AQ`b y^h $w,]NeHں(:r{yqg vEM_c,V 6ZteG @fupCLKtP0gܙ=\)Gٳ֓j{ ߲d< CRV]Pj 0J/F\JCUq_Ṋiej\(S{Ds>IQYXl}Dk+y*m鯎 qq1X>8U4H@ӌl(BG2#>>b~%QX) RbROuRO(* '[=gkA>w;XQ>br8b̀^QX }&qv.IlR&P>}:$ Y >Ow{ ED{eDtGs >|xA`ks.'*0 *&jE 3 Ha7`ҧԓ<ig /Vm ip[j.u4;Gq`\(^~]"^W bΞC)P}ʴ1eW.w/`5{ӰUtGj\=+DBf AWA LtKeƙj"2}|KMe|x96L p!<I?aR;M8{C?V^+gK.\B+0(ZqLt+$]즫b1yUTȅK-(< 7>-|FJem@,ĊT2mTNuSicA6-W)'Ʀsd.!Cæ`'fl,d}\lXUrjvRJퟩ >M_w=U9w"ߠCĺ5Z&N-VOo\?Y?+?eUߘ|Ƽ ;wlN: ov?Xy&\iK`9y})[cF"d@*fvXY W@?3V " bTōsn^ zʤ**@i>SwуtcD6&AV/5UL$cN[ͪtuKⳳqF+8oTS֡2"[hRћї浉Ȝ<>jsۿLt璬d*_@7Fi:g:us{}@u OJ {I% >n^I04Ś1>1T j"L@9{X. =x#q)֧Ivkz!3Jew]I!2 SKռ;͒V9i'Y{pܳ uzJqzKMCoGqwX(9{$xQE?&Q V]oe)0^r/:X/n3mOٯAFQ p[1E%&7XpP%vD NIC,-F^e(CƏoNxJY#~\+MFC] {KE=v7e.,7 %/ƕ(U(}.|)F= @̇ _GP h|@O.G~3_&۪H!fOIN%BG#p'=Dhudcc+b'15jUw(Iyt}";Timݑ Jh 3e v&JӕG5T؞4 %ԟwv 8!ڳ4[Ƽ\RsҬX8\/jyEMՠ}(ȯeu I7xĽ< &>g[>Tzu}+6-AM9L As-,_"l"Lr 8uQo, S7\k9@FQ\HE>fd؉@hp4x#pP [O).ktɹ8ղ-FZ= 5P]c{0'ȉN;x0:lO2H +*g~ahϪA] 0&܊͟;m_ 2o!®6_ԗ 8oN =Mj'ݻ%Lb5/ո D6;BX^^p!=j 7CU;#Qt; @xEOYwj*p@N!,-y4(h3d5ʷdxЌɉO DOv&TQ})C'τ-5_2 8zeG. 7vE|QK ~[bk5}Pt}jw;+½Q?fNH 郸too *ɾkn/A%m9_a,;HWdƅ1x4zS)CJTqhHvO~(C7Ӳw2Pyc H3SZ^)J,Rou.ˋT6SN3 h\H4Su3Q`STJf=n5k6eN!bqvd.WIoPfj7(}UfeI,~xPYEPm1_mr:7Htx<,sJcM;0^L%V|\!mhd9E{5F'z2@v=P]28OTB)<-N=kZks3,2x$n0%6E׾ܐsiIA.#aֺ&b~^F㓤a#] uV$%WUrwx1r\ 6bBK= {DdJ_Kw@VK6 |M6/ W;:je#ixwPwZf4HʵԨ:em'/vӔjfqdr #iZ<NT_[n[8(/-j 4!ts %Ð¥3C,8ww6x3MZayk#3;\c:9?XϗloP)K$~33FVrj%4_YŨ8t)ŤN=彺V=,[yg)&f=1sJ^p;9 7)wHJǗze lLWuav.<,3tJjOp+H&F (O9F6oXR Y)Zt{tTZ<χue{9~qLNR&{bJ״YJ9ףaH<2#{%fxſZ1fD/O",- }UF_VgFt#m ߕh*W#&Qa?ۘllo_ٚ1 % ڿﰻK h2x!T3{g*QFJHKR/z6;ʭ2!Z vyʸ FrPyrB"5[kh; AsH2|tkqK߳maH`) s-4x-vJlu\ uA3x:&XOSQ0°(gqrewhh{L];1X*WHҎMeF^ ~؆jyBmc΀X,d6J\18 F45aoXsHs="uxWt<6A`0cͪJjZT=;@ֆd|J.6lbտ.hj3F[Rnd.KC]4Vuc ]`'9\7@ޏL` (-jF 0)3i:_Jէ_JYȠ.M;Q $'ҚV[J5uαˀv3CMȂ*z?YxdzR~ږk.r*H&4y™g[Vq1SĀA Ρ̶k = V͌vaPŠS0`P}%qz"7LNewCUgṺ$154FFa-GWf^w ԁn7*}dvwkkLS, 71Uct˕EFJuB=P1_5h|5%5s?`V~4'z7]HbAv ϕCYE~4 ~ylN_6:ʉ4Q˖xhM؃'ԡ=kjl=xAϺx* k o6 GI5yƗ-0IpLV٧ h6L ̑:RN5@dzÝ KG(@.q .͹s*rJ}@ h8*ϿM+{_rzj}:i?n "t Kiǵ8D+l6p)P5u6)' " NWN' )Qhm ^ҥQC.%órbV;xnS;琉i8y>;KeԮ Oovۘ'px9;aYG;ጼzs[.sYGr*(fW?4(2#xN-2 q^IҤeط Ɯn)<V()"Croɼ %NbZ—'fG0,QQPa骪ݍz#0[f_T" @,)k4i1l%\ډ, y65iV b-COؼUsjadө 70vm1օ (3~&Λq$ ) @W8fd M5մO(LD^ӇgF9' A30>E(U(yn֋nzG+|1E;, @&ej省rΫV16",h B@Rͪrku 2T&:RP^-:, N@`Sr גnBE/fYXܠ #9_4Z0~׈Ejj,4Ý_sq1fEk1-HB9@Vsbo/% yfz$!@#3 t~>4lVA2,Ib \b T:^$DNCM Δdћ .e5bg/ Cy(!*5cе<%WDf2*`:P}&W2ߤ2hK+E jVZYhWQ'p{^zewFmunY]<4J1ČX޲[^!jnG3kZ:Վgp8əl(0ӌi5ͅ1 (l$i *XklB& h{vĉ8 ")oL׺ 9w֫=}ڲml/<=eY:%/r b3^,nbO/oG/yn4j}M器sh'(ah&~Te`$sEp7/|LEٳJsBVG2wվ3s2v=E@T5I)5z- ^_×!"SY܅m79?2Eǁɿ. m,5~p)Mx|xŜ8n'!X}(\K?_ %zOAzuBЖ숿;uAlOYk琢-3 in-s|)$ lyܮ%BiDư ͱ^,vK):isPsdmGH %4n#u\mᷢ/EFF qۋ-ؑ!ѡi_7mvc.,5 >6\{&3KiaZtc0cۂ4#`Hsx ~Pe`EXVV[ ;@=OT H1U Wm&1#luj%kօ%##rd|wNo%_Vadc^=FL)ܲK_g[ *:P̲ !S\b_mtkq &F.$:߻D6Ók/"[7κ]ٖ x9VwqL%]:/ T$n hr%Wx) 3:? 8[nψ!yȆ+A=BhޞeAs?o#j{7m+M:ջyo*%GU$I3̍ӰMUCp=38p<:pڨ$2;/vGdc g%+]gCa!Ӑ# r CҰ& gأjk(6Ìw$mM /\ָ=)9_4rHNGϗ~0ZEtދ5"}nk7juM}euy*`zNmn196J6Ũ?כ.7I2ME:.` WaC6&_˻/\'_8}pSHZF82p 5_;RB/?k Ѫ"ߴǶ_PnaO[,/5f$3'AMOs hd~t|tTaE-oNEY)0z9*f̞yܱi*ŧy4 pla;eՉc/ȫ}Y%{Zq'^2%uV 6jYտ; GI3Qb˩ҙl &GY8,2 _E$ИxĜ;8tT  #\z? 5%A♨pudn@?m}.:/@`:Jvu ).w3SX'E:f7ELO.Or$4!E0V\$:?rLK/uѥk؇Ab.AxlZ5o.vhݎeZqv7',rdlE .WW)+ԱݔsFe\;MnMEPd8P~3fJR)&"NrLQ3#]X#>?>~ Ȟswp,JVJD^DC̓CLܦD??֐xAL*rE :O5P!3Y !@:.7SSEq4Rӫ^wGICdqSm^nG<. fW~qBïoecЗN;{U"ET)pi'+ O:'NK"iVMhnZ,Atf3o΢ ѩ)=^~^z]2lgt\]Ri;Â?a5a1~sEiA&hO[pXH Ȓ!7;WQ{tyI R w쫓X̍c2 #V3 ̭;jT;8O] Z٪Aіtep-3 =FbtHV̥h6MLN5"ۋ.i?WhN%7{lC_O1 yk݋r$/BYkn>p([ r/xw/eתHBʥJ7Ժčp,ƝB3$Flu7Rp {oIݸMh#,CsmB2߬b[bR u'! xmcp59R_lY6dsM6`q/g$M*yJG, 'au  ELwO|ޭ!b<>7& T? ȨL?)F-|b_H̰Lxۛ^Ӎ6|C G++~漌ieزY5jZlAQ}CyY bf$±TOR\_#I.0=Ç;ڕBqyBњƺ޿(c}"w+d<~oetj]/槦jDzqz4#55jDj82z3֮߄' rfN^ɉxљ-!ņ֊l>F(U1l(@:Cʚ fŹ sFyS3ҁg$Bu h͐SLƾ,5n7P4cd+_|;5t NIE`wuX?NsqJy7<6Ju6v,"/Zf_O^KY/G=@d=/=w0t( =cyZ. o+y,3>.l )V# !b<\x5tgPfOz)W,"NTKQP B S E.6O9p5NK}"zKܴ,ܥqMe^hfJ睐3 = (.;zOFw-ʱ (yYo=GHRO-6yh58%C2S 7gCe`,!EiܦL{,J^VuUX Dv( Z*3za;w(1O", [Lp @(K};ɚWC$~hDFLmvuvH`m%AX=SKnrŗ!+S/?wFU=bQۆ܆Y-飧mͼ\&=bBϻ\}8,D߷Զ)y.^m:lL3'<ŷ:d3QsM>^o s_ ǻMlDuuzg8d9@::RPag@J69Q<٨ޝT=@sG'.=mmqVnx BM]Y*0A*C탍4#}PtF(kQuðqh\UUFā#%;?xd掴:8-o*ͽ3RdIEk[hﲱ|!8y^Z\K# 4T-05ݚ]qnmLb{ao#u,L=a[0\k=U8@'BSkoT91iKp57QX 4[ rw:g,tW5Md 2n['ހ5^d|׭<@ku?!7:Đ23tSX+nt0ҚPܧ~rQvDvh^(hP׎VD_MHmYo ˇScnwvяwhMc{Yq^gJIUGB ;'|p|S^ DjPU2sg mϮikXbssfzhJv:sm N?qnq/R {_gb=Ԧ`aQ'Г[BnBI=7Zu˭i0%%+tf #VgMH\;JD!i3vB4(r\B~UAX7愉kEy!Y{k:С甊Z.0#x,PG@!&c]Ċ$!nЊ^fmNE7OOn:ƒ"W@ô rnA{lnieɤ8\B*|?[M:,VjZś%=Eq!_5b#$G&‡t ƕJkzJe#NmI:zf[> BvIq@3ay"}+՚vdUsYZ=2a"&tAֳ.7 e*ϫfOY$.pjRJA b,E9RŖ衕mC]; ul J3.oiV* rhƻP *GjE:@X2<`Q+@lűhqbWKUd;@߄BTu/2<L RlĽs RVL/ ? ;P zJwK,{~2aїAA0lsZD߃Cv}LD _]H+h>)hD2[NɑzĹZnscQigCN$XI<&4kYȣ8<;} $*{  l !ڦok,6jv5ÀJ慯 PE q 6\]ؔJ6thzzʯ_3It ,uM&W!$"vXt;DЊ0YW^V3:wR[H#= / `riC|.>h,l_Lݓ}( KUٽv>#j9ko>P4/gP|(hyt!ɢ/fKZR6v3m$]:}}d2%Ic|eY+p /SI)D='7o4ᘚ|R2ժCU8وdn8=1v gމZz'DN-߃*߶`aBpVJ|cyWQT5A! g.7Ę2vy~mY hniGl4Q:(nޟPP1#'U ]4h[}ޑ1'v,]iX-~@9uYjtUo ?qdK>cBuڹu/̣H2R BrI.x'14J&il4t,>~ਃ"#oHH:"T T42b؃F^>?c}]YW{o-_lKiEx+*v0C1h1?~=}LT-ɔ+pnvX{sUYM(-vd!{Rd C# H9r *|խP"r 'Y8`\CK.D0V/_ ,g/xDKb}9ifO͂x y;m:u&D$XLP}qk[LEOx;͵\Ba%&ˌ=TG6陞Y~/=kTiKI$uy:}\C"FUK !3_ΝmˎSzŠrXK) ١{-U tIeEh$NTK9*>s&m_^:(/V$4˜ x hԸ[ .f^*VAn&),7{[3N[YsȜ{R۶8o=݉O`u  5 <$>^D"faKd%TUDp yEUwe{k!y͏ʞ83Cm976UJ9.C9F$) ۬u ++ z`eM9^E;b^M@6J2cD'G0Ş :cG$)~o+y ;' ٗP\$CخC'dOGTs^/Ƒw0\)HG G %"L,%:%v6NlIXXG2Ge耦çա:??Ҕև ˲V4G:?_s8Y[M4r]¢۳ qu Kȟf=]0-gf?9iT4%BDn5A\e(>X:@1=ȫ73͓vT "~Q&Jz[10>7=D ll E8hg?Aq&19̒פF V:OTm$C 6\Kƙ=V,Ӥl]r~vnGO^2wNrDq}-TX% J`7#Ex^Qz?g`,Z&0VzKZ-VCr5apqd5 tlGJiݤ)׻O6>»}Yчmt GwнY`|Pr(0ssCvb}(5եj.[xgmbFm4;Qr}yl5ɏ #QLdQrٵqFUݶsB3Z~oQlǍ|x?6P);"M9to7Q{WcՒt %PjYtC6mMGp[p7M-g 2|q>5 G}Ik?1VS_.u1ܥ5 2Ґq\O -PX&ya.j{ ~|:2^ p}JZkӼ eqevjR7y^t}i:a06/$RCfk/Ez%-y5tu IcZ+0Ih 2ncܣn|ǞU0V?0·g\=3ɜq;&B}b3.ӓ#qR [͠JRҦ~^%= kRPigFTLo^KNLU"(&^OGHs -vs1u}cUGk7!~̫s+P7MsG/]!Lo1#oj*=bd-m]S5 ~j`+䵶B5?IHbU{əyÒD|.4?wFd)}E5V0,Ŵ +G8Ҵֺ;5g+gRRw (SmFKQv$u~H_h'$8%/% ^ $a!y'/^bk;JГW捩vD:Rb=b4pv\#*uÇJMmp#²muLXGVU7UٶfxE~Fu&Ʌ;V郰q戕IcCFDNu+čGq7[I˷Hv yNMqu·g]ozִ4?TmoOά6to{JJaٞu8</]JF^0&G^0niCp?k0=\ȝ+p<<`flzeGMkJ C6=qjIyhU CS]Z*h0Wo{鳜Мy؇-MIot8ްM0#@ma$'LmA(oo7cox2z?>K-FqVDyh<68f(JOZ 2<gk !9"F&s0>1,sWZǤ) -],08 c*" †| }yiUpF>da9Ku)Ce.^U=ߒcOEn#4m5 Ŏ5蛬+*9 <\k!ٿ<,f{>rJo"#= ײmPW#{^!b| TIR}zJΌg3#v^É+RSo0Q6(5mO>q}L w㬄$bҎؑο xW_yb0Ya[efX q^(c=K#k + S3Ik&J)&ru7ƌcL;/tjܒT2~mF o#w?=w.fP+sAjpGĆIz;9 28bwDꭹ+}0֥by U@ <&(e0,k"_j+ЂȞ7-DHl)2R$hfA~mXW!7^,ڒXHnEnCj_$R$Nb\eGn$}I0TX6fۄJ_ΖH`iYy漜]B5qv}eB,Mk tc5: (~Y93kF߰}rZUIl0ȈUxj|rmj9r_̐eZƇVL[ܣpR;GjqOEh2?ߚJOՑBIJxGW@CLoR'O{2Љk%K(|J.X^ TReФ3VҏT!B5iuc7%˟Ѻ6[CW#s+8%&Am8EdF@xQL6 6Ho]YU4|jaR좾u9Pϋ%$`y"YuAiOWn_\'E=jW"h^0r2îTY&aCyEG2/QL=>7KȽaeګFONl6XY (x@qC:ff G #w6Ԇ>pw vɒ!9 _I~ z\5zאU?8nO1fk@vˣ?RD6he}-,L\D@-NA =΢n07sl*' p\+&<Z9C] =W^/~*3 gzO7Y۵:!T$ˏmL) IsE?Px=*vt20@3w2'2ZYI|_ }j$UmI/Ė@Yt S{UÏ+BҗS+_;}8oǪ̧w($XحcFu3#2\,V3,gnz\7яpc(,,%NE8o:q6 b0q3wzI.SǛK̍m<"{D" zRț=sE\!>7LN{c58~zg|:7Xdx" 9Xί-ޏ6tdƲ47a\2>AZ)[MD鍗$6_0eN=-BU06`QĆIgίN'\o*sE2ruU>݁Vy+㲼joxqkϩpΓ%9} @1zdgwAXA|z4jX_\HtŨVT( aBԻ긡'@⼵#nA[/ęH~0u$}cɲ <3a?.y/jw(p UPWT}Ő XI041*%xn8 )O½L*W4Tj+"H)=fv襤[>2g#b6cB^paAtv.^ԥlyaA_} 4H9 Jy o-օ'GApu$$P:DA)(SGܿRxɈۨ\V"BMZZ!aV*+U/yE\a`ZN?-30`<]Ld5_ CrDJ+oAjЭEL]!-,sxagwJ[>Tߚ\3‹ZMoN@Hg~,dW]#t'$/"5+K`¬>x^L~P߅=?f9iFe ~dxV{žoQ(ﱍ8z %_M.nz}°ƪEϚCC , kLTaCg>t'AJ7fvhLe9F>m܀J'+ϒ'Q暈1Swh#g4rClgnҨ6lHat<]6A p #-XGwKCB]QMt$_bJgÈhA:,5"kpf= jwbTH"ՐY&nTÏk @|xT!}jKg[IW\v] C|]c4sP^(B @=fs#;){B د`:C{ߡs_ʐPrf'4ͦ_ѻBݞJ \ʻ)7.~ xC'쫼"v;o}OV:qȊG{׬>tSG';F[#h:ր%}HQ/hlȧ.$&WeoOvMb#ѥ&"x(eE8ALD9jr !jԣ<%lLv`8.1ť{'(wO}(K1.;Ps^Vt?MẁU?jpKp(ˡUU.8B!68A_h9l2I]/YA䝚.2]%_dm}n:ې jy]p*l<${#Kmf,Ңz4I+Ov*"83Eht~fQ~.‹*R 岋{`)<<O-Y@ rfeˠ؂}h&Qn4AoM_QX⾪k0,(沏FnХJ@FL+>aE /j =?@kl*.&?jl tkbN=# 0#9dݫtyzeŽ( Nj-'4'w,Kd8E{.~ ^XNYW0pi$aIi"(WêlpId)IFv8a0_i'@{ %',{D U@.ēja{3^ȠhyNO9u` 0,9ׅ PЛŝ NOx+N"6wNx{!J͞RJ賀ehGuK*b4Exg.[?LSd\ˀH;5VBXt Ǎs6~  LLùts΄f̀L56jm)W\10ZXܷs|P60&lvGr]{zv%'͐XsyW12R7C_׳\6}qM9 3j2DbR " !9?:^KOy x+3@̳ZF’`j[ߐk>[φNȠb[QKnkߑ:z1NW %c`}'P0,^^k] ΍!Ī;0b QL l[qy,g>Õ1ШU &a0o 1Sv #[%%1ڔn j\REP{hĀ!۠ m_XʌjC *'iY /jnWQbHO kfG@\}ap_4Qґk2R AItt,Xå@QZT˳Up<_C26 3Ź{u-Oa"au׷ep&LKȤ0=r#M=蚹S׎F.}"l^gkE'jRx1~2dDŤX SzJڃ=xi>Li-||O`mVkE"-TI^"A#oE QRG'B!,ZpX3||bM#qR(RdMQl؆w'IVw"]""Opp*kZ5 5recth7Tem9e!}!iHijL~l9"@^&0 =4Ձ"GV,я1< R9PaZP}7)]95NC"ɢp\݋}Kϣ"s>~'ӱxzh$p:k%AL77ī3{EIp/B4jJ-135f[C"gtт4&#D/Q\N3&Is {m<HTUHя :3v9V*Iw{MuVPXfWL ۄYXkS1"4-Y۱v֕/|gSr8LhqjFNF4o]C<"Rn#˙F}1vij5.)y EwD\U<*;f|1At7t*["אÁ< Ey`K$T][K$.KRa/.~9 P'>[&f>$@46-,EM (+>F,3zEGUNhM:a*(~kq %tѳv#OxAؿRQR6i\U4'Jp0bDW6ΒnoϚ(HU~s9(^ufuiNی1n0^916+)+Ƃv~}J>/uDX5@-F'rV?qh@1AD'Q#$ 1uKDQTmu_E鬪 wX }9 FKjOl4k;mVdQuhic>>k@<1:麮}lױbͫ 9K'n;Ųs,GoV,L21}袡Mg|܇q*8'}N hP?vEʼn4zLn ґdb M%[>- }@^WFDSEsЕ8঴6J2>p "v2|Q2=sy\&e/syR9:dajSB]Ĺ[w\[ [= rf;Em_|Lxx~ru(Rm2'˯8vߪ8Y 7QrH%hWu&OS`9pv`٨Ġ@w03Uqpk槃?RG\qQ|5XҪGN{ u=nirO4uB%"8I s j0[S ;PcR.4b)1dy+u'2zxEd"P;+RAQ8?B ~ 7D|Z0|Lyuʻѿ}SmVV\9R' =1vJocvN^yD>1|E$cY"ʿs}W30-}&lW^#C>&m{#τCh )i)@FVeأZEzDa~Adc1XfFIo,gvYycku+; ;|XBRՖ=ˌ XTtfj[XI]os5銔(ˬ3A5R8R H#wwe}J 5##8HRwIFɐgRb5T^$}7{vsxCV13? U?2N  MO9Y*+qs`B kHg HL+ l+9; 12hP:ح ;Xp4JþIg5-7; ƹ'1 eP/`tAx#i0 DQ|T]A'2\zYtKn9ۏX#=3[؞70-fl @6 u܌K'}=9! ~Yf>J:hcU@FG/ < >h  :m k.őgR2-Atsh}5"_":l1 Ǘ& Ya^4$psT me%}|>n >{_P/ (&n].kON 8(ǺI?%ӮjF]̟ CiR| 2Du՚bt{S7B.lz`5fѺїPY [V=o"4msځ3 VTC|RŠ3o*LivZүlwnĻ %R8OmI׈V}{,TP{ z h+ D'gNjQ S*˂i=nmJJs٪ď%V%a`&+9TJ-?$N~[S 鲭A5'k!z=| Zs(ya᳚G-;ѸmRS_IxY"FEXI2c$p] ~ ao6 L-r[r3PLP )?goEf qyTW` jΛNUY|Wf7ҀK󎤘HgC+E0 zjAxg;$0L 1r Ez@H`<,hF 1X d!(JYҷXȁ>y>\dpeܴjz0 "1"!˾7{nkdmYy寇{JvP%C\-\YmPGғ^cGoyHr0 q άkѤe3ӊhq0i3sA)Nj$SV0ACcyxզ*S݉AyVs(1m\$O .݀Sփ9n[u]; |qqè]˃͟p2ݺd&S< .nou!x $=IpEEHFULD׭n^8ڞMX;(|0UL 6Wh'go5C{.S ۖ*|ꊏp`xYu\ׅBSM"zcFt'|o>Rz:tÍ$l wf-8h7 rkgd;ŋMP4z*YN5{-oSj>)uJtڿɗ^VB^S[}K2GI.Bط o@M竣1%+۷=fh<Y؃_ #ѭ\'T܁I/Hɦ~՚u?ѣOp+`yϗsF*uUWf3E4bV׬:̗uP8SWEٴA"czI/=2>10~)xjL:@}4pdzv`?`~ݼ5b~jU@մCiaZuC(UGWE`T.@O :|R``ǭkSP5jĨ6c/ jŁLĖXm򢧚0dgG`gVq/C~GXLԡQt% 'hBKsuZ >=# Gr]p,ǺbAB_d%FHywn5s =̦= \*뼌b9gUeĩxqZ 8Hƒa;?~Vҗ P:Fob rɖ @\G+Orq'[~coöLǐ(̺A8hvwStXn9-~g̈lRb33SlPhWo.f9m- LoF,ݪfV(HqH:GQLGWV>-!Bh-8mSTĴ~ HbP˨[A];9?PBzލ{%Q(czr2|O[# Е9K=LPp\@=%Y??d#.럮h^@Lv=vlۡPC#Ċ>}vWHM`.n9^jHh#Y~ܯ>U:3ւ`fV3R>XU}w2";lWF~=!X1E!-K<lEaG\%_r?_:# X@?@ NW@QRIl Bۤ˜)Z"Et)rȀ6!h[,+;yةzl,/fMBW}d&{v9XX/~n5K Zy.ANR^=LGx U>+ Έ+g'DQ7u$^u*FS)p"+Mdݽ9}E@ z )& 7X<>"[ihR ?nϜD-X hp]KĒXnX!L3>AeJ,)j=a_c/1/aҳt<59ZN|'7XxZOXOKG4 z|D%X!o޻3P-w XP{$ZRP54ڥ}zvDSѓ;l[Im w;3~zt+-O_D07oW[T}Wۍ:_NyIw Eȣzc q({q&#Q4L*L/jOCݖy>րդc]0`%~2 z ;-q7v=BjYS>OHn&JӆEEfF٣]?q+urZۯlp]ځ cQ4)^q9ť ׆ dOnԮH@kSf;WSs(MUbXN)P{bڣo n;kc-SOlTWU%N6E0D;=IZl\G-òy>ۺk<ዒ*PeM~*<(DXw@x{Fa'wJ6N qvABtxun+ɲ&s`4/l V1Z ` |'Svj%ƻrOvhM/w=PEIovj_t9r5Zu4c^'*c|ҐC0l?%Rd h^:-9[aaj,,eBmz֒}l-̣p<|9^<,bt,D0z3g/:d.lyKg_O\ k(jDKG0_*|FKOK&;''t\?}uKl{mhSPN`!bg=D&"ƨgUoGv(_MA*Asc=tIUCI 4KmRzxDi$`PnF=ž߭)\׿ 9.@ &le"_jQI 7Hb2vIkYNU5h"Kq[ܠp~Mls9:Oj EW+lA0˿S4tj.8 h4&Ԓ>YF7{/:mkSl"s/%nOLwUK5 J5sN*)wz-R8SoBuH$p?\]av'?7Q4.IHjiD|2d/N'qsUQi\rA_"Y 'Ud^nY{@1 =BvrEر 6F5QfoA=l1H d5&K轶 ,hn5u;=F@$#.?.›tx2M@ʮIp-đx 7J1BڴF uaL91(h/du j1Qw;iz[|ISvA͌Z/h;|łj8{k0L>?R 91# ҳh](\->UoEw&FC듇, >0>h쁾#ז5ХN7>Ur+eV~[egyb+Txf`mh\9RNK P_HNPM IEJuHPtw!7WC-} ^y՚8BEUEtnf޶0]8qmiQ4Aԃ- |dKAoo"jJN9 SO-tG]@)8/jN;78G_!4d_Ms"`qco^_+ǠhdzK(ϾV| ..HfćȬ{jGYk8J&R#KiyyROiĭ|G/gzq g5-qmׂSsɧ`†pL6z}cM^g->DՔȦˈ#O npqr*TX(<槄vņ=^Ek3lx>p< u(N6=&il6\ W8.^@MM@7<>& bS늯B\"ߍ gx++K>F`w[a:VKl#Fbn 9_C-#[Gcxhh^$=Oz}h*}ᑽSʋP VۦL04ơh'?VObKwf?#3 S3I+0m:㾻NFfWBGuuMǧ%㯋^sib}Dqd9Dou(R X006Vs W&B w]rq)SFKk5'&l]$G_t*h'J!e?3E1O2tfhk D5\"q۹ ꟸ n@'g}ON.=]VZA[xԗ-/T{{O#~pCl.u֗{i8o(nJ\U-L]aNGL͋$h84̧2WoXzǍ) Oo~r\XMW4!aym Fd$Bym8u⤐'vWctYZ&o#-},t΍.ؐ7dYsx>B4XxYZ}Kݚۺ!TC_!p4]e0v.!7GT:ݙu<.Q>ְԌAYwOՉ v$4ːz4՛lt~'/9x9Ѣ @oVroÊT8#z?~N/9.Fw4JLԱ,i!ŮSp؝he]  dZG:!N 9AOG$p1Dg'6LuCE=f,Fh `Tةwq^'"N67,< l=ݍ:3A?xS[#ObeVmP۫p+6šWNt n7N۞K HM79RK۩4\ȯ%e)6Q0lPFzu& j@(&Ek%>q3نS -Wi0YH|c=|OpQk; E(#3/F$4J ɋ_v@r+2q">/@ϒwy< NSg_r/N͍yt.i> ܂_|BeUsηFZ4 (4Hdjb qN9[vmI'%gz<@SXQ,na\%DWruhIdc3~e 'v8 19@!xe!7fJQ;kb*^fD}vln`4wnظk&n//JXFsNDs vAiZi@; 6<i:kwo, #\a-dA=]|?H'Tv=gjkـ.ӘZoq0‘s%W*}H`A\ soa@I@U% ƫW@r5搷U!;Y3cbH83G3y<krӷ&op+428| d1r @EB <(bRR : d^'r%|HvDTI17~~A,a8RɃ YQmB-aXʒ4=P_^1{n=zTh*/7Ȁ _2r ˙~_\ 8Pd>pȬMR'm ?;X$Bw=uhTPw q@Se>ٶ`0iD0׺ut4Ո>ŽޮJ1*-jqtK7URSsbQ'S8Mbt˟ͼ Wϴ~,MpmA%&vJK]9IO rHrɺqAT$zܱ(t o.ˀNBw7}9en ~F|CALwWip -Mӱ x,E=o&,ڰ@h:YQ%ҠTWt ̏Oz|3x(YkПcKp  \]m'QX e' lRn~4Iunw'T?j㚷h:s '@9NJF_w'>ڷ~7 ܆QW;)" PU)ZXj+# (Vvf N{B715Mfu6;rWgo{Ms4xHL.}Pӱ0+s5'ʃh,mL#CJZY/ Di\/bfm+cwE@%L[ҜbX,wSspْ<4_ْc_bЋ^}!ZCl":u9OVilpm5bL!RԸd$~ bƕq 0elÝOh{,[4tH4=Ï`xAN"#lDe)H;U@i:>xnI(Pk<>(B@}*zOH"rQw"; >`^[6qmFo82)ϽːRR*TlQC1%x,u$%'uL 6{^8e/?sS'IN4J7 ţ<҄3!VfiϼHqdP_no/ rWq47鸁 eA`ڳ:?& dGizc,p3"kZަ'  hw>'5%ImxEifTƤ:[xU6gɪBQ)Ub<0bDW$lQ !m !Z kG,H/6tcIeZ_NJAL1PqS!x,6+QKގx}I%]˷`IrFucoFzhS87!G܍AUѴk@me0wY(DBKZ߯c|vl {i51񠰊CBETPG|-[@(tŔէ[}=msYsuhJ[ YY4x-←O}}B0EY w& c&Jկ5X[dnLc(R!ĤnkDKⵗL;D[hprd-kí~f w"rtPJŖ(U$)A4wUZX(Lw0)WT$? -)D~h8^`xXgނa)d𐠢\ʹ]?[J t,oS&no7`gF/b)++l WwH1PS}S x_7U9Gm/N%@8hs؍7x-Wo8è퐍M/ʙXm̦SxS ( JwXY Imce~2tYJ^K4;4 | ^`18bă@gSk ̰h{7cP}=s|:Ӄ-WXߙ-\F^b p;ő' 450{nj %RַzN\l4jpih䱗y&g)_PCuվuBo#e,Z"pG1R~2:)ͫYp/iAs޴0V{S@xxí#_U"mrijg/MqPPz% &%u`Bi{~lʼng_ȽNX70zA؄b]{5l7W򜡯\Y|SV79Śp4<#Ř}]rx4DWҤ# qα?Kܔ7 6q$A]cb ?nBwA/!E19NWGLTz#sv~⨙蝗 AL48z늫vY ǽpOal7&[lH~ɣŞGX}:Ew4&:gGS _x&ᐿRg\N2ǭ`xs!N߫sǰBotD>^7\*:Ӂ,R!+PNvV}w[ &W}'qcIX|J86V@m殄3IV(ut(mR8Rup)mTߏ@bc<9$˱`(u/yR{vxB " yX2! -w`V7j%R̃҂"݈.ĻbmJxtc8(0:a)]Y`a1 { t ׵CW32HLXsdWW-ͷSPeUäހF8$҆v蓸|s$dC!P@+A !҄A,PN D8VG1/,ĪSPP*sAQEE/7'W`^Oڅ>}GM_qa~{J1VQTAx Aw`YV,? @ ?F})U77 ickdfv H/vDm$q8ޣW®op?]T h_ LU8HL-0/ dO؅YV IZcrH}`U4Q )jlRvY0.A|! ڞmt9 Y7[S+4Z%N}y?RV/x370ޜ1RïdEZte"aa"M"3guspmþ=ǘj08z<&l&z_pUэ/[8eHRLV:-P $B|~q#F<@LﵚW+#OΆ0cbOe]Zs}%)>lsc%1y[ScS3ա+ 涹DȪME #XxDGv+-GjHŞd(D3Lݱe\gSD}R)!_YBI\&,UKg7YKA R;lwQ@XWے٠IGLLtcC `=Gxrxe@6]DKrvAbul6bcR\c].sg?K Gv:\ir'[pL#cQC`&^A&@ G)iW|ܰO,4YLqF F\wAj d>̚Syfy슯~F֢ e){ZK7< SiHy >EA:a&ps4laolx+xnd_Z$תuLvTڭBE+ Gj`ՌY`XJ+58)][:;RTjN˙5p *MCnjed9CnZTJ(n3w$vgrɒ1vŗ+k!xK%A=[mW(Ѵ[:THĺ-b`LP;ڝ~=3\TŮ5]T$͕~Y"]D^":{(1t57%gVr3pN"_dƴyO ~DFs, .0pi-FW"ʍ7&]~ܭ.h$ŭ;P]>_0zLwtL<^˻}s9WI„9`9 $\>vT yddU,-%J9iDnOhIp%'ղ&fʼTW)nIb#w[ Z R M|6ϻNsRd8IEfC n<=+hute3wj $5mG!xHbkQoO"rRP=75=Vb!3 ^ \ lG{*H-2\ #yax(mXiLu"g{Q6[E5N7qJl/F4A+յ7h9 J:c f3{ EZ>z/Ӯ\}V1-(9V^y\mBqjeiB'4Z{+6{ϵs)@qM@UOÔ-v^6Ġ2c<=&9*6br,Ք w[m[#|OˁR)XQcEO .YӮUUx| 2yѪ\ RVl@~a"R25p4z ?rl+Nt< ꥦ´&q:SyN ߰ȷO\Lmڼ,%0:?־5~y(QfY[+;%+NviXW;L+ֺ-!][@hDD|Xp7\S\\&.p[1`&A{c*e糝-t{sEw=y,G瑱3;/s&:x~ (8'ˊ6ځ⡈[o yy>,V1/D&ҫV1ɤ&b+. Ƞ{`_ɭ>*nK7~mD:YNuz;qX<_}D_f!z+qqmڧp%M1UQk̗3`5%H«1% 8ސ:i~H|QGY ^7#HjhPT#V*5"3/ˊv?k8|eP z24-gWRX:hCB2l<D9[&L̖-vluz!DŽ=>YL;fIDw$Zi&') .jX{;|[{L PۨET"O;VU'obY>:y"*",w˜hg=RDGj:r?EWOǥ# Mxƀ4GH:>=]W60"ұyIzp)>Rpj\\( 3,˿w8{`f68r; b2ry!2jWyB{ Zf8/&ozs`;& Qz Iq!P,y'QbY$ԕ La[q7N5O= 1U$8B,L:m9> EQN%ӸjWDV5(D%PA\uriv5l΄ν_߅M&0yCm!WyH.V|}S h&+vw&H1%2[io qNP0Hg"o`Zc"'w)3*?ў?^Lo}i7"JtDdv6&z.`q@+H_#BDb"İy3*#X@پa+{nq3ɹ9v0a\UV@| @wo-af3R2V3e%V e4Ӂ%ͥ>52O2o=)o&/mqZoh\Tn#yAB2[QL@W7ִsdJbA:Mۭw}m-fcvd Ϗ6E{:XZ&B(l:bVYWxbW5LǘZ(QgnBpZ|Zh- 춃nc:%w3{7({="&A xLïwިw^aQ GFB[4Esv[Jq\cjR҄h$0rvP8bntՂ?Ce5TeJqa+~n?$j[#;x=+v*NJ9[E|D>`oC 4ᕚؒð"Z4Sl;)>η ᒡx!/d^.=o X,\YNΒN0 ;6ZսUNF?Glbyqs/ xq5hXP ŬPlk (U@*B iUJʵ<-gb @$Ld=lD U%rV!?Q5[g(e">@~)(r&! 8 g[!fnx{At1e&&PY ByX}< a`𞺲HdH&fp TWN6 \8 QQqqo9s>dIz՚A m-XyV~“#{opNc, @AfN~w'pa,W;?.?q+Н17"kE0E?g8 OԐ4 řuSpPkxA\8878u~X ݀o/`vjROk`0UjLc-z,5=1ciźb'>s-,R.J8x.@ȂECL 60kJ|J,A} "G]/tp®xmA̜qH; 1 F<Njnhhb=~J-{ #ZGZ6S*z6~[ ^T[xAp=jĤ9d1 |^.1l;ukC6Ot$|ے'f>iT=4wla!AN!ҐTx״f~N #%&Gkiz\tkA-qayk+bxRlX4qT ?){AX|8IՀ2&]P'$iR=.^ofי T€RIuVgwfddmn[}#/B7 IAl#IGlq&mm+Z03-.p,sq7S*YGǻ{ όEºSHyz|OYz(CQP[u̒=8֗_8"=e>r+9*r|s2Oe2/Ce=CE UpvGf4f# k짚I.QBZ[*lze;N <َ󋪎$%X(dOC Nc(qAx߱vH!hz2tv> H\-M[y(%d~e,tQeCӝ?ARLA*W[(i $?tb]N/4=$1h}Yt ?@PTEM& 7"C CX)|g/)+祒4A;fbo)7[g8#O}@9iwr׹j._=I],&4 + /lɧ>ۇ-( ZQaC9hzitĎfZvMV`onP2"Boh?{QVD0HKnȏ-\N_KLVP`>FdmJ^Ȍ|8_A.&hH )!1JydI1B."!;u4ؤh=Ҙ(0,|S3X_la#N8 8}O=/0lЧ+x KɣiZ#ѻ_(7e` P :2-(=dX;OޏtSؙBUb}a2GOUpG@ݲCLni})/)YLwV׮otJb-u[P噏=sN'?Z  qy,Pc'_O)qmkїlBެO|B>! ֚ZLtjROV!CIar)o!8<ߜȜ{'kػ&FNv4#0{]@42pM/ ݊( r t( ,'A&9Hʈщ4&6w FwlqyQ8ﰩ?zg~ohWiMRDB~{Q89u]Fl!;MS4+xwk&B pN4_Bd86 Ŀ._x,gH <5?|> b ꁾ+mMLVgd%$7+5y?V//Hq]~u#*,~ܯhͤNtk-ܖ@` BAAC:-No9ːyY*D=( ~سx I!EwX"Œ8 {fh qڥpkGE58^2J1f n ܜrO+iTk)bp.${C7-POTRW)hHI!khL+ Q8{.tqjŽzV| aκh1 7WKq&I>k H%hp-&|ѱ;կڈW-j}F9$Z[ϟetM-+By]E EQ5ʐ)ܱ6 4|tbnF9 @5W\z !Y]Kxx5tg~ :чAAae~h $p<·kE'Ƶ[wq DJգs| R-~i 7 L&e# .Z3]@Vi LhfY;+[YeG zϖa#ŎNT S&h?Wк݉u6jE J՞(`z %nfbiS XzIm]@@z#rg>3yBLڃ3 kz)A1WZLUh@h2o+X2\ #jd o?E<P4biG^HÄ:AQ)~|裉C ʈx,afT.E+IkOJ}![CܗqW+ ެ}tZR6=YWLU|֦;gcR: dil'D/jTL҄ :n }ΐ1f^&.-AQ$e.s $V o cS\RYR@+*V*X,"X!5ySXL0|m4QaLO_kEbnmS&Y$ ԍr*B7!(TAN^W>M \-HH['.xq+v#l,W&5uQ`cd:f/hĤP8R$ ezCqyj׍@$% mRwJ~f8d׾ $}H%+N$cߩϚ嬦EW8A',8Eɦk( sY#A\faT ldxXynZiD\B[)Ґ?2h]UJPD`̑G 5`VO~IbYBNbnE^"tU\ H7^QbMR?mxgʬaHFѼgm~E'KY{Um>GMhUy 1$kZyR|10CZXՇ,v{!ZZ%ror)NS@r;uvJ.͞55S>NV6"")S;xtgd =(s祘sTvVCIj>彇3,n[]|kȼ-}/2A  (jljVAk|g쮟RY0b:c,|&CБ?^ o;ke!&EPrpC%KHC)儱{ JK-4 @.S6igE{.Xh5!Fc =Ttw|[Q6(ޔ9{#P0g.ji_g]Ƈ/`&( ׂ66ҫ(")W pӁ٧ֵҴV!umcސmq$hƪ: >NR5y%.5oiQAׄn_,c#sq -8rU0HAwDj "ϫ!mkIDxzA}U嘛$ ,108ǎ˾]'4MrR+qi:F1'$BFGvys_[ eJ:ҾfFKw$&Wc y_9O&gclvE_'`ScuC"G`% Tm Jn^4!¹p]GS1 "ż" XP:';oI1奶e.qwci0{|E!bQ.#?sd?$B(0]Rٸ_'hH ֺA['usZ4nkeyDvHY4 ?SiN'HON~,$E3UQ@;JG¨,K;+ 1S):4X% {[%y:uM)F)\_CS:ďpqYpww]Hz=Ec/Ӈ4wE69H7"Luߧ4껢A*N=l ZJ MܣúMF!D3q3*׬wxJr;ZHD)?{ zZ_]7+Ք $*!3u)z DWp6N#Iq%ŠNoΦM#·)p8i1K`Fq=l,#B?_>XqA͠&q515F^mc|'qt?._ʑsV.JwGD{* @Tz_zy Y=+D,i4:i'ҁށpS3@i VshΆ\ۥ V]/79p)ѕ98o <EY jݳLz6 C0CK{EWĻަNɎϝ2_Y6xvk^gF\D^": ZIv2WmϿ%~m*/ri*-^ap PǞլ9FV&9P=[!tZJ_y=2V .z82CBg!sM}u3Ju'h|"l؈&E];̋iC#J_GRҫE>YCn .S{jTJ≘Ͻ&sȅVLYcߘrK2?$0\f;DIe1U]WΑ t8#LǂaRicd=l}'{.4SF.ڬ4F:NF~zC5 HU_YUr#Ye[29 >!_p!$KXY>3A}/ѰG eD(5(F/܂X9ɹ[Q.컰m%v1;T?fuKH3.~N$>*-B}ʶ~^pT Lh&?Iaj3G?Mj6ܺ!tlo AbϕmWn_uCJ _Ԧ7Hib F?AoNW$g Ά#X?SLJQL'巳 DCH=MkUV qjhf&J*Ʒwɷn#iފqaK 5 Sčt?PGI_`ԎqNCT-Ei~KrEtt6<Z:JIwށ{Gނ R5u+} AB\YIxbj_ڤS>eA2L㛓ni0?3ȝIhƈhUߖ^x}lIvIR&#=_T )SBI'FR%IF*EKJiA6f܍Г!;) ۯn[6^_WDY(9. ?ɹc7}W:#9*C*l(!a65,iUb.ֳ‡C69c5# R@^Cdg<ӳ{ _TQ+Kh/lrS%Dy(`a't&êL_lY Go ;VvԂmvޖY䚈EKk` H~wMnCV > `U8/Fd 5L2%;4=Th'@/?D,=+K5V3[IOׄNA{UoQ\2OgVBoJ]mX kr>!X}7#WO`\ 5 I/l*$BHȨ9[oӠ;W6-W0EATEطi=8S[_P&AUu@:&,3O8a6q! X( Şj·,&1)8ĂQKkIY%7l%Jkmغ @`6۞j~;+Oe1<2ߊST׿2VH٦X6VZ 00 ucc2#!^:&D2b6?a]lQ'M;_Ľv9B#9': 2sIU"t B踟iTVr ֩ _C&@ۀ( <)*bKnGMGa D|j{{5=GE\{ze}[lV<;Mhri{ qAhS M:6%dtJ@%=ZF1r X!vh_@ܓ(w?w[[fi%h$ fp\s6:#VDY@QZ[AHUt>{bE71krHr/u> H'2=ne-9V1_?@Q셇_^9n@ {Ww11yt^V\ #x]bފ>OegzphD- ZG&-x+mYqt.'qw4f!uFFus3lQ9[-$|!=uŒÊ؈\6;7S E* Ё_Yd(=eVeVm#Ό$ { w٢a-P)-pX1ĩLv1 fGaHmg?DS }~h0NI@{5M5' @ӘJsӵt"X^ݲYKа!y}GM/[KQ5< y ([*< Txp W66Dk R4ьDBSïIYϫ5M+z:(O m1WR56&P sQ=6+=1ũ \P}CVc [){o=xLf&Zxm栯gvRMu=elg$p._Um<|ǣv+&1l%G}lQS187B`9RdPةGD=6оq&jaleޱZ4\߀At&e+KWi OFKɛʩ";iAŊ9q^.(1w$,C,xsz!,O$ždtX&kq7Ac Ԫ;9X_(<߯vr,w:wwPBAhvq|KӮc"*+ TSr(?PmIjS $1zT!v*F2c[խ75_ywFywa^3;HRbwwHpr@9+3Z2' n4׎>c jN1KB{H2.IptjH\HǛv#L-@OA YcnnOUc״ 9 $)ŗg"' \ s+>:deeɛN~e6A_ҢW㇅ꮄ1`2?TQ·͎Cɉ!U#s"y&1 ߲8D`qh`dZ(NKc13yGVM sDao"iB'-ťunR2ίT1P1=ul8+#KzhJ_SI. ;k&-N Vġ3µt`f7DG$3RgK\Ќ`]uZ9 ٗ@w95 tٰ#f\| nM9J̛%_W\aqfq0i !<;5bG0GR[PONXa g~ܮ\)G6\/̻?A_Q$e(iH%]GsðAJLsHa8(DArBI t!FIӠcTD$zKCGY?N>xΪ 8?bŜGf{8=`pOJ)gDٻ/a11͕a5" ڐXj`7zCp&O'V-kWVifG&jV'J%2_p<:O5I}"SQL/]9̷ (FPp[MЈȵФk3Y:Aj.bׄZzĪk_9sQnjD ֔cM}<_ Lj;H!qHdJHRp8dI H)P&mMʅAh23Y隠aH5lOE )2@BluqBxn nY;ώgx}S)&V u+)3u쪩d<uMRzp7)C0 Oݞ]iOx>"HƒP}wŀKdBrjzF:o}vY~GjXԕK7-#htĵtBs~} KoVYP G}=2.٩)ڙ}y>"D-UZ5/쮶Vd|j"oujdg\VwgI.r6O fU~d=aPb2=Lm0KO,ϕw~+, Vηde^Z>hy|↯ -0 Z}HK&_B3wHKg>I ,y%>HshEhNrgpjZfěc^>$Bmv=@d֡YBRiORA[c` N|W9~RFW(o[v;>yGّ╝e%ڨ[7 zK5֧ a:a,pT#D!}skowt Jjڦ7cs5}84rK#5j/͠`ksB!P _X&+"-tɫ2]C߭hǝ +h]}Yc55~77FG ^kq#YZ}}KHo f.E02GڡXi,%XVy)kNm6N,@][:50fo|Bs7BDV^r)/*]X~|ǔS=JcN86_\6jiHb>#M:bf$icΗw XT#^c,z2k#Gva#7!l]0W2 M"woFsjނYǚרce^e._:S}KW2▯g!,Q*˰\w4:Z>Ƿ%C)dFd>xL ;;33i 4YgUr-t6b D2[#V}DLts\4%$"<{ >@T_rj 1S*`T*2c>i53yDgr]HaǫE{O~N/:[A4I :9yЉkղv@%x˝ofG< g[ N9P0%<|9g>lu+7_~-c>|En ԩTÅҺ>t$A Fz'vˏvn0 QH g|fN7J=yH!:"b19pW(+eLdVDasr@҄ C&e3m=je8'qMpQ&C9jEa%J*f {RNΫP$ekk ?ZvNBM6FճE,1詝RĦT*r6L -L6M+ yUl4?j#߱++*y2SVS%c0,&cy#׬ȴrV0n thpԳFHt9\A7L3eD\6KΚ;ez[߃ f.*TG6;e+fB"ỚE/X=ҙq_Zy4 V-e-`'*.ݟh7fS[ h=L8o:TG#!j(3eCȴ}{sOiVi06[سbJ'KZf6Y,6ƓnfQmeI"1\9\1?e EA >[dd8j5c׆J#E<]ӿvrPr/c($NChtM:+0}2ygɽ`dvqa"eB/@y2E1ck3gEk[c! ,Hf2Sq]v!t}`rY5HFȩ`(Sǟ {N OMR$-Wnj:J]CLHY4kwttQjj~AUs-p+V:P{W맲U*F'#3 a`n]:>>@.-YO@UJwL{D*庠i:łsm }MmmD^9Ea4f B 1g%Cz戈L}GUx,3bm+܌|v#IgІ}cYPdb_CdD\!re1U+gdĄ1&?oY 9Ț:?FD$u.aG03כ#^y}*K2܋ϫʴ>p0 ֍ C>Av'S)®zr$O[ǶI ȄWF/IU5'(f;J+Ex|H'3"йfl0m2W=u|`QNލ᜷:K|dDBD[${o'nlM Hg׵L}84lwAu}ne-- 9,eD(͚R!v6m,^H>^gA%Hv+W^FX-GVC000Zg5/htpJLtCH**KrN8kǖkɤY\H`zOcc|\zZ Id@?Wv}_̜Ж82_;DR Vw_o վy@W/R[n>xgx Ip`>-V2"%=JtgF*܃4}>%,GBA}5gZI t+&ʛ+)uA~hܧ.s1L\N`0R\)%1-4`1"~EgFQ$hB&<0"Z0fd}S>e v 8f<m˼}Gз2: dr]{;nM}ԩ;H+F=_ cdDG)I%t@xKV__w.cX<_{gVcGr*X|Wn͵1X#@7Mc*SЃ$#&ѩjW J^AEB9\1/!OSE>R$4YsZo<6*O0zQPTi,sЮ_\ȿZj L۬D75xU !$پAn@e{Yc.$胂~f*ĆLyAp:Ă5`jP:M^|1{e=@t -6 H:AdxSHQ{ QF@R>efq HZM5& o 1o?)CEO&[@e <3V l/^*@g*g|hg=>mY|+@^&WeP! >pŎb8Ey{0T8|kq#1k`GNQdS/L9h/' [D^vj!!?pUVbq;LoXw_w22dLEe^TaĠ>/ qgƦd;'6o3 74lJ1[6_>J\3f\,&&9(?8HӈLL~TLZ`ڈ5sYk+ϋ֛|ep!IR/U7t`f_dJ y}Ȉ.F-Ӡ_K\I_)[ 셄[+^ef<ŪLּ a0i)x^>P E!Bs_j:e^+D9W\;i:!,3.fPyp S;NSMlR[Cp剣$'[IxK_wFzb.&|*yYÆT%y2Y%Pn,Z:ŝ+R=Y+PĜ?ԱCh˝4)ߦϧ0eF#:pSw_]ju^D>$3/\D7d-Չf Y8\7uȮ;m8r*pejD&M7? o2ɘM0rv oٟtJQjk=Z6M9Ҡjg3u~!Y\jf|=x iU%UM$Hqi#cΆ=vfi/3mgO^O*pvTDl}-9˱M¬I+uIZT³agX؞M7SݯKLmeMUoMDC+)Qu ].ZU=h2mSd 4pB಻J &*IWa$[MxvPI[40$/|;)=1 D8@w+!]m v;nP`BMї-}_oE .RjAx΢5']>(׍}e@`dBE/CNcYE7ޔ[!n$i9h]S" ~s~_a/[}k,,s.)h;6? esI6Ҥ~yi=K&b?pPkΗw2+Mžb+; 87<<8U&TfDp#=E.(TG+0 RNZX [#ώxW0O=cq٭pե[괼GS$VeyqtU@IŔI;Xȫ Q9E'a0vг}b/nǎDZ2:/30lwhw:/!@=wWȣ%$ { @qsRZ dѫ^'x&:l+a ۃ(Uْ_QюA=dEr ln{kH&rKb":Ml ZzYSNgU?voAY0TXyQ@|pJ>٣O-P2-=?㊩ p88  CBYY픂ͶHEE%K19s ' alb4)&żѮצhnZjO3m*OeP#/1:KnYIVB?2{$J{kkO<:Fj¯|%PoTbaZ\a:2e#dMd7 a"`Z=G5^?66'^@u-.@1-(p]Uԥ`r->Z>Ꮚ@onYIrlğM9q. 噖rFwql4߿w㍄7QI_jƂn0kn1>~v.$ *^4%p_[-qLx_h o%d<"vSD|Ey< !ƑE ZA[w.#ӉU%kX@31ɼI1?7GhD 4c=b ݌Ŭ/UW2_+y =/~ 'C♂>̻%Amj >?8(A{`τMTkg&-25 X9;DfmQI+UT8oSc xdǖ\Q\/T'Fx@MnHNM+ J:6Țð窴Hk(nM4sL*^'CjNbbxY@[A)Nѐ+K ޕ.G"|Or {P&_Xf.$2EX2Uw>ه8z羂K8=?*#}fR>7'8oşE}Ms[JBІoFD{$rzĮMĬl;4q vH`97:6W6&T mD q4j*b^EX3{k—R$4HΥ}舫ж.І N dk֮YTyi>ڲ %H3N0v/RWw$Ȍ mdlYgq;0 PeSh KҾ^{&,h9?$ R>8]CUި!s =I$gui$=!d7g~Ѿl>ɓG/: K<+У7_K'q*tnI^1t p_e۽YHTJ'NJlR7+{y[[)\D}FT`ކ:6 &s[~[ֵ|4Yw㯌З:)q#!̇$[{%P[>8r,w4>fV;L`D!xe;PxJO1$f0( Q(slrU'EaUVuk%h*Rb2,΁uz">NإpT%l`P;`P#6Y9&͜ M˖Gi$0l'-L&cki?-9p,),D3  uIq H[ )#6Czx/N=]Z鮬Zom,ՃuŘ8Wr1iTNb-'۔\0Ѓ6S%4lGӦ]%~7mD{% r:=}C x96?ҳF65 O!cŁ3sTl!'6I۳ R7gJ(mWV*/~P_5CFE>V p!Q“I|WNK) Es4s%:]MoPٯcy .|^J U.HmtC,2@iY[_AP@[+QKH/e,+W77n[rJ4N}$4jw$~?7D|O-(pzjc̓PKc:,l&!FV=?-wQܞ6\-kO4\I(#jsԨ)a|Lz|<7'@ʰkg7:a:VBiqe,+Ř-,V3MY"e!u(Tbu~npE]gFY2 *?a_q6nO{ثq˹1+ 90#GV8\xR3PHLY.Od誄PIy ymCn>/x3c?qoS$x~nPo3eW߹!AN A7,[-034G[V#3wtfdMNJmI5"G}{d\2vu=c0n T>E–_I:gHO2IٷؿZ5v훣ѫ9Y}ഈF4'!^?כw=):[voI(Ԡ[򹼯d ʿR6t {ҝxc^7ޖ{U~*_٤mg'k26ⅹ\7xXnj8 ^ d,HlH?U%kVX;Hԏ`6f~d{1`_Jxy`)JF68f<#5P)boed=ZuW)>$V>? s)'M!nSCI x?/BcSQګ%˅=&*ħMk{)iL5 ]tX8ӜJQh&qd!/JZ84oAYxXP7?>7`Tɩ;)ӫwcTp7iR0;Lw!eoy0tS/('8\!J}-9>KũAfbĿX%5;crrQ~\}a֩ucDp,/&^ yZ־h^fY> ;*7ɽCd!|vVq^t*y`LLiTÔK)X:4=?pKȳԧF C2[L;Okn-:p@R#vE05$slޙ0ᳵn xvMH[C,BP(/Mj&r&lp~]>y%D'ʷga8xKMn#Fm S!0SNL_ : '@cˉ Agܧ+K*gY?llczr#샏̉DK1<%"9jD(p UB=W','a(HsV.8YaAx2oSMu0hY[p8P]vʵwp0 TNY-fT b)nWlU^܌,/Ojzì}ahr_jIJPH̦s)WOLmgX_ r")ތp\\T"GufYƇ!FѱlOMa,5Aܵ1 a3pr-uA0p];-U. t]?+pY<ҟJX;2f>nl{A4G C7mMQNCy )+ci`|Z6sxH1J~H7 Pc֦5 po&c*&wek Ho{ct ɐ[Eīv,5Cj1X43)om}}R12,KbF0|+n5G(7ՙMhX?,zdM^q8b߱Ss .S svlBCgM6Pf[ a)96f-Uh/u_7j gCfJO,%'euSh비d({Hwj#l׵v~bEӧa鵸$\.5rȐ9 CCU h%M*O2&Rt>ۙƟ#ZlG; BQhürow}7l5>\f(/ah,ann)~V$T BκO:V! mAͩ, /AЁR_c_sſBnF8Qtݾ `Y/jX?z1U&+27DpriBDŽ eyS'Q~䚡ϙ}+{;KpDįe2\ٸ~Y/yY(3@UX8\^bH聨' 0İyYlf$YyR-`°Ŕf2d@ArGp{F9Omk!帎WdS@ՙk91K\#L;P-];4u0`Ku j1DsYUjJٸ>udݫ(uCΩdi{qǧv2(Zo"jEPU|!KN[vTI5 :_QO/z % `}ku8*05 c48&ws$<ʽhɒ)y>h+(a'ܻEߚUNG5_7K ,uɻ5.C oJ}A63"~ 3r -U#)jX{NDq'6d]BJCl(Dkŧt<~O&z%&XLC7 |! cȰWB0 l* x$Bqg"~hVU^ ״%e.F1rƄ)^}J?i,Km«ߐA}3Z쫃oN4=IZ/=6"JתOb>[q15> 2t#pѼg N␱\tDyՇϔgXj*M +LRЙC&ڸO /yl h9$\%t?4>(e>Bg0Qs@K(N7SZ@neݶB Ue}Ԙ/#8\@R^ ufOʓgQ̨in'oTDE^'l~_A P?`ZtW URl6ׄcCIo^{L.zЎ?LԹmntOi8,f 4/J6˨b3࿹Gmlo=3ɯ<1lRu>4/k| (ak[(OP('Xt*E$}ur1XPUjIe1h 5ýǺN"i e#Sw*l?M!^í2 )=#1E|Ee*G5φzc D_0YܱTsFSj|.LgLЀD;9 g\p&~Huμ=&}VNv 'h&^z!nҐӹ/YR>'didߺO-s7ަ,N W-#B S'Orftg%61E=Ke+apPT'X'6g&[|*w}T-.??pUUB!>9oI6/VN%kx/~H |ƴ[ w ΍.S^ܴ'9.`tAm㒋#͖ve8EW1&z3QJ[j!cdbK~2o/s6xq+f<Ɏy%ai"d{ (& <,g=ȪZ7h"x;´Y!AR|bіr-G`h~;ur`?o}`z l5 $ޔߐt+xR_Ws?kPχ=+QP#PvS*qByz_8C5.E-_M^ƒ췢$K↿cXs`o61W D1?m~/qg4O<0(^(~iLMV>1LSURpY;-yRzLeX?2&`,M"޴(!i{\Zf)xpgV-p)uyfE4e?cICo_U]vVG?ƂqpsкvTeVv`\zxwx7 iPPҡAQpf%V fU r\S^4W M8XᓩJתxOgO|z+pmJx3-!5BבqI*`y'JNDe陊働[ݿG Jo~KwP:I'`xH8qC@g-A&)^XW@ȿ]gt5Yv.TyExg.z}#ը7iOvgRh4ҿf|!3%ck٩iT# >XT d+AGv0CyS90jdv0k7& չ&o-N(-F);(Laq\> (3 :* 1rVeaV&8vbJ'+mwPEhj-*VǕz>X9&%hƇ(;]:F6=^894fC5M|34=SUHf*>[l/~KbuDrƦu[^! 'v1H`2PFBrz 鞖iD-aLmcD/;|(ISg[b)I%/",;DMQ{ 2I52A m{AG0ZQ'n(21!\c}#5ɿ!H#h!}K--OP/I޴u"ey }h]xPYC6!\}@4*C5F'b[_AWF8E-\}C[864Gⰻ v{f(v{;洁Һ1}N+Gvgعlv]s.#V8K!G=ꡄtH\⧸[ D.('a,UH -?'TF"gf{@rŻLY38W K2Cp'0 Jfh H?Mnlw/-kX5]I 萁$0S|[Ma=KpX"EENPԹ(M.7Wy>:z9\m: Dv^=.?u)2AN1ыGr1O14 1&Mv/p=R?#iL\V웕s?l?S``62T ^ޤby\eŝ1u)jjU: 7 dUP?@*ࣶVƯ$l8lqc سN;gێy2eRX~6Ơlb' Gr^c(+]YXE7V˧^O-`6IUT>?|O W'܂jTN͵^26i%)aXWڤ^m?Y4 xN>qtZ.(]Kw~p}@M݆z 1-i)AFc%H[:q dO~8;xgHҵ#t/9[QrY "am{(:#|v$pڅȺҒ*Ew锶\E08"ry(t?uZۮ!|/b<̪w~hMb_iTCܧYLCј,ڹ BG }(Dm{ wfLfDL ֏%[a͗.?P8'ѱ\ĺ"Rh~^wF5Z0v/0,n&8ĥ=i:M? En{O=6ƜL\Ԑ@l㣪E4=Fh0Oj'N^!N\ȽXuW_fTuA3/oyL} 3NFT[lq1|DPHT @a?R-!Ewey[F>mảKV)5܇:4ŗ<l ?,oP=YG8r*HsLoj]0h㧝sMU+o 1v_a،LD.)nR}[iM/ dPy57b' !СM`SK_CNĐG +FŴe`G~+ 7 NK ~UG &7&]!T{>~[oEMXཋ0?/7m+4uu $z5VWl`L.,7ھ *|<g[o@}__gp8n˹:ɐ"-36s[#bVY/ҘHiH*pʧ2xN R\4kӘ׭,qpaU%L  kvd` ^37ٵL,u6#C"?9Jni\d>)]ci.eiB[b6e|잯 HZԹ8D]φ&Uw~Fۋ}eBoƃ:j&&B&;)^%ۘܜ]cot?y-J]+xٽPxō sp+)NϿl=a~b^ZV A [ЊMrZ!b|7,%^`=V+Bު@`:j\{_::{v1r!HJL/کnM J~K`8bi]0:*ؿr#޴3s$Qh%;L~۬0B6ݪ4s|rC! lj*QkB!0' `Я/"|1Fo܉r#@w!F&o sಫfVMrlXNPj+R{< cw}K˧?4FSACgyݶO.yH 2㝂/3Dj ͕ӭ?PZmqv^g8!nnE ʲ: POgжWW2~] Dl$6QT҈H丐=y5NwXʹƪ(wӈMƁ:J&OtTf"]#/TcR.otQMpG#EX c[Wq,^ly[/^}z`u(Cs(p.,I' Z|b0M{9ytA{8"=\DuJrjC3 'F$Wh I!-Q;#7 C*- 8My]4Yʨ@wnF9~ߜы@2!'ik1/.@~%94Umd e`Tۛ) Ϧ/ $Ü9F<{SV nM 뤜@]z&:Z:W NN|tRcnD7]~;{:?Ox>L) jI!۲߉F(ʾ(AMEZIҤ߿{ !i|eNBU+ /t: udէp~&I.I* $9'ұâaBY6O }"%b}i{j.#)o1*BŒG6sћK#VJZovYВIN n$0Pݗ'3ϟ|^ǜUa mW<;"=U nqꗮob!z]0PFgB4pǶJ$F{Mi.s]u}k,K}/%# /]k#I5Vj˸=TR|[Mtl'jȚ',Чu̖]RnkA=La."{P&4 1kXy<Q%n|{>@)UWћK9w_Q{ P_w4b͸gz>h4҂?ٔv0;kiPuEaP, QC>5\*.9iIul7i˒FDw`ɗεGP2OM9zSkRfvi]^$H^NGS}/T1:u%Z5uŭi6 =8S|A ~ܛ=)OuJ@).I<OIOi!HMճwX r>Shj̑ĝ_8@w][ca%p-YFEEclrHBqv&ѨczSYV۩Ƨ*;_n!k];q|]eٔ ,(AF'U40ݢ\W١,Z_&0P0C\. ;rYg ϼ6`m'!&~H[f݄,e' zu$07f;5q̓AY[?S5t{ *vOui2a*nTEmZk>+WIry;c񔪀H=t]-&gScXYVF˜~&{ Fͥ;E]?es_ <adU3|ӭq1QAmȝW&m|+aɫHP-ŏ.ѓiG𮜒&[0Y^r$Ң <*_?pGǨx.P|\c 4N~aV}y$ [oz !jz p)h)hd^_sqhdgo̺vs[YMs -a&* p@ߤ@Bڌ@s%A)N%lDVϷuՎAa`:&"y4JA1F:bkjYLOkjzעG>sW4ę#9(& cf,`@F&GdYVÅLDKdD8d|p3Hh,3P|Q^rFIo\@WSU9!8Zxo 8|Qiss+=<-$Zs 4=Eji,bSXE%016_  fK,u1NtF'+~>D~&n;L&P*sֹ HW /cX$]ZY`0B4AGpp1}T hv[MvoDƑivj_OEjAӥVCeQm"@Pk[ i,iߵ$ eUcV C)̑NNoIr  y_/p^h ډC`qYr3U\eIE$7r#, 8桒WsB%?.&rJ"X-Emm=79Ӻ kE%+`Av3B41x8;gY Kd]Mmroi'McĦK-yh / K]\ȠӎW!HYj^0>b /eob@A{ zlO }2<ÅcC3` -X+YX$r |,-NJQ~Q(%`[+jbO*վ)Ɣ[VǕjr_; SC.e@͇6玪؍:UkڐKؾRi#})]kUVjޟMbY>,qOhu9OoQZܗX!<r,4 Sk3:iTTNtﴟtd6Yi ͱK2|i 6B{*O2W8'o$%ATt3Ÿ́9 ׵?ȜAN0Vp{j٪҅Rh4؅I?Y)49ad-#v69G8}AIyQV"종 +n㌚8;ڌLsL Y:߯=zR?"'4q+cV?ŭ{*ٜ^,1eĥe>Tc>nQ!"hOUz (FF-dCݠ~(d v=אYR }_Iz,D,`8V "L-kvɅIS>6X^s٭(B"JH1̴s%n&ߟc"iz6}wYT)<"\7%V&XeV}IN Zd-`XC;guIn4`ZLAl[%y2urBA5}Y66^#y y؄-Wvź`B(q=i32H%_3|cqnj&vy<{}PH?vuǺP ,{iK@ C7٢XAahs_}77q;DXF# *#y̨&N%hzw‡3*4m,  FgBF{NS*|7py1m!zP1%l6"LDNgp`Hay!ux*mNwPkJDs„بL4<4J@EXoنXjc,r"dmwn&EnauS6ഛMpH`h b__TZHAMMT e䌦h[/k?m-sp;s2g{`r% RȄݍ՜ kj®Lzg(|\tsRAOX9^5U̓;o$̥AÕRv%z:3/39|DpWi^1&⚺7ܒ֑=dpQ߫Yj ,\S5TvRQP66Օf]d>=2rf0k٬yi}ddHpVNLT N`} $f|[?4_UmkP']s 'Ki\r},#0K#psr %dU5SZމyqBMm[e5.ūcě5}釛׼_2y-7G$ ޷KO@wUԺ2!gs)EV9+pw%lgɑS)UY 8c{JH9}IJKǯ#V{j8rϝ콥K'_8z֣]U!(Rزyf6D Wկ &t'6'1T0wö>&#ߑLvQjR!4Bp Ύ=@ԅ_ 7de^rIn|+%I .3ؠ+)耽f\ 3*fXlcg.g{%]+\Bܞ 剕u`8'A.sϾ2My IЫS_dF_hu-c*wh$:z]Dk vjrU0u+mʪW w5`q%QRiGV,UfU0g⴮I}nw ;E XE\0?>&G}ez; )sAud{<:nM@G`j`tkd~oūȶ4\g KS~źkG9#`bvJ?D6119 >I׃M*Z3'MzJ#]bB i~.)'K gԇ۳n*g7{anK'C'dg6ݳA3Cx2Bu~l%:9,W e.Hi, -5=+Z..ßj MJ311=UB(hSww9K*Z z.&Oc?(魉խ+ʊsJlܤKpI]6nmO]6L(&ͦyc]ȎiD5?-f+y>s?@NY܁)];fo{M>OBu A]'cFYIԜ8\ʯhdd. gܗx >w( h (h}'Ϙ{1)l} V8_2|fVLv@ 0l7w..>"h>>o 1d=?m  /{#蒡4 #z( ygfLo}>K}W $K#Dc:0|̉1?~L:4ΙhnTEǰƬp-1!N[d[g]ONf}XL&,,^)^+Z4&>evA%Uj{C3톰=\WZf:nj\PY[(2Qiy9 Ŷ F4frVKf"K^~M3z/g#Kjz̡y fyʷD豘`!jq:-d?L,|oPxį$< $O#:Or k|VҺhjbJ`#h fyE!sDpo&@{ UXFEAY;"K^ϧu~ eXqgr`8{p?aZ:7Z]tI ?pTe, `yޜF8Տ-DͲ]ڒ-";lcO&4PO*gJ$( 4AuwJ'ӍW~8K4ER[/#MO_⧳e;^! l}Y/ڊleR7Xʔu:4]nbBXVVuيYW%4#I^c5pu'0^:~C̰BdMdw{K%[?wB/A:UxT zGT~E]%kIu)VW}3d8T UϳjX= V75i:f\QO<6!RDgY7=OSAV2-QkO }|صr?Iɐ/ SNwS?yC-|5e%3 mڷv> Z'Byae2}K QDIZ9ZRz%ÁkR[' 'p6 fЙw ZrW~ZHAx5nJoվ#}lPW 8*OK$C"_WSq =x^ʜU`|eB k"~}is*y@㳀kCu o*} s0N|ϵؔ=c5 ⚊kףUV1:&}] (/-,|+"_ xn)'I$`1F=Tx>[dV;O1|5ppi\ 71h8c%9h n.ww\VztƓ'GJYkՍQ zikOa6b=I9}JF!L)|P~ʥ'.$Za4]6S8mxG̵=?; 0>IL`4x'ы=C-BŖib15Ey+}ǍtHNGuv!+KBbɥa0YDB4% K5 .SױG%ej/KXxDi[b)GzL-}`cIJwu|O=׬Өeg&Yթko.phF]pF%y08ꃖK{YZr^D܆4|`y48:i7A u>>s("kaA/ND.U# Ohf?k% _m@zm J>=dK!.r$侇KnzT^M4)#/"<LR7ϾBSAکEaY%F$)QQ-c-gç1Jr>ߪcfk]31 lz :I~gh06 ( {he1|;8*'ձ`J )]s8ݰ2EM_~b Q40`-|w3ׄiy!9ljʵS&QrWɉYacfuz~" 07Iq g'IPyh  ,)>$X-xBi0M1ʞxU~}R nꖸUe@`mbiwȲQx݊(N`VHu=WCfRh91 AEvHH!5_AURSgr[=:aMe eh IV@aplrn\mPF wbN0vo]ԞllT8O2f2a}N/8k&bu"gȈg5+蚏o9| CKG-eYK7#-UeXnh'晀M{hLP͚ߞv=c6+w!KsGc&ސFQ!I(%g\dq M`rM?27nJ;^a R=Y';V B -&ڿYv;Ȥ2${ԋ[ږ.\`_!?g 3lbX(w:PR5KQ"P~4set g O  #) 2 j<7x唁vEBKM_Ê`R*τQDqkqV"*':ARH,*t8+\$:x~>Z[la(vL|c!RG,ma}tTxz2{eS{[%sF~%Isc?jؔt~bvydĶ3o6H-*g,K.ͧ/|bw3A"z)H,Y >7YE4ab4 |rPc.RMd7 <8uB&ԖK-F <#ϰ {P(rħ@=NKIK)^+=ZȏTV%5,+UJ0,5EM[8_` Wkwۺ1e1 IrrJHCVz.١ỽ^Mm3?N>c@+7\Mʮ)49VZn755iU0AIu mmku'Oqjd"Y؇~?TZ|1IJvryK'Ku[r2ml5陒O79lC?Z`Yrly[,i9G|zxJtԯwl,iFC _v smLC3TY'#yJ2;> [T*%2;hXuPQ'NWj\ m3&{~bU۞Кw9wF{¦Q";#ۤ۶渉Mb26Tk {YjD;QQ[\Yσ ʮ4/. ^.#~;TiA,W_}iB ZRʧgRIOq{q+iFr3 Z:wUV:u6BPL&PpJX kE 6[2=P6پ.\7@mo%\R|)Eik($>$%}QS>gx"Tp0{זLAW/u[2X+.U {'eCʒ}"*,c02^ޖ?a]Ɔ^fa]a^;&H@Kw {\k~SKgW%Z]]㼳a IB{27Sز]ߪ`Mg~A6k9Z_ }茖,aF{\a9H,Gƺ3Ϧ„dB=)z|9dͿ{#~K9=E3h YB {)4I1^`앀wS|ɛNO,eDJ1Ɨ @<Ïb[:;U?ppBKRkl>aC8lx?oY $4{MEgpw %YLʢ.Fl:G]&ѡaЅ+f3HV+_e —,9BU{܅g8&|?/9|T{9`L h#JsM(t : j \Mspu) ;f3a ;&!W>O̦^⶿ֵqY'Cf跸&bUꞎNuRVP\@dLa8$#*KS5Z+P 0ыYz*9N+uU#ơ0+Bq29` Ya ^ ȣ_j^ mFFU~HcuٱT^UVٯdB302o#rVRUM%o&CReOlp? qg.ћEm*NڎJ(ڹ< b X*n_Ȥyܛ{B+;a(i+NFzB|.:a"|qOA"Cb1r:(gxX5f}돂yvI58 z BE‹th)Zoc1%qsN72%qMЦ v3t0topdVfjDqϞ$OS23FlNc^%\@;[X 8`'ozm-&=,'Ubf0`G0r?$bOnNOXHazbpwT }C$'O9pGoyߋ>=$I(9НRπncWVvYj>4UL_iHJ]+6( #޵aa`Hh%sF0D툪"]/Z(q-^̸}s Y׈LKȜ!)-(Q̴׍TE; ǫE}h+fD0Wƪ1k$79ʛ PnW+m JK[3x :YI^wA* )#EaDkHwa-:a{Q*\NG{]8Z5Q͓ ,L|,1Rq^W%/Uߚ`tCEgFKϲP &˔3muTc.G#ozdoCI12bieqh!Û@R C_13Ŧr&o&|x(-1sLR T&%eo(x^Eb1Yql~zp ֳoq"g4{Y3bnj!~z4P ,=)[|Yxa*QgmbtMO(F1)ld[Oih_Es_M,]l'%zB עݔ"I?#6IR{:[W~ϩ,c|w$X d( Yφ?ohBX׊S)k"Xܺ60~r5WKc^lgا(Z^\D7.c bT3} Z^PaGf}\4n4\s/ UkN4U{3[(l+*#}v_.8&y m~b[cTRTZgӵi33"Ȼ",P eGܲjsSUntq܎R̢B+)ׁP`ktх5B ?+&YwV?a`EJf!qp%j&VhѤMʩ֩lgf?oBukHh#y)PI$VB9˙bA]Âa9&[M̻GʄܑMۤޙUds#; tڭ}Q$B4wM: K;ѸwW XЙEXB@o!a10DE3v(F07"c$ӶS 2sOT/x m(W(2&R|e91&-vVcO  neoKCO|K 4ƬS3Bd`I*>CMDo%2>%Л%mT3asj̤7RF֮c (%" Iu[]RvF9Ny(狞y% O&̙ > H.+=vBjnkm% Ci5mߍ`|q2dV C W#zCUX-"C/R޿%wdL_=D%kQ$9̷^~l )ilqppD'iY?vTLΝખ+Jk09E[EoZ򁞮&Ux/,*#Đ)P>-DNn ho?^9)."(Wfvg/Db^XF'a9._.] 'l!oR畖.{xa@Ƌ!i}V |ߒG7A*B]3o+g~-A swWeBw3Jχe)q\t䌞؝.H곁U:Ȭ'xp8x&y"m2e]JRѾr_#] '^  'v>M Z#:ș'=!?Ni}`(%k Ǧ7XY@ڟ!oZ`@rۏЏp`>%{l2i#jNa | +Ӕx)j>DuM99w\kQ*!6:K`+EX 0Nsk}dЧ^KM8]DGZ! #H_y 1 %[tXbXiƐF3fTL̑R4Ṗ!tN0 gؐ~|-}l/VzbἘQDu-¢hI=f$Vm$'DԖ<'%<5Nzo܈|~YҞIP:E1f"2bF/:"/PhK"GtDNfʒ@ wq!5amoqi"&qxLWj;KCp#KkOOͱTYJG9 &#?݃whYCϬS~} Z ML藯2"^^M[TsUjlw@/d[\Ƞ?$h` #4w2Խ' hY FbC::hZ𣻿٫k4MBxНi'~dsI)1϶f'eӱ, l݌pnir&wgi0`ldXB} r $2ɟ34~ouX~-w7ݺ/"Uz$G wy$ڸ?J Oo> w~ߪ|St܈:Xu1yVq]R R V= 3\lɁ\ϖtySKa#bL`6OƚRg/h{ISi5EٖWRSVۛ`k ^ wi~!>dAs7x쾜 Q.;JL_!sBQ3h^ZkYG=Ăh"oH \ozпg8_?(v̫n,]F%a*q x>sue7UePڰ=o]3YjE2VѺw_~~Am[vVV%2$%ώkյuf>E;z}g> W%=OeYϯp:AbcĆ5\!Q8II'&&1{KuњSgh{MΧYő #n_yc3Z7 WL2?j(s6` cZaMv"9`B+>)쩐"6^oy|9^S,x:y?z'dЄ?4KRU/r/e=pHG@x{0"xz͌L mte!_2*jj?`JEu S,)V[v (mtf%}037+΢ӗK4Ei ՙ2R]AG?zu3C)w.tyN+{Ÿ~-{MH̟f;ȱ{[f]7a0_WDr1 "{iTwztЩE~)bѣ쀹]dU/5U 4dz}T""g8#b >%^^X)H\*^'ގR.BRqN3rwJ<>_j)} Yh{lJ箩E70X^SLM9pŤbͻ߸ŷSd gNO9CGVy/oEcς }Iq_ׁC,u [3 ؀-ؔم鏍QDw?:52.^}<h#ճkD]h mF-=mMASjia }DyT|tA_otȮUh}!U G`2ZŸ\$v?we@aRCiH% X.G;b]D x-zBNx2.[at0!pTSj8Jq"v'p+0P]&Pydɼ 93N"4Z4?8[gZO̫_\ +NŒn%jН8C #Y)s(H0*%}w6#F.wjۖkc2) 7d@Rc 6i St,?w/d~Cc|Uuؚl8=dOy,Ir#L_P=>-qB*m6G0>}"G!!ooYǪQLBNF4FJ} @RD6Al V`E/pӤ,N5+ϐ%(zL<Ɖc㺎^ӽd׎>ʦ1AmοV9)x0*{1g E nfdyw %$ϓ*W/.enIh+w"J}N`0aHG[>bN(l9vWV-in#@ʙ|ɄD{=r. PBF 0_hfVeoQXGMHٕFv%Ah\SȗG9 >Jo\[cD)$҂S@Ԏ|]'V\[ȍN{JXn&_%'3ߠuݤd(iޫ:̃B+7%i!R~4 lK,Љ[IL\fx+eOwU"wh=OLp1L*=)>k yxÙ& ]q{ rRtW_6&!u^pcnoI)PFZs{NGz#[.W;nwM0R$CWQ Cܢ%YlEH2xߜ''0eC,KL4*bgr y.llu;%Ǎ V =43?{:*闥Vp)Fן%S {RƤb"2H!^#_%L'A>dEqmigֳ [Cbi4!"x 3g)~'"4~ۉ(C̹o3ڞ]>ro ?vThFwb|..4JSFlWo }k_t[>E-8Nbߊ7^ :Ag^#g!j( 00|2L({ u~nsﲗrdPi3N}qRDgOpnb"}8ppuΩq ) hyvD}Ým1,W59#k5y|@K R˱z Gj颜fXHK +uMZ& 3;2Ŋ 1WXށf7økB.DW;t~B{k}0!ћ>0!^XΔ ß"%:Hi#<>c\a,|6uQ8(4A>t^#J"~7: &Rk`i,oҨZ1g\a!b 6nP?Hg0 ǚH? &u$MYh(YJ 48pc kfgl{׺;Wm51%cZgꥃU] m@%G)(z>ٽ-FO"BːuW%Th)(˾,fbDt>r~'̴!B'OhOJkw9~8M. Cca mq'|>O9F+1ǒ`  jQ\d 0-n&E9ICz_:VF7me oWr׬ѪN)'p MךFB#e^{'{5BD @ftKz *X~1+Ҋ*3nJW?'!7aNzjeЋYV-(]B׫Wk$Vq()v0O[-b5`&KU)#*۾f A3{:*~՟5)HŶ l28i":A\*‚qRw,\ KړyVV*V1S'&gMMu0n]Քաo fwGcه"ư۝\fvWqZa U2E''=ׅmP4jrpG4M^e)H;|scx;- Пjw="ji<ɄEҎ,7 b# B~AH#DC]ԓL4]U2r-`ʑۂ>ٟ)5zikFTMvZ uF&נ⥍(Qnn}bDJXzb=4[nô|NAeȧ:x|_]肟I `(kIK- _eӈK;1m X{~Cd?%w9B| 4uXZ7UXu:׽J A"豦6KU;iQ}x'fEC/%9? dIa vo!wz ]ۙi_w\ť,TtqndDAFg1^$2Kuv/wPD޸4E!;w=IǸlP5xNYA YN ʑQ&ab] /!Ԫ{=!=W7 ŠZ:~ROAz!߁23'/0>J% b@?{I i}'p}9'7aNr6 [iʰjdU VK'BYfp+\YS'C ^pʨe8!(Rh_ۛ\lUIL^kz~6PzLI~8X{;q`I^}qFHPDZ =X|?਑Xq!fڞ(oP?j*Rv ڕC_ddPi5Z8?+"WEL'gDyRUCr= "Q1NTߥ6Ƴ1>_0k 5vY6mg\f Ic&3k30wt8؟ˋ;q:?scg#yk"^pM9 91 x3lJ$ޙ^>V;U 5ʠ; SH덫+R<)4)|Vm_& !{@6h!᠈J? ^wy_i?MK*HVyﰳOHgKuwu ֏}w{AKňwU  ca  B~X\"WܖW<= bVf] 6=mo vݖXdu[H16Z65u0ql7ˡ/UFnI Bkr*v1jݩHUmD6̿b+S2`$ũ:q/SI 3լWp}Ag2 q{b $͛gSDLDJ85ws3927F\:HP0 LO^}4=3p+7$*pq#sHa CI$׎i/f@d))YotNz1_KQ4?lbaAc9OM:i^o=nP70 v@^ҝ57^ĭ[(t;UȚƉkrq+llH_Su3i(+몾,.nqpgyβrU/4 ZN~M"-z݁rCg .djJVכF۾6(;Ruc Π5n&_lŸZ,Ģ;'}%PlzzZ}U04藽 .'(5XXv<^.4G2Ñ]`ke6BQVXpp,1i쌥]S#Gߪvdx,I"u:h f'8cU:?ˇ<l'LAAP[N2Tp;CטP%6ՉtS%߾~p(S;?wYdڮ͓>炳*h|&c:&#[Y–<^:u^ۚ001B[#<=}phS`$|lJ͒qI&I#.ڠNSEx~PsI*tki= 3gC.|FP/7'(}&VMs)YgvzTlM30 죠)R/F߅ePR>N?A(403mTJ(pVݽ۠|o F>S&΢d ݃= 84uM~ >㢩Qܨ~qYK,`wxp1F !עۘE\#t}yK,w|ՇHݞ(#2%wҙexw8@ [)Ȇya܎xV#r4P/u#!q\Fas&(Mf|.*;kꞷDa d=gd8DfϽD\ck%n_֎륎i?*o(=яUT?r$x_/d c~iqYrߔI^n$]Ӡ(6bEe+ uO,Q"';Mp\j~u(nvb6lcBTɯ0>izl')p])"%JgN'л-/fJx }C㆟w.pw+Nr]nbea(zN$=SkC,ްI9 2!Z fi?ln/aSDI\Q^W1Q|`֜US>̆S4SMʸrKa9NM;%À$ Q^Y_؎HFp;7-' z*/XxɾBMMbEugHj\*o b]UGt+y"L׆EMyGwbz?7mbۦ~-E|eu?OYgh9Gfxv]7չPswYDx}o꫾ a]on(!536J.&0+_+Ži`+-A-İKө^ɚUʾT0k0({hڼYZ9ҷ ^mj|kkH-|37Hk,]e*"IA`t:Uq Qݎ~(˥jE@)QÉ>+)]ڼIVѤ,OmiX#Ol2v+qa۶8Pؠf}e iz jbVfWr=%(鴸Z[ }y@gcy=e* ˷M =DJ, ˕(wrD<*yEP؅7τTW,1 S/.at)hvbmU,a{퐧>o1)3&KݍV_̵=ͼC?sINH1bYPRJ̫La`yrhvӫSt\BG}MRI:0Wzp ˫lpP6~w O[b34} %!ͺk'GFK]5Xb%צuҬ&4(brZa}nV~w|WZL̹I_pW-^z5K2]?FI{I/ ϜiR EϿA#*H-KF$gu~Qc -(X<?})?vamA?`mK (K%yq/|"Wx`jBܻە=c;{8}!d 3W_^O; @CFoHb@`Az,YҬ @pNpj-F&/6Pߔ1rHr>o`9#ȁpoq^'IErXٌ4?1g \Ȯly' ̾<>%ˆGL)M*󱭳 ئE+b x#(v!ڐ&#O iP=V|2+I9whh=bgl1DIc %GM C5]!wȓ4dµnI*TߧF2UUT :^;:3m3C<.. RHҞc``?,-ȃpOwvKK[qlIyE~ +2^ahzs; !+Ki:7j9u/qnw^d{fcw3p[R!:®"`!KQ WgC)43]֓Cđ5isE- ĺۀ&uR /wz3]e0E螒;W:1؛v+Ro#L~x(ۋ@ڍN"s O_n_QORmŘk+vF,%G\h ~upJ$po15Qte%:v?:'DOpǛ?NO50 鬟mj7@MB& \dDdPW&Oh}!#=/YE8KbZDJx^avcu9cLH x"$5„cRFN^>6eonE 5{!6Y/ X0&]e6|D}JQ̟Kj$OZ%vN }qQNxYÞQ Ol\'\l7(!Gf{>׵_ZkJ Є&\[?&{оb-pkiZ"=Q`+R{䶦mh/|wZ7o,}kvlW,MG`҃=! yo+fPb0Qj h3r%K6XXWt/PlMH,FH%YK^-9aA!ϤtSCkJdFJX Բ-=Aaݚ;E:iK,lMF-bk'qþtqI%Ϋqy=~%drxu H&'Vei=sJmSBq(>1y ' ?(y6#qKJu#p"VN^;px<~RK7=o4qwһ+re:DY cXkr+`Wmyoe[:Mk*R\9Cj~5^碄mH<#/&ZHףp d"3Kc]1Nzn+ś?A󦕬Fa@(x`Sikݝ'*nȓIb?o}JuɡaK/%o ߇ 3HWs+s/ ,mn2jhOabF>S=+nNׇu'_oV)е3MoFR΁F&6a0WpƯ |IB`=-חwlΚ,c[i=O/%!*G2}7f0C:WC!G!&dIFh@TDgZu<(ו11!pi&Wmn!wcpkC}7c}x jE@&e_V2xt鐨Gmfgp =rnP2@%H2i Rbr,u:ی 郘~QH f*sI\+q&Lo%劰IowLs씀@ҁPxz&UTH5lH7y|1s"& 3R?EN!Yצg@bzl0*Uktaoyyt7l$~* 5U@ ^|2A0 ڟLjg*y#wB)\$thFrgDhF|L<'֒^Cq9 샸%3Z\}rxQ,Bxy)B"6L\JD?Q#MˮC|b끘 $F N, >(!- Qsnk55eaՆˍmN!Q9Fl~_d8,{9{CsBʗUYFGA2sWG.Ψ E dȆY>'7aW&>Vd -2vOpSb}o N &ȅ3'<_ogp6ppd>ߴrYv: {QXbHkSUXh DflŞV_ɩ}um Ȣs 9㚮m;K$v;DO%e_JxRhSu-@p]5bIa)oڪ3 !D73K;+n^bMN YX|w&lI!eЩr.HV*+˼ڐŋڜ:k-z:,ǃqfCv1*V>#ץT{7@%MjM:HN@Rf ^..prR~U>HJVqpHIh8.͎~o&G9tL[Lܝ%vĞ8*BC'?͂_o}l2]80VK4zԄ il{+ mo9Vb{+n{L'^Aa~*X99/|/R$7 .t@2;N`f]v!2tUO{m?Ewuˤm,L-_8Xe ͊!gy"yJBEnH9X [Ue@4a>lҨZև= #Jm[Q \[g Ѩ+^ÄJet?i'̪D?y _*ParT$1w3\^tb_Pz2 beMHi!Duc_Rw`[ ~60tZF7yhF GʯuZ{)cޒ@,pX쮿Ѹ;#D6 _45s:EޒBV;:MƑ V<^zmNb( )P }ruRp+ M>tdԱL(L >V]%}l=C2: P C)fŸ{]l5mE~5]FzY-ZޑÆv;}ghlᔵq/Hbf3F+s^#jWVВu%|]00bVN%&<]_uqwWxH+@ɠ6 C%5|Uo,0 29;PZjk*la`1_834MŁ4bG=&6CL./n1#fKٷsBv;T/%\I1=g\,cY'<ΞEۀErw1!qd y*Dˈ{6= ޵ŅmY#%Q Bt 3\4xÖsph~;30r#6TWVBy/ 63f/ G^pztrsvFu.qTK5%xSR6CMܧ: N㔽k1L ) -W۩3„A>Td纡7r*$<'Ht[MhE _Z?œnv4 zA7+k:ayy7]H$+ׂ`w0%znد-TOE)dEzm39T}B*yr}W_v[Ŋv{g$rj YAiPElXkR%JL.D~ "Ҍ(rLR"dL`P{6R@ a~(MX"Σ-ݟ1&3hv q(WR9? ;Ig U_ $/-<7+,#&hR61/;eXJd:R3I=Yk^T~%Nڽ#f@rߣyi3| H! ѲU!W?g)x1`KH 9fsZ4b4&\ҌRuԜ)[j X]MV}\'?)|.#ڑ\c(q>ggSUx# 3p8xh=bre~ŸV1h ^Y'rf.;1~9ܕ/_'r/s0!EUϓc:Fm^;6{FJ9oMjn& Ш[џ#tɔ@#ZY6tf0o2&F)S~(M؝98Vxs+N_]}V=hP_'w4 x%Se/[6zA3E#k$3C;xGc!,O>3y{ dlLcu {z=< wܼӧRgq<8%f &;FNw35YymNbrp}a4*wsvH-mC̅of#Lo(EyǍ{CȨ]Kh03Ok0٭Y[|YXB[kb~^YąGMs gt Uˉ:ڞvtmCi5Xkb{8|%o~ .`12U;r6D)@PB.Dpi}Wjlrj5 ҬUA-+sݸ IYi.$V@f:Ek|JκV0LВf2IFIVFn21jYtG 01XBEJ8DRxi P44΄Ѻ'G_Z7S7f|=.zX>c?BK=(^龤bCX}"ߤr хjgFDY۩YDkHKjk!'I]G"yՏ:!֚^YLo4'Xz;#,z_c5[]k=5\fW#8"H}hKfj-XrUTg6L>X˓{+YplB`&SuU#FI =P穼@`JYhLZq[Vyc8wU*z?) ֵYxJ\Xa_n_ah8bLTaY&˟_dCV#PK-Ϻ*7r vG/[Gӏp9:F~'gRZ jo,P>~;aTߣ.Ik^H_ػ'9,FĐƔ0'Yt`1į?\XE[%n m]X=t#mU| 9bEQWP{1D?iIBM UҬQ?IQ>ڵ &q |GkR y3 Z)aHӇEhZz064Zh{9L+z욣pT8OUm;3פ"M_gU,TA' y)3BC=)t&^eV:H8upՅ2/<߄R8"{ŋOqu0*5A_;az-qV!cx7XJ#Ȩ ԠTpkhŔӾ\¹L=yϜ\Mqā=qv=r˖lL5%y;g}U-R39KD ݮq46ķg [ZV bC,~, zA,aM1藛Wѥ]0o>@ܾN&+4Z uɛ)^/& G/&tukDdVJK?ud;>2;skw6聳&JƁU ~/4wl_wsIo.M+^k=/>¡an71̙eUqч(ko'YFܹvTŬho Ҧl3b]|+LL#k h [ux+&ܛҽz(0ɽh-һx>[9r~(9SՋ⦔l;4$*l|iggBL.g6;Ռݭ 1b*.7p8 ~g;#Y% KLBPB1'; ,@ZA/IEġ9?lN(_neaqQKrrp2ߕMY8i 6Jb<#*ϼUWR"bAʦ/VhOۙ⿰ϸFx\5ǜ@9YA9!u9p4T25nz%ǿJ!!e>ٯ0/b[1>OmYjU`XkO [ V}%Z5gu>-7ۣ*g_#U<Cw[h`qATW:S~ ghuL0Ex0v<>_zLNը3\CִTMLtwܯgL(4lS!APSz'8s!阘8059 L߲%rCR1=۱χ e䷣6" !șɌ 4TfTmNf-yV9?ssU%*tD֭޿^NPI47HT$NZ1$!3Y~6U 5tq|Pe;TbE|ƏN A#MϷ zzhV "5OLʹܔ=-zxcrLFq<D"J63gٿ>UUӼl̺A G*|>*2jISw'ih&2޴ A"Q/@ԱMpl(/L$ŊUԿ !͜n u'zE8g~ckױXb1TוnH╧ie-F|ZVM=&A{Jƒ3Vie/-k{:ܳVF5#wdA "]e;'xsʃ!{'! r9E)\K!^%n펮mһQEO5ot>vY"&:V3O:gq N0H6 R{a|C\ H>x3Q.RPfQ)r]:C71۹LGW|GVKDݲ.\K<2+/I^[j͎ mfG`4߼;05,I!{J(<6'Nދi@?Έ^U/y= Y<ʴv-r~?pjDHqDbAx+Dx9}WY1t;˼߬0[Afq~?7z_.XLV["Dhp0yP̟j2V ngں2r3uyE=緌Sh Ra`@˵!,.oYѥOl2+ :3"X?B6k%&bBBKU؟Ӹ#t]3ΫH-w} N>rt" oՋ"kM&l#r͍<I!v~u^7 A8W8akSW]@} mEdnԔv}`@42#Cl7Лi;EܖIu˧Svܯs57vR#%:HI" U,7ǺM[Y*Pc'T\Sd$#}9os/'9i>cFj #ڿM#[^QD;kN8dZ kjǡN\ea¡GkOkvd<|tj~~i/*V_5[19Ԭΰ]3J:AYSlyC8`Uׇ? jyjRsL- No\FB9 z] ӏu}޲vnDv-D̼ #,퉏pF5G>{+\# S',Ga,̫{#u=Q]b=tپg_J%`(OIdJ3bZ+6nqn: cG=w9CޘcX S;3j=9zo-rZwKC aoHH$#' G}6ofy%Nu s H/DL O" JJdWAuRMIq/ū.D;DD+H&}3ȣDj%qE*Wzר@9ji%H[(I1o@&ٽtlӴxI ;亳 YZ