python2-matrix-synapse-0.28.1-lp150.2.4.1<>,A|[! /=„!+`ly&Ws_$=$˻kqU2ڕٴ;KgΑU[ hy" Au2;hMWc뵿VCYPp,>-D$qCG`\$@E6vQD ƈ|3 fxԤȈy]nf K?d  , Q  0Zr z}@& 0 :H M q- vp:d$(({((8 98 : =&.>&6?&>@&FB&NF&dG&xH9IMXRdYRpZR[R\R]f<^y`bc7defluvp wxPyz 4 DCpython2-matrix-synapse0.28.1lp150.2.4.1Matrix protocol reference homeserverSynapse is a Python-based reference "homeserver" implementation of Matrix. Matrix is a system for federated Instant Messaging and VoIP.[! cloud131b˩openSUSE Leap 15.0openSUSEApache-2.0http://bugs.opensuse.orgProductivity/Networking/Instant Messengerhttps://github.com/matrix-org/synapselinuxnoarchgetent passwd synapse >/dev/null || \ /usr/sbin/useradd -r -g nogroup -s /sbin/nologin -c 'Matrix Synapse' \ -d /var/lib/synapse synapse test -n "$FIRST_ARG" || FIRST_ARG="$1" # disable migration if initial install under systemd [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$FIRST_ARG" -eq 1 ]; then for service in synapse.service ; do sysv_service="${service%.*}" touch "/var/lib/systemd/migrated/$sysv_service" || : done else for service in synapse.service ; do # The tag file might have been left by a preceding # update (see 1059627) rm -f "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" if [ ! -e "/usr/lib/systemd/system/$service" ]; then touch "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" fi done for service in synapse.service ; do sysv_service="${service%.*}" if [ -e /var/lib/systemd/migrated/$sysv_service ]; then continue fi if [ ! -x /usr/sbin/systemd-sysv-convert ]; then continue fi /usr/sbin/systemd-sysv-convert --save $sysv_service || : done fi update-alternatives --install /usr/bin/synctl synctl /usr/bin/synctl-2.7 27 \ --slave /usr/bin/hash_password hash_password /usr/bin/hash_password-2.7 \ --slave /usr/bin/register_new_matrix_user register_new_matrix_user /usr/bin/register_new_matrix_user-2.7 \ --slave /usr/bin/synapse_port_db synapse_port_db /usr/bin/synapse_port_db-2.7 \ --slave /usr/bin/rcsynapse rcsynapse /usr/bin/rcsynapse-2.7 \ --slave /usr/bin/synapse.service synapse.service /usr/bin/synapse.service-2.7 \ --slave /usr/bin/log_config.yaml log_config.yaml /usr/bin/log_config.yaml-2.7 test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" -a -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -eq 1 ]; then if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl preset synapse.service || : fi elif [ "$FIRST_ARG" -gt 1 ]; then for service in synapse.service ; do if [ ! -e "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" ]; then continue fi rm -f "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" if [ ! -x /usr/bin/systemctl ]; then continue fi /usr/bin/systemctl preset "$service" || : done for service in synapse.service ; do sysv_service=${service%.*} if [ -e /var/lib/systemd/migrated/$sysv_service ]; then continue fi if [ ! -x /usr/sbin/systemd-sysv-convert ]; then continue fi /usr/sbin/systemd-sysv-convert --apply $sysv_service || : touch /var/lib/systemd/migrated/$sysv_service || : done fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable synapse.service || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop synapse.service ) || : fi if [ ! -e "/usr/bin/synctl-2.7" ]; then update-alternatives --quiet --remove "synctl" "/usr/bin/synctl-2.7" fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart synapse.service ) || : fi else # package uninstall for service in synapse.service ; do sysv_service="${service%.*}" rm -f "/var/lib/systemd/migrated/$sysv_service" || : done if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi fi*!{"ob_lQSQS  +;J;J322 D!VP$af%u('' XHB"B"?`!C @pE\E"@8 !!|'G)])]^$$$''_7,,%n} E o o  y{F[  j l  ((PP-O%%5$)(yxx || _G oL:L:W>{  UU ::-,,#1#1(99e9eWB_2_2+)8)89FF k f f`dd_TSBSB55M ooP?? P P PULL*$$kk@11rpp <ss_  ] ]9+66 ?ee} cs`s`XVV JJfEDED  6=// 66 TXX`` __$&    G G4IkP-P-"*""dQ>e>e1 c c > >9RSRSt[[I`9I` Q>]66n))>7O7O4Q00<44@00aXX&"~"~   n  PBLLToXoX=܀܀9-Y-Y [ 0{1{1 bb.*j*j8.?.?'&&VErEK.*7*7DG77FAAPTMMqYYg/qNr 6Q  "sc qyArrW M M"6 ~ J J99,1,6,.&.S R m;9 , j$30V;>  cE&< ) w  pE9iII Hmemeq^^%#j#j" %%p7f7f7__1 0~8862p..  \JSS}-!!% u u5ek ll==E % % 488B,,   kkNffUU))Z LSS b ! [/N'J))xAAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAA큤A큤A큤A큤A큤A큤AAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [!@[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [!@[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [!@[! [! Z裷[! [! [!@[! [! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! Z裷[! Z裷[! [! [! [! [! Z裷[! Z裷Z裷Z裷Z裷[! Z裷[! Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! [! [! Z裷[! Z裷[! Z裷[! Z裷[! [! Z裷[! Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷[! Z裷[! Z裷[! Z裷Z裷[! [! [! Z裷Z裷[! Z裷Z裷[! Z裷[! Z裷[! Z裷Z裷[! [! Z裷Z裷Z裷[! Z裷[! Z裷Z裷Z裷[! [! [! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! Z裷Z裷[! [! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷[! [! Z裷Z裷[! [! [! Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷[! [! Z裷[! [! Z裷[! Z裷Z裷[! [! Z裷Z裷Z裷[! [! Z裷[! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! Z裷[! [! Z裷[! Z裷[! Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷[! [! [! Z裷Z裷Z裷Z裷[! Z裷[! Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷[! [! [! Z裷Z裷[! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! Z裷[! [! [!@[! [! Z裷[! [! Z裷[! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷a409d14fd0654fa21db098cf33a6204c41ca8bdb6c41f6c50316531941376d287c499fc79112e22b40cc46c7c09545ee3e267b53bbf9a08162994ac5a4d876ed0c83ecf6a72dda6df62d05437ce192ec7b2958e08fdedb6f2c86862a259e8e7c612a3500075b74d35967b86ec8af4320800fed4d00aa2e16b3b8b93e6a1a505d76c92c5085b9f8ab33c680bf2949cb8e901011301eb16ae326929e820fbde8fe0055bb77043e8895c8b7f1c3746ea86658e578ef39d6744b07588b3dd19478215b1a52e8ea3be52298d38c7055d4f64ef4aa919201408197b12b4e78f938d6df01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b8e82bb6f41c92595a45a8161a5c0fc8c86b5c578219b6c56c7e8cd646aadba8dbffd58b2a8e6a120b308ab3ba088734cd996b5262839188132fd532643a1c7c00bf0d210a423e31df7283f12fa24bd1111fc6793758729934c03960a3ba0f76168091ec43fb9fb268d99ca98d78d5a032dab590aa565e1595fbc0a6e811626de68091ec43fb9fb268d99ca98d78d5a032dab590aa565e1595fbc0a6e811626de94fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b5b22d0f88cdf36ee3d9eb5ac9b7ca6b0f0f58d2a5256de0f5b125745cfd4c3845b22d0f88cdf36ee3d9eb5ac9b7ca6b0f0f58d2a5256de0f5b125745cfd4c384bfd8817ac2402544335b292d1d1b68c5f4030f5909f1815b10f6210403a436abe29a5b2d842f1f6fdb826921df9d003459290df3efdb176e65565a8d78341d54e29a5b2d842f1f6fdb826921df9d003459290df3efdb176e65565a8d78341d5421dc1570d6c3eaf81f2529a33855841fa8d50abb87d5c3163e0b77c24c0bc6ada90d9b11401c07bd862318c14f7cfd91ca3a9871f463395c89a19e23ecd2b7e1a90d9b11401c07bd862318c14f7cfd91ca3a9871f463395c89a19e23ecd2b7e12ab3f9415e11a9ea4f2ec5ef2f718a6d4c6cae749d8e3d574a5173ce2caf36ce25a69899b932ed4bcaa467e7770dccec37262e2e076e869c35c46992653a733a25a69899b932ed4bcaa467e7770dccec37262e2e076e869c35c46992653a733aa6fd467fb07790dbed03231f6763d15dc9285c298ddaae6fd2066ddb03c250bd19fa3d85f9f32ad2ab6faf83d0ae5d20079095291e9813b1d7131481c48cd93d19fa3d85f9f32ad2ab6faf83d0ae5d20079095291e9813b1d7131481c48cd93d7a415741d8b9b692ac3bcb9346f7d467192b6ad05fb76a592969f8efa76465ddc95eba7fcf3b2da36ece042d6ba309c31fcaabd063d9ec3701013de01d7f2575c95eba7fcf3b2da36ece042d6ba309c31fcaabd063d9ec3701013de01d7f2575d42a09c4e1c71ee05d5558dbf25f95adb5462a4d9c397a81d5a3d0731251ac1047bcfdd455a7056de0f583d763bd70fb7d49debbd1f40173ee2c8e4e8db5083847bcfdd455a7056de0f583d763bd70fb7d49debbd1f40173ee2c8e4e8db50838ecd3618106ec9fbce3f187da6347438e7b06fa7c749bc78b31db9d8f10f1efb1188a73081f76b4a22cb3f8be284e76e20de097d57f2b165114c73de3eab971e0188a73081f76b4a22cb3f8be284e76e20de097d57f2b165114c73de3eab971e082dcad1d7e4d4c27437fa3cf157b08df64f8db0898e580a62b281fd9c552c05c6f22786077ff448d357e5cf5b680f9fd3148c8095c9483f138d7e5e6cc181a1a6f22786077ff448d357e5cf5b680f9fd3148c8095c9483f138d7e5e6cc181a1a8a0154b2b1a6b0b146fa4df672749e2efcb19f7505686ac347538f2aee95de4b369fb6dd8f98f5e676031aa782421fa4c315195405707bc700f50d11b697b88586cf8a9d83d2679279fe4e765099a41489e1a56539a27b2ff5f6a3c4466370829f9ffbd029a68537d49c37642116b254fd3d17f68b412d62487cb36932b74642ce5e9233d0ca054b0f771014fafcb9b4cc36656ba79374fc4a22cb1d56c5ef9078817ff68141e7e27fe70882537f9bf6fa027650cde2d23ab3309dfb506e9d3dcf4dc29b79208165f888a920721347308a42afea248b46c77979cd75d129fd16b63a9902fa75b112999acb9d0d016c61eaca64ba516081e84955f461f70deb7a16a89a760dd62152c0f6a69fbb9bfca4f190f19fda95db5fbe2c3746ecaf363b6c6449590ce860e50963f44606559f0ada74d1ea81fd5898f1cbfb0df691139fec066758eaba9e600e15c9d119f6d0bb81bdf4f1875da742c2854680458ba91c1947add757543a0ecbabfdbfc10e1189757280ad30cfbd92575b329306c14cee7f31ba432b214a19f61162edd710e64c885ae61aed4561e770b100d203beb56122b45284a7f13544b0d25e809e361133761c5e9bbb6a099e20115f2a1c163dd471770550398faaf053d03f4d38ce5da402c2b09ef04028d1fc3a6ab4bc4607342b0b5f2a90b7c59bebc52a7c94ee648650c75e5004d00cb18457f988a6f7f616f821b4c5f8af292ed87bbcd9955f9e80e521742d18fdcc96bc355feeaa353e2aff690ffbafd56f929e1fd3c4b2cbb1d8b76ce81c90e3cbbea5749b1780ee47ed928e64c2bbb3bbf8e71d733e78315c64777184586159c8f3f88cb05eb9ac2cc7eaf1f0cd2e5b33dee68d815764b0757fa8662edcb7096e1c45dad4dbb01551a2eaf1f0cd2e5b33dee68d815764b0757fa8662edcb7096e1c45dad4dbb01551a2ee4603eca145e703bffc5b296122e3c5288ca6bde8e1209e33532689766f40f8c71361c52946ab72450c44047c137484dd3f64857edc9380aa42b2f9f9ba85b10d504481bb35953da62dc06b43f9802a714bf0fbe9f7a227c1f41cdbc04426e93541b81692c7c10d3afcd88131e3a5e18cc78c905a3d2444c6cba48f6d7e7751db35fcdb68c9bd894b45eb3573055f4dd8aa3183ab8f51267d72f356ed48ec863fd8d0dfc319fa49bdbf9ad5a012dd298f7def80c1b8b95e932b748548328156e4c546e4666ccc7c8db0eab078e9510cbd6a01e42133f1c56f0c620d520a6e93494370748f2938735479a4232a2f557d7e5386f5c2eb4933c62ad705d4e97fa5a6003753b81a37ff567e5fa18c72dcfb39166af01f67e708375a0746d282f7d95c18d63f7c13e09c7a65a47cc16fa512f7718e80768092a7efa5af86043c22734b658c9c3fdff0ea703423fbd2f5da3a7fbe7eb05b0c14189877aff0fd696e626e727e3ce71703c585442b10394b17576b78c7e1f257b63bdffac1cd809ff3c55c6d98fff28522e8df1415501599b3c565f16bc9d53cc0976b64d075269257fdef41498373155d0cff48ef38e77aaf9e7dcffb4b07eb6d03a38518582a116d1238940dfc8684c3131615dfdd61abfb8918687069b98dfec71f12ff402328cbfa0f6201f885747c4f9395f85590a699743e244b410b6a64b9b0a206498bc09e02d0aa6bdf675d3f937df99f0e9395f4dd2e8c2cc13b414cc228dd7f19dafd8ac3d0aa6bdf675d3f937df99f0e9395f4dd2e8c2cc13b414cc228dd7f19dafd8ac36e0ebced961678672842c4ee0791b02f8a909f63637c3381e6051144614cc83e46bd132a3dafcdb5dad4a28a8749e7d4935d7a3acf40d5c19e8ff87661f9373846bd132a3dafcdb5dad4a28a8749e7d4935d7a3acf40d5c19e8ff87661f937383640ec5b298f2477fcbc2e806b50f79e8315e6d789784922410fad211cb8db5535bbd16a634d1ac46d1f6180cadc64400bf10245a661b1f6ef2bb6368ffb639935bbd16a634d1ac46d1f6180cadc64400bf10245a661b1f6ef2bb6368ffb639994fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b2bf904732c3c7994df01298a00d0ba92fe4ee6a6563efda2e94b55af52feac282bf904732c3c7994df01298a00d0ba92fe4ee6a6563efda2e94b55af52feac28d86a88e89be6f5187f965d4b896c725056ef75c2308675299652f3687103d8ee4bfc5593d08c9ed803e215a62cda09271bc940a0e4644fb756e8983a770b568a4bfc5593d08c9ed803e215a62cda09271bc940a0e4644fb756e8983a770b568af79363c1412f33030b084896d082883a89b3a8668d4daab37635877a92102e2174c42e426d808263e79d7850af971f016879b09b8af53afcac71302749b9fc2274c42e426d808263e79d7850af971f016879b09b8af53afcac71302749b9fc221e2abe1f0c65453803f87ba75b52aee895c914858b371f0051c3069a9d5a5078a860ba03bd05bfa11c9bf0b09a4d64eec9b3b4f4cfc6911fba916026c9c28433a860ba03bd05bfa11c9bf0b09a4d64eec9b3b4f4cfc6911fba916026c9c28433e6f205f0b4c1911ed05b8230b05d4156c7da9a5ab74c36e52c7aa19a64da82720bb780c3f1aca487134bc3593ae9c9dbee8a03a3ed78b8f89e96ac148ead1d090bb780c3f1aca487134bc3593ae9c9dbee8a03a3ed78b8f89e96ac148ead1d0926603965919600e36301aea79056b6b96184ce76549447d2e9902b7e62505372a4fa285dc815a7c0a60264d1b6505f985771407459c0b5798c1d62d290fd9afaa4fa285dc815a7c0a60264d1b6505f985771407459c0b5798c1d62d290fd9afa4867e247f48e21e4974ac5bf47765c9eff6b7e1aca8c48334f543c79249c29a5954a1bdefef1b0786abc02cc2c9aa122ad9c2e5fcb005e550effa0dd5d8f1769954a1bdefef1b0786abc02cc2c9aa122ad9c2e5fcb005e550effa0dd5d8f176917b14b74f2ef9cde08123d43cd80a6d7253f0b6a9f542a75df72aa24512d4fb3a4dfe2f7d3b8c99faae0e4960c9c3457f8a0c2117b2ac01edc392139c0cb2cdea4dfe2f7d3b8c99faae0e4960c9c3457f8a0c2117b2ac01edc392139c0cb2cde86f49b8c39d3ef2778317c9534979f49cc85095edfe0a89bd322441e76471ab43ca2ac8e1447cea89666e2be349980b22be63bc9669e6efe61f8ab873f49df923ca2ac8e1447cea89666e2be349980b22be63bc9669e6efe61f8ab873f49df92a752ff617be4c05f0c4ce1c0d34b036e7a8d2eaff1876fb92b630b0d985d7d388e4335bddbf677c6f728433acdb9fb21af3ebaa0ec710c747a3ad4db4423a22a8e4335bddbf677c6f728433acdb9fb21af3ebaa0ec710c747a3ad4db4423a22a5927138774196295e708ce50a0d1201b64aa4bd91013ab28be06163399a614bcf908689e1f050aeaa8412502f59a03ea1f4120257904882740ce5a7d3b049cddf908689e1f050aeaa8412502f59a03ea1f4120257904882740ce5a7d3b049cddf06399d5d754dd8f0532e80e86f77e3c3e23333509dd5c0253d768d0f070fa37670fb953fd0f216a26f97c04340bf229d4b4a59b6c7f39268c750e48cd62b2b5670fb953fd0f216a26f97c04340bf229d4b4a59b6c7f39268c750e48cd62b2b5d0b876f794f84de290748ff5f89c3bc1b55ac26761d75afd05403644697dca5a375afbe4c664b23aa7af003ae51a37d4154bb0f27677da8bd39b7432c14e8e70375afbe4c664b23aa7af003ae51a37d4154bb0f27677da8bd39b7432c14e8e7032a63e58ccac880315e911a63d50335dedcfb07a799d0624f3869d9c4857c531b68398aef2f2d77ea2fc85501bd086bd7d625de91e09cf2759055a34bc3d983db68398aef2f2d77ea2fc85501bd086bd7d625de91e09cf2759055a34bc3d983d7b8a4e61f33ae5b3a791d3b3a98e13e79293bfd5be3dbc366b23bb6cf24ec9f6a0534b3ad7b1b689c4891dea8b1491ae1bf7d94533790e08712d5fb6e5dccecba0534b3ad7b1b689c4891dea8b1491ae1bf7d94533790e08712d5fb6e5dccecbfc13d4fc212c847f560762c0ed81367de2bb3cd28c5894f79e749feeeed4099dcd3ae9376f53823bcf7488aa290762f4cf3706dfc7a178f539150b13ba11f460cd3ae9376f53823bcf7488aa290762f4cf3706dfc7a178f539150b13ba11f4602fedb15d5be82db493ecf55687eda8b31826e5d5ee7208898391a7393321fae669749f3a505f8dc26f209a9d0a5399e105b3ea9a22bff9417f83b1bc554ee08b69749f3a505f8dc26f209a9d0a5399e105b3ea9a22bff9417f83b1bc554ee08b6bcfc44e3606bc7821e6937bb4bc11c6492b771191afaa464ea11e83c8ef3d5aedecdb369b6ce2177bde5ffbcd1744dcb70c389ff8f31f755a8394aa557d7df8edecdb369b6ce2177bde5ffbcd1744dcb70c389ff8f31f755a8394aa557d7df882b9f3e0246814a2968c9cdc9f41fd22152775bf39285ac75018efbc82c08c091053f83fcfa8817a5a4304aca57f9d01faa003106410ea939441a21c2de0fd4e1053f83fcfa8817a5a4304aca57f9d01faa003106410ea939441a21c2de0fd4e3a5ed4447633ae60f6a99664b51b617356f2e193cc4ac37e8997b66a58911897961bf030b70ed362ce3bde41c2d26899e11080d3ba8793ea82eae30f6c3568cc961bf030b70ed362ce3bde41c2d26899e11080d3ba8793ea82eae30f6c3568cc0bef135635d3840e71829c65b0244a4da0fc0b3bf80d66c6e291f1751aaa4acb9b16a7704267eb42019cc90ce1114d1a6299d8af4c4dc6b33fcb09d023d877c19b16a7704267eb42019cc90ce1114d1a6299d8af4c4dc6b33fcb09d023d877c11d9256f7b571b3fda50eadbf5ceaffb448c27d634096848fb9f088c8f7b8d0ea07d3e55627e10b18e2035571f88edc23f09986868162ba5a111d5b138f45c72307d3e55627e10b18e2035571f88edc23f09986868162ba5a111d5b138f45c723b45611de68a323d838bdf99190259b7fc0db7fa96943ca0ec397f607eafd74bb1c770241f414614b61457a6f1830250b80f06747a398eeb2ae4af7e65d67bbb22a69cea4778dab40102d2eda83b54968222af020a6d3d9f2b82fd964e3d11474e2e75084afede537804e429b4e889d18c9e39ec27764243cfbb7f9d7aa2414c2549f09c9b31fac06ef4cae9ccc1e448d7a3824d90b28e4c50b8ef8d2fb26f078549f09c9b31fac06ef4cae9ccc1e448d7a3824d90b28e4c50b8ef8d2fb26f0783a66d6f55152d7f33c2bb909a768c14af107b5a9d5a8d1be2ecaba21aac8d0acbf9583fa7c45aa30a7888a1db88d5a720655397927d146318ec3a9fc5bb11c4ebf9583fa7c45aa30a7888a1db88d5a720655397927d146318ec3a9fc5bb11c4eb75363128f82652338d8543bd907e97a051186956e30b0462909c1e02798138f50cf326886d3ee1850382710d0097d7fcd385b75df34c48ba677494fdfb01cba50cf326886d3ee1850382710d0097d7fcd385b75df34c48ba677494fdfb01cba7a792dab8bd388c6cd78e8d6895f073c5d1760f512f0324cb4e6c665a90848789b81a1e902c36a84320a348768620290b7207c7cb6a1b3c1a67419adf94e6f4f9b81a1e902c36a84320a348768620290b7207c7cb6a1b3c1a67419adf94e6f4f6e1750e349155391249b8729c61e331c35bb120f2c1c6f216b581f0b1e93c088e891683f953a98e48aa8b611e16252452debea35bdd7f14092ed265c12e1cc98e891683f953a98e48aa8b611e16252452debea35bdd7f14092ed265c12e1cc9894fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6bdfb4d21eeb990e7752bdb008095720ee00ff5bd4ac30cac2523bc94d61bfb510dfb4d21eeb990e7752bdb008095720ee00ff5bd4ac30cac2523bc94d61bfb510215e4c043db3fa343cd1dd9d15b3a7bcefc67f038c4b7388a9617e923bd070aeb6f06abc97450fc5d1850fd5d9faf7575db608ed405a053681cdb7c65f08ed19b6f06abc97450fc5d1850fd5d9faf7575db608ed405a053681cdb7c65f08ed19f30c3544e52912ccb061052c044cb069d2b8e14275c83ed3ff9e33c22e405c69b8be921f9faecdde4888a119e75b43934da2d8045f3d6f823fc679a525976affb8be921f9faecdde4888a119e75b43934da2d8045f3d6f823fc679a525976affcec8fea56bf887aa0f4804be694a708cc7a363eaf12a387dfcfeffabe9174cd7bcee14b367aabb54bdc4b4643bf376a9b0ad2fdb398f158f2b38904af8a6f8b2bcee14b367aabb54bdc4b4643bf376a9b0ad2fdb398f158f2b38904af8a6f8b239ee25c7809e813e14d6c464235891e9f54efd77d7b276eb57326a0e953b13e1134c49dd16afbd81ac648248765df85158f8aa2e25e4b5396500409f984de3f6134c49dd16afbd81ac648248765df85158f8aa2e25e4b5396500409f984de3f62f3dfaa5c1e53c43e6ca418d4a550e7251a3b909ff5b51582871ab6eefdbaef72cbf0864bdac85b1b152b431000f17d2d2648941c179b734c1332bb56ac11bc22cbf0864bdac85b1b152b431000f17d2d2648941c179b734c1332bb56ac11bc230794775fb69c9ff0690fd775e4a8f762fb779fffc2f077388ad2908a14075b044e1455c13fa0df0a9eb8b447261bc075ff1c9c5ce36a938c540e582976d798444e1455c13fa0df0a9eb8b447261bc075ff1c9c5ce36a938c540e582976d7984d80bc8867abb27809d6297fcd299541cc9e0f5c9ca79cd339f098d5b53ddac20c081f77211163f6d179210cf0a5b36284013730f19be5787b854fea8fa0947aac081f77211163f6d179210cf0a5b36284013730f19be5787b854fea8fa0947aaf8993db6705e4d009353f21e6e31b209b9d20d254af1b9f6df52fedf368b9ad481c5e32888df151349d984328d70d54bd177113da51c5d79eecb59c1c7f73bf781c5e32888df151349d984328d70d54bd177113da51c5d79eecb59c1c7f73bf731436aea2ed0e440c8178698c0071a854bf843b9a66948fca4cadf2a716a748b7b7fdf1dcdb72fe01bd72226760f6b5c71a9a619b1dd2a7f20ebbeb69db280c77b7fdf1dcdb72fe01bd72226760f6b5c71a9a619b1dd2a7f20ebbeb69db280c7614664c5fca74038dc60ca9c5f84d6af3d740449c6b6ec01da48da43b8c4d05e86160d09ada90fa0e2dab0d127b2cb1a1c8396a583a890e683e18ec7514b976386160d09ada90fa0e2dab0d127b2cb1a1c8396a583a890e683e18ec7514b9763cc9b63511abc348d48b017b8868852d92414504d8173d94ea203516b91efef95272b8799f71b496348f1fee8618bd3f0b759885c322deba9006c239f7777ad29272b8799f71b496348f1fee8618bd3f0b759885c322deba9006c239f7777ad294a76d85df6fe830786b14325d86cd85193f940959030ccecfcd769b0e772c021c46afdce78760915fa694b6df1c011549a1120e21bf00f83e5ab28408e8fa9afc46afdce78760915fa694b6df1c011549a1120e21bf00f83e5ab28408e8fa9afb8dfb04f0df8224a9938a11ca00eee39a7a7beb3f70f5cc741613c79669b78a58b240f8ad5558e6660527cf5e1981dedcd757943b967f2a98efbaf877ec20d6f8b240f8ad5558e6660527cf5e1981dedcd757943b967f2a98efbaf877ec20d6f601807b1efcebfcde12c74b05edd6edede80b5f03d0965b79163548f4311456f18051267fc9dd3ca2017235720d0771cee2fd163a92ef8a5bba9c6a5a7a2d55218051267fc9dd3ca2017235720d0771cee2fd163a92ef8a5bba9c6a5a7a2d552151b1abfbb886ddf95c1d1a04ee123831806c171b3886100cda806d82a1f932fe72bd1c35888b2bb09c9e420e4a84cb408896c94b0b879af61e0ab435988c609e72bd1c35888b2bb09c9e420e4a84cb408896c94b0b879af61e0ab435988c6094a2cc31fd877feb24a4e1437d6999ddd356e99a130573aa2d7fc1762c72ed7e8bd94859064d27bc2733a3cc73ccf1a13f7d8dd29c3c79583fd3facff8303042cbd94859064d27bc2733a3cc73ccf1a13f7d8dd29c3c79583fd3facff8303042ca7fdf62fae2648726556f1a8022f25fbf2afef8ba601640856e62b48bd96e264f1070c60510df839115d002766720bfc75083c0b6176d71834a84c9f4e3b063ca3058c2c4e1cbaa2c554c5c101f2e6fc5dc7634d4274c655701b5981a8bdb38da6319274e7d61e47c4ffddec9f9deebc8d608005870865f6c4d61c269675b7f73d22118df7c27a30464e00c2e41bf5e102e5f11ac720e02925d92726e696a95c3d22118df7c27a30464e00c2e41bf5e102e5f11ac720e02925d92726e696a95caa1c1c5b9f6c3fc922d7c43e72de0e3dc4eff770aa54b93ab88ecaf495013ee6ff9bdae14652c6cca370783985cd5995dfaf11b92855d61b7905d27c6258213aff9bdae14652c6cca370783985cd5995dfaf11b92855d61b7905d27c6258213a9cee13bc356f85d5552cb8d2f890a3f0b796eea1201bee66638c807ba3ca90c64cb7380c9728331c0a0ebf816d0508419c55405fe1c5c469f7f7d54dc0de7d4c4cb7380c9728331c0a0ebf816d0508419c55405fe1c5c469f7f7d54dc0de7d4c4e03a462a4a10a80c5df0636bfe82793f045440194772ac843701d37bb0b93eaca1e3b360983c3731c9f0df261a3f6dac1d7f31d5a00a609a81731bda9dbb93fca1e3b360983c3731c9f0df261a3f6dac1d7f31d5a00a609a81731bda9dbb93f0f14fc2a9839099b1e8bfa2fc510953f2a73486b74d6aecb5e081fc6bb803e00a525b102c45b5ab7777070c9636efa93d37edf6e53fc352d36c4be453a30d9b2a525b102c45b5ab7777070c9636efa93d37edf6e53fc352d36c4be453a30d9b2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8558a3343c562d07af54baa66fa824a9189bc766245db7dadb4847a3c46441d6fa88a3343c562d07af54baa66fa824a9189bc766245db7dadb4847a3c46441d6fa8605e74e87893e391b3511f4e02904f3f2147243e652d47e6ac848cd43621d1bc2e215ba3986ce547647dfdd7040f8dd6b3a8faa88e72bec5c33b149d51e527ff2e215ba3986ce547647dfdd7040f8dd6b3a8faa88e72bec5c33b149d51e527ff2dd07fe5a5cd01a3d37576a5e9b594a2158c8c3e482ba44d823e10db027f18adf6341d784d1151ff7d7ebf87644a4b21b3aaebdfcfc363b7370bba240e9d6c0df6341d784d1151ff7d7ebf87644a4b21b3aaebdfcfc363b7370bba240e9d6c0d8fe42f128648871b1a21258e525a56684bbd5ffe1b1ed801983a2c469e81e137534704798a8c406c26a60e24c1e84c1dc17b6369a59402ea106a79a53831ca4e534704798a8c406c26a60e24c1e84c1dc17b6369a59402ea106a79a53831ca4eb65f856be27ff11661bb970f87b65a8173e05bebc43734edd20d89e8ade769a135061cd16ad149a20aad334cfd673d9d4b068b7ec6267a87642d07129cd5a18735061cd16ad149a20aad334cfd673d9d4b068b7ec6267a87642d07129cd5a187f6c04edd9e7981c927e4c8a0f922ad68034f9eba70c12fabb74b7016d0a0115edd05eb5e40fdba32c3b31e0e9276bf68a3ae6ddbefeee5061594cada8075b8eadd05eb5e40fdba32c3b31e0e9276bf68a3ae6ddbefeee5061594cada8075b8ead30da801ca609d8c95952502922a6b74e1af9af75b57fa01e0b52adaaff7b2ed4da1b103d2c1ee698e439f690d7f759478843dfe55d8c7fe28b4277f698bff884da1b103d2c1ee698e439f690d7f759478843dfe55d8c7fe28b4277f698bff888ea056075aca63e648b9c6ffc01a6c2eb8970d86bcda1e3e8f4e1fc0746729fc5ae3471efc580603cb8a3f83492c1e4944e9798dd5761385db61ee1c4acddca15ae3471efc580603cb8a3f83492c1e4944e9798dd5761385db61ee1c4acddca17e89c15f223980424f917b238ad218940d30dccf1acdf51e194c5a59cd5984f2ed36f77e94152ad61730d8594370807288bca10b56487da02bbe616de8fa24afed36f77e94152ad61730d8594370807288bca10b56487da02bbe616de8fa24af8c4a2f0ecc524e1841f7aa6c4305c8c2921882b23c3d62a9d97f20901b322d6e6b4e69d4332ab03050036576edef64e014673af7713b6e5d4392444e5c2576e76b4e69d4332ab03050036576edef64e014673af7713b6e5d4392444e5c2576e72d62d463b33c8c36140e928dd873b676f6bccbe2730217854caf71267b48d19de8cf8a60a5146eeefb88b495da3342dddac08385271d23c240fa0d3006be57bae8cf8a60a5146eeefb88b495da3342dddac08385271d23c240fa0d3006be57bae4c0573030f86693a3bba196fe55feb9ef059977308c9fad6569472fd986b590486ad2b8292c56f16e452f03482b885aa6a462372501e2db87053d235555b5a5486ad2b8292c56f16e452f03482b885aa6a462372501e2db87053d235555b5a54de9227647b4ea0d7463b0b966c3ea9676154ce16090fc727d92f30bc7cbb142cb38ac7ab7a6150c45732a64677b11bc4b2e187278bcdcd48510acaa20c896efcb38ac7ab7a6150c45732a64677b11bc4b2e187278bcdcd48510acaa20c896effc91c834c4ed9aceacf5dac4487521f32ec54a2774770a9bf61ac242e2809e4f02feaa7379bae366fd42729314d7f352c47ea5a46aa8062b353a5eaa66c76eac02feaa7379bae366fd42729314d7f352c47ea5a46aa8062b353a5eaa66c76eacd3269c421f93fbaa22e4294f00f41d70c4068299da79252c2497eb8a8d4eff7a68a8cbece533577db06a5c238b015d51480eca356310a8584e1448f9a3391bcb68a8cbece533577db06a5c238b015d51480eca356310a8584e1448f9a3391bcb4c3b26f74613e456f5dd95f842a2c2ef9e49d930185b9af07358c051c044121f00ba0c94e1b5b35f19bbb79f3a17111118a98491f14209a0ef3078d531ac15c629003d28bf8a91f698eb003f589a70d9d7221d3ea84f70d513306a8644c225c5ca6a4645cd7764641c92339ea01fcf14e784188503341213053f1193dc6f42b7fb866eaf85a9a4110db88e10e00e5f737592cb294b48e4e72828ea94db67b123fb866eaf85a9a4110db88e10e00e5f737592cb294b48e4e72828ea94db67b123b3d8282427819619980689f8662537443e5f3e113460c7ecf66d6a88e38336520d51084cc0d7cf9897f47f1535212f276fceac65b796a889679dd0672ab367400d51084cc0d7cf9897f47f1535212f276fceac65b796a889679dd0672ab367409f9d98edc5bbd1135072680cb7c30097d15989719d41a589bd04381572593f583d651b13c5b13739372d5cf53e08bf4cb96f8dc734afcc73e731d249f72a612c3d651b13c5b13739372d5cf53e08bf4cb96f8dc734afcc73e731d249f72a612c7a487fdb9cacc7ccbbdda10ff3b1935559d8febdfccf8e194f81a312f3204a7c05593bdb52144b5e3461045d5d0efd83d67090965566aff2c5f2a3190151604afce26ea44ef87d2374b3632309537a4839f3e8e8c706ffd6982ed9ce7843d1886bfa803b2ada1ab5d4ee2eeb4f478e11f23b8bd3219c2c9acf2b1774eee36997c373468db808e07738ef736e4735621b4c9b984542d81d33942e001dbcb9562601989d9dad9c916727fe6977d4f6226659387c13dcee0770987de96088ee02c5b5a0762a55614eb40c13cd56be99b68e55f89c8b301e74cbc9619ff297fc52180817fca4ea1e2c4826118ad865a734f834506530c46871a797294afa70796f310817fca4ea1e2c4826118ad865a734f834506530c46871a797294afa70796f31b1d19bd099cfa07253ebc9bbf2e9b92ebf2b592bb772e4636eb0d35bcb3f3f80a3e425e25305d19aeb0d52c408d39c3e734350c8ca73714624639f015c2fb01fa3e425e25305d19aeb0d52c408d39c3e734350c8ca73714624639f015c2fb01f54d5583719b88966cea78eeba1ab41453a6f520adb0bf028ef3c5d3a4853a0713c1da443b4b54a136d4100e4a43f38106d332a5bdd1180d97587abe95080ac8b3c1da443b4b54a136d4100e4a43f38106d332a5bdd1180d97587abe95080ac8b36b9eecdb80b7de627a98381f1e70fd685659369505516060f9dff45cc789875be7302abbf81bcf74a9113ad0a6ac3d75967542e45372421b52450a4bfd31820be7302abbf81bcf74a9113ad0a6ac3d75967542e45372421b52450a4bfd318200c0101187ae9734e9e98bd257a20981cedd1cff2f22340bfc5433eb53a5465ad00027dbaca770ef0838ffa021bf69838e0c4ef2fe65bffb8240e14fb67363f9400027dbaca770ef0838ffa021bf69838e0c4ef2fe65bffb8240e14fb67363f9463140db65fce333add9ebfa8a5b1b26e2f6498260532ebf558643352ecdd9e52fba7ab1e19860f44c28f205e87eccb25c1ab898c729ccc93a1f897c434a95f28fba7ab1e19860f44c28f205e87eccb25c1ab898c729ccc93a1f897c434a95f28cee0ac268b0a72af78a7a65c56b01c0f62585a2d6a15f716b3a1a63c409a3b4f7b4a50ea27be70019b51d38ec66f6448e163c43d33b30b2aebcf5b314c69ef6f7ce9071f2ac3a4a0813dfecde4acdcdd92b81ed3dce76c84633f6eb97deff0cd219a7b4e16abd8f3d565eb8ea0fa81152dbc9748e3b0edbb9cef973484523e56c89ca84c1dea7bc3bb98c77f002e814e63711c02f2b65b9b0da3cb58fdfb80f4c89ca84c1dea7bc3bb98c77f002e814e63711c02f2b65b9b0da3cb58fdfb80f4b21c7a333ae989f2b089d686359845adba1493617513a5baea0b65e673537e8fb2f75e06e23b38f7ef4a36b29cd12617bb92b7d4ced21a80726dc4136b52358d809b8735430265334cf72c6a9faee0d090a1616263b710637e95bbf0c27801cd82fcd82804072c05b7062264d89fb881db1c1df0002187799d3644c42e9f56de6dc79a212722234a3bd4067a9fe0d1fd0e27cadd703026a5214f31bcb561888e6dc79a212722234a3bd4067a9fe0d1fd0e27cadd703026a5214f31bcb561888ef1bcf18985af5f098d614d8e300b9ba6d0f1ab36514a5c59c6f1d42610eb7d8ffb24a7e6d0f2f07509bbf6af4b1ee5a02d4b44d353a80a81c414d7a43d5fbe0cda0860be23e3eba43408dfe85f46746b5a78c271144ba71349a15c1bc4adf8e6043d0bac04276fe3edc67264920ae8b9ead975487688d70352bd2de7d58b2dbb5b341562efe0bc7bb54e9cd5840eb162dcfbc84641eefda4bb5857f3cfa480885b341562efe0bc7bb54e9cd5840eb162dcfbc84641eefda4bb5857f3cfa480886a4afeec63a7cd93dc1f8fd257d50b32dafde026b65174086800a19769f743a50a7b7b5c459b464a78a5538e8410a509105b12e2c377f97a4b6eaf95209e03800a7b7b5c459b464a78a5538e8410a509105b12e2c377f97a4b6eaf95209e038094fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b2464db7d96314cbb1fb6d57b2e59e836fcdd74a5b379325e7d31d649dae1eba72464db7d96314cbb1fb6d57b2e59e836fcdd74a5b379325e7d31d649dae1eba7d0b67c6d2596a41fa2d81e2d5459427e21706ee0a2685d66d85efa3580350ae16db83e8e0bd2e98495467877520ef1d046767438ae2553ec27af705b7df400c56db83e8e0bd2e98495467877520ef1d046767438ae2553ec27af705b7df400c5c6ada460a039c038fbaaf71e12cf5b7b1679ef1cfab6dcf7fc082659ea8449d36ff5d27a1b658c84a30beffe8c297d0de9a2e3cbb1c5ec4408bc8b48f1386d2b6ff5d27a1b658c84a30beffe8c297d0de9a2e3cbb1c5ec4408bc8b48f1386d2b0bd400f800a821a304997024a93d6a8584c8fef88d08c36cfb543b36dfbd96791e7f5b3826acf0b4f77d70a38a533d3f3ebfb00bfb0078c6071a51bf6de12e761e7f5b3826acf0b4f77d70a38a533d3f3ebfb00bfb0078c6071a51bf6de12e76b7fc00db529973111686d7d8eef7bb8e4ed62002beeb2ed06c79ef32c1ff91f3e5924c3f031001d8ecf2d680199d52349f463962945aa1d1069cd5f39047a249e5924c3f031001d8ecf2d680199d52349f463962945aa1d1069cd5f39047a2499edc94ceeaabe09aa33065c5962e9ac4a3461b1e7b9235bab9e74e78caecc306f6605fa307a281b9d9fb6b31a4ab3088681c2d46d7ce98abd9bb818cb0608410f6605fa307a281b9d9fb6b31a4ab3088681c2d46d7ce98abd9bb818cb06084101788438a4f8895ad10285e0566a725ed555de28480ed2e7c16aa7f0cc0ea2e6a98d48fd1c60fee52fc98464bf2ef6e899fedeff6f29fc3a0b9a316044eab4c1c98d48fd1c60fee52fc98464bf2ef6e899fedeff6f29fc3a0b9a316044eab4c1c051b1ef08da961865bed7f5ad47fec34ff1ee33bd9a43796416ff32d623e743251c4ab053691112891adf7b873d55d498fdb664e2d4416354e3d630f668d8e1351c4ab053691112891adf7b873d55d498fdb664e2d4416354e3d630f668d8e13910363eddabc596aad0fbfeb4364bc96d03ac951a5fcb40e3aae4d1eafef087ea798c41eafd46055c17b371ed040a79499c798a12cb2f73cc473eedff86d4eb9a798c41eafd46055c17b371ed040a79499c798a12cb2f73cc473eedff86d4eb94dcbeced593312c187189f7b300653e8c7b08680933d635df409d717719b4f79fd5fe9bd6a53c324fe296e3df43929e77c8997a090abd2eb23bd1be01bb5aacafd5fe9bd6a53c324fe296e3df43929e77c8997a090abd2eb23bd1be01bb5aaca278782631d4250ff5153d2d579cf03eafa7c7635747823b8a88a91571d8f8981bf8101227f69bbdb8793e3599010c53cb76e5ec5b003e4ca5dea6b5ddc9191c5bf8101227f69bbdb8793e3599010c53cb76e5ec5b003e4ca5dea6b5ddc9191c55e9e6f0175a8a6ffa0df0baea0929f62450d2ecfe76eb62cc4ed9ff87cf4d5a9e598ebb29359780a450170d38966c7f5186b8c411d0b69df1a4fd8071c55d4e1e598ebb29359780a450170d38966c7f5186b8c411d0b69df1a4fd8071c55d4e19f53d6c94f66536d125f7fcae9abbbc64d0a70d55c3b0e004e252482d842a66de7b43068a06a07c7c2b806e741f93ef988ce517375444f8e2dfe8dd26a74ba97e7b43068a06a07c7c2b806e741f93ef988ce517375444f8e2dfe8dd26a74ba975dc121e265904a1f1f82064863056e5dccce9d5de68ade66c8659fbf392e9563f87ee1e31f0ea682cd62cfc5054843eb83fc516bb2fce2605b540c08b10ac222f87ee1e31f0ea682cd62cfc5054843eb83fc516bb2fce2605b540c08b10ac2221abc7f349ccb030f409a14d30935fa7220751ac6e5cb8712e21187809a6401441c144988a1ce5bdcf8c9d193824ccea7154bae52df60bf5eea18143bfd91f61f1c144988a1ce5bdcf8c9d193824ccea7154bae52df60bf5eea18143bfd91f61fab3555508c0b526ff63ae121e5ba94acece442fc7a5d638a439ee6ac86da8ea4ab330f89a1de65306dcf50382ce1e3fb3097a163a6597e7298f0e42a15e49ea8ab330f89a1de65306dcf50382ce1e3fb3097a163a6597e7298f0e42a15e49ea8a8ee7c07d77be044ba49ff6c05df494e8b2fde2a6101d9d15181c49b16ecf1c7ac3e7504975034b5fbf96f813108d423d315418c62937053cd2018b4982c0141ac3e7504975034b5fbf96f813108d423d315418c62937053cd2018b4982c01418fd2ff699ba59ba29dfc9fbb2baa5edc1512221fa01f7da36774cb53d6492eff9bf918d3095583eca7258155524c4c24af72595996f718eb69e96566cd0215d39bf918d3095583eca7258155524c4c24af72595996f718eb69e96566cd0215d30cf57a03aebefe5f997bf271a46489cef31320f6648ae04fcc2ecb385b946fad4a4f9274dbc845227c41b8c8e3a7d1b2e3caeee6e8f8dc53875cf27e8007e2934a4f9274dbc845227c41b8c8e3a7d1b2e3caeee6e8f8dc53875cf27e8007e2930fd7ec1d62a6438436b46c7245ca5ec4f5dfb34b2b737576d4dc2bb017f5deab53077305cc5dee0c875b1de6701b3168c8cb9a551d746b9ec1354f4ffb74c53953077305cc5dee0c875b1de6701b3168c8cb9a551d746b9ec1354f4ffb74c5395d693fa9005b94f849f91ee7e96a5a490b3b274495166a312cbc681d0041152db2843fd14cd23c9481cf63a594fc91cf1b86817a36f120a15fd34f7167126a8db2843fd14cd23c9481cf63a594fc91cf1b86817a36f120a15fd34f7167126a8d100725d6ec33f85c7baec871fb218818ab7b56e0ed583d1fb03bb1b6a652d473dee1b357abeb297a0817bd4bb6178558a2e6947c6634d5aef0a28423be49a90cdee1b357abeb297a0817bd4bb6178558a2e6947c6634d5aef0a28423be49a90cacbd0abfe6b3dd622722fa25a40224de1edd5f0868b4587a9423dba4bc8ea2bbc73eac18a4135da47b1550b57ac089606cf2c5ab85778d191127abbd7d4ccd77c73eac18a4135da47b1550b57ac089606cf2c5ab85778d191127abbd7d4ccd7773f45fb0fb9dc0c74b189a7413caa868a0f0a66def05e069396208e0200f9f1f5ad4cc464c6f4e3ef3a353dede74babf660e79852bc9b61395143611d443054e5ad4cc464c6f4e3ef3a353dede74babf660e79852bc9b61395143611d443054e8cbd13b83be2aedfef8d97b7a2678b6c1b1d3b83e4e7d151d55c17468c3a4dd7acb695058430020e52df9471ea22fcbd02531e39107ce4512607bc7939ecbb4facb695058430020e52df9471ea22fcbd02531e39107ce4512607bc7939ecbb4f16231c48e3badbffcdd2a397025842ad64790fd6236709efc1e169416d596288ad24c174aa9b445e3360f1032559a0d4726ad225127e9ebdd5a4b173795ee848ad24c174aa9b445e3360f1032559a0d4726ad225127e9ebdd5a4b173795ee848082e8d9528f8439f416ab7c93e871c27d80adc48a591f8aeb4e8b5a697bdaf1961a027437123559717ffd376c78775a3ce8215eeda70cabf1690e094f88e6ff561a027437123559717ffd376c78775a3ce8215eeda70cabf1690e094f88e6ff5128f5ece1e62d3a477d4cc42bba89f85f84daf95afb0ee29ca69f481eca04bbb1367b949665bfef5bbc0a932daa93ce271c5a7fcceef6809a6f20424ee52a9431367b949665bfef5bbc0a932daa93ce271c5a7fcceef6809a6f20424ee52a9432750fe482984b47f42a4ee219a60aa208ed8d456cb742119722ee45f747b946ee9833198477ed38b977a9923f531dd75300db8c728b080828c2febf5da460fb3e9833198477ed38b977a9923f531dd75300db8c728b080828c2febf5da460fb30503576cab54eb11e3e2b77f0b9d099f5137d4059415ac5f54f2ce570e4d4afeb9934dfacee06fad8d71ec0417d59879b3fe6c66ac65c885327df3da64e1a7c7b9934dfacee06fad8d71ec0417d59879b3fe6c66ac65c885327df3da64e1a7c78e0c24f077b40ae9e355cfd7c367bec5fd625c8a9c773a7049e7832f87d171b8502f6e6ffa9f28d4d1afa415d5b46390a6315740aff8f87cc8df42325fe5c4e8502f6e6ffa9f28d4d1afa415d5b46390a6315740aff8f87cc8df42325fe5c4e86e24d45f1f3054da9fa47f105156f313d0cfb0e9803b892c063e1d2b38b19f3c87b86250a733432de06622b57059e337fb05f580f1882a83e316eb7630ca083ce83738ed58cb632e684bae061fca241ab015111e897ef0fe98b242b24043fa2245d4dd7565d60bc30ce839e452f64e68a2ff158959c84ce002d8649e635c88227a1a8b3b0d0bcbd76cd76100ea5fb08f8a1b3470a185aa5df6ce8f0f2e6b74d27a1a8b3b0d0bcbd76cd76100ea5fb08f8a1b3470a185aa5df6ce8f0f2e6b74d20503576cab54eb11e3e2b77f0b9d099f5137d4059415ac5f54f2ce570e4d4afe749e425e6c733e9a0c571906e10f41da597441131b43eba146599d885175a8ae749e425e6c733e9a0c571906e10f41da597441131b43eba146599d885175a8ae0503576cab54eb11e3e2b77f0b9d099f5137d4059415ac5f54f2ce570e4d4afef150f19a55d646c6919aae36f377c1cc85cc161eda5a8fad25b47138ee733b61f150f19a55d646c6919aae36f377c1cc85cc161eda5a8fad25b47138ee733b611e2da3c0fa5f178bfd6fafbdccb606a160e3a248b70e57562422235426b0b6952ea172f6014a61ed3a4680936cdf53863d44c7ea485de5766bc56dd793db5ed82ea172f6014a61ed3a4680936cdf53863d44c7ea485de5766bc56dd793db5ed8ce6f922e00d398133ba62181983a065bad638f58b6aa673f2ec5721e4d7d383eb58967ef2638d248c4e57b466b5b70114aa4bd9d94a8bb72a234c3333d03a183b58967ef2638d248c4e57b466b5b70114aa4bd9d94a8bb72a234c3333d03a18326e31d79cfc951c1117f9a9b08c7970824dc5ab71f03dd6412030023dd396e61d16ca31daf927891a1f3d73f8d4606eea6f876b00dc08ddc444d3f3173470966d16ca31daf927891a1f3d73f8d4606eea6f876b00dc08ddc444d3f317347096628ebae66b84a4fe07bba8dc1d53d974e7ec1eceffe3612fff9c64c999ab271078d815171139a54cbe54cbc26ed8c8e9928bb11960cb66fb8fd38d0fa247c49358d815171139a54cbe54cbc26ed8c8e9928bb11960cb66fb8fd38d0fa247c49359c9a83406a018b8f986f2a9d835533a6015da116c3ada5c7180c0769b5ea9e8c11f185a20b207f523dee6b39970927e1c1cb2069230d4867f26321111a68296911f185a20b207f523dee6b39970927e1c1cb2069230d4867f26321111a6829698427203eaf56f82f4840b413bdbe16b086bcdcb2466402436500606895903dcaa1ef4e67baaf2dcd9f6ec5ab6779b2f83023f8318dc2ede9b7a616c579d0e111a1ef4e67baaf2dcd9f6ec5ab6779b2f83023f8318dc2ede9b7a616c579d0e111049ce6c14654bb227d22f0a0db1422d6d02262ef3744355a9abda3c8620f555d6767b2d8908b0e488d54b9b6bf92341987b7f5d3a2914eb3743563f1c6df68996767b2d8908b0e488d54b9b6bf92341987b7f5d3a2914eb3743563f1c6df68993b4f73cccf4bfb5941264d66d6ef05aff2aa5783070b84b60ab4ea9d4cc0de119de8650dd3fecd6fd35cfcfffaac92b62d5e9781dc1b75c5aca08022953ffe3b9de8650dd3fecd6fd35cfcfffaac92b62d5e9781dc1b75c5aca08022953ffe3b36a4154ddedf8373a6fe2535cc4c1570a2072e03dc6d42df93b19b3b766a1c375e4754b28896823dfc96cbfde038892c6c4673a7ae8d129ad1a6ac88ded3d8c45e4754b28896823dfc96cbfde038892c6c4673a7ae8d129ad1a6ac88ded3d8c4caa0ab52a8a27818ac82631bd87bed7b4f2f85920f8928efa612df0df395892751bbc3201e4b1954ea15688b0ee596cb5cdaaf3e04b39349fe3e18e0c27e409451bbc3201e4b1954ea15688b0ee596cb5cdaaf3e04b39349fe3e18e0c27e4094d48ff6138ecd594dae74b6b04d8a86520e1402463faf5aa9a72b0cf61a81bb1885b5832c5fc71e8f9443aa35da2c4f3fd3c930f9dc8aff8a82e83a3fb0c257f185b5832c5fc71e8f9443aa35da2c4f3fd3c930f9dc8aff8a82e83a3fb0c257f1fc598cc023e67e572157960b6f095d9353b8650b3977841db3b8572032cf3862cc8de39683390e0dbeea43f9fd4ac7f950eeb7bb2042ec0b3f8226744b8c8fdecc8de39683390e0dbeea43f9fd4ac7f950eeb7bb2042ec0b3f8226744b8c8fdee9ad9b8a1029e69a238827da0a86e36b914b1c5e0aa9cb5d4c30a61325c0af2933eb618cd0c4c85315ba7ec29b7038bab3a9907f28a1ef926bea9a42e63dd35d33eb618cd0c4c85315ba7ec29b7038bab3a9907f28a1ef926bea9a42e63dd35d65f2d8492897e028870f072a2683368688d9900b1bb33742f8e6c8a82ba4bd4d4160ac4d820d9bf60d52183ad125d1281a7ba6b04f2094005dfec31b29569db84160ac4d820d9bf60d52183ad125d1281a7ba6b04f2094005dfec31b29569db82f271d896bc174771a3d822f046044b0774b3303e3c1de437380dee7f3dd1ed0c39d04400762e0bde6ed997cf051159668169d47970da0de09e3905210b7ff25c39d04400762e0bde6ed997cf051159668169d47970da0de09e3905210b7ff25aecff21110b20b24772d3c0ce97b727529c679e3a6c8f3c840b6a756b2385294b0009ac818f17c660ed8399d6d2f3b309d52d089c021285eea344d42dcc69959b0009ac818f17c660ed8399d6d2f3b309d52d089c021285eea344d42dcc69959ce7eb7ed612a3bd620acb55c47bcc73c3a0268d62b11d62d9705897861b99b82cd76ed67886768a2d5b0829a74ed068dcd8c0ffea5d31182b9256f3cf6c55cdfcd76ed67886768a2d5b0829a74ed068dcd8c0ffea5d31182b9256f3cf6c55cdf167d7ca58478f6f9a8bbef86612057376eaa35bfd11331660ee1a29dd2bcf119c0baaa75051955a5b388b1d0442d1e32459ca43141ca6d06cfd1b8e17a311c5ac0baaa75051955a5b388b1d0442d1e32459ca43141ca6d06cfd1b8e17a311c5ab52c03d852e6a83796c408d4f81abec9a4ca2a7eddcfebbcfab06c1d995398c639a20414b80e2d4fbe5fd17bb611ce0abdded6f129e06d251f06fcf92370f08939a20414b80e2d4fbe5fd17bb611ce0abdded6f129e06d251f06fcf92370f089bde992453a795fc41298ad7fd71f435a8edbe014d9ee165be81018774d8b01c0e6a054b6c79439bfbfb7de929e5ad2e6000f01049405dba2920ce06c344fb433e6a054b6c79439bfbfb7de929e5ad2e6000f01049405dba2920ce06c344fb43306f9418cda59607e166db82a74b967c5a2cf9d02b79a25197653f04c8a71fd9d995f05e15c9e5b6ab10bf24bb2806daea9c8e584b4f1ac0fb399b37feda4584d995f05e15c9e5b6ab10bf24bb2806daea9c8e584b4f1ac0fb399b37feda4584d2101757fb447a98ed5aab14430deec2c60029c0ad8470dbec2a884a50700d30734f4343c874354a3b558b93cde755f24529598c03a29c7bedcadb007d2650f9b34f4343c874354a3b558b93cde755f24529598c03a29c7bedcadb007d2650f9ba451cd57eaa1000fa6287af453d6d6620dbe437c00982f4dbd07d7130a73c57d603fb45b1f87fea3343d5ef48fd66690e87dffef487a053923626077bf9947df603fb45b1f87fea3343d5ef48fd66690e87dffef487a053923626077bf9947df01381583fe3c934f60c8af016535ad173cb9faaaf2a0fdacc14c1a9eb45a7f6944477c15d8b6e3aa6f3ff10a9ce18d37d587864c073cb56c3c24a38d9045b88144477c15d8b6e3aa6f3ff10a9ce18d37d587864c073cb56c3c24a38d9045b88151bdc0f082c36ba826dfc7caca4bac3884a278905c16c93bd5f6689f178c5a51319a6d2f727017c5787b37d48fa0527270c39052ad513b3f9f91a30343240790319a6d2f727017c5787b37d48fa0527270c39052ad513b3f9f91a30343240790df1b80c8439e5477a936f252a8fc755d9170276615fea9d3e3b37183efe92e9780109b33990da6c621040cb48d1b43849922d011deebb5190bf6af746fe6ad4880109b33990da6c621040cb48d1b43849922d011deebb5190bf6af746fe6ad48cd3dd188c711f760c8489770519489fd805d09d8e30f5151267b9abcc69a2cda15ef4c883bd2561c66df4ae2f858e9918ee1d86021ac100ea8f46d8a15ca537215ef4c883bd2561c66df4ae2f858e9918ee1d86021ac100ea8f46d8a15ca537264477be641e98c5fc649da101bf81f242ce9bf8244de9df761882630fa4c46c9c342b8fe943b9d190b1d4b683831029dd372e96385f78e4dd0d2633ea581c2acc342b8fe943b9d190b1d4b683831029dd372e96385f78e4dd0d2633ea581c2ac825a3ffc4cd463b3f2398cdc14170d3345fd235904bf58ad48ac6e118e06cf120bdd17203eca0b1fe11bb2b74ff229246b3cf230eeea3d168fdeb421838abb0d0bdd17203eca0b1fe11bb2b74ff229246b3cf230eeea3d168fdeb421838abb0d94fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b03c5f996faf6df70fb3ebd82a5f136e25f0aea38dc57fee461a9653d7dd568aa03c5f996faf6df70fb3ebd82a5f136e25f0aea38dc57fee461a9653d7dd568aa66abc48d4aa184e19bbbe08f36962a1276844946bb69514ac74d91dacdfa94d675cebc5b9dd99a40eb17d3cd584c7216ce4c7c52e19f5250e49148ebfb2cafec75cebc5b9dd99a40eb17d3cd584c7216ce4c7c52e19f5250e49148ebfb2cafec88f557094d6594332ac663b3cffe31e0cb69ead01e016acfc4f5a3b22e3eb0814a0c286552345f38ea431f1b0a2fe55d2b668b6b5442f346d300d51fe58277b64a0c286552345f38ea431f1b0a2fe55d2b668b6b5442f346d300d51fe58277b6b2f6944fc0b83d611a9969b65c9ccfec011a10e27f5fc31d6bdb70fe7549c2b0737decca17f1f5c02f79a0aa7f9bfee7ccc6135fee9db47e44bd025db2fc15bb737decca17f1f5c02f79a0aa7f9bfee7ccc6135fee9db47e44bd025db2fc15bb857532e589dde32d8d35edcec6c53f23217a23147003161c00bb32bac3f9c63e62122b57c79b240d41c50a85dc7ae3055ae4ababb3a159884cee509edac5d99762122b57c79b240d41c50a85dc7ae3055ae4ababb3a159884cee509edac5d99757fb01e488a9a4eff72539c91eaf75874a16829e5053f88c50c2c4fbcbf683267874e9536d23e4e5a1b592c93a7e54a5b08207c65cc1d2951053330a3a2e7a1c7874e9536d23e4e5a1b592c93a7e54a5b08207c65cc1d2951053330a3a2e7a1cc2fdf12d47c3241ff3b3f248d3ef1f69580f21e078264aa6777d6fb8957b0f96a4bb99eabb7faa07c7d198c0f2746296a788088f27e75fa7152c818776212347a4bb99eabb7faa07c7d198c0f2746296a788088f27e75fa7152c818776212347141cf98f24104d96e4b36b822a558f0f6dda4f1ca22bf6f17cbbc3e81a04342154c0f410d3057619d30272069130ccaedda8dfaf30fdc0f732427c8d370cbc1354c0f410d3057619d30272069130ccaedda8dfaf30fdc0f732427c8d370cbc13a9352eda8b8f77af459df8ff6790eb348ce9466751153a4a1b30ef24dcfbf0a1e2a477bef8eb6135c1e70fa4e345e8f3f79b0d6b917b52e355a0813096ff0126e2a477bef8eb6135c1e70fa4e345e8f3f79b0d6b917b52e355a0813096ff0126ed1dc58ce4e8288ae53b3456c31bc6602b6bf6033a6ce7a467a71fde08a43a60699511874b6792d5a4a0edc97592047197c7eeaae34793a58ad864993824b25e699511874b6792d5a4a0edc97592047197c7eeaae34793a58ad864993824b25eaee4782ffff2b70c710428df3aa8539aee99152c8b8727e9c5bd6c971104f47ccb0b8a4ec3f9fcefd389f81b1c5a881befd519aeea9f73645ddfdee6dc942706cb0b8a4ec3f9fcefd389f81b1c5a881befd519aeea9f73645ddfdee6dc94270651b467ec26b0e1e33b9b3e4d27babde25842ae886a31bba879fd47d69055fdef3c8fad2d16b69a2c360f75b73c18239773ef055d535c4ed06df4fce1b5ded3de3c8fad2d16b69a2c360f75b73c18239773ef055d535c4ed06df4fce1b5ded3de4149b5f98582a77bdd1b5c6d28c234c9d38a6faa25256926f4f13c69e5fa069cf4a3665a27bd2ce8080a1a460b09d80663094f6693d427cb53133e87a184b5bef4a3665a27bd2ce8080a1a460b09d80663094f6693d427cb53133e87a184b5be6f436d60c08df4315d2567d399ed731bdcc8b91807928abd839657ac71e1abbd0937cd6a70de336661127e24c930770293e2ed1bc084888c193314505f8e66420937cd6a70de336661127e24c930770293e2ed1bc084888c193314505f8e6642609625e54996be7a484c7519398db443f35b72a9ccc605e9d13b740724d4cb42ddcd2fe7c07e8bb62f544afa6a79e7ac5b7c472febf4bbb1100344ff395f5a16ddcd2fe7c07e8bb62f544afa6a79e7ac5b7c472febf4bbb1100344ff395f5a1694fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b5c0bddd32a76b0efea9d499c334e3a5e36d833a18c66dcd65da7b51278164f965c0bddd32a76b0efea9d499c334e3a5e36d833a18c66dcd65da7b51278164f9608b21e3b237b6f3f9a706be63d985770f8318246ab4b98e756278b3f6a723c4c6e80e2813f704d74771d37689848d2714ccd4dfbe3439bd634ba089779f18c3f6e80e2813f704d74771d37689848d2714ccd4dfbe3439bd634ba089779f18c3f4b70f85a78c17e2ec025301646b1d3c25a2c63fe45fc3e2a34bf610991d35fd8cbf8e8351b561bf116bc5bc3cfdd082f7c13819e32a9c98a58dc9fccf39171eccbf8e8351b561bf116bc5bc3cfdd082f7c13819e32a9c98a58dc9fccf39171ec014e486c6b8f2b0930dffbe44363aeef89b89aa5b2daac4b4402da0a08f49f6607ff7d06d67502de1dfcd234c00df84cf013d2201e8f7b194226836b82c9612c07ff7d06d67502de1dfcd234c00df84cf013d2201e8f7b194226836b82c9612c06e4b1893df30df210bf12a4710879b1eeb1d2b925b3a36f7a0c9f1e18eea940ef0a6e53ed754dc9150e5853ed53b7a70b4504be35f06f4d8c80cdc828f5364eef0a6e53ed754dc9150e5853ed53b7a70b4504be35f06f4d8c80cdc828f5364e1be75f7e9558ccf75e2105a8584f2e6192580dfccab4626062abd9d5ef40b08c730833343856162ebc78a97c252f6c0e1762e8d26265b61f69f82413ca924322730833343856162ebc78a97c252f6c0e1762e8d26265b61f69f82413ca924322e9315250796c0899514a6e472ae66699826e65a972e0dd6eacf63d0291ff46b2352114d951e2134c78fb62908a0b5154592af39c3c49dd28639f8e385944f111352114d951e2134c78fb62908a0b5154592af39c3c49dd28639f8e385944f1113148693357bb3f76b1158f62822b3b5ffa2218e1ae5becbd0376347f73f58522f9cde537fe263991ec228828fbafce4e97dfa15084a2ac667c3747e21e87ea9bf9cde537fe263991ec228828fbafce4e97dfa15084a2ac667c3747e21e87ea9bb15d2d82463559a643087fe3406cf526f867664918cbecfce2a7de222daf29008ec1ed94568b9a765aa37813da5e052f6206d16b84f324570f03885fa82c61c98ec1ed94568b9a765aa37813da5e052f6206d16b84f324570f03885fa82c61c903951278aa4ec1f27f0bfff597dc8391815d70165be5c3c37e8f2bb74607c308dccf03b5962192cb28474ab800bc6c48702d76b5f5af238aaacafd7700632fcadccf03b5962192cb28474ab800bc6c48702d76b5f5af238aaacafd7700632fcad10600a0e44be499412a53c3fd615d4679d753168bb69831d205854245cf85a0b41e0ff3397087c1c82a774abc99d72a8dfee7ff37ae2479088f1ece75c2cd01b41e0ff3397087c1c82a774abc99d72a8dfee7ff37ae2479088f1ece75c2cd01a1aa2ea185feb43acc752a3f7c43b7085377a9d61ef08b8d31faf7fac3f311b60e93390771acf58734427e05b44d27515d740f42df43412f2cc0bad6e81a9cca0e93390771acf58734427e05b44d27515d740f42df43412f2cc0bad6e81a9cca2c97728ae56b708a8d23fe3c356de50f43da94ff53541be422261a4d2c20a0bd37fcfed63a8bb340bfb0003c337a1c7e70d929d7e50a56fdc5756938209ef92737fcfed63a8bb340bfb0003c337a1c7e70d929d7e50a56fdc5756938209ef927ad7c2841070e3c67140396e6425231840a3c37fdd357085bb5942876ab7d92a3fdcaffde378f73ffc7a41e3dd36a216f7126e74b279c150802d4d3505df03738fdcaffde378f73ffc7a41e3dd36a216f7126e74b279c150802d4d3505df037384b6b7834925a9b28f55dc8169d63b4c75f65d794a1d3b908c31a14f0d1dd205a1c7dcc92ee177c0f81dcf58faef7907943bd97e51622778dcfcd0ae2ef2e420e1c7dcc92ee177c0f81dcf58faef7907943bd97e51622778dcfcd0ae2ef2e420ea7759f2ee629344b94554e5e95c71562d73da91f4d40dc973b6c14f05e58b9f4296ae8c79211000cc01d3cf73912f03312840cac09fe8bf5245e16a51a595dde296ae8c79211000cc01d3cf73912f03312840cac09fe8bf5245e16a51a595dde873a516e1598efce92207ebd5dcba46154518a067702c037d2a0443d847e945bfc7fece377571c2a1353e96d2d9bea9e1347fc5a194af1bc34a650cc9456291afc7fece377571c2a1353e96d2d9bea9e1347fc5a194af1bc34a650cc9456291a5f789f731c2397af58042d7a66c8da7f8611d517909eb984b90498f117546c5d517bf6511df9b87c9f38ed860293fd1c0057d7d067d8bcbc5f0be87ad5124969517bf6511df9b87c9f38ed860293fd1c0057d7d067d8bcbc5f0be87ad51249694dc83f42f51ec2b93fc46f05cd111edb415e90d98f8c5e21719cf39312bce0cbff352a69eb407ca541bfc248a53107b99d5ce78cc7edb002ffff4c8acdee7209ff352a69eb407ca541bfc248a53107b99d5ce78cc7edb002ffff4c8acdee72094f09cc38faffcb86ff8e2d370991a349f034fa84cc4f130c926d22c03889f6e636e5d50d2b24e98876951b9767290a02c5d3e085a7fbf235468359d89f68b48c36e5d50d2b24e98876951b9767290a02c5d3e085a7fbf235468359d89f68b48cbbe9fa771ec4face0f197e4c37f049ac010a11fa87dfdf8fc11eb6a2584fe5af6bcd4de63966c50daf0d746d0e2801552c54b5183813001e27b31de0aeafb4806bcd4de63966c50daf0d746d0e2801552c54b5183813001e27b31de0aeafb48084b91c95727a87e49f879054cd4d82232280098ff9bcc2536744e675956daf7362996e4346047804992e86519e82c9f848ecc0db8c70777d9523e4d43d6158ce62996e4346047804992e86519e82c9f848ecc0db8c70777d9523e4d43d6158ce64477be641e98c5fc649da101bf81f242ce9bf8244de9df761882630fa4c46c9c819c98c4fed7658fabea13e0d7ec9f7f41615f3a5047cc8677c046770b0515dc819c98c4fed7658fabea13e0d7ec9f7f41615f3a5047cc8677c046770b0515d64477be641e98c5fc649da101bf81f242ce9bf8244de9df761882630fa4c46c9112faa64a77418303cbc31fd32da855baa6b0552b7bdfb21c7dfed8d43e18d6b112faa64a77418303cbc31fd32da855baa6b0552b7bdfb21c7dfed8d43e18d6b0dcd4c903f7aa1428b284df9982e82c4237ffb4d3a9488ec027dfe7ac43d43226e78dbb4f48173fe1a882be5679a70f45f8b8b7afbaa862ef06eba08ef6e184c6e78dbb4f48173fe1a882be5679a70f45f8b8b7afbaa862ef06eba08ef6e184c07c447bfcd963aed3d78a3345856288d163ea5dfe796adf5625be638ee21d6cf60e1c8b07fdcd98092853627ddc7b1791d0105e304cb1f25b45cc33bd581974460e1c8b07fdcd98092853627ddc7b1791d0105e304cb1f25b45cc33bd581974455d8320a2dfb2e2c8ff52dc5052de9de18208e52898bf4781d02c7206216698335a1e68d6f41f3bc0d1415bc294edaf0a3b30712ebca68324258e5689b07edd535a1e68d6f41f3bc0d1415bc294edaf0a3b30712ebca68324258e5689b07edd51129a86e94252e0778a4ac6ea49a3cf1c8e07d171cf1277e2c07648ba85462b467cd511e74193fa00107354f8a7740b9746372c34a8be9c3939d4351496e6ba667cd511e74193fa00107354f8a7740b9746372c34a8be9c3939d4351496e6ba6e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557ed5f836a468ffc7c3cf4abbaba504d47bbb16829a15b3250257d64e2a4df0197ed5f836a468ffc7c3cf4abbaba504d47bbb16829a15b3250257d64e2a4df019e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b8df62015d68b4b0decab8960d62df4b111626efe55406ed74fbaf1c4cc030d2b8df62015d68b4b0decab8960d62df4b111626efe55406ed74fbaf1c4cc030d20a1b61f4589c9adf8d614abc385c8ceb752e54f36264ccd43ab5bbdc96b60c441c2d8661c831543f174fee0ecd116502458e61f9ac5b831bec3a6b3ffbebdf841c2d8661c831543f174fee0ecd116502458e61f9ac5b831bec3a6b3ffbebdf848f350642d86af4525a4d67badb0388c42b58b19d9d1e73d60c7ecf23382268eaa4e20281f6fb0acceade1f3b0f189360f414313c46168ebb2a1cffe8be20f487a4e20281f6fb0acceade1f3b0f189360f414313c46168ebb2a1cffe8be20f487dde99b4e2303fb15daee79e8ec1191c14d1165a086eb11564042e3ccc910251e8311415d839a34e0fea552fdd6e22ce91ec1dbfa60ec52031d86395a0eeea6f78311415d839a34e0fea552fdd6e22ce91ec1dbfa60ec52031d86395a0eeea6f795e2e495d846de82c5db95b80601a88fadc6f381b816edb7ba5b06d5877dd4164251d3243404da66d91d8bc2813e4eb5fb9cd9ee00ea41940798d28b00574b124251d3243404da66d91d8bc2813e4eb5fb9cd9ee00ea41940798d28b00574b129b46b208c091dcb20e6834d9d010c1fa88e7d2ac6bbb8722b99f3659140db9ceff113f70ac0c96ef4f5ee88f998df1848a1e74245052637698bf73474e0e2c9dff113f70ac0c96ef4f5ee88f998df1848a1e74245052637698bf73474e0e2c9d78d03ffffd8616f099039ea40cbebebe2ff5119c6852e5140eb6a262a7e0dd419a278e1c5f064801a241d8a116fd4aca30396ae160bd241ceb16380e72e54c9f9a278e1c5f064801a241d8a116fd4aca30396ae160bd241ceb16380e72e54c9f65427d5b63333f20a58e40659627854d8da7f34097aa3fce920699eba009cd78513ea6f98ec805d4e4c08509fc7abf16125a8a02d57cd174a9f0ce8ad16a58b0513ea6f98ec805d4e4c08509fc7abf16125a8a02d57cd174a9f0ce8ad16a58b062bcf152977ed62346d22e6cdd0b24ae5fda8e11754ac085a770a656edabcb9342626b270f4bfe6f950f3b1ab8e7ba95d66b34eb014777f4ba980d33dbbd69a942626b270f4bfe6f950f3b1ab8e7ba95d66b34eb014777f4ba980d33dbbd69a9b5af49c50d5d8a5856f156607efa1b987a8c2113eb94d2315e77efc1d0318b62d18284cade50cb8d2d364204f0d08f7af5087fc37cec241981a7a1c413252a0fd18284cade50cb8d2d364204f0d08f7af5087fc37cec241981a7a1c413252a0f2d75c9afbc897fad08f7bfa6715336a5b4bae6c49416477329fdf8cfa615aa4b0ff3e48e87590d6e3c0fa06aaec10b6b618b24353eb10df058bf77bfd380064e0ff3e48e87590d6e3c0fa06aaec10b6b618b24353eb10df058bf77bfd380064e702e9666d30293910f2a175bcac19179c50614cbdf57bb6b9c2e7e38511a52f276aaf4fbd88f6f5839f8fc123118c7867ccf00301c91ce62f38fddac495491a776aaf4fbd88f6f5839f8fc123118c7867ccf00301c91ce62f38fddac495491a75c4064c08e1093cceffc12b45cc841b7e813ac3562c0d9a688d2c3741b9f52600b777c6d7b319e5ad762188c2446054d4b88d3355c038efda0c7d84d5a99a3080b777c6d7b319e5ad762188c2446054d4b88d3355c038efda0c7d84d5a99a3087b8e45e24445d1ca57900f40551c9a2f67ddc55ef6e28e011af4fb6f2db42a8a4cac795f1682e136e144bef1edd5f9c1864fe78122766c435ef63a43869eee2d4cac795f1682e136e144bef1edd5f9c1864fe78122766c435ef63a43869eee2d452505bcb3b45730751bea4f13215bd088afc2732fa4a66a5e902b21a0cbfbd341e3fb6d922acf7ff5e776ed3b0d91b28450626c154b6e76ee8a959ba8d1fafdd96987d15e3e8ed3780a317f5e96b09a51b9284102d11ac44edc77fc93b2f85041e3fb6d922acf7ff5e776ed3b0d91b28450626c154b6e76ee8a959ba8d1fafdb04aa98439ea23f2f1d7980472c93e0ae57b06f3f31f723c7e0698d432b38f1bfe4d6dfcaccc0b7cd9593d927865255b76a8cc05d1df568f80dfcb3f0d6784cafe4d6dfcaccc0b7cd9593d927865255b76a8cc05d1df568f80dfcb3f0d6784cada12983e65b042f7f4f0cf1fb82e2e58374f94277104fbb21f2ef00325aef7c38af93bd675e1cfd9ecc850e862819fdac6e3ad1f5d761f970e409c7d9c63bdc3d7ebcf48c86e00c7c16b77512b1fb732ce8563a601575b61d7921df93299cb8997d84d042bc2622d7ad9496bcec10b62d383ff5aa68e338a3c03c529fa08625fa1e9bcdb8956b75f43c7346a048baaedcd99a3e6fb15bfff6aa6f8ec7b1f5fe651f268c99a84c9bc8377959e23f578e8ec84e64633b87a3c3ba0d4dace5820b28af93bd675e1cfd9ecc850e862819fdac6e3ad1f5d761f970e409c7d9c63bdc3838757d9c1fe5c53b644e29d233ec06cb5269a9b0d61c2d8a9acee5dd593b0ba9b20184f1f660849ac88ea3aa37d0efbbe1abe20761d45b7e3296929949bf7a7fe0a32eb0eb6cfd259f687a7856faa595078b3c9f339f3815ccd73a2f3aaa51a4ca27310fd3899609e8993d2e39c21054f6e66c22c126b086c2bd9625160a1f4762a560d91c2a0f4a32bf9165f27c0b96dcb72ee6a3c1c9cc4790d98cb5ff5f4a8e12569efd8debb4df441f3e2b039fc5e4a891f0fd50fcabe38b96a104c930aa8e12569efd8debb4df441f3e2b039fc5e4a891f0fd50fcabe38b96a104c930a977298297ed44dd82f2bdca3460ab015c65b8cb7d75032b0209834391ddc583c54c6c3e4b705b5afdd6c00755137883d92e220b02bdcb467531d34f8914a13bd54c6c3e4b705b5afdd6c00755137883d92e220b02bdcb467531d34f8914a13bd8df56e09311b7da9c3ad83bff1c03aeb519329f8587f0136abc72736cb326a3c56265454bc82349ef4eb0401a345b9c13376417451de201b1b17fbbc2d33c41056265454bc82349ef4eb0401a345b9c13376417451de201b1b17fbbc2d33c41034c403ab070146daec8e53a385f3a256a5190192f6befec812eaeb562649611a137b77d44115552ec60ff3f222528d7eafdf34dc7204d614044f01a1a1ee1792137b77d44115552ec60ff3f222528d7eafdf34dc7204d614044f01a1a1ee17926840d8cf86f1ddd8ebd5d06c97ea1e9f3a06bb94d79f616e165ab49406d8ffe4fabedf286203ca09c78543a32fcdd981e507437e73a476c4333763e8d3d9d03bfabedf286203ca09c78543a32fcdd981e507437e73a476c4333763e8d3d9d03bf0353ba64a596f40f0f3d738c3a9b3acc75129282c0c03e7edb419f67efc3b3f4d2d5067b290deee3ca5bf151e146b5283b83eda3cc21806f484f3466c58bcb94d2d5067b290deee3ca5bf151e146b5283b83eda3cc21806f484f3466c58bcb91c50e2cc94c924bfadb0167b417be78205efa1eb17f41685bcc09363399bcbdcddf12b8de4ca4053829dbd76ae82f618cbf10529241762920a7438e573b5b14cddf12b8de4ca4053829dbd76ae82f618cbf10529241762920a7438e573b5b14c5d9da3348807be67f8f53ee6603f6e117ec3d1085bb07f3a537d83f312c539fdb0231a5ca898c23fd417205a583a85bc37b15dee5796cf9d48f5b34819b6169db0231a5ca898c23fd417205a583a85bc37b15dee5796cf9d48f5b34819b6169d04ca0192d9e6626fbdf832b68927baab23c0e03286f2ee2d4e6c4e02a6a42542722123a1eb667d6a16fbb62d78e55bab48ed581acafcd7ad04cb73d7cef6a732722123a1eb667d6a16fbb62d78e55bab48ed581acafcd7ad04cb73d7cef6a732909f312bb0f6845a8d0356c20c86339752296b97af241d466bb6afe8a7c25795c19343cb3374677d67a859750567d018d1190d0eba8a415bd13f8a5c5e75202bc19343cb3374677d67a859750567d018d1190d0eba8a415bd13f8a5c5e75202bc52779362231c5a407b94f80a42abd12346e31990bbf9055bd437059aa24b00f439c770a6d12ec69bddf0857b6ebab9bdaa56912fbbfc23ed229fda495ec7d0c439c770a6d12ec69bddf0857b6ebab9bdaa56912fbbfc23ed229fda495ec7d0c692b7a9f4f8e62a193b89e0e0cd049f3d7b3d0c94260ccb982caf0ae223be3d9f059bb52a8e896ca04c1217231dee9d0c73975a9a6b53145d2680cab673b7958f059bb52a8e896ca04c1217231dee9d0c73975a9a6b53145d2680cab673b79586dd91166e1ad0f2761bc4b32180a10a23e377fa59a98415b21c3a2e608985b79d7a6b5fae541caf3d8ec578b41bc3efc0b5ce84a2a66015d9a0e8b6d5a3dbf4ed7a6b5fae541caf3d8ec578b41bc3efc0b5ce84a2a66015d9a0e8b6d5a3dbf4e6e3d0d336a1f07b3b8684c8485489a770eb2ff112e0a7b7614fe248bb70787fda8c5a2b999e182f8453d4a23acc87dd37ae74de51772ce44329234c34f6da598a8c5a2b999e182f8453d4a23acc87dd37ae74de51772ce44329234c34f6da59804d4f54af1fcb67fe5567744224b0b6f1d5ff88bb220c5f0ced731c029b36ce4145436eed0baa09fbcecfcd315f76164291e3e931dfc87255d3cf8b1bde51332145436eed0baa09fbcecfcd315f76164291e3e931dfc87255d3cf8b1bde51332e348b686aeb3a0646d4b47892f7272e4760f0d6c9887163ede3f816911668b9fab05b03fcd26630c65415fa0bb03288cfd1a7d468664107613e0f48b1431684cab05b03fcd26630c65415fa0bb03288cfd1a7d468664107613e0f48b1431684cb9d18e84c007b56f160d4ce52187a028fdc6f0466cb91c23577269be237babcde04ff38915bf73008de541c8f3cac955a797a08cd252a848f2c69fa7693d59aae04ff38915bf73008de541c8f3cac955a797a08cd252a848f2c69fa7693d59aa82129593b031dcd005aa809a996d3bb0c31b6b9cf25877e1e51789ef27b44b42e9d3ca8cc9c39036b53a5201e22b6c5ba88ba7276ddc93f289eb721ca677879be9d3ca8cc9c39036b53a5201e22b6c5ba88ba7276ddc93f289eb721ca677879bc03dc9f34e0f20a196d6561e6db108743fca3ab4a1c9c53a50c89cdefd7cade97245bdaf6b3bfc81aab759c86b58441e7044c1a0befaf6308161ed929c93b4707245bdaf6b3bfc81aab759c86b58441e7044c1a0befaf6308161ed929c93b470cebeb9a37b394d7650b2d10a8550f5013e53c6a985977807fea42c43ee191c2544475ba1d4ee9a7f19138f31a420e18c6b8160695d75aa43801bcf077ab0f3ba44475ba1d4ee9a7f19138f31a420e18c6b8160695d75aa43801bcf077ab0f3ba82108bc3f483e7377b3fb470cde93d0c6d8d00394291d4edeb456d65aba97145201743ba2fe7ef3f59e231e54311691252741eff04a1c8cfa5eedb8d6e62d1ff201743ba2fe7ef3f59e231e54311691252741eff04a1c8cfa5eedb8d6e62d1ffa5eb3f142a51110fc0b2a11e185d2034b36c4b337f94b0ca942f731a2d11a608b4475da166687c0dbd2af922af8f5e6a1fbac59f10ebdce3c56d48e92a24c27db4475da166687c0dbd2af922af8f5e6a1fbac59f10ebdce3c56d48e92a24c27df91569c80d957eb643ff81f764cc65c26c6ea1773014c41cffc231f3d53c1233f919b193039dad5a4fe6092f92a4a6ece26ccb0449cf41c4ee95bf69f898541ff919b193039dad5a4fe6092f92a4a6ece26ccb0449cf41c4ee95bf69f898541f7146ed30e98c142f891a747bc77e629d0be055eebc4861b861e48a0db77f904a5dce292f253084aa23fe687b9a56445b3192dfd7e31363b23b293165b5a166075dce292f253084aa23fe687b9a56445b3192dfd7e31363b23b293165b5a16607040b31dfe22e5bd69388d463a5bdc0df145ffd261e08a106678fbe8c0bf89b77ae6369b8432d92d35ba11ffec89dc97d7d326b54baae1ec53b5d691d77c35122ae6369b8432d92d35ba11ffec89dc97d7d326b54baae1ec53b5d691d77c351225ecf3b5f99b7d1e1972fc8ecf45f2f0ddadde5c9f2c175a4e08adab45c696c06e38174f6881bac0381485f7481996c1d3ca710461bdd43851023823a6ca72c6fe38174f6881bac0381485f7481996c1d3ca710461bdd43851023823a6ca72c6fd2386229263dbc20e058ab9d9f5e01543001eee1fff872d421ca6eafc6669604f48909f4cce9ce6182786cc4adb6e368237a94a7eccce8fbf1d733440350e406b7486d562e1ebcc73744883129d4ad984b5e28c8c844e2f2c50fb91b131ab2e507d40bfd1b43bf7365ca28cafd67e845fb3360006f62d284b981059cc47a3760d9a76ea342f4dc400310599fe66d1aa98bfd92b3b0acc0483eaded96e20e633dd9a76ea342f4dc400310599fe66d1aa98bfd92b3b0acc0483eaded96e20e633d372978376c0c54edef3517a892272a8b2279c2c71c723f454b3f03b012388a55a6ff74653981442b31b55c6bdd89c2d4190171739cdbb8bca9fdeda38fc067c7a6ff74653981442b31b55c6bdd89c2d4190171739cdbb8bca9fdeda38fc067c7e9e8dc7b3c9e1336b82b4cd353ed822c62797c180370bd12e9de6df9f56f1d78f17be65dd1316a96ee17af4c6858b48345568b856310347120c1e97174a3b3b0f17be65dd1316a96ee17af4c6858b48345568b856310347120c1e97174a3b3b051ba34c36eadd43c4284e421189c16f256be368de6cf32225605015e9894f8179af93239a47d419041a84eaf995d09757927fdb2f416f264b911337c173b87cf9af93239a47d419041a84eaf995d09757927fdb2f416f264b911337c173b87cff2e2b6d3672500dada7f50f781e17f243ea3f9d3a9aa5539e474ee325f0c7fe425b35c4398e26c44d1a1fbb9db14f947b86925f1eb0953e6f06f18388f84fc6725b35c4398e26c44d1a1fbb9db14f947b86925f1eb0953e6f06f18388f84fc6721a2cfa4ea4e021fe85c651aba7a85f5ab42026e8f40beeaa392334485b7baf90b61487d9812310c4fd81c7207b0c637528f94e0f18873549263d5c33b9343ecef769bba4a93d8a8228e57e5abb29882b3814131b604098d61fca1cd7c94c99a4c195bdff8db59ed60c6494a24435ea68b9ff2c66022fc5fa28cc270994b669d4cd822a34ebf4cb8ebd595071c76f40df44a048615844b9fbd032de6bc906d82d09f74d7e17b8f4bc5332b31758ecefba1451c64ca346522f68dec8268f735042704014a74cc13649a758c8c7162f08b946043a329aff2f7c0165616cff758ddd75b33d18c1d17367c43738d4b5960a1e8a4c7e32a603e25318e07ecfd657d3cd75b33d18c1d17367c43738d4b5960a1e8a4c7e32a603e25318e07ecfd657d3c21170f8529b8b476c9d7ab8498132d4ea0c5414a9c451a5b89fae855a2b4357293d56ba2c4d61415662e2365327b7eb12157f18cff18db8c0b1f8f14409d551c0f30173588a81490af68c541258bca3163560a47ab786c93fc83a7d00aae366e09163b470f0b6998ddcebacc882b3ef45748b83cb1e8fe6aa627f838ae3d47591765452fd3e1e29439331d4a36cd8a2122addcea218e7e43afffa7cb4e76875a906f335ee97aec2025e3bcf6937e7777a41bde0ac6943b6a43b6a9fff779bb573f2925e4307a08510624a0b3da80b320dae557bbd3777ac6f15edcdb59c739fdb1eed88449add8b83f5b86a9fe1e5e19dae531d20dcc7d2aca374b4c6cf153f9c412aa8dc725ed6ebbfc346b7db7e878b107bd8cd657e9ff32fc631b469c2cb11826f7e7624329d77cd44badf84c5d13b576204e42e34c330694b072aa7e24792586c015083a3962d804639eb1bd303b45df62c3b5f0eb2d335f7dcb6b4218bc847a4db132cb9ebeb7aff2714f4d187d118b6e1161e72a9c6c3e26975387e91f8f3d42d3261065708199e1139a50df95a363af01e849129f0539f1b1b4ee18074809ef2f4fca567a0abde9b2a790b755786d67ba9049587a7147b51837635a6852b000d641438511b08321bfcbac102b7a1b46c3604216ea131841d096b631f4b4e0497804e46e0a0b0b8c31975b062152d551bac49c3c2e80932567b4085dcda790d5ebbec840bffd6f33b7ffc7392aac0d464e5fbb656e48d5b3e07257a53dc51f569edc9e8768339988e918d7a5bd2bd41fdd8326e91ef5d51ea89e8841dfc51f569edc9e8768339988e918d7a5bd2bd41fdd8326e91ef5d51ea89e8841df5bbfb6f6b20a1b705e03f7488a433ddc8fb7a82a9bbf807a5ea7bf1af2b3b094b0b1081c0c171ace5c18825360e710fedb3defa9519bb953f32ddecb0536f5659f5f56d65a2348d19d281fdac98f80ad42a7db8d87a24bcb9e0d2d69d28bc97c6acb8fb306cfdfeaa6d7e495dd2a3ec73495678ba1db6cb1f9ea7a26035524c62ecc79f888cc0714c153831253992a0b63d40d985133b00adda988d41e8a682ea20ed0f2ca3b7ce4bf8b8cd3b0a7b07ccc9a6ea2124d2dfc217dcff154e86d08dc662b8423537874b96028690335226e8200b773c3487e65328ec67e04f9299369557942573f0fccc4b94740adb8459148a4643dd8614b7949ade72126c79af67634af8801ccc123155a7de81199e56f6da2d6c444d7fe996e57ae08f295ba917634af8801ccc123155a7de81199e56f6da2d6c444d7fe996e57ae08f295ba912c4078cfed89b69023e4773484aeed443bb736b9cb15896e6459413806329ab709eb772a2901b9c9f2c400e7fdd9459352adb0d924df52ef084e8baf5fb290f8dad6a668fe2c091db478f1978d72474a583341e4a910dba63859e24312cf43b7d3634dabf69e611c68df3d1350082388fd4042a293466b4486c033b0efe18f70a9f399e740b47e59bf2a33281ef90954b769851462eb97390c9c6260e94dcadc55739363fcda0eb34790fb1edfc07d0fa5684ab0d58a293e88d6f19fdbfce0441a75cca655db96c755d4b98a91a553e83b30044d3a3e01094a850ed61e9552be8968425a99d9bbc9eb7d0f4733c7e3e9f3ce5726d50ac3a2758becdf60a63b178968425a99d9bbc9eb7d0f4733c7e3e9f3ce5726d50ac3a2758becdf60a63b176041d406d69e8241d170da2123bfd5a73188ab26f0439d7e2dafc49a25c8f67db367ab68271464f4d9617743c44d6ec0c516828653b653ee7316b6201b545cc5cd998145f732d9c03c9054d942681b8354292cf3ee57c3ab466ad7553e6862b9f66c71b826b9365e57add0fa94856374e0f845dda2ceef142ed86ece69cb0c4f6c244b9a14fb04c769962bdcb5c35b587be2ecdbbbd2174e4cfa769f4c7a51f13d2211101abebeb18fe641d7c236537bb6914bfe32eca40ad2273464ef741680fae7bbe5a30874c4941008bf229f135924091029fc5ae16f83f8aed5b0640f7e3edf657a61137f0f6fd00d1162a5a90c00bb9b859ae46cbb93ad2845397146fb6dace3f693fb0e97d8bae9932efa2d516a7aa5670b41aa175134c066340f3a0c20e39e1371c136376ae2647e32f42ac034ad41880f9865c1efdd8bb3d4e4e6bb20e39e1371c136376ae2647e32f42ac034ad41880f9865c1efdd8bb3d4e4e6bbd5805902397bb0ee98504ec889c7be8d8ea8bb284c1171a428721362aedd6d6af2afb5e60aacc2eea77217ab1a4a232503394bd4a5d782d71e2ad9bad444c9f2eda49be3b920de21db3bae9c4d7e9b1e89291a9d436f0009b839119b375ac217226b2b88a3d991472fbe1d969aea3f3759dec6057080bca856b22c90229f431bcc1fe0c3fc78bc0c1161a6b40d5564c66c621d45ae2771fb283c1a7c4e4eb9a05a0a2638fd9986361b2d1ea6aaa0ef5edd594284ba0858929214e59b440a2d9a6b86f27e7b5fbcf3ef8daad9e335e773451a8a37a7776203b9156af453ca7599aae6047751fa1c5b3bd36795f2016c8ef8abeeb15a3089d29723fec3551aab075b8455fd9c27a2c2d887aebb1f60392a7df2025c409bf7339b41f9d6bc9e3d805b2724c8d24d3a6f3b56d8f52e8c2ceb9e8328b29ae6a6d1abc810145f65f7b15b2724c8d24d3a6f3b56d8f52e8c2ceb9e8328b29ae6a6d1abc810145f65f7b12184630231fc3b3fcf60145030516ebbc76c95c6689c33c5215e68d3a3ef67c94b0cfc29dd8fde32608a8395283b9d30d61ec03117712b188a93ba3346409306ede4d6c1940e304204afeddc10b748a06429e6bd77d50b9f59a72cae30908751ede4d6c1940e304204afeddc10b748a06429e6bd77d50b9f59a72cae30908751758334ec039b48a6c24374cc529c8940fe81c188eadcb6bca0a5cab9d1458b55bef14ca26dab05667e3462b011cad8eb80f003acd6927df7141136db414cb5bd8222533c0259df2c49ee0b5cd3fcfca4719f807c2444cb44e3ce5b861207018193d50b851bf4064b455fabd3c116c727f03374ce76e05e495e57b1b4a147565aab61c7164c1f1e32a1553160076c990f9b0a0b3dc099aad73e566d69719fc0dfa557cd93fd254b30f97dd41342363f282e95625c3b72ce2269c52be3a6ae6a157ab503d69a465f33bf0232b690e411d3abe6e399e1967702e8d5163daec9489e74f2f696896b6213351af80101c0ddd8686b333f1150dd0218a2a54a6a0d54efc7c12cc491b46cdf6196b752aaf37a7bb06f008626b3e07b8660ff74e71aeed1a937dbb0b67a18957893655d82da9ecd69186519490659c3c63ce7ca0fb933d9e1f606bf7a675a29ddab9f2a8590f38c6e95108dce557af9bc08f323088a0eefe1f606bf7a675a29ddab9f2a8590f38c6e95108dce557af9bc08f323088a0eef9771dac221a4fbceb066e39d18238d39e1ac79ecb0524f600b94f8584ccd4974e6e64d47537855e23b6c77d83baa4570fa7114c72dcc404c13974ac5c20fc923e6e64d47537855e23b6c77d83baa4570fa7114c72dcc404c13974ac5c20fc9234184ef214f258acea4f8171d9b5be3ea9fdd375772b02f697d0dae154e05d23d5ba1c6d491013ac6650d83d599b94fe2005069632ebc792608bdfb9e9a8b352270bac56f387ddcde62a3c8ee714b71c3dc5bfe9ecc734424a5f0562e73bdc07a902cca761ae2d97c7e42e351307ef48ec9189993d48a5d8e2dffdf650ef28a25902cca761ae2d97c7e42e351307ef48ec9189993d48a5d8e2dffdf650ef28a258090000afa9ec79362a4dec2e3779493d2d0d70e96220d2cfdc85a01d564214921ef8d7c39dbca9a4f669a494be84d8dc136c35c5bb7dd919336c03f7fa2a35134d8fa7c627a8eb337c314f52a805993ae1eea9629f37342ef6d9e6523b3c20baed11d40b5c583161e5941580cf457906b301c3eea75222dc2263af2b1a583ceaed11d40b5c583161e5941580cf457906b301c3eea75222dc2263af2b1a583ce1169601ce9abd261c54fcab4ac945a06b1c6a7c126fbe97dd25e6bacf056ed51b6f1b004ff8a90ae28ca182acd4cd76dc37320f0c535cac56682a81edb57eb7fb6f1b004ff8a90ae28ca182acd4cd76dc37320f0c535cac56682a81edb57eb7fcd73641a323bb2fc94e3f605e7ba427cc5d7ffc023b4e9436d22dac453d35d3a3a150e86fa88d3713278a69523564011a6bc00d571b6d840e86d6263307d1d1466eac80363fb50b1910eab24eb5f50bd7c0edf7b801bcb0ac6dc8f651fc007d04e01c3c0e7d9aed9da9b42c965c4290253e88c7a02f132323032218f3fc83c95a219a74adf90a36663127b992d6bdf01724772aa526aa39ad5d9d22accf3b387cf40438f84ded0162223d2a9b887c08387a049c7a5380425a523d271c3713caad7aa1f23de72adc5d6ba07d19571b589737e3a9bb78b020869b75160eebf74cc5c674f51e5f22d1f7838c75f5bb2e5d9bc350bb873db0590a79472539c6b1789e334b5d47d0cb77fabfbf5363572164932b81a379b07f0883067aea232c3ae8baed489f7443d92551578c36da9ec23d6e5e8b70ac380f92799b12e4e789995dbe4e279792b46452a97920ca712c16dd844b59841bd755da3c048cb159088d9271ab82b3335421d34bc2a54314e2b39aa6451d358341871358ff0baa956e40a7f1ab82b3335421d34bc2a54314e2b39aa6451d358341871358ff0baa956e40a7f06808bf7dea2a1c5602d7e68968b476e0cdf154f55b00eb448edc7bb61666f214100f56279bfff41b353d507aa3267d90290c907776b09fb6bc05403ae2d3398fb7a291f1a7c909305412f10e1a9c62430491762c4b68120592f48d914bf1039fdc907397af3ee6cde5fcf1ab43c86019d74adf4a6c1bb1c2ae9c68896f7c0a51e6e6f30e078d396b3997d969a51eb9b36e1ab5b8dc859b2468e26e98e80663462a19243dd0be9d3d12d670e788cb8a4de8c527bf009204639d29796bbb354edc9d8e57c107d25a7b64e5e98160644112f49fcd00e413fc2383f12e25703f82680104e3fcbab830ca6e223a768a6a4f2ab97fea1b133784bccc564551ae88adff8673bd1123e320f957986d2aa768121e5187527c3e9aa9ae5c0ecb47fbe2320fdfebc463b0250e8c1283b2c3aa74f42a2a7017b21dea57fa5590188b8dcf579fad900999067b0d57e6779ab015248898c610c7a75830f9906bce9f030ab4399626b8c557ac3e8efb1c13cbefe2351090dab5964beb67b784af669281943ced7ebea54dfcf0ce16919fa8f301f81c2bd895bcf03973c424de75fc2fee02dda8c0f3c816f4e42e235172cb346ed0bdb5ca5303daa8f7e67852ab9d2a7c2495a8468ec00a2bbdae5ec2fc888291d6dc1b830ee2e4570ba4b22096ed75098eea5f5f9d1a4c93f6c0b4f3f1f7856bef34a6f17ca52b132c4d917596bd900f006c33de192dbcef5ca1d1b6f88350ff41f6f2eae5db03f6efe862ef251f68bf4a92e8d946f567902bb1b320f1a485a0d01bc216b86ec4c7f785fe47f5752e0889ad539d088ffeb923ced3af44a89f1b45d4354c3810cd21677daaa9b94a297d131730b27b2f827116f3657895a4fc644450c4fc4cebbc9f70df15af10e474cd940db2fe710305b1450e081555988507f6023079ccd51a28075a95f8d4ebb440b4c545ce710305b1450e081555988507f6023079ccd51a28075a95f8d4ebb440b4c545c9f28ea95644487b48908a73f0a28eaca3ea553967be54710a168fd5092366907b11d886cd5f4a37b0bcaf202d14ea95bb7650118f4d5aacaf178efa7cd18eed89807de4e244caadd5c2894ccb2bfbe30db076746bf252f9f8533c9d44a143e9b08ac1a166f5f2d2e526f0ccac78b928a5b783bc876c9ec90abaf369dd8c8bc0095d4f99488c85a532d0596ba92e25afba448977bec5ffbf031d969048b3770f0adb594283cb8b8a37041ff7565b6fd509181e6f6cea27f5c32bf158e577754b46d490727efce441ce45f1750301e22ae6d4e918b6492f2afd2c617eee7dcc7f84aed306e2522a9b38c16c464dc1a3d26ff472c8d7c2fef38ba2b2755696d424147e2cfe22ff53efa83efb2fdccb6211d8718a040d01aa0034c31d996dcf591c840c8c495763a0fb518b1ef048d502d2fab2f2c223b0bcc64e18d8b50efc2e6a53d7409627fee02805b78ae3b7df02a2c4a96a140253e5009519989171fe0b3b372f36674be6694887d8349a0501d2c74539dfe7bb8e8920e87660a192ca1a182087e13963adc8e5761ed6a714b0cb207c8ed6ca858711cd48cc0a847cb2df4308e13e18ae11f4977fdbacd1616b2b157f630ce21f0f52079fa8868312b77debced9ddfcb4b806ed297d3683da6dc13d698bc8106b4d0e5be60789e05324208ad483c9c873e455cdbd7625fe5b05be34ce3e2005778a5b16f7a6626812cfd35b2c24cb18c1d16c3400051a3425146e6987541540472ecf4e5483187fa1361425a12456b6f65c9731c86ef9a8218a58e2b3c2e8b8d0683649a323b43b6c221f49912456b6f65c9731c86ef9a8218a58e2b3c2e8b8d0683649a323b43b6c221f499dc9a9f8e92b182d088df0084b8df0ea2f0b69328f6e1accead4beaf8e0e564db59313c450bf70d996936d14679cd33b749b581a48d68baa4b171cf94edd4b1d33885d6dd27b1acfef9aa646d353fbdcd78e8fdc59de70d71d3416840d81b35c342dfd715ca87337eecb4c3ef1e9a185fc1f221e8daea9123271a9c6a4996b58e6e3892878d6666098af4470095904e78de7e67abc8b40d1b46df0d66f5d57ef1707b7cdb5b950bd8a5ae811053645d9d22be1c0abb9d8288a42d91383f9d7d7b4b39bf6703d91e6035fab82f462f230d5fc66fbb36b53234d67ec6a1510b2d72c75691d0bbebf9c760154ef7a650fab42b0a226d89b34278e5ea9fce762eceebdbfd1629d8099b6dea1bb027af554605ed048a546c1851f2c0ebbbb70e117a2c2567f03af11b0fb52ac05b740ffbbaf1c95341462eecff8d5d52d2052f28254e4dcb95a36b76526487c11b1154101ad68e9615e39021913107024efe7495359b77ed3921e7066541d5a225f383589e5dda55f1e20e4f51b2176f3f059b1a8883e4f6e733d4b08ae92b96c85b16fb6297007b18b2891980f12d37cbf2f2ae0b9d1fb7a72d5fb1d09e254e35b224fbd8537ade793600c4b0ed9c135ba63a3271c6e9d9b7183d0c7356acdef0a24b40558d6188d5ad795fba49869e7fa210e96d573885d6dd27b1acfef9aa646d353fbdcd78e8fdc59de70d71d3416840d81b35c342dfd715ca87337eecb4c3ef1e9a185fc1f221e8daea9123271a9c6a4996b58e3dd3acaeaa951a2e79b139ee184b3a9d5de244cfc4518ed97a8f0926932f6e06707b7cdb5b950bd8a5ae811053645d9d22be1c0abb9d8288a42d91383f9d7d7b1e593255f4b17a818a760f3a6ab6dccf76dfb64711b709e8d99dfab76cddea22e5e06ce87aa4f63e7721a6709e3c14e68391d81950a186e16be065974aa46ed2947ccb47e4611dddface9c83837244813dba3a5a8ba55cef5d7ee83d6a385bfc2f41a0518f1aa6706441e1a29ec735ef59754b01d5a41ca95ea41840192a33332567f03af11b0fb52ac05b740ffbbaf1c95341462eecff8d5d52d2052f28254e38178ba34b0d96fdad0a409e85053454f879cdda79c0af06044e1ccff0a58ffd636086a45bde29b66544a1e7069d85d22e71b1085de6ff8bb18349c743235927a50034e7b08354c428ce800428d08fc1c340598e67f9d7deadb6a2332c39644ccad6c07abce99317ef3ca169412062bd5f05cc0ed5b09cf367bca682715ed758bd7fca309f76b3141c43a3d9b17acff1f34850a3a43d5781a3cfa6fa97f1cfcda05a2a49145b35ed0aeb1a46e2560c360678e32e61cfe19962b6bdcd2ccc907f655d2d9fb507a5c26e9c4521ff96c24ac9e742b2f219a3e9dee98a213a5c8580655d2d9fb507a5c26e9c4521ff96c24ac9e742b2f219a3e9dee98a213a5c85800059aa1c5555338a789c4605467e10eca2c03bff3d019bb29ec8391efed3c0fadff72fb67f38f57373233ed35b190ef840a612f5f4a556a54cb782b7d04ed7a9dff72fb67f38f57373233ed35b190ef840a612f5f4a556a54cb782b7d04ed7a95ec39c8606d89c893be546fef3b2dbb3a6eba5faa1f0d3eef4ed6ec5dfbf00c6ba0da86dccfd44d7f1438fdda99e2dcdf07842eab36f9ac48b2f92425bc5bdb9ba0da86dccfd44d7f1438fdda99e2dcdf07842eab36f9ac48b2f92425bc5bdb96026ae0666be04806e2c7f29cedd4a348a0a93426ad1319faf8d60222a1ff6ec9415209182af29e3cb37fdb587f0c0a5dca18f3eff5deb8b670851840b47c3b09415209182af29e3cb37fdb587f0c0a5dca18f3eff5deb8b670851840b47c3b0e37e85ace84599717cf89cd557b833806a98fb189d0f0307135e354a8e8dfdfa35ef0869efdf50d65c3f0779297b8b8fa4f8812b74f3232db9ba077d26d037ff35ef0869efdf50d65c3f0779297b8b8fa4f8812b74f3232db9ba077d26d037ff042e07a0c72f7a57999994d9be64f56ed887c91adb0e7acb16269d01b18764be8abc38299bdf67b446d8927a62b9d882721db5424d23d6d93c913f7068a565468abc38299bdf67b446d8927a62b9d882721db5424d23d6d93c913f7068a565463270fd295f1334c44c77ef7c2c3b204022c77a6a4bf8b711b5ba933701f725970d73bcd3eecc9a2c8e0078155034f2f4b321163accfba1e7fceba1e9d5845f380d73bcd3eecc9a2c8e0078155034f2f4b321163accfba1e7fceba1e9d5845f3894fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6ba2f54f4f523664c96f47b9df6c30889e059e7f01320e445f6a16f7cd55a5ce8aa2f54f4f523664c96f47b9df6c30889e059e7f01320e445f6a16f7cd55a5ce8aba5e40432791bc3e4914afca03029bcb54821efc7f3ae5ee572beb38ceb7d3dc0883a647766dd87be67e9813468a320b3086c3454a99bca291a22671fbc4d4897d679d2b6fbc35232283622ff10077025ce42b4309758c25a637e7633332d26b94fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6bef57fffb6a72125d3775ac8178ce98535fd0a225c586f293f1d6ed8733c903d9ef57fffb6a72125d3775ac8178ce98535fd0a225c586f293f1d6ed8733c903d9dac1ce58be320e3768871c55d597237d99ee5f44b529fb2e06c29e536613dd307aa29661397d354b4024eac4f57bf15dc204e34e81013b15ff1ee3e5cb44c1967aa29661397d354b4024eac4f57bf15dc204e34e81013b15ff1ee3e5cb44c196b7324ee2c8aa664cb84999bf5b7de7d9eda193d735a3cb888cfe82195eb963d6c22ade37a7dfb9a8d33108fb1541a517cdef4e35a58f846db747b78b7281a67bc22ade37a7dfb9a8d33108fb1541a517cdef4e35a58f846db747b78b7281a67b55455b1e54992df63a1055ed4674b4a40f4298bd341ad42097ac53a2f903719a0cac4c7b0425ba0763b5c1b9f4741971157656111d13fd5b2c86f0fa9321df7c0cac4c7b0425ba0763b5c1b9f4741971157656111d13fd5b2c86f0fa9321df7c743ebe78128c9eeeb5815ba77cf1de651035e842601e5264a087acd4002041d950b602f85654e1f2c754682fb27746d52432e7cade926f2cb49e1d21e923db0250b602f85654e1f2c754682fb27746d52432e7cade926f2cb49e1d21e923db02481ec33dfce3dba9acdfa65469bc604f236922ddbb575a9831c4cfa6a33618f642ad0576422f1c2a7d97ba196ad295d9b4ef7d46caf16713ee3dc6c266d539ff42ad0576422f1c2a7d97ba196ad295d9b4ef7d46caf16713ee3dc6c266d539ff83f696a16b9838e49ff84e4670daaca6bee4568db532a0819ae31ed13b2101facadc7cfe1a013cee47b9ebd4fd9caba9f21f3c3151c4754fadb7a5a51cfbde42cadc7cfe1a013cee47b9ebd4fd9caba9f21f3c3151c4754fadb7a5a51cfbde42d9557609f8515b730989478790dce82794b0fbbb6967e118905ba0b883ecd64e02ad3b604772533283855eac7df60deaac59fe1b7025f7e1ae33e6838a6a06e802ad3b604772533283855eac7df60deaac59fe1b7025f7e1ae33e6838a6a06e84ccec27a29c797c5dfc4625a7e2ac45ed337229fd0674ec129689cfc756f46f7823e8d559f2c1483fc07dcf7c7d2dbc3f5f3898131651f23c1fd09d6e38dcef7823e8d559f2c1483fc07dcf7c7d2dbc3f5f3898131651f23c1fd09d6e38dcef78dd654cd08be9fa8a8d62ef4ec4bc09b8a1b8cfa64b3e8f3507c5068d52176c7c14a395258121e3f5c5606e85452af1ddab30313bc412714141775a9cbd10010c14a395258121e3f5c5606e85452af1ddab30313bc412714141775a9cbd100105de21a4a7f01843887a2046c02aee9015269a32e5254f7776c54bfabb4fb93e4a7b147c4886801ffcba9607ae8e80f8a6ffb91f1b7798a297c564176894ddea2a7b147c4886801ffcba9607ae8e80f8a6ffb91f1b7798a297c564176894ddea24b6b7b22bc24f9fa6d86871683106baaaeec2fcb63139e94c692177aa32d20693fe399c4bb1e0eff3d74e8382fcf310c64b81f1db0707d00290b7a19370336ca3fe399c4bb1e0eff3d74e8382fcf310c64b81f1db0707d00290b7a19370336ca75a62af3ba70f877b37a2a2c71790a25f239828df8655c6017418b9e4f35e7163011237d730b40f7cfb28732f8ef77f18dc79b5c021149d42a05690408aeb8943011237d730b40f7cfb28732f8ef77f18dc79b5c021149d42a05690408aeb894f91c1e242002305ee74037ceff23ac7853f88862a3b1e68b8fb23ab0564996c75ee68b6cb102512727104e8a6b42aa3eabc1e5b665300b72f8d3db31c322f804dcbbe5159403c8bccf4efbd2b82c49dab303fa2ec1f38aa6e06c331b6fd731855fdcd508e6bd95eaf96fe0172826d00d69ca2ff65dd6071c29982261d602a11b07fd6fae67c06b808eee2c40d7522016e6e75e0113ccf771dcf11873f47f3aad07fd6fae67c06b808eee2c40d7522016e6e75e0113ccf771dcf11873f47f3aad0aaa4cdc7962b04a96dc08ef244d2efb6c238ce629e69f92b7da13006a95b07ca93d2cb905b2896da955058447a10bc57aab565238ce59057a86c32997e2a3c9a93d2cb905b2896da955058447a10bc57aab565238ce59057a86c32997e2a3c93fdb89721ddcd7baf6cfdf63c7ec4ef0b1baa620cc35a1d716aa883c7a0486bb061f789147b74f97c25f8c362f8c7f8cdd0aec4a6355682530a5b7391d0e1b95061f789147b74f97c25f8c362f8c7f8cdd0aec4a6355682530a5b7391d0e1b951bdfcdbda1e86602e062f51b0abdf533af50acbcddeeaf595e16d09c9757d49b0d855318e8dd6c47a813ea6d54fe6c3c2a56b187e44da8fbf42319bad1909d4b0d855318e8dd6c47a813ea6d54fe6c3c2a56b187e44da8fbf42319bad1909d4bb19f6c227c980f054e0883f9f32b70430fdf4b93563248860f7ce50e9bc0e4706847a23929cc5ef153884a64db09f1e74b3f5a616ac5d26026460eccb8b4b6fb6847a23929cc5ef153884a64db09f1e74b3f5a616ac5d26026460eccb8b4b6fb6d00c13e9e7334ca183dba5d0d345a737af74d606a1f27fdbba04932f04178d6bb1cebba1ec16561f55f0290573bafffaba2cb2efb9a9dca91c6d623037f6b09bb1cebba1ec16561f55f0290573bafffaba2cb2efb9a9dca91c6d623037f6b0979694f58a99f6409067f642ffa441e7612acfb0f2097d99613a11b3f77e57fe44c66b3c5d191f5e5e5161c3b66b3a2bc9a4ce819ddaf27955f7bedd8897513fd4c66b3c5d191f5e5e5161c3b66b3a2bc9a4ce819ddaf27955f7bedd8897513fdab18b48b000af6ba1a644812a747811610c258c12bf6d05d1cf05069d533bdc4d882857bbdd4ee76916d67d3a2df41072ab13a0670fbf04ceb17497917c70ae0d882857bbdd4ee76916d67d3a2df41072ab13a0670fbf04ceb17497917c70ae09465bce9c30cd1dc61e64d8489288d04f84f1572e1ee89d21a1a43c504d63320f9b226b0ccd74e148b4af319dd035ee77ce91f91b2a6123cb4432aefdc1504e2f9b226b0ccd74e148b4af319dd035ee77ce91f91b2a6123cb4432aefdc1504e25c88136706a34f920ffc0140eef23267a3e15f2b53d3561fdb1b7f74687594956d6d6689937a2c40dccffa19c298bdd26c5957313fe8a57170967d1f43344bca6d6d6689937a2c40dccffa19c298bdd26c5957313fe8a57170967d1f43344bca805b8c05d27b304ab291d7f151df39f336343deecf73af7a4b03fcaa1804ada867a312cfda3412329f18d7c8cb5defbd3ed63ae5b4f948e64c07bc4965275f1767a312cfda3412329f18d7c8cb5defbd3ed63ae5b4f948e64c07bc4965275f1739e0851649965385cd7210868d2f49ef1b76bfef4417dcc43027dc5c7dbbc942e8ece6c2d6663b1a28bb05c4f438cae59f01b41cf6d0dc15c9ce34ff274890c0e8ece6c2d6663b1a28bb05c4f438cae59f01b41cf6d0dc15c9ce34ff274890c05c2288a32f69afc5cdaf0978502efa57af49fccb254c546517d8ac847a29f38ee8cb5a23a03989246e131a20c72d3a41d6f2b69cd5ab0a76a20e86334f9b0feee8cb5a23a03989246e131a20c72d3a41d6f2b69cd5ab0a76a20e86334f9b0feea6e5b0e3aae15ee6dd7e4fddc330299756d014736b55c8d07b1e89ea551e6ed39db57400f6307a16388595bec18a3b17e7b84398a989514f3098741e0cd4cd7e9db57400f6307a16388595bec18a3b17e7b84398a989514f3098741e0cd4cd7e844cc29bc62d6f6f70f896e8f2e1d73779710f126b25da8be29bb75125efcc30a339bf5bc7466f94180d2a78acb584fbc7360288ccc45c24b2caf63e07659a7ea339bf5bc7466f94180d2a78acb584fbc7360288ccc45c24b2caf63e07659a7e90e233c4b30514736eb8ca937cc3ad39e9f625e372f1ec473cb00c3ee1fdb12db82451e8e44cd06c1fd2f51b2a9613518458e36da105ba19808e5b42f93af29ab82451e8e44cd06c1fd2f51b2a9613518458e36da105ba19808e5b42f93af29af0a42937861624a0a11028ecb0899f050c26811481829b245fffcd01285092fbfe15e2b7f4bdebfb657a2bf6cf16b87205b69c0abeb259bbe855b3beb57f4f3bfe15e2b7f4bdebfb657a2bf6cf16b87205b69c0abeb259bbe855b3beb57f4f3b875cfeb81c464c7ae597349de9607ab7be4cfb25223d11e185699d2254eee792ebade6872618bac81410bbb19866cb98ff66a200bdd539983d6ccc33961ff1d3ebade6872618bac81410bbb19866cb98ff66a200bdd539983d6ccc33961ff1d3440702443aae4ec1968401c2be0507f935a3b97ce5659d86986cb2888679f49a0bddfe2092e21bc0139839acebdce74d701f82a17e3339c2d1315db7ca34df900bddfe2092e21bc0139839acebdce74d701f82a17e3339c2d1315db7ca34df90e2a5c3184ed6531fccbe90722a3199e4052666c6f14ada4ff532c31fc0f0c8d006107470acb8665ad70a367ba330872e3dc914605c42df2112b88e2200a68f1b06107470acb8665ad70a367ba330872e3dc914605c42df2112b88e2200a68f1b40bc491e09143223bf0724a9dac3eb297adaf31eb3afc5c2887cbdc60e4a1c9c9deb7d0423b790d46429b6bfb2c18b9717222acef4e553adf444d33f83377bc99deb7d0423b790d46429b6bfb2c18b9717222acef4e553adf444d33f83377bc974970617a9fd37ad7dfc01171b56975c054d94bac274050a16673fc5bef87cb9a6375027e847b1e05f6606fe52f2c8338cd7be50f8d563d92efcbbc3a163049502c8eae0f54ad6e9dd25c0eeb74f16896a66173f40381cf83c1c31a0f172bb2cb3663aecc0a9837444896b2e6e06772b492d199ca7bb8592885404d744dd9e26c11babfca467bc15559f1feacd82cf6c2ed6511ddd0f740a88ca0e64b34808b90d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e9459451626bcab58b30399f3737c4c62695a72dad157435879fa6241ff8cebddea30d7bb4198ccea3af01d784bbd6b23505d64eb137ce23d7535b0a65134fb348d783a64eb2a80187147c7adf92b064b7d25b2c7c3b8c2ea4d527a02398ff6a212adf../alternatives/log_config.yaml/etc/alternatives/hash_password/etc/alternatives/register_new_matrix_user/etc/alternatives/synapse_port_db/etc/alternatives/synctl/etc/alternatives/synapse.service/etc/alternatives/rcsynapse@@@@@@@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootmatrix-synapse-0.28.1-lp150.2.4.1.src.rpmmatrix-synapsepython-matrix-synapsepython2-matrix-synapse@  @@      /bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/python2group(nogroup)python(abi)python2-Pillowpython2-PyNaClpython2-PyYAMLpython2-Twistedpython2-Twistedpython2-bcryptpython2-blistpython2-canonicaljsonpython2-daemonizepython2-frozendictpython2-jsonschemapython2-msgpack-pythonpython2-msgpack-pythonpython2-phonenumberspython2-pyOpenSSLpython2-pyasn1python2-pydenticonpython2-pymacaroons-pynaclpython2-pysaml2python2-service_identitypython2-signedjsonpython2-ujsonpython2-unpaddedbase64rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)shadowupdate-alternativesupdate-alternatives2.716.0.01.1.30.42.5.10.3.08.2.00.143.0.01.0.01.0.01.1.03.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1[!@ZK@ZZ@ZԐ@Z@ZR ZZ Z Y[@YTYFk@okurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comjengelh@inai.deokurz@suse.comokurz@suse.com- Fix security bug in the get_missing_events federation AP (CVE-2018-12291, boo#1096833) - Add boo1096833_event_visibility_rules_not_applied_correctly.patch- Update to version v0.28.1: * SECURITY UPDATE Clamp the allowed values of event depth received over federation to be [0, 2^63 - 1]. This mitigates an attack where malicious events injected with depth = 2^63 - 1 render rooms unusable. Depth is used to determine the cosmetic ordering of events within a room, and so the ordering of events in such a room will default to using stream_ordering rather than depth (topological_ordering). This is a temporary solution to mitigate abuse in the wild, whilst a long term solution is being implemented to improve how the depth parameter is used. Full details at https://docs.google.com/document/d/1I3fi2S-XnpO45qrpCsowZv8P8dHcNZ4fsBsbOW7KABI/edit# Pin Twisted to <18.4 until we stop using the private _OpenSSLECCurve API. * Bug Fixes: * Return 401 for invalid access_token on logout (PR #2938) Thanks to @dklug! * Return a 404 rather than a 500 on rejoining empty rooms (PR #3080) * fix federation_domain_whitelist (PR #3099) * Avoid creating events with huge numbers of prev_events (PR #3113) * Reject events which have lots of prev_events (PR #3118) * Fix quarantine media admin API and search reindex (PR #3130) * Fix media admin APIs (PR #3134) * Features: * Add metrics for event processing lag (PR #3090) * Add metrics for ResponseCache (PR #3092) * Changes: * Synapse on PyPy (PR #2760) Thanks to @Valodim! * move handling of auto_join_rooms to RegisterHandler (PR #2996) Thanks to @krombel! * Improve handling of SRV records for federation connections (PR #3016) Thanks to @silkeh! * Document the behaviour of ResponseCache (PR #3059) * Preparation for py3 (PR #3061, #3073, #3074, #3075, #3103, #3104, #3106, #3107, #3109, #3110) Thanks to @NotAFile! * update prometheus dashboard to use new metric names (PR #3069) Thanks to @krombel! * use python3-compatible prints (PR #3074) Thanks to @NotAFile! * Send federation events concurrently (PR #3078) * Limit concurrent event sends for a room (PR #3079) * Improve R30 stat definition (PR #3086) * Send events to ASes concurrently (PR #3088) * Refactor ResponseCache usage (PR #3093) * Clarify that SRV may not point to a CNAME (PR #3100) Thanks to @silkeh! * Use str(e) instead of e.message (PR #3103) Thanks to @NotAFile! * Use six.itervalues in some places (PR #3106) Thanks to @NotAFile! * Refactor store.have_events (PR #3117)- Disable web-client for package self-test to get rid of unfulfilled dependency- Introduce package self-test based on _multibuild- Update to version v0.27.4: * Bug fixes: * URL quote path segments over federation (#3082) * Add room_id to the response of rooms/{roomId}/join (PR #2986) Thanks to @jplatte! * Fix replication after switch to simplejson (PR #3015) * Fix replication after switch to simplejson (PR #3015) * 404 correctly on missing paths via NoResource (PR #3022) * Fix error when claiming e2e keys from offline servers (PR #3034) * fix tests/storage/test_user_directory.py (PR #3042) * use PUT instead of POST for federating groups/m.join_policy (PR #3070) Thanks to @krombel! * postgres port script: fix state_groups_pkey error (PR #3072) * Features: * Add joinability for groups (PR #3045) * Implement group join API (PR #3046) * Add counter metrics for calculating state delta (PR #3033) * R30 stats (PR #3041) * Measure time it takes to calculate state group ID (PR #3043) * Add basic performance statistics to phone home (PR #3044) * Add response size metrics (PR #3071) * phone home cache size configurations (PR #3063) * Changes: * Update canonicaljson dependency (#3095) * Add a blurb explaining the main synapse worker (PR #2886) Thanks to @turt2live! * Replace old style error catching with 'as' keyword (PR #3000) Thanks to @NotAFile! * Use .iter* to avoid copies in StateHandler (PR #3006) * Linearize calls to _generate_user_id (PR #3029) * Remove last usage of ujson (PR #3030) * Use simplejson throughout (PR #3048) * Use static JSONEncoders (PR #3049) * Remove uses of events.content (PR #3060) * Improve database cache performance (PR #3068)- Update to version v0.27.2: * Bug fixes: * Fix bug which broke TCP replication between workers (PR #3015) * Fix broken ldap_config config option (PR #2683) Thanks to @seckrv! * Fix error message when user is not allowed to unban (PR #2761) Thanks to @turt2live! * Fix publicised groups GET API (singular) over federation (PR #2772) * Fix user directory when using user_directory_search_all_users config option (PR #2803, #2831) * Fix error on /publicRooms when no rooms exist (PR #2827) * Fix bug in quarantine_media (PR #2837) * Fix url_previews when no Content-Type is returned from URL (PR #2845) * Fix rare race in sync API when joining room (PR #2944) * Fix slow event search, switch back from GIST to GIN indexes (PR #2769, [#2848]) * Fix bug where an invalid event caused server to stop functioning correctly, due to parsing and serializing bugs in ujson library. * Features: * Add ability for ASes to override message send time (PR #2754) * Add support for custom storage providers for media repository (PR #2867, [#2777], #2783, #2789, #2791, #2804, #2812, #2814, #2857, #2868, #2767) * Add purge API features, see docs/admin_api/purge_history_api.rst for full details (PR #2858, #2867, #2882, #2946, #2962, #2943) * Add support for whitelisting 3PIDs that users can register. (PR #2813) * Add /room/{id}/event/{id} API (PR #2766) * Add an admin API to get all the media in a room (PR #2818) Thanks to @turt2live! * Add federation_domain_whitelist option (PR #2820, #2821) * Changes: * Continue to factor out processing from main process and into worker processes. See updated docs/workers.rst (PR #2892 - #2904, #2913, #2920 - #2926, #2947, #2847, #2854, #2872, #2873, #2874, #2928, #2929, #2934, [#2856], #2976 - #2984, #2987 - #2989, #2991 - #2993, #2995, #2784) * Ensure state cache is used when persisting events (PR #2864, #2871, [#2802], #2835, #2836, #2841, #2842, #2849) * Change the default config to bind on both IPv4 and IPv6 on all platforms (PR #2435) Thanks to @silkeh! * No longer require a specific version of saml2 (PR #2695) Thanks to @okurz! * Remove verbosity/log_file from generated config (PR #2755) * Add and improve metrics and logging (PR #2770, #2778, #2785, #2786, [#2787], #2793, #2794, #2795, #2809, #2810, #2833, #2834, #2844, #2965, [#2927], #2975, #2790, #2796, #2838) * When using synctl with workers, don't start the main synapse automatically (PR #2774) * Minor performance improvements (PR #2773, #2792) * Use a connection pool for non-federation outbound connections (PR #2817) * Make it possible to run unit tests against postgres (PR #2829) * Update pynacl dependency to 1.2.1 or higher (PR #2888) Thanks to @bachp! * Remove ability for AS users to call /events and /sync (PR #2948) * Use bcrypt.checkpw (PR #2949) Thanks to @krombel! - Change spec-file to use service downloaded and recompressed file directly - Remove patch synapse_python_dependencies_allow_higher_versions_of_pysaml2.patch now included in upstream changes- Update to version v0.26.0: * Bug fixes: * Fix database port script (PR #2673) * Fix internal server error on login with ldap_auth_provider (PR #2678) Thanks to @jkolo! * Fix error on sqlite 3.7 (PR #2697) * Fix OPTIONS on preview_url (PR #2707) * Fix error handling on dns lookup (PR #2711) * Fix wrong avatars when inviting multiple users when creating room (PR #2717) * Fix 500 when joining matrix-dev (PR #2719) * Features: * Add ability for ASes to publicise groups for their users (PR #2686) * Add all local users to the user_directory and optionally search them (PR * #2723) * Add support for custom login types for validating users (PR #2729) * Changes: * Update example Prometheus config to new format (PR #2648) Thanks to @krombel! * Rename redact_content option to include_content in Push API (PR #2650) * Declare support for r0.3.0 (PR #2677) * Improve upserts (PR #2684, #2688, #2689, #2713) * Improve documentation of workers (PR #2700) * Improve tracebacks on exceptions (PR #2705) * Allow guest access to group APIs for reading (PR #2715) * Support for posting content in federation_client script (PR #2716) * Delete devices and pushers on logouts etc (PR #2722)- Update to version v0.25.1: * Bug fixes: * Fix login with LDAP and other password provider modules (PR #2678). Thanks to @jkolo! * Fix port script (PR #2673) * Fix port script (PR #2577) * Fix error when running synapse with no logfile (PR #2581) * Fix UI auth when deleting devices (PR #2591) * Fix typo when checking if user is invited to group (PR #2599) * Fix the port script to drop NUL values in all tables (PR #2611) * Fix appservices being backlogged and not receiving new events due to a bug in notify_interested_services (PR #2631) Thanks to @xyzz! * Fix updating rooms avatar/display name when modified by admin (PR #2636) * Thanks to @farialima! * Fix bug in state group storage (PR #2649) * Fix 500 on invalid utf-8 in request (PR #2663) * Features: * Add is_public to groups table to allow for private groups (PR #2582) * Add a route for determining who you are (PR #2668) Thanks to @turt2live! * Add more features to the password providers (PR #2608, #2610, #2620, [#2622], #2623, #2624, #2626, #2628, #2629) * Add a hook for custom rest endpoints (PR #2627) * Add API to update group room visibility (PR #2651) * Changes: * Ignore tags when generating URL preview descriptions (PR #2576) Thanks to @maximevaillancourt! * Register some /unstable endpoints in /r0 as well (PR #2579) Thanks to @krombel! * Support /keys/upload on /r0 as well as /unstable (PR #2585) * Front-end proxy: pass through auth header (PR #2586) * Allow ASes to deactivate their own users (PR #2589) * Remove refresh tokens (PR #2613) * Automatically set default displayname on register (PR #2617) * Log login requests (PR #2618) * Always return is_public in the /groups/:group_id/rooms API (PR #2630) * Avoid no-op media deletes (PR #2637) Thanks to @spantaleev! * Fix various embarrassing typos around user_directory and add some doc. (PR #2643) * Return whether a user is an admin within a group (PR #2647) * Namespace visibility options for groups (PR #2657) * Downcase UserIDs on registration (PR #2662) * Cache failures when fetching URL previews (PR #2669) * Add patch synapse_python_dependencies_allow_higher_versions_of_pysaml2.patch- Update to version v0.24.1: * Bug fixes: * Fix updating group profiles over federation (PR #2567) * Fix handling SERVFAILs when doing AAAA lookups for federation (PR #2477) * Fix incompatibility with newer versions of ujson (PR #2483) Thanks to @jeremycline! * Fix notification keywords that start/end with non-word chars (PR #2500) * Fix stack overflow and logcontexts from linearizer (PR #2532) * Fix 500 error when fields missing from power_levels event (PR #2552) * Fix 500 error when we get an error handling a PDU (PR #2553) * Fix regression in performance of syncs (PR #2470) * Fix caching error in the push evaluator (PR #2332) * Fix bug where pusherpool didn't start and broke some rooms (PR #2342) * Fix port script for user directory tables (PR #2375) * Fix device lists notifications when user rejoins a room (PR #2443, #2449) * Fix sync to always send down current state events in timeline (PR #2451) * Fix bug where guest users were incorrectly kicked (PR #2453) * Fix bug talking to IPv6 only servers using SRV records (PR #2462) * Fix synapse_port_db failure. Thanks to Pneumaticat! (PR #1904) * Fix caching to not cache error responses (PR #1913) * Fix APIs to make kick & ban reasons work (PR #1917) * Fix bugs in the /keys/changes api (PR #1921) * Fix bug where users couldn't forget rooms they were banned from (PR #1922) * Fix issue with long language values in pushers API (PR #1925) * Fix a race in transaction queue (PR #1930) * Fix dynamic thumbnailing to preserve aspect ratio. Thanks to jkolo! (PR [#1945]) * Fix device list update to not constantly resync (PR #1964) * Fix potential for huge memory usage when getting device that have changed (PR #1969) * Fix bug where pusher pool didn't start and caused issues when interacting with some rooms (PR #2342) * Fix bug with storing registration sessions that caused frequent CPU churn (PR #2319) * Fix users not getting notifications when AS listened to that user_id (PR [#2216]) Thanks to @slipeer! * Fix users without push set up not getting notifications after joining rooms (PR #2236) * Fix preview url API to trim long descriptions (PR #2243) * Fix bug where we used cached but unpersisted state group as prev group, resulting in broken state of restart (PR #2263) * Fix removing of pushers when using workers (PR #2267) * Fix CORS headers to allow Authorization header (PR #2285) Thanks to @krombel! * Fix bug in anonymous usage statistic reporting (PR #2281) * Fix API to allow clients to upload one-time-keys with new sigs (PR #2206) * Fix bug where users got pushed for rooms they had muted (PR #2200) * Fix nuke-room script to work with current schema (PR #1927) Thanks @zuckschwerdt! * Fix db port script to not assume postgres tables are in the public schema (PR #2024) Thanks @jerrykan! * Fix getting latest device IP for user with no devices (PR #2118) * Fix rejection of invites to unreachable servers (PR #2145) * Fix code for reporting old verify keys in synapse (PR #2156) * Fix invite state to always include all events (PR #2163) * Fix bug where synapse would always fetch state for any missing event (PR #2170) * Fix a leak with timed out HTTP connections (PR #2180) * Fix bug where we didn't time out HTTP requests to ASes (PR #2192) * Fix joining rooms over federation where not all servers in the room saw the new server had joined (PR #2094) * Fix bug where current_state_events renamed to current_state_ids (PR #1849) * Fix routing loop when fetching remote media (PR #1992) * Fix current_state_events table to not lie (PR #1996) * Fix CAS login to handle PartialDownloadError (PR #1997) * Fix assertion to stop transaction queue getting wedged (PR #2010) * Fix presence to fallback to last_active_ts if it beats the last sync time. Thanks @Half-Shot! (PR #2014) * Fix bug when federation received a PDU while a room join is in progress (PR [#2016]) * Fix resetting state on rejected events (PR #2025) * Fix installation issues in readme. Thanks @ricco386 (PR #2037) * Fix caching of remote servers' signature keys (PR #2042) * Fix some leaking log context (PR #2048, #2049, #2057, #2058) * Fix rejection of invites not reaching sync (PR #2056) * Fix bug in handling of incoming device list updates over federation. * Features: * Add Group Server (PR #2352, #2363, #2374, #2377, #2378, #2382, #2410, #2426, [#2430], #2454, #2471, #2472, #2544) * Add support for channel notifications (PR #2501) * Add basic implementation of backup media store (PR #2538) * Add config option to auto-join new users to rooms (PR #2545) * Add a frontend proxy worker (PR #2344) * Add support for event_id_only push format (PR #2450) * Add a PoC for filtering spammy events (PR #2456) * Add a config option to block all room invites (PR #2457) * Add a user directory API (PR #2252, and many more) * Add shutdown room API to remove room from local server (PR #2291) * Add API to quarantine media (PR #2292) * Add new config option to not send event contents to push servers (PR #2301) Thanks to @cjdelisle! * Add per user rate-limiting overrides (PR #2208) * Add config option to limit maximum number of events requested by ``/sync`` and ``/messages`` (PR #2221) Thanks to @psaavedra! * Add username availability checker API (PR #2183) * Add read marker API (PR #2120) * Add delete_devices API (PR #1993) * Add phone number registration/login support (PR #1994, #2055) * Add some administration functionalities. Thanks to morteza-araby! (PR #1784) * Changes: * Make the spam checker a module (PR #2474) * Delete expired url cache data (PR #2478) * Ignore incoming events for rooms that we have left (PR #2490) * Allow spam checker to reject invites too (PR #2492) * Add room creation checks to spam checker (PR #2495) * Spam checking: add the invitee to user_may_invite (PR #2502) * Process events from federation for different rooms in parallel (PR #2520) * Allow error strings from spam checker (PR #2531) * Improve error handling for missing files in config (PR #2551) * Make 'affinity' package optional, as it is not supported on some platforms * Use bcrypt module instead of py-bcrypt (PR #2288) Thanks to @kyrias! * Improve performance of generating push notifications (PR #2343, #2357, #2365, [#2366], #2371) * Improve DB performance for device list handling in sync (PR #2362) * Include a sample prometheus config (PR #2416) * Document known to work postgres version (PR #2433) Thanks to @ptman! * Improve performance of storing user IPs (PR #2307, #2308) * Slightly improve performance of verifying access tokens (PR #2320) * Slightly improve performance of event persistence (PR #2321) * Increase default cache factor size from 0.1 to 0.5 (PR #2330) * Various performance fixes (PR #2177, #2233, #2230, #2238, #2248, #2256, [#2274]) * Deduplicate sync filters (PR #2219) Thanks to @krombel! * Correct a typo in UPGRADE.rst (PR #2231) Thanks to @aaronraimist! * Add count of one time keys to sync stream (PR #2237) * Only store event_auth for state events (PR #2247) * Store URL cache preview downloads separately (PR #2299) * Various small performance fixes (PR #2201, #2202, #2224, #2226, #2227, #2228, [#2229]) * Update username availability checker API (PR #2209, #2213) * When purging, don't de-delta state groups we're about to delete (PR #2214) * Documentation to check synapse version (PR #2215) Thanks to @hamber-dick! * Add an index to event_search to speed up purge history API (PR #2218) * Always mark remotes as up if we receive a signed request from them (PR #2190) * Enable guest access for the 3pl/3pid APIs (PR #1986) * Add setting to support TURN for guests (PR #2011) * Various performance improvements (PR #2075, #2076, #2080, #2083, #2108, [#2158], #2176, #2185) * Make synctl a bit more user friendly (PR #2078, #2127) Thanks @APwhitehat! * Replace HTTP replication with TCP replication (PR #2082, #2097, #2098, [#2099], #2103, #2014, #2016, #2115, #2116, #2117) * Support authenticated SMTP (PR #2102) Thanks @DanielDent! * Add a counter metric for successfully-sent transactions (PR #2121) * Propagate errors sensibly from proxied IS requests (PR #2147) * Add more granular event send metrics (PR #2178) * Use JSONSchema for validation of filters. Thanks @pik! (PR #1783) * Reread log config on SIGHUP (PR #1982) * Speed up public room list (PR #1989) * Add helpful texts to logger config options (PR #1990) * Minor ``/sync`` performance improvements. (PR #2002, #2013, #2022) * Add some debug to help diagnose weird federation issue (PR #2035) * Correctly limit retries for all federation requests (PR #2050, #2061) * Don't lock table when persisting new one time keys (PR #2053) * Reduce some CPU work on DB threads (PR #2054) * Cache hosts in room (PR #2060) * Batch sending of device list pokes (PR #2063) * Speed up persist event path in certain edge cases (PR #2070) * Reduce database table sizes (PR #1873, #1916, #1923, #1963) * Update contrib/ to not use syutil. Thanks to andrewshadura! (PR #1907) * Don't fetch current state when sending an event in common case (PR #1955)- Update to version v0.24.1+4.632baf79: * Disallow capital letters in userids * Allow = in mxids and groupids * Validate group ids when parsing * Fix a logcontext leak in the media repo * Correctly wire in update group profile over federation * replace 'except:' with 'except Exception:' * fix vars named `l` * Bump version and changelog * Add jitter to validity period of attestations * Revert "Add jitter to validity period of attestations"- Do not suppress errors from useradd procedure. - Trim description to the essence of the package. It is not supposed to be a manual or architectural document. - Remove redundant %clean section. Replace %__-type macro indirections.- Prevent conflicts between python2/3 version of packages- Initial version of matrix-synapse version 0.19.2/bin/sh/bin/sh/bin/sh/bin/shpython-matrix-synapsecloud131 1528897791  !!#$$&'')**,--/0023356779::<=>?@ABCDEFGHIJKLMNOOQRSTUVWXYZ[\]^_`abbdeeghhj llnooqrrtuuwxxz{{}~~         "##%&&())+,,.//122455789:;;=>>@AACDEFGHIJJLMMOPPRSSUVVXYY[\]^__abcdeeghijkkmnnp rrtuuwxxz{{}~~     !""$%%'((*++-..01224566899; ==?@@BCCEFFHIIKLLNOOQRRTUUWXXZ[[]^^`aacddfggi kkmnnpqqsttvwwyzz|}}55       "##%&&()**,--/00233566899;<<>??ABBDEEGHHJKKMNNPQQSTTVWWYZ[\]]_``bcceffhiiklmnopqrstuvwxxz{|}~      !"#$%&'()*++-./0123456789:;<=>?23B5DEFG9IJKLMNOOQRRTUUWXXZ[[]^^`aac eeghij llnooqrrtuuwxyy{||~0.28.10.28.1-lp150.2.4.10.28.1-lp150.2.4.10.28.1-lp150.2.4.1      !!!!!!!!!""""######"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%&''((''&))***))+++++++++++++++++++++++++++++++,,,,,,,,,,,,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-./.0.1.2222.333.444444.555.6.7.8888.99.::.;.<.=======.>.?????.@@@@@@.A.BBBBBBBBBB.CCCCCCCCC.DDDDD.EEEEEEEEEEE.FFFFFFFFFFFF.GGGGGGGGG.H.IIII.J.KKKKK.LLLLL.MMMM.NNNNNN.OOOO.P.QQ.RRRRRR.SSSSSS.TT-UVVVVVVVVVVVVUWWWWWWWWWWWWWW-++++++++++++++++++++++XXXXXXYYYYYYYYYZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\]]^_______hash_passwordlog_config.yamlrcsynapseregister_new_matrix_usersynapse.servicesynapse_port_dbsynctlsynapselog_config.yamllog_config.yaml-2.7hash_passwordhash_password-2.7register_new_matrix_userregister_new_matrix_user-2.7synapse_port_dbsynapse_port_db-2.7synctlsynctl-2.7site-packagesmatrix_synapse-0.28.1-py2.7.egg-infoPKG-INFOSOURCES.txtdependency_links.txtnot-zip-saferequires.txttop_level.txtsynapse__init__.py__init__.pyc__init__.pyoapi__init__.py__init__.pyc__init__.pyoauth.pyauth.pycauth.pyoconstants.pyconstants.pycconstants.pyoerrors.pyerrors.pycerrors.pyofiltering.pyfiltering.pycfiltering.pyoratelimiting.pyratelimiting.pycratelimiting.pyourls.pyurls.pycurls.pyoapp__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyoappservice.pyappservice.pycappservice.pyoclient_reader.pyclient_reader.pycclient_reader.pyoevent_creator.pyevent_creator.pycevent_creator.pyofederation_reader.pyfederation_reader.pycfederation_reader.pyofederation_sender.pyfederation_sender.pycfederation_sender.pyofrontend_proxy.pyfrontend_proxy.pycfrontend_proxy.pyohomeserver.pyhomeserver.pychomeserver.pyomedia_repository.pymedia_repository.pycmedia_repository.pyopusher.pypusher.pycpusher.pyosynchrotron.pysynchrotron.pycsynchrotron.pyosynctl.pysynctl.pycsynctl.pyouser_dir.pyuser_dir.pycuser_dir.pyoappservice__init__.py__init__.pyc__init__.pyoapi.pyapi.pycapi.pyoscheduler.pyscheduler.pycscheduler.pyoconfig__init__.py__init__.pyc__init__.pyo__main__.py__main__.pyc__main__.pyo_base.py_base.pyc_base.pyoapi.pyapi.pycapi.pyoappservice.pyappservice.pycappservice.pyocaptcha.pycaptcha.pyccaptcha.pyocas.pycas.pyccas.pyodatabase.pydatabase.pycdatabase.pyoemailconfig.pyemailconfig.pycemailconfig.pyogroups.pygroups.pycgroups.pyohomeserver.pyhomeserver.pychomeserver.pyojwt.pyjwt.pycjwt.pyokey.pykey.pyckey.pyologger.pylogger.pyclogger.pyometrics.pymetrics.pycmetrics.pyopassword.pypassword.pycpassword.pyopassword_auth_providers.pypassword_auth_providers.pycpassword_auth_providers.pyopush.pypush.pycpush.pyoratelimiting.pyratelimiting.pycratelimiting.pyoregistration.pyregistration.pycregistration.pyorepository.pyrepository.pycrepository.pyosaml2.pysaml2.pycsaml2.pyoserver.pyserver.pycserver.pyospam_checker.pyspam_checker.pycspam_checker.pyotls.pytls.pyctls.pyouser_directory.pyuser_directory.pycuser_directory.pyovoip.pyvoip.pycvoip.pyoworkers.pyworkers.pycworkers.pyocrypto__init__.py__init__.pyc__init__.pyocontext_factory.pycontext_factory.pyccontext_factory.pyoevent_signing.pyevent_signing.pycevent_signing.pyokeyclient.pykeyclient.pyckeyclient.pyokeyring.pykeyring.pyckeyring.pyoevent_auth.pyevent_auth.pycevent_auth.pyoevents__init__.py__init__.pyc__init__.pyobuilder.pybuilder.pycbuilder.pyosnapshot.pysnapshot.pycsnapshot.pyospamcheck.pyspamcheck.pycspamcheck.pyoutils.pyutils.pycutils.pyovalidator.pyvalidator.pycvalidator.pyofederation__init__.py__init__.pyc__init__.pyofederation_base.pyfederation_base.pycfederation_base.pyofederation_client.pyfederation_client.pycfederation_client.pyofederation_server.pyfederation_server.pycfederation_server.pyopersistence.pypersistence.pycpersistence.pyosend_queue.pysend_queue.pycsend_queue.pyotransaction_queue.pytransaction_queue.pyctransaction_queue.pyotransport__init__.py__init__.pyc__init__.pyoclient.pyclient.pycclient.pyoserver.pyserver.pycserver.pyounits.pyunits.pycunits.pyogroups__init__.py__init__.pyc__init__.pyoattestations.pyattestations.pycattestations.pyogroups_server.pygroups_server.pycgroups_server.pyohandlers__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyoaccount_data.pyaccount_data.pycaccount_data.pyoadmin.pyadmin.pycadmin.pyoappservice.pyappservice.pycappservice.pyoauth.pyauth.pycauth.pyodeactivate_account.pydeactivate_account.pycdeactivate_account.pyodevice.pydevice.pycdevice.pyodevicemessage.pydevicemessage.pycdevicemessage.pyodirectory.pydirectory.pycdirectory.pyoe2e_keys.pye2e_keys.pyce2e_keys.pyoevents.pyevents.pycevents.pyofederation.pyfederation.pycfederation.pyogroups_local.pygroups_local.pycgroups_local.pyoidentity.pyidentity.pycidentity.pyoinitial_sync.pyinitial_sync.pycinitial_sync.pyomessage.pymessage.pycmessage.pyopresence.pypresence.pycpresence.pyoprofile.pyprofile.pycprofile.pyoread_marker.pyread_marker.pycread_marker.pyoreceipts.pyreceipts.pycreceipts.pyoregister.pyregister.pycregister.pyoroom.pyroom.pycroom.pyoroom_list.pyroom_list.pycroom_list.pyoroom_member.pyroom_member.pycroom_member.pyoroom_member_worker.pyroom_member_worker.pycroom_member_worker.pyosearch.pysearch.pycsearch.pyoset_password.pyset_password.pycset_password.pyosync.pysync.pycsync.pyotyping.pytyping.pyctyping.pyouser_directory.pyuser_directory.pycuser_directory.pyohttp__init__.py__init__.pyc__init__.pyoadditional_resource.pyadditional_resource.pycadditional_resource.pyoclient.pyclient.pycclient.pyoendpoint.pyendpoint.pycendpoint.pyomatrixfederationclient.pymatrixfederationclient.pycmatrixfederationclient.pyoserver.pyserver.pycserver.pyoservlet.pyservlet.pycservlet.pyosite.pysite.pycsite.pyometrics__init__.py__init__.pyc__init__.pyometric.pymetric.pycmetric.pyoprocess_collector.pyprocess_collector.pycprocess_collector.pyoresource.pyresource.pycresource.pyomodule_api__init__.py__init__.pyc__init__.pyonotifier.pynotifier.pycnotifier.pyopush__init__.py__init__.pyc__init__.pyoaction_generator.pyaction_generator.pycaction_generator.pyobaserules.pybaserules.pycbaserules.pyobulk_push_rule_evaluator.pybulk_push_rule_evaluator.pycbulk_push_rule_evaluator.pyoclientformat.pyclientformat.pycclientformat.pyoemailpusher.pyemailpusher.pycemailpusher.pyohttppusher.pyhttppusher.pychttppusher.pyomailer.pymailer.pycmailer.pyopresentable_names.pypresentable_names.pycpresentable_names.pyopush_rule_evaluator.pypush_rule_evaluator.pycpush_rule_evaluator.pyopush_tools.pypush_tools.pycpush_tools.pyopusher.pypusher.pycpusher.pyopusherpool.pypusherpool.pycpusherpool.pyorulekinds.pyrulekinds.pycrulekinds.pyopython_dependencies.pypython_dependencies.pycpython_dependencies.pyoreplication__init__.py__init__.pyc__init__.pyohttp__init__.py__init__.pyc__init__.pyomembership.pymembership.pycmembership.pyosend_event.pysend_event.pycsend_event.pyoslave__init__.py__init__.pyc__init__.pyostorage__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyo_slaved_id_tracker.py_slaved_id_tracker.pyc_slaved_id_tracker.pyoaccount_data.pyaccount_data.pycaccount_data.pyoappservice.pyappservice.pycappservice.pyoclient_ips.pyclient_ips.pycclient_ips.pyodeviceinbox.pydeviceinbox.pycdeviceinbox.pyodevices.pydevices.pycdevices.pyodirectory.pydirectory.pycdirectory.pyoevents.pyevents.pycevents.pyofiltering.pyfiltering.pycfiltering.pyogroups.pygroups.pycgroups.pyokeys.pykeys.pyckeys.pyopresence.pypresence.pycpresence.pyoprofile.pyprofile.pycprofile.pyopush_rule.pypush_rule.pycpush_rule.pyopushers.pypushers.pycpushers.pyoreceipts.pyreceipts.pycreceipts.pyoregistration.pyregistration.pycregistration.pyoroom.pyroom.pycroom.pyotransactions.pytransactions.pyctransactions.pyotcp__init__.py__init__.pyc__init__.pyoclient.pyclient.pycclient.pyocommands.pycommands.pyccommands.pyoprotocol.pyprotocol.pycprotocol.pyoresource.pyresource.pycresource.pyostreams.pystreams.pycstreams.pyorest__init__.py__init__.pyc__init__.pyoclient__init__.py__init__.pyc__init__.pyotransactions.pytransactions.pyctransactions.pyov1__init__.py__init__.pyc__init__.pyoadmin.pyadmin.pycadmin.pyobase.pybase.pycbase.pyodirectory.pydirectory.pycdirectory.pyoevents.pyevents.pycevents.pyoinitial_sync.pyinitial_sync.pycinitial_sync.pyologin.pylogin.pyclogin.pyologout.pylogout.pyclogout.pyopresence.pypresence.pycpresence.pyoprofile.pyprofile.pycprofile.pyopush_rule.pypush_rule.pycpush_rule.pyopusher.pypusher.pycpusher.pyoregister.pyregister.pycregister.pyoroom.pyroom.pycroom.pyovoip.pyvoip.pycvoip.pyov2_alpha__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyoaccount.pyaccount.pycaccount.pyoaccount_data.pyaccount_data.pycaccount_data.pyoauth.pyauth.pycauth.pyodevices.pydevices.pycdevices.pyofilter.pyfilter.pycfilter.pyogroups.pygroups.pycgroups.pyokeys.pykeys.pyckeys.pyonotifications.pynotifications.pycnotifications.pyoopenid.pyopenid.pycopenid.pyoread_marker.pyread_marker.pycread_marker.pyoreceipts.pyreceipts.pycreceipts.pyoregister.pyregister.pycregister.pyoreport_event.pyreport_event.pycreport_event.pyosendtodevice.pysendtodevice.pycsendtodevice.pyosync.pysync.pycsync.pyotags.pytags.pyctags.pyothirdparty.pythirdparty.pycthirdparty.pyotokenrefresh.pytokenrefresh.pyctokenrefresh.pyouser_directory.pyuser_directory.pycuser_directory.pyoversions.pyversions.pycversions.pyokey__init__.py__init__.pyc__init__.pyov1__init__.py__init__.pyc__init__.pyoserver_key_resource.pyserver_key_resource.pycserver_key_resource.pyov2__init__.py__init__.pyc__init__.pyolocal_key_resource.pylocal_key_resource.pyclocal_key_resource.pyoremote_key_resource.pyremote_key_resource.pycremote_key_resource.pyomedia__init__.py__init__.pyc__init__.pyov0__init__.py__init__.pyc__init__.pyocontent_repository.pycontent_repository.pyccontent_repository.pyov1__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyodownload_resource.pydownload_resource.pycdownload_resource.pyofilepath.pyfilepath.pycfilepath.pyoidenticon_resource.pyidenticon_resource.pycidenticon_resource.pyomedia_repository.pymedia_repository.pycmedia_repository.pyomedia_storage.pymedia_storage.pycmedia_storage.pyopreview_url_resource.pypreview_url_resource.pycpreview_url_resource.pyostorage_provider.pystorage_provider.pycstorage_provider.pyothumbnail_resource.pythumbnail_resource.pycthumbnail_resource.pyothumbnailer.pythumbnailer.pycthumbnailer.pyoupload_resource.pyupload_resource.pycupload_resource.pyoserver.pyserver.pycserver.pyiserver.pyostate.pystate.pycstate.pyostaticclientloginindex.htmljsjquery-2.1.3.min.jslogin.jsspinner.gifstyle.cssregisterindex.htmljsjquery-2.1.3.min.jsrecaptcha_ajax.jsregister.jsregister_config.sample.jsstyle.cssstorage__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyoaccount_data.pyaccount_data.pycaccount_data.pyoappservice.pyappservice.pycappservice.pyobackground_updates.pybackground_updates.pycbackground_updates.pyoclient_ips.pyclient_ips.pycclient_ips.pyodeviceinbox.pydeviceinbox.pycdeviceinbox.pyodevices.pydevices.pycdevices.pyodirectory.pydirectory.pycdirectory.pyoend_to_end_keys.pyend_to_end_keys.pycend_to_end_keys.pyoengines__init__.py__init__.pyc__init__.pyo_base.py_base.pyc_base.pyopostgres.pypostgres.pycpostgres.pyosqlite3.pysqlite3.pycsqlite3.pyoevent_federation.pyevent_federation.pycevent_federation.pyoevent_push_actions.pyevent_push_actions.pycevent_push_actions.pyoevents.pyevents.pycevents.pyoevents_worker.pyevents_worker.pycevents_worker.pyofiltering.pyfiltering.pycfiltering.pyogroup_server.pygroup_server.pycgroup_server.pyokeys.pykeys.pyckeys.pyomedia_repository.pymedia_repository.pycmedia_repository.pyoopenid.pyopenid.pycopenid.pyoprepare_database.pyprepare_database.pycprepare_database.pyopresence.pypresence.pycpresence.pyoprofile.pyprofile.pycprofile.pyopush_rule.pypush_rule.pycpush_rule.pyopusher.pypusher.pycpusher.pyoreceipts.pyreceipts.pycreceipts.pyoregistration.pyregistration.pycregistration.pyorejections.pyrejections.pycrejections.pyoroom.pyroom.pycroom.pyoroommember.pyroommember.pycroommember.pyoschemadelta11v11.sql12v12.sql13v13.sql14upgrade_appservice_db.pyupgrade_appservice_db.pycupgrade_appservice_db.pyov14.sql15appservice_txns.sqlpresence_indices.sqlv15.sql16events_order_index.sqlremote_media_cache_index.sqlremove_duplicates.sqlroom_alias_index.sqlunique_constraints.sqlusers.sql17drop_indexes.sqlserver_keys.sqluser_threepids.sql18server_keys_bigger_ints.sql19event_index.sql20dummy.sqlpushers.pypushers.pycpushers.pyo21end_to_end_keys.sqlreceipts.sql22receipts_index.sqluser_threepids_unique.sql23drop_state_index.sql24stats_reporting.sql2500background_updates.sqlfts.pyfts.pycfts.pyoguest_access.sqlhistory_visibility.sqltags.sql26account_data.sql27account_data.sqlforgotten_memberships.sqlts.pyts.pycts.pyo28event_push_actions.sqlevents_room_stream.sqlpublic_roms_index.sqlreceipts_user_id_index.sqlupgrade_times.sqlusers_is_guest.sql29push_actions.sql30alias_creator.sqlas_users.pyas_users.pycas_users.pyodeleted_pushers.sqlpresence_stream.sqlpublic_rooms.sqlpush_rule_stream.sqlstate_stream.sqlthreepid_guest_access_tokens.sql31invites.sqllocal_media_repository_url_cache.sqlpushers.pypushers.pycpushers.pyopushers_index.sqlsearch_update.pysearch_update.pycsearch_update.pyo32events.sqlopenid.sqlpusher_throttle.sqlremove_indices.sqlreports.sql33access_tokens_device_index.sqldevices.sqldevices_for_e2e_keys.sqldevices_for_e2e_keys_clear_unknown_device.sqlevent_fields.pyevent_fields.pycevent_fields.pyoremote_media_ts.pyremote_media_ts.pycremote_media_ts.pyouser_ips_index.sql34appservice_stream.sqlcache_stream.pycache_stream.pyccache_stream.pyodevice_inbox.sqlpush_display_name_rename.sqlreceived_txn_purge.pyreceived_txn_purge.pycreceived_txn_purge.pyosent_txn_purge.pysent_txn_purge.pycsent_txn_purge.pyo35add_state_index.sqlcontains_url.sqldevice_outbox.sqldevice_stream_id.sqlevent_push_actions_index.sqlpublic_room_list_change_stream.sqlstate.sqlstate_dedupe.sqlstream_order_to_extrem.sql36readd_public_rooms.sql37remove_auth_idx.pyremove_auth_idx.pycremove_auth_idx.pyouser_threepids.sql38postgres_fts_gist.sql39appservice_room_list.sqldevice_federation_stream_idx.sqlevent_push_index.sqlfederation_out_position.sqlmembership_profile.sql40current_state_idx.sqldevice_inbox.sqldevice_list_streams.sqlevent_push_summary.sqlpushers.sql41device_list_stream_idx.sqldevice_outbound_index.sqlevent_search_event_id_idx.sqlratelimit.sql42current_state_delta.sqldevice_list_last_id.sqlevent_auth_state_only.sqluser_dir.pyuser_dir.pycuser_dir.pyo43blocked_rooms.sqlquarantine_media.sqlurl_cache.sqluser_share.sql44expire_url_cache.sql45group_server.sqlprofile_cache.sql46drop_refresh_tokens.sqldrop_unique_deleted_pushers.sqlgroup_server.sqllocal_media_repository_url_idx.sqluser_dir_null_room_ids.sqluser_dir_typos.sql47last_access_media.sqlpostgres_fts_gin.sqlpush_actions_staging.sqlstate_group_seq.pystate_group_seq.pycstate_group_seq.pyo48add_user_ips_last_seen_index.sqlgroups_joinable.sqlfull_schemas11event_edges.sqlevent_signatures.sqlim.sqlkeys.sqlmedia_repository.sqlpresence.sqlprofiles.sqlredactions.sqlroom_aliases.sqlstate.sqltransactions.sqlusers.sql16application_services.sqlevent_edges.sqlevent_signatures.sqlim.sqlkeys.sqlmedia_repository.sqlpresence.sqlprofiles.sqlpush.sqlredactions.sqlroom_aliases.sqlstate.sqltransactions.sqlusers.sqlschema_version.sqlsearch.pysearch.pycsearch.pyosignatures.pysignatures.pycsignatures.pyostate.pystate.pycstate.pyostream.pystream.pycstream.pyotags.pytags.pyctags.pyotransactions.pytransactions.pyctransactions.pyouser_directory.pyuser_directory.pycuser_directory.pyoutil__init__.py__init__.pyc__init__.pyoid_generators.pyid_generators.pycid_generators.pyostreams__init__.py__init__.pyc__init__.pyoconfig.pyconfig.pycconfig.pyoevents.pyevents.pycevents.pyotypes.pytypes.pyctypes.pyoutil__init__.py__init__.pyc__init__.pyoasync.pyasync.pycasync.pyocaches__init__.py__init__.pyc__init__.pyodescriptors.pydescriptors.pycdescriptors.pyodictionary_cache.pydictionary_cache.pycdictionary_cache.pyoexpiringcache.pyexpiringcache.pycexpiringcache.pyolrucache.pylrucache.pyclrucache.pyoresponse_cache.pyresponse_cache.pycresponse_cache.pyosnapshot_cache.pysnapshot_cache.pycsnapshot_cache.pyostream_change_cache.pystream_change_cache.pycstream_change_cache.pyotreecache.pytreecache.pyctreecache.pyodistributor.pydistributor.pycdistributor.pyofile_consumer.pyfile_consumer.pycfile_consumer.pyofrozenutils.pyfrozenutils.pycfrozenutils.pyohttpresourcetree.pyhttpresourcetree.pychttpresourcetree.pyojsonobject.pyjsonobject.pycjsonobject.pyologcontext.pylogcontext.pyclogcontext.pyologformatter.pylogformatter.pyclogformatter.pyologutils.pylogutils.pyclogutils.pyomanhole.pymanhole.pycmanhole.pyometrics.pymetrics.pycmetrics.pyomodule_loader.pymodule_loader.pycmodule_loader.pyomsisdn.pymsisdn.pycmsisdn.pyoratelimitutils.pyratelimitutils.pycratelimitutils.pyoretryutils.pyretryutils.pycretryutils.pyorlimit.pyrlimit.pycrlimit.pyostringutils.pystringutils.pycstringutils.pyothreepids.pythreepids.pycthreepids.pyoversionstring.pyversionstring.pycversionstring.pyowheel_timer.pywheel_timer.pycwheel_timer.pyovisibility.pyvisibility.pycvisibility.pyosynapse.servicesynapse.service-2.7rcsynapsercsynapse-2.7python2-matrix-synapseAUTHORS.rstCHANGES.rstCONTRIBUTING.rstLICENSEMAP.rstREADME.rstUPGRADE.rst/etc/alternatives//etc//etc/synapse//usr/bin//usr/lib/python2.7//usr/lib/python2.7/site-packages//usr/lib/python2.7/site-packages/matrix_synapse-0.28.1-py2.7.egg-info//usr/lib/python2.7/site-packages/synapse//usr/lib/python2.7/site-packages/synapse/api//usr/lib/python2.7/site-packages/synapse/app//usr/lib/python2.7/site-packages/synapse/appservice//usr/lib/python2.7/site-packages/synapse/config//usr/lib/python2.7/site-packages/synapse/crypto//usr/lib/python2.7/site-packages/synapse/events//usr/lib/python2.7/site-packages/synapse/federation//usr/lib/python2.7/site-packages/synapse/federation/transport//usr/lib/python2.7/site-packages/synapse/groups//usr/lib/python2.7/site-packages/synapse/handlers//usr/lib/python2.7/site-packages/synapse/http//usr/lib/python2.7/site-packages/synapse/metrics//usr/lib/python2.7/site-packages/synapse/module_api//usr/lib/python2.7/site-packages/synapse/push//usr/lib/python2.7/site-packages/synapse/replication//usr/lib/python2.7/site-packages/synapse/replication/http//usr/lib/python2.7/site-packages/synapse/replication/slave//usr/lib/python2.7/site-packages/synapse/replication/slave/storage//usr/lib/python2.7/site-packages/synapse/replication/tcp//usr/lib/python2.7/site-packages/synapse/rest//usr/lib/python2.7/site-packages/synapse/rest/client//usr/lib/python2.7/site-packages/synapse/rest/client/v1//usr/lib/python2.7/site-packages/synapse/rest/client/v2_alpha//usr/lib/python2.7/site-packages/synapse/rest/key//usr/lib/python2.7/site-packages/synapse/rest/key/v1//usr/lib/python2.7/site-packages/synapse/rest/key/v2//usr/lib/python2.7/site-packages/synapse/rest/media//usr/lib/python2.7/site-packages/synapse/rest/media/v0//usr/lib/python2.7/site-packages/synapse/rest/media/v1//usr/lib/python2.7/site-packages/synapse/static//usr/lib/python2.7/site-packages/synapse/static/client//usr/lib/python2.7/site-packages/synapse/static/client/login//usr/lib/python2.7/site-packages/synapse/static/client/login/js//usr/lib/python2.7/site-packages/synapse/static/client/register//usr/lib/python2.7/site-packages/synapse/static/client/register/js//usr/lib/python2.7/site-packages/synapse/storage//usr/lib/python2.7/site-packages/synapse/storage/engines//usr/lib/python2.7/site-packages/synapse/storage/schema//usr/lib/python2.7/site-packages/synapse/storage/schema/delta//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/11//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/12//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/13//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/14//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/15//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/16//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/17//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/18//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/19//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/20//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/21//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/22//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/23//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/24//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/25//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/26//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/27//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/28//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/29//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/30//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/31//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/32//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/33//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/34//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/35//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/36//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/37//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/38//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/39//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/40//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/41//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/42//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/43//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/44//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/45//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/46//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/47//usr/lib/python2.7/site-packages/synapse/storage/schema/delta/48//usr/lib/python2.7/site-packages/synapse/storage/schema/full_schemas//usr/lib/python2.7/site-packages/synapse/storage/schema/full_schemas/11//usr/lib/python2.7/site-packages/synapse/storage/schema/full_schemas/16//usr/lib/python2.7/site-packages/synapse/storage/util//usr/lib/python2.7/site-packages/synapse/streams//usr/lib/python2.7/site-packages/synapse/util//usr/lib/python2.7/site-packages/synapse/util/caches//usr/lib/systemd/system//usr/sbin//usr/share/doc/packages//usr/share/doc/packages/python2-matrix-synapse/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Maintenance:8311/openSUSE_Leap_15.0_Update/1971189be4d21c5e532825d86dcebae9-matrix-synapse.openSUSE_Leap_15.0_Updatedrpmxz5noarch-suse-linux    emptydirectoryASCII textPython script, ASCII text executableASCII text, with very long linespython 2.7 byte-compiledPython script, UTF-8 Unicode text executableHTML document, ASCII textGIF image data, version 89a, 16 x 16HTML document, ASCII text, with very long linesBourne-Again shell script, ASCII text executableUTF-8 Unicode text  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRs_4 uif [ -e "/usr/bin/synctl-2.7" ]; then update-alternatives --install /usr/bin/synctl synctl /usr/bin/synctl-2.7 27 \ --slave /usr/bin/hash_password hash_password /usr/bin/hash_password-2.7 \ --slave /usr/bin/register_new_matrix_user register_new_matrix_user /usr/bin/register_new_matrix_user-2.7 \ --slave /usr/bin/synapse_port_db synapse_port_db /usr/bin/synapse_port_db-2.7 \ --slave /usr/bin/rcsynapse rcsynapse /usr/bin/rcsynapse-2.7 \ --slave /usr/bin/synapse.service synapse.service /usr/bin/synapse.service-2.7 \ --slave /usr/bin/log_config.yaml log_config.yaml /usr/bin/log_config.yaml-2.7 fi/bin/shutf-85ffd5d8544231c33f65cd5057393fec87703d5ddd548d779b1b82104017f4d73?P7zXZ !t/W,,L]"k%a kꚾ0j!O5}w'}FXj6K82^S5+A{,ލډ]yl{/,u{EaoXm܂ 2Aa@+d3v%2{g(94x/Z<{R  ۱6WvV X6Na8!u=2,9chF萩`}/ a<ٿqnO!sQ4?W *jβ7eb2#ѕ_nxRir6o1nלϿOp 5"eSqɥ׿NDbC x߶#SSr#H  w"c5jGfywh7T9\(p,IA.`aGL^-SpPʗ2s_#r8CSn+n$ԹN]v źeyRN%G͚M$\$EtA>&lF-B{O|=%ZT.LElɥR +clY/[:7m7G^۠|J|#Qu訕Yg֪n=+f2DFLfj sq'?Cq:[M_"[KMPTL xUPG);=OeX&!#S8 ]E&_ֻHݛi?)y0M1?av7SP6%+=4nw2;G'@'^t׮5C/JC@]!v+w\،P|1 Ie-Za?mQ ƸM;-ea)b%)l'Š|?8 !5}h/twd,i#YSLzG`qXh[cΖ= 4߹VǨ1Mu 0)weTaݸWvNqiP/!:j{GEeK8wm ?7 Ftvآ-B:2w1q3ezv-Rnd6c5iI3\E,Ht&Y|x0 ]+nOˑqeJ4hU29Z[CL|R٢DLchb?xTr4$SSXT!c\%Dy],&[zSC)E4-z(c΂'7Gƒ ַa>ǎS/0fW~9SD>s FT fA Iq'~=F[J<^%$"_FX_K 0_q p[H/mw)?j,)o[)EZ5tZ$@5g3vռކK4&0TnD6\' A}n'l"՘禈q F1b>U<5䍎S4:"-ЁIp8ʡ7O dS͂[ݖ`2Z}9z "h1ϐ)҈ \mu֟(:HN{g#p5Re#wBB/:&K" ֎h%jT{4A]eЦZ"eZWp|q!fNNU~r*My*&izSqBS?BJtlwiM9Y^U>r~`ܸnDR՚G37i:z8^|еē3OIZ4j`R[n*;r. n. s_-M_^LtV:*Ծ-o\w.-=dHޤز"EDaj[DodHg 0q3+8yxxHI ${A`hrL[1q} WϦ!BC %ezi[DPy cKc q0~^K6=saGj^Y0p7Y6Lqd^q*0/%zbf,d8PUp:{:xȩq1謿= ŽxGp-̍Hս3sEHͺ'aImJM1קe;ods]9jۘQw'쬹\t MҗtJ5NTGSd>y~QoI><8S][+ |9E :{ol4Pv}4x@.88Ԣx?0 CM2loaZ:q$y/%gFxZx !叡߷(颶"F#yʲ=ْD%N.af}"|ibwtH:RL=M7SI~5=ql]uu/b Z~6z@ t&A'~FWkM:8=b ?Eۡ^'SڗRiuIGwۘ@L5LP.R3@z.L߿xY+Z+ V`ȭ0ަg SNXPKt'372gSשsrPvwc.찭Vv=t lOC1q*jJvZ2Plv>Gb~ KYf? rxI+jy@]:1*VhdU=bǍHRR>_{ˈڥvW̏h/І: WDK{D ,pѳ'~CzP`܉b 3AqyߩFYU+ax }>~ˈppӛ{cHnl$ZSbsvong2vqAA3Ƅ/iajv*/ҸOM_' 8]-`>N^}R*>dr-,&ԟNq;I}@: >+{u/})TYKC0O\ȋ?'.QYdZ`Z]%%G-ծTP(dj"AQLHn<} }*5QO]aK̛ MG-λ>jހ:v|Lh&Vz#Wp+ܮك-47>a"\/&@1[b}~,;^7p&@qxeaěT==tOY<.oc@f?YhG@LbS='rD:Omц=>{yp>uæHo|dY?d$^Xџ"ExU ?m1Klú +`@6$8Xx[Eʡ¡g#rQ;v\bQ@ݵƯAUCϪ+SۚS*f8f `VQ/TaP#SƎq"O ڴ$> P (h mnmA*՗ Ih :sg8nsck4;t2H=5B%|>M*>(rȽ0~Iu2f.@@侮$aCv2Ӑ Ȉ){Bn!8@p]c.;gp h )6KY,:j7/{8OEB7]h>L=ӆZ'DH Qc$5=a44}\3Ov?VnEׯb4R ! ]iOf2ԍPuE՝%ژ6 99#&S?AP[Q{6?Lc|9quOoڹ~asox ȗ;p> eFguѰQ7 1E"#ҁ?ޘV(C.th TpjEȁԴyYz`5<8Z+kYPPQN+ ֻWtؼ"FN"/ͭa*`;'t1SDfc~c yO,=.~O4xz꥗|U=/ܗc3TNHbW{;"2w2G7d/ /ww𖱹pXI-MM+ػQv=Ie'ijE͙h*-[ .s:@y42ADEBxi^eӂA $zp¼V3smWwR"buD]YBm0Ձŧyn"yT$Kqe %og|H[fS:sNJ^5=?\ed׼s. ,*.%tI]-w?5 aͬͷL@{B}}6N. fʭ,}zǶ [5Rr#n{p\+)zQC;llWlee^_flUwX&eiNR$!йPNÄӣWO'fN/-%A֞ _VPHdqgYK.7T]+4WA^Z>xy_kS5?iΌ.ļMσ ђWCV$~ Pө|FZ(7tL?xm5G ke IF1D%U%`UƎCj.7PSCFyXc;]ryDn_ЭaGBJ+>6¬@z[Q]YY~(/e,*KZVw;kf:]}w3GJ$G%#f{#~EE#EBe oZ70^2f`զǷzC2m܇k܅(ۚ%2%IIcg6º܆r4 e}b>}jŒA"좒b()1mot脨JCa;ϔ-:l]|3%œvGe݈r@$2 @N'=U.|Iy]3Î\ >Gi2YJbUQb}ckoQGdŀTEZbhɔL呹Jr'T d⹧<HR父 DdgV&V,jխZGctǶw鲷'#KɥR\bZ&bZ,9 ZW4C觠>R|[GWu[ht=L5xAL aK9eF502{^zw;֋q+ݶݸӅ=E< aN-OJj8KzVI Wrv[u?\n;mݙ}Jm\/ԓȆ[ize+,#$ *X#b4WN'B `jU3Z3X}X'/X9TqdqPtQpH \FUڪ4vP17L@>;Ȗ/b"jXk{N[^C"&mb^L>xNen;[@=al?˛r'hGܕC!f)[CjDX3ypGP̲Z11>;8`#Ky_i$ c1ebA$($ȓ51fCe]pbhVdOHs W6V{v?8yM #/}c0tm;^W7M+d0F;۔8fD \YDybr`07CY R(J óʐxkki7ηTBզxc;VEiK/С\r_n\W۾6+)^6ȡH\L…k_!%nۮg'Gȯ!HFe],rʭqgli а,@rnA7Sfx3xBhvhF$=r t~l=3ӴL<XTPN; :*iUT] [;:n!nЦǯ r2^v5y©ަn ~#WF/4V&w;fͱ}Q@ (qԆaG$4NCYf\WIJ2;>tMYP7+0ۼsrq-r: [;(29'$fGES/[ S5̠390-P6=VڤPϛfRw ?& {}-!]Q\iC [96@9Du=8ٝNd4UϾXY!:0djzCW=`lfb3`cwN^Q*;QM뒪O9UbntUm$>X$ 7VdUƗNGJdTKp}Q}0feJݧr̓4HˆZ9Uxqv `k 6BkF~/1z߷$ȱ>hFvl ^$*K>J PH1<"3p,u뱲ݳm"T'X\ a C&16Jzf _A+ϰdzL[BB/buF5FV\@I83~b?|8΀iVu[xꍝnDl)pLB휗54FcQ> DLM9TPΎt꠸\g*sVl-kԒ9˴5kw=[1߶ NAdW gB5-qu<Ԫ6WM3E&ud/mXyy`]`/8:vmSKKw&Jɗ6L`VDf@٭rd,n"7a (^Ub7o)Bgfc50rO!:*6؍ I+o>Z&q'm2.2`>{$RIk0E85qa&Uc?ޙʴڭ[\`6Y"Eh[ғxi = _Ю"RZ:1 ǒ.eږiTng~N,s_{QWfF" baX=:ا]sQ=Uٻ"ö5f#Z9lh_NᎥP{ewލon!߂IOs;N&[ (IGg_bmnˇ@ow:d,a执}wzԔvr|r? Jnu%;&fm('4 ͳ$ς3ٸ2 jV67/*^WPZkv$D ) |`Y>MK3j`S?!) ѱ [PsT-_4|dQX1r V SC+QQK<P]P0Mm0mJ}|Q5BAm/WcAZ!`#^vC7zA׽2b8{4QݙgpfCF MDl|0+%N7Xmj{Q/?M l^acnC٘K2R%CŌHYA%+fajʯ1r{i K\7㸟uRVG* trn zWl>j/B&ӰRHwd]ҏGPl[DKaWf |q {Ҳxo㿊}wRWf4LUv U'ޮ)gK-.o-~`JKTzT3RwP۶s-9 [n78O/Y^vP=(07cA]s4F7LSN]D'qð"o)\>\-](7z#ɤ)ZsqȮ93w(HrMr Q >3q;~=䞮,h)əeB9߁Rd`'A9>&+dz1`rIP)tPr#X2E wJ9M޼܊ bM0[׆||=Z\s3Yd?B@)_N[v\Q뱺ܨ#e{A<(~)}l4Jti )B?6vYL YZ