orthanc-source-1.12.8-bp156.3.6.1<>,D<hY;SI%z aBǸ}/8~=?Xr#;?P!} U,j2H76;;08.e!@-[/W'7.~u,u7 Rfj(kX  >y2gkPX(m5zut7#msF {~;x\ojR ϒTB;9a)6;J翑mO&pTVx%OƖ\ ǢYukam xLbI49O M zKÒW,ů"##bz|T;B3SϖVw 1O /ntrvGQ8:OFFuSub(!­ÏUdazQ1#> 5xT4 SkY,kKR{h`(Udx@`S6XBUU 0ѿdWml*3HcE9~>>$?d $ W 0PV`   P / & #|6J(JLYYYZ_(Z}8Z:9[l::bw:FSGhHIXX8Y<\P]^Jmbccdde<eeAfeDleFueXvt(wzx0yzCorthanc-source1.12.8bp156.3.6.1This package includes the source files for OrthancThis package includes the source files for Orthanc. Use it in conjunction with the -devel packagehY;Si01-ch2bSUSE Linux Enterprise 15openSUSEGPL-3.0-or-laterhttp://bugs.opensuse.orgDevelopment/Sourceshttps://www.orthanc-server.com/linuxnoarchRLv" < 01#.?aS&$),y\$ yW@p   q U'9h% H 2k  0* =&V ?=b( R  >N!Ö 1 9+%'_+v 8)K 7 INbe|`1:+x06Gb Jh-F@ fA 0Ta 'W 88h RJ*E  %@ gi~   p,a0w n o0 ,  t" \!8 }n P ! Lr#  4q v\ 9 <1j G5g<  p%AD]> *5X= /1  "2lx @U = 53 YY *   , 8 A ! ( Lxw%~!Q=Ae.: iA; 8)$\" z.)w:|!Dd@ #9  k oxq>rxcB7#bs*s-O Ga B&8 Xx b. B f+ p' !L ~v s(J  !o p p# _'.W =&"O '"K +!| _ 7 p  ,7<S(zF$}})!+D 0<jZAl%#B&c H)uaj fpy  ! fV @R   {nM(4m 0< 2y4T!)e Q!b-s`4wpJ j@ n kry>  $`f  q?#>; M V ?Pa0ak8x "%`a  Q} . u # * (' F *Q<L@-G  5l $ ;d. zl , g  Z mW*b:31 .C=/ /  6$ 35XPh^LA큤A큤AA큤큤AA큤A큤A큤A큤A큤AA큤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큤A큤A큤A큤A큤AA큤A큤AA큤A큤A큤AA큤AA큤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큤AAA큤A큤A큤A큤A큤AA큤AAA큤A큤AAAAA큤AA큤A큤A큤A큤A큤A큤A큤hY;LhLTchLTchLTchLTchLTchLTchLTchY;LhLTchY;LhY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhY;LhLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchY;LhY;LhLTchLTchLTchY;LhY;LhLTchY;LhLTchLTchY;LhLTchLTchLTchY;LhLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchY;LhY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchY;LhLTchLTchLTchLTchY;LhLTchLTchY;LhLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhY;LhLTchLTchY;LhLTchLTchY;LhY;LhLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhY;LhLTchLTchLTchY;LhY;LhLTchLTchLTchY;LhLTchLTchY;LhLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchY;LhLTchLTchLTchY;LhLTchY;LhLTchLTchLTchY;LhLTchY;LhLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchY;LhLTchY;LhLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchY;LhLTchLTchLTchY;LhLTchLTchY;LhLTchLTchY;LhLTchLTchY;LhLTchLTchY;LhLTchLTchLTchLTchY;LhLTchY;LhLTchLTchLTchY;LhLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhY;LhY;LhLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchY;LhY;LhLTchLTchLTchLTchLTchLTchY;LhY;LhY;LhLTchLTchY;LhLTchLTchY;LhY;LhY;LhY;LhY;LhLTchLTchLTchY;LhY;LhLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchY;LhLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTchLTcc0534a5d8648d6f606d9a5b4c263345c6b75d31edc79de8a03a586bce13c5a59ab3143a2a8480e71ce7962831c2160578d18affe37e88a836643d3a84b3070470ae0485a5bd37a63e63603596417e4eb0e653334fa6c7f932ca3a0e85d4af227752bd9d164176c85abfa569fb77d7b85f17a41dc446c52312dc622f2bbabbec29aedf579705ffbdd93d7500fc5329449e61381545d843db231d0e270485e05e936dafaf1bdde937987ec0b9aebb8f528e092d5540c049b78daadf99cf1d5bf8647b7df68272f275c247764dda885efca156fae3859dea3333b324e09500e40ba1a45b1d0a8603dfe2cfc644f9dab970b1762f92babe2aac6eb2f5d4572c4a680a670370e60652d55be46c8186d0ded8ac82f07dbebc9064c3173b0cc502977bf220f8cafc821d1d9f5bc2c9223be778037c0262bf7dba65392fffd36705b34cf3920ec5b8e69ccce1bbaa090c1706adc6bfa9338e9d09e80a4ac9b44d8fb7db928cb0f1f582cb50e7bf84d079f5f1d021b02e6c71c303519185d64b34811cf7740b17ffb452ac561e8dc6e185ca9261b2db82fd00613186412c8d5230791564a3c7ff28ac8e87c1b367fb93a30e3fac388814458ea0e0cbab30d8b497ce97f8a20168d4edd1818ccc5f9b9339645dbf4deba355a53c5ed1673cdad606410bbc8a43a1e6296e890c8a6598f52e0b517e10f54ee2d156901afa19dd87e2b906e7fc5925c49f4c913545133b22967c1bcc0c990fff76b2365fd3b0a941c410d6f3025c21348f54736e1e0d486f7f9da2d8215e3f39f68ca326d6bf662e72e3027bea43000562df7cbe68d90bfe473bf2f4275c4cf6cca4367e7077499d730380da684b5cd31ee504fd838bb1f7a863ece4e18c476c4abe001ba7d6010b9c923e3f1af43d968f3515160fed113a8b71dffba45fa8fdd5518ce22925b69870456d399b9689fb1136b2ed6e773c7f5864503691dc067d8c5d0bae4d955437e9f00be5fc888fa773af3a15c8330e9dbb33d7faa10603831b10ed02dc988c69f9ffbb4b4a950973531003e3faf1436afffa9be84b4f3205e9bbd03edcc2a2dec715c0276456663cc765c6ab35aab0cfadee2a1d2204825ce398bd4a38a5882d39b8515002fc467fe5b47d688a405637336a5de84740a20c0bff6951a58c6cf687ee1c5a53e2b84e41cda4f1b7b02a458700e1b7b2995fdc064a149904695a00972be18239893f7621ddc1cc0bd5e193858444c4a7ba178e2909b6563a8b168f6333bef5f1ccec13a630369b58aae2b5f08c1f1554ce1ff90ff4ed076cbadad816de5ebfc83116a8b7532123e86355bb0503375676e0a9b0f057237c24897e9b3f718913cff31024a7a42f4a465bc53486c90b68aa65b8e9b2d6945cdbfcff146ccfa8058a0a148f444449a391916e49023205bc0e9733d5d7de83f9d9f585ca199b0d1c6b2935a94a60f17ad06a91aa94f6086962a51c1135efe06d88a61777bc19312f2524cc16aba21d47fa27befd6b1a82e81ec7c86ca872e049453341b133ca5e334d05b85508a2249e765730b056861656504c9de91c59136cd2922eab486d30c89ad123c124c9c6654d9b1b2b90469af06b0262592279b64c5b72b94c8630a52bd3ddaf07e41589e12425dceefce634d4eee5d22c89b9028590854f7fc60d677f2c52ff4e634addaea6e650efb7b59f3da586b2410b4bf22966a2436f0138802bff39c34192ca713960824a07f4c23b0240a4798b56eeac475d3198a8447c06e1b3bcef7809fe5e4577b52cfb4adb2059ef62679dd5d98fc6f88bcd405f9a70cde2980b2f2627f16804c6be6315310ebf287b1f699272c89b4dcf7d0d429f3da3163d0b27a384548ddbe2b8a3c8f22c7017acc168a02ca5aab76afe4aa21aee929d66aaa4e954d66b38949e714e32539accfe75fb49f0b0ff1667254cc3728e4d765fa38b5bf8429a554dd6bc6fd67a25a2468a1c1f5cd3c8916b188248564aa7136a0f339607bf09e9e88fd0c02242c16fba31984ad4a935bfb1f1333f0e13ebe25d2849a0cb9f30954eb69c37d0cdc7aa50c3f6e2af1ad3eda8854d67fb082cd1e1f665fc51525dac4801f4ffc143b3525cd00293519f57d21d4381eae0e26176664068baf0e4a1052a23b5230dbedf13c0a0ffed122bf3c594053d4785ad3b4762f80d0ada21a21e4355276fa4125141a88b7f6c5b8eea6f29add23cc306252cb1d600df7c5ed5836ab5099a4fcca59adaca423be733164ea097ca82fb98c198f7526c472b7a1f057bfdda99e832ad2f699d9de45082649d56b5e5274ca5e364db43b4d7b9de923103e6c8d164b1c2ccfdf7e115a88e7c92d8e9f2a8fc8a00c99063573f72837ec7cf1e27c7e4173edf7baf85b8f3ba19592bee48756a44cdb5444e23202932b14bbb50785a2b3a9ac8fe1d2d1c79ed94ecb77d43a3886b5c5b8b7256e111a8ff9a58e14f0f15d2e63978c82a1414e7d804e6019242d6e2ee5cff609e72070e542b2b45b63b2d951c3899133914c863c608ccdbcfecbc0a2a9becc2c000d724eef1bab3f2d2805142ccf84b806b15cdd884d636c1167933a1271d9a398b6304369ec9fa62e1128688882d1f7860e681a184645e1d4cbfb49990ff38aa33d442f2ec7b7ac4284a836e82702552db730fbfe4ac16544b0857c0819c5aff8577ab6e0ea3489ed4b4def59b89788011ffe225236fb1893cfa644d6ff700a6beaa917fb669329370265c84e3e2bd21169c7c310d32f3118ff46bb4261265ef9162132ec9d91ee6ce042b7db77b82aa64693057df991549125b77065bbc6ac549e93319b5b788a70e82a8868855f180eed3a3894d90a764b05e42418aa533fa39f4ad6c56ea843a7fff60e2b13a2fcb831d8b451c0d6e103e81370651d6ba08a5df3e5efbfe4054a85d24d29a03ae62330ffb7f9ffb2b89ed2246b9e4d34f9baa10ef673742a68e9e81e89a57ee7cfdc574f48a58c9524a9963cd2cc6a1b90329e3edb1ada8c007f80bb48c6b79ef601491f432d07f31b261ee00b4fcf2ac9676e01fe977d1eba78adb1abdbbe0afb5391319f931eae81af3f7b68e188ff242629b1942001e9a4327601ef562048089bcfc0dc84e7992012632b8a9e89ff0153053f9b08af9d2c0e86a515b60c05273a83d7c001f63b0d441c858fe3c6304f545c84bd91934cf3495ea08dd9a2f2791edd0ab39914e841b8d9744004b0862acc9fe938c2f84af2838e9ebd8f007a3a1ae3070d86aa63ced142698b15a09c3c1d71a8283fd0fd4ae2b270f07be6256f6928bca74aba137d596333aa6f7ab8a723c6490a4e595544bfbb16641de7973050cbb37050963974f4569daf5c3d67bb99ffe66b4af0a35c06ad46f632658498f97de443fce14cd437d4488451cd85329fcc1a8f19b6991d99f6a57308cfe8b9391c49ab2430e10684a9bcaf6744ff4648b69f68f3647e87f75e9c5f2c0e4e0e885a2a1ce92cd029467ab825375fd450b7c506fce371a7effee5c9e6610fe2ce370ef6c2cd3991a7de72972577fe0fcd69581133f682058646d249a6a7ac49e641b97006ac85a0adc24ae8524ca58bc6e81438c62ecdfc64aa48e68b4da805ba5a4c7d2912c7cc08ac8a284d165590f75eb629a01e9175c485e1284ceacc743cbc682fe1d1128c159011e9fc1ee14ba81db5732d1a89ac9b9a34d5d37b817eac3b10fbb473475ad94143f92eae850c9fa24a51c1e92a4b47bfaf318b052d0f03905638ec490adf331e3306d812d0a51be1351304f628de83c05972f606128b6c096998e18110f7a92739a1e79067809eff65cfba3708ded437d434359f9d84834929b836d27190fad0e99e745e91163360b4f9c83244cf65937b577129b22c428b9474303ce34b5a9fb43269128f5e0426beefa714f067931d1af6925504cb9eedeb78f04bc30e7ebe186aecc51ed1c69efc64b9abef37aef906f5815f237a10838b6f74738c7f53fc6f43c6bbc1b2746460ae4db5f448445fe0d15960e07704a36f8125e6faf01520bbf2ca1271c642df312030a8855dc89236dc257ef65dbd8f765d066f5eeab20fb3c3ff2d7fde2d74a513f4ca00d7cfc78e8578eff439c160b3d2099262a491d5d87ac17dc8dba513d89c53de696a67b83dfd2588cd9cc5f1fa2c53ef3838d208a38be6265938d0a19c3ec5d07f5110b21fe93f36a8a53374ee15acda085d0a3cd50e31d9f3af14744dc82be0bb7a8692b09d7d48c6737d2b2ccb9717ba8245d55ab42d7944aa975c6e7b7fff56d315465e66d7ffd4348b736113b77eb2e94b9023fb1862ad5943815da7ca1622abb8ea28b95538813c9de8055d71a7f5afc411b686f1540da0db3995ed2baedc01ad70c11180d2941a9fea535a998c716fbafccc6b0a6d264da144189d973da9fd94f94d7ce408eb9627eeb9542de6d0913267b83f470e3c0af22dd7303b37901c7ebcf3f9a2bbd484e92e3d1aa70078ca5afb3b3d652e3fe8692da7b05f0f7637664d597aa97bbeffd0309832496473089c3f2e30cf89196a51b33e02db7c96e0548e21457a6f0eb7f9077a418d6b8783577c8038a40624afb99438c7b9d028df804e0a04f51042b465bfdbd152d33cf8fadad6f98cccacf5d0da2c8e83a7b5a382ef24a9bd550a4e27e10a0d613cb809a35046eaa41e0da567572a2c8b5c35b91655879cb2ba7fced9e6f5be8c1d373ba407bb38fc3297ec58b0de398889217157055dd17be11324be1d1bf3e422af61575a5480ca307b3abff624e7aacc189e889af63049a65521694c9e3ac6a44dbed2f4322e18d788427b97cefd6375e5cb523b172c8696e1ccc16d5197260b41df011fc146db735b349bf21661a36f57830bc66849c288e3996a3a9f695cb13876648dd1d4466a9d9777760f7283ae185fa828b4d26575a9468341939b69bdd7d2e1e167df3ea8ee74d79a465ed7dbc72fca532b705157c0b5ca34d25fd6e52cb8c276936b0ee040ce8abc83a712bb64234d1aef45882587d08250bd6028bf19a2b21819788dd003f15611a3154d2fdae14706250e2fed831189edc81dff8d356b8a2f165007aeeeb20dc94b902ef4642e31922dea3d305d9c94b74889a3080b7aa6d89cb877ebb97b8e629b27238b3e850f32a9b16924929718978391121e8f3136e29cc3a8f066dcaaeb02e9cec79b276b77040a7df1267a6a1417caf10ca6a13c40b7967eff597f2585f36c95fd564dc854878547c4917722f01ec78286ad8f5aa253c6bf67fdf6ade8d8a88c1e4c99c6db51fc3fda3145fcdc215a3b73009335923abe5d068341e2a307d7cfaeb816b261d92ce87a07be62e3eb58c98d2c769e75a6e2b9599e2ff372d1a4b4a0c29c06b6a8300069bff5727a86efd304419f1d74241f2d095c978923cff1e80f76baf437eed699d5b4ad1bf515008d669475d3dd0d89ef706dff11ded396f5e3147c632a639423e80ced6705bf7bf75d21cda0c571fdf86b6d2f2c3520dfc3061ea9128a1afb843f5cfe8d7317adcefe3a45884bc06e06a1efaeb10e58d96e5e632101001544b2ec5192e52fb3908d453d0646790ecdaba367830a45a9150e4fe68eda9d005e85d5526c6fc739536820aa943db386763c2eb996b63320ce05de89f5b77d51581d08904de2452d03bf38a7a8cf095780d4e499ad45c0b546b5fd0ee3d0819ff057840a892a3d6dbacc85b757a35a43047398ea07e6637937b8b36f2b956aa48a531c79cdd4b2551682a7a3680fce8b9b635462ab52a612b0a20d9b99b4ce82025b815bb1370574c54a0c6855658050783fe102a3dd2258d7d2e8ac1c4b0f1a1acf6d608e8373bd051159e1f805610a1962f6c7590f78b0447b20ddef2a1cbfb8ce5449378f67c783dab4bb2502b414423adf5915aaf5be19ce498ccb6cc255f4ad4049a0021f4d12a537085662cf7d7b686abac2a4f1704b344862d975ce0c2b097ec6602e9aeb9e65a54c01f1317ed45aae72aafbc32be1833d5f924645a95c3fd9137abf3980c6faf393686da4d33be83da9585376a048d47fb391cebea40570d6726ff897d1f83ef28504bd3689f6542f46e71d2718288a7e3eecdef62b80118be3b642e23f5d926bdf56270811016e8ae020bb56d2d293bd293dbe15e32146be13789adb2c4b3c3a6678357e2bb617bebff5aabe3e945c355c742d3dc60a9c1bcd2cf64d711b229d5d8084f3b7950db534be94d4c4a1dfb773ca9ec3705e2079c1f9d07d0a0b25acde1335bc87c16351e71872bffec2706051dc48aebd5b1bdcc497112cf403ef1dd7e3e8337fc0d47e6238ae74359515e6399aae920a260eaf013171b08c2ddbee995ff1f26eb4cd1edd7fa28865c3539acd0a9da59eae0f212aa47f07a0bfbb4b041cb8979717e5436f28dcb295cadd5ced29cf1e5343294d51da6633cc56f248d8d9e2153a4003562d5b2f1223218580b5f6eb39713abb538fbfde72921d43da3e01f403177d0fc29dbc70354774fae4a5a0bf245bb8396c22fcf460e9f00248c697df61f0d9965e7f08a5b011068790782b76455c1173f245cb3167b613aa94554b7b29ec3139473fad16bea3f80daf628c008d9419878239442533c7c3f4d44b5ec368283f252fd7f4e88c9c7a4a0a0888fa0537d79790b086977e8c35e0ee9c056cc58dd9069620f447524b190dde739226346685abd622a38657e4e59b6b2019eb65ea924f2bd54d22d4e2ce1619d2587ed4b43cb3ad1f2ff931b3541697a1aac6819bde09ff63e684ee271ce19d4018d9b219446331380efef3554b0abcecb260687476ea9ac2cc407a971a940fbac98745921a9183a0cad6e6e881aa94456c1f057b8e37f991028ad2d1ed5b0e7acd107d2bd23607dfb1c4c74a8d02b3969afd5f0d6239310fba99b1573ed55b2f1dcc4262384451232b86a6dbc775b7783e976696a8801a276cc35d32f42e3fc3065b9ce8b2788db5ec7b990358daee7cc617ce216cf68287db660b32c974175294c710339dbe8286febe03e7df86d6610911fbfafe790c51bf814f203441e732a6f05438cb64f4e86690de3d9b8eca46b30c398103398d2c22dc3581e37c2be709f5197a22488b16dbf46a8bb61828c5d04fcaf3ced3cf728414acfa86fb50db6dc8dc681e70238ad9b5267b04ff972610a493f8aff63e0ab0df4f2ebaf5d3093cbcaca4191ae9a7451b546393c8ca604a6cb093b4eeefa24c9e8ea6e2b00eda9e8c4643ae55368919451527fea7e2d5c812e8213f0328d21c48d99ef8ce41e54845469957ab5a7c1a29725f65c915a03b6a72120d613d04b230493a4e47e3674609246ff54b55ee6df56a17066a5f27b5971872352ae8128e82930011ab6fc82227fe7a813c3281c3d82fc7308e3a25818bb9541c8430229fbbc5f58bf5d6cd8f56054d15054f4e6701d8a9440901063d4c8c49bae8e3569766269b188bb8f59b65d170e8b1c2a293c6d8687726a0e043a6eaee7789676964fc581b63fefe8ce02a46c21a1b57944b430b3f6a5918635183ef8b24596c00a40654203850fa502f40c349124054c1dc1a717ba273b944347f7dc4dd9c281b667a330cf9a13f9de00718f975999db1b34e6ba49ddee34646db734d28eadcae5f95eca52c126cfe0280bf62da60e0d578edfa39500fed68ad503379675f9e06f68ae3483d6dd8f0b3fd06807521c9a0d4b0b8cd01e931d9e69ab419191359566c934b9445457fe8a1d6495af23cca5db68a06c08e535e66b924b87f091a95b5d3fc035a30cba15361d4e960b1adf3a778c2a74576f345ef30f9710858eb156f52d9249b6ac21ae80dad2ea269fc2ff9656164f2b97d3e45e90bf47b7745454a48f21e5fabd504bb321b332c8180c07f801072217db5c07fb64fb91436355693e18bceea852b66c9ddd46bb8e743477ecc8b0b1c5984a514ac490014cb9873868dddb6478fd0bd65fa6030063a916c9535b53df30ceabf59d9e68912e4b7a2a701c716adb617c32766bc5c4dbf5fc7b23352477702fa35bd720c79eee2f7cf49d38fc3d88210e42acb7c49bf9e4e1338129410f78110be416988d549df239ed11aa71d7329d96e6f29df1d6121e89e5e830cec643535455ae86847220d6d7f78dd2248f6a37f2333170d2c489ab773e779db379495ba49be55be3fd118bf8266d2beda141538497456a8629ebccad9710cde368ebc7d454c7a280869cf8999ede6b3385849df7b29fca05a8a809556393ba10d34a290bac6c49e698ab39cd5ae2c3f5f0b87ec6f757e2fc00a7e167f9efd4e5ae7403aa6f9b41186c9edab87509c2329ce1e34f6fa9e189fb6ad586597ffb380133cf655430988296e23216ae0d26cbb1426339808c5206ce288ef91e4cab5650787b574ca66b0638f03e8a686d6d4767721e3fae43c5016afae2577f7e089ab8e4342f4584c736f8544479d6eb72020db56d54c37f12c0c2d2625f4eaf1475289f5859d8a37d232b5854136627228f0e595991e375dcda67cba143faf03bbb64ac227bafbdd6df994d0e0aa2d31b8a04814b02670ef2fe821891f2f290a04c0f701ab2e455aaed54d6aa2cd768af06633e961e2f88447dcd235160ec2b77745ac117c1318182174e6d6c9ec886f7cfe605171cfbe94ae0d8466c63e831b8b97063b77811a83fe5d47529c66487d244c0735998da0533248927152e24b547ba38274380107326749e1b3b2b7d1b7f7985b9a92b83ecc00504a26de1135f7355e971c65f3fd8d20462c87715b8df6cce39ff803f5ba41455f4dbe24480870f8a82fe14e75194e1d69e78859ff07ef1cec70f2201f559905cd898fc99c9a8214bb580942cba909b3d855e476dd20332ab97b995fb613562bc37ffb1d2210bccf45504fe4f44cc6bd124e0409c7953be2842c4d7391b8b2004bcd5dd2b2ba7282f2f2bc80bebf4da2796dc32219a27199769b3e0d02fbd4bba80fed62fdda933499abddf65d01b26133b028e44f8b13ea4aef4e73681a1eab9e58f467bb1fa0ddb842940b11562d9d55d4f70aa79da629e3d6db8c02f13a0cd10beb43a70d3e537c49fde9eb7ea2e60e04e09e8bc8d87d53af329c146cdba8d920d13ba9796fce65bb5bb61f4e3022a78c4d7acf63fc2b8f30f72db5fb8d6b20eccc9c2446a99d7663cc2156ba4bd78dab7e1ca6cb3e25ea7147c802fa99b488de87130594c0f986cc547f96de0c6c63ef9fbc45b74acc3195c3d5a8168445551d52ead4fc1ff297a97be76af1f94780504c66171aabaedb82eef83e3022ecf0d83f07b8f1bdff07639e1d3e6c7213c3adb8d684c10c4d4d3c50c25b5ce1602fab6c734ca25e8db394f907c75d1cf02a8572b16cea15810c20e379ed5dde30b6de447cebbbcd45b7fba469cd8df73624d665b5f1b6b8152b0d54ff80c8ece64f5c2a2e228b6f880dc723a341804751bc84c8b1113d8e4d525df337d15cbdda75c66547f0af097848c3898472a2fcab9f698aa89bd75809112a1e0f53d6bc682002a65bbf06a039b0b2b45be37f90219e7b819aeea170bea025475d636fdbedb64fe2bb77393af564043b513f9ff9591a5b400f11ea79d0d675e904f128af93c81a78247dc5ac18481f8f764ad813e4d4026f852f1536e4a612cd9d44ad912a5a30d2e75c4e637044a1b89096d80bf0adab5a261b352adc5e7200bb1f3139f82215993c83630f11db32fdc195d3aebff4751f0b0c397743b29f44d6a03da6b4f5e763269bbe4880ed9c864c547cf5960d247bea86912861c532f46ee835778e5e362891ca7ddeb9a06d9f08d03d9aa4572955eeb93fd9a5251c8f8e5746ed2720b57455f326eacd8ed3b35724b9d3de596aca427d949a077eea8b577386edef99ec6f4d793ca98dbb1a972e6cf65138ef7df26dd4071d30eddb4c5f2963788e58fb01e37845aada5e3fa0a90885ce435f07bba26c517571529643137094e807846e9cd4963d99c0715592561f8e59542d16da30e64e791bcbebe8c48cc3ef520968cf1391532f944b24c318244cbe982e520a57cd209357add86edbb88dde95e68e7908fbcfe200c2647d436cde8663d29a8b937eb199fbe1d361ca283a5331dee0919781c9b9aaad80a1881e2b41d9bbe8c04bd8d93b780cbbce6b1e93f08a85a9e521a2701abf283310b02e70921ceca50ae0f4f6e80c44564043d9909bae6586c38370491d0b67ae92d6b154fb1bce51e7c44fd1d1c8f461f6613d21b6e38702d77979d787067d1b2ab345f08a9e7dd59ee042516898497cc29ad3c3b0ee22875559127891e9069760b45b199005c8176b4c769807ea91583bc2cf5a3d120837961e16011bd14e7a6a3ac7689508045bade9920c7c66800588cef56d84e6dacfa1afbdb2527dd36acf0f20d65861f2a8467e5abdee699387c166a0ae81c248dad05bfa012c42eb57ba4f02dc9530db527b618a76e6b096dac9c94014a923dabe813f35aa3dc6933314533d3c4489c9bce6a51ba5b944494535ce0c682e7e0b06531b6797f8df3631d3aebd464345a34f39f6f9ed793d0ec4ac16db1bf0912112850d64db97ac94405a222515f86071b763b89e6494369a3cc06ed360af3517284d17132e8004abaa9842e75f085893af8989d62520bae3239d56ccfe60ea50f00438db30a84ea3ea3a4b646369c1d49326707df3beafec57f56e16aa6509860ed59a603e45c208c6fe84c03cd6e6d7728980f953adce6db5b485026d5564f7bd80da1f10ab28bb96f5997bcd71996d63f2aa2324e23c2195e599e3ab00b6d056575215c58819047972aa7ccfb6b576d2bbbe5485b15ac481dabe2cfe1103eac391c1905d2f7bc038260741cdb2f8ea8c08a4bb5e3fcd48c0b71b12737768ab417a0dc56ea39d2ac23dac207a612770b2650771f067c2cf879c020a5b2948f1961e5ca3155a8055125134d21fef672ee513e91169b7c29fdf5969492400303d96549fd963007664a0a4fc814c1230cc00abcf20bdfa89592084fada1f3d8d08e59610e056681c7d447c03e2c4fb6c93bae743eaa7876afdfe4f00eab76d6470e23e8d6d0e9d9df827bf918e4a6835b8c4c786b9b419f2a27e221249fe043de6c67c8e5d17547bbeedb5604ddc7635fa8dc69dff5e0124bf7430ad0cfb9ae2ed5f5d5c1068d7a62339e3c1a01def96471b09f498095c18c53f1cdc6a7d03bf54b84436db37b69fe182bb11df431c7e3f28d5faeec75d31765df173b1be78d368256386b6a146832ea1b8e15fe1db42de63212a9b0d78d7f9bb2a6a4a9f944e17ed1bfce1b51b32dc92d4a0260c75dfdd2e467a0ce2fe7480c290c85fb98b195acabc702e565cd651e4dfbf628de96bdda4ad2b680e99cda9bfb77e855a069bf4aa7a5ab98d740241573f0fee527a76d566ee20e836ac68ae270863fd738f3836858192a9546e1a23e402ff8bf835faf9eeba47f207303754330efa112254fb290d8405e44222772487aa0991683ef03bd42192c81e0ad22151d99b6659cbaf9d802377a4da0daadfbe8ddfd9e3406976384090e1bb0a213138c1f05376d8134696a484f3d8beb11d9f076e6877fb0302c271bd07c6be70537388fb387a904b8c04fa85d210c8a4a2953fb65e3a5599842ff8cf868d598e4124334ebc099cb0215349f98dd10eca4a9bfa9cc4903202beeb6a6e7d2a0012168bf288b4b8a5b6c6d41e191d309325a8f655613b0dbdde36674dcb969567a917567ae61795666e28b160c1bf2ffe83e014f3c5425d7c61ee8b32bf648a66922c3e670bae160bc8a2b0c232b0bf67868e231ae613eb16cfa8c0d03a138695cd48192a52fc5741de82bc1f721d581c3c0ff21e3c778606c044f8db19f3b3dbd58bb325da049e194d6f77f931e3d7884a2ab7729e4d4049833baf2b745dc5ebba44aabdefead62309ef19a2c945da739f5477ef4756138a85a96572cce35762ed8f326bb82bc247f115215c7405785b7d757a7013f7268599e8cf6a1fb921fe4aa106ca4aca1295c16596edd3437410f0a1e4ea1a868580c5f4d72a535fde6b2f531869599766bd0ecede6bf7997fc80416cb0152afa9c705a12fe997482d22b6952c5293d7aeedf16b7379b091101d5c6e7d81b624ceeb27837e0ce3b1aa0844904eca1bbe50453cb0daf09bbc9eb951de6e899e44dbe249e54fa1fd9ced683470126c0b6039e2c35e7f3d6cf7c9cb0e491edafba4c17bfc9520c370beee60bb0b8cc0329d406b5e8d7ab5187381dd037530874b78cf5210c49061c8e8b2c72899d3180c57614d2ba5ba0726427b81a4dfcf2846856a5da1593b74c8f65bbe8c9d6484ce02d3816a00ba81f04da8b618fc23319fc0fb741581f21b26b523ee923207b5ab77657624b4a4f444d8046832099c69723b96beb3b030b8edf1b0d8a8d6e2d70f18c495219da0fa042ceedc6a9fdea84f8d887596ce940380831545f95a21dcbfc4c46db066a571c45d7be824dfc921ae651ac73607f25128851c30367d39f8ca64e161d2df70f2f73954b41cee7cd099485a598f842342e66a48111bbd42b57d6b99199d0186cdbb75d59ef7060886d3a22e4ca40656bcce518b6c9f15b8a757bac714ed0f289269f9cfc065eadbcea98d4d0fc4432ca009894ae5162af1046a6ec2e616c9940e3ad47857d02f294f6af70cdc0209483367521bf1616cc7cf50ad8f981072ff95c8f3a82f8f7f573ac329e35f6998556bea72b771bb7abdfd5bc3dcb718ff5354e2c4bffb365425d1b28c85957d299c3a0e578d49871f1c2e235eb9de18c7415c5340e3b72c3637f77c9c56edd0a897a84b2667e457598f0b0a6b98519f87feff1e2e8c929816f8f5c99f5d5886c952998a8b772a8e76c3748ded719b1323b16d5d9c3f5799bc5426fbb65945c946983dcfea0bf9c6ad4659f3cf99f95e4f0e7817d820cb3253904ceeee8a453a7b6bdec48828bef531242f926d930bb32f8a540e84e17b246231aa8d5ed6f790056548a169ba5bccff6f664cf35c92f16b832b00c9dac2d18c7cb2ebddd1a43908849f5ca6bbdae5d17b934ff5ddd05982cc672f427de2de6396d15afa5d92b873f4fcf86e5079e6e986904162822430cdedab62a603cf1ab3cb84de46cab9675d2240568d8f67a26c30f627fe57c37cd6cd91a55ae9b0f84183e6029d39775570d21500a71c7602333f86089b66d94ea7f62f22b64fc57de561b4634c6c91afabc99c69cbcf93544e3413773ac227be084108622fa71378189a7bd7c3fe971ad1dfbfe344db748bad560c583cc57e35db5dd29f28258461b2e6bbb4b94fe01d0f19cde998d2e0499eb900c05c32839b52c0a0f63bf28ed8742ff09a4e9db702736ea20a3b02050fc4a8316a86db83a2a720b600f893c6b8233979dff0b1b8f0e8b39ef1b44fd79ed7ffc0d3a166b4addd52db3a85c94c71e3f7a3f363dc47f232245fd066bccaa141efbac68f0b66f7bed8cb5a8c1bd6851946d4bba650b51e7990a9721a43b02dea5db4579de22699aecff0a77e564216b5d82f364cbf04f0c295695a9af8bc7ae72bd0bf69fb688cc4e0f257d171c6665a86a480b01fa89cec2c4dc5c69b0ad7d22b9980ce3f47257af18aa410c4f7e2033ce86cea70f95a7d01d068cbc08fdc1279c6564cfd42b67b2181a3c27ab4ebde70442969af718b33b2a09a723e1aa9abccf68478cf8e0ed13340d1233ea804e47e18e88cd61d1da5e5a4f5f949c807201c136a5430a6786bf62aeb123426bf2349593c1e478dcbe4da768d3609a9e07175f4ae356ed8cc92f794cce354bbc8889efa8eeb87cbafd6f6f3c076153235129255de3fa563b68193d069996f532d75cbbdf1f4ab6b6a4e3f6158813625d0b2c2fef1b7a2d63b4250c91639e78548d24fc2426ca2d31f89f8da2305ffb32c5edc12c8b6dcc7998e75bb97701b717c8d6960bdb311a7acbd84ddada9c2134ed5272215846f983dac011e96d828fd4939f7108104cf6a20c49b95e49afc54578b8498fedb5195e89d39f2a384eb23d05638b4cc403a5b021ec775b79c3d848239e032d095a81e2aa363f46da2720fd8d3fb24682baea444e0de7228a0b8cd92ffbca624ed44ff33e2ec4f152b3065827167ee8aa2a49f87856347a4cfe3408b2deac78e85b89fac9db0f0b76e6067e1378c8bab11520a77d93e9473808aae29ff1f3e79586d3612aca93b29a8460ca4521492468742bb0e18d47f5536f0822e7d04bd5418acf2c3d3b9b03ac03f4667d6f18fa6bb34f486750138fa27441935529c59c44e763fc9181702f50a0793929fba9fc8d3326717810326c64fb58f3428e6625872129a040e492189be3d8997c9b03a87c9ab813d6ae9b0d53cd927320e14fee5d7708e593b786a7e2d94fdeed2b4af7b768c9c5461a134a39debdc8e7d89a843bf62c09876ab277880bb4d0e0496e4d125a927e31f4fa8b9ec8fa343a9f328290e5b643e6cf58ebf823882f80c329bf310a09748348f4c42c5e34390200c320c35ab9a5b0492f4cbc9f55c793c59966ef330662e32ed985de321c2ad8c73371dbccab1cad42cee997747609a5b2409ed7cc137d5591b91963220b24e31f516a39e24ba220c28c59e9a55f949b591e036bef44b7b9dfcb4f965ac37bf33760fa49557e1db5c34b505e0beabd106527520e7c1815d1bebdf75979c1c1455615e91c83ce05309ba99e1cdfde763638febda29a36d994233cefe9e564d448a865be318f55974194b7edf417389c9b457a768584cf5f83bb295c2f90a8e2a1913212b04576954fb2533aa6214be2357de2cb32d41fc2c96e0dcd26e267902dbf0d011c06703925bcc4a766ca10c396d3749c5059e27c0f4ee16116d5f190f5e690c5e492e9cab3f6d06c0fc993bf10188fa2f4a1676b7675f43293b6c86970c953b1c9d46e1d7a7d0ecc78be926a528d143a4248117ed92ca74c990906dfd80730b67a9644ddcfadd214b554a7cc514e5074a061c4223d28a0de47e8a50f0df0860c0224907617ab9393f6d2d58a97e086490dbb536cf5afdfa532c2e7104e38afdb0dbafb55304eba7a1879ec65e0a7f1cf23d46a8fc23a06ee184826ed72d61c624171ea9e7376e5ead9e323e24b9aec7a7fcc14c0fd5b1df3ea7ad2e00c48fe835d6b87153df926a4f881485f30dd3adef4b8c44f5616f94966a4a3574915bf6d219d7be2d0d7afa60e5b47112ee0be1b196f2d23458bba0bf8299e2447695de6a430fa22799512d9d22c7a17501537b8d5a92523af8b604b64a09cb858ca5f9bcef4f37603842db3cb30a07170410c467e38d8c635ac74adba49c61e90fa462605e6a91e509b56b08c66a5d4f2d27afff593a69a69cbd0830a4a6c0ccdbb76da293b859e56e5ff867df93ef56d8d38d585aa01740738b883b1b5c7ccf6826fb5e07d1131bc70196c6b52ee55c749fdcb2417e936f27ba57bdbed96a43b4c2a18382e1b1b47284538e586a0b24f79bb87508e870e9664db01b7330045c24ba03d7b521299427efa791563ae4b60e66ff3ec73a12eee5fb3bfcad1c3bfc272e71ad962bdcc5436678321616e149f1723572874c00404b79834fb0873cecbdc43966870d09a1a86f720346a1bde40a663e73b7dcbfd8395d4e2dfffb4ebab942e678e822e225f550746e95257d45c13ebf00c7689173687cff1bcfc4b50509dfff67d755d579ce60a27bb9d7654468e6c0b7195cb92105a861de1b6e3b79ebfefaffa34c5ef8b0796b5ac9843a1356abd144d3caff3d258bd1c763c7da41e218e5f95cf4ef66834568c1d957e49e2c7d7376381e7628093e5e7fb75b1838102245fa0cac6c3f8a581387012f655f0e901785798d6cee7984671849405d4edbff445c50d09c04ded5105afcf28f64db519c62c9e5d9e5171520e8cbc161b2332e07b1134ec0a9a30ed57676585ee5f00491292e687ea1e3fce160ea764d7ff2b2cd04056e68a5f98a273b3494139b8e1d3b7617e8628e2937c24ba3e2720051bea52e42d1e40a20b056f727770f4d9ea0c224c5caaf6c94f357c1922fe05a21ce96160641dd92665bf60c415c0656db4b7972f4b48a9eb42c27038a3ccc036baca8cd176bee9125baea0679db1d368e38506033dab7b8b4b27a1395a89b17634a42828c164b2f692be5b6be84ffbcd3514fb1980ffbadadef9bec4fcc8ea805b3accbb63e47fa24b746210218227cab017668c857c4995ab9e8204481b75312247ffbf21b2f505206ddc7e33c57bd8e384f36ca605bf7e3a0347b03df9fc1ba5a61bd922eff1c693651815705a1bfb0a3aa80c2db2506eb4a8e7025d9b4456c6b87e546493fcdc2749c5a6a99a925cf3e6773652881779eca03006dc08cc49a9666581cff4a53251dd9e407a2f13235cef07c0a58c98e576b4f06e6b72470404fe787c01c2926ea1b6ee515b78a7afb9f98b4425fdd68b82e3158f5b7e085c632ea94043fcc9a508cf47ab709e00a0e96d97033bf65fb4b34b5b9a43a538620d7efff15639576e24768e38b2e93da4db47994b71203c177fdbf86d685349883dc3e9bcf0ff550166c902e4a215de4c8883817c4fcfdc9e045601aaba6ab744cfa7e021d25658585ca8c7488d449c172f8d61edefdffa18193fe5c1f37deac5d90dbf87bd90da53c0a6d7ace9af7cb7680f4f7212c3f81062b2c9f79da9c87da4a5954ad27374a11ccb2fd1aafd66f040de33143acb684cac2d97ebefc19e1f37f980ba8f3a9b99bdf3018431870acc482d3f170fcd77674673288fca3cd479bb2a8ab3edbb665b41a7a4e22f275732dcbd7d082388866a10f630964817121c9b2d9461f8b66c0c4d037cbe656077fddb388ec207c39108e3586cf708c2ab075164f0bcdf9cabe31c50799a8f311db5c9467d34c4225ac46be30f4089aa38445b603886077faee6501b98f96b7255afcdaddf7f184fc80fe497da129091bf8d4d2ba4d669b075070e105e3046f48c0202823ca8fa24eb4773b21b35d73c9a9ba677e088b20c401179ca8efa2ca82dcc990cf5c5019f3cdf5d5946d3a91049c645e1c2752f1e095310262272fbcd7cecc05d9ac7f25cd419de98c5c2bfcc5421e7c913addbb7e0054224cec3453cfe6ef063b1bc1515db8b02700d6db2745415555de5204bbd2276a75def1230f7e9f3ad83bcdce6f5e69cb66d797473355d065ae6dcb5472bccb4ad8b863acbf159ba39373cbba2f0bceca7b4e6a2720c16b12c5a00f9d1fe64efa8d889a89ba488f006b319bf30b33ffc97ccf64c5b09940e731804149b2a6eb40d96e54f98d7d10d8ededf1ae49866bd6e5e0e1f3cab2f0e9d1ed089b267907c6c38e2a7d3cf48ac2ec49c0def27e84c49d5e0aced3f1a8b3e3dd372974fc1caac9066b8b7cfde801c67fdab9ececf2c6e52fc716140a9dc5efbed668a4d5bcc48a74dd956efa3268b4947b596205aa5969190e73449803e2bc3a6ebf13f11955defec791af258afe1fb46dbf1c604adcac652acb2a95bbf9f46b2f53f93359d6b415bcb7871b6849be8b1ae870827f2621c0cc84a34b290374d9e63b14e7de1ad5c234e7e666070a893ac5b354277b66ac863addd2802a1d5e002acd83e80a0c306ff22fdeefe086b6c462b1ddfe5708ed4aee815fac75c76a295d11854f2d08bc50bb2796e8c2b2061b80c90d0ee5efe3ecb53fd3a181c6875680d32fe4c9176916156189e52c35ee8baa2e3983f25b977aa1dbf6fde745586b12b59f8d4d30ec0714c91d05da296af24fc8e491d67535b337b755ef9857173a8c329e878a75f6dcb0d68456c33187dc09cf0cf603e628e6a8742ff978bb4ec14c2140d64a0dd0486990d3de2f27f8208ff97f567a193d1be250d0e39ac59dc45674c2e07e9297ebec43effa84bec3c9dbbe45bcdb2406e3da2b77b0673d33a71f351e84bc464b4d9fe9dc53b5a5c399899e2ef450c6dd1997e715995b28cec205a400354e756a1f7ddc479d50c8842e24d547bc2ab27e43f733845dd9c44db09f48c1de25a6dd26f54ef7cbd74ba313caff55f142e47dcfa8ecbb91c0c99ab1fbef282d1f96a80cceb631e44f017775702cb5c6a17fd36de6d7b2620e3dbbbd48622b284e59d6256750bd3cbadbc04b2fdb91a2510195b1bd77f192f86da3fd322595bb4d3b0e26efa7845d14d1115c7b70a42d60cfd4c5aec5165d8196b8a6b7727763acae127a9f75382541a9dfaed0c554019040cf4481d675c87344184817bc80ce9e25acb3f69e9a3f5186202d679c1b08928b9468a8c4b9177bd92f0bd5f7e9063e7b310e5913ed0ff6535d81bf11e0743f01642c626e2d1de09cd465d1a94f3078c2ccd6c1bfa661541d92328572e2f1bbd7bcaaa5b22261df032700c3fbd1a6dd08e8bc6186045e3423720ec9a32f453573287de48cbd6deeca767b1585de0c9314b59b66545107522c32dffe2c4156e5af1af3760ec5a62b05dbbe795248dcb1bc0aa820cd1d813fe742971b4137536799f2dfba1035884d8539972ceefa32ae2a909e29d8ba63d1e5a5361a24fbdb42eaf40eb08295be61e4b803a776c83a1beffa52cf5ceb717f5c1bffadc83340dbf6baf55dce3b22cbf97dde5b4409d186c8acdea57af2cd67895eddcd171e12064a2cd374eb8cd1cef3bf282da66d600bd87f5cd56e6c1f9f858041dead0aa424e72568c7b1c29eb1ba0539ddb4c918da2a2b2f229f43fc1651bcb9adbcdfb2af817988abe6de7708dab563c8981c002dfcfabecedacb18f3699d7af80fa08a290aee7edf65e771cf6f471b57640735f74f0e175fdecfe7ed29e94d6340e0c39a45ec11bcf9cbc5fcbd1d9eadca72e7048ef28719b7a209f4a7b52dcba09366db1f6294ac2345e96d27f78afb984b24cadb33524de5c01946152034a94da06da60f30b0b0054cc1bd5a23a1ea7040455dfbc3935d1652903414a29f7faafdc25c929b8c78b2271e9ec6aa95c38ddb883b7e38f13fec61b34fc5293e0033dffa11c6321609a97984f0e2a3e23ced4bab9070a64481ffd2380e5d23cdf0a5b86ce1b4d403c96d1798d2d1ed4c6eb214b8d8830231eb233897e80f249edc51ff49a63d71c6fbc976d2af6933d86bb4e79d68941919802fa2533512900a5d8088399fe77ed4eb748ccd798bc24357d0c855dae47c38aa9f02db86c185e4c11af67200308eed3b4a6f83b9220b36ca8fc90deeb1c1c320397ee78d281fa753aa5d2cc3d456d0e9fd822d7c8949af054533508641ecbd852dac894de267b42b86bbb5d750a791c8767e71723945a785f971455695cb1bf16fb137ebd875b2112634fbfdf62484bbcf973e04e7e6ea614400cf108764f29625d73b2480b8530a3d9bb58d7c9b428654b0f95979f7750bdc191e0103ad50ab3dd3c9acf4fce254a75fa04e665217433012c89e20b0cb2d6378bb8be3a474245794ffe62fcafe5e25155a85d88e0d0080a76590474c43aba92c363d83de471e0349422ffeb95751940d89c8cf99b1af57e009aa6a034e492c23bfcf9699ed557a6b7a755237d884873252ffab4aefd7199b89e413ba76cfed7e43df1368612aabdbed77a04a175888d75b4722923314aca9594945643434fe5c0b0c066b4c28c16406cc87b6ac700e875ed9423c31260bb780ef789731634f8fe0d71a694ed5f3a8c18eca468dd83bf9acc79165814eb59d9ed6c7dd2ecd559c4b9a71b01dc00dcc390d217965f3ae18ba1512db182b53464a3d57070af76e34abf5680863e481066f4bc5fd7b489a7ea27988295e3ae9cd4319edda06bebb6fa49fbf02643eb522832b18ac6685859881c25cbba93d256cfbc3cb183fbfeb61cb471a7dd7a373baf7a407da347e1b38e8597a30908be7f1fed5eb139f1684ca6b44224c2f2087df2bf474547980bb10234ba2ed14420d3be913b4897b190a7e504cc66491197dea534fe74e7696c03943a88f05220a6eb10740e0a369955d2deec4b6a54a03dee9b2b65e829c42ac8ffcc5691dc86c9a9283e4ec3973eb83b9ff3706ce4be08a2bda64b178276161d8c741a123a3e657b50667f69cbe2d0b76b867f519de7b3f66752dfdebb94be4a39e5a99ec873670304d55580109b7afb4d98be292ead665600a95563115c0d15a36b14164417c741e71a6f0d51109bc81f7d3dd9bdfc37f1afbcbeb9bfe24f31baec365d94a5e4509b7a213f1e14c658110e893b37b7a16d3b2a81a2179e2e7f8c8a496ae101c842ef0eb7064edab4b7f69f7dd9259051152b29b2fd90d7b41728fff1c4f2eaf4d1a4584315f7c5e41d91af44911cf4fb315a3d423f2708156f5ac263584a4fd7c0fac1d69bda4a2e5b5c20f3b874ec93ee560c79906d7c03d8c34637f95c72aa455aedc08675af8b691ba6e1964fe15eba346dc117a888f3cbf960199da669f0b0c37a52d391b3cab57b594ff79b0701734c9627abdafc3ba730c3c41b92046029f304fa0073d5347bc8f0ebdea77d58ae2a7f61096dbe52a0e16a85650ab30acf5b302bbf019177f997152d7c775d40d9ea250fb64232b7273e89e583b6e6004a9e9503b457191cc875a4073d6b95c9e7eea2a52cc17955f2b54ed5febbf05ee8edc797b7ae197f254842ce7b872c5291e4cb0cd93d3e1eadb553b485e2d3bfca9e3b8cb550634e892b5a0a45120a39c04ff49919f6467eb5a7199a6e141bc4b7a5a631acc9a4cef355c4a582878b51ba201fdcef803bdb02e9c6270fb96cc7a998a478ce0370b2778b7e4bcc0bcedaef22b92942999940f1e7f4a17416fb24a8942ec9a6eac565ab9a621963951eab5a418315638627e225d2b26927ccb1f0f2af2eba1c15b581585d1d8a2e7279ee7ca8946300fe9d8c2c4e85b746c7b4370e63f5a05d380f8a44ca97dd2aa885320760c20f828a8c2ccd07b02f181546eb8b7f235fc6fcf06aebc1031b3057466462b99ff825b7a7e95eefb1a18b42d33b569caeab76b0fcdf20c6985a272340028d9db2fceff98552b31be5808921326fecfb9bac3434870e35ec5daa36bf3e02ee666d4a0b8ee54ec5a6b19b7867a7a23c227a927d6418403279a024eb7d4e713ae5a0390aec22acdcff75b687216c1c431fe73dcc9d79d5bd9853de8f7adc20b67bbef8f9f9ccc4738371102d1d13991a7e67c64dba77d8f49cdf73680a2b02047ebbbfc6589adc06e83c301d0a00487f24d5c7fdc4f3e0d5a21546ff2c590049506039e99d9229cfc58e9ea9fe35ce84becda10b461c76610e1f5eb8ac0a44e22d5dc8c72f72d3aaa7a7077d7f9a1d91eecedfdf5478f4841907784dda1875f966dc78d6ba8ae78d96c98bc3d6e2d4f43bb366a31a95f8b7b4f091f3521918e2e0476f91fc17bb5b5cfc6ccae9807010b6b67cea5c9d0f88c5cc98e2f9263abd5949f2a64f7165ade241a0d29bc442d44453e92f726d64e8df7adc783f69c9202c629aefe014898eed4b848b650a27c71618a0820b34d6e58a2d2080d9175a784b2a4a953548ccf868a9822ef072a98ac4c0833bfe70265a12001337558aeee49e1cd0aa70a6c18b2279f68562700b4856a5d6135697bc4aac14899c0b26fae97b3582ea55bb38b4bcc29da88b28527907d621ecb66205b613836c1f39bab8a077c79713faaba22ac9959ceb96817d21ad32c65b6546f8d6387221fd411d16ec903d2dfbb95a2d9eef4e12b60415d0724db4cb65e9f36ab73aaf49f01c24615a9549fdbcd888a3c379cc0fbed72acbc83f85a6d5e8bb7f25c33be92b767e64d0186cea24d42e6a9a7239d1c4d1b17b9c4a2e26c6b5e0d8bcec718927cc3b30a13beca14d953fb2b2c3e9c5f56684d12593b8b4b03727e68059fbaf0bba7feaba6a159b211f43007f2c139a5260ed1cf46112acdb2befea0b125d732a10f16ba6b44a82a95108f9489e9c73e7c5109ca89d8a7725ceace3cd136d5ce0a364324eb770a3f562a73e3ef71e30aeb5c6fb64dbd8ceac03ba30e2ecc38b75dad55b23852d4c53c38595f16ba82f2df344a1ba85f35068b37d6630200a73d574ab58a85f625f95914c7477f1cbd0a728e7558c68119acc63075a2f0866ece0c0ecbc33a50e8b536d72b1ab8d34fcdd58121efe4a23624df6bc24832d22031e35207e6b129b44bbd96c58d99005b44408e94125ca5d4c61bd0a39021fd41cb56a0c72c709bbe7022245a463f438107357f690908b044c04268ca5cbcff9ab63ba26f1bdc179adf01ec98b733b3cf9b37286f54a52018b21ef59697262c9f942d376fc0b2a96e5cb0139d2b0db95c5e036e5addf366dc3d08f1170dbbdfe613d04d173c1e813046b33540397117b7d6971cd6f8c1cf81bef2ea82eaa43265a5ff786b7cd74e7d5f4f2de104b586f092ca0fb88606ca88193789ed3273025bac0d8d2285b91fdf57ab615bb8cd08027ac1eb717ecfe55f3d8016484b089ebbab7e8efe1edea1a26bb33c52e4598ad74099a2ebb191c3bc4173ddc5f076f268dbc35eb26196757ad5e261ae629efb87aa4ef393530213cc3ff61cb3b02c0683d76fec903ebe7a38a986f510e4e0482a65d68cb337e40c8afada10ec861377e8769627af2b873e4a2a69ef63f74cce747aaea93954aa6367619ea582755736c237a196e76b30b6718d4fe51755ad2fe0f2a275417564fbed55a545c26a0d4352ccdd56b8ab7f458802f256ea6831c6bec317e7fadb7fa7cfb561005e6620584f8b3ff7fef2f590ee9793a150a19dbdf9f70fc0f001d18c77d59aecbca189283f10205facf07d884004d53a18e305997d7a6b2a69b624128cf2b6d527f4b2aba5cf76f01a222aa3d51e766fa279c1460c5712579b24b84750cc5a395288fcfd0cf42e3a60d6135e2f14db83fce05e97e5abacc2f9b4a45ab53b619988cefd45f49cfacc604dd499b93f53a96927cf7b2d965f421f48b882b6b548401f10ecf6a9281d310eebe18f9a8019a94998c6973cf3b7c42f6b2b1497e3b989f897897dd0f5600feeed50095df6927240859e6068f247cfc405fa954acbef2d41d7039eb0ad33d714ed2d9d6efffa1f7bedc1cae6c4413b2b49bacf56148e935304e824ab00d058a0610dc3f00ab5d4f73ed78f8b7c1112b6f7b6b3d6768685f464a0eddf57defb95b491249be0f333fc27f81e95debdb01e793dc53b8a325b7146529e8d7b6a98e7af9bf9bb79e84401d744b9787173bed9b6e6b0c0412ab97e7a62eea85d1339a6cdf9ec049a1007eef5a0cb5bbb30630b31c1e4799f6d0d19a9ec196ecaee54e807010ad0a1c553fe17f5d9466eac4f0f8010e8e85495bccf8f2c19c9bf222a967821a45074b2c52e87e7824725217c2d4d47b68dce8cb6805ad5b3ea4d27af92a241f4e29a5c12a274c852e4346a0500b4e2a0aff1d702ccd347ca3ff36e45f36c4909a556a2bcb2a099a32c4e31d5b8e38e8856e5491cefe03c3df8063c58ab71051bdd1447814c221e638ad637ab8047456a332ad2894fd7c6f7f69d017f3e03caefa0b4c7c11573903657b6ea2d6504da3e90a548c4e105101d2b87b646f6bed0e4befddf69257f57000945f3fd60877893843e26962970972d46aae1cd00455fc539f3d6c8a69cd7f6bc7563e6444c45daf26aa56e5b246af3929f87212d3bf87daffb061dea20c637d5c8c4e30bad4ffd81618fe4afbdf33906894cf99175506b413dd642d9ae53f2f81cfec5d5cf67d070fd3e41cee9b1d6c817aba817bfde9d08d7b56acca0b9376c18d49e134ff987aec5c014700fec09b2f672d951314af36b74d166382cd0d95122edfcc3e319265eb2712d08ef6b02cd0ad4f5757c90dac7e6ab5ba9d7b4353e43a375109296b8f42a86b603650301137a943b7a7e6a05c2f94c29d2d1d6a9004d681bcc6a09f7b8029d5f3dfbbe55b5c87a320ff2efa19eaef9f05bb3c5d4c055873ad50819611ae3a437d4e3dfb1683cbb1c497d81676afb6127910179329fdacb08b9ebeef0e8966b229ea48216b8962a67a7ae013822b458c5b855230f7af8742aa6e06e96344af4751d95d5238d08b290b861ab8e1a7d7893a4406b5c5b70f82870d297367de103dce7e23d8aaa365b3bf3f825c8b3f2eec3c9041c3b367bf066b9719b73162e27899b2a7c2752c4b6d1a20a3778b4bf45fbf9e9dee87e985bef4991411dcf24bd1b212965d30ffa60591b4f48955cf83efe63725d6b7c5c2e8fd5773fec5c81b64578b94c5e923803c41e2373740963f609f30485dd17edaa98b36825c1565c4c2e2e73904e2ed10969ae658bfd50ef70ad2d0dbcb327d50d39768ee216c7927f9f637586e6ee05265dc616fd3ed8519dd6bbdbe3dd8fb336d6ed143bf7aac21ff65b016da0398fbd4a00b83b4fb11a408bf3decef5f7f9b369055d42946eb9682773adb45c009fa5abe8ef7b3b3b8659ed6968b49dd8a0621226cecdb22268fa6e6642da1c46bcd804a8a59388ee90428b306d206e2cc282e848b0c9bc9265856d3efb21ace64c1f3ce1dada2456b11f15bdbbc7c8aac05c70545ef0ebcb5a3bb2e6b0cacdb3943548f0901cbfc7ebcf3e8512eb06461d8a870cf5c77cd47d3070d93c4cdb8df0ba290d5bb28fac9bdafd94c2e3c25f20ccbd41bebcdbd045109f83737a916606008844c37398e619918b27c26934aa61cd81c4155d96b6a7ab5cb15c0f338c36c036c9f64811f78ffbe03ec102a30bcf904c37e74a98fec98ab5044fc3ac838fb18a5951aac4d345e05c6402d5bf805a801be89d4cdffaab78160e8d47fd64fe0a14e1133b91f1cfd0bd1b95c53d1e41b85e4dc2e6461cda560d6b93a86d8c77d13af2b1aa09f7b9ccb3b3c5a366695aa324bb18246846a11a392555a1f69b34f4d4a787149e7adbe3707ad9bbf0943aeb125cfee459b05d864b5fe16c81515c9004ff0987e71c719a876826e9d306cb4eb9ba9e9aed78df1de70204b4050219e21ddd4145be02f2ce8a063caefbcd8e7e097c0729e92c83c65922aeddabb30aaff93a109b910d616ec7840fc0847409b6d23091127a1912f443ee0906114d9e99b353902911388b50fc943eb6eeaa286dec6422b526f3c29852f34e38b8219f45758ac4eafe5055102682f0a0d10b6b32b7039aa2bf1ea6c00fffe8da3b932c9dcacbcc0c59d0b62112f712a6cba34b620ec4eeac39016d80e8c4bd1ac7a44edaeb223109cb2b327c1bfcc502efafd5b1a12f0ce6a9f49c7902dea4301fefa432048b5fd472c9b39b49d3ca42c63f7474ad60c8cbe57f64b7e02f036cbb91134ed1911de5eb0e613d5fc10169a8a1669d1491e03ecf05e87684d5bba54b59129604e9e124e3dc2b353df137b10588ffb32e07d4b37ee2e09b984563a22cf26fd318f2c9fee1de11b0ae74178a79dd537141574d8b4923e091ea4fefa79f54420241aad960d14fafbbdd78fcdf2af974ec69c5d2c22e0169d06bf5b5be0459c5e7273c1ef2c39b2a35f33d0e592ba094f06e5160a556f9d0a6e189194ef9f2ac48709bb25275f04c00e8e0f63c506e0e45e9253b4b93f99f545bae976f2469df4b74a95b3984fdb51249f067a1baea009b9940f0b6045f6694da368034b2324160658fb85e59e9051e10570b36d01de109fd31dc4bdf64a311910164958fc49ea81838f2d9180c1c1bcfa08183dc6f52c5284408923fa970b706009291e4e10df4d1df7f727c0f6de7eb651370457b93b96688578c550d5845d138867f3a4ed718fec1c6152deac2c8ac25fff75bb2e5e907521806a9233fc249b1220bebf274ae2b54f747998d5ffda09f833fcea35a6f855270d381618dc2c8d9c008a28d6ce8d8cf29389bb82d46e8c28b33603b9323be97900f4d2a15ffdfb316ba3363f99eb4cf1c1d7c991554f9441fb3eb067ae9136c4db2372cee1b36a770e5c28f5d64c9d7bdf1cd501f0a79b39f9ffc6f539bec258ae14cc59322c1b0bcd35c584523c3066e50d328e1c6e0753691441fa5967795f8e8c59421e027cda8bf3358a4479c4b103eab704c70c2b1e697b8727560dc5a4d50548b0abc880ec393652b318d1c28107250e4a65a7e30288c814b4c4c4f7103f4004138e4ea3379486261b2357c06e6134ead73425cf3f38e6bcac082afebb8d0a8adf734e6b4325e1b83906c78e4d7981c3d803fe513a9034a0688e52b619098763ab6e9bbedfb44e91849359560b64fcbf0d5df2147af17f027e956b37672e6235ebe25464a0b213e0667b90183a366bcf0612d630e61fb4681248d88420aaf19e9e371eafd3d2d167d904688d41368bd309696b34fb65b71c9149d41bb08444e2e350f26c699ee7209e41c0e43ef0ff32c3a832ec96db5ec3a9fc29f8e59d360b1c4d55e4688ec0ca8f0d64b17bdd9dceca365db075cf2ac343076673dfc807ff060b390f353cdda8100764c50ba0522b801acb2857a738fd29d707bfdf740902962c68fe57b21e801eba67c1846c51b62dc4d5645d5706886d0caa0f4b03528b0b4e1f8239abd71fa3733acef7404d740ec453685b4499dabf1c961dbbd05db945e6cbe3d0707d01792a561ad976477baa8a371e8c47f84b27eb8ba6cf244e6caef859efe34e18ebb5f0df91f28b7a3eb93137600c0e7f42e9fb3dae20dc8170d69d5b224b00999e3fb08e820dcafbf880c37ec65dd38fcb993608eea76877943dd53c627f08a83ee74307bd26f66fb05f586ca3adb647becb4e39ad34c9cd45c50b07b2fd608c7b9937abbffaa62bf82a55ae6ba13ac0f985dbbb91ce6b20a3e5165b1e27091f4284052984febb2edda5f7db98535739b2de725f2908998f80a09d31bfb00aa3a5a3e7649e4c2f7eba7e2ccff6c339a3052b6ee3d8277215a99f4b28cdc8d68aa9cf9d075aea4b9ea0aebf62a6e99fbf2f536c1996bfb70e6e1f11a14296633af946dfe430cae59ccccda40bf24691db9e9be15259ba0e190355dfa0fd64c4f9326e3543eac7eccce5ae687121bc714d0c4116cc593177151a3716a2aba66e6df734179e5e87cd1aa840cd74251ab0c312d7cc6702accf7c748fd2c041d5251ac3549be9087a7f5cc927c6ccbf03c8a995c7a7f899550a5508a25862f4a652dea8a76e7ded9b19386435bcd27052fd14424f672c467417bce36e49e85544d65e7ff9301262b3c96dcd702ad0b41090d56b66cfcc4eba65d0e513dfce2d179b4d7708d6863490c18bfd9483f959f24c006c066f630dd9011b4c72710efaf3aa084cf98719a7909c9e5594e72843e63c960aac2e6ac904dc495c63adeac2d4c2e8f7965c773ce78e4c635205c33239fde708ba04b2ca8aa5f4ceaebbf41c466d9a5b7198194ba4461774dec0ba2a940630bcadc1f9964814a2f46240cea67393c21b080fff05ba9c9e2ab9342f12c4a66280d9b6f3ba3f25ac8321061b18ebeba8df52ec2cfbd829b5a5a109e7d947390624d2ac7bd34ddae27d37ef6ae47c43b8a269f6c1db82e32f7ede05074bc479c9500a90c84c79ea05f45ee8cae50c738602a955f132f24fb3313f3bcb1138b5c4773a999640c55b46c4986a036f64b5618220cb62190847ac3e6a25c159a0b8c0372979d2bd67245904f5c725adb65cd659a4a3e7f31e1cc170741465bb38bc98c62a05cc271f0a591061a71c2f63e781e10927abe3bb82deeb9264618c33a28259194b4fe95d4bcb5ad232165f29e7d892ce5d688293aa566038f784abb9e7807bf4d473107815f155b48e5d8dc228f3609382bd56a460f3e386dafac52138d23ac08abe91201e5be4eeac6aac5a461652e26c6c53912e0544b67f4dda2683405d25b325a74dca5a2d377625026724e9e56cf766e7d7cbff6dc9f57bc4716dc5bf0f35c92c0fc3c52711ffd4749edd73c0660c4972286e297656e806ae332372f58ae04d8c3f3ddc6e7abe7adea04fcf4cee8c4d819ad8216c5539d1d0bd9e6de04490b9742dc15bb1c022dde7e8593bc81768b91577d7701da2c0612f0453a80893a372a6fd431963f18292549a2a563493e0f1254b4ff9d690b762ca46627af6fd2e17e1dcd2848cf67c841adffff469ecb70b067e92ae59aea8c4c851c8e3618f3be70a88485f9910bb59a714b141f4f829a3f984258c999c35c3051219d6e19503debeef437563a44782b9a14870a55f45d1e584e7b0898de59d18cfc19fe185fb7f000a0198455b1ee8d3192ef7a601d4102d437ee715cfe996bbb70a6a270eb6b821767be7cf98720b1be49c51b9c93ef19c22467236b5741bef9494ef79359d5a6874bc7ba0ec0441746c91dae37ede8eff8b05a2b0cd3e690681f7f3934b33dfce8d62b077a61bc393cfc7ca6c2f5b384243c25cd1e18bebea83c34b1d5314cc01f7eb97e40914bb612cfdf0a0b33f23bb2290b8716132788c2ace257e16db2ca02de7d76ca32509c9bc66c6c225f2364262085d6e3a70f2cb6daea937942db6336ed4e22807bafcd1c8422fb93b3a7ebe1e0ced170e61633d91450f04a0ddec2633be2e70b239c24362b8e8c107cbe2e9549b910d6883d1ab5406775841083eefb3e1e7253801f68b99abe5721bce6d02c3ad6b4e1d94377540554b916c23a7759f9342106fb0ef71395170f85500ed47d0ccbafcae6cca1f04d58308c6696d0a7e051dae6812e538649a43f16cba8717195bebb73a3fc62abedfb92c073aeb11bb730828cf6f2bdbb1b7b90fae8f8b5afb0992d82c3228eafc6c26487d4ad35f1b6a58fa77fe9e4c23a04b4ac884b40edca740b7842cddaac08d7c96fbe302a0a7a824f1595782f212f4c92b578a6605b0910ecee51d2c96a1baf84cb32b055b9699eb347869eeaa31389512f8a491c7b66365d00ddf932518e0574e9caf900ef7f20b64cf58b47aa3ad84e600aad2fe5f9d13f3938cc4de08cbd3233fd9daa1233a2bbcb5e35a31f44bde9133263bcc7f7bb37660e8ef3957d6ebea0a0ad606478c1fa6efef011d689de38767f15dab537bc69dd88a30effaf8c0dc98d91cca6755bc7294d1dca454596c7057b68bff486796bd8e89d3637fe9791fc0b4345a805c71c8ae6150ade8eeb4f4c6d1b0c4d7b4350f939bed7f3ebec3a59375ebb3f0818609b344f7923dd48a1a31d20ea7d6be969a26501e04ba6d6c58486e5b90dcf571d6fc2028d6d36e1160e3565ad1f31750c5eb5c581eb925183b4d66837c5a365723c4c59ccd70128ff68526f9909a6c36cb413beb48dfff34dc63615e6832cf7cbf02e08911e42eab4087fc966586b7747525594559ccfd35e9667f9bd73a7b7c394240b9f4214c7f9959b53113431312ede171428130bc318b28b59d14d61bc7c6ce1c38106b8f236f4375e2c52b64f67483557e7d199c8840b17a5f1731899a10ce343bbb70c5199eeba308cb1b7e5dc7d9358a0a7e2eab8f87b7be46c7c5bd0bc674bc5e0e31569ea6428f468fea997ee34d8be3e533e6de8ea3b11970b78ef344362494dd2913e87f502477ce7c32bd57a77f067163e5360f11c9b86b5b0c7509611ecae3aedb632ff1bfd5fbaff605b59b0c138b445b06a5103b3e5152322d8ce9173e5734b91e9bf1421d73f1de107d8f48937ec66fe50d4a75743b50de28dfe81b7abcc9b8e7a72f2bf07c495f1cbdc5a6275dc315ca90b37926779d62481128b35470770547b4e990c032721c45d51eadbd54d58682e1235262496a7b3d746bb4fad3c37f1ac83a8a214ff58927e1b02305165b2d4be54b4f91e70871a710c9270fb0483f899f8b33a7a258ea50ca716d55166dc24dfbe6772cfe94c520910c6a08fbc7e5a208929b62bb1accb95ec6edb7d33e39ad68ffc8bf3b413b0033a6ae845d9899ca0dd14508ede28e1a76e95650b60ddf6225d616eb6ccb3d4bab9ab3ee095762b1726c5d4181867b6addf965906ea04939584a9da91c5036513872672921c6e382eec6f5f932c8d26f72b251e6d921ce83d1c8535648e5fa5f402ea8960e26c97d960a974cfb0b075c34c15d000c6e6d48aaf76d8a13c3829057101f39a97f2c8c645f315fc0e62c486b363035da6745a0b45c6a74330496a0f9420ee5bf1aec28c49b090d876bb40160e86daca90e69540fc59105400d64ead21844ef78dd49d0b2b1758dc97f97d131b0ccba1ea23e93694e59a3c4d99b51cf131e5ccf1962623cb3e0cfd2a48f3766ce094c1dda5ff704ae3b30ba9fa57e4002a5c67b9de7cbcf45b0d861ddc2bed63d56ed13538a4137fe0bd12cb77b6c38566611c06d5f7b85b146e744adba9bd3ac86fc906f390a0035e9c69a342d41516dc17f4a022909d648607530cf6e8140a9aa3859b4ef85de4979395e529ecf942b9899052f45c0437b3f8739f30501e9fe397187e293064e1e6ecd8fac7b1292b842ab3c4d99a951c996154c081d9d0d35d3046e4bbf992b54f9a1a1806ad43b39820d30f51a857c291fc0e18b30aa5b3c2e3e8d0270fa7bf0f45ebe19bcbf931854d38ff2dd9d912ce7efff330e25efe9ef1c2bef79a81f0f5e1ea72c08491bd1cddec1c36cd09d86705071cdd9864acd79ffb8951e01f797c9e2e0467e0311b45c94234fd3cd2028826bb8e8d02eaff172f9a3f4685e579455ccc5889e9cbab804f064cb37c6157513aa1e47b892596fab8a017124cb04fb787b3bb039d0ee0ef17b62fc9501b2a60d35c094e84fdff52a3ceef3a36c1aaa18d70ab8e656681dd4ea500a58cb336c5a94524b2c8c0e3d5a8a284a66a608a48d7455c84ea58d544a491d8885bc17cbe5779a9c42a39ab9f3639251e2add846c756c0d526e57e8ef35c316287e948d1eee4ca0154deb570b5cffdbc295a672bee09ae44e5705d4309c79385ef88b8ad90491597dc69f1d75cc78dd65b9631302bee7848929d381ccc669d2ab8d5c3b48dbad3cfb4f1d2d30ab49062ac4d01435e5382d00c94ef4ce26587d0ed08fe503e26336c51bc29c873792ef5becc8acd4b812f09386a3573adef4f843be892ea17968854d756c81a143f125f7bf5d58bb34937599f5c6d5a4dcd563c8b31786dfbc0d2337ce7a8902dc453782f7ef72f833e5ed56b4f8311857980a556ea0f303e0466f15caad87daf9ae82047aff38e7d18f911080a659989e00538ce079b956bca023dbe439bae4e0bcaf71531ba555eff8d44164c6005e6cafbf77d192350b26f64a393c894ceff619ac3044dcf6bb08de5475ab3b0e163ee42922f9e5a3674735bc5d7450975ffa00eb95cc296de3a7c8bed721b8ad4c8a4520e3798f04b750de4192ecb343dbe73ce5414364a56d11840a082d39d42f74b1bc48ced590a5c973fb473c96e1b8ddcb33ecd12adb376b49b46ac1bc268b41081e8bf21d0687562dde619a14419e431c9608d8de3e787c8e42d900597b79934eaa83b3bb8f9fd231bba15f65650575f3c5abc65f191e6dbc1b9e8017d9eeda5a73f6f8dc992e1c68ab7cda92694565de3d3813f3fcd951ba884c7fd140943fa966615119e2e477088bd8ad04c6b1db78f160b40daff2720aa2a6c791dea61e34981f7ffa82b905495b41872f3137652d0ea9486db30c8d9faf1a52f5c9781417b2f91d8e57b4b3736169b0bfc7992bf52e5a9326591852495497e6c7cec0f6ff49436a4f369528b846e2b2a8ed1fc0a48728e4e1c4828ee9f0a733f6a918cf00b929842166b8c1c3e3ee1fefdf4365a2ae4589f4087ce04003a0560125b5f430d9cc7a9df7b3d92666c78df096d0db83f937bb6d211b35a902156550ac95a1412bafc5bca98f626eeba8100fe2455fc6094698593e11ec15beef6f9a326419f3561e918b3d6bb881abd1488ae0c9f60f2d2e62c4e76b918062fb99387e28c0566138405702759cc038bd355b2a8b567e725a17f9aaf1fbf13b7f592aef96d8ce483c392882856eb49e0b96a6f1c60ff4ca756124ce55b5008b21bbf46a05e6e5dc1b59b53708ee15c5cd9e128741c97e50e8b3d84273fef02ccac01f163940d5db91652e258b9321f019bc137cac41df8a0cc53ce4e0a715e0e990d3541a92dadb21ec9d5dad53e181ecb5ea09c626c46bbeace424b5afe53b02f70e79c5449cd5fff370ab18a193356e75863585a5710accea7f683f8145ce4e2ebb2ec4e47c42111acd6f8537586045771a69b259df044b6e2c981902ed89d4abafdb1f587d966052742d2942105b998e689114aca0c416e8a7341a6c2fceeed0875dc05125b80d6a9f7ff4511a00ccdc82714befda9f72f56cbf380f21200b2654843b3fb4787d8927f977c05a8d52aeee939fd2f439ec61a0ad1e1f32d4a46ea2668e37f10a92e6b0b31372c65956ad174ab9af970a180505dda26e06889f48e80960b0c306bb8ae7cb3a7610852aab72212854081f78c8ae0fa1997d1827a46b017fc0e6c4cfec4531109a196c304f87deeb113b464712da9397d720b95eb403bc216a12c21ff992aef2f6ca6668448c31e2a7321f5718ca8069e667cf8e0be873c2b1c10b52ea7e10b52a7fed77cf2ac8d5fba5822a963dd058a26fad54540f4323d6280eec5518e503e0b7e5756784efd8bd9d2239a2bab6571f7799801e4d527f4ea845c095d91d1f0051cf51fbd20ea55b4fdab35338f7c7051a1ba8e4a0255f1e3dfa45fc7c5cc1a602e0b945f9bee8f1db92f7d6016c9c9e3ab131bf731185d76e5051bdc6bc2f100977c90ae240c4e2ae4d295cd21609609d00744f8f1c61869d8a982b3b564699b146131c1757d6205cf3742a9e75cf4b9aeb4a718f5831825ad1ad181982d0b5d6ef4a17a715c111451a84b8ca35c963f2da08b3db2c2831f20e148bdb114a4e071a837797a645f718c38605835c986112fe676413463b9c8eaeb5ad9b9b85adfb4a4a206710d10b03bb88d4fb3dcaf7bbd9ede731e75b1b09286f195ab433218a274987abf8394e65a0e056934300360327090ce2d41533166322da8a797f64a767f5d171d396f8c89728a717ca15db9fbc4b4746311030968372dc2e386c486931d41884580ae2c85b03bd6f655013c98b412f71c3e5bb780398e91b3afe8db97b8fdafa14f8d9a53b70d12167e2ce40dd228a93912d406bbfdcf9fa3f47513e11af21c634453cda3dc792d83ed1b09b8139f2207aed0159c5252bc49392b908f8c8622dc3158474e5d2d8122b4bcab4572f97a0a0fceeb09759afb0c6ed93bbb26e777b5b2f6167fbf43f5ccd4b2e1fefceebaaaa10380399160680e55d6012b854d52849d5693cdcede4d9ade3f8fbd81b3a8283140ffcc661c80168115f3cccec49dda5fcb6628d1fadb4d8d6261387a3caa43b260fa78c040f5a38b56f267eda5827f508675fb83cef4de1befe4dc17847fd9af79f7007020529745bccf364ba66d5e2a88f7e0112ca94b974b4ad92b2de573841062244127ceb834ccc5b3d0366a935f6c58139970ab6798f4c7a8ad41f4513a8502e54b3883d7759a29c0973873450d38f325f872695e30e8b6e53e9c2822c5869371bf073ed9fcff5ef85a4716559a86094158afa45459bf5aa7cf043c5b80ec063622c45cf694efd3b01a28336fed5e81eaca8d1b90c33fb2402588cbf66e48286c26d6963c6f49ae6c22dcd2f42f1c6c72c0df00a0751d1cf702ff72233b8a5e3ca97ab37c706903bfca52bd78a02e8a9f24faf2ba70524216eb5b42ebd71efc631771d80a64b1586dd4ced4ebc7fec91dc0d77e306e3f4c36a53a640f0e910c630157cbe0d04c47249624d6a1f179ff001f730f0e0de05324f63bfd0ae30fddea078133739a35e77ed4d7271a71ae1d462e1ee4bf5817549dfdd1e929f9635c2aa638487ef70d3170d8233e3636136da764853d4aa4086d51701a6dd46c8f2cb494c72c60dcf1d4fbcc3be63e7ae73c1297ff569872e5eb74df57c62a6304670b6ccb4e0eb1fbb8dfd2c971f0d12e8668ed8fec191ddf85c5f3fbee66a38c623517777d607c8dc31f8917178c1806e2ef3a1f2975550e62c34b5ff3514f712cb25b212a90db48b26a436028af3876a5c4b5476cbf3467227571d8e7e1db15d624d31633a680b0c83a52a487fc34446364d16b842e82010c22f33a1d738a8cce02fbe9236f71e542729e838451d8624cafcf55917d55a7b75453ee9b51e6c16d7307ec3dc0665a6fc1dcafac1e5b2ba7bebde674e65e81694e708f2875a9c93a47ff3d7e42a0a6a9f1ba25cc4bd89958f0b732c58bd37189dfcb066069131dc581259c4e0f39899d6ea96acd872b4b08196b233e290f5d9467aeac89c519d1a0d7e7242e8797a8661cc675c40ed6ff22313a0407d012496b7b70a2e6d805ffdba55374e96adfcc92251d005a36c3d7580e9f3799bd7f21fa5e951ec1e6b47a5f27b00e0bff437c255e4c1e88315e2a8c5ac5d0b4bf44c6f757b8ee58d3e4bc21a0df9a20a71a7259dceff15b744e5debdfe1b3b895f120bccaa72150e3d1ac144b2bdaa9f87ca73ddf0054453828e670afc969602f246517897aad1ea2c530465c697de3c8eff750aee12277a179c0b57f0cebe4467975346ee39462297d91827f7fd8b20dbd35cd9d2a53a5155026153c00498c89f672d9b8bfa21b6758cadcf1809aa897a5ad9df37f266a1b37b395feffa0a3f6b83449ccfae2cfc27d4abf96b90d78d4832812cf4fb0267d230936142cb59fe621fce021d915e3911314656c91925ad98d6f0d4c0b5c24c267ba6455ad583e4ec49082c5d0ce5e942f9ec29ea620d854f92fb8af1bca4a46d581cf0d7f57349288c767213a3b63491c0cf0944373977c0312964fabe49dac055b873e3a356c070a83c0f2011fc518df33417f3cee0ce6582a3a037011aec8ee719fbfd11dd4317acd6ad1d7cbc026ac116189f7e46070455aaaea57e4ca15a125401a59f16124c175a989c67ed5c34da9ae7ebc4ec9e86d9b1c635ff4ddb9ca723502409c6d5ba4567931db4c2fbbf570599869b8eb4f1e37d74227949456936c15b9e7d108bf4f2bdc7583d432a2204ec6b9104965c6ffc06706b07ad76c6be0dd01e930b5e6712cfb2b081e20d6f8b9359ab76af3b452f2b702ca5239d13936d2568727f57540e03b64fc4cd504dfd646466f6a028154226c03b856a62eb562231a5f257e6b57608b8d128278b0a12b57b354054dd31505ab1d7b94fff41fbd1f4dde7172aca191a8c29bb45d8845eeffe6006822aa6c6768605c898e1758de39fa08f0e277b19af62859ef292be94d412fba3f09531c617e188b4200d6c96664ce1aa0173c53875ade4906d36c50c6e56209cfb3c787f63f16283c8a0f9b99fc6b308c8a15484cf22f774ebcfbfa5d956765fb240b9d2fa46bbc82d9abda0fa549b3b819fba960f4f1338f699df59274382e5a74dedc58cb28f4674bedb4acd646c0f2f14366fa3a1f00f286a4b7778f3849fe5b28607d70116c9bca039a2969f252f1d0e6fd9ebdb5bc20c78587db8297dfeb2abb9032468eaff61899b7b27ed8acae4da41bb7304e9a4353cdaab63d96bc7ab23cbe270d8440b650921c503f7d59a2e98e9aa689b86d9aa77ea3b5bd01e69a149db4802af96c672aef03e5172503cdf1bae2d532f0e0db14489f60cf9dde6d0871381c2787daeddc17d97e864131ff685f1016e7dba4d7e79752e598aeccf023bfc293c96bcd31108ffbe7f3650283386e7489cc9361b81733dddd0ef1b65688fc77122235337cee0160e6ae4ba8b502b1d6a70de66916778a70883cfe503573151f7ab505ca866fee3ea2b1215df56899672008c6948abf9255ee338f9b65282bc3503c4b3042839b92298076e3d43842ba8850dd9ca36396fda51204eebd6d58b7d2f4135422952326995bee77ac13b3d098e1db1afec9b2400205708b8f661fa981c697f27ebe66e1f4b8de1d0470e669306e02f0c8a475725021be0afc3ac16319dd2e3093ea1273f441dabe29ff1a5facc3576934ab817dc9c79542d2d0f2991094e3feba81b4d1c76a95a379efca3639d391358bb1d50ffd45f37a6730b722fa9124929543b5afaf9dc547c0eac47eaf4ccefedeed749db62d1020355cc06d62de58ded0e3be51edfc277ef4c7fff175566655fdf0647f4bc9321ba99c8df135813fe1fa1448e4fb376d874a3681abcafa78ba53854b7dcdcd8f7ed8d5c6c32f75a16b5add84b07a04008e0a367f73c27e557249f99a41511e190d8363a49e2a560892ed633a6970b42de2705a4743e11f2a20d9ce14f8d64a3d7da5c00748bba99a1f30b886109768a9502807fee5bfc1fca31f9ba55d1e75d40b1124ee85dd1a5d3f5ba2c7544ee9026be08487bc7c46bcaaec24c66ce0475f4211f734bd2bbe9f77a7c9ff228142868aaf60e7f44242421f95bbfb341e6bf712be3784ee4f3700a442ff1f2ebcef8f567e98961ce749e8a77297d6e5fae5b9ba00eed1451966fd4bf6a904323dd634be61965b0c7fe1cfc423d2f08bc1bd1cb77a864196ad0474c70a51abd4b67691caebefa5873f5bee924ccbc59f6ee18b54c7a8286fe696497012d58244430b02973a02a615686638b842c498497f10a64f2d19dbe97e20c72b75d3a9831ac72f5ef170470e060424aadd958ba45815ba81742b33c03704ac6e87a4aa501d73a9b793ff82c8c1b778e7bb4c97cfa933f6109c0196e743a8604de227a72ad300d373b224c38e3c71e54642ab506e58b82b583f943bffac146cba60e91dfee48a54db2f1663a32b7cc6e6fb3c5c91be905c48ce62dc752a4fe63a418e87a41a5a78b8a2b3f71a0c16dee86e464e06854424a1c52042eae1b7cbaebfd21a7aa30c581ad9112986530b17d9c101a6b1146d92ba8d922843d942fb836e92352dca36865f2a2d3dd19ccda0198c72ced45812cbbe9d7f69feb423def1a87b062c3fa9547ee66f328339b23d553b4e7c2541e3433a7bded2d2807dc7dbb6b909b37f2ca3db6bc13e2772b921cc67ccc6753f8f66694607133b803c0d16bcd138a224e072222f25092d1f5ab41d274eeb768a0a26fd65aacced5b00efee509c4589fa857ad19cc748a7a6844daf4cf0883a3568ada7868b8bb85995c9a5421b356e721f34b748c7c3ac57c099495280b6effc9cbf4023c1ea73d2bed2200123bdfa5215f8b06b3febdc33bbf4856c96a9bc7bf40ec9169e162df1e5b48e0e6a80d8490acf8a6abc73982aad1a4d2138fe15331c2ec90885dcbc6995ff9173515891f0205f75adf2b2f0bdb0494551f43fd09d1cdaf6337b578ec0f0204651e8f1a98c66759fce3a30d3f7d261820c09611fe78d3610a6c6d6890a4545f977638e80b7d1db7e03b91d3308472708864aa78af9c0a3f11e48ae10b38d63d722c7144cdab57db24cec77b19ed63c3664508e654347aa7bb1d95fc28a25a1001d63b03cd9ca1bdfaf17145e92769a59e3f349f2e3653cacc22e92da66e12e91f878fa2f5f9f3e28c19f13cfe67e7083a9eb055d735c4e414ab3d63500b14b95e6df9dc9d3fe8a7d53eac87f3de934953f77594b47b157ddadf4a3a376d9b3126dbc8140a96ade40cc27e743f7d4be3f8520a021287ee208f1b5dd43f54fb37c3555b220bb6ffe14f12dde61841237c97416716a98b2fb066c4ca31ed3d092d200f7b08444809c7ce926c70ba1b1a45d2dd85afacd4bc735693a5b56005e7503ed4883d1b03b1eb598a3a41cb0548a522a18a6349d20dbd794eaeafcd8b5abd929dd506684f1fcfccc7e113db57ffb64c1dbb1c8609fc2df0d6e4f8e673c636b13811c16897d0fb03c04aab04675e244566eb490381a32636476932ae1704228872fd77e3a8376f3a67290b4e9b039833d138c4246302f421bc97aa6246c9241dbd9e820b008cdeb111f14dc68b8202beb628a4327ca0b4f1c6cb23660b211e41cb39accc4087748083013f385f1f7d5315ff5af5b603c004f022fb85f98447d59f508b6f9cb2278bb0765417245e4434e4d289627f6cc5bb30b52a9790fd92f51568b51ad22ffb799d890fd2fa5e6525805dc0f88e0b0ae74f6db36b57dadf3f369e6f7f1c92a797b2a633e8fea7856a77ab806b905772a15d6ca5fc06ebd825642a67edbf04ba1c6d8fea0b7f1f12f3ed494413bc5c025e9af1f636aa01fe1e9e42dc65cf81aba7243584b6cf233123b19c8b0145f87c4d4293c2a46358d66f95c189ae89ac97ebad35d8a05abbc0e35ac0ba9914aa1fd4d45cbcca13236ee78e67579c5865b2ab1d0b615591e266e9fe35dca4df089cf46d5220d88b16b5c154aa5658a4e6cbf2af074ec4f3a79575f6b697e96a39acdb050ed07ca427d789db06bd7b00772a424f67d18e9d2c31332ef6ddf8ac8e8a541f7084ebd43ccd4a036be0d61531a1c9bfd0e8becaaee8744c6844b39727cb300ecfe2ef53b36e62a54a4cb016d29da63d2aaf7c4311e9f7079c8b34630b2c77523c5504775c13bc428135a8993d77328a500e1ca6a7331b3fc4f7da6c8d6ebae1eead6cef9c94eb769c11b8635cbe2e53e6aa8b34d775becde422fc8e329010de792911d1fc252106ec19b92ca4a9a64020235cba1c00bcae9c10eb40cf5ad2b9e720b24fc283c31971e0c05955d1da051dd907862b980b85bb9167129e81c71cfaec3f57816a34ee135262d9c54e16d636b8deaee057ab00ccdbf6707b31908a769e8746cce82848f554d20e80de9edc45ff004a584e05798c21523947e4cab7ba82c47bb4dec697fe0c9357bc9b1c6d6913431c67b779ec685ec51dab9abfa21212633861cc4ab7108f1fddbd89cf3fb85df70ed6506c0c593502ccbc17ccd9161c2ff37b3d5e19577c64e673f5044e1fbf9dd12576e12415721b9480f3c49a0d5502f8b42278e5f0c575e55a7abbd2a6efeabd885670c325d377d5e56d48980595e031fa1426925081edff160a358d145b602cc154df61fdc31b252057c8c964d05b617b05439e135185c2c08624ab39a7faa99cb592dc7282bde9102044b482ea6950e48d1439fabfa435d917526bc0becd400a4279bb0d7b7f728afccac82faabfbc0e6fc1a72a785d6eedd256cb392a5ee2c98f96051ea6261eed68c313378e8688587df520d64b762f82b2b8db10a1b449f087dba84c026c92125ec3a1001f0ae868d6e2a6c3a7a704b40a9b370405f22f894e29cda8523eda6c0555f46cde6488da4fc7fcda9e2d55f06552fa16ee64155e719c47e21a77e0d28178043f83d8e7b6fa723b23696b25f9ee4743de2fcd9d5d5dc8be440bee2b3622105c2e651ae902772c618d987b6858e6fc66063fe0aa6e4b4f3a4d2765a41a627543e164f09b3607dee992a4b69bebdb6d403fd10ac918f5ebdbab4fb61607748a5c3e410057969e5f48bd5341ee8a5888db0968d060ec93c97fac6e55fde48ad6bd3a6bc98b607ba5d2ae21f4dab977ec1ed7fc97dbbedf27a05990103b355c599f4f1b7c4cde5b3aff7a895ba9fc1f7449de0ebb7f52fd34bccefa15ab3b08186e1103b992c10236efabd672e0d5b43056494caee7f754c4e33beadad2ac3228d74684e3a6de9cbb36752f23a4e73c38357f1b5bac09714c0284a66c86ead61e1683be2332962ca276c6b93efbc23f4ec76c5b8f81676e16f0688b0be92d64fccb992dd63068e452fe2937a395bbc666e01714be3067223702df7dc74cdb5b9a1ccc487243769c414a72ac41615ae6f7516085db3590a6e5f9db246c70567623720f69aceda189d23ac109d545b449757bdc0d32a602f3fe7c54ea9fcd36f4ade4f8977f6b108db30be98aed3651db3c33b8e6469e8366ddbe5b1b04497d6a555d721c52a1967f2faf1c9cb188e5714c93a63468dc5dc93acee4f0b088eb3fbd458b17c394413df73866612a653d0568219e41bcfd9cac0f7e6d0624561b0c8ecfc1ddd1f135bb29dc141c5bf56ca546b9c424126c5aa3d9aa1e8f8aefe1e09d62950f67a963a9f89bce551633d642d26862b0d4295bf337743a4e85c7ad1b40c679cef591039f6be16e6c2b927d642923bf79f227272a7b06feef7101e95250991b9afd763a6821cd3a62017f89b0daf6cba42d7b7af253e691207ee0e7f08e9d28017471bf1b6e2796bb22131f5639613bf5e0f182f0d0e667e7049234e7a4286b54e079700dfcccc6eba269d482729029d6df085f70adb9e9cefc6d7b2d5d89a8e45bebbc63671e26484d474569f0ad772f13339088rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootorthanc-1.12.8-bp156.3.6.1.src.rpmorthanc-source@    /bin/bashdcmtkrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3hNggg@ge\@g ff@fb@fGFe!@e~@e@e@e@e(e4@d[@d;@d9@@cWc2bzSbu b=af@aP`a/k@`]`i@`@`s``7@`_k_@_j_@_d@_D@_&^V@^Ǿ^1^@^{G^y@^t@]@]W]R@\s\]o@\Q\P@@\G\'@Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Christophe Marin Axel Braun Axel Braun Max Lin Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Marcus Meissner Axel Braun Johannes Segitz Axel Braun Axel Braun Axel Braun Steve Kowalik Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun axel.braun@gmx.deAxel Braun Axel Braun Axel Braun - version 1.12.8 * long changelog - see NEWS for details- version 1.12.7 * dcmtk.diff removed (upstream) * long changelog - see NEWS for details- version 1.12.6 * long changelog - see NEWS for details- changed dcmtk.diff to fix TW build error- version 1.12.5 * patches toolbox.patch boost.patch sha.patch removed (in sourcecode) * for details, see NEWS file- applied patches to source tree (for plugins)- sha.patch added to fix Leap build- toolbox.patch and boost.patch added to fix TW build- version 1.12.4 * boost185.diff removed * API version upgraded to 24 * Added "MaximumPatientCount" in /system * Added a new "LimitToThisLevelMainDicomTags" field in the payload of /patients|studies|series/instances/../reconstruct to speed up the reconstruction in case you just want to update the MainDicomTags of that resource level only (e.g., after you have updated the "ExtraMainDicomTags" for this level) * The "requestedTags" GET argument is deprecated in favor of "requested-tags" * Added "?whole" option to "/instances/{id}/tags" to access tags stored after pixel data * Multitenant DICOM plugin: added support for locales. * Housekeeper plugin: - Added an option "LimitMainDicomTagsReconstructLevel" (allowed values: "Patient", "Study", "Series", "Instance"). This can greatly speed up the housekeeper process, e.g. if you have only update the Study level ExtraMainDicomTags. - Fixed broken /instances/../tags route after running the Housekeeper after having changed the "IngestTranscoding". * SDK: added OrthancPluginLogMessage() as a new primitive for plugins to log messages. This new primitive will display the plugin name, the plugin file name, and the plugin line number in the logs. If they are not using the LOG() facilities provided by the OrthancFramework, plugins should now use ORTHANC_PLUGINS_LOG_INFO(), ORTHANC_PLUGINS_LOG_WARNING(), and ORTHANC_PLUGINS_LOG_ERROR(). * C-Find queries: - In C-Find queries including "GenericGroupLength" tags, Orthanc was still extracting these tags from the storage although they were already ignored and not returned in the response. They are now removed from the query earlier to avoid this disk access that could slow down the response time. Note that this seems to happen mainly when the query originates from some GE devices (AWS). - "TimezoneOffsetFromUTC" is now ignored for matching. * The 0x0111 DIMSE Status is now considered as a warning instead of an error when received as a response to a C-Store. See https://discourse.orthanc-server.org/t/ignore-dimse-status-0x0111-when-sending-partial-duplicate-studies/4555/3 * Removed potential PHI from the logs when Orthanc encounters an error while creating a ZIP archive. * Monitoring of stable resources now also takes into consideration the resource type, not only the resource identifier identifier. * DICOM TLS: - In prior versions, when "DicomTlsRemoteCertificateRequired" was set to false, Orthanc was still sending a client certificate request during the TLS handshake but was not triggering and error if the client certificate was not trusted (equivalent to the "--verify-peer-cert" DCMTK option). Starting with Orthanc 1.12.4, if this option is set to "false", Orthanc will not send a client certificate request during the TLS handshake anymore (equivalent to the "--ignore-peer-cert" DCMTK option). - When working with "DicomTlsEnabled": true and "DicomTlsRemoteCertificateRequired": false, Orthanc was refusing to start if no "DicomTlsTrustedCertificates" was provided. - New configuration options: - "DicomTlsMinimumProtocolVersion" to select the minimum TLS protocol version - "DicomTlsCiphersAccepted" to fine tune the list of accepted ciphers * Fixed broken /instances/../tags route after calling of /studies/../reconstruct after having changed the "IngestTranscoding". * Upgraded dependencies for static builds: - boost 1.85.0- boost185.diff added to fix TW build issue- Update orthanc-source requirements to fix the orthanc-wsi build- apply dcmtk patch to install section: we need this patch in the source RPM as well for the plugins, otherwise TW and Leap 15.6 fail to build plugins- fix build for Leap < 15.6- Build orthanc with gcc13 on Leap 15- version 1.12.3 * dcmtk.diff added to fix TW build issue * add user/group orthanc * Performance of databases: - At startup, if using a database plugin, displays the latency to access the DB. - Added support for new DB primitives to enable the "READ COMMITTED" transaction mode in the PostgreSQL plugin. * API version upgraded to 23 * Added a 'KeepLabels' option in /modify routes (default = false) * Upgraded dependencies for static builds: - boost 1.84.0 - curl 8.5.0 - dcmtk 3.6.8 - jsoncpp 1.9.5 - libjpeg 9f - libpng 1.6.40 - openssl 3.1.4 - pugixml 1.14 - zlib 1.3.1- version 1.12.2 - see NEWS for full changelog libboost.diff removed (included in source)- libboost.diff to fix build error with boost 1.84- version 1.12.1 * Orthanc now anonymizes according to Basic Profile of PS 3.15-2023b Table E.1-1 * Added metrics: - "orthanc_storage_read_bytes" - "orthanc_storage_written_bytes" - "orthanc_memory_trimming_duration_ms" * API version upgraded to 21 * "/tools/create-dicom" can now be used to create Encapsulated 3D Manufacturing Model IODs (MTL, OBJ, or STL) * Added a route to delete the output of an asynchronous job (right now only for archive jobs): e.g. DELETE /jobs/../archive * Added "OrthancPluginLoadDicomInstance()" to load DICOM instances from the database * Added "OrthancPluginSetMetricsIntegerValue()" to track metrics with integer values * Fix decoding of YBR_FULL RLE images for which the "Planar Configuration" tag (0028,0006) equals 1 * Made Orthanc more resilient to common spelling errors in SpecificCharacterSet * Modality worklists plugin: Allow searching on private tags (exact match only) * Fix orphan files remaining in storage when working with MaximumStorageSize (https://discourse.orthanc-server.org/t/issue-with-deleting-incoming-dicoms-when-maximumstoragesize-is-reached/3510) * When deleting a resource, the "LastUpdate" metadata of its parents are now updated * Reduced the memory usage when downloading archives when "ZipLoaderThreads" > 0 * Metrics can be stored either as floating-point numbers, or as integers * Reduce the frequency of memory trimming from 100ms to 30s to avoid high idle CPU load (https://discourse.orthanc-server.org/t/onchange-callbacks-and-cpu-loads/3534). * Upgraded dependencies for static builds: - boost 1.82.0- version 1.12.0 * Support for labels associated with patients, studies, series, and instances * Added a sample plugin bringing multitenant DICOM support through labels * Many other fixes and improvements, see NEWS- version 1.11.3 * cmake.diff removed (included in source) * install_cmd.diff removed (included in source) * Many improvements, for detailed log see NEWS- Build fixed for new plugins cmake.diff added install_cmd.diff added- version 1.11.2 * Added support for RGBA64 images in tools/create-dicom and /preview * New configuration "MaximumStorageMode" to choose between recyling of old patients (default behavior) and rejection of new incoming data when the MaximumStorageSize has been reached. * New sample plugin: "DelayedDeletion" that will delete files from disk asynchronously to speed up deletion of large studies. * Lua: new "SetHttpTimeout" function * Lua: new "OnHeartBeat" callback called at regular interval provided that you have configured "LuaHeartBeatPeriod" > 0. * "ExtraMainDicomTags" configuration now accepts Dicom Sequences. Sequences are stored in a dedicated new metadata "MainDicomSequences". This should improve DicomWeb QIDO-RS and avoid warnings like "Accessing Dicom tags from storage when accessing series : 0040,0275". Main dicom sequences can now be returned in "MainDicomTags" and in "RequestedTags". * Fix the "Never" option of the "StorageAccessOnFind" that was sill accessing files (bug introduced in 1.11.0). * Fix the Storage Cache for compressed files (bug introduced in 1.11.1). * Fix the storage cache that was not used by the Plugin SDK. This fixes the DicomWeb plugin "/rendered" route performance issues. * DelayedDeletion plugin: Fix leaking of symbols * SQLite now closes and deletes WAL and SHM files on exit. This should improve handling of SQLite DB over network drives. * Fix static compilation of boost 1.69 on Ubuntu 22.04 * Upgraded dependencies for static builds: - boost 1.80.0 - dcmtk 3.6.7 (fixes CVE-2022-2119 and CVE-2022-2120) - openssl 3.0.5 * Housekeeper plugin: Fix resume of previous processing * Added missing MOVEPatientRootQueryRetrieveInformationModel in DicomControlUserConnection::SetupPresentationContexts() * Improved HttpClient error logging (add method + url) * API version upgraded to 18 * /system is now reporting "DatabaseServerIdentifier" * Added an Asynchronous mode to /modalities/../move. * "RequestedTags" option can now include DICOM sequences. * New function in the SDK: "OrthancPluginGetDatabaseServerIdentifier" * DicomMap::ParseMainDicomTags has been deprecated -> retrieve "full" tags and use DicomMap::FromDicomAsJson instead- version 1.11.0 * new API version 1.7 * new configuration parameter * for detailed changelog see NEWS- switched source urls to https- version 1.10.1 * for detailed changelog see NEWS- Added hardening to systemd service(s) (bsc#1181400). Modified: * orthanc.service- Test for SharedLibrary.Basic disabled (fails with new glibc)- Version 1.9.7 * New configuration option "DicomAlwaysAllowMove" to disable verification of the remote modality in C-MOVE SCP * API version upgraded to 15 * Added "Level" option to POST /tools/bulk-modify * Added missing OpenAPI documentation of "KeepSource" in ".../modify" and ".../anonymize" * Added file CITATION.cff * Linux Standard Base (LSB) builds of Orthanc can load non-LSB builds of plugins * Fix upload of ZIP archives containing a DICOMDIR file * Fix computation of the estimated time of arrival in jobs * Support detection of windowing and rescale in Philips multiframe images- version 1.9.6 * In lookup and query/retrieve, possibility to provide a specific study date * Clicking on "Send to remote modality" displays the job information to monitor progress * Fix orphaned attachments if bad revision number is provided- Remove executable bits from Python scripts when creating the source tree for the -source package to stop it requiring /usr/bin/python- version 1.9.5 * Anonymization is applied recursively to nested tags * API version upgraded to 14 * Added "Short", "Simplify" and/or "Full" options to control the format of DICOM tags in: - POST /modalities/{id}/find-worklist - POST /queries/{id}/answers/{index}/retrieve - POST /queries/{id}/retrieve * Fix broken "Do lookup" button in Orthanc Explorer * Error code and description of jobs are now saved into the Orthanc database- version 1.9.4 * Orthanc now anonymizes according to Basic Profile of PS 3.15-2021b Table E.1-1 * New configuration options: - "ExternalDictionaries" to load external DICOM dictionaries (useful for DICONDE) - "SynchronousZipStream" to disable streaming of ZIP * Orthanc Explorer supports the DICONDE dictionary * API version upgraded to 13 * New routes to handle groups of multiple, unrelated DICOM resources at once: - "/tools/bulk-anonymize" to anonymize a set of resources - "/tools/bulk-content" to get the content of a set of resources - "/tools/bulk-delete" to delete a set of resources - "/tools/bulk-modify" to modify a set of resources * ZIP archive/media generated in synchronous mode are now streamed by default * "Replace" tags in "/modify" and "/anonymize" now supports value representation AT * "/jobs/..." has new field "ErrorDetails" to help identify the cause of an error * "Replace", "Keep" and "Remove" in "/modify" and "/anonymize" accept paths to subsequences using the syntax of the dcmodify command-line tool (wildcards are supported as well) * Added "short", "simplify" and/or "full" options to control the format of DICOM tags in: - GET /patients, GET /studies, GET /series, GET /instances (together with "&expand") - GET /patients/{id}, GET /studies/{id}, GET /series/{id}, GET /instances/{id} - GET /patients/{id}/studies, GET /patients/{id}/series, GET /patients/{id}/instances - GET /studies/{id}/patient, GET /studies/{id}/series, GET /studies/{id}/instances - GET /series/{id}/patient, GET /series/{id}/study, GET /series/{id}/instances - GET /instances/{id}/patient, GET /instances/{id}/study, GET /instances/{id}/series - GET /patients/{id}/instances-tags, GET /patients/{id}/shared-tags - GET /studies/{id}/instances-tags, GET /series/{id}/shared-tags - GET /series/{id}/instances-tags, GET /studies/{id}/shared-tags - GET /patients/{id}/module, GET /patients/{id}/patient-module - GET /series/{id}/module, GET /studies/{id}/module, GET /instances/{id}/module - POST /tools/find * "/studies/{id}/split" accepts "Instances" parameter to split instances instead of series * "/studies/{id}/merge" accepts instances inside its "Resources" parameter * Full support of hierarchical relationships in tags whose VR is UI during anonymization * C-MOVE SCP: added possible DIMSE status "Sub-operations Complete - One or more Failures" * Fix issue #146 (Update Anonyization to 2019c) - was actually updated to 2021b * Upgraded dependencies for static builds (notably on Windows): - curl 7.77.0- Version 1.9.3 * New configuration option: "DicomTlsRemoteCertificateRequired" to allow secure DICOM TLS connections without certificate * "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included) * New CMake option: "ORTHANC_LUA_VERSION" to use a specific version of system-wide Lua * Fix the lifetime of temporary files associated with jobs that create ZIP archive/media: - In synchronous mode, their number could grow up to "JobsHistorySize" in Orthanc <= 1.9.2 - In asynchronous mode, the temporary files are removed as soon as their job gets canceled * Fix regression in the handling of "DicomCheckModalityHost" configuration option introduced by changeset 4182 in Orthanc 1.7.4 * Reduced memory consumption of "OrthancPluginHttpClient()", "OrthancPluginHttpClient2()" and "OrthancPluginCallPeerApi()" on POST/PUT if chunked transfer is disabled * Fix issue #195 (No need for BulkDataURI when Data Element is empty) - from version 1.9.2: * New configuration options related to multiple readers/writers: - "DatabaseServerIdentifier" identifies the server in the DB among a pool of Orthanc servers - "CheckRevisions" to protect against concurrent modifications of metadata and attachments * API version upgraded to 12 * "/system" reports the value of the "CheckRevisions" global option * "/.../{id}/metadata/{name}" and "/.../{id}/attachments/{name}/..." URIs handle the HTTP headers "If-Match", "If-None-Match" and "ETag" to cope with revisions * New function in the SDK: OrthancPluginCallRestApi() * Full refactoring of the database plugin SDK to handle multiple readers/writers, which notably implies the handling of retries in the case of collisions * Use the local timezone for query/retrieve in the Orthanc Explorer interface (was UTC before) * Fix "OrthancServer/Resources/Samples/Python/Replicate.py" for Python 3.x * Fix issue #83 (ServerIndex shall implement retries for DB temporary errors) * Upgraded dependencies for static builds (notably on Windows and LSB): - civetweb 1.14 - openssl 1.1.1k- version 1.9.1 * The "dicom-as-json" attachments are not explicitly stored anymore to improve performance * If the storage area doesn't support range reading, or if "StorageCompression" is enabled, a new type of attachment "dicom-until-pixel-data" is generated * New metadata automatically computed at the instance level: "PixelDataOffset" * New configuration option related to networking: - "Timeout" in "DicomModalities" to set DICOM SCU timeout on a per-modality basis - "Timeout" in "OrthancPeers" to set HTTP client timeout on a per-peer basis * API version upgraded to 11 * BREAKING CHANGES: - External applications should not call "/instances/.../attachments/dicom-as-json" anymore, and should use "/instances/.../tags" instead - "/instances/.../tags" route does not report the tags after "Pixel Data" (7fe0,0010) anymore * "/peers/{id}/store-straight": Synchronously send the DICOM instance in POST body to the peer * New arguments in the REST API: - "Timeout" in "/modalities/.../query" - "Timeout" in "/modalities/.../storage-commitment" - "Timeout" in "/queries/.../answers/.../query-{studies|series|instances}" * New value in enumeration: OrthancPluginDicomToJsonFlags_StopAfterPixelData * New value in enumeration: OrthancPluginDicomToJsonFlags_SkipGroupLengths * Improved precision of floating-point numbers in DICOM-as-JSON and DICOM summary * Optimization in C-STORE SCP by avoiding an unnecessary DICOM parsing * Fix build on big-endian architectures * Handle public tags with "UN" value representation and containing a string (cf. DICOM CP 246) * The numbering of sequences in Orthanc Explorer now uses the DICOM convention (starts at 1) * Possibility to generate a static library containing the Orthanc Framework- Version 1.9.0 * Support of DICOM TLS * New configuration options related to DICOM networking: - "DicomTlsEnabled" to enable DICOM TLS in Orthanc SCP - "DicomTlsCertificate" to provide the TLS certificate to be used in both Orthanc SCU and SCP - "DicomTlsPrivateKey" to provide the private key of the TLS certificate - "DicomTlsTrustedCertificates" to provide the list of TLS certificates to be trusted by Orthanc - "UseDicomTls" in "DicomModalities" to enable DICOM TLS in outgoing SCU on a per-modality basis - "MaximumPduLength" to tune the maximum PDU length (Protocol Data Unit) - "LocalAet" in "DicomModalities" to overwrite global "DicomAet" for SCU on a per-modality basis - "AcceptedTransferSyntaxes" to set the transfer syntax UIDs accepted by Orthanc C-STORE SCP - "H265TransferSyntaxAccepted" to enable/disable all the transfer syntaxes related to H.265 - "DicomAlwaysAllowFind" to disable verification of the remote modality in C-FIND SCP - "DicomAlwaysAllowGet" to disable verification of the remote modality in C-GET SCP * New configuration option: "DicomScuPreferredTransferSyntax" to control transcoding in C-STORE SCU * New command-line option: "--openapi" to write the OpenAPI documentation of the REST API to a file * New metadata automatically computed at the series level: "RemoteAET" * The DICOM meta-header and the transfer syntax are displayed at the "Instance" level * API version upgraded to 10 * "/tools/accepted-transfer-syntaxes": Get/set transfer syntaxes accepted by Orthanc C-STORE SCP * "/tools/unknown-sop-class-accepted": Get/set whether C-STORE SCP accepts unknown SOP class UID * "/modalities/{...}/query": New string argument "LocalAet" * "/tools/create-dicom": New flag "Force" to bypass consistency checks for the DICOM tags * BREAKING CHANGE: All the Lua callbacks "IsXXXTransferSyntaxAccepted()" and "IsUnknownSopClassAccepted()" have been removed * New functions in the SDK: - OrthancPluginCreateMemoryBuffer64() - OrthancPluginRegisterStorageArea2() - OrthancPluginCreateDicom2() * Refactoring and improvements to the cache of DICOM files (it can now hold many files) * New Prometheus metrics "orthanc_dicom_cache_count" and "orthanc_dicom_cache_size" * Fix upload of multiple DICOM files using one single POST call to "multipart/form-data" Could be the final resolution of issue #21 (DICOM files missing after uploading with Firefox) * Partial fix of issue #48 (Windows service not stopped properly), cf. comments 4 and 5 * Explicitly use little-endian to encode uncompressed file size with zlib compression * Upgraded dependencies for static builds (notably on Windows): - dcmtk 3.6.6 - jsoncpp 1.9.4- Workaround for boo#1180359- Version 1.8.2 * ZIP archives containing DICOM files can be uploaded using WebDAV * New config option "MallocArenaMax" to control memory usage on GNU/Linux * Explicit error log if trying to load a 32bit (resp. 64bit) plugin into a 64bit (resp. 32bit) version of Orthanc * New configuration options contributed by Varian Medical Systems: - "DeidentifyLogs" to remove patient identification from the logs (C-GET, C-MOVE, C-FIND) - "DeidentifyLogsDicomVersion" to specify the deidentification rules for the logs - "OrthancExplorerEnabled" to enable/disable the Orthanc Explorer Web user interface - "SslMinimumProtocolVersion" to set the minimal SSL protocol version (now defaults to SSL 1.2) - "SslCiphersAccepted" to set the accepted ciphers over SSL (now defaults to FIPS 140-2) * New configuration options related to ingest transcoding: - "IngestTranscodingOfUncompressed" to control whether uncompressed transfer syntaxes are transcoded - "IngestTranscodingOfCompressed" to control whether compressed transfer syntaxes are transcoded * "/instances" can be used to import ZIP archives provided in the POST body * Allow concurrency on the OrthancPluginRegisterIncomingHttpRequestFilter() callbacks * Allow empty request body in "/modalities/{id}/echo" * If meta-header is missing, best-effort to extract "TransferSyntax" in "/instances/{id}/metadata"- Version 1.8.1 * adaption to new systemd-macros (OBS) * New sample tool "OrthancImport.py" to easily import compressed archives (ZIP) into Orthanc * Logging categories (cf. command-line options starting with "--verbose-" and "--trace=") * New command-line option "--trace-dicom" to access full debug information from DCMTK * New config option "DicomEchoChecksFind" to automatically complement C-GET SCU with C-FIND SCU * API version upgraded to 9 * "/tools/dicom-echo": Execute C-Echo SCU to a modality that is not registered in "/modalities" * "/tools/log-level-*": Dynamically access and/or change the verbosity of logging categories * "/peers/{id}/configuration": Get the configuration of one peer (cf. "/peers?expand") * "/modalities/{id}/configuration": Get the configuration of one modality (cf. "/modalities?expand") * "/tools/dicom-echo" and "/modalities/{id}/echo" now accept the field "CheckFind" in their JSON body to complement C-GET SCU with C-FIND SCU ("DicomEchoChecksFind" on a per-connection basis) * Archive/media jobs report the size of the created ZIP file in content field "ArchiveSizeMB" * New function in the SDK: OrthancPluginGenerateRestApiAuthorizationToken() * C-GET SCP: Fix responses and handling of cancel * Fix decoding sequence if "BuiltinDecoderTranscoderOrder" is "Before" * Fix keep-alive in the embedded HTTP server by setting the "Keep-Alive" HTTP header * Fix access to videos as a single raw frame (feature broken since Orthanc 1.6.0) * REST API now returns 404 error if deleting an inexistent peer or modality * Improved forward ABI compatibility of Orthanc Framework (notably, no inline methods anymore) * Upgraded dependencies for static builds (notably on Windows and LSB): - civetweb 1.13- version 1.8.0 * Serving the content of Orthanc as a WebDAV network share * New config options: "WebDavEnabled", "WebDavDeleteAllowed" and "WebDavUploadAllowed"- Version 1.7.4 * New configuration options to enable HTTP peers identification through certificates: "SslVerifyPeers" and "SslTrustedClientCertificates" * New configuration option "SyncStorageArea" to immediately commit the files onto the disk (through fsync()), so as to avoid discrepencies between DB and filesystem in case of hard shutdown of the machine running Orthanc. This slows down adding new files into Orthanc. * Underscores are now allowed in peers/modalities symbolic names * Fix compatibility with C-MOVE SCU requests issued by Ambra * Fix transcoding in C-MOVE SCP, in the case where "SynchronousCMove" is "true" * When checking DICOM allowed methods, if there are multiple modalities with the same AET, differentiate them from the calling IP * Enable the access to raw frames in Philips ELSCINT1 proprietary compression * Support empty key passwords when using HTTP client certificates * Fix handling of "ModalitiesInStudy" (0008,0061) in C-FIND and "/tools/find"- Version 1.7.3 * API version upgraded to 8 * "/peers/{id}/store": New option "Compress" to compress DICOM data using gzip * "OrthancPeerStore" jobs now report the transmitted size in their public content * New config option "Worklist.LimitAnswers" for the sample modality worklist plugin * Add missing tag "Retrieve AE Title (0008,0054)" in C-FIND SCP responses * Fix DICOM SCP filters if some query tag has > 256 characters (list of UIDs matching) * "/series/.../ordered-slices" supports spaces in Image Position/Orientation Patient tags * Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS) * Support receiving multipart messages larger than 2GB in the embedded HTTP server- Version 1.7.2 * C-FIND SCP now returns private tags (cf. option "DefaultPrivateCreator") * Packaging of the Orthanc framework as a shared library * New change types in the SDK: JobSubmitted, JobSuccess, JobFailure * Issue #182: Better reporting of errors in plugins reading chunked HTTP body * Fix issue #183 (C-ECHO always fails in Orthanc Explorer, regression from 1.6.1 to 1.7.0)- version 1.7.1 * Fix decoding of DICOM images for plugins (for compatibility with Orthanc Web Viewer 2.6)- new version 1.7.0 * Support of DICOM C-GET SCP (contribution by Varian) * DICOM transcoding over the REST API * Transcoding from compressed to uncompressed transfer syntaxes over DICOM C-STORE SCU (if the remote modality doesn't support compressed syntaxes) * New configuration options related to transcoding: "TranscodeDicomProtocol", "BuiltinDecoderTranscoderOrder", "IngestTranscoding" and "DicomLossyTranscodingQuality" * See NEWS for details- version 1.6.1 sqlitewrapper.patch removed (included in 1.6.1)- sqlitewrapper.patch (boo#1167431)- various security hardenings (boo#1167431)- ConnectivityCheck Plugin enabled in build- version 1.6.0 bugfixes and improvements (see /usr/share/doc/packages/orthanc/NEWS rpmlintrc for some rpmlint warnings- for i586, one test disabled (fail due to rounding issues)- version 1.5.8 * various bugfixes, see NEWS for details- version 1.5.7 * Documentation added- version 1.5.5- version 1.5.4 civetweb.patch removed various bugfixes- civetweb.patch added- version 1.5.3 * New configuration option: "SaveJobs" to specify whether jobs are stored in the database * Don't return tags whose group is below 0x0008 in C-FIND SCP answers * Fix compatibility with DICOMweb plugin (allow multipart answers over HTTP Keep-Alive) * Fix issue #73 (/modalities/{modalityId}/store raises 500 errors instead of 404) * Fix issue #90 (C-Find shall match missing tags to null/empty string) * Fix issue #119 (/patients/.../archive returns a 500 when JobsHistorySize is 0) * Fix issue #128 (Asynchronous C-MOVE: invalid number of remaining sub-operations)- version 1.5.2 temporary fixes for civetweb 1.11 removed- Version 1.5.1 Initial OBS build spec file adapted from Fedora project i01-ch2b 1750678355  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1.12.8-bp156.3.6.1          !!!!!!!!!!!!!!!""""""""""""!!!!####$$$$$$$$%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&''''''''''''''''''''(()))))**)++,,,,,,++++-..-//-0110000002++++++++333333+))(455555555555555555555546777489998::8;;8<<<<<<<8=====>>>8??@???A8BB8CCCCCCC8D8EEEEFFFFFFFFFFF8GGGGGGGGGGGGGGGGG88HH8III8JJ8KK8LL8MMMNNNMMO(PPPPQQQPPRRRRRPPPPPPPPPSTUUUUUUTSVVSWWWWWWWWWWWWWWSXXXXXXXXXXXXXXXSSYYSZZ[[[ZZP\]^^]___`abcdPP(efffgggggggggggggggffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeehhhhhhhheeeeeeeeeiiiiiiiiiiiiiiieeeeeeeejjjjjjjjjjjjjjjjjjkkkkkkkkkkkkjjjjjjjjjjjjeeeeeeeee(llllllllllllorthancAUTHORSCITATION.cffCOPYINGDarwinCompilation.txtINSTALLLinuxCompilation.txtNEWSOrthancFrameworkCOPYINGResourcesCMakeAutoGeneratedCode.cmakeBoostConfiguration.cmakeBoostConfiguration.shBoostConfigurationStatic-1.69.0.cmakeCivetwebConfiguration.cmakeCompiler.cmakeDcmtkConfiguration.cmakeDcmtkConfigurationStatic-3.6.0.cmakeDcmtkConfigurationStatic-3.6.2.cmakeDcmtkConfigurationStatic-3.6.4.cmakeDcmtkConfigurationStatic-3.6.5.cmakeDcmtkConfigurationStatic-3.6.6.cmakeDcmtkConfigurationStatic-3.6.7.cmakeDcmtkConfigurationStatic-3.6.8.cmakeDcmtkConfigurationStatic-3.6.9.cmakeDownloadOrthancFramework.cmakeDownloadPackage.cmakeEmscriptenParameters.cmakeGoogleTestConfiguration.cmakeJsonCppConfiguration.cmakeLibCurlConfiguration.cmakeLibIconvConfiguration.cmakeLibIcuConfiguration.cmakeLibJpegConfiguration.cmakeLibP11Configuration.cmakeLibPngConfiguration.cmakeLuaConfiguration.cmakeMongooseConfiguration.cmakeOpenSslConfiguration.cmakeOpenSslConfigurationStatic-1.1.1.cmakeOpenSslConfigurationStatic-3.0.cmakeOrthancFrameworkConfiguration.cmakeOrthancFrameworkParameters.cmakeProtobufConfiguration.cmakePugixmlConfiguration.cmakeSQLiteConfiguration.cmakeUninstall.cmake.inUuidConfiguration.cmakeVisualStudioPrecompiledHeaders.cmakeWebAssemblyArithmeticTestsCMakeLists.txtRun2.cppapp.jsarith.patchindex.htmlarith.hZlibConfiguration.cmakeCheckOrthancFrameworkSymbols.pyCodeGenerationCheckDcmtkTransferSyntaxes.pyDicomTransferSyntaxes.jsonEncodingTests.hEncodingTests.pyErrorCodes.jsonGenerateErrorCodes.pyGenerateTransferSyntaxes.pyGenerateTransferSyntaxesDcmtk.mustacheGenerateTransferSyntaxesEnumerations.mustacheDcmtkToolsCMakeLists.txtdummy.cppEmbedResources.pyPatchesOpenSSL-ConfigureHeaders.pyOpenSSL-ExtractProvidersOIDs.jsonOpenSSL-ExtractProvidersOIDs.pyboost-1.69.0-linux-standard-base.patchboost-1.85.0-emscripten.patchboost-1.86.0-emscripten.patchcivetweb-1.13.patchcivetweb-1.14.patchcurl-8.12.1.patchcurl-8.9.0.patchdcmtk-3.6.0-dulparse-vulnerability.patchdcmtk-3.6.0-mingw64.patchdcmtk-3.6.0-speed.patchdcmtk-3.6.2-linux-standard-base.patchdcmtk-3.6.2-private.dicdcmtk-3.6.2.patchdcmtk-3.6.4.patchdcmtk-3.6.5.patchdcmtk-3.6.6.patchdcmtk-3.6.7-visual-studio.patchdcmtk-3.6.7.patchdcmtk-3.6.8-visual-studio.patchdcmtk-3.6.8.patchdcmtk-3.6.9-visual-studio.patchdcmtk-3.6.9.patchdcmtk-dcdict_orthanc.ccdcmtk.txte2fsprogs-1.43.8-apple.patche2fsprogs-1.44.5.patchlibp11-0.4.0.patchmongoose-3.1-patch.diffmongoose-3.8-patch.diffopenssl-1.1.1-conf.h.inopenssl-1.1.1k.patchopenssl-3.1.4.patchprotobuf-3.5.1.patchProtocolBuffersCMakeLists.txtNOTES.txtProtobufLibrary.cmakeRetrieveCACertificates.pySamplesMicroServiceCMakeLists.txtREADME.txtSample.cppThirdPartyVisualStudiostdint.hbase64base64.cppbase64.hicuCMakeLists.txtREADME.txtVersion.cmakemd5md5.cmd5.hminizipNOTEScrypt.hioapi.cioapi.hunzip.cunzip.hzip.czip.hpatchNOTES.txtmsys-1.0.dllpatch.exepatch.exe.manifestToolchainsCrossToolchain.cmakeLinuxStandardBaseToolchain.cmakeMinGW-W64-Toolchain32.cmakeMinGW-W64-Toolchain64.cmakeMinGWToolchain.cmakeWebAssembly.txtWindowsResources.pyWindowsResources.rcSharedLibraryCMakeLists.txtDllMain.cppNOTES.txtOrthancFramework.h.inSourcesCacheICachePageProvider.hICacheable.hLeastRecentlyUsedIndex.hMemoryCache.cppMemoryCache.hMemoryObjectCache.cppMemoryObjectCache.hMemoryStringCache.cppMemoryStringCache.hSharedArchive.cppSharedArchive.hChunkedBuffer.cppChunkedBuffer.hCompatibility.hCompressionDeflateBaseCompressor.cppDeflateBaseCompressor.hGzipCompressor.cppGzipCompressor.hHierarchicalZipWriter.cppHierarchicalZipWriter.hIBufferCompressor.cppIBufferCompressor.hZipReader.cppZipReader.hZipWriter.cppZipWriter.hZlibCompressor.cppZlibCompressor.hDicomFormatDicomArray.cppDicomArray.hDicomElement.cppDicomElement.hDicomImageInformation.cppDicomImageInformation.hDicomInstanceHasher.cppDicomInstanceHasher.hDicomIntegerPixelAccessor.cppDicomIntegerPixelAccessor.hDicomMap.cppDicomMap.hDicomPath.cppDicomPath.hDicomStreamReader.cppDicomStreamReader.hDicomTag.cppDicomTag.hDicomValue.cppDicomValue.hStreamBlockReader.cppStreamBlockReader.hWindow.cppWindow.hDicomNetworkingDicomAssociation.cppDicomAssociation.hDicomAssociationParameters.cppDicomAssociationParameters.hDicomControlUserConnection.cppDicomControlUserConnection.hDicomFindAnswers.cppDicomFindAnswers.hDicomServer.cppDicomServer.hDicomStoreUserConnection.cppDicomStoreUserConnection.hIApplicationEntityFilter.hIFindRequestHandler.hIFindRequestHandlerFactory.hIGetRequestHandler.hIGetRequestHandlerFactory.hIMoveRequestHandler.hIMoveRequestHandlerFactory.hIStorageCommitmentRequestHandler.hIStorageCommitmentRequestHandlerFactory.hIStoreRequestHandler.hIStoreRequestHandlerFactory.hIWorklistRequestHandler.hIWorklistRequestHandlerFactory.hInternalsCommandDispatcher.cppCommandDispatcher.hDicomTls.cppDicomTls.hFindScp.cppFindScp.hGetScp.cppGetScp.hMoveScp.cppMoveScp.hStoreScp.cppStoreScp.hNetworkingCompatibility.hRemoteModalityParameters.cppRemoteModalityParameters.hTimeoutDicomConnectionManager.cppTimeoutDicomConnectionManager.hDicomParsingDcmtkTranscoder.cppDcmtkTranscoder.hDicomDirWriter.cppDicomDirWriter.hDicomModification.cppDicomModification.hDicomModification_Anonymization2017c.impl.hDicomModification_Anonymization2021b.impl.hDicomModification_Anonymization2023b.impl.hDicomWebJsonVisitor.cppDicomWebJsonVisitor.hFromDcmtkBridge.cppFromDcmtkBridge.hFromDcmtkBridge_TransferSyntaxes.impl.hIDicomTranscoder.cppIDicomTranscoder.hITagVisitor.hInternalsDicomFrameIndex.cppDicomFrameIndex.hDicomImageDecoder.cppDicomImageDecoder.hMemoryBufferTranscoder.cppMemoryBufferTranscoder.hParsedDicomCache.cppParsedDicomCache.hParsedDicomDir.cppParsedDicomDir.hParsedDicomFile.cppParsedDicomFile.hToDcmtkBridge.cppToDcmtkBridge.hEndianness.hEnumerationDictionary.hEnumerations.cppEnumerations.hEnumerations_TransferSyntaxes.impl.hFileBuffer.cppFileBuffer.hFileStorageFileInfo.cppFileInfo.hFilesystemStorage.cppFilesystemStorage.hIStorageArea.hMemoryStorageArea.cppMemoryStorageArea.hPluginStorageAreaAdapter.cppPluginStorageAreaAdapter.hStorageAccessor.cppStorageAccessor.hStorageCache.cppStorageCache.hHttpClient.cppHttpClient.hHttpServerBufferHttpSender.cppBufferHttpSender.hCStringMatcher.cppCStringMatcher.hFilesystemHttpHandler.cppFilesystemHttpHandler.hFilesystemHttpSender.cppFilesystemHttpSender.hHttpContentNegociation.cppHttpContentNegociation.hHttpFileSender.cppHttpFileSender.hHttpOutput.cppHttpOutput.hHttpServer.cppHttpServer.hHttpStreamTranscoder.cppHttpStreamTranscoder.hHttpToolbox.cppHttpToolbox.hIHttpHandler.cppIHttpHandler.hIHttpOutputStream.hIHttpStreamAnswer.hIIncomingHttpRequestFilter.hIWebDavBucket.cppIWebDavBucket.hMultipartStreamReader.cppMultipartStreamReader.hStringHttpOutput.cppStringHttpOutput.hStringMatcher.cppStringMatcher.hWebDavStorage.cppWebDavStorage.hIDynamicObject.hIMemoryBuffer.hImagesFont.cppFont.hFontRegistry.cppFontRegistry.hIImageWriter.cppIImageWriter.hImage.cppImage.hImageAccessor.cppImageAccessor.hImageBuffer.cppImageBuffer.hImageProcessing.cppImageProcessing.hImageTraits.hJpegErrorManager.cppJpegErrorManager.hJpegReader.cppJpegReader.hJpegWriter.cppJpegWriter.hNumpyWriter.cppNumpyWriter.hPamReader.cppPamReader.hPamWriter.cppPamWriter.hPixelTraits.hPngReader.cppPngReader.hPngWriter.cppPngWriter.hJobsEngineGenericJobUnserializer.cppGenericJobUnserializer.hIJob.hIJobUnserializer.hJobInfo.cppJobInfo.hJobStatus.cppJobStatus.hJobStepResult.cppJobStepResult.hJobsEngine.cppJobsEngine.hJobsRegistry.cppJobsRegistry.hOperationsIJobOperation.hIJobOperationValue.hJobOperationValues.cppJobOperationValues.hLogJobOperation.cppLogJobOperation.hNullOperationValue.cppNullOperationValue.hSequenceOfOperationsJob.cppSequenceOfOperationsJob.hStringOperationValue.cppStringOperationValue.hSetOfCommandsJob.cppSetOfCommandsJob.hSetOfInstancesJob.cppSetOfInstancesJob.hLogging.cppLogging.hLuaLuaContext.cppLuaContext.hLuaFunctionCall.cppLuaFunctionCall.hMallocMemoryBuffer.cppMallocMemoryBuffer.hMetricsRegistry.cppMetricsRegistry.hMultiThreadingIRunnableBySteps.hMutex.hRunnableWorkersPool.cppRunnableWorkersPool.hSemaphore.cppSemaphore.hSharedMessageQueue.cppSharedMessageQueue.hOrthancException.cppOrthancException.hOrthancFramework.cppOrthancFramework.hPkcs11.cppPkcs11.hPrecompiledHeaders.cppPrecompiledHeaders.hRestApiRestApi.cppRestApi.hRestApiCall.cppRestApiCall.hRestApiCallDocumentation.cppRestApiCallDocumentation.hRestApiDeleteCall.hRestApiGetCall.cppRestApiGetCall.hRestApiHierarchy.cppRestApiHierarchy.hRestApiOutput.cppRestApiOutput.hRestApiPath.cppRestApiPath.hRestApiPostCall.hRestApiPutCall.hSQLiteConnection.cppConnection.hFunctionContext.cppFunctionContext.hIScalarFunction.hITransaction.hNonCopyable.hOrthancSQLiteException.hREADME.txtSQLiteTypes.hStatement.cppStatement.hStatementId.cppStatementId.hStatementReference.cppStatementReference.hTransaction.cppTransaction.hSerializationToolbox.cppSerializationToolbox.hSharedLibrary.cppSharedLibrary.hStringMemoryBuffer.cppStringMemoryBuffer.hSystemToolbox.cppSystemToolbox.hTemporaryFile.cppTemporaryFile.hToolbox.cppToolbox.hWebServiceParameters.cppWebServiceParameters.hUnitTestsSourcesCMakeLists.txtDicomMapTests.cppFileStorageTests.cppFrameworkTests.cppFromDcmtkTests.cppGithubCACertificates.hImageProcessingTests.cppImageTests.cppJobsTests.cppJpegLosslessTests.cppLoggingTests.cppLuaTests.cppMemoryCacheTests.cppRestApiTests.cppSQLiteChromiumTests.cppSQLiteTests.cppSharedLibraryUnitTests.cppStreamTests.cppToolboxTests.cppZipTests.cppOrthancServerCMakeLists.txtOrthancExplorerexplorer.cssexplorer.htmlexplorer.jsfile-upload.jsimagesfavicon.icounsupported.pnglibsdate.jsimagesajax-loader.gificons-18-black.pngicons-18-white.pngicons-36-black.pngicons-36-white.pngnotes.txtjqm.page.params.jsjqtree-icons.pngjqtree.cssjquery-file-uploadcssjquery.fileupload-ui.cssstyle.cssimgloading.gifprogressbar.gifjscorsjquery.postmessage-transport.jsjquery.xdr-transport.jsjquery.fileupload-fp.jsjquery.fileupload-ui.jsjquery.fileupload.jsjquery.iframe-transport.jslocale.jsvendorjquery.ui.widget.jsjquery.blockui.jsjquery.min.jsjquery.mobile.min.cssjquery.mobile.min.jsjquery.mobile.simpledialog.min.cssjquery.mobile.simpledialog2.jsslimbox2slimbox2.jscloselabel.gifloading.gifnextlabel.gifprevlabel.gifslimbox2-rtl.cssslimbox2.csstree.jquery.jsorthanc-logo.pngquery-retrieve.jsPluginsEngineIPluginServiceProvider.hOrthancPluginDatabase.cppOrthancPluginDatabase.hOrthancPluginDatabaseV3.cppOrthancPluginDatabaseV3.hOrthancPluginDatabaseV4.cppOrthancPluginDatabaseV4.hOrthancPlugins.cppOrthancPlugins.hPluginMemoryBuffer32.cppPluginMemoryBuffer32.hPluginMemoryBuffer64.cppPluginMemoryBuffer64.hPluginsEnumerations.cppPluginsEnumerations.hPluginsErrorDictionary.cppPluginsErrorDictionary.hPluginsJob.cppPluginsJob.hPluginsManager.cppPluginsManager.hIncludeorthancOrthancCDatabasePlugin.hOrthancCPlugin.hOrthancDatabasePlugin.protoSamplesAdoptDicomInstanceCMakeLists.txtPlugin.cppREADMEAutomatedJpeg2kCompressionCMakeLists.txtPlugin.cppBasicCMakeLists.txtPlugin.cCommonExportedSymbolsPlugins.listOrthancPluginCppWrapper.cppOrthancPluginCppWrapper.hOrthancPluginException.hOrthancPlugins.cmakeOrthancPluginsExports.cmakeVersionScriptPlugins.mapConnectivityChecksCMakeLists.txtJavaScriptLibraries.cmakeOrthancFrameworkDependencies.cppPlugin.cppWebResourcesapp.jsindex.htmlstyle.cssCppSkeletonCMakeLists.txtEmbeddedResourcesapp.jsNOTES.txtPlugin.cppResourcesSyncOrthancFolder.pyCustomImageDecoderCMakeLists.txtPlugin.cppDelayedDeletionCMakeLists.txtLargeDeleteJob.cppLargeDeleteJob.hOrthancFrameworkDependencies.cppPendingDeletionsDatabase.cppPendingDeletionsDatabase.hPlugin.cppHousekeeperPlugin.cppModalityWorklistsCMakeLists.txtPlugin.cppREADMEWorklistsDatabaseGenerate.pywklist1.wlwklist10.wlwklist2.wlwklist3.wlwklist4.wlwklist5.wlwklist6.wlwklist7.wlwklist8.wlwklist9.wlMultitenantDicomCMakeLists.txtDicomFilter.cppDicomFilter.hFindRequestHandler.cppFindRequestHandler.hMoveRequestHandler.cppMoveRequestHandler.hMultitenantDicomServer.cppMultitenantDicomServer.hNOTES.txtOrthancFrameworkDependencies.cppPlugin.cppPluginEnumerations.hPluginToolbox.cppPluginToolbox.hStoreRequestHandler.cppStoreRequestHandler.hREADME.txtSanitizerCMakeLists.txtPlugin.cppServeFoldersCMakeLists.txtPlugin.cppREADMEStorageAreaCMakeLists.txtPlugin.cppStorageCommitmentScpCMakeLists.txtPlugin.cppWebDavFilesystemCMakeLists.txtPlugin.cppWebSkeletonCMakeLists.txtConfiguration.hFrameworkEmbedResources.pyFramework.cmakePlugin.cppNOTES.txtStaticResourcesindex.htmlResourcesConfiguration.jsonDicomConformanceStatement.pyDicomConformanceStatement.txtFontsGenerateFont.pyREADME.txtUbuntuMonoBold-16.jsonGenerateAnonymizationProfile.pyImplementationNotesDatabasesClassHierarchy.txtJobsEngineStates.dotJobsEngineStates.pdfmemory_consumption.txtwindowing.pyOldBuildInstructions.txtOrthanc.doxygenOrthancLogo.pngOrthancLogoDocumentation.pngOrthancPlugin.doxygenPreventProtobufDirectoryLeaks.pyRunCppCheck-2.17.0.shRunCppCheck.shSamplesCppHelpersLoggingILogger.hNullLogger.hOrthancLogger.cppOrthancLogger.hOrthancPluginLogger.cppOrthancPluginLogger.hREADME.mdImportDicomFilesImportDicomFiles.pyOrthancImport.pyLuaAutomatedJpeg2kCompression.luaAutorouting.luaAutoroutingConditional.luaAutoroutingModification.luaCallDcm2Xml.luaCallImageJ.luaCallWebService.jsCallWebService.luaClassifyUsingAet.luaIncomingFindRequestFilter.luaModifyInstanceWithSequence.luaOnStableStudy.luaParseDoseReport.luaWriteToDisk.luaPythonAnonymizeAllPatients.pyArchiveAllPatients.pyArchiveStudiesInTimeRange.pyAutoClassify.pyChangesLoop.pyContinuousPatientAnonymization.pyDeleteAllStudies.pyDicomizeImage.pyDownloadAnonymized.pyEncapsulateJPEG.pyHighPerformanceAutoRouting.pyManualModification.pyMicroCTDicomization.pyReplicate.pyRestToolbox.pyREADME.txtToolsCMakeLists.txtRecoverCompressedFile.cppWebApplicationsDrawingDicomizerDrawingDicomizer.jsdrawing.jsindex.htmlorthanc.jsNodeToolbox.jsREADME.txtTestingIssue32CppCMakeLists.txtmain.cppJavaREADME.txtpom.xmlsrctestjavaioosimisAppTest.javaToolbox.luaVersionScriptOrthanc.mapSourcesDatabaseBaseCompatibilityTransaction.cppBaseCompatibilityTransaction.hCompatibilityDatabaseLookup.cppDatabaseLookup.hGenericFind.cppGenericFind.hICreateInstance.cppICreateInstance.hIGetChildrenMetadata.cppIGetChildrenMetadata.hILookupResourceAndParent.cppILookupResourceAndParent.hILookupResources.cppILookupResources.hISetResourcesContent.hSetOfResources.cppSetOfResources.hFindRequest.cppFindRequest.hFindResponse.cppFindResponse.hIDatabaseListener.hIDatabaseWrapper.hInstallDeletedFiles.sqlInstallKeyValueStoresAndQueues.sqlInstallLabelsTable.sqlInstallRevisionAndCustomData.sqlInstallTrackAttachmentsSize.sqlMainDicomTagsRegistry.cppMainDicomTagsRegistry.hOrthancIdentifiers.cppOrthancIdentifiers.hPrepareDatabase.sqlResourcesContent.cppResourcesContent.hSQLiteDatabaseWrapper.cppSQLiteDatabaseWrapper.hStatelessDatabaseOperations.cppStatelessDatabaseOperations.hUpgrade3To4.sqlUpgrade4To5.sqlVoidDatabaseListener.cppVoidDatabaseListener.hDicomInstanceOrigin.cppDicomInstanceOrigin.hDicomInstanceToStore.cppDicomInstanceToStore.hEmbeddedResourceHttpHandler.cppEmbeddedResourceHttpHandler.hExportedResource.cppExportedResource.hIDicomImageDecoder.hIServerListener.hJobEvent.hLuaScripting.cppLuaScripting.hOrthancConfiguration.cppOrthancConfiguration.hOrthancFindRequestHandler.cppOrthancFindRequestHandler.hOrthancGetRequestHandler.cppOrthancGetRequestHandler.hOrthancHttpHandler.cppOrthancHttpHandler.hOrthancInitialization.cppOrthancInitialization.hOrthancMoveRequestHandler.cppOrthancMoveRequestHandler.hOrthancRestApiOrthancRestAnonymizeModify.cppOrthancRestApi.cppOrthancRestApi.hOrthancRestArchive.cppOrthancRestChanges.cppOrthancRestModalities.cppOrthancRestResources.cppOrthancRestSystem.cppOrthancWebDav.cppOrthancWebDav.hPrecompiledHeadersServer.cppPrecompiledHeadersServer.hQueryRetrieveHandler.cppQueryRetrieveHandler.hResourceFinder.cppResourceFinder.hSearchDatabaseDicomTagConstraint.cppDatabaseDicomTagConstraint.hDatabaseDicomTagConstraints.cppDatabaseDicomTagConstraints.hDatabaseLookup.cppDatabaseLookup.hDatabaseMetadataConstraint.cppDatabaseMetadataConstraint.hDicomTagConstraint.cppDicomTagConstraint.hHierarchicalMatcher.cppHierarchicalMatcher.hIDatabaseConstraint.hISqlLookupFormatter.cppISqlLookupFormatter.hServerContext.cppServerContext.hServerEnumerations.cppServerEnumerations.hServerIndex.cppServerIndex.hServerIndexChange.hServerJobsArchiveJob.cppArchiveJob.hCleaningInstancesJob.cppCleaningInstancesJob.hDicomGetScuJob.cppDicomGetScuJob.hDicomModalityStoreJob.cppDicomModalityStoreJob.hDicomMoveScuJob.cppDicomMoveScuJob.hDicomRetrieveScuBaseJob.cppDicomRetrieveScuBaseJob.hIStorageCommitmentFactory.hLuaJobManager.cppLuaJobManager.hMergeStudyJob.cppMergeStudyJob.hOperationsDeleteResourceOperation.cppDeleteResourceOperation.hDicomInstanceOperationValue.cppDicomInstanceOperationValue.hModifyInstanceOperation.cppModifyInstanceOperation.hStorePeerOperation.cppStorePeerOperation.hStoreScuOperation.cppStoreScuOperation.hSystemCallOperation.cppSystemCallOperation.hOrthancJobUnserializer.cppOrthancJobUnserializer.hOrthancPeerStoreJob.cppOrthancPeerStoreJob.hResourceModificationJob.cppResourceModificationJob.hSplitStudyJob.cppSplitStudyJob.hStorageCommitmentScpJob.cppStorageCommitmentScpJob.hThreadedSetOfInstancesJob.cppThreadedSetOfInstancesJob.hServerToolbox.cppServerToolbox.hSimpleInstanceOrdering.cppSimpleInstanceOrdering.hSliceOrdering.cppSliceOrdering.hStorageCommitmentReports.cppStorageCommitmentReports.hmain.cppUnitTestsSourcesDatabaseLookupTests.cppLuaServerTests.cppPluginsTests.cppPrecompiledHeadersUnitTests.cppPrecompiledHeadersUnitTests.hServerConfigTests.cppServerIndexTests.cppServerJobsTests.cppSizeOfTests.cppSizeOfTests.impl.hUnitTestsMain.cppVersionsTests.cppREADMETODO/usr/src//usr/src/orthanc//usr/src/orthanc/OrthancFramework//usr/src/orthanc/OrthancFramework/Resources//usr/src/orthanc/OrthancFramework/Resources/CMake//usr/src/orthanc/OrthancFramework/Resources/CMake/WebAssembly//usr/src/orthanc/OrthancFramework/Resources/CMake/WebAssembly/ArithmeticTests//usr/src/orthanc/OrthancFramework/Resources/CodeGeneration//usr/src/orthanc/OrthancFramework/Resources/DcmtkTools//usr/src/orthanc/OrthancFramework/Resources/Patches//usr/src/orthanc/OrthancFramework/Resources/ProtocolBuffers//usr/src/orthanc/OrthancFramework/Resources/Samples//usr/src/orthanc/OrthancFramework/Resources/Samples/MicroService//usr/src/orthanc/OrthancFramework/Resources/ThirdParty//usr/src/orthanc/OrthancFramework/Resources/ThirdParty/VisualStudio//usr/src/orthanc/OrthancFramework/Resources/ThirdParty/base64//usr/src/orthanc/OrthancFramework/Resources/ThirdParty/icu//usr/src/orthanc/OrthancFramework/Resources/ThirdParty/md5//usr/src/orthanc/OrthancFramework/Resources/ThirdParty/minizip//usr/src/orthanc/OrthancFramework/Resources/ThirdParty/patch//usr/src/orthanc/OrthancFramework/Resources/Toolchains//usr/src/orthanc/OrthancFramework/SharedLibrary//usr/src/orthanc/OrthancFramework/Sources//usr/src/orthanc/OrthancFramework/Sources/Cache//usr/src/orthanc/OrthancFramework/Sources/Compression//usr/src/orthanc/OrthancFramework/Sources/DicomFormat//usr/src/orthanc/OrthancFramework/Sources/DicomNetworking//usr/src/orthanc/OrthancFramework/Sources/DicomNetworking/Internals//usr/src/orthanc/OrthancFramework/Sources/DicomParsing//usr/src/orthanc/OrthancFramework/Sources/DicomParsing/Internals//usr/src/orthanc/OrthancFramework/Sources/FileStorage//usr/src/orthanc/OrthancFramework/Sources/HttpServer//usr/src/orthanc/OrthancFramework/Sources/Images//usr/src/orthanc/OrthancFramework/Sources/JobsEngine//usr/src/orthanc/OrthancFramework/Sources/JobsEngine/Operations//usr/src/orthanc/OrthancFramework/Sources/Lua//usr/src/orthanc/OrthancFramework/Sources/MultiThreading//usr/src/orthanc/OrthancFramework/Sources/RestApi//usr/src/orthanc/OrthancFramework/Sources/SQLite//usr/src/orthanc/OrthancFramework/UnitTestsSources//usr/src/orthanc/OrthancServer//usr/src/orthanc/OrthancServer/OrthancExplorer//usr/src/orthanc/OrthancServer/OrthancExplorer/images//usr/src/orthanc/OrthancServer/OrthancExplorer/libs//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/images//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/jquery-file-upload//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/jquery-file-upload/css//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/jquery-file-upload/img//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/jquery-file-upload/js//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/jquery-file-upload/js/cors//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/jquery-file-upload/js/vendor//usr/src/orthanc/OrthancServer/OrthancExplorer/libs/slimbox2//usr/src/orthanc/OrthancServer/Plugins//usr/src/orthanc/OrthancServer/Plugins/Engine//usr/src/orthanc/OrthancServer/Plugins/Include//usr/src/orthanc/OrthancServer/Plugins/Include/orthanc//usr/src/orthanc/OrthancServer/Plugins/Samples//usr/src/orthanc/OrthancServer/Plugins/Samples/AdoptDicomInstance//usr/src/orthanc/OrthancServer/Plugins/Samples/AutomatedJpeg2kCompression//usr/src/orthanc/OrthancServer/Plugins/Samples/Basic//usr/src/orthanc/OrthancServer/Plugins/Samples/Common//usr/src/orthanc/OrthancServer/Plugins/Samples/ConnectivityChecks//usr/src/orthanc/OrthancServer/Plugins/Samples/ConnectivityChecks/WebResources//usr/src/orthanc/OrthancServer/Plugins/Samples/CppSkeleton//usr/src/orthanc/OrthancServer/Plugins/Samples/CppSkeleton/EmbeddedResources//usr/src/orthanc/OrthancServer/Plugins/Samples/CppSkeleton/Resources//usr/src/orthanc/OrthancServer/Plugins/Samples/CustomImageDecoder//usr/src/orthanc/OrthancServer/Plugins/Samples/DelayedDeletion//usr/src/orthanc/OrthancServer/Plugins/Samples/Housekeeper//usr/src/orthanc/OrthancServer/Plugins/Samples/ModalityWorklists//usr/src/orthanc/OrthancServer/Plugins/Samples/ModalityWorklists/WorklistsDatabase//usr/src/orthanc/OrthancServer/Plugins/Samples/MultitenantDicom//usr/src/orthanc/OrthancServer/Plugins/Samples/Sanitizer//usr/src/orthanc/OrthancServer/Plugins/Samples/ServeFolders//usr/src/orthanc/OrthancServer/Plugins/Samples/StorageArea//usr/src/orthanc/OrthancServer/Plugins/Samples/StorageCommitmentScp//usr/src/orthanc/OrthancServer/Plugins/Samples/WebDavFilesystem//usr/src/orthanc/OrthancServer/Plugins/Samples/WebSkeleton//usr/src/orthanc/OrthancServer/Plugins/Samples/WebSkeleton/Framework//usr/src/orthanc/OrthancServer/Plugins/Samples/WebSkeleton/StaticResources//usr/src/orthanc/OrthancServer/Resources//usr/src/orthanc/OrthancServer/Resources/Fonts//usr/src/orthanc/OrthancServer/Resources/ImplementationNotes//usr/src/orthanc/OrthancServer/Resources/Samples//usr/src/orthanc/OrthancServer/Resources/Samples/CppHelpers//usr/src/orthanc/OrthancServer/Resources/Samples/CppHelpers/Logging//usr/src/orthanc/OrthancServer/Resources/Samples/ImportDicomFiles//usr/src/orthanc/OrthancServer/Resources/Samples/Lua//usr/src/orthanc/OrthancServer/Resources/Samples/Python//usr/src/orthanc/OrthancServer/Resources/Samples/Tools//usr/src/orthanc/OrthancServer/Resources/Samples/WebApplications//usr/src/orthanc/OrthancServer/Resources/Samples/WebApplications/DrawingDicomizer//usr/src/orthanc/OrthancServer/Resources/Testing//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Cpp//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Java//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Java/src//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Java/src/test//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Java/src/test/java//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Java/src/test/java/io//usr/src/orthanc/OrthancServer/Resources/Testing/Issue32/Java/src/test/java/io/osimis//usr/src/orthanc/OrthancServer/Sources//usr/src/orthanc/OrthancServer/Sources/Database//usr/src/orthanc/OrthancServer/Sources/Database/Compatibility//usr/src/orthanc/OrthancServer/Sources/OrthancRestApi//usr/src/orthanc/OrthancServer/Sources/Search//usr/src/orthanc/OrthancServer/Sources/ServerJobs//usr/src/orthanc/OrthancServer/Sources/ServerJobs/Operations//usr/src/orthanc/OrthancServer/UnitTestsSources/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protectionobs://build.opensuse.org/openSUSE:Maintenance:18973/openSUSE_Backports_SLE-15-SP6_Update/7a54434d62396ec063f4682079ee20e6-orthanc.openSUSE_Backports_SLE-15-SP6_Updatedrpmxz5x86_64-suse-linux                       !!"                #$ %&        'directoryASCII textUTF-8 Unicode textBourne-Again shell script, ASCII text executableAlgol 68 source, ASCII textC source, ASCII textunified diff output, ASCII textHTML document, ASCII textPython script, ASCII text executablePython script, UTF-8 Unicode text executableC++ source, ASCII textunified diff output, ASCII text, with CRLF, LF line terminatorsC source, ISO-8859 textXML 1.0 document, ASCII textASCII text, with very long linesC++ source, UTF-8 Unicode textC++ source, UTF-8 Unicode (with BOM) textC++ source, ASCII text, with very long linesC source, UTF-8 Unicode text, with very long linesC source, ASCII text, with very long linesassembler source, ASCII textPNG image data, 150 x 83, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 16 x 11PNG image data, 776 x 18, 8-bit gray+alpha, non-interlacedPNG image data, 1548 x 36, 8-bit gray+alpha, non-interlacedPNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 128 x 128GIF image data, version 89a, 48 x 22UTF-8 Unicode (with BOM) textHTML document, UTF-8 Unicode text, with very long linesGIF image data, version 87a, 66 x 22GIF image data, version 89a, 31 x 31GIF image data, version 89a, 63 x 32PNG image data, 644 x 156, 8-bit/color RGBA, non-interlacedPNG image data, 620 x 197, 8-bit/color RGBA, non-interlacedPNG image data, 173 x 55, 8-bit/color RGBA, non-interlacedASCII text, with CRLF line terminatorsJava source, ASCII textC source, UTF-8 Unicode textRRRq<* zUyutf-81e8ed0d4e221123bcdd705c339fdccb48da344c8fdb3278a93cbdde7cf7d033b? 7zXZ !t/]s]"k%%{VBߒK*dscLڮQb5,Na3H<~V6TQIn c%@YQq.>[rD*}+ɩм0x|Eo<Ϟm.%u:оaP;# ms@e_&S\Q^Oh5!XFn>C3mmpɟL:VDQI7OWUs Wlq19ܴ,C4;{e8yQ5X&Zhc'mt)Y!b#}VzO;0RKcGv:{P ۛfOt}-^ƌ -׊U')c"i|bm(kҙb83M?K8mf> J'FqB>X ^ͲQރA,; Qlmi=m0e(oL\D6.>3$lxYߙwhc&&)1%1%/4!F@ȊSGKtOA=%H0 ;βwv6x ˞М \8a2Ya85ye. 24okcؓƸM4,W=)n,4?A|LMzE]=YBJBLM/Aa6QS0fĔS/[ \`t<be^?ŔU`$br넠f\ř:1(yB_ա7Fh&l ["Ɇ߭'ema ']B8㌓9&O RE a^8  SPRjd6Bt\ܻ=+K$]y @3(GΣ>B]l}A-= †A!^w 4@,6];  v?CEl-.FRKt;譈/4>u-2Js"X<>6WaZx\}pg>Q\S&-[?iL=ԭ6NF]N-)#~ -\by%2@b`^߼[ \ |hÛBmp5Epv$mG3ylxP"U[uy01 st較>%b9Ա=6 ͭbAB65QA3}IfG.gjHs _V/3 P TnW?1f p)7:꣐6e6t6=勺gby1pp=0<ɓ6LӍҙ7W2!RFOuKf0 <g\9'J/u)N.F7Tc9UWM~ ڃ*z]م+QL[IE+ 02:s7#6gJA/_\%ZwQD{Yս n1:_0OH,ԅ"}Lx!E;&pnK2ur\T#~lcmQ}_t-}fu6ǫigY~BF-ш .یBB[Z>̤TOl]")_-Ec+& {6R=? ,XCtȏgD3<JLVL b$ `괏n@m(t-x+}q6T`T0Tt=%lOLa!m#ٴ;L5`1iF&%O\.Cn CX8XJ!&|<v OuZ*Ī2o~HO)}3+ ڇ}^Cu `eRwQ&ǍGe׮&qBĢ6&ͥŗK辀^1BR ēV4ݿh/37:|>%>ޜŗsA p{yEnGR@ϵH {SsA2y-^Ho29's.?;f?8GDJp0>F8ޯzF"^@FρཋtIrěR<ﵵ42~v1Vy>[o $y9Sp|”Z} 8~+*[[uht+JaêLi!=1u09#2֌nvʹl3,=0OMX^VnF8d'101__45ӘEi}p_VSǁEK.@ږ :)6)#2NK5ˢd5Xf$?Ȩ*(j'YPtA"8+wणȀ7IİO`hPAs'&~=Lvؤf2Km߰]$@?ź`,=m"$un 9oUFb |7JR:mUl+}:z%q7~t\)pCi'$0ޤQf|_y@A6XMmxJ'4QW6gdi|"0u5xֿ;6NQNNG?KHr#2Yݥ| k|(BkH-uD2XΘPf:Rۆxoj¸LXCj7=i;\j{tt)9VäԜ1 7jA}7[Todq ^O̳-^i8\~Mϴ5HE+1eNŝkļALޠ_Lo(c*Ap]R3Rc>6؄]M:o3c콡>{G@v$HƧ߉ %!è*o|OڟzGw8-|! vډ SRKKыT&1i\a"3.r}}ghJZnQ L|VٝczasUql@acu&He w$)G:ħ5Y8ݓ:e7fFsNGj`}e8QWK4oq4{$ǽk?ݝt[gA׮~ŏ h+{б=/Vמ8# Yg<@(Q=m%"Ћn"6庪+LN+”⸰_xO^`=/4,#{?tB\.o굻._K^d TA;x&I̾< "ylcZ":UAT9mhRryJ3fV )d w>G7etk؞"1e5Tdž8bZ5kSS驌_h^|wsŜu_ 3z'b3&.S8\h'X_nW)7f;w;-JOjH+1걁#.xE;3kBS Y Q>qG!K>t$0)VZ¥cECgDޛK979ߖ/H՘Pza*qqx}bKޱCABF)uὲ%7Ҹ-?8VT< _SҴ=,rx`n{j 򚵨 <ڼؕX@Pּ\. x,rc>v}b5ž3AKG.Gg1m׉OCjxg.-DNZTN~v(ӥW^Å"Xb/aɔε$Oٔ|LKԞ>Ot!Zm^IwQa;-N(#D&#+|+jo{ ÿ_-.r/Q)tO3:=]MF=2^c ݊RxkiPg L8 j*\iaF]}gnG|r>9,ľ`YS2*;ff>3sŅ.-WfVpٽ"a9_68#/ |ZkQ':75iBF!Xs!CU Hd*%;t4 甌0_"d>_Ҍu_]+Z4a|Ի >h|xP,6'BTH<ڢWh(`|Pe0<, =ޑF ý̭*[pծ2*CZ8`/go u6"a i+KgQ*",oPx>1ϡ`:2  "OϰXl'h>az.$ `)F6H0_{YFTW&w.z|}Dqe1'xs ot0zYY~HWq89RSsv~'i7&z$θm1i^{i%m᮷Kα1DjRj_E2&T˜ogԽf)ye9NaE7PW|U2\$uuA_OBF:4p&&S)h ,F"0Qq~KDl ]o B:uQ&\!=S`uPֳ/G2M0d։e]QZIZBs f cx|Ewlc% 6w~;=fqa6-?,AlJn?ZdH1Bd3t4 J3KJtOwi|I:(,맃WMZ)^NGjQ0w.G2KrFQ@4ii. t T5-*][[,rcvC[gRMn.+Gѓ[ud_dR֒~+ݾpAFɆIm1bD M{ʕ+2Iv4BjeDm*s^!8P3Pm+ʎ~vIP"VC{Ay`Н EَBL ӣQ5g.1hQwpe5_QW:-<vLdȏ/ݰdu\/bYVccַ_qMQ4F+MrJblA2gMl%`5%+Oɐ%7Ȱ獕ǹ@gtx=c^Zuct˦lOƛf'zA/~C+̾`(F Rpv ѡMo{mSs5}d3w9X_UDFGD?m>6BB?vs.daaI1*-~l2#gTJ#$E\Sqll U `rak4^x"Q˲ j)#vӒF_7=h_`l-KH4L\9faU U4Ɗdui#[NO4VUG{Lr.XCiBJuL-r볣]|l{ݨHth'?_fGRMψx'B6AY =s%|Hx0LPQdA\/Nى3Cv7,4X!=D4gnX3?9Y 9$ƴzUBJ8!d)vM&WB@4zfe=*&&E MMgI6Qx^iM*ػWlh UR ]Y$1 d^KKPb!Z Μ`C&vs` >x0ApƳ] v}dsi9MB~O m6HEB?3'OSۈcVHާ` &c,BG9.j@v[&?|J$ NJU:NDnTdYEz7t*o_Ri ŷpf5"mQE9_+l)ַ&*tۗ~?G#2xī(x':Y z`#TJ-j9 v XѰ$B˝by;6--VcQ_TC}{Sۺ)OlP%Y\#ݞY'ZO7sBt7p+@so::#D|+%)K!x</;mBLS $Uwp7W#C!;Y=yq+.iV_a`7K\~(aVUWf}uqkIV瘍Z: b&ΦD('uJ @Ë3v&΅gveXeP3ߘDEH'&O@k%y Zj@v#F~-˞FXAǍSɾX36vpO2虗PŒ6g͹c3rb#c˭[=6SD7yr{lHβ=pF+N3btoH<,bS^JPv# Ju+monAhe_%g'BD<"G:J$ /g ?AbB('BvjxHG#t|XFJ^Vx"hZ(DL'`2-ؗeܭeɌ%,) 5B6!@sG_Y3nuf&^% tmԈ5DZ~7BΟI$\hK*9+bPH(1>G¾< ډ8 &"w5a9i]+a\=?¥uM. <=fP,*qּ`GCΥ+MV&yl,7>rd'1ɑS}'A Jdѹe!qqʬvGVKn M0ah R6QP,ZֱcQ?l bV/Yf!xkQ 똫g=uB77m1_K T-iȾ  N9!ޜ1046Dԇ]1S0eCLj0UjW*1|U7x:(a\yQ,);GS(td*K5tmC*ɷ1|9]vB;uʰG2Ӵo ð_jndxYڰ<}%*a뒭ʭī$8?O>đd )x1A{645o,ٟ*Ή`k`NdxNpᷔqG[L3]OoD(3U.ŸQ%U+f]qγNԁ4| 13EjHAng͛r QtF!ُ/rH*;ޔ"lܡ%@|NcӶ#?C7$" ۦE>Ȟ%s Ⱦ9>cbT#-k6e!ǘ2W&ż#Mr bA54Mª!ċ!HzBB ֫ӟ7!zE+pjP#&8P;::'~:<6"*YJy:a^KEker W, &Xm@Np@k4/d0CqRR@LȎxN;tOiZ>'L&M# ~%SG/ft%tXΓ޺DO4Sd3Z$;IS$!$: PfIgIF9,8IRILK`eho~LpP?oxLQjVjm i,@e4 1Ӳ)Cמ+^%=|#> S15|ϋ㲣I?)e$ꆈeWX\6[TE\mdLa=iW.l#2̱ƚ"RB /VSї{@JwevsJʘRP8=Ծ STxٓb g?a(2M +΍B 5 @$/H~ŁKhه%—W|8SVd~=+d.9%Rt:%R&^PYi#}ȱ]ohouخ=z'P0γ{]풶\:o>t`f&Hi"!ar,KF]IﯡujI.Xu3 g97lz}Z]zŲ@X-6OJ9'o"գyȃ>@Z[ xedD'?m>r7 uIY%= s}M՞“γa b(%!B!jfSi wysːzrSVЛ1Ĉ!,-G% z O~(/ts%^4hrzG}e?FJ)>I'6/8 Iˠu'y/:(u2?A3qmMgtJ;8^% ɻsP>]zDJi lq ĚIlmKN6CK2j` RXׇ |FbrS;f9u{H;9WC& 7N<\!Ϻ ԜFY29v֩1´`pk ڍz-D0/qC,VC\N?oEbxsbtz,vx*\(2{[teZ se]9c\?}.?bZdn05aZ;JzgM!52z;EǞY@'tgO_܏N'ҔBUeMBvč$L>ΜZM7#\4R,b5|Sh2@P/FdipӀb@ʻ'kv=xCCqPO$:뷩{S(LT .]}},"xޖI0iv)fǍ#/EUӷxLEU^v  5cTRGscz#_~U8x)`+"9Kõ-0j IX% rbe/wkF wkJ҆4*/[S&\U˛t$܋VN2%v~nq o~z^ [w3HSth-8/MZE;c+`P#&n%f[GI܍ x^S lC~8 BV~ށF^TWWIL]M+XDl#Y/4&ջ,cXsϏ2s!&á2%Q_TvFx#G>> iO)Up\%f~Z˓ΘhyP++pUW؜'h2ؚIv6/T~Pܧ[HHIS@nPf+ؤWxC ɝ|Jh5}u5w SǾgwRrs<퓵s\P,86Ѩaaѝ_+Y]h3JM@ ]Of_$*%fQϟy%iq<{Qzb#z ͕3biUaRQiuM'Ւ|cOe-N/朮AW̧ Ʋ%K0+K/@݈LK2w,5IIpi14 DVxt?Y kzoPP:7%/2S,i'M65,HCW›Ea$s fKiS B N" zR.Wr<$KrfEWD kvI,t S\]s"LU˳h/}/: D$QBؤ4_H\pp ~/ñ2ytTy]RA*}9 6IwTߤ_nq !%EܪiH&^-S\F?#4Yݛs8>4{lDsw03F1;ŞրހN?vg Nj\l R?ⓦ/)bAIJ(8L"XS ]9r ^90y#5a٫r<Ȝ~ En(#lbY U}aB%a/4s's9OwQ~&\f9C7` ʜ{=5+؜- Lfw_= Xl+2n{zơE'>:6[ U1ߙ!^&,^KC:%Up5s1aTaSkޔP#SV4I^ jG+Qꛭ$,SDG5擉Tw=QBdj®pmuCF"(UaPVA jF/9PB$V?+C(ZQzģTf/ ],~s\g/]VPX"@iٶwl  =e^$aM>Yy1$ luc']:Ã`/MpPm) hkKP} :4D̀E8[J%]لiJTYR;-]jM>b9X$$:#V~ wk8BxvF9NEO ֻjU}ٝl߼ۨJ)re=9&|-jB膐M`߄ J̈́ew~j$43rij7Ϫ>Je69ƶTb@$t`3ṗlq׏l8v~:MYbUh963uKGHQfvBBt@5Z0J~\="U%5ċ1>qP VEMuO+yhI^] ;II 7RIÓ-iWhx faV\yf9tlr Xן+l`$)$^udz %v :Yu2~"&mԲ-aK^txD̅'٢_n'/6$Xh5Z~{٥c`xkvN&߮ىśLL^񂘡+p :2*J c|VxzȞTN ° IS7O:В%QJqrnp t &,}8~ovg_t쁚)<["0mOv7582l/È"5N=@=rB.9׼}\vWrt]̣ a,q^OnV#m$ "hۆyiKōɎ87R7"d 1PuHc.G3{^~"Em`yYuyU se@06a)3nr^.UŖOuX'rb cX&BPl/A=I=GmBʊ{͠wp5UAB!U(7 :>N..L͂G$"f(!=#"%Y ;g[TSreކ+$wl>r.8au쑚zAh.jz3]hK&nD|ѪiVbL.f7rWva!] 1D)<y@uѭnJ.pRDŃ'PxkSU7b:a+)ɱ[r2 WFkA -w`I'IS'=t"e|e/$ ,eK]-`G?),E7,g`;,{,1ku6j҆}DO (iS#fdfH2M˺. Y~.rbkU&ulVZێCn|2]U;BU@82ws:/b,kOk̶̤#|utL8X;YBͬF NC0C0>(ir޲L+=E;SGEa_wkp$̅o݄BդLuz׈^8pߺL5Adaktwݐx%$,U6OfXN̞di,^Р `^R}+9МHl䠙K0Ց|G1lDBܹK Qp:ԏ;B_cjguŃjjғޔ |g:TD$zlJ\R+oczG2e'h! ؇d4/ouad 4=P$#1M1VsN mO@Q$|@WΑ/ת\5!r@|,oOĶ0TKTTK0|J;:rU؊,vW ޞw=4|D-tOdɱZx>qyAGE{ 8 [`v+j,6MȝT{z|&.:BvGℓp j󃯡eb+L]&341y0Q9YX$p z6 *cG8J2D5=wB 4cӶGl=K/soSk߿}s,j͞H8N"VEs.CXUrÿ-8trs1d.(0@oȵt+'5? V2qP6!PDi n3$̵ Ry"w}1!~3/4 .oB@ݎH9~+ĪGz fzsl (\V'Su߲r7\lB߄ЏIPD0spG2ܸ!/Xa3,4pVÝzOWKdQk 8=- V̰-6F}=!  JdD%Oce2Dz̝pf#ō%p`$܌9Ot4gwz k4G +7S4{Ф]Sk4XތaFZ"IGUe Ef' -Z %W])9g~~]wx3c^"xbMd֚])m3.'Ƃ\MS0q@E;{J/=ZDQYd.tXad5kWaM 6`VO] @)FUTx2q> S} ~ @o Eqzd⿥%UC"V`i|:)C.gk.fjP8mSݩST9"tulEEL !vDˏNOxY-HXANSğ%Uh&|.Af//NuGm2 U7hI_Tu.otKIϓjB C޶9S=a9ie4ﯲfwf 0ƻK;ݘz4liQgB{gգg7"O6RnBP[(9Pv50 )P+{Du !]LqV-}b!l06&deÉq^Y 8lLoX/Rp.*pNB=ٓNLF82~LAɋt.V:AoBC]~#ҲYJ*A])hE T&I0"7$B "H}fΊ3cW?(4ZYp7ʎ;SD׌^]$y&Wgp!_޴y@Ϸ=j9ͺ/Z> {L)K29SD~OCj3l,H؋jk|h,n' 9C>4Tk:tPY)1!$^Ay<[4aUhHۥSyCKHZk 1< Tg$-I'=~V6}W&_C <[<3I'x6ǔC9>JTYuԋgBʮY֗ 0$袔d=1cVGi@J] t'Wu.xOIԕޟփ kb6DʯlHZۆwxᙯ_.=o7˹yHC횎En,h7p!8JRO51~gU;Q.9jN =0e-<{I [þYe9!}.f+ 9X;51T P@,D2S;zEĨ0!?)2Gǘm8}ɧٰ6&.[+O;>5q~puhFx5`h1By k|\y/X &!WOK0F聄:  0Až$!ŰTNJn#=ڙbJTcmc{Xr6]΃T>lN(m y Wfex/j .AEA/kXH,(ؗl !r^whGh'FGodŢ@ju vM\~4ЍY;;5b7mF۰)T0UadLB67Jt`OA:6!Vm}0$/`Hpfq&,|jskQ5%SOJg<. D v0V=#>9[zAҭփ"7R #WwvK4B#;Cf$KA"W:TƼzDW~gB}Kd1^V%^TkF('|˛G V[Ǚyh3+/K( 6idfVU>4@a 7*~w0?~ ڑ* pχ)\Z᱋b. &M%]lUJF],/rdMiRDz3(+ˤ-4 we/ 5T8pl- Up5.{{ǠLG1Ѧpg\|qi|P!2 0S[Q%9Vg +;wZف DpS38O$j-Y%;ǁ5Y_tȔ-6vf^DlL)Q_4d:4#_ GSכ֤#1UK3Fi)x*x0{ΡxϑC~h1a l2d/2eIsf}f3'mZ{Qg+UQ+8nbxWqpFq׊0xDAO\ǡJ;*>r19^~s9Zڑ}U|mЭΉhwܿbŏ E)EA-^y&brǯXP%{0{ H[y*z5j)HxzNFޖ_\z3|$QH'0* k o_K”0(($ j0.A ݿO7 U&3%Q^蹎gulDۣ"6@4\T~޿8YGXtBX9U*WnTh^h$bQ ~^z-*nLZjT HPKz/*g8XTްd Jus.0M rMtl=yf%mKQ|k})}`߯L P-#mx. E"ᓡ#|! HGA elg|JPQn"AẕR8B=!n3]E?tc/bTQ`决*2qfx_U.R- O۟IA%DMzçؾV9ˉD⸋ K\43b˲q̘Y*t71>ʟȤ3ɪxO4j䃆p k#]Dمfؽq5S@^# ݼI]Gi^wx% zljy~9:cBJ,vUL(b?Ze<> 1WwzGBKԿHx ʝ%Mf8F3SV3 #'t#=A-&rzVC_=u0Ds= z*f;)PD$-5Jy^QO[~-k< 7ςg8wCr$Ka;SЎHՃn(Ou%J`-חP(ڍu^C@rIBHT{7mԉMh}61l ,1.f#y@*`}:'oJZ7!~NüzӪ_so!wm40wq01;:i^Jt&I1€Yg{ \d×M=e+Ss aѳGܿßnlmU:sE-Se䅾0֣xNpg&#f؝gI9_߈[\J*v ٧Ivێ66Tkؠ=k:{D`Ls]̟ }"[.>+.D9[GlgPeu -A 6?s*S0b.9aaB/ez3ȘN~5)5҂卧x%c^~ sCG0 Z.P?h B0ւ! ӥ|%ܬǀ<|eZZ}b2l|Ղ܃/D`Iqrse=d D䓀`-z`bCs~kͯ@zC,75uQ7 FPQcb N|LϋB24 WJe*k6mL4ǯ/36_&N`Ϲ욗9BWOP{7Կ4O}bdZ|fC'Uȸ*kؾ%u#Vɠ|C?/tYQÎ xj=_> mKחqh <,Vh2yyI xل5g_]}؜a+SEvrw#o\ǖԱO~@>'Z ):KKl֢be#T c=\fĨۈ\<9o,V9h9bZ[O ^%k$b ,Ck*q/O\e^EQ9yv'9X[Bvz3y"skG'$j)~"ܷ3& xᢕ1,:4 8赹0r{w{X# XF݂Bqy[0}.D>{y5\YcUTt I?Md4}8XE:NEsw,XMrq ]&o[g"8!g@({fqmWXuP5'/V}LKq,\׃/B] AdBudU.r{>+H~}QwY*J9qdӾ՜a.9_OeR4)*xNO6u;=*;]N-m[+lUy_ y2ٮ}vB̘Ր?x֣߻&W.,SNvLr( !$Wߥ1h5ΟGH3:w 9H?B]=?!#PO-1b3x6X԰ c8穎ohO<)vPe'Ԟr܅h8Huh6Y#7hّ šZ oQ{30B>f 0U>=@ٵ`@kN!ĚKζZ2q~ }czMP§$v*4:Zrs3=m^w dklbʜ!Q&9S§7~KTD&oe@3 Pqkca!w|!"ǽ@օ:aqon>chyQ2B w$1oXVխ-FѫYR sK:J/P~MnXtL~8ċAۓÐ\Ï1 X[@]Kjr"p[S@5@ƴsmXL&Pc4_A0V yT:8ݧ0tPB buT8Q{G%p$fn w0g+/Q-\]!/'"7|ġ`,q>9;s^PE3W ]IKkw부߄ܐ]6s9Z,!lEg,Ct=|Cw{'g5R[q/5H= 힏bI#8uSTۘvc_30C{Y9ql|OKhW>hW4vB剦'G. nk^ntE&`q~p(${ijj]Ѝ02FMtj@wyg( E,O4LTrɣ WmÜ$~Ro{H b" ׵j2G0.`0zhN(2;7,4-sʰwOͱ'qbi H'PqauZY287bV{JsyM2.B'}!RH0mҹ[5T&#s#1QY|L㫲CNFfaL NY]Ӣxzm޼vs*Jq)&N 6۬+SkL]8+kW61hIfE"r*1ԂFɨGPj$qR1z;^0-bd^X 3J5멷҂t:j69 ltFЏ@}|BexQ2?őTFӘhPĪ) %Co|kRH4M/AVٺkԉXBWGrw~8 80D|f9_$t3e^0n3/idαC4νRt3n jx+3zL{=ϔ1jٕ")Q $61-<TDSpK qd`xQwzFu*k~//A;!Dq9^_mKUDܚG逌t#t˦pw%tTEw)xROֵ&\]+Y@Hw݁zp]Lr1د27ְl&rIH'?~:,l1GP&K!M_󅌒K¦fi=n;El t$>㺞/Hy̦>l=%4!a#egRy W򂭂`HHDl^k1'!ijmN5gKIަqޝ+Wdti̡[#+֢|QL\ yW0NM ;ϥ'PMI[\V,wUucGCz<)B`ДB9R6Y+F\sEvd^O~@̱r/FCK+*\B#-DS Jm_Fpm'bcIp@G\3Nωњr'F/n\ n@ G0ʟP2Y>EJW%>z/-݇NѿmqIJ bb:,-)%cz6 n/Js'>PMK; Tẝ9BAɘ N0Z-[0X[AIY)FYÓ!P'z>(Kv&a5/BO4ϤVׅ I]jVI}xH{\Y4 FBNGJ*_@rDͰslB]+FԈ;/@A91 >xD7DX*&|DžBHp} 2д+ uϢ%i>×Ԉ.Je\?U6+jBG>cN|V`9[.d1S"gRܤwOVk\9X9$t%d[d9⑕nu̱ZTF"Lc2Js1. *s{xHuZ:3pn];w3j"Ua?~ct[S-^A" 48GUB-g!1G["t/23ۄq՚V Y@{4 є9$$|>Mu ߱Xh-OWڔQZ*ʹ[,_W5h!TɉVQmOl1՛9X*o;Z_e ]m>v ?aOEtzۉ+ק'Q+%뻇T g|D2 J/ىA਋"nU 7:upʶ>5%K%>3_Q;&w^pQl#1/h6Z!4mi])O!9ˏ?qSr^ >|-^ur~90zwUxYy@=\#?+P.jM0hW܏^-̦,Q?;{ZOWcƅj"_+n(̰UKdf%]M(=>^ew:ga $K7X [";ɗ@5v6+|w;l7)qbԸ;%}9^q $Љ$/aHB\a,es[j:"i$;!,K)D_$*XX? /< mʝڿ#i|jC$#f-׿Sz$,U=~A9cAEI_HY>圏!k:9clBoM Py) 2~kAN* 'J-6Ս60KKBXù].Ka0IER1`ܹ7.._ 6tEZ+-@u@;yAhN݋4mQ68n)Z08Ձʇ-eH;?kNuo?k\rE&x wjxCY>j":] grYC`BuU^WJ쭅nv!xAKwfwObnUBYt**Ag(MrbX)*>&7&hc7nrҥ)ūv#;(q/NAO"4⎜)oNMFʁ|>Brp H#K4d9T*O}xDLXp7lߥUgPT rˡOW[폩DsXlmkƗ&Qw}Y=O--r}7V2S[o9ih]mKĿhnJ=R*x϶+B+m9ɥ~g] Caj=|ՔTD;~<0'W?tCJyQhO;.a=<=Q%1%1iJ*K6vW$]Xn%7d5vW4CdׁE3 65)0'$@C]3?Ws'/0(KAYN.]~v~̓9;Q);e1v/2?>yp*zV"0myV?UU 0Z\`i6(o aA <Ԛ4j!(Lu~)1I ao0B(e#4R9ޤ$i>u`sdJ!n=&az9}#q4Y(Ⱦ2u|+^h4<ܷw s%9fzv2,;mFMp%Zݬ+VAΉ --TV cC,!P <6dS E=+RT>k nD'#Ms SdGuЏ!s2)}jN>VODd8F lwK7."cTٳ@Q`.3>݅Aʢ^,-| jQ4B{`c5c႙Գ}ym?HZ2ŮoeM4cG<$#ZW}eId pAyk+bBnoT*(l}-[T 7i)g'\96/N ߗG{;;Όܐ_ _ÅLڰ u&?8 ˧\UhB+Q"xG&Ur煇؈򇉫 O0;֏SGg X` eC_`U6pA+ nFzYm<谜H]v󊀚7/`a鬦 BfD3<;"V!Sb+u@Ҩ vZjELb8Ԝvv/jQ/Ժ ia"v%멈,"ȇ14o?%7G>bO:4^|tp5?jynC;6u+'07,WWyđ0;0;߷VAP㑧Ȫ0'MdpڥnudBo0Ç,XPRsTL!Vyb r~.Lop (a_L;bN^߲KQ^D"rLߧvzĐе*lfRΰ)Fm)\ <#k!EuYX!V':3X -L@Y)xu ;չ*^3T!w!^sl5vdy N*n7@Rc#C*\` NII+^>ΡA% 4, (% }!W[%J:⢫ʉOai)ԓ홟u 5MggTo a*2zlpdόXxKA;ZC+$ޙ-}KݝߝD\| ɐDe x-& E3;%дԊQk"7rI(aObKD\>ivy1$vQ[v/ 6i:oh>Œ#y >yqSST'>5u!Y%|כlj[W+;ԱwlFr#s,$,Y!Ε ༧$ cLɤ[WÛ F<]YlIP"hHǻG@G}w >r:?EfYoa<` F`ò֖_l;3 ŀ!&l 0ZWzojH3yomnmIGK5$B\\Lx)ɎX.S.e-8-5]RʨE Hp0721k[Qy)L!CC<9w+AЛg1C]]MS6f0bGM`Z?iAUAsۡm^>دZ#|@ ~l nf[#`*Ď ,G0f9k[2d߃=w؋(g!X[ho@qa;?gm<|ԈCt Y †wWԻftR k?"֧^I2- Tx]lXz`$}Cws?g蚟`lyY/aO`DZQꨌvאmoZ*xSt:}gn{!1 7>ãAS\kaYo4EVOXXHsA$ 7zDB)H3:?A0~_iglY{ R_izw\ɨarz!lBv9lveI2/9rQϾ*}36 h-Tr[w, g$Ö'O is{4h3*& 's!Kdi]Xfeay@uL˖eeCB[El9дFËUBx w`=Mg:+3R.NHk,O< lT* 3]mFXPe("p \DN'#a`iJ\%7* &CWNh {&;EKzh`RUǿT1&1OhCPC60^\ ٣[<9 R! Gz~Ŭ晚"*P[J Vڤ 6o,v&~`)p=e NkI&!w؄[Z^Ѫo|سhagbζvOz`L=IxYzB. IUuAaZeAFȐ?~ngQ4|=@nP˶%7&I T]MkoY'Z<2}sS)\bGo[؊AAX ]hM^֘ 2aQq5rET s,faWMP|oi'xFsV,9D)q']= *e̿]9%*6%Ut5'P /e4*|=u9])Z cTր:7BLb( svq 09KoLNmBUSBHO4@A7y_+dvryбVg' 3cPWM&X&kFcCz:1<%1k>D˂^DvCt,ˬݻhX 'V^25]6z9bc"N1PXBq/EmJKfT42b. ZKtfiBA31}Hb!IzfG-Mu~]g|#Yv̓H{MVAN,֠su6V  -rvkaڜN:<ђGjT#IגN('j7߇g̟G쾪\5LlH|̷ߛ_^"$cxGΓ-i)7ь@*B`lw#@$4䩱q bQG1Dx1cGXS37LI8Tֹy y*^Ak-z?{(Ng ξͨSТ%fgF0u'ϬIFHxe0g<&)Ej_h9@ qz倫R.1mEXuĤ*>eGp35HsZòou[/N[jSqwAm Xt!@FYܤ:j- ѱb5CL[:<,o 42 G[ ww]kh\oFW```ie!؊]dGX^[+2wr.C·,rZK5sb`Af ymtI!ݐcAh]NRQ<R8~qecL"i8Y3G5-g tG D7MDEYn+=_.Gƨ"DwQڴ3$*TkkSmT=M\wpî.y{ƶvWU Up5r9u֞N.ˈj }+Y+30}Fb=aojWSw^jE+mLH!&Î;ؙ.k.+`s4#IUYI%Tʈ,2n׹& Ţoʜ,O$4Um. ,m67&k "bJ7+TA5C@F# כ`O62pqzgI% mhaԧP-ʉz~li{ i~_sx 2_`HDOBlbKU]dF5: qB\4{vnF03$MK [.%irK5b{M""zBv4P;@ lĴ;+co}O*sA>uf5M!`w\>$2NA@lgw~}4eOlƉ?>WrfڂQl %plX\\TkT*='nǛYP]9:;ܴ]Ksx8l$?Dg->t[Cl+(/Q^L#[&C469O|CC3L<ݤ9FJF;&a$mNTA Qb9 aa V,1}?f*ПfvxV+ ƃ.XPO-DqW/[i*6ϟ o– ""lv˫kt&c 29{RmĒsRM+>qq`m-~>FsRv$Kk,1Ui7 SK8Ps j YZ