python3-pycrypto-2.6.1-3.2.1<>,a xp9|GQ=l{BW_=?%b+En+*CD"Zm@]?}` q=< [six_vbpm&]f):s,8PQ>EV"e9eg x"2E3lHϬ2eFNW~<@aj$RA$EIvH+W_ :0`"_nћEڿ tn: ,z -ιi6¬7:gl>> D? 4d  @8<LPi       wQ x$  h (8 9 : FGHI<XY\]ɘ^+b&cdQeVfYl[upvw xyDz 0Cpython3-pycrypto2.6.13.2.1Cryptographic modules for PythonThe package contains: * Hash functions: MD2, MD4, RIPEMD, SHA256. * Block encryption algorithms: AES, ARC2, Blowfish, CAST, DES, Triple-DES, IDEA, RC5. * Stream encryption algorithms: ARC4, simple XOR. * Public-key algorithms: RSA, DSA, ElGamal, qNEW. * Protocols: All-or-nothing transforms, chaffing/winnowing. * Miscellaneous: RFC1751 module for converting 128-key keys into a set of English words, primality testing. * Some demo programs (currently all quite old and outdated).a xibs-centriq-55bSUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Development/Languages/Pythonhttp://www.pycrypto.org/linuxaarch64z4k3 $y#  @ @  X H @ H p ``++ [ [== // NN14 /  # $ % " 0 p H 8 8 8 8 6666666666 ^ ^.((%\\AAuu5y3t T00--[5[5 bb   ::VV   3**## s a.V.V *o*o,`,`+\+\  66C,8iS :< Ce ((JJ\\((  A A A ~  N "00 PP  2OO#s#s669J9J&!?@:;!II@@DDkk! s".. 4 4(:T:T$PU++'2> T  ^/!'F'Fqq$R\~\~ -F-F77   1tD  ## |amAA큤큤A큤A큤큤A큤A큤A큤A큤A큤큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤큤큤A큤A큤a ;a AR\dBY i@Y i@Y i@Y i@R\dBR\dBY i@Y i@Y i@a Aa Aa Aa Aa Aa Aa Aa AO/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 ;R\dBa AY i@R\dBR\dBR\dBR\dBR\dBR\dBR\dBR\dBR\dBa Aa Aa Aa Aa Aa Aa AR\dBa @a ;a :a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a :a ;a :R\dBa :Y i@Y i@Y i@O/a ;a ;a :a ;a :a ;a :a ;a :a AY i@R\dBY i@Y i@Y i@R\dBa ;a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a AY i@Y i@a :a :Y i@Y i@O/O/a @a ;a :a ;a :a ;a :a ;a ;a :O/a ;a ;a :a ;a :a ;a :a ;a :Y i@Y i@Y i@Y i@O/a ;a ;a :a ;a :a ;a :Y i@a ;a :O/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 :Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@a :R\dBa ;a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@a :O/a ;a ;a :a ;a :a ;a :a ;a :a ;a :O/Y i@O/O/a :R\dBa ;a ;a :a ;a :a ;a :a ;a :a ;a :O/Y i@Y i@Y i@a :a :O/a ;a ;a :a ;a :a ;a :a ;a :Y i@O/O/a :O/a ;a ;a :a ;a :a ;a :a ;a :a ;a :a ;a :O/O/O/O/O/R\dBa ;a ;a :a ;a :a ;a :a ;a :Y i@Y i@O/a :Y i@a ;a ;a :a ;a ;a ;a ;Y i@Y i@a ;R\dBa ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;Y i@Y i@Y i@O/Y i@a ;a ;a ;a ;a ;O/a ;Y i@R\dBO/a ;a ;a ;a ;a ;a ;a ;a AY i@Y i@R\dBa ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a ;a AY i@Y i@Y i@Y i@O/a AO/R\dBa ?a ;a ;a ;a ;R\dBa ;a pO/R\dBR\dBR\dBcdd41742f583dfb48c87a3f3ef522bfe79b3bfb719ed142309de93a76804d1f6de544c03cb56d230446f25c2f9fff8c7cf0c933b9d82644f665cc6a59f34df631cb972c78d40a3b9cbc0767967ebea8813ea074b9d2bd11c9b206704005858fec46573aaaa1e0de81de8a17251a96b4d9f358d90d46c9b44dbecdff2789d3b691bd07da473c3e40ff67fff2569e314f47b58116bba88faf33fc914da9343afc106d0ff91a680b477787aa6140f5475d93279b4b4a5830c3a92026992230e70344715b0de671867a6245581868df7d01d95aaa8e413bffe37b3eef74b2624a3fc0840dbcc1ecd1bd2c9e5c50f49691595421a207b478a2b468a9d73d950c85c8341e7d47b040574c7aacb3c8db4f256b1b9b5da489d42ea22c0c26dd892066197fedaa707e7d53d278be144db0f9f103450a292f5c008023fc8d632519d2f783b011013548162fd112cf8235e8b05397689c2248b75499757f436dc98acf899870b05db4da6b2c936678ef2f2d3c090d1b014b531fc23105a0560d70dba7a31906d82fed8b324ffa63aa1e8750d58a8b0fea0b07af5720ebd4cfdc2e89c7753edc30ec1bb7410098271c32c9e5c6cc524db41d59c5c5d21814ad20af807c010a0163be978f3ceb8caa6243dd83e0c508dfb2d0429c4ac4719084526b2b5a58e271a9fe16fb1203cfb5bacb8932ace65d8f4332fe0ca6f09db40d77dacf5bce4ddf97b5fa309f4db346965b8e7b263e1b4772d9f2ef54df333914d4796c6d2bb5a7e7e4fc1749bd3f4b6c4c5363ac19c07ded7f31b6c160b889e2a2d71a0458f125e58ea453ec3d24c891299ed74c41b03c9faf205b02d079dc737354fc5728185f487c3c7aad84c6c143bdef3316214ba43b76cdf30cfbb00d516ae61a2119aa02537a0599205761f0916777822591865a40590412be4fa61a85ec1cc636cfa334585836a0a0f5902ee0a750e49d9c0d5dcacca76787640e9d3315fec8ed09fa2dd931e756cf9ab34ec168491b21313714bc86c91854cc305b8356a1fccc55cac9f42b507e24bce7ffc2257e04245f2a79ff0cc0de7624b79092cce100b1fef0ebcb299565436f74c3f5106eb73795833f5a1bc334bd6df6345bdc155e8180adc57aa9c075ab51998dab23003a99028ba0ba683d3fa60571df0b7bdd431e380594118ca8ddad2c969a8c88528c590d90c2ce5eefbf3f14bb20e8af786faa3ce24c277a0e01668ef70b0e53ca0ba3ae75b3b9463f510bfdbac672229cdce5343fd7d2d2adae98b633dc3a18eedfccc402791499d6e618ae3866d4d0c69c39e0a936c2a351b9910843ce2785cb3d3f7a827b3ad0ddf2018d5be8f13b7569244001f13ddcdfd071d6de502f53661a26f19840189bb85268cd9c56e5dc2a039ebe53e81dd0ac2c6ea24a23939b0c44c7d0d20b6d8dcf4848e9d9ad425e94e8a7827e909ebbb14b83249adce3eb1558bfb3f4c618af74f47fa35e2865ee0417533447f8504cd00c4fe39465ee7c778eae1512ae87145a841b1e885a8ca47d0245d503d2f1491beec3c301b8ad8212a83e75c26de4baa5c8a1ad39b24fe86cd57d1ac3c44e03e699ad422de4ba30ff0c4cc16d177a4e0e815ae78fbc63afc4c4bbad0ae5ab32848c6cb5a17d6bb278047685c24000a36b4c3c68dc60e0c9f9ee5b6df900b5148381b9cd266e6b69d52de1e767c802da3ba29c0fd1979faef885bc85fbee641235580e970a932582f7617268c5b7217e0df19e55c4b0ce2e83e734e286cf94fc93fad22d2832c74ed3bb584121a603707c682dd5bfc7f031159458778f32e4b4b18c3b6f804b4361e4e0d809961f5adefcc4443930f8998054c1d397100de4a2b37ab46894d551d10a621a0b8c6f8f25a3640d485345ca3537404416947de4a2b37ab46894d551d10a621a0b8c6f8f25a3640d485345ca3537404416947893316a6784c870303d52ab20ddbb207d07eb9e2c02862e25bea03d95b7ec66bda5a6c870169e4e19eca66f70fece2ae08c33a0e9021d4ef5a72409a727cc64d01591ff830b94cf272b1ceaa5c135f4935a0cfe45520a3fc69d6ce519052f75ee0b34c6c95265de07b0e0db816bb73c99698a41847283dea06c173b043450101b699e8c80abb6037827c954c5dcd94eab9b8474a423232f3005da53049831b6e5469767a3fd71b73cf0727ddb8bf0a372da0fd6e39498ba4984e16c398d48728220bd350d0b58f563e2132b22a16d904b49a6461d215363f9d51144e15d5bdb81cd063fb92b95bda3a87044e1cab5a9fa4f344f33bda318d231104284174afcacd4bb23dbbc4339d7d97273dc86d7217d27f583f5069009ad70cdf0d63f070dc5bb419fa3632080d7fbcbd8878c43286d5dd0a7bae93d28d130126c23cc7a16fff9064d2bfb8f2126e34c7b3418b967a695b1863d6dafe0ea8755361498cbc2824a0cebd114d92ba74ccc7fa121079b65f4d202358e299e70cada599b07586c81c2f022bc47e8535563f6c3ddfdcc996376b67b0b85342b66f36149f1db3b929219aeeb2d9091d8b1ddef8526206cb0a192b85b764e5d1b8b831de60df17b669a65b995528322cbad62bd66bdc91a787286bbccf132d28767a0cdc4be63d49190f6dad7df8fda426b92cfbc5239b68ca38e3b1c7730bfee4ac9ff9bcdcd4272629715b573c4d04eb760a881e267db8db6416f19c6814e0e75c89eab11fc70e92f9fce84be0492f300b8c65c8ce9905afffeee10db61dea2a7b5433ecb32f191b42d27fde823510bc99d609bc1aa8658bfd714f80900840962daab4f781e89cde5d1c3455dc0ad42d1ecbfe213329f2e457cc4aff0468de0e6b467319746f9e7b8e59679d0f9786a988c266413d5c90667bc51e22e7b8507671549d6766bf0eb563e563ed29dbaa46ec4bfc79a85d776c7f39c8006d2c6a6f15b2c420513b069e63e563ed29dbaa46ec4bfc79a85d776c7f39c8006d2c6a6f15b2c420513b069e9e4a2b29d0fd974a5851bcabf8a2c547076eb3bea71ccc18d237f16d0f80dbcd9e4a2b29d0fd974a5851bcabf8a2c547076eb3bea71ccc18d237f16d0f80dbcda4841ff453fad7b222b61bdc4feee807e893ced413d6b3badf06a1c5acb4c854a4841ff453fad7b222b61bdc4feee807e893ced413d6b3badf06a1c5acb4c85459c13137ba69d9e8e139397af0f0e46859b6210d457537a0414755efe6571dcc59c13137ba69d9e8e139397af0f0e46859b6210d457537a0414755efe6571dcc8212aea4237fc5e39e1770d4f2f2400563106afa6e47f328e8fb3e239ca1a10b8212aea4237fc5e39e1770d4f2f2400563106afa6e47f328e8fb3e239ca1a10b91ef7d5d97f7ee69a3f70bd8c5855910830470ce0218bacfd5af38bced4d7cd791ef7d5d97f7ee69a3f70bd8c5855910830470ce0218bacfd5af38bced4d7cd75bc56ad610a283d116978291513f76e77285fa75620178f9ff484c9edd9c5b5a5bc56ad610a283d116978291513f76e77285fa75620178f9ff484c9edd9c5b5ae75cfa50e62023edf8d2d656ea8dc2f5d80a08302366d8b8ab9c172d76e53586e75cfa50e62023edf8d2d656ea8dc2f5d80a08302366d8b8ab9c172d76e535860264cd8eecb61f1a2578e2def239130d5731a6121b67c4f1a259bb07811498780264cd8eecb61f1a2578e2def239130d5731a6121b67c4f1a259bb078114987813d6948f234806d5e52864e6fdcef1f775a7b3d036f649a3e5c7e895c573e7cf3e800c81c01a47db3cc0ccfc4ea3e12da97f02f2e91fee4c0fd28f6af3d4e3c5fd05f449b10f67b84e37159d35da23eaa1ec2f0f2e9f5d1c58685ed9970aad58ac961eaba114e791439379b40454abae3e9962637ee051b9b93557d0d16aa628b8d3a242c788030f8d5ca2308c0a26c00dd97632c7067cc44b4183dd787a86efb33053c9d620cb198f6c66c75effaeb61a79acee17034374ae0291185dc59af386451b9f64789ca8d094c132f42809e1ae2abeeab18cc0b3f6abaa1eb601b895f7c6d66e6c7572d0fae4e1f14cd871a97d9d139f132005e5e69d8f0a410f685a9c8b8d93ab52f579b81ec3a19103c8c86fd5302813d8cc06b198dadac8d7aed8452066c9262b13ca456ace185618d625fb6a8e585f95b1f27fb9483e6b45c1a19fe506900be3190b739771d0fb34ad89d0c57124f21334e86ae731b76e37c6f8906fc93c63bae90217187d7d1d11b391bdc14f73bdf9e0a3751d281fe13125e51aee6e008a815eb4b3a6a49dda1483cf7cf1e33a123a86b70a6a33c7a626e7c4c9b52612d834809f71d177b90ac98321eb273b75e39f7777afa6ec0bd51b62cc2b9f706e8d62c8013f82dbc4f429f15f820ff626852122ea5b9c3baabc3c8a45c883f06d84d29ec72889d229bc0022b76f87da127b8ea3e1386c04478e821dd7e91ea712d4d06d9d904320e9098a84e3aecff00ea94a36a99997ae5bdf657d728d7a71924a3c22bbc7fd87c618497789d555a5f4db965023929962cfadf922891d565f609ca5cda92f009f375b4571572c95a143fe78697967afd63399186a88e837b2576cf81f9c0284d23adb61724f43377330e03d7d2d52542b205ce298829be74c9e62aa930e2e39748d4f07fb6eb69affe7a85ae4437268cf58a41c39527453273b593d375ae28e4b71d8e14226fe71cddfe86157a955258d46fd1f92647531596de9c4a7df2f1259ab93dbee4f65fd22a2f78c71cab6ae29213a496535a502d65a9d924c882d4c21dbd0019b2713a6f0e89bd81163994d2bf9f0845c4fe2f4b11110dc5d41be4b1161f05403550717f2a4aa0cba0b36569a69bbed6da08b8d0bc4db0876f8703756e4ba127c2d8572a85c2e690cd3486fe41ce3c89b47566637f29f0f1a64cb78cf1e9fc2e61a042f54b3b73587389a27b87141b1576a35feb1821217a8c04c6d82d033088c6ce4cd1f1c884ce10ca92f27531f0c5b1e3be8c803769cebbc9ca06d23ff0c3c011e9cad18159399ca033351cbef2ff2e6e0c26b837ba13bcdb5356c7d775a0d3cb9ec1b235c7f2c3ded277aa980049378ec368075f01ce94227e630124f1ac0116b0a262455056acd68384e39cbd8a67b772a8f228dea8f7e1b27a7a7ebc60f1bcd8a11eef1eacd602c13a8f5444898f2d6df24b1a3618508b394e1d61d1f083898c117b05a450c76481f8283c466b82fe41928bb9fbf5f85f79c83db9c57ca8206550978a3c98a019b5d8a332b770f05186119bc31b58a83e11e06b810860698a31b76fa404228f72a006a4087c632f67374b8db9e091ab8d623aba4a231ed19661ea302dccfa0c0ac4abed69a65d0e03a1d1e229fc1d8f53d59d1428b7d24923386c0e67773e2e72ba7bacfdc69a56a7f4837e59fe6f847dc3fc4f1a916edaa99b6e46e53bd955f58943f10a6fd7a27c134062a41cdaf9ed51d385ca39febd60bc6fbe2f91c3418bf947f81c872fe98db0eeddd031966c2ad78af296a7401b1809a61acbae0f072be549e33d41a745d6d94e2d0c11588389e25f86c1272916adb7ceb267b57e313a16def8830d3ddceb300a6413939a078ce0e894da0eefcce73b5be56f4e382e04f611cbca5845d6e2c9f4da66a2af6e3f208b8c4030d1c71e8ada33a8a2cf1ec2077c7b2319ce0b019f68c012a2a1d37823d6f653c9d9cb887b8cf6e391fd5ebca434c4be06f149504d2d40c6d1048daa50699a8ac3f10bf9f372d38a7b80829022d8781386c69a8e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855d12144c51d72f039a15c46b6c0a888b90a4b0b3e564efe34b96335abf2f8db5b8740ffd1e6ee8d47e7de4f5c00695a5439600afc6f9af64aa19e5ae7eba32d8f074e68ffe12a31a64faeeae60bd296da4b60ef68cd58a4b957fa0f252ac04aaef57ac22c25084e8897b9bcbda561ba73f043b7baaa322986d8859b76a1cca43db803976f0e143f1fedbb896fb3c4b56a93cb72da43ac6c7f5a6b66b084ecbab4f6bd0a0cd9ae6d111e3d139bc4758245b324270f80235e64b7d53f63cb88952b79e5e02a6880012ae3fe580459beb122f1558b5f3f7ea808c124d062899fcd3c79e5e02a6880012ae3fe580459beb122f1558b5f3f7ea808c124d062899fcd3ce90ffdbb34f7a64ec6fd693dec3f197bf26516f486da8c0fc49932776e313f91292e9a24131a032f23846bc804ae100823c0daf8cc3708973780cef6e47d4e1251d210350c44ccaae96c746e3617cfbc81c94741eb7f550c3632d33ff2a45b094b88cfc4772cad315181ee54ad5a37776bcc0ac83e5a96b1d3a609316184dfc3c6f368dd2ba5e614d2eddea28e7795c2f1d6733aa0a06cc67c0f4877712f04b607c7f7b1d9ea50e0f1214caf7db8a2ccd5db7fb411858397aaab599614a345f921e5a8a90762bd5183bea88cec6d8d8f99eb619550551c5b641597f3c266ce47e4652430d5997019dd6580cf43aa2eb8b963c1fb7878839b4c49a399da96e4fd07b2e60157ecb27494c3510a4258d77a4315fdf385f578e87cd9afd8d8058db5307f7da583d14e6c3b9bc2a8acadb1792c0eef1ae42c5a2befa44c36163929087933936495fd66b09573d5b3e59c3f43bc9a09ee2221e6aaeced8fee32efe6931958cfe793f8551064ee83bf14a4e3006adcf373b636e62e3965651bd0b41264f8afa36e468f8e7eeb79773a8299449d81aae40f650e67f53620978a97602b6c2fa35b1f2101d9ea47ed646ccf733afcb17dcfbfde3a72630ce147e28a45ce4866a29095c7c12ca096351b37d168ba61dcbf082c95ace7fb92266c5c4365db314a2443bd791aa13268f1bca6a35b03b8ceb5ce6900969dff3f5e2e9127f3c91254ffa9c1b2d89d74d3ce49a3976bffb3711d718023cb9733a42792117fa79642beeb393fa6c7d720722ec2386e96dd40e9f34f9b3742f5d5459cdca34b2c1be64b431f33875c2f952f0b7a498aa0d029a1c471e34af6fb948efd6cedfe7d343b1956ca78befef1d2be78d5fcd63cfcde2d42fba66c359ec01da0554ae49376ad7aeaca13e884baa469defbb7f46a62bb1ebbcdf979089f0e1af9eb4ddf2759be402ae398425cf47bc04adff1d531711afb965c9d184cb2ac56c2d31be5771381355a1a77193d0ee023b4194a68a570dfd3c1f17868af6bc31df86b9d30175454605869209dc9f7739860201fc44239174faf074b9adc78c84a6fddf8980c7a40d58224b6d6427f99ef3bb14f5776365156317a3949277166d81f420250d2f77eaf65cd1d581bd550628c0bfb1d43cecbee074f67e851ce6f2e882ecdeda9c7bd056800e7c50dc58d5daaa1273f5afb404f3cb4936619c1725c4cda31d5d0bb8eedd0c8f3138213fb27e8192e5ab44693a39f53e4fa62481818e330abadfe54e56cdaf5acfeaff202c38ae6b06c338e54ccf9d261b1d0f22c9847e301dcec1096a42aed188665f1694b8e368d8c20afd19537f96167e1a398c633c09a1373a92b57dacc5fb84a8eb14e7689fd482939dbba97e365123686853c011f017093c785210908f7cf54b1a905d3994278efc16f82b02930811a17cba47f256a243673caa605bacda463eec3e22c29204d8d5211592ccd74fc1f3a4c57993bfd8eac1e6852d995d362e23cf9341efbb88b867922c499671668a5d91a9ebee7b387ee1774b1ee45fd49d09d38f56c1c67f7bdb0000556d45d0c17c07eb9655dfbec3609a5138805e6e719c877247861a2fdbacde4fc9b0b0b9b1d4f5c6285a9ddf706e04361090d93588396c8cc5c3aef8ae9bfce0d4b27a4fc6646c32ec8bbfe57c1bd2e274731d8be9db1d1c1889ef5070d65871495f68110ad36be20b4bd42a76507a42e5bd58a7006386e4f682af1594ece5a18dcbf3c3619f1f4df5885ef18e787db32475c920bf58aca88a0455e45aa565281413afd6e8cb43e269bda3cc2e7234efb9aaa8e94dac47af49da812c9dc3fc6081f75193593d959e2d44035b7a5db324b729157a53ca1dade0fe495606cc4fe0ce5eb130e539f092aa23e8efe93693857fa8ac573d23ce112060d3985e22ba3f55c5dc8e784de28bfae035401a3e9108dd196dd75e0ddae35096f9a181b0994f44dd02bbe037c346d19a84cfeca0cd2023b798baaf3f1bb1fa29123796a20a6b0b54c9f6e2e0ea0b2a98ae6e9838e4aad42f96ca9e760494bb241d90a3ee2d6623a6b6fdb3a72fbd1a0a678437f8598552d0c3e54d6ce4801da4010edc4ebace4cbbd90dcf2b4d43cad59f1b47373fe9ef25a6b38e857a90e7171c059f3636f7dba2246f9c198ad31a44fc167ad875550358c9cd1f119fa1a4958956dc3c65ecdcda26b16db3c4a02ddb1705c63230efa2a88790ea2f6747633f61a304dd012e005c61854a5e94d960dda0ac89fb6010cb4f783be4d17f79e6956ae791090da7e3f5f1258775eab068b91b12ec52335618eb1dcb25dac96c981acc4271687a0ec65cdf333742343f265096486680d1b706e28ffd7245ac26f8526625d4f48ea32c1a9dc5a1c14b657bdc9943b7d6e7e76d47f68e67096f520a69a852de9b3d00e9b7f252d898d3d9344abf9b430856d12ae9e0d4a9a7bc8eef289523799bd6ab22de17eaf6ea085982f9ebf786d8c73a0b11801279bb8e2b7aee633f75653858f2dd3b4a1d38ce88ae09f27d2be518db8382b266ce826a2177a2cf3243a8a5b6c342bc4464a9e8db44d9a4880795d243f06340145411772592f48f2cda8c3fe2e51ecae876ad3b97cb36e0aa9d26c792ff6c2ae0337b4f746e6f959218fafd74bd00ae4733981587dba903e07f190f505d2723123ef0555654e37e1437339a5fe5874723ababef360c483b6598f802acfbdd9582a47e2d9a4dff798263bf64480fedb50f8df26c52f806acc0fcbfb2e9ae63e7f22fc363f16f3414bbd91ae16b3a805c34e1c42a291b9b1ca0640ad2d0a5b7cac1326792a79a062499242e9751a5ffde6b0363e8965bfc2067e15a005edbd108032c12d2d1192d2b4e3c8635785c0abf0c00b858ce5dea1ac54b7f8f5b259d2c535b64646d321b116d349ebd6f25147b1efe74f3f2d88e8831e9fbd5545c8ceb0cff7a8706e8e98c3c69356efe0e2c0bcf3e8eef247f5b908fa84f5787e4a38a3f35e3d81800f9c90bf7db4e6a9dba0c17d59e8634f0fdef7493c46e93ea94026d2b05149d0ad7ed88062138b3330d5eb2e39d846993cdb788490d324b7ec460a616537ce9f09e6ace0b67d3829f1b7da1a222d30f948ae7d3aa1bcbe73213ec28c4243a776be2d907da5ddb20c74cc65c2b15c93b06794fbefccd8137cca3e425ebc521a73d109fdcfda8e1e2a5c83e0794f24183064efde49c633d948aac648524a4c6c2b82b6b5c1462d79535ba7a2598c8a956ac5f1c43f2928e2ef11ed61b7cd4f4bd0f289e2d1520f80964977afb07daf877482fcd6d8953a1263a3f249d842e7ca257adaee6e4f0a294bdfa12201a9d1fcc3559a36942c05325d047e80b317c9bc18fb13ed92d9a3d35f8ca82b743639e8d8daa2fba1683784c7a335eb3e0df3ee360884b05f8bc3987a79fde4a8e11eb4c5e200d4d6138d1b2a3139450846228e950d38e79aeb06194805bd005d39ba9fc09ebb1188aa02b90de232af153aa9a381bc931f9682617cb5ba30ce025352c18a200836a58a89a8588424549736b6eb7ba493e88975c864f89ca65f1f9a02ced85ce6a0d1acf5c705898a4f281a0ac58b032dd1feb38a323b63b045403ed3fe43492eb32cf63218b8c22154ece5ad1143e2223d2e7c696f48b97d0dbfa363421bbb34d0421056ef694dc41557055fcb7e0c7e18204970407144444adda42652ccb718c3b9d68b83d33e91413bc9fe1b3eda72fee0dbd6816d532a26fabab423ae50dbd6d8a962d5027edf8f9b55c423e8024156a5392d7a5895393c4427ac1bc5008e2e8084fbdd494d0187e843d415306d9d7098aeb2385231db092a76320e5b993c1c03710d00c6caf4a075febc5945eace2ed332bb56ec94072b5b88591eafb1f0444662084c6ddf3ea0bbe8e196e3939548f8b88ed4d5aeb4b1c6090cfc736a5d566d0fb840d6e4df2af9461528a7e59c246f9f84a4337d1ea8eee51841244d6637363ca86a38f61d772addd236708fb883bc478b1f039c637f662e08380f11303812382d9aa49bfe055bf553a49b557baae2ababb9e69ef46bfa131c2395f86017f9eff29096f0d6b9329822a562d3b5ec5a2733b2e113bf0fcc386266293f4049ab70a4079d137151dd238bf88685979e9454d2d41b42ffbc8a6cee3da155b61a52af33b2b5e673a868fda49d5f6365e632d80989946f72f9e0028bab387e8a6bf9cbd8779f48f2c6fec5fa0e2ea4a6d46bed7b4ef3af0c334d811f4502c64f4f6a5191ff812f51dd525605e71b2045a97f1dfd12622fc6c71aa6aae57135a1156558260a4877366af855e97a959b5a1b10ffe6c8ba630d13925e78f694566124fa5e9e88a296cda42c028bfee46dcdb07da19c69374891c52cdb16f5bed66ca8e1f8bb60b99bfa7da056d4d97f6b90c5967dbcf3df43d7420f549be2d145aed6b5466713a0bb4c3a0567a9130e82278c86677bc61360d37e664cb387e71a3f771e4722799f86f9e24f59835f68cf47cf7444df14cf2ed0fc9482c19a0e04ef084d6167fa447d7c866967e40128e43370175a9a9e858b99421a02a3c1be8f8ce323079105d8028c6053bcc1704bb6e93cff68241b884bae754ffc09f7a4e5b19f5e66f4cd9322357a0cf8562ac9531da665d81ba27f4ec8552660b5f5a5136c65d1383f5d2506bae04a2af15e4a47a691c108e7489bdfee4dc53da7a14e33060ad983014ef594da276544d4ea85fd1c632992e8fc67a8aa0ffedba67f37986b3e4fc3a70748022b2551a2a99e565968bbc66f74b6a301cd3c92593e27035e84469ed5920609dba60b6a87a3f0d296fd0d960317d9187f9ff20a88bd71c412c96254225aef2d1dccf572e4fecc4ec9aa4fab7d8f11ff7749433012b170c3394734a8546b382f000ed7762b04288f046f27d84303e294c7dc906f089539c446d6ae4705c39a927dfb819950a1aecf26b41c772ead0b437b18dfc3b85ce4a30d4db1b2777e077cd410230316cc20397bc284cd3c704f3168cabdcbe43456de78d91c06ffc790eff02b6629ac1341b19b70780f643ad529f270a40d870b4c9e6c551594b940ddecdb398906b61c4e4bd732f16c9eaadb3642850fe81b2058ca664f8b4340fa840d3d6fba91d6e0eef0b2150bfed4c074ee518e177e52b09d46245b32a9fffe61dffeb515f3973d2d38c7a2fee73e1aedd84eb72b21e2dda4d1241e1fd58fd618690815d0c94d13542b129dc542b823fa996893dc1adc25bcba29a5f66c289b9ff862d61a061a04186d7e9e135d7e35c66a996cbd04e2d9d50d522cbc7c9b5ca6cc2b8fe48cf4e7d97d2fad4fc73657ac65252b0eec69ff6773a6bfe5fae967b872fb7613aa13db32b27ed764828cb6f580ecfc0e7afb0a3d56bfb636fd6055d96c3d09f3177ad3f2b4f95e001293064b983136913ee372910c958b844299372826b506a21caaf26b537d8168e9a06b3e9962c9b199d6c3b747d6878ebfe3dea3b872e5fdb35562e5adbe01bcbd98b24a3face6129bec181b71f9b3c901952d1ac86e261e0115954064627b0b92ac3c30a3d1cd72c9ea2fa8232d80e7b935353cd23133702e15c4b4409d2ae8095fb192d79594ef6c5bc73fdbe9e574a7a5c398fc1a8f4a50775143f745ba3789b5dea5117b86c61782668fcb7dc5506ec3d9b2ed3321913e8e761157aa3670ce458e800cdae47bfcd25dc9bd7fcffd06bfbd59c95652aac2b0d7ecd9d9e2a8c0446c68d8fcf35fc539efa67e3de2a3e1237546973876934b0a45651c06c1a73b6df191194060ba1e6c5285ce1227579b34e3a8bad6a328b303f6028f7d3882040449ba050ea65fba1e8a83fab7c741623a944add75737039e00614b9855ab7bc2caed9b952d7e51949aa4970f7d781c54b726394e58a774e6399c10cb54b1728f49b04f949106e6845e2f4badd3973d622e051eac42d748685ba9ea5794672f84d24a745836fb30ed4e8d0278c6476e775320523477e83bfab00ac09a8c0f88cc1e8f8334bbefee3d3f3cf254df3f51722d311695c51c48ef4d3dc4cd088d4b7682617a662649b99a560176442de6195807b33842a35ce63f5544f74b70d576b9ccd0e1cf8d8a63a65fd40eb210c948411e51d187cb7e72e4eb04740bded68b5ab31f9dd4fe949c023d01c58cde9b2534721044236d0f84074dc6a38a6b49d817ad83b641a20c2eeb721654a36e0f02d736e968bcdc9400e234b58136418064e0e8e84b6da57435b5af8aee9de4f4d403da82e58508c0993792445640615a328e8e2620e6497d60ad2b7f45bc9664399d71cfacfde8ff5186525280bfd17b994b85876ac64fa29845204fad772679f7bf4a6c2a02baebcff2031f1ee337d7bea9ff495a4603da1348df5ca25f1cb3aa158fe3a835cf7d06538fc1ad460ee734750c35f0beb45e48aad8b3a21f1a3d5763923aa3e19f3bdb1aa334744840983baeebd89980616c0e0fe580e5c84f014a6a445af7d7088578a6ca1f0b684e4d0abe35d52f78ef9885c42d5804cddf64468934b8ac230340cd8e643863c977cb503095e45901cd956da415f3e661139841ab916c10ef7b35d597852304eb8fd6bad4a8a79553cddb0c2412f71b01b02e959c66a20d6f6696b5c96cb89c8b112f2b6dfda344bb79f2aca5367faab5914242734fcb080d8f495b4b92f3019f9a755861e6ca477b3307bda3b1df88293d0d8485d975ba517b299e13c6ad6d678e8aa98bbb733ae8ad3b67259a5219d37cc4f5608e644f3a42064ce00702fc73295eecaebf03b0da89611388befbc74a0e35d1039fd5faa9c4bf84afbbde2f10051ed81ea95565a6eeda19b285dd676dd316b27e76014e5fe764b1420d5d00f8dc38f6341a5b658391e926442a1ca2c9f73946dc92a56f3887913ebc4e94040e79b41aa4f66deadf48c15d0cd7b30184fd13c49dee55ada5ad8e9d8bb8a379658cf70e065fe5c47a946e498dbc6a8af3573d57e0adbf5df454c10e358598fcc7275b79beaefdb51b17b6ca801244eb634cc3fe113835cd4e50f8e12c2707b232f898649b60d0e31fcf408784e0e6e249a67c5a0356c11138f9027ae5348530dd11b9752b6d4c7ffca4f5a828045848a65ba4693061c791f785d9eefe22fce3ff8e6cc9d35f2fda419dc9509771d5687efe6fe78c1d4d08311658d12dc783d13c6a7a8e87a9bc705840f42c2768f88e8c6e8cc48df2f5654a69d1e05ba09bd7bbe965f70a8d350b2a199c8c96d174f53f194f3c2b7723dfb8f72a56ebc97d03695202a7a53846b07adf50f237e9f5f794d5b90440ec50f2efed93506e9b9460f3470ecfbceaad710fd662bf68c0b120a4a241a3d69017d008b8ffef5a7dec926540f5dc617e060e2ed31e56f74c3c00dc3057d39f62e6a05303c10943643b0c6cb3a287170ceb8f8a4b2448cd712a4a049c066ca79d0e9a72de8fd09a046f5fab5cbc4a7b25ee979c405c54efe93a2f865ef81998df39c14c1f23e53881a3ebb224a0f16e9f4507a6773fd64a0a85fb907f0fa6c619f8e1c4b38d45c8035ec0639b5e3b6799dd905dda4f7f0fc20f741716bb3ed84bc946484e2c48e0daf3f86df23d7b012a7fbce97428b9e670f369cd7ea5ef3f9b557f0184a0b1bf9be8fedefe05ca0e854e6198053160a9b72b53946a17c985a899f0ea6a914cd43285fc9aa42bb3771512919b89f5847a2ddf5166a5d358a3d807b7cff1d7a5d9e8a2083285a50148ec33f87256de14b94a839db12a0081d4472432b5aa5c9b3fe067bae1999286212a8b11415070a46c04528a4acec552bd871dafdbf8c69be0275744800b741f1c586a852ea8082d901449c12d7e25958ae19bfe0215c91b2fc3af08d61083207c44bb9e4fac834fa393a920f9df2390b5ce01e4dd09643f869d184aae839daeabb2b633f9526904a05c106f4bcea29ebfebfd669229c4f17221e7b8554b1a70443880752378d7edc57dfe00903c17c8bd20c85b572730b4a3f978b4b3486e7ded8de2bc7528d75967614a11acb3ea1ad34c6bfe441f987f3141630a212d9b5b4c775589d1d36df98a2ef8cb5343f4b8ae22dad02cedefdd412e6cf56f16b1c6371d594cc98af33d96387697bfdce3fa55c85e9fcae7d88ce3b6a388b1e774c411d8d774886b6b97b2ea87884230b32fef1f693a7d42c747ac9647de50c6fe1da0dfb402b5ce708668bbaaa4080ddfd723ff5ab407da982992fd91226db86331f7c551b673e89f4335bcf6f51b4d268f171dbc45cfa67ec5033bf78e1c752a28a85f042f0c42bac1f9643ae8288ed33149635632cbf80737669a9e1a0aa7da25f40d655d0cf55458f74c87b1a43ba07e5f109143f5d47867dc7d2a500edabdc155625e8982e622a5e7cf1d83afb035479a4676b5969624601fc4552086a0e81a46d1b4988c7e182ffd1acd2ac4891b7eaa0993ea91ca8808b489c84dbcdb01fb4127d328b356526ca8ce51244d7c93ffe1f55290537ade827f23a1fb7cc80404bc5be3b55b87692333fa5efc5d0bd204c6386781ef04f6408db93fd6b422ab9c921c23d9438e8e16b5c5a3c12c09265258ae34233534a33884ed8c99241b23c2936a0b25a2c929d0e1c95655043934da60f8ac423dc69d47d9bdd3b03cdb800b3678f57e4e65ac04fa5e821d000baa4778f8ad3a6678d73674bc7d576609cbd02300e6c2818746c16aa36b76ae9246afb4ec09ea6d8b4a57523f5cf103caba8aedaaea07a8ad4bd2f4dc7b30a39f386ff8a595cdff102fb4637d6ea0ab3925c3123309c2a1ea2d3217f0d002c65ff8d7e8e3334aa2d6e3a59b0d3a537d830fdb56198645f40de803b3c97f15956f1e1df0cc6b1b7a0d4cb96e0529ea0b8d208eab99125183138565ae9577f7e821f891b00f3c5e33175517c78eae378dcaee345a8c964553c229af1606e2e6a5a068444b4772f79d236cc317dc199eddad194325fb9418c2c1ddb296535ec0a8b767b0b2fca5ddf3f076336b4746e440262b64839482994554cce3bc5209acaac7f74035d9bae66af2f8ef953296fb9d0c0bd08bc7a5af2c283045d9547cc922e03c405497d2a43c76f758820558b781d867a733628f2d2789f598e81b71c18c045b3686589c75c8a61de924d078284e84f2e125defcf427b7491c4e4333252a64294ffd6471c52cc489ce887c08140fc86b3889c78d8eace8cdcd827053fda774fe4ea341404590cd9dbdabbfdb38a5860c826f691cee248e039165152bd40bcb2981dc20ff4c2379dea74e9de39845977e660fa540928ec3c3a1ae969a2525bd25e1490bccca66f628a5027a2194d395170a30c5709b916294485b6271bcf1425cdd0460ef947281fbe40ecef625eb764b68cdef3c2d9163925531ec49527a45506fa78ba0b40cac67f02d33e54f4ee88619db301a1a71a7a03e325cd4219879f0f25f89ff9fa8b6f583a5a3e51cb8bf536410c1424a065034c8dbbcb6fc932ed66f0071d69e06fe2ca4ed356ceff66f8d6c1ce0eb095a7a9d5c1375bf098d7216e67a7894baf2f6586eb09a297783caced426836594d797fdd83b2c30ca3848715be5ffd70273c0853850564811e73f24027f39f2bc7cb1310c63b38f1ec670cb6dbd14e7eafe06b20a1c39b553c84b496e5219b04232fd38b9a235a567ca81b9231b6cef0380b3963b62cab7a0fbc02d531b29666b6136e2bd41d75b8c0874aaafce5acba149d42201539a08bb88d5963f615d4093c3c9b1286e6641d480655334f003b24c637726abf78b81839c532da93d0888c5802f8b0cd9556cae25eae4a012895e805614b2cb73b183ba9f6c87e17e09c6868c0790ca0232f26ffe1823805648887586d5dce63389605a118c1ea8d1764d88554160ac9a9214f19de058c688018b319a53d3aa2a53f07437fb80d6b7b39cd69fd22579b94fb0b7f6b7d969d08dddf5f26012ca64fa5e11921f75df135ecd22b57bed57d39f324b2939cc4eba1e6f1fc8015b040f52528189556c1fa7e08ac4797ea2e083366689e1fa8fabc611e74831c05355fe856058dca41f25a58318afa72a0703412c09c79ccbe22c3653a877359449a47990dad20026fab9621976658635e13e2037b83a73ccd4973a76e00f4b4eb97fc0df0765b52fa67a01bb28352b1a0021875d9acf840d465c93912d2c65c7a5d9863592da72777e4b7630acdaa9385478ad7d007517e98f66c5b02663f721591eeef6fae8882427588e0c7ae499faed8e7e1483b4921e489871b5ecb0cc9584f04cb79f04400c5f5dfd8233fdb8376fc9a9a5a020b491cda868d4188d9e83b4f55cc68d0e8df8d2902af41b8ef47a7fd6661fe5c5a091f156f7b6c643ff318cdc53da15c302408c243f000626a8fb1366b59ff86da3e5388791d0adb7be6b84758ce3afb0d79be421ea34f52110a6be41ad0ecf0872bb88b071b0c51f2a4904e0fda3dfe915079423592505d0e4b64296fc9d356685a840da1be1441d73111d48943688bb13a3f21f090102b1696b8e11c0bf238afac01e7d985bb49221a44f6e20e74d9965e68f34880ab4ca115a0fd173b16ac6938b89b669f0792062fca8d6c5d7c2c85791c7f69b57ec2bde8f3d4ac1fb73d7c4c31d282e08e200f953e869fbc4b413d77f962209ddba37c899a6a089222ef9761ec35b10f0d8d7d04f85a25bb9b605c585349ad57604d36e471d2369133a0091f8d9ab58d0a9a6fd29b43da357dfba7223635f463b7324938aece56d5646114bdb23ea5cd08af6fd29b43da357dfba7223635f463b7324938aece56d5646114bdb23ea5cd08af51cd830064aceab64632cb1dd923642f3a45fa1d02c301f6f3c025bf74b309e39bb8f4795888d73238d9c7fda43b34242acfc6ab953fb9c2d4a6692c4ee82b3e39bfcb294e0e83a6248992a0b3054a90e12331711f6818e8d0a2bad3a8d3928415925a98d05c6d086c30943e4eacdbd361bcf76daa109b6e6dfc9d0c4ad9ed6498f3f5e5ab296798a36e08a5ea2c9703dd8576eaa07f5709386e06b249f0d55611e7990a1d0bbd37761693934fa966f5bc10747b80dcfb9d0dee891ae6c7f94erootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-pycrypto-2.6.1-3.2.1.src.rpmpython3-pycryptopython3-pycrypto(aarch-64)@@@@@@@@     ld-linux-aarch64.so.1()(64bit)ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.17)(64bit)libgmp.so.10()(64bit)libpthread.so.0()(64bit)libpython3.6m.so.1.0()(64bit)python(abi)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.63.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1Y i@Y#@XlSW@RQbQw@PDO"O]@toddrme2178@gmail.comtoddrme2178@gmail.comvuntz@suse.comrschweikert@suse.comp.drouand@gmail.comdmueller@suse.comhighwaystar.ru@gmail.comjengelh@inai.dehighwaystar.ru@gmail.comsaschpe@gmx.de- There was never a python3-crypto so don't provide it.- Implement single-spec version. - Use Pypi source URL.- Add CVE-2013-7459.patch: python-pycrypto: Heap buffer overflow in ALGnew (bsc#1017420).- Include in SLE 12 (FATE #315990)- Update to version 2.6.1 * [CVE-2013-1445] Fix PRNG not correctly reseeded in some situations. In previous versions of PyCrypto, the Crypto.Random PRNG exhibits a race condition that may cause forked processes to generate identical sequences of 'random' numbers. This is a fairly obscure bug that will (hopefully) not affect many applications, but the failure scenario is pretty bad. Here is some sample code that illustrates the problem: from binascii import hexlify import multiprocessing, pprint, time import Crypto.Random def task_main(arg): a = Crypto.Random.get_random_bytes(8) time.sleep(0.1) b = Crypto.Random.get_random_bytes(8) rdy, ack = arg rdy.set() ack.wait() return "%s,%s" % (hexlify(a).decode(), hexlify(b).decode()) n_procs = 4 manager = multiprocessing.Manager() rdys = [manager.Event() for i in range(n_procs)] acks = [manager.Event() for i in range(n_procs)] Crypto.Random.get_random_bytes(1) pool = multiprocessing.Pool(processes=n_procs, initializer=Crypto.Random.atfork) res_async = pool.map_async(task_main, zip(rdys, acks)) pool.close() [rdy.wait() for rdy in rdys] [ack.set() for ack in acks] res = res_async.get() pprint.pprint(sorted(res)) pool.join() The output should be random, but it looked like this: ['c607803ae01aa8c0,2e4de6457a304b34', 'c607803ae01aa8c0,af80d08942b4c987', 'c607803ae01aa8c0,b0e4c0853de927c4', 'c607803ae01aa8c0,f0362585b3fceba4'] This release fixes the problem by resetting the rate-limiter when Crypto.Random.atfork() is invoked. It also adds some tests and a few related comments. - Add "-fno-strict-aliasing" to CFLAGS- add ignore-fastmath-warning.diff for SLE11 and older- update to 2.6 * [CVE-2012-2417] Fix LP#985164: insecure ElGamal key generation. (thanks: Legrandin) In the ElGamal schemes (for both encryption and signatures), g is supposed to be the generator of the entire Z^*_p group. However, in PyCrypto 2.5 and earlier, g is more simply the generator of a random sub-group of Z^*_p. The result is that the signature space (when the key is used for signing) or the public key space (when the key is used for encryption) may be greatly reduced from its expected size of log(p) bits, possibly down to 1 bit (the worst case if the order of g is 2). While it has not been confirmed, it has also been suggested that an attacker might be able to use this fact to determine the private key. Anyone using ElGamal keys should generate new keys as soon as practical. Any additional information about this bug will be tracked at https://bugs.launchpad.net/pycrypto/+bug/985164 * Huge documentation cleanup (thanks: Legrandin). * Added more tests, including test vectors from NIST 800-38A (thanks: Legrandin) * Remove broken MODE_PGP, which never actually worked properly. A new mode, MODE_OPENPGP, has been added for people wishing to write OpenPGP implementations. Note that this does not implement the full OpenPGP specification, only the "OpenPGP CFB mode" part of that specification. https://bugs.launchpad.net/pycrypto/+bug/996814 * Fix: getPrime with invalid input causes Python to abort with fatal error https://bugs.launchpad.net/pycrypto/+bug/988431 * Fix: Segfaults within error-handling paths (thanks: Paul Howarth & Dave Malcolm) https://bugs.launchpad.net/pycrypto/+bug/934294 * Fix: Block ciphers allow empty string as IV https://bugs.launchpad.net/pycrypto/+bug/997464 * Fix DevURandomRNG to work with Python3's new I/O stack. (thanks: Sebastian Ramacher) * Remove automagic dependencies on libgmp and libmpir, let the caller disable them using args. * Many other minor bug fixes and improvements (mostly thanks to Legrandin)- Make package build on RH6-like systems- python3 package added - minor spec improvement- Update to version 2.5: * Added PKCS#1 encryption schemes (v1.5 and OAEP). We now have a decent, easy-to-use non-textbook RSA implementation. Yay! * Added PKCS#1 signature schemes (v1.5 and PSS). v1.5 required some extensive changes to Hash modules to contain the algorithm specific ASN.1 OID. To that end, we now always have a (thin) Python module to hide the one in pure C. * Added 2 standard Key Derivation Functions (PBKDF1 and PBKDF2). * Added export/import of RSA keys in OpenSSH and PKCS#8 formats. * Added password-protected export/import of RSA keys (one old method for PKCS#8 PEM only). * Added ability to generate RSA key pairs with configurable public exponent e. * Added ability to construct an RSA key pair even if only the private exponent d is known, and not p and q. * Added SHA-2 C source code (fully from Lorenz Quack). * Unit tests for all the above. * Updates to documentation (both inline and in Doc/pycrypt.rst) * All of the above changes were put together by Legrandin (Thanks!) * Minor bug fixes (setup.py and tests). - Changes from version 2.4.1: * Fix "error: Setup script exited with error: src/config.h: No such file or directory" when installing via easy_install. (Sebastian Ramacher) - Changes from version 2.4: * Python 3 support! (Thorsten E. Behrens, Anders Sundman) PyCrypto now supports every version of Python from 2.1 through 3.2. * Timing-attack countermeasures in _fastmath: When built against libgmp version 5 or later, we use mpz_powm_sec instead of mpz_powm. This should prevent the timing attack described by Geremy Condra at PyCon 2011: http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-through-the-side-channel-timing-and-implementation-attacks-in-python-4897955 * New hash modules (for Python >= 2.5 only): SHA224, SHA384, and SHA512 (Frédéric Bertolus) * Configuration using GNU autoconf. This should help fix a bunch of build issues. * Support using MPIR as an alternative to GMP. * Improve the test command in setup.py, by allowing tests to be performed on a single sub-package or module only. (Legrandin) * Fix double-decref of "counter" when Cipher object initialisation fails (Ryan Kelly) * Apply patches from Debian's python-crypto 2.3-3 package (Jan Dittberner, Sebastian Ramacher): - fix-RSA-generate-exception.patch - epydoc-exclude-introspect.patch - no-usr-local.patch * Fix launchpad bug #702835: "Import key code is not compatible with GMP library" (Legrandin) * More tests, better documentation, various bugfixes.ibs-centriq-5 1628046456  !"#$%&'()*+,--/0123456789:;<=>?@ABCDEFFHHJJLLNNPPRRTTVVXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2.6.1-3.2.12.6.1-3.2.1     !!""""""""""!!!!####$$$$%%%%%%&&&&''''''''''''''''''&&&&&&&&(((()****CryptoCipherAES.pyARC2.pyARC4.pyBlowfish.pyCAST.pyDES.pyDES3.pyPKCS1_OAEP.pyPKCS1_v1_5.pyXOR.py_AES.cpython-36m-aarch64-linux-gnu.so_ARC2.cpython-36m-aarch64-linux-gnu.so_ARC4.cpython-36m-aarch64-linux-gnu.so_Blowfish.cpython-36m-aarch64-linux-gnu.so_CAST.cpython-36m-aarch64-linux-gnu.so_DES.cpython-36m-aarch64-linux-gnu.so_DES3.cpython-36m-aarch64-linux-gnu.so_XOR.cpython-36m-aarch64-linux-gnu.so__init__.py__pycache__AES.cpython-36.opt-1.pycAES.cpython-36.pycARC2.cpython-36.opt-1.pycARC2.cpython-36.pycARC4.cpython-36.opt-1.pycARC4.cpython-36.pycBlowfish.cpython-36.opt-1.pycBlowfish.cpython-36.pycCAST.cpython-36.opt-1.pycCAST.cpython-36.pycDES.cpython-36.opt-1.pycDES.cpython-36.pycDES3.cpython-36.opt-1.pycDES3.cpython-36.pycPKCS1_OAEP.cpython-36.opt-1.pycPKCS1_OAEP.cpython-36.pycPKCS1_v1_5.cpython-36.opt-1.pycPKCS1_v1_5.cpython-36.pycXOR.cpython-36.opt-1.pycXOR.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycblockalgo.cpython-36.opt-1.pycblockalgo.cpython-36.pycblockalgo.pyHashHMAC.pyMD2.pyMD4.pyMD5.pyRIPEMD.pySHA.pySHA224.pySHA256.pySHA384.pySHA512.py_MD2.cpython-36m-aarch64-linux-gnu.so_MD4.cpython-36m-aarch64-linux-gnu.so_RIPEMD160.cpython-36m-aarch64-linux-gnu.so_SHA224.cpython-36m-aarch64-linux-gnu.so_SHA256.cpython-36m-aarch64-linux-gnu.so_SHA384.cpython-36m-aarch64-linux-gnu.so_SHA512.cpython-36m-aarch64-linux-gnu.so__init__.py__pycache__HMAC.cpython-36.opt-1.pycHMAC.cpython-36.pycMD2.cpython-36.opt-1.pycMD2.cpython-36.pycMD4.cpython-36.opt-1.pycMD4.cpython-36.pycMD5.cpython-36.opt-1.pycMD5.cpython-36.pycRIPEMD.cpython-36.opt-1.pycRIPEMD.cpython-36.pycSHA.cpython-36.opt-1.pycSHA.cpython-36.pycSHA224.cpython-36.opt-1.pycSHA224.cpython-36.pycSHA256.cpython-36.opt-1.pycSHA256.cpython-36.pycSHA384.cpython-36.opt-1.pycSHA384.cpython-36.pycSHA512.cpython-36.opt-1.pycSHA512.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pychashalgo.cpython-36.opt-1.pychashalgo.cpython-36.pychashalgo.pyProtocolAllOrNothing.pyChaffing.pyKDF.py__init__.py__pycache__AllOrNothing.cpython-36.opt-1.pycAllOrNothing.cpython-36.pycChaffing.cpython-36.opt-1.pycChaffing.cpython-36.pycKDF.cpython-36.opt-1.pycKDF.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycPublicKeyDSA.pyElGamal.pyRSA.py_DSA.py_RSA.py__init__.py__pycache__DSA.cpython-36.opt-1.pycDSA.cpython-36.pycElGamal.cpython-36.opt-1.pycElGamal.cpython-36.pycRSA.cpython-36.opt-1.pycRSA.cpython-36.pyc_DSA.cpython-36.opt-1.pyc_DSA.cpython-36.pyc_RSA.cpython-36.opt-1.pyc_RSA.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_slowmath.cpython-36.opt-1.pyc_slowmath.cpython-36.pycpubkey.cpython-36.opt-1.pycpubkey.cpython-36.pyc_fastmath.cpython-36m-aarch64-linux-gnu.so_slowmath.pypubkey.pyRandomFortunaFortunaAccumulator.pyFortunaGenerator.pySHAd256.py__init__.py__pycache__FortunaAccumulator.cpython-36.opt-1.pycFortunaAccumulator.cpython-36.pycFortunaGenerator.cpython-36.opt-1.pycFortunaGenerator.cpython-36.pycSHAd256.cpython-36.opt-1.pycSHAd256.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycOSRNG__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycfallback.cpython-36.opt-1.pycfallback.cpython-36.pycposix.cpython-36.opt-1.pycposix.cpython-36.pycrng_base.cpython-36.opt-1.pycrng_base.cpython-36.pycfallback.pyposix.pyrng_base.py_UserFriendlyRNG.py__init__.py__pycache___UserFriendlyRNG.cpython-36.opt-1.pyc_UserFriendlyRNG.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycrandom.cpython-36.opt-1.pycrandom.cpython-36.pycrandom.pySelfTestCipher__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyccommon.cpython-36.opt-1.pyccommon.cpython-36.pyctest_AES.cpython-36.opt-1.pyctest_AES.cpython-36.pyctest_ARC2.cpython-36.opt-1.pyctest_ARC2.cpython-36.pyctest_ARC4.cpython-36.opt-1.pyctest_ARC4.cpython-36.pyctest_Blowfish.cpython-36.opt-1.pyctest_Blowfish.cpython-36.pyctest_CAST.cpython-36.opt-1.pyctest_CAST.cpython-36.pyctest_DES.cpython-36.opt-1.pyctest_DES.cpython-36.pyctest_DES3.cpython-36.opt-1.pyctest_DES3.cpython-36.pyctest_XOR.cpython-36.opt-1.pyctest_XOR.cpython-36.pyctest_pkcs1_15.cpython-36.opt-1.pyctest_pkcs1_15.cpython-36.pyctest_pkcs1_oaep.cpython-36.opt-1.pyctest_pkcs1_oaep.cpython-36.pyccommon.pytest_AES.pytest_ARC2.pytest_ARC4.pytest_Blowfish.pytest_CAST.pytest_DES.pytest_DES3.pytest_XOR.pytest_pkcs1_15.pytest_pkcs1_oaep.pyHash__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyccommon.cpython-36.opt-1.pyccommon.cpython-36.pyctest_HMAC.cpython-36.opt-1.pyctest_HMAC.cpython-36.pyctest_MD2.cpython-36.opt-1.pyctest_MD2.cpython-36.pyctest_MD4.cpython-36.opt-1.pyctest_MD4.cpython-36.pyctest_MD5.cpython-36.opt-1.pyctest_MD5.cpython-36.pyctest_RIPEMD.cpython-36.opt-1.pyctest_RIPEMD.cpython-36.pyctest_SHA.cpython-36.opt-1.pyctest_SHA.cpython-36.pyctest_SHA224.cpython-36.opt-1.pyctest_SHA224.cpython-36.pyctest_SHA256.cpython-36.opt-1.pyctest_SHA256.cpython-36.pyctest_SHA384.cpython-36.opt-1.pyctest_SHA384.cpython-36.pyctest_SHA512.cpython-36.opt-1.pyctest_SHA512.cpython-36.pyccommon.pytest_HMAC.pytest_MD2.pytest_MD4.pytest_MD5.pytest_RIPEMD.pytest_SHA.pytest_SHA224.pytest_SHA256.pytest_SHA384.pytest_SHA512.pyProtocol__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_AllOrNothing.cpython-36.opt-1.pyctest_AllOrNothing.cpython-36.pyctest_KDF.cpython-36.opt-1.pyctest_KDF.cpython-36.pyctest_chaffing.cpython-36.opt-1.pyctest_chaffing.cpython-36.pyctest_rfc1751.cpython-36.opt-1.pyctest_rfc1751.cpython-36.pyctest_AllOrNothing.pytest_KDF.pytest_chaffing.pytest_rfc1751.pyPublicKey__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_DSA.cpython-36.opt-1.pyctest_DSA.cpython-36.pyctest_ElGamal.cpython-36.opt-1.pyctest_ElGamal.cpython-36.pyctest_RSA.cpython-36.opt-1.pyctest_RSA.cpython-36.pyctest_importKey.cpython-36.opt-1.pyctest_importKey.cpython-36.pyctest_DSA.pytest_ElGamal.pytest_RSA.pytest_importKey.pyRandomFortuna__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_FortunaAccumulator.cpython-36.opt-1.pyctest_FortunaAccumulator.cpython-36.pyctest_FortunaGenerator.cpython-36.opt-1.pyctest_FortunaGenerator.cpython-36.pyctest_SHAd256.cpython-36.opt-1.pyctest_SHAd256.cpython-36.pyctest_FortunaAccumulator.pytest_FortunaGenerator.pytest_SHAd256.pyOSRNG__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_fallback.cpython-36.opt-1.pyctest_fallback.cpython-36.pyctest_generic.cpython-36.opt-1.pyctest_generic.cpython-36.pyctest_nt.cpython-36.opt-1.pyctest_nt.cpython-36.pyctest_posix.cpython-36.opt-1.pyctest_posix.cpython-36.pyctest_winrandom.cpython-36.opt-1.pyctest_winrandom.cpython-36.pyctest_fallback.pytest_generic.pytest_nt.pytest_posix.pytest_winrandom.py__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest__UserFriendlyRNG.cpython-36.opt-1.pyctest__UserFriendlyRNG.cpython-36.pyctest_random.cpython-36.opt-1.pyctest_random.cpython-36.pyctest_rpoolcompat.cpython-36.opt-1.pyctest_rpoolcompat.cpython-36.pyctest__UserFriendlyRNG.pytest_random.pytest_rpoolcompat.pySignature__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_pkcs1_15.cpython-36.opt-1.pyctest_pkcs1_15.cpython-36.pyctest_pkcs1_pss.cpython-36.opt-1.pyctest_pkcs1_pss.cpython-36.pyctest_pkcs1_15.pytest_pkcs1_pss.pyUtil__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_Counter.cpython-36.opt-1.pyctest_Counter.cpython-36.pyctest_asn1.cpython-36.opt-1.pyctest_asn1.cpython-36.pyctest_number.cpython-36.opt-1.pyctest_number.cpython-36.pyctest_winrandom.cpython-36.opt-1.pyctest_winrandom.cpython-36.pyctest_Counter.pytest_asn1.pytest_number.pytest_winrandom.py__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycst_common.cpython-36.opt-1.pycst_common.cpython-36.pycst_common.pySignaturePKCS1_PSS.pyPKCS1_v1_5.py__init__.py__pycache__PKCS1_PSS.cpython-36.opt-1.pycPKCS1_PSS.cpython-36.pycPKCS1_v1_5.cpython-36.opt-1.pycPKCS1_v1_5.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycUtilCounter.pyRFC1751.py__init__.py__pycache__Counter.cpython-36.opt-1.pycCounter.cpython-36.pycRFC1751.cpython-36.opt-1.pycRFC1751.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_number_new.cpython-36.opt-1.pyc_number_new.cpython-36.pycasn1.cpython-36.opt-1.pycasn1.cpython-36.pycnumber.cpython-36.opt-1.pycnumber.cpython-36.pycpy3compat.cpython-36.opt-1.pycpy3compat.cpython-36.pycrandpool.cpython-36.opt-1.pycrandpool.cpython-36.pycwinrandom.cpython-36.opt-1.pycwinrandom.cpython-36.pyc_counter.cpython-36m-aarch64-linux-gnu.so_number_new.pyasn1.pynumber.pypy3compat.pyrandpool.pystrxor.cpython-36m-aarch64-linux-gnu.sowinrandom.py__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycpct_warnings.cpython-36.opt-1.pycpct_warnings.cpython-36.pycpct_warnings.pypycrypto-2.6.1-py3.6.egg-infopython3-pycryptoACKSCOPYRIGHTChangeLogREADME/usr/lib64/python3.6/site-packages//usr/lib64/python3.6/site-packages/Crypto//usr/lib64/python3.6/site-packages/Crypto/Cipher//usr/lib64/python3.6/site-packages/Crypto/Cipher/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Hash//usr/lib64/python3.6/site-packages/Crypto/Hash/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Protocol//usr/lib64/python3.6/site-packages/Crypto/Protocol/__pycache__//usr/lib64/python3.6/site-packages/Crypto/PublicKey//usr/lib64/python3.6/site-packages/Crypto/PublicKey/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Random//usr/lib64/python3.6/site-packages/Crypto/Random/Fortuna//usr/lib64/python3.6/site-packages/Crypto/Random/Fortuna/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Random/OSRNG//usr/lib64/python3.6/site-packages/Crypto/Random/OSRNG/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Random/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Cipher//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Cipher/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Hash//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Hash/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Protocol//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Protocol/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/PublicKey//usr/lib64/python3.6/site-packages/Crypto/SelfTest/PublicKey/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/Fortuna//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/Fortuna/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/OSRNG//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/OSRNG/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Signature//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Signature/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Util//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Util/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Signature//usr/lib64/python3.6/site-packages/Crypto/Signature/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Util//usr/lib64/python3.6/site-packages/Crypto/Util/__pycache__//usr/lib64/python3.6/site-packages/Crypto/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python3-pycrypto/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:20116/SUSE_SLE-15_Update/6c2040ce40a79bb2f2ee3ede79a979c5-python-pycrypto.SUSE_SLE-15_Updatedrpmxz5aarch64-suse-linux                       directoryPython script, ASCII text executableELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=7923d7bf65b6e25b07a1cbb3308eff829772bcdd, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4bf607826e32db5b608cbf3078452c0f53fdf887, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=a52f1719bede60184de6d269672fa174f56adc5f, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=71916c19136fb292865723782da4418edc96529c, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=fbb22efe240a80e6529a24c0dc357e6c370043b5, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=12418d575a9fcda8a3396ed4c25c0918c79e4bb5, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0c18f4967b88d379b05f578b153481a0c8038367, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=445edaf13ba9e3c6439c59e2e76203352585f918, strippedASCII textpython 3.6 byte-compiledELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=1708236ef69ee6760be1edc8d9a665d25384b493, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=397b31c068eb57a47bb2a6299fd98dbc4c5cd476, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=40da0256410bdbac6b93d6ea39229a5edb62aab6, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=a25bfd80546b40e304a09ad3881f71eaf767e2f5, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=dc205ff7669aa2f04a93615f41f082b95dd1d350, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4eb1f5ee305d2c80703eb7b0834a700ccefc9f23, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c552f1d9c79a63a6bea6ba1d4572b8c73ced7323, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=efbcd96694c84cb93b00b2a65383a247d5c46c25, strippedemptyPython script, ASCII text executable, with very long linesELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f4a1329bbf1f7051c0c99a643057fca054a63579, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ad36ee19eb132c99465b2658e3bc53bfea764aae, strippedUTF-8 Unicode textPython script, UTF-8 Unicode text executable &-4;BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefmt{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR4=]Mq0gfϥutf-8d82d26c5ac96af15e74fc8129145c42afa5d2ee69090ac31a1aed6e8c754cb43? 7zXZ !t/ ]"k%{^E) `B5föB K\s\dkwGqj*;[oJ+|X-mhK[(0'1A>&ti;cNݸBu]̆MCno$=8Z7 ->?lКdWr 5xpֲ_8E:uSIv\1Zp'| doق V-x=C-ME\HMMyS$E=eːc3 -*8Q$UÐ/!jhlP@:ΰEW }ͦS7lseıB qXoNns/kX_ ߒP﵍K(Ъpamׯζz7!/l3YbDs1R(hT2g^ t7q>o ਄6QnEZc'c7إ3O8"^]8t,4izK/ Fp;@ԇ/@h=7Tul.ZU6?A.$M;.Rz'CF= ]2` b(ˈA j8H h-CM$ZjoJ^D9>p |eiu}hc(}(ѠA.Xb#CϔYc<;Ch+ ta| 6$`.D4:W@k>qBRѱ`~᢮ =w9H ;MG.p.Bk3s?vh3FAz'{  }wn/VӝtLC1\5뎚SWڬRv~PH淤l2)BoR?4qB37n1(.uPOcV58P^?闃VcxPo̠1ώ5hafOa5"#aJ\ k X]J @Bwt PR\A,M)I9\&3Q*&Wor k-@;V: {Q҉>NGgh7 _d˰kQ?h 9֋ |FqK5F)7GB| M!$ v=cyt.e4VrG3ҍ}A-b٘Q$-7Ԡ4M|= |eUJpÇ.M$F i5W`6޾ѳl 1E0NP[i5j3'ҽ|OYĄyXỴ2Axd-8ϊ;- F=VKRrE2+@;Fw4E`\uL|9O{$8Gݶ&HƄ7!S0.̓h6#&lçu3jԱ.K#xRH/{L\i0$h9#S8ybn1aXzڣ!ȩ]e+ݏ>$˳M3۔ZGe>5tdvvz6x.-(;R7WipџuaYǽϋGXP;L&Rℋaj1,úDMLXtoh+X#@و%T`E0e7ÿ.Hú>dv^rNo[,V+reQ:؇uOe:Κlkjw̿3B:`C6NG lyVTQؘԠ †Z>]54-|SmZq#M=N|J=5eF8}'p0G_}ܒ}dõ;?d׍Yew9QNC?3=^ܷgkb kPpmriOu. c1{٘[@x:osaBпY}2\)J5[!yb\ F6x^Laivj /` 9<Żu(z| |YYQWP"ާ28/^Lष/k91sNB$G$IVЦbNu,PL>“rx*֣uԱ%a@c묧 =:P<ՅIЮa)es17$?Л!\xKS݌YܿDL(,m)p^b )M*SXgLsVΊX_X3=fa|H4wJjoL{ 4.%lnDhpKeԙ#ӱ %zq,) T$A00-dȕ]ȯ@a c($^+$H/aQaDl /Pmtɥ"o܅M3o=T%cOM CK!&M>?EeI:;y|&PCʻz]4ȦJZzp^|Im{":[x5eЉ$ 0,3),.WTv&yP`h+L f "xr$l'}U16oʶ"3' D@ֱDOmxASk(&a)7.vT槱j^-###ȴFF:}!{lP.⮤C /fQOhl_baf-K] P)vZ㠫Ue45wn+g@d{Z g߉^Urw #ZS(/goJކa ⼂*k ʂW듵r߀ĕm9VK&upc|oP8),W7J:YA׮֚XJyL٤?{ym:}A'"5ḙ|ToSb+\o"e vd`-n/8_ &B4QUF)x @+bߏ484cytM0#R GqB#!)\XY ,XoZG7}uiJ EøioUiU[S2CíT sQ{ԋK;ٓ|QJl穲F9S"'ls{k"My&/l'qU!Kqq pNZ4e&Q8NjVS2r1- Xֿa.8Ή.Xwh>\#J+}{oWR;El_\n6)ɎZBM\z?Z,[HDX YLgJA:m9a&fϓ iyԇ=uf5DmH >s>y/b TM븊S/4M M~t.!zbK_}gTn{oL/&a^1ܡ~k1D7|D&9E5ÅSRl0qf!iXZ!"֛"?UQʱÁ 0)z=Ekf'nt.cbhISSߞG/p275`3e|$X0(.l<շGˆآ q$ ݻ+5o2chT3j=o+U$|Wmvc=A5lj\Jo\>۫9"|jtݣQ! 'ɰFHwZvbVKB/aQÙiC)i(Ik"W!#m1 .q,%h:F`d9r<}!١F)7l uNmv-XylcrQq{-ryp+򄲷wƮpE}Fyݴ`w2K( v<՟OUvՍ +mrLv!K+'DۣrEniGK,uNK r,oa~B-Ay"#Ř4ȷ}b9cO!H~J'x2 ]`ACW̦;.W7G,Nse5 4zk\\O ְRx/61jW"; [ʦBR#p|(\*YNJrgƙ{ e͘7{.hE(x&й`IW|-ֆT#mZ`+]`aƎ[C2 b "{6 ?RqOSk ρ`k@Gl:C `ⷀtc"zS^܍8_uJyę6to(y=KЂX+DMK*G'U#:͹ _h"؟(q6mزN-` dR;Fa7bH__%ʔ;Ϧ}rY8S0{iZ[@ԯ_S0Oɽk#B8u1)uʕHXHKwu XH,d7t4mC 3Ȇlp B6~CɏTٿhmﯬX*F[&n/gm]Ps`*2JS¼cAb|3B'QJZE;g^B$Ne P8&īuɫמV 4bT&9kKb؂)e~tؓ RdzGEj{DZcǬ_Ttmz)Lp\ίQ͖XԥxõrN(-?DhEjl+ 8[U9sxn'EZ&PStbG#,t8(⎘H#?W|ߘ1ᮟ_}{}!~C!EyC6WnMKd'L}}񑚚ٙK;>`zV=ĐEPjBEKOp< r3UI=+]R%3 ˚|ҽRڛ WM+ ̯f>IjSxs B);cy zzoXE^+~?֘'u׎+|! {F`y|͏ԧoČp[ ,-nݍ}hZ좆n;ϛֲ|W_w% PX?XL'֞2Gi߁tzFLJ]lp?[ ?,}Ƣ5KsG4V8'^!1E/H_MaȴKQyfnEG:E`_D,JaN 3YCr8K%t??9/xs=gT$?lm\6x^|ᏽ8sWTc @[94-]V}~0|gpYx;yI+Cv=jS;CQQrˍ@9ʷ"QMp;3q6So:aVncur56׾"Y7[LQ!9C?^߂xjD]TՒaA-g=uHC`\wc-Ðԡ&ҷwHaRr2ݲ\ղH3( _*$Y"uO khfw ¼]%h q.2,fg*,t@a3\3@ss*1ӓ}9{Tr= A AZ[B4C; `-s010~>Ռc^8uӧE@XwPM`B,(CMQ 񼉽B KtՄ9T`x ¾h)jU)Ճ.buDO%i1T z GnO[fpDĕ޺Nu_Ђ ,ӆ3=?!ARCޑI fևi3)yfar%i/4O2gOG[Ͳn.M΃չDb>3";}<UA.̒On$:Ǚ_.!&_j ,&6sЈkwitA3̪4QRHً> _1$9>kjLGJtoqfr@bNE<\K&$|b ќ6ufld3Y_\{hC[Ԋ uf]^_]S=߄}efU hT 1Ƌ V|+g ziCLSGܠt Y*cn!7>!nR2|9ZZU挿{VF!(8ם4,$ zE']m`~6b[ ^ꁰf ꏣ#7"t ,@kXiIn+l *77us_qf kmV l.RpXBC)[_*#g7e)CbUF~,,Xr}eۉdaBeЩnW+j8WOauC=,$ƪZX,A&3[Q~| 8VzSx@){CB; '4o)OH_2 JwfT⎌4"u+a]j y$2G+ܟLҟ$(`} AV]OƐ 㣜4yv+ ďӉ}DdL^ܶ 5}|v,})š4:db.NK&6y~|(eK7G`?w=N31<<>i8'-5'vlvT#I\.7`Ũ0PF:Ô[UH4$aL1q-j Gw<^0%ɜփc]?:zQl V3QjO H=+ i\&u]@oɫ!;! ̦a&.ѼX[eJJ#MbC-YGaӕ, lD 1Ȁ# sMi>l,>*/.oP_ВpF7vOׂU|p&Rr.[v [1dP՟,j T9)K;{̱ L}^OQ32cG:InadIzO/`jx1- MP*7#U_aK+S_*wDxh8nE2J Y?>/ z~5n"n d5]ƺ0\8RKzHRG|%|RmХOmSVT yY(<Ӱ,ri*R2xeW%@YCycNn 3)4(6IL]%a*1:wg e$ӧ!`ngIy;4u# NE'oB̹a= ?%ڔq8k΢<[{"wNu4c( Jh̥ٝ6r2mťHs'0㪊i 4[$85u3QKK l.E?87K,d@ŠPn-fUqkB4\OA%l|,]nQ7dV1/]okX`i֨˧zQn9&_iy|idPGM=U ZTzYh4ʲwnT^+߻ޭKiƂ4ܯ^S7,\Ľ̸PK FaBo"b0cZ舦.v+;?ṫ9rm+q D }<_sUϦ U'& Lҩ&Ԃb+uJXcLOybzx:츹6ƅb_J4iwmXL/1[R Z39"/(zM8mFOB Rƈmtžr66}{AUN@Uav;0yonYH,B/te36$ͳ(3W_U+\شٛWX<++>I8O-b)mq'_"%M=ӏ mM4Tqy*AtF%z܆PvKveMyyR$ޟSoAO` BКL8oe0y۽CJo#rQ{fס3ӳ0A°n|V61fX 4>* Ӆ88KcR"_H:;d+Rmrr=?63aĄ_{Mܚba!;3LPyſN +[6cq0]izz̟L>=윀$a{ ; ;Ϡ_#1>8D{: N;H +hbШ:%\] c1E}*xϞB'y4 $H]kU iOFzBX۞<T}Jx*-DJ{@Yui}@M:$%_yd)Q` 74:Ri1Wirq>8dá4MP_%QN:Xfdr5T3juE`Lu5PbçOVڑ!{`sy[ T:?ۤ>e^IJZ1"S;;U@6 !?gL 9|rQ k˔r+RmσSVW|M5 jpDٓBKC×y-fH'Ue.|ΣQ`PsMCOZV |fۘi2<7)MʛGfvMnH 6Zq@8Y}sA>enH\uzޛ0*`#_y  @xVx 38GB`^t6h{4Ѻܝt DNIk*2#~iwzyطB=C.1F^RH8XN)@GqsBxH2FS[xI >+S1]gMyI:dz{u5DnPG@>9 cM"x k\n1ROuY#H_f"0ʮ;##7h\f}ۡ`Z] ҥ_U]>o z!%{˶fǖRS#X(Fk={;[XklcުDO-k%ptmy9ٷ#ImUÖ?#}|GeXN}MjhP# ҍkvt$gP]BRz7z*bt2zVu>0^0znL4>;l2khvZҖ]¸;p&c84:[rSCOFla K,f z"iۭ+Z*qȗgjÉ@C [M0*)nbj2Cgȇ_~Z1秊(91.R9]ˁ®EsBzBxZLI A]c`w!Yhy٩4aF»+uYy~|ndg` E{ү?)3 }*v/4=iFVgt>YXͅVKԽ^N;.'e|[F `G$gO4h%ߌ,Wn˝t\򴏃r*3/1,~Q\YЈcP]ܼQ mC<|"% ](͒!OLle $ɳ5!^A)74$s6>O,pq}04A&D@*74n}e>.#TƯ%M*[tpqժ ís4E  / &}2XqZ:|CE7$OM@VJأ?XDdJ [S' O淹B2YvXk 5ZȵFnm}%5"4и Ɛbߺ3Qb$1W|2.dw3 D1r:,ʹΉxӵ< Nq<̎u=' j*Q;MbLEy:YsJLκ"$~ӰOe]'zym,g 뜄0-H"uzz4*;9goHcy[瘤648'Ivv ةm:S(`Q&hZ“U=&-VK6<%(G æWL3Z@?_JL D嘦Ovr|%DȪ.m< &z8VrZRv0ySDIaMգ,Dvʽ(lj*[ss )I3A[U~1N+leG1uXm DOdQsz;y&X~LDO"m6|>7 u ܢt-F}-+S`D |,vʖ/9 ?QS[i e'с˄#=`n]ޥ# upn2/YA,,s*BY.Z%hIS{ד vvΊ Q/",/´m-5޺z/p:\PG>Dyl>WSOrQuRs;kSf }kԉ2]K-zfGjb)Ƀ|lN|Ff"*4)-]a*7 i*8(X}I$ӅTON~NI/.gVH[># v*T>iy&v~G4[B-s(RZ+`_o"XN)x|Z)L!/sdWun ./8H f:  3K>ܨ"E#g]w2e#jE-D79|l'R,$N VNI nId?, r5q_\o]YǢUr_̍;~I&$da1qnЛXt4L )>! ; eFqX)\4]a& I|=b0N+'1 U-n.$aIOy P"@n@ 'zp1,5]m;Wođ+`1L1 34vHѝ`76tu V#wԞ'3AeIeI0jn,J{$r{EgDŚF}e,N3 ɕS\X$#̽۞68EVS'DqN=c)* -gp֝3~p_ױ@YdX, L]p᝽iS(c2_9Djh(&jxFInLlrO hv3&U,c$ PgwH?^ * Pɺ2sIt BٝE Fkp:EH`Vl:L%0^^5֘r߯}ST'sp:S$@Cbe'(PoOjwݬs_ab` lt,A:Q" hc0UVƪMS>/R;j4Ф %.{9L]qe=Y3 # -300q/g~Q,cŅAA* AʧQ~L-`Xw",MPuAs_"HePجcr'2kZ d1Y0 $J .gnFNZ:Y91<ʠ{"حY:Hˑ>wfലx${)u%.7)TZy^V4RMhs(]gDSl3|u }1UોZ4O}/hW$_T/:=?rKoU7voFkbF] 6ZDZ[S9aH1OJEu(&mP#L횱A4VRkl~7`EOQc9F%cuS巒)ԍQ#u8B"RÞU6oCwtSXե4ORK'Y,h@z j#!8DT*ї釮Si ҄.\}yw*#@rA>(%[s&XöU`}UsQQ> _{/('Z`Ҭ򈉄6wL"(c-i/,FɅ&zeɄ$/}|k#+t](keGu)a+Bu>9FcF<-\"Ɓ2yIIKAPa-![@XB9̭[u(KH~ܑ6"f0}˧mfedbV]DLoyE/~T}7?U yeY]:8Ct{dD#{e=|nABo9MLc]m/[Oi_^E?6׻ѪWVU*)HkA?!Ϙq1+L`pnDڇJ퐅.e85JESkC>0<ϭ9 ˸>٣OO줃EHe;40+\fUTkl:rtћSPMW7|ΰ'>Bx+]'AC F|*_d![m+DqI9P;7i̶)āAxlwr 3@?G6G xtܮCO(Ŕj%5PחLţQxj71<:sڻIbs'_M\@- &0v} }PT"dksAoCꌇj.)* DܸdIVV1@Û-.?[0_Vf9 岺hsh[v8:gwhq2ӃMŁ tq!i,=J/?É)gݸ߿}ĘIVb@! HP")eTs_@WUKS*5NJ;VEY=<JY0EHU_Peb/vLϛ6ڠ,tk/4Qq"~Sug^>ٻK7313}l(n35 ّߦ:w-KAoRT vT {2B=O] O}CT0Q`}22|AwڳTvtqEo &+jm£VBkEpݣdwB<+G"72 8_S; UPLPu~?ot)~jy+,y>Ǽk-b]cC, 5WF w5Ws"K.}Zkй "h)2*:{w rW8W+cA=6ɩlSΒe6+2Go9^ciV.~,_OhFSlWPhNuh ꄋHv($£w&nxQ V4>&; 56 XߝWv[ Y+2;|C4Wp akYݜ],Cɟg&NqX-z0TV$\ٿK/PPqb(&\;.LExH Um'Q<dz̥y1' |.b0l$5crObÊr)fa=ލ1}tE"*Zpb^MnobrҚY֭~4jAe.Y/>N #8ߖx%]k~#ʱJZ#d Mp~% kWV\kRU^FǻN15Sˎr|HYBĸ ބ}6i+b~My * G<1.PJ2cUjU% dJavN4xtpg#_Bm"~GbD:y"⋬5[KmSQ{zy3skџN]/,iwO,k$hp 7\@CpSg5Ce'4SWtbaa[=EF>-Jl E>A/Lh}JrFHM>_.|P v<|'dHq!r$l5yRt`n|uOsې) c St<tQE[4Z T֧v9G2ڶY*a-jkޘ]6.la2}3nGژoo{:*S ̺ {-tn ǘbgq1 N`~rӺVH V'0&F &3EPN%_֚i uԶ`#R,XH&Ct Aࢶ"E:)]80{K~~vȽ]&\1Lfh_,ɘO`Z-9 s%ge IWvD^ <$c #~/[`n+ϦqzJfQ` p&;> ?(%h@ bAY.Pz8Y8[C-h>iev12hgUs0ﲃӋ[M@o7$M>!؞a<{|^c~ދ<؋p}wAEDwCğGF&zkN|'[qk>+l(ԗ8bZ9𫦈#U/6^,Ejf Af^%qh{|335ә4~w P<޶Ðb༄e3Y6c–kkF]br4 sXHMA=xoRl'ƙgH K TrʂkKF|:O,A AY/ybB- }+k*h -{4q-S*'Ul ^@/N8Nv2 R8*5G2u]uktwC.|0q-M(oޑ꾑l(3+uI)<0lW2%5x(y8(ynX-}[C"德=CBYfw&x|ȚÉA }6*sܻ[*T,udfΕwpA63 >U;rҥE7O_b܂[;VسFtB}4l4Q?馴BY$G9Cv#6~eeE9%rE}K,dў뒤 .ڝ(__-?k ?W\g|T- eoZHS%WjMC\E3*д|3`/M, XwRV[au PɆC> C$J7D Fp'~ 8D],FUj8k:rH_ڥu{%*$D3Wa|tri6flK h38/36]T-Ӓo_߅%I?q֔~NG+Pe*¬|CS.VY %ZЧP[q23j`SU̵ˎ!ITyϕ 6f\!Er.mC\,ssM"yuY|@]`*%xnZK/ ;ʋpLm5?Q'_x 2B,uiN#pV3;iϟ,IahzrK]詸>m^̤ ̶vtV"KHlWJIAIj?U1ֹl>T%$#PZ^,V.(!@cc~{? @dwsN8Ŀ`M}5>e/+@eguZVEBDQ0n,~ߓ.?<wVD9Ez*I&o^f1E4PãNcq qGBX#m jc|4լQ2/Vc-(;4)(Z+1t1nw<ѡ󵱇[6ćsB|'@ecD,cNiŧ[=F 6̴^Yi(Aͽx  rѧBR' B 8Ω ƃjQ,ސ|崧x/&3i˓ZZ]Tٴ| o{Đ' 4r!"o˔-oAܪRY/ |zZKwj +Y|:9E@H85G7Z R[s“3Rcj2Ү`nH|X+I#%/R:|T*da |V/ v5BSA'1R_9>";GkcOD~e~7RHބH2R_GMO["Hۡ m*l:/0Ʒ4b**X[4T:ra M'핺,qXxݗ 2³uJGj)S0"ʆbtAƦ7Z$E@6Jj񦌌{F h5k`ʬ[V_v:$0&. !-kV7 ; p kY{"^˺'qta&# x vWaAլ@ J& #Y KHd@hZ^siWFFb+CU&Y.nt{,/>`TfT/G~읏xk,PkN=q'?nFw!dĹWeTIZ砭Ђ_KxqQ}xjj AkΒkCM{ (H[\`1-}awS-[u`5OH!! o ĨӢ# R9m#c薯nQ[lS˙L:@t#tY:J  v![iR$lM Y*Eְt'Q֮^MfHӊ,t*G4.FJu.o%Bvs%;p11`gqHq [xy0* .g=b:0n9T,~N6֦BS{5-WjҸfe?-3Tϲ mSb~Ӫmfy?*uC=:&sR6S֝^EK |IT`n, s/z8n8$_J!X9k^tȏX!n[Dse}?G/fffIV鰦JeEhs!˯|wARyGn,]t2FMLgÌΰvE?(`:i3ѦY~5tw37C?1!Pgt/-c&v4UѠnȄCJ޽͉D]e΢\kc"O!)3fc.Y+ODpROA1N,#syPb%^>H:]\zHdan$C֏,QMemj?B&R-jDXn a*򱱞I*y^J R[^Ub>ۄEqN*7A,eE:JVo]7#u8ԫ#J tQ\/CY|p`W~o7s+ &7hhI˷2 t{R.N1Lab猒nrA aJO%2G^_svYrv6ٰaq1Lp) A-؎4,X HB7 \!G{[POSeE$?#lF{ {,!t}-Q0|7 mJKn 5qͤR~s^ M%1_O2">:2~sp~4"={:2X)a'e824U밞Ǽ_s|;Z. rQF^v˴O5X0b&E%<\u/ﶖ--u!qjT&ml'*7&-,Jےg Cpov â˵-[Ȁ; ~e5W?EM_8\].3tNs>fDCb̮)VhAplb"/(6e]m?MgU l)ˏ6%$|;MA#v8mԿzYஓTZ?aE={^>5Ow4uÙ (Wؕ yYbF=꣒6Ġc#:_a27uֳzUC]ڙz=drꗛ56aZ"V$d-QTxSNHDDI̓mc+-ڤt\x~ ]l+f1d/+;I$Wv4GӫMrTnmb$b< 8ͮ,zLJo'(A_"DƊ; PK𝳆KLŖc FBdF`* w}[`x NZGkqug[Fą"3lnk:?G{?U}aݏ.W#^%JW#g/~%w-fJ ط%#nF@ZEtHRu=Ɩ 51^EdGb㑨HPXZv5UƑJM 3s0ܐ"LEL;i P߶2J|c;/o\OV$Z@-Őmm) -aZzZ@GePX{293x!)_#MRG#w2;S$܄%bzFvE9B1", `M՗EJ@4r8U6wΌ4{2R QXX}X",釶eKdZz{S\ԕ:D!X;&x"׏?TCېf كPVz[?ɸ/ Bv +m . {zQwՁ.'iMhQ[['U%UϥP/o83|:xs+XCEԻ<]۳" KÚ-aE0m&>!Xՠ 6˟x!. .%4bx?+SZӼuu^P篡Er, UY!0ZrG Yΰ L GpqRj9<99Xw T $?U@:r|y `@^_:k&{8\ÿ<6ϙ"/j iAfLN4/dh_R`bkie9i$ؤ7Qz/JhIz\G< erN̸'$|QP-H`l63_eN=#ewծ0 ڱ{TeGOKf%kUt)Ӥ5K %Ti>+d}EE12.rn( yMqy6dm ^P8`WPD /c;gZ^[ ,8~YP'oȑsO?e8I4&[R$cVhy-jFWJئtYF/~f$~Uc2ltH8TMyY Z2w] 2%]c%#H3_za/S+w>//NNR?ώVKf;A(@P~)%8WC7^?but_f l iB ~ӈb8UgؐPxfר8%Y/2rA}%.hKFjChsN V n1ڐYq`у\ \/D)zpwg3L&<'}aBMÖD1}߇=0D5djؾI/̟eay#^g qCpF"g /f@kHNGMfvŽB!nQ^s 6z޼mR蠕 e tdI4^cK1!.;:4a`7zP>,rcP03Zz,tL(onuQ\}UU ɲ54)HeFj B` |*gAXt34$dY4 a?w-!]YN8giRWlCxZ%5J#8>xc/ym)Fun=iS@OóՃh5D7N @1DT.TeƜަpVi2ܿ/g̛Q[kLsOyQYyN1uT4?PqQ![-@tt(gBlNb|!2f ~S R'΋p(ۨ,͏̉({#Nќ5RL{Fcwl9q@jV47q|rzV٢Hnl_mz[XRAD`7&6.hW Ek֯'h1bI ˄d=xf!"|.,5=fibF7"_дbOљ^@,iG5/jN/dlD8Bo7Ĉםp!|jo2ӨnFL1LOZҟ`5lsG]0@|4cx^zVϯmEJ˵o(HcjW۫"N 0rfdTzϫ_D4dG E֍) b̌vfWɻTJCC5"Xc="H*1! ] p("m1)}DŽ}DW*@Xz9uFLi^kY6#J1[ $(]' v%UBQ[2tEI uu07;yJz'<&Ls)1w鞰NW"#韷JDm}QBv*"" ᢋ$9aM*`oy^ Su ¯R#rU8o.cuQ9hBG"Ұ7S'hI3uѡ$gJ^Lt 7pq P4LJ5gw [{(քNx!i.!ҁ@Kq#y p *ܰGLپDf& ;uEum'c2ါooM/$~É6vD]E+)>r2H-bWi!q^coBz/yJ% {م9$Lgym~OD[!*0( *6/ E9 eu<дJYG1!yAɳNS5ރi1U8!mluNXShkO j,Ag2=R7Ѝ7vVb$&^﹠0^ᎅ-EZ1ߵ ۱%b hgǿ5+fqd6zlXoKt~zMulO詑pW&{I}r5/G*^+](̪S>a+]2KZD)I@WڻZT]]i0׮| ZGusƇ$zBAXtoxmć<_ޏsP{)R _y* ]kޥ"YɦHv̝ +m/pG`$ϫT!?cc}vty _ZS^bSo銔|ikCo6!-V8q~L<   igˢZr)L#ºfQ}+b W"x=>{RBmwp1X btBiׇV:#wЋM›\{mbJW!>Bwef~pUd;NQTmiQRIˆ-;mQ#뫿Z sT4K}…mƈV?mR$p x AZJ9#](xICMؖ+RgsdV"ٜE9`F0sxRB.1.4mrp*A;F51N`8ݢ##1nV |ʘ:X > %$'o4y[_)}UXʸÊ >܂~Pj80 )j01`듨en^65kRRjBֳ "sAC+QcZd0UpMPê&%?@`9ҥHCJc$AMw Qˇs'0xA1i)9$MsP]{hdzLU/Rus$:RJ&%F:*셖N]  ?MTk+JXD+'\!m fis, H?~.Qۙi֞TL0^-;t K9$2WfJ0dPCּcBUaq|T tfu)RtF<D3- ,epnqVPh٢FZe!(~ ZX OcTn* ߉RK;Sy_GV˄.N>Ҝa%7?s$~)MNѾvk`otif_z(/- n|FtSJ0)1~rxcv*+}N$g < y*By 9r{3F/$ +cLK$7lB z~ď݅t%@u,o]t¨W6_X1$X_™pY"pc=0 q*`羄Ywf}exڬSp=( x$8kZa߲w$PQeQa9kcO,"o.v=Dr-eЎ$q(P;;l>2܂N -֛^ g=n:[S 9\LSZyKh:j}eLfۅBh3Q<\ЄaJu qRvR/)Fo)KGZd_SlwEԛxol~jI!,^Σ ^\?m$[7 "VHw] 3:q. H8Su_;OΠVʿx'GY0DkEC*'j鿔RXeJIt>PAɴ`HZB y>o'ۦVJ6uyV(Hq WMp}DCo pME:?{hְ"h SLU|Ec }L]ۗRny[%/Z c[ݴ`SԘV!UsIJaШT+A_~A.d;u,a|?㩿p:i$k%N5 P)J' kh_Fc̴A~,,E~~xz2%EU#v7pg8":?Ԑr2Н{ Z`96g!# 3VYہyǻAwp\>tb Yt=|ClvQ@r ל$m֜2W/ ZE yZ/P3Nme6$y# \ۧK1~72靳PI S]׉HM*^KX 4UNq2dg)@sяjM %q*RS;.RA+e&LQyPUXANXi;Q&3nW1 RbPxkzAeڻgl'p8FA)c$! n&ƗLuTcTV|Ao@" 'z~ʜeF;>4LY7"<+(Ev=)==h֙ԤqDDߕL8)a1ɼ<}.P!`]62;staE;:s!z2n#z.8e,Ѿ4=mmBgKN֢&|,vʝzId/Ï>SX!![.]]"W00uyO6R=]o3ğn~"?nKiUF2W!hxiOBaRj͕q u]2a}>,jr`rFdK091LdKe , 2^)2.QC /aw.nuvD-,Ejt)QE jr 4D;tȥr3KnXsh5gJgLs ~P[KKt N2]g)tX:,Ь@ a]wkˏlN9cﰂ\RAXkabyқ_<{~i[)M`{ƈdjav^F(LMT.B((d˄t1Ҳ[Z =b{6ún% id-Em`/Fx%l3ڮZnyq`tEBAXm/rAcQ }prha+`(.Ž?+M; n2osdۓr|jK1KZcc񇤧A,2_FgQF) +2tg&rR5Za:͙b[$$δ ' %Q_WZSs@Z증q[ &5zb@+^O)G|ɘ꘏¤|S{)ݺrF6ɛ% 댈 sͫZ#2C$201zq nuĪc9OʪrM4r!Դ5 p*Ǥ ]HBUZ:md#~HQ.쯠ʾYr}@)3r{&K)zR@DƷgCRNtd8&bHQlNpȪ~ YZ