mpv-conf/shaders/ravu-lite-r3.glsl
2021-12-03 20:50:08 +08:00

111 lines
64 KiB
GLSL

//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//!DESC RAVU-Lite (r3, compute)
//!HOOK LUMA
//!BIND HOOKED
//!BIND ravu_lite_lut3
//!WIDTH 2 HOOKED.w *
//!HEIGHT 2 HOOKED.h *
//!WHEN HOOKED.w OUTPUT.w / 0.707106 < HOOKED.h OUTPUT.h / 0.707106 < *
//!COMPUTE 64 16 32 8
shared float inp[432];
void hook() {
ivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);
int local_pos = int(gl_LocalInvocationID.x) * 12 + int(gl_LocalInvocationID.y);
for (int id = int(gl_LocalInvocationIndex); id < 432; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {
int x = id / 12, y = id % 12;
inp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x+x)+(-1.5), float(group_base.y+y)+(-1.5))).x;
}
groupMemoryBarrier();
barrier();
vec3 abd = vec3(0.0);
float gx, gy;
gx = (inp[local_pos + 25]-inp[local_pos + 1])/2.0;
gy = (inp[local_pos + 14]-inp[local_pos + 12])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
gx = (inp[local_pos + 26]-inp[local_pos + 2])/2.0;
gy = (inp[local_pos + 15]-inp[local_pos + 13])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (inp[local_pos + 27]-inp[local_pos + 3])/2.0;
gy = (inp[local_pos + 16]-inp[local_pos + 14])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
gx = (inp[local_pos + 37]-inp[local_pos + 13])/2.0;
gy = (inp[local_pos + 26]-inp[local_pos + 24])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (inp[local_pos + 38]-inp[local_pos + 14])/2.0;
gy = (inp[local_pos + 27]-inp[local_pos + 25])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;
gx = (inp[local_pos + 39]-inp[local_pos + 15])/2.0;
gy = (inp[local_pos + 28]-inp[local_pos + 26])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (inp[local_pos + 49]-inp[local_pos + 25])/2.0;
gy = (inp[local_pos + 38]-inp[local_pos + 36])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
gx = (inp[local_pos + 50]-inp[local_pos + 26])/2.0;
gy = (inp[local_pos + 39]-inp[local_pos + 37])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (inp[local_pos + 51]-inp[local_pos + 27])/2.0;
gy = (inp[local_pos + 40]-inp[local_pos + 38])/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
float a = abd.x, b = abd.y, d = abd.z;
float T = a + d, D = a * d - b * b;
float delta = sqrt(max(T * T / 4.0 - D, 0.0));
float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;
float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);
float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);
float lambda = sqrtL1;
float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);
float angle = floor(theta * 24.0 / 3.141592653589793);
float strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);
float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);
float coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;
vec4 res = vec4(0.0), w;
w = texture(ravu_lite_lut3, vec2(0.038461538461538464, coord_y));
res += inp[local_pos + 0] * w + inp[local_pos + 52] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.11538461538461539, coord_y));
res += inp[local_pos + 1] * w + inp[local_pos + 51] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.19230769230769232, coord_y));
res += inp[local_pos + 2] * w + inp[local_pos + 50] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.2692307692307692, coord_y));
res += inp[local_pos + 3] * w + inp[local_pos + 49] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.34615384615384615, coord_y));
res += inp[local_pos + 4] * w + inp[local_pos + 48] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.4230769230769231, coord_y));
res += inp[local_pos + 12] * w + inp[local_pos + 40] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.5, coord_y));
res += inp[local_pos + 13] * w + inp[local_pos + 39] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.5769230769230769, coord_y));
res += inp[local_pos + 14] * w + inp[local_pos + 38] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.6538461538461539, coord_y));
res += inp[local_pos + 15] * w + inp[local_pos + 37] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.7307692307692307, coord_y));
res += inp[local_pos + 16] * w + inp[local_pos + 36] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.8076923076923077, coord_y));
res += inp[local_pos + 24] * w + inp[local_pos + 28] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.8846153846153846, coord_y));
res += inp[local_pos + 25] * w + inp[local_pos + 27] * w.wzyx;
w = texture(ravu_lite_lut3, vec2(0.9615384615384616, coord_y));
res += inp[local_pos + 26] * w;
res = clamp(res, 0.0, 1.0);
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));
imageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));
}
//!TEXTURE ravu_lite_lut3
//!SIZE 13 288
//!FORMAT rgba16hf
//!FILTER NEAREST
1e0e05847785268dd40e3e9b061b380bbb199e19ff18f718529bde118e03d81a3b895b0fae8d5a82e915ca1b319c4f911228aca13aa2f69d042dff2c08b00ab095a10f28d79d5ba2ab1b9216a8914b9c1c1b0018441ae517fb2c05b0f82c07b0543c543c543c543c4e8ca204fd093788eb97c19ca51d371726914292b81d3c1e9e9cfa96fd16501d3305e483468c520826191e1eaa9d7098d52821a18fa3fba05d2d5a2d34b033b01aa1e82821a1cca30c1f49199a992a9ecb16f01c8e109b1a482d26b0382d31b0533c533c533c533c4b8e9c05c68c750e459af89c7e1edf18939dca9d9320b320529e689b911b641f1f8af18f7310de807f0f4f1e799dc389e5296ea03ea361a4ae2d9e2d55b04ab0519c4a2a6ca5c2a4b620501bb09b4fa04793dd201e9e301c192e59b09f2d95b0513c543c543c513c3c8058869382f58df49bc59ce91fee13e3a0eca162241b243d9eb89aaf118c20a30f3f8cf48ea58aff98d320469e52931929aea452a5ad1a812f4e2f2eb132b1b0a49b29e410baa5e0202599348cf49e40a18424b4a15824cf2f54b1852f63b14e3c513c513c4e3ce90c5c8b150cf2917d9c2f98121db21538a17ca13524f523a29c079d4819481ffd00248edf8b110dd49a9620759dca8bf32806a5fba44f1d4b2ff12e06b102b1ada3f829dd9880a666223814959b1da13e9f432564a31f231f3051b16d2f9ab14d3c533c533c4d3c6f11cb0d0690ca92929c5198681b431a199ffe9ec9210f21ca9d239e421da51f6906808dd808cd84519fee157b13591eb228b7a4a5a33c1a762e102e97b086b0a59da32a42a28ea71225f021ada2bba42e221b27ada5aa9fe12fcab0512e75b14d3c543c543c4d3c83913c891d82cc02ee948c98ec1e469b18a6bea5b4279a27959a689ada96292008890193f085eb0bcf8cbc21539d519eef2765a6b4a52925bb3075300eb207b267a64729d522bba69922e2906f9d859f52a64728bda62128123149b2b0306cb2483c513c513c483c3f0fa395b3137f904d973f1820186c994ba423a4ee258425e595459c9b88401e18981f96a9135e18bf90ee20fa9a9d9e9a25a4a661a487263d30852f6bb162b1f7a4a7293d20d5a7f924841ea9a212a3a4a4162923a867266a3125b27630aeb2453c543c543c453c8501fa959e158489cd01e61a8298af95b39f1da05b224f21b19160941214bd16ce9cf69c6b1cbe1dfea3bd9e892172229b1a04a9bc1da628d52e162ea5b082b0cf9ac3290a9f47a8282a4b297ca958aa8428762c3aacc9a67f31f4b0c52ef1b2473c553c553c473c880f72986e107e83609b6c19d51f479fa5a86ea88a299029e9888c9f44993a211699c890560099175d951b238d9872a1782720a7d7a73c287531fb30b3b2b0b2f1a61e2a4b25e9a87e243e9a93a0cb9db2a8cb29a4a89129d331d9b22a3110b3453c533c533c453c4710e9983c0c990c6e97e21b6c1cd09e6da716a66a284928ff8bc3a0b415b320359ee19c3f1b761e381b7322b39859a37922f8a60da5da289e30dc2fc4b1a2b1e79fea2a7d1a38aade26ec22d2a5aca441a60e2a35a9032837323ab2833059b3403c573c573c403ccc1a9d174b9c9b980920da20ad9e36a2a9a0409d752206224e88279b1918a91ad2a786a7ef272228f1a913a96e2a1b295aa992acb8285f2dea2e742d96b050b05b27ca2c89a8a3ac552fca2e41af50af542ed530cdb0c0ad2534afae112bc4b43e3c5c3c5c3c3e3c4494f112120c178c3880689d901c3816f31a8f165a1af718769c320b2088ed1c74888190d00a0c0fb110cd1d019e78083f28aba11ca38e9d4a2d3a2d2bb023b02fa13028a89ccba3881d7e1985965b9ee51cfb184d1ad20e372d1cb0282d2ab0533c543c543c533c128eeb8d910cc70b5c9ad59c761d791a59916d8acd1dae1d3f9d2c9c6a1b771e180dcb0d7991e583ef19ce1e8f9e17996828b1a070a4b49c702d582d32b035b0159de32845a09da56a20e01c779c8da0fc1c5b1dd205200b8a2d1cb0182d50b0523c543c543c523c410e37094f8dfd8e1f9e859bf61d8d1b8f9ef19c7d215221e89e179fea1d88202f0436023e01ec870416771a4d9a1f814d2834a149a41c97ba2d3c2d40b029b07e1e042a2ca463a8532476244fa49ba4472433249fa2a1a15f2ee4afd22cccb04f3c563c563c4f3c340a0a05018f308e539b679c111f5b1417a1c3a1ba249223aa9f0e9c6c139b21ec0f7981d88ce690db9a3720579d960c93289ea4bea43c1dd92f102f3eb12fb1b0a4332a5d984da6eb217d985c9186a0b9a02525aba2ea231c3058b1492f75b14a3c563c563c4a3cdf109389ea898d91389bf393be1b260b93a154a18d249523829e2a9fdc1b2521bf8ce892da0c0912029f801da292e9187b27e9a514a3c422cd2f962e16b105b1c1a1432bd5a03aa88324e21c0ca0a1a343854127b0a5501f84301eb1b72ed8b1463c593c593c463c2b173d0ec49404958c9bb4162f16b292be9f56a009230522ada149a1432189224c93b396cd1410164aa4799e29219323bd252fa7169edb24422fd42dc3b0abb0541c4e2c70a696a95c280d2671a63ea80c27d7292da98fa5a23077b0722d0ab2453c5c3c5c3c453c5d90978e7d076e818e0e3894581d3b9d44a6cfa5ee279d27b29cfa9b8891eb20e88f9896900cbe1335883f20cb9a959d1c2507a6b1a4d72618312b300db21cb2e5a6a02a301f7fa71724608cd59d30a135a6bc281aa79a2779313fb2563085b2403c593c593c403c3715d192ca8ff290bb15461c6f8d799ea7a4e7a32f267825499d6e9ec91aba20de998d9bf918d71b739db419d91c9a99300ecba7699d4f29d0308e2e86b162b1a7a33b2c1da06ba955271c228ea40fa6aea0812a95a916245e32bbb1342f30b3343c653c653c343c101807978000e8919f1bff2013a0a29f6b9e139fd8226020fc9ea399321e221e20a1a2a28f21d2224da7c2a3ea26c3249aa55dabfb25252c9c2ff62caab05fb06d23962c74a8d3aa772c2c2ceaabe0ac332bf12d56aefea8ff3230b0192d29b4353c663c663c353cf515ba987992740e6212f51b531d84a1dba820a8902971291b9b3aa23c1850236e99ed95ec086e1919961a220f10e1a1422254a7c3a59b29f7319430c6b2b9b2fca6352c8d20c8a95f250f9cc09fb3a09fa8f929afa85a296c32a6b2913046b3383c5f3c5f3c383c75177c93239827891420ed20419ccca30ca8b5a45728e527859d22a416211523a3a18fa1d71ffc22b5978218bb2013a19da6e6a86e1c3f2c7531472eeab191b1301dd62d00a77dacba282425b8a6eba7a0a35d2b89aa8a25d33352b1d12d23b4253c723c723c253c6e19f98cbf9df914c125d62412a5b3a6249ca4200c1c11189f1aed132d1d8b9cd6a990a99629582ad6a887a7a82a662582aed5ade62c2030dc2f622645b09eae422ada2e05adbead2730b62fadaf4cb09d2d5b30cdb062ac7b35a7abcd9dcab50f3c8e3c8e3c0f3ca891af029008e40c320c849d261c3f17791ac1198f1a4315679c4c8a8e0fb11c8810820e918d1e929812071dbe9c628f0d285da1b8a25a9d432d1e2d22b01db039a14928f99d78a3bd1bd9167c8b029dc61d991b9b152901362d22b0112d18b0523c553c553c523c4d8b35901b0e210a579aad9cd81c9a1b8b141a94801f211adc9c1b99ba17421ee40ed68049030890c40aea1ed59d72916d28aba173a3eb9d7c2d5d2d53b021b0b69ce0289f9feaa5f51d9a1cff997a9f4d1e8d1e5c96098c9d2d29b02a2d55b0523c543c543c523c5883a103e181268b8c9d729b7a1c771c1c9eb59bba218920959d599ef21c3f20cd02078ef00d4780b491e31a68980b13fa2797a263a250900e2e472d78b02cb05c1e0e2a6ba45ea8fa210f241ca21aa4762467237ea183a1d32edeafb12cf6b04c3c593c593c4c3cc58a0b8ae28d060951992a9cb01ef80331a1afa1c62493238ba0b39c6e180b22151305904490d88bdb9b2a200d9cb48d2028cca456a421200a30e32e3eb138b181a4a32a569da9a62722f195ae93fda000a047251ca36623393044b1062f85b1483c583c583c483c9c11b9870f8f4691f3981391d41a229462a103a18e242c23c8a05ba0211e9e2212914195c910081592a0c01aaf16221c9025e2a53ca190242f301b2e25b106b16fa04a2c58a407a9fb24531e1fa09fa42d1ae927b4a69c1ddd3004b12c2e04b23f3c603c603c3f3c55182382e19367954d982b1c78964f995ba045a00324db2102a40fa3742373247b969b9a5b180c1ab5a43e9c01221622ee230fa8179905270c308f2df6b0c6b008210f2d8ba8b0aa38281e26d4a573a8b6264a2944a997a32e3150b0f72c7ab23b3c653c653c3b3cf793e886b005de0774183586911ba99e60a6a9a50a287227db9e999d45132b223f8e7b97c80df413ef082d1ec795a69d5521b0a5a4a31e286c31c82f13b225b20ba7f52b350332a89824b795739c31a2e9a5e92850a72227ce3130b208309bb2393c613c613c393cd210628e06927481041ecc1cc89aa5a01da599a253262f25ada0b0a07f1f9b22029c079e1a1b411e119c6d932d202a9c7fa585a7871cf82a7e31612d96b171b1eaa2bf2d84a697aa3b28a32243a49ea70aa0a92acea998232a337ab1af2d79b3233c763c763c233c5a147a9b341843104c20cd22aea321a1469d959cad232a1b7ea21d9c0921b021bfa2bfa4cf239124c1a4439c8524f51de4a9cbab5629ea2c8030412b06b116b02826392ecbaaacac212cb72bc5aab2aca328972c46adc1a32934a6af1a2a7ab4193c823c823c193c3013d298139457155e1cc31d89192fa31ba9baa792296b296f9dfba3261e1e2475995c99ee03b31b140ccb206019b6a2c19b02a73fa4de2a82322430ceb2ceb2b2a7442db49454aa2d26259d249e54a2c4a8222aa9a85129f93287b2043065b32b3c6d3c6d3c2b3ca7116395cd98af1795244522aaa1b5a517a88ba1c227df26cda165a5c624612426a32ea40721202595176c94cb227aa3feabd5a87d25a52d68324c2c03b278b10d1fe62f86aa42ad69295325aaa522a91aa45b2b9baae4259034deb0a02a64b4093c8f3c8f3c093cfa9dc59eb418ee204326d521ada561a5411e60259ea04ba00796b91d3c236ea1a4a9cda91729b82aa919b51a902518a679b07aacf42d52304d309ca98baf23ac712c9630fdafb3aea72e842e27ade5af28288b2c99ae98188d368fa922ab55b6b03bc73cc73cb03b7d8b140f2d8d0f859402ff9c251c2a16cf1a7919f91be9102c9b1392140d931c7305b4109090908b2505721ca79c2e122628c0a175a2d79d382d212d27b016b0f9a14328159d12a3871c4b15b58d4a9d061eed19d0179d80252d16b0152d1cb0533c543c543c533c49939c848b0e540d82968f9c1c1cd01900168e0e291eac19969c95981918731d3814e80bde919a905e93581c719c86167c283aa214a3189e722d632d4cb029b0ce9eec288d9f81a5021d321ad395b99ee51f5a1f1698e896932d2fb02e2d4db0523c543c543c523c78026a05ae8c89834c9c9f99481cf318b09d4d9a4d21a820819c789e701b7820b80d491462933b905b9c0419fd8c471a572845a44da2c68a232e982da2b03db0bb1a772a7ba3c5a8a61f761f099d98a14c23eb21dba06d9cfc2e2bb02a2d06b14b3c593c593c4b3c67902b0c0090b907bd98499cbe1e2a83c3a0a3a1b32441238fa0249d91190222e110e38bcf8dcd8d5c9cf11ec79a7c1280278da418a4bf202630a32e34b141b1d5a43c2b6aa0b8a6782236963c924ca1079f8825c0a3ee224e303cb1c32e80b1453c5a3c5a3c453cd8111f90ff8a989035930a8d17178995fba109a1f2241d2364a1d2a0b41f1f23878dec94aa083b1586a05e1b7118e51955238aa5179f6a257f30a32d30b114b1c9a0da2cdda567a9fc24f81c3d9ebca4e5189f2783a6951e2231edb0862d0bb2383c683c683c383c8f160792a28c69910f101d1d0f9c629c3fa2f0a0c62440232da436a3352463244396859c7115c61c04a4d80bef20ef1d371f20a8618f86288b305a2d19b10ab12722db2ddea970ab5426a2245aa2eba75d241c289da82391aa314cb0a02cc7b2343c6b3c6b3c343cc691ae879f8e290fe8193e07221a249f5aa6a9a5242840276aa0679efe18dc22188f66973f880216ec10e11c828e199e271801a5a2a2b128bb31512f18b237b25fa78f2c7f9d8fa8d6240a9a7498d8a2d1a5cc28fda6ef26103225b27e2f9fb2323c683c683c323cac923084ee9045145921231b179de4a116a661a17c26722529a249a2eb21e5230f9c6e9e0b1a251f0712a897761f979f3fa9dea5e921f52b4d32322cb6b191b1b2a4302ff0a851ab8528ea1fb8a105a85ea2402a1ca95324d4336ab1382c79b3103c8a3c8a3c103c91920f9ca41a271888219b2158a47da01a9e2c981924f713c9a5b0a0eb24a724f7a0d6a415226524ee9a5d19b02000a161acd0a9b229542d9531222835b13cb044274e3008adcdadd429dd2881a65eab231ecb292fab0a24bc34aeafca2496b4fc3b9d3c9d3cfc3bfb812c994d940e192320221f518050a45aa989a7b3297029cd9fb0a4cd20a72489986f975096131c281cc91e861c2ca407a511a643a2fe2b1033762fdcb2e6b258a8442eeba0d5aa81268fa04e98cea219a93d2a82a86329773389b2262f73b31f3c793c793c1f3c979be299b08c4a1ee3268e2120a4b5a62fa8cf9be9260c269ca459a6e4263d255aa2a2a462206f251123308f7c217aa635ae14a75b28932e8133502819b273b13393f33070acaaadc7299f23b6a2c0a949a6942aa8a9b1271535dbb00b256bb4d43baf3caf3cd43bc7a1f49a221fab205e24cf9c73a4d89a6124b22688a47ba493a5f99578287e962aa83ea9f226052a58296622939d5faa6eb16ea66e2e852f0731c0adcfafd8a8682e5c3258b1c0b09a2b302c2fa7d4ada3a601267faa692b9637e1abd0ae57b6463bfc3cfc3c463b1790d40d728d710c6900b89ca71b8116d21c6e19da189612c69cc1800415be1bce85d513689245881d09b41c029da512292842a2c0a1709e3d2d282d2cb017b0b8a11d28229c38a3e71c6d151c8cb79d631ddb190a183711232d1cb0152d15b0523c553c553c523c2492648a570a30109a92dc9c211cca1841199b0eb01d9618779aca92cc14041bfb1320144e960791ce98ab1c939c1b1a6e2851a256a2119f802d2d2d45b020b0d3a09628cd9cdda4331a1a162c86b39c9e1f031fee948d97892d31b0362d45b0513c563c563c513c6e86df082c85f48aa49b789b051d0319e19c8d18921f821eeb0e6e9ffc18c31df5118c189e950197fe9d741ad297051d9e2815a43ca30e97242ea72db2b038b0919b572abf9ed0a8ba91131c318c6f9c7620251e749baf17232f85b08b2deab04d3c583c583c4d3c1a92d105a490e110089a5c9c141f620b37a038a2ee24ec2250a18c9a16175422271086922481aa85c09aab1e7a9a9d88ef2630a400a426214030852e3cb147b112a5652bf1a094a6bd229e968203d9a1cb9ea225b8a38e225c303db19a2e77b1433c5d3c5d3c433cb30d568c588f808900923b95771865947aa1fea0fd24af227ca2fda08620c42304002d9266902b14269f6f1b0f13fb170f209ea4579c9325ce303c2d3bb12db110a3582d24a741a9bd24aa15409883a4cf13d32697a5921f4431f1b00e2deab1323c6e3c6e3c323cf71217909f076b8e4b192f16b4991e9cb2a4859e40250324f6a13aa55424c224b791320c62977d17e69f37198e1a160ff1a0c0a5a81cd4287331632c5cb133b1e190212f98a970ac2324ff18679ab8a32299ec26fba549226d3296b0072ba8b2223c7c3c7c3c223ce192448f4788b810981af2105d19c19f6da6c4a543283d2786a1c49ee419fc23f9080d98888cbb147518ed1a5607eb9e589c75a402a221290532072f25b253b2faa7002d0da19ca8be24d69b2e8916a322a6c128bba60b27423223b2092f98b22c3c6e3c6e3c2c3c6499d3813208e7183d239917019ebca2c9a6d9a0c726ad250aa491a3cf23c024bf98079e1e17e61dc51f2799e51bafa1aaabdca1cf234d2c2e33262acab1d6b1caa6453079aa93ab40283f89789796a7cba4562998a7212524347bb1cb2934b3fe3b9b3c9b3cfe3b3a9d688e3819281cc4239b1537a240a0a2a33e1f7623411957a692a68727fb26899d12a1a21b772177243397be0d19a52cae9aa26c29382d4533b4038db18ab0621ec83182adeeaede2729185c0ab8a78ca76f2842a603284b35b3b05ea236b4b33bc03cc03cb33bda9206984196951a3121b61e1c9394a489a97fa7e02970292aa104a5b8213625c890d6980398951af31e3f1c161d73a4d5a706a529a1592c8f33e82eeab212b323a9072f49a4b5aaa62616a2061878a345a93c2a48a85629c43395b28e2e6cb3163c833c833c163cc0a026965f15db207228cb1d71a446a7c1a8e886a2267b26f9a53da77628aa25e89f1aa4421af0243a279c9bb51d37a80cb0a2a00129152f61341d1e28b2c5b126a4dc3144adb9adce290e1aa68fb7a971a8df29fba73e28673531b1539d32b4a03bc93cc93ca03bb0a4941b6d207e206122e9a201a3611fb12492264fa3aea5d5a905a4142b5024faa238a85c20a728072d5d9b3ea5caab31b20f26082e6d2e9732d1aeb9b097a9372ec83371b1e4b1b024cb25e82347aaeeac582378a1442d0d38aaaf18b0a4b5f93a203d203df93ad68f9f8e7a02a9116c0e139c101bdc121d1d9e19231ac2826c9cf48f2b142e1c75887413098f4e8f96905a1b889b93153728e5a180a22c9e1f2d112d1eb00cb0daa13d28179eaaa2f91ba70960118b9c9b1dbb1aaf18098d1f2d1db01e2d15b0533c553c553c533c7e9570802e1096105292209b9319e718c61d1c10bc1cd809089cf1940718111b780f4a16b1961b9075951e192e9ca31b682814a2c5a13da0812d2e2d48b021b0a5a29328f59b2ca43019f80e5311a19b3f1e091ea40c5694782d37b02a2d2fb0513c563c563c513ce689150c2180b38c879c5a98e817da1cd49de2109621e81efa20b59f9f93b395448faa1bbc99e992039f1919e8913a1d942897a3e4a2ed9b682eac2daab066b0d3a2b02970160da8b69d509779100b1eae1cd61fe79cdf1d9a2e9bb0c52da3b04d3c583c583c4d3cef8d5e8c0f071489fd98219c601d3215d59f55a22c254f22c1a1f39a9b16f3225710ba901485988d6c9a491e1c9bcc0e8a268ba3cca3e7205830692e3bb155b1d5a5b52bbca10ea60c23ad996a12dba1dd9e6125eba221225a3044b1802e5eb1413c5f3c5f3c413c8e8bcd8b470655890291ae984e189b8853a096a14625d82153a3fa9ff41ff9235611e089dd938002819c501a8095c917c0188ba14a9d71252631ba2c27b15eb1ada5c82d33a87ca82224509c1e1cbea3b09bee250aa4d62054310ab1a22ca5b12c3c743c743c2c3c8f9367112b10f780ff1ed49a6499399bd4a7fc8f17260c25571c14a70422d1234a9c5c1fbc985998e61b479307972e9c8fa7359ae51e9d28aa328f298fb16eb100a958309ca829ac4f23aaa46c1ba81964a6e02659a029250c3343b1fe2805b20a3c933c933c0a3c8f926a8f308d4512b71bda0a4119e39f86a6fba5722836272fa2b99e74196524c00fda97e28679107619bf1a0a0b859f25a044a34ca251294532d12e2cb275b262a8432dfba189a89924669d11148aa247a6902843a6132752322ab2d02e84b2293c713c713c293cb59c7e104b105a1b45245788fd9c95a348a7a4a140273326fba4ada3302478255306779c7290b21b0523bc9bcf1201a3adac361a96226d2c01347828d0b141b209a9b23080ababaa5c27afa0ee20cba644a64b28b7a4cc253534abb13828c2b2e33ba83ca83ce33b03a2a51a2f1be61ee2260ca09aa064a39ea86c22bb24eb23c9a393a8cc27d3268a9ac799c395971d2d28da9feba051a5afaf3b250329db2ca73434a7e4b15fb1d7a9c6323dade7ad7527bda6e02452a4efa9d3265f1c1827593599b1afa8d9b2773bde3cde3c773b5d95b6979b971c1c8b21b51ecf90d4a497a992a7002a6829aca204a596210b26f810c395b89aa0180021a816f81de2a4d4a863a3d5a1952ce433682ed9b23ab3c7a98d2f84a58baa782620a41e1f59a384a9342a03a85c29f433bbb24a2e56b3103c893c893c103c71a303122b1842228e29cb12ffa358a8ada93b966727f427e3a7e6a6b628c526b51833a3129a63220b2985a0671292a8d7b044239e28772f10351ea414b289b2eda87b32ecade7acaf282ba33e25eea88ca9a428caa398288535a3b1bba5abb3773bde3cde3c773b99a8d12160222b24e729e2a4a2a436a493a5ff26021cdd8c84a90ea8d22ad6275990f3a402990c252c2e3aa672a7c6aa34b33e2b572d052f2e35ffaec1b114b0f01840344db097b0442406a53828dca5c5ad0e261325872b643780b100b028b4dc3a2d3d2d3ddc3acc8f7b029e8ea411a190889b5a1b9915941daf18bc1aa68c889c94095c11f41b4e8f74130c8f7388580e101b139ce712372880a2e6a12a9e1e2d1e2d1db015b0aba23d28189edaa12a1cfd8f2914689c171d241a9f1971811e2d1eb0112d0cb0533c553c553c533c80953010628095106f95309c1c19a51b3e1eb20c0a1e5894aa9b210f68112e191d904a16b096740f49929119229be9186928c8a116a23ca0782d2a2d37b02fb02da49428ea9ba8a2101be7940b180c9cc51dbe1c2610b909812d48b02e2d21b0513c563c563c513ce3891980170cb78c039fe1911b19371da81ce19cdc1fdf1d3f1ebb974d0fbc9d0c93b41bb499958f8f9cf0175698dd1c9728efa2a2a3d49b982ec62d9ab0a3b011a8b4290417e7a2b695cd9f2f941021e49d9b212a11e91e662ea9b0ae2d66b04d3c583c583c4d3cef8d0e075e8c14896c9a1c9b491ecc0edd9eeba261252122dba1ad996a120c23988dba9014855710fd98601d219c32158a26cca38ba3e7205a30802e44b15eb10ea6b52bbca1d5a5f322f39a9b16c1a1d59f2c2555a24f2258303bb1692e55b1413c5f3c5f3c413c8e8b4706cd8b5589819c8095501ac917b09b0aa4ee25d620bea3509c1e1c22248102e089dd93561102914e18ae989b88c1184a9d8ba171255431a22c0ab1a5b17ca8c82d33a8ada5f923fa9ff41f53a353a0462596a1d821263127b1ba2c5eb12c3c743c743c2c3c8f932b106711f780e61b079746932e9c64a659a0e0262925a819aaa46c1b4f2359985c1fbc984a9cff1e6499d49a399b8fa7e51e359a9d280c33fe2843b105b229ac58309ca800a9d12314a70422571cd4a71726fb8f0c25aa328fb18f296eb10a3c933c933c0a3c8f92308d6a8f45127619080bc01a859f47a643a6902813278aa2669d111499247910db97e086c00fb61b4119d90ae39f25a04ca244a351295232d02e2ab284b289a8432dfba162a86524b89e74192fa286a67228fba5362745322cb2d12e75b2293c713c713c293cb59c4b107e105a1b0523cf12bc9b01a344a6b7a44b28cc25cba6afa0ee205c27b21b779c729052064524fd9c578895a3adac9622361a6d2c35343828abb1c2b2abaab23080ab09a97825ada33024fba448a74027a4a133260134d0b1782841b2e33ba83ca83ce33b03a22f1ba51ae61e2d28eba0da9f51a5efa95f1cd326182752a4bda6e0247527971dc799c3958a9ae2269aa00ca064a3afaf03293b25db2c5935afa899b1d9b2e7adc6323dadd7a9d32693a8cc27c9a39ea8bb246c22eb23a734e4b134a75fb1773bde3cde3c773b5d959b97b6971c1c0021f81da816e2a484a903a8342a5c2959a320a41e1f7826a018c395b89af8108b21cf90b51ed4a4d4a8d5a163a3952cf4334a2ebbb256b38baa8d2f84a5c7a90b2604a59621aca297a9002a92a76829e433d9b2682e3ab3103c893c893c103c71a32b18031242220b29671285a092a88ca9caa3a4289828eea82ba33e25af28632233a3129ab5188e29ffa3cb1258a8d7b09e284423772f8535bba5a3b1abb3e7ac7b32ecadeda8c526e6a6b628e3a7ada967273b96f427103514b21ea489b2773bde3cde3c773b99a86022d1212b242c2e72a73aa6c6aac5ad13250e26872bdca506a5382844240c25f3a402995990e729a2a4e2a436a434b3572d3e2b052f643700b080b128b497b040344db0f018d6270ea8d22a84a993a5021cff26dd8c2e35c1b1ffae14b0dc3a2d3d2d3ddc3a1790728dd40d710c1d09029db41ca512631d0a18db193711b79d6d151b8ce71c4588d5136892ce856900a71bb89c81162928c0a142a2709e232d152d1cb015b038a31d28229cb8a1be1bc3800415c69cd21cda186e1996123d2d2cb0282d17b0523c553c553c523c2492570a648a3010ce98939cab1c1b1a9e1fee94031f8e97b39c1a162c86331a06911f144e96fb139a92211cdc9cca186e2856a251a2119f892d362d31b045b0dda49628cd9cd3a0041bc992cc14789a4119b01d990e9718802d45b02d2d20b0513c563c563c513c6e862c85df08f58afe9dd297731a051d7620739b241eae17709c131c308cb491fe968c189e95ef11a39b051d789b03199d283ca315a40897232f8b2d85b0eab0d0a8572ac09e939bc21d6e9ffc18ff0ee19c911f8e18821e242eb2b0a72d38b04d3c583c583c4d3c1a92a490d105e110c09a7a9aab1e9d88cb9eb8a3a2258e22d9a19e968203bd22aa85869224812710089a141f5c9c610bef2600a430a426215c309a2e3db177b194a6652bf1a012a554228c9a161750a137a0ee2438a2ec2240303cb1852e47b1433c5d3c5d3c433cb30d598f568c8089269f0f136f1bfb17cf1397a5d426921f83a4aa154098bd242b142d9266900500009277183b9565940f20579c9ea4932544310e2df1b0eab141a9582d24a710a3c423fda086207ca27aa1fd24fea0af22ce303bb13c2d2db1323c6e3c6e3c323cf7129f0717906b8ee69f8e1a3719170f2299fba5ec264922b8a3ff18679a23247d17310c6297b7914c19b4992f161e9cf1a0a81cc0a5d4286d32072b96b0a8b270ac212f98a9e190c2243aa55424f6a1b2a44025859e032473315cb1632c33b1223c7c3c7c3c223ce1924888448fb81075185707ed1aeb9e22a6bba6c1280b2716a3d69b2c89be24bb140d98888cf908981a5d19f210c29f589c02a275a421294232092f23b298b29ca8002d0da1faa7fc23c49ee41986a16da64328c4a53d27053225b2072f53b22c3c6e3c6e3c2c3c64993208d581e718c51fe51b2799afa1cba498a75629212596a7408978974028e61d079e1f17bf983d23019e9917bca2aaabcf23dca14d2c2434cb297bb134b393ab453079aacaa6c02491a3cf230aa4c9a6c726d9a0ad252e33cab1262ad6b1fe3b9b3c9b3cfe3b3a9d3819688e281c7724be0d339719a58ca742a66f280328b8a729185c0ade27772112a1a21b899dc42337a29b1540a02cae6c299aa2382d4b355ea2b3b036b4eeaec83182ad621efb2692a6872757a6a2a376233e1f411945338db1b4038ab0b33bc03cc03cb33bda9241960698951af31e161d3f1c73a445a948a83c2a572978a316a20618a626951ad6980398c89031211c93b61e94a4d5a729a106a5592cc4338e2e95b26cb3b5aa072f49a423a9362504a5b8212aa189a9e0297fa770298f33eab2e82e12b3163c833c833c163cc0a05f152696db203a27b51d9c9b37a871a8fba7df293e28b7a90e1aa68fce29f0241aa4421ae89f722871a4cb1d46a70cb00129a2a0152f6735539d31b132b4b9addc3144ad26a4aa253da77628f9a5c1a8a226e8867b26613428b21d1ec5b1a03bc93cc93ca03bb0a46d20941b7e20072d3ea55e9bcaabeeac78a15923442d47aacb25e823b024a72838a85c20faa2612201a3e9a2611f31b2082e0f266d2e0d3818b0aaafa4b5e4b1c83371b1372e502405a4142bd5a9b2244fa39226aea59732b9b0d1ae97a9f93a203d203df93a7d8b2d8d140f0f852805a79c721c2d12061ed017ed199c804a9d4b15b48d871c918bb410909076059102251cff9c2b16262875a2c0a1d79d252d152d16b01cb012a34328159df9a1931c1392140d2c9bcf1af91b7919e810382d27b0212d16b0533c543c543c533c49938b0e9d84550d5e93719c581c8616e51f16985a1fe896b99e321ad395021d9a90e90bde91381482961c1c8e9cd0197c2814a33aa2189e932d2e2d2fb04db081a5ec288d9fce9e731d96981918969cff15291e900eac19722d4cb0632d29b0523c543c543c523c7602ad8c6e058c835b9cfc8c0619441a4d23dba0ea216c9c97a1761f099da61f3f9048145f93bc0d4c9c481ca199f71857284da245a4088bfc2e2a2d2bb006b1c5a8772a7ba3be1a7820779e711b839cb09d4d214e9aa920232ea2b0982d3db04b3c593c593c4b3c679000902b0cb8075c9cc79af11e7c12079fc0a38825ee224ca136963c927822cd8de38bcf8de110bd98be1e499c2883802718a48da4bf204e30c32e3bb180b1b8a63c2b6aa0d5a40222249d91198fa0c3a0b324a3a14123263034b1a32e41b1453c5a3c5a3c453cd711ff8a1f90989086a071185e1be619e51883a69f27951ebca4f81c3e9efc243a15ec94a708868d349317170a8d89955523179f8aa56a252231862dedb00bb267a9da2cdda5c9a01f23d2a0b41f64a1fba1f22409a11d237f3030b1a32d14b1383c683c683c383c8f16a28c0792699104a4ef20d80bef1d5d249da81c282291eba7a2245aa25426c61c859c711543960f100f9c1d1d629c371f618f20a88628aa31a02c4cb0c7b270abdb2ddea92722632436a335242da43fa2c624f0a040238b3019b15a2d0ab1343c6b3c6b3c343cc5919f8eae87280fec10818ee11c199ed1a5fda6cc28ef26d8a20a9a7498d624021666974088198fe819221a4107249f2718a2a201a5b12810327e2f25b29fb28fa88f2c7f9d5fa7dc22679efe186aa05aa62428a9a54027bb3118b2512f37b2323c683c683c323cad92ee902d8445140612761fa897979f5ea21ca9402a532405a8ea1fb8a18528251f6e9e0b1a0f9c5921179d231be4a13fa9e921dea5f52bd433382c6ab179b351ab302ff0a8b2a4e52349a2eb2129a216a67c2661a172254d32b6b1322c91b1103c8a3c8a3c103c9092a41a0f9c2718ed9ab0205d1900a1221e2fabcb290a245eabdd2881a6d4296524d6a41522f7a0882158a49b217da061acb229d0a9542dbc34ca24aeaf96b4cdad4e3008ad4427a724b0a0eb24c9a51a9e19242c98f713953135b122283cb0fc3b9d3c9d3cfc3be5814e942b990d19271c861cc91e2ca419a982a83d2a6329cea28fa04e988126131c6e975096889823204c80221f50a407a543a211a6fe2b7733262f89b273b3d5aa442eeba058a8a724b0a4cd20cd9f5aa9b32989a770291033dcb2762fe6b21f3c793c793c1f3c979baf8ce2994a1e11237c21308f7aa649a6a8a9942ab127c0a99f23b6a2c7296f25a2a462205aa2e32620a48e21b5a635ae5b2814a7932e15350b25dbb06bb4aaadf33070ac33933d2559a6e4269ca42fa8e926cf9b0c26813319b2502873b1d43baf3caf3cd43bc7a1221ff49aab205829939d66225faaa3a67faa0126692bd4ad302c2fa79a2b052a3ea9f2262aa85e2473a4cf9cd89a6eb16e2e6ea6852f9637d0aee1ab57b6c0b05c3258b1682e7e96f995782893a5612488a4b2267ba40731cfafc0add8a8463bfc3cfc3c463ba8918f08af02e40c9812be9c081d628fc61d9b15991b2701029dd9167d8bbd1b1d92810e918d8810340c261c849d3e170d28b8a25da15a9d362d112d22b018b078a34928f99d39a1b11c4c8a8e0f679c781a8f1ac1194415432d22b01e2d1db0523c553c553c523c4d8b1b0e3590210ac40ad59dea1e72914d1e5c968d1e098c7a9f9a1cff99f51d0890d6804903e40e579ad81cad9c9a1b6d2873a3aba1eb9d9d2d2a2d29b055b0eaa5e0289f9fb69c421e1b99ba17dc9c8b14801f1a94211a7c2d53b05d2d21b0523c543c543c523c5583e3819d03248bb9916998e21a181376247ea1672384a11aa40f241ca2fa214d80078eed0ddc028d9d7a1c719b761cfa2763a297a24f90d32eb12cdeaff6b05ea80e2a6ba45b1e3f205a9ef21c959d1b9ebb21b49b89200d2e78b0472d2cb04c3c593c593c4c3cc58ae28d0c8a0709db9b0d9c2a20b58d00a01ca347256623fda0f195ae932722d98b0590449015135199b01e2a9cf703202856a4cca421203930062f44b185b1a9a6a32a569d81a40b22b39c6e188ba031a1c624afa193230a303eb1e32e38b1483c583c583c483c9d110f8fb887469192a0ae16c01a221c2d1ab4a6e9279c1d9fa4541e1fa0fb2409154295cb101491f498d41a1391229490253da1e2a59024dd302c2e04b104b207a94a2c58a46fa09e225ba0211ec8a062a18e2403a12c232f3025b11b2e06b13f3c603c603c3f3c5518e19323826795b5a401223e9c1622b62644a94a2997a373a81e26d4a538280c1a9b9a5b187b964d9877962b1c4f99ee2317990fa805272e31f72c50b07ab2b0aa0f2d8ba8082173240fa3742302a45ba0032445a0db210c30f6b08f2dc6b03b3c653c653c3b3cf793b105e986de07ef08c7952d1ea69de9a550a7e928222731a2b795739c9824f4137b97c70d3f8e7418911b3386a99e5521a4a3b0a51e28ce31083030b29bb232a8f52b3b030ba72b22999d4513db9e60a60a28a9a572276c3113b2c82f25b2393c613c613c393cd2100692628e7681119c2d206d932a9c0aa0cea9a92a98239ea7a32243a43b28411e079e1a1b029c041ec89acc1ca5a07fa5871c85a7f82a2a33af2d7ab179b397aabf2d84a6eaa29b22b0a07f1fada01da5532699a22f257e3196b1612d71b1233c763c763c233c5a1434187a9b4310c1a48524439cf51da32846ad972cc1a3b2acb72bc5aa212c9124bfa4cf23bfa24c20aea3cd2221a1e4a95629cbabea2c29341a2aa6af7ab4acac392ecbaa2826b0211d9c09217ea2469dad23959c2a1b803006b1412b16b0193c823c823c193c2d131294d39858151a0c5f19cb20b6a2c4a8a9a8222a512954a2259d249e2d26b31b5c99f50375995e1c8819c31d2fa3c29b3fa402a7de2af932043087b265b354aa442db594b2a71e24fba3261e6f9d1ba99229baa76b298232ceb22430ceb22b3c6d3c6d3c2b3ca711cd986295af179517cb226c947aa31aa49baa5b2be42522a95325aaa5692920252ea4072126a39524aaa14522b5a5feab7d25d5a8a52d9034a02adeb064b442ade62f86aa0d1f612465a5c624cda117a8c2278ba1df26683203b24c2c78b1093c8f3c8f3c093cfa9db418c59eee20a9199025b51a18a6282899ae8b2c9818e5af842e27ada72eb82acda91729a4a94326ada5d52161a579b0f42d7aac52308d3622ab8fa955b6b3ae9630fdaf712c6ea1b91d3c230796411e9ea060254ba04d308baf9ca923acb03bc73cc73cb03b4494120cf212178cb210029ecd1d7908e51c4d1afb18d30e5b9e7e198596881d0c0f8190d00a75883d80901c689d39163f281ca3aba18e9d372d282d1cb02ab0cba33028a89c2fa1ed1c320b2088769cf31a5a1a8f16f7184a2d2bb03a2d23b0533c543c543c533c128e910ceb8dc70bf019909ece1e1799fc1cd2055b1d1f0b8da0e01c779c6a20e583cb0d7991180d5c9a761dd59c791a682870a4b1a0b49c8a2d182d1cb050b09da5e32845a0159d771e2c9c6a1b3f9d5991cd1d6c8aae1d702d32b0582d35b0523c543c543c523c400e4f8d3709fc8e07164c9a761a4b8147249fa23324a1a19ba476244fa45324ed8735023e0130041f9ef61d859b8d1b4d2849a434a11e975f2ed22ce4afccb063a8042a2ca47d1e8820179fea1de89e8f9e7d21f19c5221ba2d40b03c2d29b04f3c563c563c4f3c340a018f0a05308edb9a579d3720960cb9a0aba22525ea2386a07d985c91eb21e6907981d88cec0f539b111f679c5b149328bea49ea43c1d1c30492f58b175b14da6332a5d98b0a49b210e9c6c13aa9f17a1ba24c3a19223d92f3eb1102f2fb14a3c563c563c4a3cdf10ea8993898d91029fa392801de9184785b0a54127501fa1a3e11c0ca083240912e792d80cbe8c389bbf1bf393260b7b2714a3e9a5c4228430b72e1eb1d8b13aa8432bd5a0c1a125212a9fdc1b829e93a18d2454a19523cd2f16b1962e05b1463c593c593c463c2b17c4943d0e04954aa42921799e93230c272da9d7298fa53ea80d2671a65c281016b396cd144c938c9b2f16b416b392bd25169e2fa7db24a230722d77b00ab296a94e2c70a6551c89224aa14321ada1be9f092356a00522422fc3b0d42dabb0453c5c3c5c3c453c5d907e07968e6f813488cb9a3f20959d35a61aa7bc289a2730a15f8cd59d1724be139896920ce88f8e0e581d38943b9d1c25b1a407a6d726793156303fb285b27fa7a12a301fe5a6eb20fa9b8891b29c44a6ee27cfa59d2718310db22b301cb2403c593c593c403c3715ca8fd192f290739dd91cb4199a99afa095a9812a16240fa61c228ea45527d71b8d9bf918de99bb156f8d461c799e2f0e699dcba74f295e32342fbbb130b36ba93b2c1da0a6a3ba206e9ec91a499da7a42f26e7a37825d03086b18e2e62b1343c653c653c343c10187e000797e8914da7ea26c2a3c324332b56aef12dfea8e0ac2c2ceaab772cd222a2a28f2120a19f1b13a0ff20a29f9aa5fb255dab252cff32192d30b029b4d3aa962c74a86d23221ea399321efc9e6b9ed822139f60209c2faab0f62c5fb0353c663c663c353cf5157992ba98740e19960f101a22e1a19fa8afa8f9295a29b3a00f9cc09f5f256e19ed95ec086e996212531df51b84a14222c3a554a79b296c329130a6b246b3c8a9352c8d20fca650233aa23c181b9bdba8902920a87129f731c6b29430b9b2383c5f3c5f3c383c751723987c932689b597bb20831813a1a0a389aa5d2b8a25eba72425b8a6ba28fc228fa1d71fa3a11420419ced20cca39da66e1ce6a83f2cd333d12d52b123b47dacd62d00a7301d152322a41621859d0ca85728b5a4e5277531eab1472e91b1253c723c723c253c6e19bf9df98cf914d6a8a82a87a766259d2dcdb05b3062ac4cb0b62fadaf2730582a90a99629d6a9c12512a5d624b3a682aee62cd5ad20307b35cd9da7abcab5beadda2e05ad422a8b9cec132d1d9f1a249c0c1ca4201118dc2f45b062269eae0f3c8e3c8e3c0f3c8f8c2288b4088d07dc155e9e411eb892651cf31866184818eb9ef3186b94dc1d9e08b780d900648d0b98d01c189cc11763283ba36ca1cd9e3d2d3f2d28b02bb0daa35f28609efda0791c0a9384154a9c3a153a1c1b133d1c5d2d2eb04b2d33b0543c533c533c543ca78f02071a031809291dd39fcc1f8c9c4e1c38168b1c460a74a0f31c899df9200e80a38305868303339cc61e739d0a1ba528d8a40da0279e772d5b2d39b04db00aa5cd28aa9e24a0431e019ca31b839d6094381e6596fa1e862d48b08a2d41b0543c523c523c543c3509558e450a2d892520a49e4a1f779f4020d19d3421789ceea3742486a41524b0841a0efd8d7083d99dee1d3e9c4b1c7928a6a597983e9e0f2e382d30b09ab039a719292ea2491c3520f59fe41f8b9fa49d6921a39e3b21662d28b0482d15b0503c553c553c503c89039f85cc860e8e7499239ed020039383a106a2b3248324e69eaf991585db209c8c828b448f7010179cd51f999c0e14132964a5bca4e01bf22f9e2f62b172b1dea5a729aa12b9a49d20ed9afb114b9e09a180242ca22f24962f36b15c2f39b14e3c513c513c4e3c710ef30a768cf2912d9b789dad20cf8c3e9fa6a3672531234aa1ae14049c9622140cde8c838b13008c9cfc1cc0978615e728fba40da5c91d2930722f55b1a3b19aa6fc29d09893a35b1f309d6219a09c3fa13c2485a1f8234c2f05b1ee2e00b14c3c533c533c4c3c07124b8f940d609310a0a3176613131f9022fda587271fa041a5ff22afa39c253f89f188dd81130ba09cda1ae2974c1a7228c4a3bea40a1dd62f502ecdb070b1f2a78e2af5a1699ca91f779e8a1dd89d049fd521fe9e0721712e93b0042e80b04d3c543c543c4d3c3591d482a7890a02038d549dc121599e53a6c0a6492822288c9f0091749da022a00bb692df8666890395e81e7b98449bec27b4a567a62e251331b03049b26db2bfa64929d52268a62920809ac396899a18a6b427bea59a27bb300eb2743006b2483c513c513c483c100f9613aa953890ec90129bf820a09ea9a428a81c296c261fa3871eaea201255718329600141b9838971f1845187d999b255ca4a9a686266b31773026b2afb2d5a7ab292f20f8a4451e449c5189e4954ba4ee2523a485253d306ab1832f61b1453c543c543c453c53818615de9577872ca47c218a9ece22792847ac842cada67faa562986a94f2aac1dfc9c741cbb9c3e086b98c61a2a96bf1a761e1ea9a3288131d32efbb0f3b23ea8d429979f759b01172e94a3134c92ae9f582219a04d21d22ea4b0122e80b0473c553c553c473c06106f1074985e85689592981d2372a1b2a8a4a8cb299129cf9d459a92a080249b1788908d811899689bd71f6b19449f7827d8a720a73c28d3312a31d9b210b3eaa81f2a4b25f1a63c21929f3b991589a5a88a296da88f297531b3b2fb30afb2453c533c533c453c5b102d0cec988f0c3a1bb39873225aa341a636a90e2a0328aca4ed22d3a5df26761edf9c3e1b379e6e976c1ce41bd19e79220ca5f8a6da28373283303ab259b338aaeb2a701ae79fb420c3a0b415f88b6da76a2816a649289e30c4b1db2fa2b1403c583c583c403cc71a4f9cac179598f2a96d2a12a91d29542eceb0d630c0ad52afca2e41af562f232887a7f027d2a70d20aa9ed72039a258a9bb2894ac5e2d2634162bb1aec5b4a2accc2c8ca85627af1a1c9b0f18d688a9a075223e9d0622ea2e96b0742d50b03e3c5c3c5c3c3e3cb8809e08658dda00f318eb9edc1d6c94f318651c481866185e9edc15b892411e22888f8c8c07b4080a93791c4a9c84155f28daa3fda0609e3f2d3d2d2bb028b03ba36328cd9e6ca1d01c0b98c117189c1b133d1c3a153a1c4b2d33b05d2d2eb0533c543c543c533ca3830f8083030686f31c74a0f920899d38164e1c450a8b1cd39f291d8c9ccc1f0007a78f19091a03019c431e839da31bcd280aa524a0aa9e5b2d772d4db039b0d8a4a528279e0da0c61e339c0a1b739d6596fa1e6094381e8a2d41b0862d48b0523c543c543c523c1a0eb0847083fd8d7424eea3152486a4d19d4020789c3421a49e2520779f4a1f558e35092d89450af59f35208b9fe41f192939a7491c2ea2382d0f2e9ab030b0a6a579283e9e9798ee1dd99d4b1c3e9ca39e3b21a49d6921482d15b0662d28b0553c503c503c553c828b9c8c7010448faf99e69edb20158506a283a18324b324239e74990393d0209f8589030e8ecc86ed9a9d204b9efb11a729dea5b9a4aa129e2ff22f72b162b164a51329e01bbca4d51f179c0e14999c2ca22f2409a180245c2f39b1962f36b1513c4e3c4e3c513cde8c130c1300838bae144aa19622049ca6a33e9f31236725789d2d9bcf8cad20f30a710ef291768c309d5b1fa09c6219fc299aa693a3d098722f2930a3b155b1fba4e728c91d0da5fc1c8c9c8615c09785a1f8233fa13c24ee2e00b14c2f05b1533c4c3c4c3c533cf1883f89130bdd81ff2241a59c25afa3fda590221fa08727a31710a0131f66134b8f07126093940d779ea91fd89d8a1d8e2af2a7699cf5a1502ed62f70b1cdb0c4a372280a1dbea4da1aa09c4c1ae297fe9e0721049fd521042e80b0712e93b0543c4d3c4d3c543cb692a10b6689dc86ff908c9fa022749dc0a653a622284928549d038d599ec121d28236910902a789809a2920899ac3964929bfa668a6d522b03013316db249b2b4a5ec272e2567a6e81e0395449b7b98bea59a2718a6b427743006b2bb300eb2513c483c483c513c329657181b980014871e1fa30125aea228a8a9a46c261c29129bec90a09ef8209613100f3890aa95449c451ee4955189ab29d5a7f8a42f2077306b31afb226b25ca49b258626a9a61f1838977d99451823a485254ba4ee25832f61b13d306ab1543c453c453c543cfc9cac1dbb9c741c56297faa4f2a86a947ac7928ada6842c7c212ca4ce228a9e861553817787de952e9401174c92a313d4293ea8759b969fd32e8131f3b2fbb0761ebf1aa3281ea96b983e082a96c51a19a04d21ae9f5822122e80b0d22ea4b0553c473c473c553c88909b1718998d81459acf9d802492a0a4a8b2a89129cb299298689572a11d236e1006105e857498929f3c2115893b991f2aeaa8f1a64b252a31d33110b3d9b2d8a778273c2820a7d71f689b449f6b196da88f29a5a88a29fb30afb27531b3b2533c453c453c533cdf9c761e379e3e1bed22aca4df26d3a536a941a603280e2ab3983a1b5aa373222d0c5b108f0cec98c3a0b420f88bb415eb2a38aae79f701a8330373259b33ab20ca57922da28f8a66c1c6e97d19ee41b16a649286da76a28db2fa2b19e30c4b1583c403c403c583c87a72328d2a7f027ca2e52af562f41afceb0542ec0add6306d2af2a91d2912a94f9cc71a9598ac171c9baf1ad6880f18cc2ca2ac56278ca8162b2634c5b4b1aebb2858a95e2d94acaa9e0d2039a2d7203e9d0622a9a07522742d50b0ea2e96b05c3c3e3c3e3c5c3c81900c0f7488d00a7e195b9e881d85964d1ae51cd20efb18019eb1107808cd1d120c4494178cf112320bed1c769c20883028cba32fa1a89c282d372d2ab01cb01ca33f288e9daba1901c38803816689d8f16f718f31a5a1a3a2d23b04a2d2bb0543c533c533c543ccb0de583180d7991e01c8da06a20779cd205fc1c200b5b1d8f9eef191799ce1e910c128ec70beb8d2c9c771e3f9d6a1be3289da5159d45a0182d8a2d50b01cb070a46828b49cb1a0761d5c9a791ad59c6d8aae1d5991cd1d582d35b0702d32b0543c523c523c543c3602ec872f043e0176249ba453244fa49fa24724a1a133244d9a04161f81771a4f8d410efd8e3709179f8820e89eea1d042a63a87e1e2ca4d22c5f2eccb0e4af49a44d281c9734a1f61d1f9e8d1b859bf19c52218f9e7d213c2d29b0ba2d40b0563c4f3c4f3c563c7981e690ec0fd88c7d9886a0eb215c91aba2b9a0ea232525579ddb9a960c3720018f340a308e0a050e9c9b21aa9f6c13332a4da6b0a45d98492f1c3075b158b1bea493283c1d9ea4111f539b5b14679cc3a1922317a1ba24102f2fb1d92f3eb1563c4a3c4a3c563ce8920912bf8cda0ce21ca1a383240ca0b0a54385501f4127a292029fe918801dea89df108d9193892a9f2521829edc1b432b3aa8c1a1d5a0b72e8430d8b11eb114a37b27c422e9a5be1b389b260bf39354a1952393a18d24962e05b1cd2f16b1593c463c463c593cb39610164c93cd140d263ea85c2871a62da90c278fa5d72929214aa49323799ec4942b1704953d0e49a18922ada143214e2c96a9541c70a6722da2300ab277b0169ebd25db242fa72f168c9bb292b41656a00522be9f0923d42dabb0422fc3b05c3c453c453c5c3c9896be13e88f900c608c30a11724d59d1aa735a69a27bc28cb9a3588959d3f207d075d906e81978efa9beb20b29c8891a02a7fa7e5a6301f5630793185b23fb2b1a41c25d72607a6581d8e0e3b9d3894cfa59d2744a6ee272b301cb218310db2593c403c403c593c8d9bd71bde99f9181c220fa655278ea495a9aea01624812ad91c739d9a99b419ca8f3715f290d1926e9eba20499dc91a3b2c6ba9a7a31da0342f5e3230b3bbb1699d300e4f29cba76f8dbb15799e461ce7a37825a7a42f268e2e62b1d03086b1653c343c343c653ca2a2d22220a18f212c2ce0ac772ceaab56ae332bfea8f12dea264da7c324c2a380001018e8910797a399221efc9e321e962cd3aa6d2374a8192dff3229b430b0fb259aa5252c5dab13a09f1ba29fff20139f60206b9ed822f62c5fb09c2faab0663c353c353c663ced956e196e99ec080f9cb3a05f25c09fafa89fa85a29f9290f101996e1a11a227992f515740eba983aa250231b9b3c18352cc8a9fca68d2091306c3246b3a6b2c3a542229b2954a7531d621284a1f51b20a87129dba890299430b9b2f731c6b25f3c383c383c5f3c8fa1fc22a3a1d71f2425eba7ba28b8a689aaa0a38a255d2bbb20b59713a182182398751727897c9322a41523859d1621d62d7dac301d00a7d12dd33323b452b16e1c9da63f2ce6a8419c1420cca3ed20b5a4e5270ca85728472e91b17531eab1723c253c253c723c90a9582ad6a99629b62f4cb02730adafcdb09d2d62ac5b30a82ad6a8662587a7bf9d6e19f914f98ced138b9c9f1a2d1dda2ebead422a05adcd9d7b35cab5a7abe62c82ae2030d5ad12a5c125b3a6d624a4201118249c0c1c62269eaedc2f45b08e3c0f3c0f3c8e3c820e1e928810918dd916029dbd1b7c8b9b15c61d2901991bbe9c9812628f071d9008a891e40caf024c8ab11c679c8e0f492878a339a1f99d112d362d18b022b0b8a20d285a9d5da1261c320c3f17849dc1194315791a8f1a1e2d1db0432d22b0553c523c523c553cd6800890e40e49039a1c7a9ff51dff995c964d1e098c8d1ed59dc40a7291ea1e1b0e4d8b210a35901b99421edc9cba17e028eaa5b69c9f9f2a2d9d2d55b029b073a36d28eb9daba1d81c579a9a1bad9c1a94211a8b14801f5d2d21b07c2d53b0543c523c523c543c078e4780cd02f00d0f241aa4fa211ca27ea1762483a167236898b4910b13e31ae1815883268ba103599e3f20959df21c0e2a5ea85c1e6ba4b12cd32ef6b0deaf63a2fa27509097a27a1c8c9d771c729bb59b89201c9eba21472d2cb00e2e78b0593c4c3c4c3c593c0590d88b15134490f195fda02722ae931ca300a0662347250d9cdb9bb48d2a20e28dc58a06090b8ab39c0b228ba06e18a32aa9a681a4569d062f393085b144b156a420282120cca4b01e5199f8032a9cafa1932331a1c624e32e38b10a303eb1583c483c483c583c419508151291c910531e9fa4fb241fa0b4a62d1a9c1de927af1692a0221cc01a0f8f9c114691b9875ba09e22c8a0211e4a2c07a96fa058a42c2edd3004b204b13ca190259024e2a5d41af3982294139103a12c2362a18e241b2e06b12f3025b1603c3f3c3f3c603c9b9a0c1a7b965b181e2673a83828d4a544a9b62697a34a290122b5a416223e9ce1935518679523820fa3732402a474230f2db0aa08218ba8f72c2e317ab250b01799ee2305270fa878964d984f992b1c45a0db215ba003248f2dc6b00c30f6b0653c3b3c3b3c653c7b97f4133f8ec80db79531a29824739c50a7e9a52227e928c795ef08a69d2d1eb005f793de07e886999d2b22db9e4513f52b32a80ba735030830ce319bb230b2a4a355211e28b0a5911b7418a99e3586a9a5722760a60a28c82f25b26c3113b2613c393c393c613c079e411e029c1a1ba3229ea73b2843a4cea90aa09823a92a2d20119c2a9c6d930692d2107481628eb0a09b22ada07f1fbf2d97aaeaa284a6af2d2a3379b37ab1871c7fa5f82a85a7c89a041ea5a0cc1c99a22f251da55326612d71b17e3196b1763c233c233c763cbfa49124bfa2cf23b72bb2ac212cc5aa46ada328c1a3972c8524c1a4f51d439c34185a1443107a9b1d9cb0217ea20921392eacac2826cbaa1a2a29347ab4a6af5629e4a9ea2ccbabaea34c2021a1cd22959c2a1b469dad23412b16b0803006b1823c193c193c823c5c99b31b7599ee03259d54a22d26249ea9a8c4a85129222a6019140cb6a2cb20139430135715d298fba31e246f9d261e442d54aab2a7b4940430f93265b387b23fa4c19bde2a02a789195e1c2fa3c31dbaa76b291ba992292430ceb28232ceb26d3c2b3c2b3c6d3c2ea4202526a30721532522a96929aaa59baa1aa4e4255b2bcb2295177aa36c94cd98a711af17639565a56124cda1c624e62f42ad0d1f86aaa02a903464b4deb07d25feaba52dd5a8aaa19524b5a545228ba1df2617a8c2274c2c78b1683203b28f3c093c093c8f3ccda9b82aa4a91729842ee5afa72e27ad99ae282898188b2c9025a91918a6b51ab418fa9dee20c59eb91d6ea107963c239630b3ae712cfdaf22ab8d3655b68fa9f42d79b052307aacada5432661a5d52160254ba0411e9ea09ca923ac4d308bafc73cb03bb03bc73cb410908b730590904b154a9d871cb58dd017061e9d80ed19a79c25052e12721c2d8d7d8b0f85140f1392931c2c9b140d432812a3f9a1159d152d252d1cb016b075a22628d79dc0a1251c94022a16ff9c7919e910cf1af91b212d16b0382d27b0543c533c533c543ce80b9a903814de91321ab99e021dd3951698e51fe8965a1f719c5e938616581c8b0e4993540d9c849598731d969c1918ec2881a5ce9e8d9f2e2d932d4db02fb014a37c28189e3aa21c1c8296d0198f9c8e0eac190016291e632d29b0722d4cb0543c523c523c543c49143b90b80d6293761f98a1a61f099ddba04c236d9ceb21fd8c5b9c471a0419ae8c780289836a05789e7820819c701b772ac5a8bb1a7ba32a2dfc2e06b12bb04da25728c68a45a4481c4c9cf3189f994d9aa820b09d4d21982d3db0232ea2b0593c4b3c4b3c593ce38bcd8de110cf8d36964ca178223c92c0a3079fee228825c79a5c9c7c12f11e00906790b9072b0c249d02228fa091193c2bb8a6d5a46aa0c32e4e3080b13cb118a48027bf208da4be1ebd982a83499ca3a14123c3a0b324a32e41b1263034b15a3c453c453c5a3cec943b15878daa08f81cbca4fc243d9e83a6e518951e9f27711886a0e5195e1bff8ad81198901f90d2a01f2364a1b41fda2c67a9c9a0dda5862d22310bb2edb0179f55236a258aa51717359389950a8d09a11d23fba1f224a32d14b17f3030b1683c383c383c683c859cc61c43967115a224eba754265aa29da85d2423911c28ef2004a4ef1dd80ba28c8f166991079236a363242da43524db2d70ab2722dea9a02caa31c7b24cb0618f371f862820a80f9c0f10629c1d1df0a040233fa2c6245a2d0ab18b3019b16b3c343c343c6b3c66970216188f3f880a9ad8a2d6247498fda6d1a5ef26cc28828eec10199ee11c9f8ec691290fae87679edc226aa0fe188f2c8fa85fa77f9d7e2f10329fb225b2a2a22718b12801a5221ae819249f3e07a9a540275aa62428512f37b2bb3118b2683c323c323c683c6e9e251f0f9c0b1aea1f05a88528b8a11ca95ea25324402a761f0712979fa897ee90ac924514308449a2e52329a2eb21302f51abb2a4f0a8382cd43379b36ab1e9213fa9f52bdea5179d5921e4a1231b61a1722516a67c26322c91b14d32b6b18a3c103c103c8a3cd6a46524f7a01522dd285eabd42981a62fab231e0a24cb29b020ee9a00a15d19a41a919227180f9cb0a0a724c9a5eb244e30cdad442708adca24bc3496b4aeafb22961ac542dd0a958a488217da09b212c98f7131a9e192422283cb0953135b19d3cfc3bfc3b9d3c6f97131c899850968fa0cea281264e9882a819a963293d2a861c281c2ca4c91e4d94fb810e192c99b0a4a724cd9fcd20442ed5aa58a8eba0262f773373b389b243a207a5fe2b11a65180232050a4221f89a770295aa9b329762fe6b21033dcb2793c1f3c1f3c793ca2a46f255aa262209f23c0a9c729b6a2a8a949a6b127942a7c2111237aa6308fb08c979b4a1ee29959a63d259ca4e426f330aaad339370ac0b2515356bb4dbb05b2835ae932e14a720a4e326b5a68e21cf9b0c262fa8e926502873b1813319b2af3cd43bd43baf3c3ea9052a2aa8f226302cd4ad9a2b2fa77faaa3a6692b0126939d58295faa6622221fc7a1ab20f49af9957e9693a578285c32c0b0682e58b1d0ae963757b6e1ab6e2e6eb1852f6ea673a45e24d89acf9cb2267ba4612488a4c0add8a80731cfaffc3c463b463bfc3cd5134588ce8568926d15b79de71c1c8c0a18631d3711db19029d1d09a512b41c728d1790710cd40dc180be1bc69c04151d2838a3b8a1229c152d232d15b01cb0c0a12928709e42a2a71b69008116b89c6e199612d21cda18282d17b03d2d2cb0553c523c523c553c20140791fb134e961a16b39c331a2c86ee949e1f8d97031f939cce981b1aab1c570a24923010648aca92041b779acc149628dda4d3a0cd9c362d892d45b031b056a26e28119f51a2211c9a92ca18dc9c9b0e96184119b01d2d2d20b0802d45b0563c513c513c563c8c180197f5119e95131c6f9cba91318c749b7620af17251ed297fe9d051d741a2c856e86f48adf086e9fc31deb0efc18572ad0a8919bbf9e8b2d232feab085b03ca39e280e9715a4051da49b0319789b8d18821ee19c921fa72d38b0242eb2b0583c4d3c4d3c583c8692aa85271024819e96d9a1bd228203b8a3cb9e8e22a2257a9ac09a9d88ab1ea4901a92e110d1058c9a542250a11617652b94a612a5f1a09a2e5c3077b13db100a4ef26262130a4141f089a620b5c9c38a2ec2237a0ee24852e47b140303cb15d3c433c433c5d3c2d922b1404006690aa1583a4bd24409897a5cf13921fd3260f13269ffb176f1b588fb30d8089568cfda0c4237ca28620582d41a910a324a70e2d4431eab1f1b0579c0f2093259ea47718009265943b95fea0af227aa1fd243c2d2db1ce303bb16e3c323c323c6e3c320c7d17b7916297ff18b8a32324679afba522994922ec268e1ae69f160f37199f07f7126b8e17903aa5c224f6a15424212f70ace19098a9072b6d32a8b296b0a81cf1a0d428c0a5b4994b191e9c2f16859e0324b2a44025632c33b173315cb17c3c223c223c7c3c0d98bb14f908888cd69b16a3be242e89bba622a60b27c12856077518eb9eed1a4788e192b810448fc49efc2386a1e419002d9ca8faa70da1092f423298b223b202a2589c212975a45d19981ac19ff210c4a53d276da64328072f53b2053225b26e3c2c3c2c3c6e3c079ee61dbf981e173f8996a74028789798a7cba421255629e51bc51fafa1279932086499e718d38191a3c0240aa4cf23453093abcaa679aacb29243434b37bb1cf23aaab4d2cdca1019e3d23bca29917d9a0ad25c9a6c726262ad6b12e33cab19b3cfe3bfe3b9b3c12a17721899da21b2918b8a7de275c0a42a68ca703286f28be0d772419a5339738193a9d281c688e92a6fb2657a68727c831eeae621e82ad5ea24b3536b4b3b06c292cae382d9aa237a2c42340a09b153e1f4119a2a37623b4038ab045338db1c03cb33bb33bc03cd698951ac890039816a278a3a626061848a845a956293c2a161df31e73a43f1c4196da92951a069804a536252aa1b821072fb5aa23a949a48e2ec4336cb395b229a1d5a7592c06a51c93312194a4b61e7fa7702989a9e029e82e12b38f33eab2833c163c163c833c1aa4f024e89f421a0e1ab7a9ce29a68ffba771a83e28df29b51d3a2737a89c9b5f15c0a0db2026963da7aa25f9a57628dc31b9ad26a444ad539d673532b431b101290cb0152fa2a071a4722846a7cb1de8867b26c1a8a2261d1ec5b1613428b2c93ca03ba03bc93c38a8a728faa25c20cb2547aab024e82378a1eeac442d58233ea5072dcaab5d9b6d20b0a47e20941b05a45024d5a9142bc833e4b1372e71b118b00d38a4b5aaaf082e31b26d2e0f2601a36122611fe9a29226aea5b1244fa3d1ae97a99732b9b0203df93af93a203d74134e8f7588098fa7098b9cf91b6011af189b1d098dbb1a889b969093155a1b7a02d68fa9119f8ef48f2e1c6c9c2b143d28aaa2daa1179e1e2d1f2d15b01db080a237282c9ee5a1101b6c0edc12139c9e19c2821d1d231a112d0cb01f2d1eb0553c533c533c553c4a161b90780fb196f80ea19b30195311a40c3f1e5694091e2e9c7595a31b1e192e107e9596107080f194111b089c071893282ca4a5a2f59b2a2d782d2fb037b0c5a168283da014a293195292e718209b1c10d809c61dbc1c2e2d21b0812d48b0563c513c513c563caa1be992448fbc9950970b1eb69d7910e79cae1cdf1dd61fe891039f3a1d19192180e689b38c150cb59fb395fa209f93b0290da8d3a27016c52d9a2ea3b09bb0e4a29428ed9b97a3e817879cda1c5a98e210e81ed49d9621ac2d66b0682eaab0583c4d3c4d3c583cba90988d57101485ad99dba10c236a12eba2dd9e212261251c9b6c9acc0e491e0f07ef8d14895e8cf39af322c1a19b16b52b0ea6d5a5bca1802e5a305eb144b1cca38a26e7208ba3601dfd983215219c55a24f22d59f2c25692e55b158303bb15f3c413c413c5f3ce08980025611dd93509cbea322241e1c0aa4b09bd620ee258095819cc917501a47068e8b5589cd8bfa9ff92353a3f41fc82d7ca8ada533a8a22c5431a5b10ab14a9dc01871258ba14e1802919b88ae9896a1d82153a04625ba2c5eb1263127b1743c2c3c2c3c743c5c1f59984a9cbc98aaa4a8194f236c1b59a064a62925e0260797e61b2e9c47932b108f93f780671114a7d123571c0422583029ac00a99ca8fe280c3305b243b1e51e8fa79d28359a6499ff1e399bd49afc8f0c25d4a717268f296eb1aa328fb1933c0a3c0a3c933cda977910c00fe286669d8aa29924111443a647a6132790280a0b7619859fbf1a308d8f9245126a8fb99e65242fa27419432d89a862a8fba1d02e523284b22ab24ca225a0512944a34119b71be39fda0afba5362786a67228d12e75b245322cb2713c293c293c713c779cb21b53067290afa0cba65c27ee20b7a444a6cc254b28cf12052301a3bc9b4b10b59c5a1b7e10ada37825fba43024b230abaa09a980ab38283534c2b2abb19622adac6d2c361afd9c452495a35788a4a1332648a74027782841b20134d0b1a83ce33be33ba83cc799971d8a9ac395bda652a47527e0245f1cefa91827d326eba02d2851a5da9f2f1b03a2e61ea51a93a8d326c9a3cc27c632e7add7a93dadafa85935d9b299b10329afafdb2c3b259aa0e22664a30ca06c22eb239ea8bb2434a75fb1a734e4b1de3c773b773bde3cc395a018f810b89a20a459a378261e1f03a884a95c29342af81d0021e2a4a8169b975d951c1cb69704a50b26aca296218d2f8baac7a984a54a2ef43356b3bbb2d5a1d4a8952c63a3cf908b21d4a4b51e92a7682997a9002a682e3ab3e433d9b2893c103c103c893c33a36322b518129a2ba3eea8af283e25caa38ca99828a42867120b2992a885a02b1871a342220312e6a6c526e3a7b6287b32e7aceda8ecadbba58535abb3a3b19e28d7b0772f4423ffa38e2958a8cb123b96f427ada967271ea489b2103514b2de3c773b773bde3cf3a40c255990029906a5dca5442438281325c5ad872b0e2672a72c2ec6aa3aa6602299a82b24d1210ea8d62784a9d22a403497b0f0184db000b0643728b480b1572d34b3052f3e2ba2a4e72936a4e2a4ff26dd8c93a5021cffae14b02e35c1b12d3ddc3adc3a2d3d741373884e8f0c8ffd8f689c2a1c29149f19171d7181241a139c580ee712101b9e8ecc8fa4117b029409f41b889c5c113d28daa1aba2189e112d1e2d0cb01eb0e6a137282a9e80a25a1ba1909915889baf18a68c941dbc1a1e2d15b01e2d1db0553c533c533c553c4a16740f1d90b096e7940c9c101b0b182610c51db909be1c229b4992e91891196280809595103010210f2e19aa9b68119428a8a22da4ea9b2e2d812d21b048b016a269283ca0c8a11c196f95a51b309cb20c58943e1e0a1e2a2d2fb0782d37b0563c513c513c563cb41b958f0c93b499cd9f1021b6952f942a11e49de91e9b2156988f9cdd1cf017170ce389b78c1980bb97bc9d3f1e4d0fb429e7a211a80417ae2d662e66b0a9b0a2a39728d49befa21b19039f371de191e19cdf1da81cdc1fc62da3b0982e9ab0583c4d3c4d3c583cba905710988d1485f39ac1a1f3229b1655a2d59f4f222c25219cfd983215601d5e8cef8d14890e07ad990c23dba16a12b52bd5a50ea6bca1692e583055b13bb18ba38a26e720cca3491e6c9acc0e1c9beba22122dd9e6125802e5eb15a3044b15f3c413c413c5f3ce08956118102dd93fa9f53a3f923f41f96a153a0d8214625ae9802919b884e18cd8b8e8b55894706509c2224bea31e1cc82dada57ca833a8ba2c26315eb127b18ba1c11871254a9d501a819cc91780950aa4d620b09bee25a22ca5b154310ab1743c2c3c2c3c743c5c1f4a9c5998bc9814a7571cd1230422fb8fd4a70c251726d49aff1e399b649967118f93f7802b10aaa44f23a8196c1b583000a929ac9ca88f29aa326eb18fb1359a8fa79d28e51e4693e61b2e9c079759a0292564a6e026fe2805b20c3343b1933c0a3c0a3c933cdb97c00f7910e086b89e2fa265247419fba586a636277228d90ab61be39f41196a8f8f924512308d669d99248aa21114432d62a889a8fba1d12e453275b22cb244a325a051294ca2c01a7619859f080b43a6132747a69028d02e84b252322ab2713c293c293c713c779c5206b21b7290ada3fba478253024a4a148a7332640275788452495a3fd9c7e10b59c5a1b4b10afa05c27cba6ee20b23009a9abaa80ab7828013441b2d0b1361aadac6d2c9622bc9b052301a3cf12b7a4cc2544a64b283828c2b23534abb1a83ce33be33ba83cc7998a9a971dc39593a8c9a3d326cc276c229ea8eb23bb240ca0e22664a39aa0a51a03a2e61e2f1bbda6752752a4e024c632d7a9e7ad3dad34a7a7345fb1e4b13b25afafdb2c0329da9f2d2851a5eba05f1c1827efa9d326afa8d9b2593599b1de3c773b773bde3cc395f810a018b89a04a5aca20b26962192a797a96829002ab51e8b21d4a4cf90b6975d951c1c9b9720a4782659a31e1f8d2fc7a98baa84a5682ee4333ab3d9b263a3d4a8952cd5a1a8160021e2a4f81d03a85c2984a9342a4a2e56b3f433bbb2893c103c103c893c33a3b5186322129ae6a6e3a7c526b6283b96ada9f4276727cb128e2958a8ffa3031271a342222b182ba3af28eea83e257b32eda8e7acecad1ea4103589b214b24423d7b0772f9e2885a00b2992a86712caa398288ca9a428bba5abb38535a3b1de3c773b773bde3cf3a459900c2502990ea884a9d627d22aff2693a5dd8c021ce2a4e72936a4a2a4d12199a82b24602206a54424dca538284034f01897b04db0ffae2e3514b0c1b13e2b34b3052f572d3aa62c2ec6aa72a71325872bc5ad0e2600b028b4643780b12d3ddc3adc3a2d3dd513ce8545886892c380c69cbe1b04156e19d21c9612da18b89c69008116a71bd40d1790710c728d6d15e71cb79d1b8c1d28b8a138a3229c282d3d2d17b02cb042a22928709ec0a1b41c1d09a512029d0a183711631ddb19152d15b0232d1cb0553c523c523c553c1f14fb1306914e96c992789a041bcc14990e41199718b01ddc9c9a92ca18211c648a24923010570a1a16331ab39c2c869628d3a0dda4cd9c2d2d802d20b045b051a26e28119f56a2ab1cce981b1a939cee948e979e1f031f362d45b0892d31b0563c513c513c563c8c18ef11fe969e956e9fff0ec21dfc188e18e19c821e911f789ba39b0319051ddf086e86f58a2c85131cb491709c308c572a939bd0a8c09ea72d242e38b0b2b015a49d2808973ca3731afe9d051dd297739bae177620241e8b2deab0232f85b0583c4d3c4d3c583c86922710aa8524818c9a50a15422161738a237a0ec22ee245c9c089a610b141fd1051a92e110a4909e96bd22d9a18203652b12a594a6f1a0852e403047b13cb130a4ef26262100a4ab1ec09a9d887a9ab8a38e22cb9ea2259a2e77b15c303db15d3c433c433c5d3c2d9205002b146690fda07ca2c4238620fea07aa1af22fd243b95009265947718568cb30d8089598faa15bd2483a44098582d10a341a924a73c2dce302db13bb19ea40f209325579c6f1b269ffb170f1397a5921fcf13d4260e2deab14431f1b06e3c323c323c6e3c310cb7917d1762973aa5f6a1c2245424859eb2a4032440252f164c191e9cb4991790f7126b8e9f07ff182324b8a3679a212fe19070ac98a9632c733133b15cb1c0a5f1a0d428a81c3719e69f170f8e1afba549222299ec26072ba8b26d3296b07c3c223c223c7c3c0d98f908bb14888cc49e86a1fc23e419c4a56da63d274328f210981ac29f5d19448fe192b8104888d69bbe2416a32c89002dfaa79ca80da1072f053253b225b275a4589c212902a2ed1a7518eb9e5707bba60b2722a6c128092f98b2423223b26e3c2c3c2c3c6e3c079ebf98e61d1f1791a30aa4c024cf23d9a0c9a6ad25c72699173d23bca2019ed5816499e71832084089402896a778974530caa693ab79aa262a2e33d6b1cab1dca1aaab4d2ccf232799c51fafa1e51b98a72125cba45629cb2934b324347bb19b3cfe3bfe3b9b3c12a1899d7721a21b92a657a6fb2687273e1fa2a3411976239b15c42340a037a2688e3a9d281c38192918de27b8a75c0ac831621eeeae82adb40345338ab08db19aa22cae382d6c293397772419a5be0d42a603288ca76f285ea236b44b35b3b0c03cb33bb33bc03cd698c890951a039804a52aa13625b8217fa789a97029e029b61e312194a41c930698da92951a419616a2a62678a30618072f23a9b5aa49a4e82e8f3312b3eab206a5d5a7592c29a13f1cf31e73a4161d48a8572945a93c2a8e2e6cb3c43395b2833c163c163c833c1aa4e89ff024421a3da7f9a5aa257628e886c1a87b26a226cb1d722846a771a42696c0a0db205f150e1ace29b7a9a68fdc3126a4b9ad44ad1d1e6134c5b128b2a2a00cb0152f01299c9b3a2737a8b51dfba73e2871a8df29539d32b4673531b1c93ca03ba03bc93c38a8faa2a7285c2005a4d5a95024142b9226b224aea54fa3e9a26122611f01a3941bb0a47e206d20cb25b02447aae823c833372ee4b171b1d1ae973297a9b9b00f2631b26d2e082e5e9b072dcaab3ea578a1442deeac592318b0a4b50d38aaaf203df93af93a203db4107605918b909013922c9b931c140d7919cf1ae810f91bff9c91022b16251c140f7d8b0f852d8d4b15871c4a9db48d4328f9a112a3159d212d382d16b027b0c0a12628d79d75a2721c28052d12a79cd0179c80061eed19152d1cb0252d16b0543c533c533c543ce90b38149a90de919698969c731d1918900eff15ac19291e8e9c8296d0191c1c9d844993550d8b0e321a021db99ed395ec28ce9e81a58d9f632d722d29b04cb03aa27c28189e14a3581c5e938616719c1698e896e51f5a1f2e2d4db0932d2fb0543c523c523c543c4814bc0d3f905f93779e839c7820711b4e9ab09da9204d21a1994c9cf718481c6e0576028c83ad8c761fa61f97a1099d772abe1ac5a87ba3982d232e3db0a2b045a45728088b4da206195b9c441afc8cdba06c9c4d23ea212a2d06b1fc2e2bb0593c4b3c4b3c593ce38be110cd8dcf8d249d8fa002229119a3a1c3a04123b324499cbd982883be1e2b0c6790b8070090369678224ca13c923c2bd5a4b8a66aa0a32e263041b134b18da48027bf2018a4f11e5c9c7c12c79ac0a3ee22079f8825c32e80b14e303bb15a3c453c453c5a3cec94868d3a15a708d2a064a11f23b41f09a1fba11d23f2240a8d3493899517171f90d7119890ff8af81cfc24bca43e9eda2cc9a067a9dda5a32d7f3014b130b18aa555236a25179f5e1b86a0e619711883a6951ee5189f27862d0bb22231edb0683c383c383c683c859c4396c61c711536a32da463243524f0a03fa24023c6241d1d0f10629c0f9c07928f166991a28ca2245426eba75aa2db2d272270abdea95a2d8b300ab119b120a8371f8628618fd80b04a4ef1def209da822915d241c28a02cc7b2aa314cb06b3c343c343c6b3c6697198f02164088679e6aa0dc22fe18a9a55aa6402724284107e819249f221aae87c591280f9f8e0a9ad624d8a274988f2c5fa78fa87f9d512fbb3137b218b201a52718b128a2a2e11cec10199e818efda6ef26d1a5cc287e2f9fb2103225b2683c323c323c683c6e9e0f9c251f0b1a49a229a2e523eb2161a116a672257c26231b5921e4a1179d2d84ad924514ee90ea1f852805a8b8a1302fb2a451abf0a8322c4d3291b1b6b1dea53fa9f52be921a8970612979f761f1ca953245ea2402a382c79b3d4336ab18a3c103c103c8a3cd6a4f7a065241522b0a0c9a5a724eb242c981a9ef71319249b2188217da058a40f9c90922718a41add28d4295eab81a64e304427cdad08ad222895313cb035b1d0a961ac542db2295d19ed9a00a1b0202fab0a24221ecb29ca2496b4bc34aeaf9d3cfc3bfc3b9d3c6e978898131c5096b0a4cd9fa724cd2089a75aa97029b329221f232050a44c802b99e5810d194e948fa08126cea24e98442e58a8d5aaeba0762f1033e6b2dcb211a607a5fe2b43a2c91e271c2ca4861c82a8632919a93d2a262f73b3773389b2793c1f3c1f3c793ca2a45aa26f25622059a69ca43d25e426cf9b2fa80c26e9268e21e326b5a620a4e299979b4a1eaf8c9f23c729c0a9b6a2f3303393aaad70ac5028813373b119b214a735ae932e5b28308f11237aa67c21a8a9b12749a6942a0b256bb41535dbb0af3cd43bd43baf3c3ea92aa8052af226f99593a57e967828b22661247ba488a4cf9c5e24d89a73a4f49ac7a1ab20221f302c9a2bd4ad2fa75c32682ec0b058b1c0ad0731d8a8cfaf6ea66eb1852f6e2e662258295faa939d7faa692ba3a60126d0ae57b69637e1abfc3c463b463bfc3c810e88101d92918d4c8a679cb11c8e0fc119781a44158f1a849d340c3e17261caf02a891e40c8f08d916bd1b029d7d8b492839a178a3f99d1e2d432d1db022b05da10d285a9db8a2081d9812628fbe9c9b152701c61d991b112d18b0362d22b0553c523c523c553cd680e40e089049031b99dc9c421eba171a948b14211a801fad9c579a9a1bd81c35904d8b210a1b0e9a1cf51d7a9fff99e028b69ceaa59f9f5d2d7c2d21b053b0aba16d28eb9d73a3ea1ec40a7291d59d5c96098c4d1e8d1e2a2d55b09d2d29b0543c523c523c543c078edc024d80ed0d5a9e959d3f20f21cb49b1b9e8920bb21719b8d9d761c7a1c9d035583248be3810f24fa211aa41ca20e2a5b1e5ea86ba4472d0d2e2cb078b097a2fa274f9063a2e21ab991181369987ea184a176246723b12cf6b0d32edeaf593c4c3c4c3c593c05901513d98b4490b39c8ba00b226e18afa131a19323c6242a9c5199f703b01e0c8ac58a0709e28df1952722fda0ae93a32a81a4a9a6569de32e0a3038b13eb1cca42028212056a42a20db9bb58d0d9c1ca3662300a04725062f85b1393044b1583c483c483c583c429514910915cb105ba0c8a09e22211e03a162a12c238e241391f4982294d41ab8879d1146910f8f541efb249fa41fa04a2c6fa007a958a41b2e2f3006b125b1e2a5902590243da1c01a92a0221cae16b4a69c1d2d1ae9272c2e04b2dd3004b1603c3f3c3f3c603c9b9a7b960c1a5b180fa302a47324742345a05ba0db2103242b1c4d984f997796238255186795e1931e26382873a8d4a50f2d0821b0aa8ba88f2d0c30c6b0f6b00fa8ee23052717993e9cb5a41622012244a997a3b6264a29f72c7ab22e3150b0653c3b3c3b3c653c7b973f8ef413c70d999ddb9e2b224513a9a560a672270a2833867418a99e911be986f793de07b105b795982431a2739cf52b0ba732a83b03c82f6c3125b213b2b0a555211e28a4a32d1eef08a69dc79550a72227e9a5e92808309bb2ce3130b2613c393c393c613c079e029c411e1a1bb0a0ada09b227f1f99a21da52f255326cc1c041ea5a0c89a628ed21076810692a3223b289ea743a4bf2deaa297aa84a6612d7e3171b196b185a77fa5f82a871c6d93119c2a9c2d20cea998230aa0a92aaf2d79b32a337ab1763c233c233c763cbfa4bfa29124cf231d9c7ea2b0210921959c469d2a1bad23cd224c2021a1aea37a9b5a1443103418b72b212cb2acc5aa392e2826acaccbaa412b803016b006b1cbabe4a9ea2c5629439cc1a4f51d852446adc1a3a328972c1a2a7ab42934a6af823c193c193c823c5c997599b31bf503fba36f9d1e24261ebaa71ba96b299229c31d5e1c2fa38819d3982d1358151294259d2d2654a2249e442db2a754aab59424308232ceb2ceb202a7c29bde2a3fa4cb201a0cb6a25f19a9a85129c4a8222a043065b3f93287b26d3c2b3c2b3c6d3c2ea426a32025072165a5cda16124c6248ba117a8df26c22745229524b5a5aaa16295a711af17cd985325692922a9aaa5e62f0d1f42ad86aa4c2c683278b103b2d5a8feaba52d7d256c9495177aa3cb229baae4251aa45b2ba02a64b49034deb08f3c093c093c8f3ccda9a4a9b82a1729b91d07966ea13c236025411e4ba09ea0d521432661a5ada5c59efa9dee20b418842ea72ee5af27ad9630712cb3aefdaf9ca94d3023ac8baf7aac79b05230f42db51aa91918a6902599ae981828288b2c22ab55b68d368fa9c73cb03bb03bc73c819075880c0fd00a320b769ced1c20888f16f31af7185a1a689d3d803916901cf2124494178c120c7e19881d5b9e859630282fa1cba3a89c3a2d4a2d23b02bb0aba13f288e9d1ca3cd1db2107908029e4d1ad30ee51cfb18282d2ab0372d1cb0543c533c533c543ccb0d180de58379912c9c3f9d771e6a1b6c8a5991ae1dcd1dd59c5c9a791a761deb8d128ec70b910ce01c6a208da0779ce328159d9da545a0582d702d35b032b0b1a06828b49c70a4ce1ef0191799909ed2051f0bfc1c5b1d182d50b08a2d1cb0543c523c523c543c35023004ed873e01179fe89e8820ea1df19c8f9e52217d21859b1f9e8d1bf61d3709400efc8e4f8d762453249ba44fa4042a7d1e63a82ca43c2dba2d29b040b034a14d281e9749a4761a07164b814c9a9fa2a1a147243324d22cccb05f2ee4af563c4f3c4f3c563c7981ec0fe690d88c0e9caa9f9b216c13c3a117a19223ba24679c539b5b14111f0a05340a308e018f7d98eb2186a05c91332ab0a44da65d98102fd92f2fb13eb19ea493283c1dbea43720db9a960c579daba2ea23b9a02525492f75b11c3058b1563c4a3c4a3c563ce792be8c0912d80c2a9f829e2521dc1b54a193a195238d24f393389b260bbf1b9389df108d91ea89e11c8324a1a30ca0432bc1a13aa8d5a0962ecd2f05b116b1e9a57b27c42214a3801d029fe918a392b0a5501f47854127b72ed8b184301eb1593c463c463c593cb3964c931016cd144aa1ada18922432156a0be9f05220923b4168c9bb3922f163d0e2b170495c4940d265c283ea871a64e2c551c96a970a6d42d422fabb0c3b02fa7bd25db24169e799e4aa4932329212da98fa50c27d729722d0ab2a23077b05c3c453c453c5c3c9896e88fbe13920cfa9bb29ceb208891cfa544a69d27ee2738948e0e3b9d581d968e5d906f817e075f8c172430a1d59da12ae5a67fa7301f2b3018311cb20db207a61c25d726b1a43f203488959dcb9a1aa79a2735a6bc28563085b279313fb2593c403c403c593c8d9bde99d71bf9186e9e499dba20c91ae7a3a7a478252f26461cbb15799e6f8dd1923715f290ca8f1c2255270fa68ea43b2ca6a36ba91da08e2ed03062b186b1cba72f0e4f29699db419739d9a99d91c95a91624afa0812a342f30b35e32bbb1653c343c343c653ca2a220a1d2228f21a399fc9e221e321e139f6b9e6020d822ff209f1ba29f13a007971018e8917e002c2c772ce0aceaab962c6d23d3aa74a8f62c9c2f5fb0aab05dab9aa5252cfb25c2a34da7c324ea2656aefea8332bf12d192d29b4ff3230b0663c353c353c663ced956e996e19ec083aa21b9b50233c1820a8dba871299029f51b621284a1531dba98f515740e79920f9c5f25b3a0c09f352cfca6c8a98d209430f731b9b2c6b254a742229b29c3a51a221996e1a10f10afa85a299fa8f929913046b36c32a6b25f3c383c383c5f3c8fa1a3a1fc22d71f22a4859d15231621b5a40ca8e5275728ed201420cca3419c7c937517268923982425ba28eba7b8a6d62d301d7dac00a7472e753191b1eab1e6a89da63f2c6e1c8318b59713a1bb2089aa8a25a0a35d2bd12d23b4d33352b1723c253c253c723c90a9d6a9582a9629ec139f1a8b9c2d1da420249c11180c1cd624c125b3a612a5f98c6e19f914bf9db62f27304cb0adafda2e422abead05ad6226dc2f9eae45b0d5ad82ae2030e62c87a7d6a86625a82acdb062ac9d2d5b30cd9dcab57b35a7ab8e3c0f3c0f3c8e3cb780648d9e08d9000a934a9c791c84151b133a153d1c3a1c189c0b98c117d01cb4088f8c8d072288f318dc1deb9e6b945f28fda0daa3609e4b2d5d2d33b02eb06ca16328cd9e3ba3411edc15b8925e9ef3184818651c66183f2d2bb03d2d28b0533c543c543c533ca38383030e800586019c839d431ea31b65966094fa1e381e739d339c0a1bc61e1a03a78f18090207f31cf92074a0899dcd2824a00aa5aa9e8a2d862d41b048b00da0a528279ed8a4cc1f291d8c9cd39f3816460a4e1c8b1c5b2d4db0772d39b0523c543c543c523c1a0e7083b084fd8df59f8b9f3520e41fa39ea49d3b2169213e9cd99d4b1cee1d450a35092d89558e74241524eea386a41929491c39a72ea2482d662d15b028b0979879283e9ea6a54a1f2520779fa49ed19d789c40203421382d9ab00f2e30b0553c503c503c553c828b70109c8c448fed9a4b9e9d20fb112ca209a12f248024999c179c0e14d51fcc8689030e8e9f85af99db20e69e1585a729b9a4dea5aa125c2f962f39b136b1bca41329e01b64a5d02074990393239e06a2832483a1b3249e2f72b1f22f62b1513c4e3c4e3c513cde8c1300140c838b309da09c5b1f621985a13fa1f8233c24c0978c9c8615fc1c768c710ef291f30aae1496224aa1049cfc2993a39aa6d098ee2e4c2f00b105b10da5e728c91dfba4ad202d9bcf8c789da6a331233e9f6725722fa3b1293055b1533c4c3c4c3c533cf188130b3f89dd81779ed89da91f8a1dfe9e049f0721d521e297a09c4c1ada1a940d071260934b8fff229c2541a5afa38e2a699cf2a7f5a1042e712e80b093b0bea472280a1dc4a3661310a0131fa317fda51fa090228727502e70b1d62fcdb0543c4d3c4d3c543cb6926689a00bdf86809a899a2920c396bea518a69a27b4277b980395449be81ea78935910a02d4820091a0228c9f749d492968a6bfa6d5227430bb3006b20eb267a6ec272e25b4a5c121038d599e549dc0a6222853a64928b0306db2133149b2513c483c483c513c32961b9857180014449ce495451e518923a44ba48525ee25451838977d991f18aa95100f38909613871e01251fa3aea2ab29f8a4d5a72f20832f3d3061b16ab1a9a69b2586265ca4f820ec90a09e129b28a86c26a9a41c297730afb26b3126b2543c453c453c543cfc9cbb9cac1d741c2e944c920117a31319a0ae9f4d215822c61a3e082a966b98de9553817787861556294f2a7faa86a9d429759b3ea8979f122ed22e80b0a4b01ea9bf1aa328761e8a9e2ca4ce227c2147acada67928842cd32ef3b28131fbb0553c473c473c553c889018999b178d81929f15893c213b996da8a5a88f298a296b19689b449fd71f749806105e856f10459a8024cf9d92a01f2af1a6eaa84b25fb307531afb2b3b220a778273c28d8a71d23689572a19298a4a89129b2a8cb292a3110b3d331d9b2533c453c453c533cdf9c379e761e3e1bc3a0f88bb420b41516a66da749286a28e41b6e97d19e6c1cec985b108f0c2d0ced22df26aca4d3a5eb2ae79f38aa701adb2f9e30a2b1c4b1f8a67922da280ca573223a1b5aa3b39836a9032841a60e2a833059b337323ab2583c403c403c583c87a7d2a72328f0271c9bd688af1a0f183e9da9a006227522d7200d2039a2aa9eac17c71a95984f9cca2e562f52af41afcc2c5627a2ac8ca8742dea2e50b096b094ac58a95e2dbb2812a9f2a91d296d2aceb0c0ad542ed630162bc5b42634b1ae5c3c3e3c3e3c5c3c