advent-of-code

Solutions for Advent of Code.
git clone git://git.amin.space/advent-of-code.git
Log | Files | Refs | LICENSE

commit 5e0daf4c99c464d70c8f3e2c7c6605c3fc1dd6a8
parent 4f7fed6b818dcdd4ef1f616c1fcbc0cab38dd2fe
Author: amin <dev@aminmesbah.com>
Date:   Wed,  5 Dec 2018 08:31:57 +0000

Clean things up a bit

Also add asserts to make sure answers stay correct if I change anything.

FossilOrigin-Name: ca66ac1c43c5a713da112382c42b75d675aa540eb8e154fb59da0068d3aaf273
Diffstat:
Mday_01_1.zig | 4+++-
Mday_01_2.zig | 4+++-
Mday_02_1.zig | 4+++-
Mday_02_2.zig | 1-
Mday_03_1.zig | 4+++-
Mday_03_2.zig | 55+++----------------------------------------------------
Mday_04_1.zig | 14++++++++------
Mday_04_2.zig | 44+++-----------------------------------------
Mday_05_1.zig | 3++-
Mday_05_2.zig | 52++++++----------------------------------------------
10 files changed, 34 insertions(+), 151 deletions(-)

diff --git a/day_01_1.zig b/day_01_1.zig @@ -10,7 +10,9 @@ pub fn main() !void { var input01 = try get_file_contents(allocator, "input_01.txt"); defer allocator.free(input01); - debug.warn("01-1: {}\n", total_sum(input01)); + var result = try total_sum(input01); + debug.assert(result == 599); + debug.warn("01-1: {}\n", result); } fn total_sum(input: []const u8) !i32 { diff --git a/day_01_2.zig b/day_01_2.zig @@ -10,7 +10,9 @@ pub fn main() !void { var input01 = try get_file_contents(allocator, "input_01.txt"); defer allocator.free(input01); - debug.warn("01-2: {}\n", first_visited_twice(input01)); + var result = try first_visited_twice(input01); + debug.assert(result == 81204); + debug.warn("01-2: {}\n", result); } fn first_visited_twice(input: []const u8) !i32 { diff --git a/day_02_1.zig b/day_02_1.zig @@ -2,7 +2,9 @@ const std = @import("std"); const debug = std.debug; pub fn main() void { - debug.warn("02-1: {}\n", checksum(input_02)); + var result = checksum(input_02); + debug.assert(result == 4712); + debug.warn("02-1: {}\n", result); } fn checksum(input: [] const [] const u8) u32{ diff --git a/day_02_2.zig b/day_02_2.zig @@ -4,7 +4,6 @@ const debug = std.debug; pub fn main() void { debug.warn("02-2: "); common_chars(input_02); - debug.warn("\n"); } fn common_chars(ids: [] const [] const u8) void { diff --git a/day_03_1.zig b/day_03_1.zig @@ -4,7 +4,9 @@ const fmt = std.fmt; const mem = std.mem; pub fn main() !void { - debug.warn("03-1: {}\n", try num_overlapped_squares(input_03)); + var result = try num_overlapped_squares(input_03); + debug.assert(result == 118223); + debug.warn("03-1: {}\n", result); } fn num_overlapped_squares(input: []const []const u8) !u64 { diff --git a/day_03_2.zig b/day_03_2.zig @@ -4,7 +4,9 @@ const fmt = std.fmt; const mem = std.mem; pub fn main() !void { - debug.warn("03-2: {}\n", try solitary_rect(input_03)); + var result = try solitary_rect(input_03); + debug.assert(result == 412); + debug.warn("03-2: {}\n", result); } fn solitary_rect(input: []const []const u8) !usize { @@ -64,57 +66,6 @@ fn solitary_rect(input: []const []const u8) !usize { return the_one; } -fn num_overlapped_squares(input: []const []const u8) !u64 { - var allocator = std.heap.DirectAllocator.init().allocator; - - var rects = std.ArrayList(Rect).init(&allocator); - defer rects.deinit(); - - var max = V2 { .x = 0, .y = 0 }; - for (input) |claim_string| { - var r = Rect.from_claim(try Claim.parse(claim_string)); - try rects.append(r); - - if (r.se.x > max.x) max.x = r.se.x; - if (r.se.y > max.y) max.y = r.se.y; - } - - //V2.print(max); - - var squares = try allocator.alloc(u32, ((max.x + 1) * (max.y + 1))); - defer allocator.free(squares); - for (squares) |*s| { - s.* = 0; - } - - var rect_it = rects.iterator(); - while (rect_it.next()) |next| { - const rect_squares = try Rect.covered_squares(next, &allocator); - for (rect_squares) |s| { - squares[(s.x + ((max.x) * s.y))] += 1; - } - } - - //buf_print_2d(squares, max.x + 1); - - var total_count: u64 = 0; - for (squares) |count| { - if (count > 1) { - total_count += 1; - } - } - return total_count; -} - -test "num_overlapped_squares" { - const test_input = []const []const u8 { - "#1 @ 1,3: 4x4", - "#2 @ 3,1: 4x4", - "#3 @ 5,5: 2x2", - }; - debug.assert(4 == try num_overlapped_squares(test_input)); -} - fn buf_print_2d(buf: []u32, stride: u32) void { for (buf) |val, i| { if (i % stride == 0) { diff --git a/day_04_1.zig b/day_04_1.zig @@ -6,7 +6,9 @@ const mem = std.mem; pub fn main() !void { var guard = try most_slepful_boy(); var minute = try most_slepful_minute(guard); - debug.warn("04-1 {}\n", guard * minute); + var result = guard * minute; + debug.assert(result == 87681); + debug.warn("04-1 {}\n", result); } fn most_slepful_minute(guard: u32) !u32 { @@ -23,21 +25,21 @@ fn most_slepful_minute(guard: u32) !u32 { current_guard = try Line.get_guard(l); last_slep_min = 0; if (current_guard == guard) { - Line.print(l); + //Line.print(l); } }, Event.Slep => { last_slep_min = l.min; if (current_guard == guard) { - Line.print(l); + //Line.print(l); } }, Event.Wek => { if (current_guard == guard) { - Line.print(l); + //Line.print(l); var m: u32 = last_slep_min; while (m < l.min) { - debug.warn("{}\n", m); + //debug.warn("{}\n", m); minutes[m] += 1; m += 1; } @@ -93,7 +95,7 @@ fn most_slepful_boy() !u32 { } } - debug.warn("Most slepful boy is {} with {} minutes\n", most_slepful, slep_counts[most_slepful]); + //debug.warn("Most slepful boy is {} with {} minutes\n", most_slepful, slep_counts[most_slepful]); return most_slepful; } diff --git a/day_04_2.zig b/day_04_2.zig @@ -6,7 +6,9 @@ const mem = std.mem; const biggest_boy: u32 = 3559; pub fn main() !void { - debug.warn("04-2: {}\n", try most_concentrated_on_slep()); + var result = try most_concentrated_on_slep(); + debug.assert(result == 136461); + debug.warn("04-2: {}\n", result); } fn most_concentrated_on_slep() !u32 { @@ -116,46 +118,6 @@ fn most_slepful_minute(guard: u32) !u32 { return most_slepful; } -fn most_slepful_boy() !u32 { - var current_guard: u32 = 0; - var last_slep_min: u32 = 0; - - var slep_counts = []u32{0} ** (biggest_boy + 1); - - for (lines) |l| { - //Line.print(l); - var event_type = Line.get_event_type(l); - - switch (event_type) { - Event.Begin => { - current_guard = try Line.get_guard(l); - last_slep_min = 0; - }, - Event.Slep => { - last_slep_min = l.min; - }, - Event.Wek => { - var slep_amt = l.min - last_slep_min; - //debug.warn(" Slep: {}\n", slep_amt); - slep_counts[current_guard] += slep_amt; - //debug.warn(" TOTAL: {}\n", slep_counts[current_guard]); - }, - else => unreachable, - } - } - - var most_slepful: u32 = 0; - for (slep_counts) |sleps, guard| { - // todo: can there be a tie? - if (sleps > slep_counts[most_slepful]) { - most_slepful = @intCast(u32, guard); - } - } - - debug.warn("Most slepful boy is {} with {} minutes\n", most_slepful, slep_counts[most_slepful]); - return most_slepful; -} - const Event = enum { Begin, Slep, diff --git a/day_05_1.zig b/day_05_1.zig @@ -9,6 +9,7 @@ const destroyed_signifier: u8 = '*'; pub fn main() !void { var allocator = &std.heap.DirectAllocator.init().allocator; var result = try react(allocator, input_polymer); + debug.assert(result.len == 9704); debug.warn("05-1 {}\n", result.len); } @@ -89,7 +90,7 @@ pub fn join_strings(allocator: *mem.Allocator, string1: []const u8, string2: []c // Oww my stack!!! fn react_recursive(allocator: *mem.Allocator, polymer: []const u8) []const u8 { - debug.warn("{}\n", polymer); + //debug.warn("{}\n", polymer); for (polymer) |unit, i| { if (i + 1 < polymer.len) { var next_unit = polymer[i + 1]; diff --git a/day_05_2.zig b/day_05_2.zig @@ -8,7 +8,10 @@ const destroyed_signifier: u8 = '*'; pub fn main() !void { var allocator = &std.heap.DirectAllocator.init().allocator; - debug.warn("05-2 {}\n", try improved_length(allocator, input_polymer)); + debug.warn("Warning. This will take a few minutes :(...\n"); + var result = try improved_length(allocator, input_polymer); + debug.assert(result == 6942); + debug.warn("05-2 {}\n", result); } fn improved_length(allocator: *mem.Allocator, polymer: []const u8) !usize { @@ -31,7 +34,7 @@ fn improved_length(allocator: *mem.Allocator, polymer: []const u8) !usize { p = try shrink(allocator, p); var result = try react(allocator, p); - debug.warn("{c}: {}\n", unit_type, result.len); + //debug.warn("{c}: {}\n", unit_type, result.len); if (result.len < shortest_length) { most_effective_unit_to_remove = unit_type; @@ -39,7 +42,7 @@ fn improved_length(allocator: *mem.Allocator, polymer: []const u8) !usize { } } - debug.warn("{c}\n", most_effective_unit_to_remove); + //debug.warn("{c}\n", most_effective_unit_to_remove); return shortest_length; } @@ -113,47 +116,4 @@ test "react" { debug.assert(mem.eql(u8, "dabCBAcaD", try react(allocator, "dabAcCaCBAcCcaD"))); } -pub fn join_strings(allocator: *mem.Allocator, string1: []const u8, string2: []const u8) ![]u8 { - var new_len: usize = string1.len + string2.len; - const buf = try allocator.alloc(u8, new_len); - errdefer allocator.free(buf); - - var buf_index: usize = 0; - mem.copy(u8, buf[buf_index..], string1); - buf_index += string1.len; - mem.copy(u8, buf[buf_index..], string2); - - return buf; -} - -// Oww my stack!!! -fn react_recursive(allocator: *mem.Allocator, polymer: []const u8) []const u8 { - debug.warn("{}\n", polymer); - for (polymer) |unit, i| { - if (i + 1 < polymer.len) { - var next_unit = polymer[i + 1]; - //debug.warn("{c}>>{c}\n", unit, next_unit); - if (@intCast(i32, unit) - @intCast(i32, next_unit) == ascii_case_offset or @intCast(i32, unit) - @intCast(i32, next_unit) == -ascii_case_offset) { - //debug.warn("{c} *** {c}\n", unit, next_unit); - var result_polymer = join_strings(allocator, polymer[0..i], polymer[i + 2..]) catch unreachable; - //defer allocator.free(result_polymer); - var new_stack = allocator.alloc(u8, 100000) catch unreachable; - defer allocator.free(new_stack); - return @newStackCall(new_stack, react_recursive, allocator, result_polymer); - } - } - } - return polymer; -} - -test "react recursive" { - var allocator = &std.heap.DirectAllocator.init().allocator; - debug.assert(mem.eql(u8, "", react_recursive(allocator, "aA"))); - debug.assert(mem.eql(u8, "", react_recursive(allocator, "abBA"))); - debug.assert(mem.eql(u8, "abAB", react_recursive(allocator, "abAB"))); - debug.assert(mem.eql(u8, "aabAAB", react_recursive(allocator, "aabAAB"))); - debug.assert(mem.eql(u8, "dabCBAcaDA", react_recursive(allocator, "dabAcCaCBAcCcaDA"))); - debug.assert(mem.eql(u8, "dabCBAcaD", react_recursive(allocator, "dabAcCaCBAcCcaD"))); -} - const input_polymer = "OeIiESsoMRtTjbBJYyTtrjJmeEPNliILnzEeZcCzYyZdevVEgGikKIfreEEeRkKFDpKkALlLlaRruUsJjKiIkmMIiGguEeKkdDaDduUXxAPpRrUJjLlNEecCntZzrRfHhFXxdiISslLoeEHhTtxXRrSsOxvVXDxeqQifFxXIEFfcCXOobvVqQdDiIiIGWwSsgZzBxvVNDdwWnYyzZPfFoMgXxUuGOrRoAameEotTeyYEHhHlLhaAOnNeEmMlLJjmMGgoOfFMlLmOGgGHhUugsiIwlLpjJPWMycCgGYozZOmzgIiQJpPjqGZrRuUhHIidEgGeCcwWDXmMMmWwRHTtzZhrGgxkxXKkwWKuUAOoaEvVyWwaGgkVvfFKmMAxXGStbBTsKkSwkEeKWsKksSpkKPfFbOoBQhHqQJjqwTtsSWBmMBKkbbDdEeKjJZzYeEyMOoSsmkgGcNnCyGgeEYTtqQyQqkKQIiqBbYfheEHkeHhbBNnWwEuUVvCcAavViItTKSssyYSFfxFfCiIlqqQQJjLdQxXoOiIZzqzeGgEZhuUjJadDtTAWwHDYyFmMfayYJjJjPpiIArmMRvVsrRSjQPpqzrRDdZJcYyhHELleQMmfFVdhHaAmMDqGgQhHpPPppPvlLKkMmbBZmMCXxciIzosSOCcSsWKkwAwWaDiIMOomdoYyLlnNmMOHhaDdcQqCSsTbBtAqeSsdDulLCcgZzGqQUVyYvsTtNnNIinwSsWqQgGiUudFTtfDjWwJfFeqQkZzHhKEIqjJAaQSUyVwpBbDdvVkKPRGgQsSuUqrHhWrRIidDdWwnBbQRrqYiIzZMmpPtFfjJmMLlTtSZzsTnNyZeEHhgGUuzudDsIiSpPUWwEKkQquvVeqKkQKkTtEUdDeEUlLubBQqLllljJgGsSsSUugGfpPFLLjWzZZFfzDVvdaAnNDdnNWwwYyJWyYfFrqQRwWHhiISsSsjdDJhHjxXxXFjODdjJoJfJjTtYMmyJhHotTOPQbBpPqqQpjaKkEeAvDdVljJLbfFBQoOqJWwwTtXaAxrIiUuXFJjfzZmIiXZPpzxPlLpUudfFDZfFZzqQPpxXCIicKkUNnuzZMYyNnBbmQRrqDdPptTzFfTaAkSsVMSsCcmvKxXvVtzVvmsSbBMVvfTeEFfcyYEeHhTtCgRFfrsSGtXxscCSjJaAFLFflOoBRHmMhrbMmxrxXTtRrRULmMlPpNnujeEOnruURNrRQqojJpAkKauUvVcCfyYDdyYFNnPIiBbjJPpVfFisKjsSJoOOokWwSFfhlLHDjJWwyYPpMoObBmoVvOsMmSjJyYddDIbBvyYkKGSsjJagGrRAgHhYyszJjZSaAIiJqpppPZzuUPCcyEAaeJjFfiIYSIisnNSNMmnOoiIEjJMmeIisOixXIWwRmMrfFxXpMmzZPcGgHhClYyLTtmMyYdLoxXOGgDdeECAlLKOokKkaNnAaTtcuUCLdDlZrRzclBbDcaTtMmcIiCAtTiIOoOoDpgGPEedprCcRPATtRoOHhraCcIQqmLCclMUuwZzEeWlLcPphHesSeERrEJaAjtLvVlToCcOCihRrHCcwyYWjJCcCVvbBDdBjJTtoSJjBbjJHhqQBDYydYyTtNnNkKpIWwhHiHhPieERrGgIPpuUbBnZzFLlcafFxkKXaAhkKaAHxqQXUuACTteEUufpPRUuZzrplVKkGgLrcCRCclLzZtTlZzisSfRrqQvVFIbBZzYyIiOoQTJjVvtPpuUAaqOoPpuPpMGgmiRrIUPpLcCjJVvlxXFfdDAaBbvfFiIoOJoOKkjZZzWwfPpFUuzwWiUuIRzZrjsDdSXxYAaWwyJJkKjYBbbBiIyrREPmSsMpPpenTtNzZnnFflDdjJLlTtkuQqUsqQSKzZknNbBeEKXMAwWamMdDmWwiuUqQEfBxOosShHsSkKxXXFdDdDFfZzfFFfhHTtSoOfFslLGeEYrDdRyvVXxgfLlyYwcEeIiCWMZzZzZzLlpPCcbZzEeBSXxsdDMsSdDmBhHhHbAbbBGgPIipBaXxkqtTQbBlOoLdDKcGgCJjRrxXRhcCHQWwakKbVvBbBAenNEJMtTzZQqmjLkKJjsSYyjJGguIiUayYwnNlLNsezZESNnaAmjhHoOLlJVvpdLzZqPpmMMnNmZzvEeaAVQWwfFcCNnjLQqlCcJNnbLHhluULlyBKGgkbWiIzXxFfQquUZCcDdOPpoEewqQKkxJjKSJjmMVrRjJvsqDwWdQeEkUuQXxviIqiIGoODdgdDFfPpXTtwWwWxjJsZzSkKHhlRrLjJtrRHSNoOnsiuUIqQhNRrnqQjJYCRrNSsnAaGdDgkTLlKnNnNxjJXyYiIaAkYYrRyEAamIiMwWeKkqQIvgGViXqFfZzQDdcTWPpwYytiICPpXEexhHYyWwcKkCGRrgPpHhfCdDsSJjIifFcFyUCTtcrRgjPpJjTtJUuGiYycCGQqitTIeEnNguUcChHMmoylGgJjLEdDHheBjJbuUlLNnubrFfRjJBjJUbkFqgGQfKBOoJjMmMkKcCmSdDWweEhHstTYxXjJuhHSyYsMiIcCNntKkTzHhWwZvjJFfVzCcgGZEeLUuaNnAqmtTgGpPpBbPXbBfFukGFfgTtxXNIgGinDdmMmMRrKDCcfFlLJvVjCcdtkKTnNUHhuDcCpPqQHkKFfhHhpPdgGkKuoJVOoMmFfXxvbzZBKkduUDjxXjJNnOtxVvBbkKGsnggGMmtTCceEBbGTQqtNFfXxKkStbBNprUvfFPpDdVVvutTDzVvFfLlvCcVZmMnNYySsoOGAagsSGkxXKgmMcCvVqQBbMmdcMmNnMmDNnRrRrHhAaIzZiWwdQRrpkiIKNnNnPnNuUYyqCpsCMmcIdUAzZazJjZuDUuJjZzNntTJjiPpSPbchHLxXVvVvBbEelCBOoRPTkKGDdgsrRSgJjbBrtTzmMIiZyYhHKnNkdeEDRGtTIvwWkKVuUZfPpFJjwWMoODVOoWwvZbnNiIBgGgGIidMByYlLUugGCfFgmMGcRlLKkrsuUlrRLSqskNPpULluhaAHnENnvcCEqQxXwWjlLJevTtVxDdHaLlWwADbBEedxXhXyyYLlYiINnBbGgBbkKVbBqFVvfQtTQXxCcdDwWqXmMxTtaAMzZoOufFUmAUEebOotBbTtlLsSTGYygaAsMmSnNBdDtTbBrnLlNRQqrIiQqMCcmRPpnNYbBylLIishTXxtGCsScgsSZzHstyYTSlLSoOzZAHhaiIAafFdDsjJSplLoOboOBdVOYyfdrRDFoUujJSMQqmsjJHQGgjJqnNQqvVwRCpPyYcNnDgGYydbvVxtoMMmQqZzKjJOohHkmnuUNpfFPuUnEeNvVUKfFkGwWgsLlSAeEauUucCOhlrRLHqQgGuUDoODdxmLlMwWXxXdjJFFfVvexXxXMmfFhDdBbSsBvVYyrRXhvVHdDxNaABmMbsSnKkWwnaANbkKHsuUSsShHEPpwnNezZlLlLEaATteyYYyQgGqhHVgGvBbToOyYsStHhEeTOotEyrRhHoOcQgGqYMmymqQMmIiMUMVJjjJAavBbeEoOtTxWwuhoOiInNyoOsiYRrxXyDnNqQGHUuhgdfIiaArRYyvzxoOXQCUucUHhuqOGgoHKkvtTVhoOivTtwWKgLlGkFfVXrRtTjweqQEWaAKkuUtTJEepyBbcCYoOwjJzPpZWwWdEeDgmMGFuUfatTmMWtTuNnUXxEeJjzqdhaALRrlbWwrsSgGfFRfvqsSxXtSKkHhRUurrofFORkKVqQvBAavcCbvwWGmiwWIZzAaMGkKleEdMSsmDLAdDasYQqyIeEixXBbxsSIitTXZzRrSorRMTtmqvhHBbOyDdtTqQYcCofiIFgPjEJuUjevVdNncCDJpXxDVrRvdJjyYJCsSnNcjqQMnnNRrSErResSlLtOoToOhHEelLqucCyYVvUHhvTCcaAnNLJjloODdLaARyYkZzRreNnEZuWwlTtPpLfZzFUiNnfFWwKYyqrRgGxXssNnSSfFUubiIBZzJKkXxjFhHfTaAsSFzPOozZUuvFcCfmfDdJjXBiIbHhBbcifFICxFfkKgGUOVCcvEeoSsbBbBHaAjaAHTtQqhqhHoOCcoOQiIeUBbzZHpPhHPpcCZziPpzZvVIpPZEezFeEfMlnNYyeOoLlETGgtLmZgGzfqQPpFjJjJsStuUTYNQqnybDdJZzjJjBhHzZkPpPRryeEqQYGgNMiImngGGcCNnqQgnNCcOyAZBbzvVLlTtaNaAWwGfFgGggGLlZzQqZzyYtTKZagGYyAzkvVnnNEewWOoTdJjovVcCQqYyOejJRrzZsEeSpsKkSytTaAYTzZtKJjxXzZAamMDvVdkPjJEIibBNtzZTEegGCaAcBbAGgGgaBuUGgMNiIcQqCiozZDuUvVuUMmeAaEBbWweEUEeMmMjJmTtoKkoOOoOzmMgGCJwgGLlSsQqlLfFTtdjOoJsSHdSSrRsrRtkcCrTaAgGtRHhEkKeKbhcCZzKkkXeExNumMULugGUNdDnuWwbkKaABDdeIiEvVpAanNjfFJtlBPpnNYynNbLbeETtnaRFfkKzZNnrFfTtAGgsSRXjJfFmMDDddxSiIaAsSCcstXxJeEjnNGgGgMmTRiIraoOsSdDHdDhJLljAuCcmzZrcCAalLPqQVveEfbBnNDFfdFvpPVpWbBwOoUusBbTtcUuCSfVoOGgvoOTFnNrRfaABAcCXxBbOzZyxXYocCaxgGDdiIMmXbKkEkKOoeCchOoHMQqmBEeuQvVqmLHWwOtToWtkZzBdDbVSLlshHhHWwsSvjGgwWwxHlLHhUPpuYVvrdDRySsVQqatTAvUubxXBuUfUVvuFfrhHMmpdDPRFeqMGgcChHmoOwWpPYyrRUucCDdhpPHJsSLlzZStTsnNHhpKhAahHHndrReuUEDgGwWfKnsSNzZkGBbghGgHhHaqQzZAgGEeSsCcCUuTxWwcCgGUuXTFlFfLfbBdDbSsBCcZRrzXEeSGgTtsVgmDzZdMOodYyMmnNuUZzeloOmMdHhtIiTDgqQcCcgGsSzeEZAaCCcJjhHSXxEKkenNdgGbPHhpBDjJKkvwWHhVsRarRAYZfZzDdFToOtacCHlLlLWLlwBGrvVcCXxRudDBHhnRNvIiVBvBbdDHxXUufFhTtVXxrRfNPWwpKknnKkNWwFQRrEeqqNqQLlzZBUdDgYsSSczZXxCsdDraAQTtquURtTBNFDsxXNnSRrwWlOoxXtBJqQMmjJjsSbeEUlMmzZQdDqsSuXkKEexiIGgUtTkKtSwCRFfVvrOocZzoCSsclLrRWwFfOSsDdvVZpLlhVvHUujWXxwlLwWRrpPEeUujJqphHPTtwWPpAUMmKkvVzZWwWyYFydDYBxXeEbfwiIRrKkTtOoiSsWHtTGNngsiQqvVIShLxXjJoOQKkCbBckLlkSssBbSKsSqaIimpPMiIqTtQALlKCcCcCJMRgbBGxXUiIursrRdDGgTthUSsuoOjMNnJmMjHkKZzhnNqQmJeEXTlLtxJjZHhJjTtksmCcyYMCcYySnNSsQTISevVvVnNZmeyoIiOYLOolSPgGpsqQEJkKjopPOWYyJjwkQqKtaAmMTJpPjeQqMmNnLkwYyMmLlpPqQWKlJjbBOLlfFHocCKkLlfFpbXvVfTpSsPUuUumMuUGAagtFvmMZzVdDEeYklLKtTRrsUuSgkzFFfKkfzPFfEeIiplFUuIcCijJLmMZzsSlvdDoOVFMFsSLSsFSRrsfvgGVlfmTtMSsFfBLlbtTtTqaAQfDdBbaArRYXxnDdFfOaAoqQnVvEOoeGgztEdDeFfTJQqzZRKHhbOMDdnxXNpPCqQjJnNqQczZzIcCuAaGDQfFqOEzZeLXJVUuvvlLVaAzNnZLlYYgPpGdDnBKkxkbBKrRCcBXxvVbFDdhXxyYDdHrupPURfIUkKudrQqwWrpuUQqaAPWwRRybBYDyYkKiExgGcCxXPoqQWpPwvVWwPpCuUckKTDdWwPptRPpiCcWwlLRrOoTtGaAZfFhmgiqLlQfFIUSlLdCcDsuuUGhHyYVfFjJmMgGrRIurRiNnIbBkKPpPEerIiAaiIjJFfCcKCcdDgGkaJjAIilLKkFfGcCSsZjmhHMoOJzoKkaAOgFKVvkBqstTSQnNXuwWEUuetTYFfyYyqQqQTtarmMRkgGKmxPjUuRrRrrRqbNnmtTKkMIkKVhHvsSNnTtipPuUUuJjKkEeGGrRZokKOUulLQfFqQqzsSxqQBLlbqQPpXHWmMwxXXxcClLLlWEeEewbHkKhBuhdOoVvpPDjelLRrEJHRRNHhnfFrwHhOobBWZifuUpAaBhHWwbVvPpvVwWvmaRrAuGgUeEWnNMwWebBEklFfUsqQkKlLGETtoOeyYRnNnNBbBhPWDdwcAayYCczZCbmMLlCjJcPHyaArYrjJRmMyPplpPlXzMIimOosSOlLoFfzZrfiIFucCUdDuUHfutTUkYWYwWmMyIinxXNrmbBdKkHTtjJhUuDtVNrRHMOoeEKkaJjAFfhsQveEViIqqiIwVvJjfFPrSyYxaAXlTtLLFfwWOoMmZzDdnMmOoNHZzhllUuPptzZpPWovSsVVjsSJrAjJmMmMfFaoYbaAnkKFCcfNGkaAKiDdIQYjzZzfFfFZJvVxHhjJXZzYyGgNnOIioRrAaWwVRrxXYyiDdDLyYwxYvVymGHAahyYtXxKkTUuuZzZzEcCLlbBedlLpPDMWwrRmtTleElLXxcNHhoOdDUunCuwWULrhHRBaAUsdDSjlLRrDdmlLMmfEeFqoOHhUtnNIiLlTANnwWaZbBzOoQzZqdoODwiIWQqXJAaKkEeFfNYynonNOtTvVAHLlhanNAazZdbBLbBlNnDUeEaAaWwnNAuUuaqGgNzXbBLlxJvViIoRiaANnxaAeEXInNlmMBUubeEWwGpPgnNnEqQeEeGlLEGpPZziIjaAIidbJjXxweEFeEDELUWZEHhNnuPpUeZGBbgWmMmdDDdNiInneEPpNpPDdbSeEsBEeWwKkzMUTgGiIckKCOotCbBJjKkcjLvVloOkKTzZqwbBlLWQzZZztyYYkFgGqsSQysSlLYTpKWwOmdvVvQeEXxiIqwWyYtTSbBsJjjzZsuUUuSiISTRrpPmMyOjJOoHNnDdUdmuUMOoDBsVZbBznNvyhHLleEYvVggGImMBUudPcCaAnqQCcngGCJjJjTfFdDtQqlkBbKOotfvOoXxKbBbYCcyBHDmatMmDdhGgYDdljJLfhHFyDKpPkQquULlcrRCdLCcHBbhmMwGMmgWQqYVvyeiIiIEcCbBGgCUulBmMbZOodOOoaAoDwmIiMWzNnJCcskKSzZJgGYycyhtbubdDBSNuzZSspVvPUKRlLRrIRrFNnfrfaAfcyYCFkKmSHHOnqQNgGocMmWtrVvcCyzZdWAapHhPxXDdwxtnNTSsRraLliuUTFmLlDdMolLhnNqQHOASsaUucCkNnfsSUNIiIimMfVvFTtHxKkqQXauUZzjoCfFcOOoRWwIUuirRjayYAVvjCcvaAjPpJLlMmHwWzZNnpQpPuBboOiXThHcCHOYpVvPCuUcBbPpsgFfGScfFCeRnOoNLvNnSFfEcCiIRzZwoOzZYAyklHhQvVqTtscCSZzPpLXYyowWOgcCQqeEOSwIfFHhmAaLHtThlAajfnNfFpgGnNwWQqSsSCcgeBbEyGQqVfFiIiQJjuGgUqTEetHLlAaBNJjCgJjGiIiVvCpPkKcOoYyXzZxhdDwWmMdCcDIwWivVHVIKkxbBXAaiBbuULlbBzYyIiQqsbBjzZrXUuUEVaAttQqmMIGPpgFfivVnNnNUVkKJjvPnsSNttTwZzCfFcVJVvjKkvRrgGWgGYTtvnHhNcCVsbJjBlLTvVQNUusSrRnFfQqYyYPpdDTxXthIiFfYygEerRGSsEeydDABbUVvvJEejrRwWaSsbyYSsBFffFhAgoCcOQvVZzcCDdqKRTtnfwvVIakKAiSxbBVvBbrqQUHhuoYyiIwWuUUifFdGglLsSndDjRrJGghDdHMIPpdDinNWaAwQwuGgCMWrRwaeEOktLlTKxRzxXZrXwkNnfYqQyFhHoOAaZfFZzzZQqCcPhUlLWwjJnBTtbLMmfFRrleEXBbxNniwWoOaABbdqCcQyYXxDRrFfFfDsSdTjHhJtWFfSslxXLKkzsSQqnUAaFfvWSedDdmMAAUuaSPpOiIOoxAaPpPpKGEeCcglwWYyovMBbhHsLlSmCeUjJjtaxXATjJdXZzxauUcDEeLgGlLIBQqbfNnvVdBDdbqQsSyKkZdltDdfFpPEZGSMJjsSHhmLlTtPqQCcpqQEeEeqoNdTtWSRrpPsKkqjJQCcniGimdDMlgGsSrNMoweEWwWJCcTtFfArjIiJRaWwiJjrRoOweyTtYpPryYRNpPnEEewWAdDhHoeDGgEaUWgGwqTtdCcEeDMiIiIQiTGgsSWwtbmkFfFfKQVvqKkMmMmnNuUMQQNrgrRGRIuUinvoOVxXFfyYGgqqQuUqlzPpGguXxvVpPYGvPpVPxhHQqQqXkKtThMaAmTPptOoEAaSbBsGgBTEZrRSDmHeEaAIiNFOZzojJvpIiXoAdVvDMmAaZgGqQmMzLrMnXdPpbCcZzeEBbAaiVvLlWvjqQqmqEePpwVvKDjJdwVHujJTWwmSsMdmMWwFsSgwWGfDNnzZCcmMTzZtCNnNeEovVYzzXxkNnKeSAaZzBbwjJOokKKvSinNInNgGkKJxXmcVrdiIAYynUgGuLlxBaAfFgGbXMrCIiXxqbBQNnexXElgGLvMzZgGHhmVbBmtbWwBTOomvVtIiqQhHUQvAhHnRrhHQFxiSexXESsoZNnvVzbBbBIiiIOvVsoOijHNMoBbOTLmngGgGuUDdSsNMYyKXxXZzxHhyMmYkzZjJGgrfPpGVvkDdxXExXeZObkKqejJECKkvVcOowWZzApPfFNniMbBGQqWjJVvVpPvgGgnNflLkLlcOyYyZzRrLUDNnJjKkdJdGgbMmBbnNBDrSsKEYLlxXyxXeCczZCcCWwiIcGnSDuUdsOoJjRJjzZDnNdXxQUulRrRUCUucPsgGSGuHhYyaRrAzZJjrxXRUMmRrBfFgASMmHuUhsSseElLgGXxsWwiIPpafFUaAuqlbyYBLYyJjqQaApdpPaLUuleEKkHxXHMmhOohAdnNDvLlVJPHbEejJidNndDyYDCcXxvGgVFuQqLlUVvfLBBbhfFHbCWwgBbEgGeIMVbBvCZzmRlLXOooOxUuIiXDlLiIKuUJLTrDTtdRtYoOyUuiIljkOUqQmMeEUuyYzDdZnNZFZzYLlOVvgWwGYyosSMeEXDdxtTbAZDMmdSZzbxXBoNJdLlsWwSuUkKiIFZMiMmImXMmxzfrRDVhHbBZMJAaEJQRrSYysAawWyYgtTGeEGnneEjJjTtNhOWwVvAopPbBDdwWqIKWtyYTwfLlFkiVvQFHhfDdMLqWwhuVvUXWwxHQqlLMmFfQTnNreEBbYwWbndVvDuUNLlZxXaAzZzBwWyDdFKuUkfMmrRDRreElrRxLStRqlEeETiIFfXTrREkDBKkmMpQjJAatTFfboOBWcfFUubBFwWfbhoOHdqQDfFZzzZIicAaKkBYytTkKrfGIigSbtTfNnwLPprYZzoOykqTdDtbBZCeEqOoQIiUnFfWwNuJjijFApPapqQKkPIitTqTBbUaAHhXkKxsSVvGgKvVUMnlESKIdDlZZzuUzKxXOoZBloRjRkMQNnqyYHhfFAGgbBBbUlfFKkLNvVPpTlLkKEOrJjKkuUrRRJjoZzYynIiUudAaIidiIzZzZGqQgVvDRrgGEVveBbLaAlIiDYygBCCccbyYJjmMaAGZzyYBbPBsSbCctTplMmzoOZgGLJjLgdDdfFyuUkKTtXxdoONnqQzZJDdHkrtTDdxLlXWwbEkaKkAOoQGgBqnNGghHcCQNnzuqYyoODQqPJqQjspyYFfkKaAxXtjJWPpwFfzZYyTJPpaAjHoeEOhiIpPWkNUVvuftwLFflSswwZzdDWyYWQWcCCcUuxXFDfFdfSsFounoOiGLzZxXlDdKAaBGhJjHgVMDEeyfbQqBwNnqMcRrCmAWFyYdDXQqYRryxAafrRnNvYyaAVpPWwtTZzJjwLlGgWcwIiWbBEeDEeuUzXYtTyxzCcbBFfVAaQqQBMmDdbDuUGAlLagdrpnNnNEVvUueyYpPGglgqQGVzZdwFfWOoFLDWwdIivAafFhCdEeDrRlLEGgUnNVvkoOkKKifFIAhCJPTtrRWwpEClLBfFbMmkKcyUXHhbALlaXxDdWwlpPHhLBnxXdDUuNnnNuYyuaAUXLlZzxBFfbUdDFyYuUfWwBbaANtTtsLlrthwWcCaAwWHTDdaAFQbBfFUuzigeEGLtRrbBTFfOoqQJuUMmRrAaTtvVFgGTtvcVvCWwVfypPUucCrrRouUCDGgdugGUfZqQzCdRraADqLxMMmmGgPZzGUuLldwWDgmMNnvVFtMmgRrVTtxIiXpdlLwVEzFfoNzZauUuUAwWpPonNOCuUfmFfNqcCxtTXOfXxBbKWwWsSwxgdDTplLPBbnNJjyYQqUHOoZzXOoxyTnOxTtuUXRFfrBPpEexzuQOntTbBNorRqbxXQUuqyYDLiQZVvzYyBblLVWwZzOSJjzZHSFfWgGwRrlsXbCVvWOgIiGQqOooOoJHhAajeTtiIyzCcZpPUPpuYEIilLwZzEwXKkmYyFzZftQqTyYxXCcMVvLgpPsSGleExWxXeawWwnNLleNnEWsSSpCzZsSAUuqQuUwWzGgoOQqhHZBNWwutTUnuUTtWwzZfEuUlMmjJLefplLeEPYOoyNRrYHhynwdDQqWIRrpPQqtjlSsGkKkrXxRKpdqwWQEycmoOMaRrAaAFRqnNQzZZzrREeTtrgAaHaOMkgpPGKmPppkOoKtTWwwooUuOowWSAwWxAaXaHhxUuXslIiAaaSsAvzZVkEOTtrRoUwmMAaYYyyfsSkKFelLEmsSzZzsrLkryeyYdTGgreEACGlLMNWwoUuIAaIipPgcOoCGEehnNeNEeMmnsSOosSbrRfYyqQFbBFmKkgGHzZhEecSYmMNnNYzdxQLCtTclvVZcCxXvHhwWHiImYeEyCRrnAOoQWqQwsSXOkqQsSiTtSssSPpXzpPBxXbIfZWjWSuUxYWwahHMmJRrjAavRrVAxXyHhXxBoOPpLBAJyOceENCcTxNnhHzZJxuLlwIiOoWQqhHUhmMXaRyYXkKtFRrcCyYfvViImUWwXnDdXxNdFFbBVvpueEdsSDVKknGZuULnNeoOhHeEMJjJcCWUusPsbBWXxrRQvVWwrPWkhHKTIiNntwoODNZzndjJyYsYYCckIiKyyYyhZzDdgNncCbxyYTtXRrBGHbBxXzZeFfmXxYygGOoMFfCeEOorYyfFRgGFfcErjEwWeKkzLOfFNuUnouUEpuQNHhnqUcCVvYhHykKGgnNnpwYyLIiSpPseEqQlHhxOonZTtsSzfbBeEuhHTNwWnuUxjKklEebBWwyYoSsteEOoTSsspPSRrNoTVvVFRSsrsSlhtTDetSsWwTbIyYiLlNfFKkRrgGvwWWQQTtqdOAEclBbLCepXxuUqQdDyYPAaaSzQqZUuUyVvXxfFBBbwDdoxqQXNnHfWwtrReEfFZzKUZwfqgwWuUaEAageEGkKirFfRHAapwXxabBAtXGgZNnnBbOrUNnIPpqyYKGgaAGZzzAaxqEezYBbykSZpPvVoOnNjByYbJAaGjJRrVbOoBdDobBmMOwMRrfFmYmDdqQnJjxXNyCcKkXsSxYWjJHhqiIQPbwWbBtTrkKRxXbBYyhrpPRfFOobBtTTttJjxXTWwOoKkUaYMrEeRQYyGgqEkKyzZewWEyjlmMEeugGwWiILlotDdTWwZDdHOXPpFINnilLTqQMmtTnNvVPpAmMabBlLxzZtQdDqQonYyNDbBdtTIWUhvADdyZzYaAUuQqHhQEIKMtThHiImkivfFgoIiOPiImMtfFQqTgEyBZEsSIaAilxBbOKpoOcCaMkWwYzZeEyobjUeEuGgGbzpPZzZafFSsFIifctEcCLlCEeFfUuGgTtpPcxXefFTbCOzZfFoOMdDkKCcmddKkDDVoOgGeEWdDwRrImwPpJjkgSskKGFftTKDdWOPuYPpVvyxUuptkKNniIuUkLCcOxJjXohRiQqImMgGLTtXUezZEfFlLpPHyZpvZCcxXzVPKkDdzvvmcCubEfwWFcSsAuzDPpdZLFfUkKpkDdHhWkKLlwKkKSsZzfFXrRpPiIxmnNuUXxGgMvXxOoUuSsjEwWeeLWwGLgGlgjJykKYShzZxzlLBbpsSebMmMkKrRTlVySsYIifLlEemMWKkIiBbwfFhHtHCzzESsKOozIiZBbrDdeeZzrRLKAlLaQqpPCcrRkCmSsqXxQvoOsHhZiIibBAaFfUuKCQsxOnZZYZIiigfFxXbBbBtrRTGEZSszIsUTtuSLbYQqXCcxPpcDeEmAalULluRrLqrRQfJjxYvVvVZzeEglLZSszGqaJgNnGlttTdDDptTHhAabhaRrreEFfbLlBwjdDWwCxXKPpkckKmMuSxSrVBWwbmMYcCyLlXMkKWwoOmuxwkKWXoAagGyfFPprRgyYCPSsbEaFCiddDqAPIFfKJUujJOoigiIGgkvVKBcJsZRIiSsmxVPpvLeEltsSSJriIzZqEkwWcZzFfvVzpPQqpPMmZIiImMVHRrgcCTySpPsYAZzaaLlDdAPIipdDpPkIiKCVvNnwWrXozkcXxClLMUudaADDdZznNXxzZzgGHPHEeTlhUukKpPvpgCyYyYcUXxFfrRItTPICOocbbBBJrsSUukjJkKKuUaAoHhrnNaAaArqcLwNnEpPeoOptxPpUuxZJjvtfKqQAfFdnZzNgGRSsNnRMmrrFfdxXDnwWhHQqMmKhHziIZuLlOobBBlydOvVPpJjAaIiUUujUdIQheFsSPkKkPJQiLlIiInNgVvGeLlyIilLCcvjJXxFwWrfFHDdZAEeROEEkKcCeglIXxsQqSiXxLAmMaVSsAHhUzZqebhVvHGOxvaAQqqlLearRAPvOohHbBxXKraARktuvVUbBgGxRrXdDrdGmMwntTAaJjLlNCcdFfBRbfUdQqNzrazZXxwKkTtfzZtTCaxzpPZcCXvVJSsbaXeHhrMmrRXxSVVvdDGgkjTetBQoOOLjJwMmeECcheksnNDdgOokpPsSAaDvVFshksGQqupuUPbBzZEegZzBCRrclzEIiyAoOaYyeEjDdgxXdnSpPMcCmdDZzOosKOdyCVUfFdDuWxXUujJdDwXwWJwhHWKsSkiDjVGgqQRrzZDdfwWEeDBbbOoIiBAungeEHhXxHhWmMjoQqhvVPxXpUpBsCKonNQqGNngtRnNrWiIwqwWhHXSsRrajdQquhHKDdoWLlkKTtNnLHhfFMLlXhHmQqMrjPqtTpwWKmMLlbpAaAZVvzavgGCVPppBjJfxXyqQsknNgGUPcCOTtTnRrNGgVvnnNCxAaFNfvxHhXezQiWUTPpDhjJHBMzZmMgvVmONndUNnGpyGkeEKCoOcoOkKMJHURrODLlfFdnYyxhHBLgVIKeexdDtTmMyyDdXRKkrxCfqQOEMFiIDLldfKvVxJZzxlLLlwWXCHdDUuhbnNqHhMmQZXxOoCHhcwNnyjJXEexYMUsQqSOyCxKvBPpOYjkKcCmkRrWfsSDfcPKkptdmMfFzZxgtTGXQzsKkeESZnwWMmsSxCcWwtRtTfCcSqQgaAGFfESsUuubBXxDdssQqujnxBLxnNDdLlDVQqvjKkJvOXxowfilwXxWiILPVzWwdNnLUahHojHhOSdFTtxXQDdVJSsjEuOoMjSPShiIHsWwpBbKkfFjJaNnAEJjQIiqyYewrfFRWDNvIRMiIlOohNnMVveVNmMntTQeKmMkZZDdSsodDjtsSuUcatCORINUyuEEeeGRGgvVbSMQHuUhrRUuHzeEZDHhxXvbvVXxJjXxUFfLlVZzvihgQqGfcCTtnXxNLBNQiYCcycaAmOofxlXHeOhHcCExXebBMIvlcCDdLbBGnOYywWqQzDGxCXrRxJYyHhjvhcRGguPwgGWPmMaQqApChoOKpvVAaJAatTuWwZzqCcXxmMGCmMcgnNfFeXPVZzDdokyYAEeaLXIODsSlhdHpLlFRPXsSqDmMHhDZQqzJxXjJxXGxWGKkgLsDdmBbbyYVWzZwAoPpJqQhHRrPhHpolLqbBPzZnCpLlxtTtImMijJSNOopjaDdWgGpuqQBbUhHPwKByTtvPpoowWxlLqQqubzZBvmMtATLRrDHhdeWvVqQbWuUMVvmIZzPVvukLSmdpPDgGsNhVvIyOTJjXxbBtIfFyHhJETpPtTKVvLPRgVvtklLkdDWRlLrXxVSsdiIbBQFtTSmMbBrRQqsSsnNFfjHZSsqQrHhFmMfpPReErxVvXmMgFvZzSgGBHhXxGJjgbxqEeQXIEsSelDfSsfdDFvVmMoOYQqkKqxLlocwWCjCcxMrRmdiDSqQsHXxhYyrkeepynnNnNFfsGEeMmwWHhhFfmPzbbBtTbBHhPppgTEetGlLlLzujljJQTzBTtbnYypRXxpAuGVPQqpzZvojJOYQImMSUmjczXWwnNVYjqEeiISFfulUuiIxYYyyHhlLqQKFoOfHXxvSsjpPjTesShHsjxOqQOowWZztkKuUCifQqaAVvFzOeWwRjJrRFtTlLfecgUpuUPpPuuUxXgGqQeKtTAuqrlowWfLlEAKgGkfFPUulLcCYyNnpasDvVEedUuEZzyYSLlsHKTjVIfFLbHSNZzlwXLckKOSsoAsoOEeGaArWrRhQqvzmMSsZVFKkfHLlEeEetTgNnGVtTaAcCDdGgkPFfpKVIivMmAaoObBwVZzAcTtLlKkuUOoioyYWuUFfZxgGCeEcAgJgGfZzLlFSifNTtRhvcoOYyYHvdDqQGgAwWaokKOoAabAXxoMEGgaTtAeEevTFUehlLcCXVLokiIPpiQGgqyhNnHYIKloksSmMKizKkTUbeAIxpWbxeEXuzZuZzQnRrZzsSTfFCcbBtSscChVvKzAmofHHhhVRKkKkrsSoHhOGMexjJxXSsXxfFfAaRrlWwMmMMEueNVvoBlsehHIikGrRxXmFfMGgCcOHetRrwWcCONJazaAZfFumMUAbdjeeEKaHTtxXhxmMKkzZlpTpUmMuPnjqXeECcfoOVasuCcjMmkaAmfRgGCvqeEtTzZJyYjdqAaVmMvQRXVaAsTtEeibBIssAauAFSWvVGPiMlLZlHhLDrRvVVQiIqHwNPyYUsdfIhHigPpspGNcPXanOomMsSpRrWMmPpFilLIkEQhZiAUslLUVTtvNuJBbuBbqQXWKZEezckXuDdUIiiWdDwIRrkjJCZzoOmndnvdPyYQxiIXZYwWyIYeEzrLlRZZPmMKkpxXJwSAaVDpRvVGgebBjpMmPUuJXxOAWQMnNCOSwvVEAvbBVKoOaAMnLlSsnBFeGNMmvgGIdDiHJjhVVlLdDFGgwdDuUhHJLljoOzLlLmMlqjJQiItTJHNuUUKFnbBnKtuUiRrMNnmwAaWVpPZqQzfBbyYiDdBvnlLNequUgGQZshfpRFUYAHiITXGRrBbgRrNOnyEerRDwllLnSDddDYyaAtEexLlXhqwWVSgjJGMmsvHhuNkKScHEeAafFhOzZHhQqzMuUmbBIXxKiBxXFjWwJCUucdeEDibBIcYyhHqvmwWGCahHlLMqQLAaMJjJjQqnNmFNngGMmCKilOoaBbApPoOEeLlxXDWwLlORiQHbBpPPqQtoOVhAaASsYoDFmMXxOoAtTmMsWsITlqEeVvhHhTtHgGVVWwvJjPjJqQLyQqYlOoYzvXCcZqrCcAaRqQRIdHhOLcnIJnNnGnEpvVbfFJVXPpSRaCvmMmDqbBWwGhDdHZzoOwvWwPeEOUuOojJNYytTAaVtTvAamhHKkMmWwIOTtscCQqgGrRlmkKeWtMmAayhHYZzzZTvRrHhbNkhNRsXiIzZJObyMnNmzaQqKkPdaeEnlVvxCcxMmQZlLuUWFfzZwdDwzrRzZlAoOalHESMPpmYPUuUaAuLlbbBJuzrRLllLZULlKadDyRrYuwcCWqfFcCLlxWwXQUAxSGgsxGzZgaAMCckKmXxUaASHhOjJXWhqSIimvXFQsSYlNnBbBqQWwHRrJjhUuVzuaAZzRrWwnDdmMcCTtzKkZfFyzzrRIGgPyYXuUxpxRrPYTtqAtUbzOkZwWzmMPBhTtAaeEtuKAaXWwELljIAaPLKklpiIXlLLlxyMYbjJBWwTdyqQfZzxMDxLpPHhVWwdTtVvlLiFfQhtTPwvOoVOtTvRrVokFfiIyYKPcClbBLTwWhHtUepPXfCIlLKrRlSeEKYqHJOojhrUeJtvTqlDmuCcUMDWwddkxXkeEsXxnHhNTAaQqtSHsNsXcAaCxuZEobBbBTtTBbVvXQqwWmIQWjUsIiLlSutafFAnNTNxysWjJwShUuyYqQRzZteALlamdDHTlqpiITtKKfmFfMeEGENOjJcJjkRRgblDRrdLlLTtebTtBBEegGfFIwWAqmAaLGCcSMUzZuYKdDmglLyYhHGrzKkZUuLlgVveEYfiIfLaNGdaaADdvgGVcmMtTCHdZzDGNnHhhHghGppzZPNnkApyYIRoOQqrYRXxmVdDJjfYyeEFYyBbWlLDSsvVOnNoAcCBpPZzQbZFPMNxXxVvOovbcHhbLRrDzZJsQBBFfbhQqQqBaAIJjyYJaWwWpPJjniwpyvVpPYkKTtyWLlwOxPPTDnNdAcCzvVgKEgqLJhhHHrREjJejlNsSnhFcCVvzZfpoIiNTZeEzgGKmnNKvBjCAZzaGLlqbZYdSnFfvVDlLDvVLdDPvViHfzOvVbQPpqRZzrBoPptfFenfFkslLlTfJvKvLlNcCnGsSukKSjCcbgiIKYylxGvkNntTyGiqQhHphCQUuWsSsSsSaAEqKkCcCzWwMmTCDgCNnQDdqAaJLxzscspqVzsFJlLjNntKgFuSsoRrUuOGbBEjJXxFkddOoIxyYTtOpjbBjyYVvGcePpjGiwGHIUuNqWGbHxWwxOereOoKkwUJjniAxdDXBeZQqOfFMoBbOmMgjJnNjJcCyYvavVBdDbnNAWTWnPcCdQAknNKsMmzZIiRTtFfrUjAaHgGOxMmfFEeXYxERkSMeTtnghpdDdcCEUurRUuIiLMmRrzsvVfFdDwZjBLloCVRPiJjIIPGWnKkNwWnjJWHhAaVvPGNnXzZAaLnbBaKRKkYdQqiIDzGZAazgWaHhJjxXlLqQAwVvTylWwAqsJnubBvVDVgGoOEevHhRSsrFfCwgdcXYbnNBqmJjkFfrRzWwmjpPJxXqadaFfXxZzDqvVoglqxKuUVvBEegNinATtaNjxNmPpiXyYOoiIxQqqQwyFfCcCWwiOocGHiHhpjhHJAagGPIpCYyGgofMOokiIPpKkPpKmOJeViIIDdWnNmjJnRroORQcCjaAJqYjaBbTtBbRpPCcgqbVvSNGgneFftMmNAeESWwsrRoLLEgIiIUlLugGinpwsQKIszMCSslLAacWaKklLzafEuYGFLlfHhPpRgOsSmMgkeEKSsGQKkbpDMmMRfkKbROogGrKhqaVYyKkIUNnuXxzjwqXImrRldaAdIkLQqKrvQqYnNysSVvWTtwQlMWTjJrnXxfhxXxaAfFwVsSYQJdpPwWDjDvVkftMpCcVSsnUoshyHEfaGgXHEfVRogGOhLvyYVuNRrnbVMWIikgyiDdvVIaVvwWqthHViLlnNTWvyUuNQGlTeEteEoOLAaDDdkTGgrRtsuUokIBbiMmZzOqTCcbJjLUFWSKBzaAuUHxjJdDQtTIiIQqioziHPphIbAcCcgsbBbBqQpUiLKkjJSCFfUJRrmMjftTTtAnibqFSvVteXmMxEfFyYfFUuwWTtTyUNpPIiqQloOUuIikETUMkKVvmjJuzkKZpAcaylQBrkKRUDSsdZzbZEepSsxIiMmhlKkIiMgUuGmGhrRVuUipPldOAaArTiLlIeEBNyNnYZzMeHhEoOXcCkwZAKGkHawmVUuvENnvVvgGXlLJZCtdDjaUuIPVZPLlckKCpiIfFeDsSoOBbowWrRaHspXnPJjjmMTSsAaekKBrPQzZKfFNngkbBsSNnsShzfwLlnNWPpVcaKYBbjJpPLlqHhjJrRQIQqCcQnNaLdbCplSsLyQrRqDdzdCcwgGBbyjkeFfdDEKzXxVBYOTtgTtGIjJAYPrRwmMhcCHiINWwnNEeMmimSiIsmMMkKygRaNnAiIrAPRZzfthHTTUNnHzTtcuUPppkKnvtTHwWrrCcmMhHUuUuRoOoUuTuUtoVoKXxTtkAaJvoOnOoCbBfFWBbQqYsrRqiIQSUFKSsDqaAfFnNGCIiqQwWAVUucCdDybBHhEKkxXNSsIXxiNnvxXVDguwWUKKkGhHgoSsKkbBsSMmpmvGBbGygGUFfmYeCbQLxIiXGglpLlCcyAaYKuUsSUDfFdYwiLOoNntfcZwgGiSGTFUzZuXWuUwPpSsxflLtPOfHKkkprzThwWhXHOFVvfDpPmMIidiALBbHsSMmnNrAPlLiRjLlJMJiihWwbByIiYHIIKGtRrmirRDNaARBfTDdFnIiNAfWVGzTWralLdmMzewxzZCcXkaujLPYyKkpllfulLhteETBiIVQYyacCaAAKgFfnNlEJjmMevVEeHNIYedDEbBaANaUwKkIiXxaAtTDViVoOvovqKNGaAanIsmbBhZzGghlLwWHYycCqcFXuXxKkquUooojSsJObuCczjXqXRrSsvWIxMswNXjDmlFwhoOfYFLJDlKrPpZzCcgGOQqOooPKLLrARrfFoOxXawjJDJjXzkKEeIikKyGdLlAWoOZiIwiIzFfwvVvenuUNnsSsfSsFSlCvcCVcIiMcDdFagblLRrBGDvpDdsVvxGnNsSySsYwnNWrlLnNRtoQyYZbGgGoznNZhyxOaLtXXxteSsHcHUkabCdOOXHjJRrXzZcCzVlLYypvzZYkAGYAayoOeHSCeEfyYrOoRFoZZTtTqQtZzorRlnfFNgCGjVXMwPpZzyWMYRjJvgGVCcMmMmIEeiPHhgGpMjJsKnNhaXRrgGDSsdGRCcTtmAKkaOCQqcFfGQKKkaKkAklLeOcCqQEeoEVPdbBwOoNnWlusmJzhvVIiHXxaABtTWwDhVgIGvxXxrROCDgGefFEpPwLlkKiItTjHYUuyhkKJLlpgGsFQqJUAaunARrDdaaAIiAmMVvuLvVeEYyIkqRQqqKbBkQrjWhPppPYMzUMmnNuohsOTtNXJSBDxskqUujWwAaJqQfFvVqdMmHhqcYyJecvspPudOxXKkbBzEzZYyIaJjsqlLunrRcZPTeRrLXNnxknUSfQkKqbkmwWKvVUuqQmGdOouUsCxVdDsXpPpicRrspBxXuJjbYyfFOAEzxtBuUrfvOoEdWwcCUmMuonYyNnwoGSTXsSKkBMmbpPxtkKdDlhPIITtDgGcCogGdtTtmIioOCTtWZCSszZzinzbBCZNnBcgGSsZiojJMmwLlJjFfEvifgGyalfsOovLmDdnJjzZIzZJjCcCdHhhFQxUuyFftAqQpPaTyuvbymGgMZFfgJSodzZTtEQAUdkYCaAKBbPpTtkONnpPoQAxXaHEiIeeEhrRxXtTbBnagmMwQqenNWwrPpqQynufFUMGkZrRzwmMurRUkKWKgMBsgPZWwBjQqGPpgBENnRrCahvnNNujHhoddDVEKkHaCsZPpMvdoODLppPSsPkKbBpSsPeEgrAayYIYQZQpPqtqQTAcCslLyYOZzMLBbZKkOoiuUbBDdzaAZTtvVVUIjUuAanUuvVIiYuKsWwKjJkSsSLbxeVvlZFfrRTGJumMUuSsPlvVKkCcLnNLivbBrzaqQAyYZeUuqKkTtQUpPcjSmxHnNtThXOlwVWeElLDdeWwVbBiRrwpjpWwbBPfJjanuUudwfSsFqCcsjLlnoOGgjFCcSOopPqAjPhLlBbJjAdHdDYyhqkKDQYSXfCHhVrRmxczSvpPLlyUAaaJmidDJOYYyZzyxXTdiHEkQqtDPpxXeELQKzCZzOQqmNnxrRjrRGhWDysSFbKecJNPpaYyAcaAfuJGPTRVmfZZMmXrQqODjJRrjJrDFsSSFRiywNnbbBBWMmMDHhdElLlMqhqlbtaGWwgCcYyCYOoQrLlUNiwxXWDdaAPpYmgGMyIDylsSioOIGgEZdLQfFqFbBZCcGLxcSsJPmzsfjJFoYytjJdPfFAqQjAauUJhNkkHeEoyYjjJhDjJCQDdOotjJZzTqiEdgRjZzXTnNtCpVvNucQqjuagGlewrgcCztTEsSaTtHxXNEdDLlvWABGcCOzwVSsRSswWLuCyYrRCREBIKDUuOSsCtSMLNnNxXzXvpJjeESPpVNYkKgRBbxpPQYLLyHhbBymMRZzFJDdDjASsMjOPIaAwwsSqoOQWweZzrpPRzxmDjIiKHmMfAIlLbQqZNpPUErYSMmkKLluAavpPfFTWwUuZzCccoBvnstTbcGJSZNnNnucLHzqQPBPxXphHbrRpsNsOYeEiUudDGgMKEthxXyhHByYxTyYeHJMzFfKoOBXqzbdVezgAhHwWaOoGqHhjTIGKkYyrIYyYOokIcsbBtKcsHLiIuUlbERWlLwxEJdZeUbVvSsZzGyqZzQifFIYkpjbSoOWjCcohHOvhJEanIRrmKkMPkaAKbFqFfMKkmQffYYycCdeEDyZjLlqQSvVCcEyzOocZTtzcXXisSfnNyGgLGaERIirzZhMfwWoSYyJjgEnNeYJrRGgjoqQAJdExaAJpPYFRJsuOSfFYcHItMmTjVOoTiwJcubzetTSPgGmMbOoBHZfephcwZNnLlGgEeKKkRVsSvhHiEeCCzZPjJpAVaUAGNSaAgQIQqRGoZYyEcCaAHhBbemsAaSMUHhUuCcCcGXxMYpkQIkZhHiqQjedyIIZzZtTmMAJUHwWjgbCcBdWZzlLwDtTyxXnMmyYNdDUFfYyMeULKbBmcCFMQqPxSzZRDyEXxdsSDeJkFSspCgSNtMmqrRACctjUuMmlSsLlLqlumMQqDhHyYjJdkfqkVvklLMmdDlSsdWebedDiLhSNnsxKBLlvPjJpxcRbBjJrJQfFCyYckVYGHvLlXxRrVPvVpKAUvEUuePpCslsSaAOPHfwWjJZzWrnNRxMgGmiofxhHtDuUFvzyNnQqnhsziIOYDdzqXxQhCzfrRFJQqmSPEPpsSsXNeJWpVvCcBFEXMmQYlLJDvNtOwWwWnwiiIzZpPiWwEvoofXxjoOrRSDsSAmMjoOmMyYKEwGPTRzZFhHftTGuUocCOsSshHYBzZpBbPEefYgjJXxGyYCpyYqZpGgPzwAvvxHMzcAaWhpPiIHhHHhpCKkzLFedotdYHhdDNoFxXJHhUuhAQbBqqQjCCKDJIPBMaAmbOSkKsQqlbBkVzAaRghZDxXfSsOowOQtHlLwWCZnEPuUPmbBVpHeEATdjzoJjYGNLlvVkgyYuUbkKvyYfRrFVpEePPHaApmsjjJpPJVgGpPRODdGJTqQSxwWXEnHXxhAxtDdSacySKbikJWwjpMmStgRmDdBbeYVvyEbBYwOOAaoeDuhHQwWquUVvPuMmkCLzLlSPfFgLRnYqQRrDdGxwWXlLlZzSMhHdOoLBjIiJLvMmlgKkfTeEIEpYXhkKHqSBmLIvUgGqQpPxXIiOawWABbokKMoZKvIipCiIcPnNVxLSpuIdDtqqaZImMjzYkKgGFfbBQRrSoOZzIidDFHMgmuaXxBkJiIgenxtYyoUBDrRuTDQsMmSgGxSUuoOnYyVvktKEwTtCFfsscsasBbSMmAjBHhVxYDkKZDvVdAJTbBgGCsquBLyPPyYnaALlNSLkKlEeRhHAwiIioOGgQRtTPpPpQLLllKeEjVRrEeHiJxWUufnHhVwwKkNGnwgGrOTzZBbIiSHhgGkVtqqTtKVVvUPpgGzMmkKTTtpPbGaAUxvOSIbvszAfghhjLlZAaKkMzOBQQDdWwlLsSIifVRrxbNnZCcpWGfFqGOALrkKEGmUNdCSHhsiHTgGtKlbMmPpaAuUwWYfGjJcCSfLrRmskthPpiIHTzZqZWmpGxEeVySXxXHhBGgRGgJHzLtTQqlwpgUnvZsyteUmMuJPbDdtubBWvVUIiuwssSaAsSLuUpPDdWnNGAfTtLlFHhQMmVvYnPXmVMmmLlvuUlkrRKeEVaueEtdDTPWwpNWwnUunuWwuUUNuUQLVNGpcvLlShoOFqIfpdovfFWkKwWwAaKkhejEobBcoOoOrktABkqxXtJjbVyXPeLHfOeMQSsyYBXxkKGJkKNnimMgBILHkFfvvgGXxHGHugGsWDmsSLhKFSQvVekKEqQtNnNaNbdOTzBboFPlWwRrVSsvWZLUdyPiIeELiIlFXjCWhHhjJHlLenNgGGgKRuUXxqQesStTZVxKkXWKgXxfFoOGStgvVbdxxfTtFSkkKPpFLYyhJnNjHDdyJpubzZZpbBeypmIislLxXOtTUiIuGoLljaAoEeEeCxXHhaPpgGXDjJdxASsScDvliWwYIosSzZOiNnrUehHdVTLfzZsSFIiwtyYnlLoprsNnuKkYeUuYXxqJxXfFHsSwWfFwvVZJjxxHEwEeWDAUuawEKkKkeWFfBNZzDatpPezZEOohCHExXpEupyYRvViNJjahjUwWGyYsUuULXlXYmMCKtoOTdwmGgbkKBMbHqQEeOzqQYGgONnAnNIinIiBaZzOovVDacoOumMobsEqwWYhHOcMYIiyHfuZJYymMXJwHGgrpPsuwZkSsKSsfTtcHzZUunNKRrhHhMEqQljJqQRrojtToOZzJMNYNvLSmpCoOqQcRmOonxdHdDhibwVJjtWBpCVHxGckGgKWFhHNSSOQqoEilhHGYgeFfDzdpPDUuwJXWFopPsqaBdKdDLlUEBbtTQMDIiPpnNmJMmYiIEeTjJMFfhfFjmTtMHEFfPWcCwxXYytTjYGgPpZzkKPGYyZgwWGHVhAPGjJdDwfFGgjJnhldqQkgvrzZgFRrTtvNnWwnXnNGAukJyvVBFfJPpWwPJmMjQqlzxBbCCccQhmtfQzkJjKIMZAeXyYSgGuxGKqkKSRrsknIiQozsHReZrkKZtIfFpPDdnYvVVNVaATthHvLfcCHVgQFNcCdDshHSXwWhkdWvmtTMjyLgGITiIzvtziBLlAEBeXxFWDqlwwNEMmADLmwpPlSvVyYisSDNntTKEpPeEeXxTsdeEKihToPpEUOoFVvvSlLsRoRUuWJqfFQJjxugYTtWGgkGghHMAkwYeEZxXGgWaAwpIsnJjNSiztzZTkXxYymKAfYyMKnNkmDWsvNYVvKkmMPWBooOOUqbaFfyYAJtzpnpttTTvxqQBbffFXocMbBAaVvPSsJjGMmFfJjOlWMBqxlLXwvIgGwWibBJjSfFvByplLKnvIzlsDPpWUuGgKHMyPQJjfxKgGaAWGgDubCCcsXbBxiRrymsSTmOJjLtZckBSsvYjJwtTUzuLMmlTXBbsvVOoHAaMmZpkhVJDdqQBBvVGUugvFOcLlBbFyYfKBPWCWOFaqnLlLVvgGQqLRrlOSaTtEvVDhpPHtTbSaAfwcCSwYcCghHWwzDdtTtoOzDJjhbBMrRlLlLwWmMzNsgvbBJjZajFYytEUBbhHwOgggCcyTtYVInSFNrRFduSsLlUVzZTcvCOiapXrRVvUgGMMmxlLIXYNnOAakCllJjTbKMSsyHhegGEYEvkKVwOohFcUJTtvBbsvVmOhGYykDQzZgGwWpAdDIbBrfFiIjgTaQhXxHSbKkBHhsWXZzkgGkzVYyvDdwmvUuSLoOfQqdQycCyFfYzkKUtQrpPRaAtTqzZVwWQyYqPZoJFfMDjJGHOucLjTtJUulvFGbQHhbBbQqCzVoFfOeJxbcCDgwPRNcJCcMTtjJmjHOooUnNkKiABKkbukTWNnuZzDdmMsSwMmUgOxWyYoQqxaThEwKHBnNsuCcKkLmMEepoOjGHfFwWOtpEeuTSQqVItUhQKknCDQqEDaCvbkudNTwlUuDdgGmdDsPxjJgNwQqKsSAqNnRrBEaAeHoBAgwOwLgkvAaCcapPAeEOmJVvUyDFMHbRXxxXUsSurBYyhftRnwRKBpXoRtTiAXEIiexaiGAaeEEeZzVFbTtBfvAaArifGiYgHEecgtPWhtZGfjyYXSfFxVrpPhHRlmMKFfWpzqQqEeUHTUutUZzvLpKzkKYrRYnVvsSfLlnKBEebWlLiIwwCcWWOWwTmMXMVULcHQYyqhMmTlLGgNnnvOOuqQUtTTtWbBkKlLXjuUcCSCcUudLlKWVUMmPpOoPpotTOsPPprXxkKKAqKggOrJiUuNZxgIMmiEBTtXikKGtOoQkaAQqsSGMtflRPphHZzxXzLlHhZnceECuYrCczODgcYyjJjZXnNdUFfsYOJEHuUslEssoOhlaATdsOHhRfqQuAJpnCQqufWezGWwWwgRHhTiXxuGYBegLdDlLlzCgRxrVveVtkiVvpabIemMxVQWDdyYpiIHhpPehRMFXqVZvqQFIbETtPDzZEhmQJjqOuCGPuoWWVvdDrRutWUaAjMlDcONWQqzBYEOuLAXBnCkNLaOWgGgUubZzzaAuquNvcClkBEaMjkEWgrmcalLrkmQIimVoJKKGgrYxrNlkBxwsOoePpJWTtwIejJpaBbAPsSRrIfaZoWOwNjcjDrqPhHMOXrqQQTaAiRrsKFjchPYurjgxhQqPfFAdDcCapHXGJMmtTReEfFUyAapHCJfkjOoJSRwWOorItqqQRfhwWDdxXHFxoWwmCcpQRdJCJkerREJjeRSslLcCrEKnWowOzAFijJEPfFpijESWXbKLnRXtTybBRkkjOvLxXlMqMKRAPpCMRIiGMmweKGgJmAebKLVnUfTtFQdDUZBGwofkRrKFATtliIrRxXnQqKcNbuUxdehHEDalUoeybZwnoCdLmJpPuwvyYwWEeVThHUYywJjwmMOUpgcUoMrNnRBbHeAadUupIieBeEifVzvQFfxfmruUHEBDxXdbPUupPgGvVeEwqvpPXbdDBbzZBKdDkOobhHBmMpPEGWwsSgiBjJAPIKTtTvERXrIirRGcZGgGrpSvVZzsPREbygUItrZjJEwFUcNPjaUFrqQoSBkKbDtLHtTSrRnNSAaeLShCyYceQqjyIYEeyiYoySuDAaxzJiIFfCGdoZGgRyUNvVMmaArKlaALkLkKFuUTmgKqOoXxTUugIxbeGXzZznIjFfRoGGkoOQlLmMakFfRkKpSTtBbKkVWwvuvoOwkDsJxGKkgwJjooVpPLlNNZzntClvVutTvmxtowkNFqQeEHhNyoOyZoOkPlwWVZzdDuTtbBhiNnIuGgQZjwlLWaAgGsSJZzPwkiIxXLvXWoOFaAiIfwscmMCxgGJFgzTHwpTGpPChCckKGyUuIgFIRadDgIIiIrOxPbkklPpiKrRCckIMmLKrWNrTFmfdYujCcMoVhHyYNKknpPKFfGlWovVWGabOhbQcCakWnGJjXpSMgGVvLWkKtnuUDUKBVcAXxdedfOoFzZcNqHuTtTivJjstWwHhUvVvcCVPTohwYyWgJPdDJjlUpOomtTMPSbDdhkWxqQXeLlEeHtapGgPAAXOFfwbBRrPPppHeEhXoGuPpqQMmWLlQWwKkTBbtWwqmMEbBehHmMqQUwSstpPKUaZzIuOhPcCgGpcCCnrpWGSsdcCPtTpBXjEvZcBxZzBbXqBgfOYyoVwWpPChHUOoofFxdDXhgdmjSsOxXfFzpQdDlLqBbvxXTuZTtaAYqDFLlvVlSssVMUPpuWtTZKKutTUZzxwaAvEeVAaqAtGXEexJKkiIRbBiUuaPTtvVqdKgHLloMBbSIiVjuCfHWbBemlLkBcCtpPzXxZLLcKoyeExiOoXmEeuxPAIocVCGgtWwvDfnfsNnNiZzvGGvpYyPAaVGQqoWmqQfFMuerIiRTRrfJeEhHAzCcVkKpPGSnZoOmHdZfFTGgZzZGyWsKkcCPpWFBbsBCfjJFcuUNndeOOooAsolNWwWuUwxXXxLlQAfowcwpbkcCFfBEebCoXxySsHhTtYfVbbjvcCHKPlLXxBbzhSxtjJUZuWTtyVCcSsbKCzTloMthHMYISyYcBUdwJjkXFHhnNqpIsSiYmhklLwdBbuUSLZiVNkeEPzZYKkbVLlsJjbBVhHWQbmwLcCoEeWYVvywgpkxXKmCOxIiusSUHhNnrRFALlaIXxiLlXVIiIiTtPcCprRPNPZTYyjBQubwpMBkKbmynSsBlLbGgmfFHhMVSwdAlLnNadDZzFakMKUuZPlLzyWKamKwyGUXjwrOrSLCclsVfoOuedDOnpPpPNtcCrRHIkDSAcCqQaqQtkpPdKkIrRIisLWMlGgdamMenWWKbBkIQqiLoOQdwfEbeqQLlabIRrZTVmMrRZIitOohHiTtlMmYJwjFfTpPtJsSWVwDKHxBbsSeEnfqGvhTtFsSlnvyxXQqYyNpPrRiTzPpRzWlLwErhBbScCLlbBZOqNqkKQKMmQkgXUsMbBmxEazeZzppPPEmiZqFTMHqXZLBbpzZbcCaABhHRrlLUuoODVvdjbQgGqYjKUagKkxNVfGRhHVGKDLHNGgtTWgpaHvNnCcGghzgpvVPZMmqQzYyDiIdpyJpQqYyemxXMhJHGDdgmtyNncCMmaANnjMDdWwdMmmqthaAHQqkKTegGuXxJjkDbFfAQSNCcnOfwRrxjwWrRWUOiIouZWwHIihdEGCcXxygtTLIeVGDdAaDdGggvsdDsIinfwBbkOoMmKCgXhHhuUvcPbwqQTvWEeMmBIkKcCcCDXNOoMrPMsVvlVnynmOLemZzDdJjzXxZHkhFfCFzWUSRhAaWjxjPpIizfFUWwFwWhmCohHqQyQGdDgYyeSBODdUzZWwxGgXCAdDdAbNaoyMlLzZmZoeExXIihkKBWDkcyxLOWwoxluSIiguJHAnIrSsyYPfFHhsQTtqSUePehchHHEepPTAdnbdehXXzNnvxXVWhjQyEyKkJjQqUrkKSzZslLRSRPOuIiUNTssSctlLTCSWltvDWwEuROoyXiISsZzHhBbcCkKJjtTxYyXxBbISsLVdCobBOWwkKuUsGgZzHhcOFfbBJkKOdDgoSMXxKnNkPYEPzoOBUPjYZzRrltTfPpKsSsXlaALXDBGTiIsgGkwvzDdErEekEWwTtwcJxfpYDpPulzmMwbBLpfOZlLtoDBnTtAnTqKksjJfkHRrlMdwSUhxXgcCvVhVVKhliboOGIjxXgbSyYsqmfIiFEWUuwDdoYyFhoOlEpPpPpxvVYvsSBMmKhQqHkXxTxXQnNKbaZzTKRBbrRCnNKkdDcCOeJPpErRYysSDdhHxXDdAkAaTtKJjdDGgaHhHVODPFiQMmfHzZsVCPgnvlNnndDNqmMoOKkLZzlpPPwaAWprRBbUQyYcCqAvLMxpNyRrAaqaTtgmMwzZlaGgASpPUTBpCcIijETYSzVNuGPjbBJQqLxXlWZhjrAabaXxhHlLVvAxeEyYsYvXgPJjpPMqQwzQKjRrJSMlFsKkgFyTtBWwLmTzZVvtMkhISscDlLneAaTtEuhHMgiIeRlaoapPAgdVvDQaAIigwPzZzDdrRBXUuvFspPSgLdDRbBrllLvGgVGMmgtTQqIGUuLWwlgiTtGqdiIDqbQIiuUqoQrRqZmLlrRzJHHGFkKaZSVBisoWwVXugBtZuvkXxQGgQTvRrKkKstsSoFMmfRWNgYyXxgGZznWWvNFwWwXfFPpjIhLlvJZzkQqqXxvVrqIdDXxKkWarJjeEsppYlnNbUQSceEQnNEeqRrtjQqpPazdyXvbJSCmMSScWehyYFfHHhkLlTKEeNoOsXqdtUUudbuOYyrRTXNEGMmwWjKbAUMfKiIkfFFGmhfsqyZJiNnzAAaQQTiIiEeUPslXkzOmpuUqNnQJjQqPuVUuiKQqklMbsQxyPeiKkeEZliIwWLztFGMmLVhhHzZrRHfKkFoOlbxTtXlDmsLgaAZzKkyNrpPlGHhpuUsXxtTZlcKUpiiVvIIUdEJjoWyMrGTsPKTKXuUQqxyYktIBksYCAsTBbXpPpPNLlnawWTtNvVestWwdDjgoghHGrveESDAadMPhpBGbBhHKngyJjOZJDDdtahPvMWwppeNvVzchRrTKkqoAaJuUjWSsLlFSsdpPzWwHGrZvmwxXWMZzKzZRgGrLoyYNnpijXxdkcciIJaQqHjfiwWCcITtOnDdkKyDTODEflZKkWjJFfBbNnwckKmMPfFlLYaAyhHiIyYwdDCeEZmpPhEozZOeXrRVVfFyPpYaWQjyYJPcyHhFuUrgGRYyuUbyhHQqSgPjJprtzZpgWekEeJKxXkadWwsJFUIiuOOViIeIVvOoIYyWNRrIVvioTnVBclxXLCbFoOfdjsSzZnNyqfSsFxefbsSTttTZztTPRrwjEnNpPneEfFDdKXxkVvmMsHhSxuUSepsMjZpPPpcNHhnHaNnAPpmMZcCyovVySsSsYOoXAahHxZSHNYFfvEeVCfdDxXFfFcZVfoOlJfFjLdMmEWwehHTXOoqQFOIXFfGgwFhphHoTtLSOocVuakCchlkKrRLIigyvlLKCcqjAaAamMCXVZzdDOMmoUubLlkXHlIEBEwDuULQqlLFfKHhKQFKDdXxULQOooOIuUuUiJTaHhQmMqQrRTWwnsuUGcPfxXKjYdrsXpmfMkluEQqmuYVFfvGJhujaziiYDdDqQEJIznkKNKiqKPymYyYyguzOZzgriqGMmsvVnDMFRrfrZzReuMmUTbBtEmdNPRnNrpngauXFfRrzZxAvaMAabBmAIiUQqawWAuaccGgCcIrkaAzWCHPEFZzzhpsEZBCBbcUCjWItAGgavJihCysowWUSjGgrfyjXwWDdGgepPDysSYUujGgalLOyGsOarRAFmHeAglsSNnYFnNsXxSxXIxxCCnSsjJNZYehHBbSssJPeEpzFIiBMmvVpmMiNuiTtIuUYyUoOoOAEeejHVBbJwsBCcJMfYgeEbBGyFqQvjJVmfqQXxFPKeXrRxEgBuEzEeDjeXrNneBhnSsNSCkTrRQqSFfaACibhmMHBKzZyiRgitJQUuZEbBrRvDBQqZQxbkZmbBjOoJjhEtXfFbYHTekmaAhHIyoSnSZhlCQqiIUzTBbTttcFWwfCsjgbBSsCBTtAarRSNVbgAaGOCYOoyteEgaAGUuVUsygJjGReuLlwiIWnzByYiaFyYbBhktWwrRTJdxJzZjMmXMrKkRXZEWWizZpoJBbmaVvARrrRaJdjfrUuYeEuUiKkIYllyqXrGynvsPVRZzDdrxrRZPprKZzRrkRnlmsTcodkibuUerrRbBcJjyYlLvVcUlrvWytToOYlOoLaAZogjJbaYykKmMwVDdenhAeZcJhHjCGRdDWELAUJQqCUrRrRNnnPrRcTWleELwtxJrMmGDeUuEqQEGgKkehHezZzZICccdHJFfODiIlLbBdhKKnHaIipuUyYmMCcDTNnOSZMpjmMCckKaACXlGggzYyflDzeLYdnullLLRqyVvcATxXBLBbhHQHQeEmlLSsLlLemAvVaYIrfsdDfdRdnuUNDdoRxzzcCFMvrhHNhHntZqQzpgjUmMFCcCmMnjCEkBfYdwHgZbBzJXZzNnMoYycZkqldTKehIrRDPpckKCtojIqQPpMpfFPjAupPJjYVsZCXMvHhcFxspPyyYqdKhNlOoLnsSxXYyHbBkGgdDQdDDaHYySspFCcgXxGfpPJaRrQsfdDUuJlLqQGgNJSQWwjJWDUNAFDdPpJPWDdIvEhHwvWLoxXaXxAFfMsJCPrnNRpBbNnuGgERVmMIlpPpUjgTttzLEIiXBLllRrkUyNJiuvEjoOOoJeIOcCozMmrRlmoScCvBbVazqyUBbuiRURrPpuGpPlxXHAdDahVmzeEeESsScAheFKwWkfvDUuOJUMOomSsnVtSsTHsSAcbfIixXfFFBebnNJbzQqpGSbMmmKkmpPNYXxREWGAZzNqVvcyKkKDufFXxaqtTeDYyOsjGzYBVUYKkdDYXqfHDchHiTtNMIilVSBbcCFpPLNnAYVYvVyLlLlEevAhRrHaVvjHRyUuYrhAaJwWFIVeWeEOtTIzCbLlzcZNDdIZrRLlcNnzwZzcMTDRrTtAaOsyYSdiipHLpPsgXxFrRfHhOWzZNODpPoOeRrVFTtZzRbTXZJjWweLlanNoBmMNnSsUkKbPOoSCIhHPlLxSNnvOaiIAoXcSKrRkDdDIigMLlkdDMKBNJjjJjJsSZzWwnAaFsuNKlEtrRpzCNneQqSsvVEJdDjNsSjJUZRrxXzQSDdZzAgGiiIesSZZzoDpPUpWwgGDdPSLlIinNBbVCEzZjFfCvVUuTtAaQCcDQtBbNnTqQQKSXdbsjuIiUxcCnoSHOrRZjJmyHwJmMkiIKUuQKimMWwlUSsYyaAdSsFRrfDOoaNjfYSsySMGgmjJdDPWOvXxVoabBAdcoUfHhFuCcXHsSdyZzYpPbouUtTOZgZzGeEjMSULXeEPpvVxQqDpvqgLloJeEjaAMsQqSdTtDrxXgSsxAHktTuUSmzZPSsprdDymydDYwYWWwmmMxvJgcGnjJrRdDNLOzQqZADdazzOcPpshRrEHhgaeEKyVPvZxhZzxooEWweDHhcBAKgGuhcCXxuUChEFpPfTxTlycCYAdDoXYHWwOgBzqOTrRwWxXgSsXSHhxXPmMVdAfdDCmMKkmgGyYLksGgRrSKNTsyYSWwtNnhJjHEbBnMmNVWSslLkKZWzbBgGOoLlwaDgqQfFYZxdWAvTtVkKayYRUulljdDJzZeEqBbQhHkpKkRCckKLlkLdjhHloOfnNyFOoHLjJNnlWfLMSKksdJxnWSmwWXiwVbBxQbBMXxaAmxSsJmMZUBOOQUZQqzxVvJjfCdDBbQRWwrHMSiNfFAgcCnRrkQedDqQEVOIvdQqiIWuAnwEbBeWtKkTEeQqyinnNnNEAGFfgMmaeMmhLmMGkqvpPnNbHUFNnLKIVEevJjikfFJUAKQqHdfbBiICcFDhyYmMWAaEfFZDADdRlLUujJwtCcCGgcZRvjNnJVCwWcrgvjJiMmIwFafYnNytFbrndIFMmfMTgEebBkjmrIpaRhtTlaIVcPvVpCvtTXxwWohxHHtZRzZzZaAeNndDEkKqQBAabPDdKhyYOoFopJjgzwWZsVvZwkKWzVJwWjoOdDvWlLzCFaAsSTlIaAYSsyWyhHukgsSlwWLGLlPqBQqYycEyuNnZzUMvVuYqQgfFgVMPOLlkuUGdkKnxXxXFZzKkUIiuJjfeYGgvacgQdAakjJfuywcAaNaAFfVUujOVvvhHhHOOwWRPphVVyYvVvRrNPCZheEeEutYDdDOodNnyFrpvVaGAaYrYydDRdDInUuAaXxWpUTtuyAaaOoidDxsSXiIoybHhvnNZwRrbBWJWwYtZzvVTWaAhHOoDZQqAaAaRrYlMmLPcBDlAqipPIiykpPAaACyYvFyYZHKcCGMSsvVmkRrLlqCcpRbEtJpOoNxHhPShtTAOkKdQqEAGFfgazsSCcvpzZoOYyiAJTIiczjNndXWwxDxPpVeMWAhKgkazWhHkbBKyoOYmMzZKxmnbtRaxXSsoDLpPGFjJWwfgIvHBJjAabIPpizZgLHSZzsXPzBubqDdLYACaPnNWwoOmlLMtUueRRrrKLxXUrRyYuJjnuDdYsfQBINaNFfnFucbMmBiZzIslIuPSGCaBZDdOqXnfFNhZbkzZswaAfzZulBNntQNnmMoYyKzZOSKkKdvkKVgqnWwYVCcwtlqQgGLICcvTQzRrZAYMYDdyGgmOoGKwNnmvOoBUlHrvFeyYISsihnNxAFQqehYHSOoRrOuNvPmkKHhTFKQTtqdqXxkKyvZPpzfFZzWUukKXKkHFNRtwmtTLSsqDdLzZlVRklKZzcCiDDLMixVvQekKEWiIHhJZwWivAEpPlLevMlLTtmVQHnNeEIikBFaArmXxdIAaiPBqgvVGoGreRrEiInNgQqFrRfyUeFAZSsCPpeEcAwmZSiHhkqXkKxSWUcCdDuPNsSGedDllOfpPVTtvFanoOTzZEdTtUuDvVPpsZOozBKkQGrAJySsrgzZGNMwIiIYyiNniQqvzlLZEjLloFOBbcgGPQqTthgCGvVsSgjqQJFfxXKkIcAaYwWWBbIdZzDMxXnKkYhHYjJyyXJfFXQtggGSskKZzGTqzZxInGEebkXQLGdDOwWQzZdADsSAQMWwZKMmnNMQfFxXyxCDGWNnPfFhHLlmMpcBNnbnaANdUNjSCcQaLiIYtRDyYdrZqqQQyMmTtraAkANPplxgpwNGgWweEwgphHiiIprNnvgGDdcObJzWSZleDGsSFfgIiyKkpPYPHGNEPpmsKreIiXyohHhoOJIipPuSGgaGOogqDpNwDdtwVlFfwWEeLGJiIXxjmtTMrwWRNnmDdozEbaIAaOoOiIoNGguWwWERxXEovVXYyXNaAnbBcNntbBTChBRruUjIiAaJgwPpCcJjQnihgnKkAaEenNGgNyYDdWIrqQRSsgJEcbBCCXqNnQxaAwWJjgJJPBkKboXbBiDDXxvVwvVkKWcCZzKferRgRrUfeEGiIkyYzYyEesSZmAaunNJjUMTfSZvQpoOjJwWDLldGUuvVgPPuUSCSMLrRlmGgZXljnNcGdcmIiMtaAZcQuUVQHhqvetAfFaTVvwqcFfvWwrRVARraHvVwWPHhIgPpYKVgXLuULlkCNBbnrRcEeGBJsUGgsSgVkIiuUVjSsrRFtLGgSKfFpPrRNETVvSXxsAaZFhIoeEOpNnlddNsVvDyPpwWzBQgMYymcJbsSVjJIikTtMlOoLkXxAVvatGqQgnOWIiwtTPHYHyYvHhVHhhoxXONnyPpQrRCMsSmXxcDdGecCTyYQJjnNqDdtkEeybBYGZatppXovkKWsSwZUuzgGVYPhHWINkKuUXxwAkKtTyYjCmMZQqzLlmMpPcizZbHbYyqSjdlBXxCBiIVXtTnmpfzBqTtbaiIzyYZdbBlLvVwvMEerypPUiIuiPaeEKPgMeOoEmaAADMmgnTtBbVvfGgFAgGXvVdDxMmlZMmzFFyGtTNNnnRMFfgGkmMymswkKthEeHTWeECcgeElLlMQaibEsSBGrrRrKCeJjEonegjJEeFkkyYPAaAaQLFfEethMEtTyYTsPpSrDuWwUdHYXnKHhkdDJwCcqiIiMxhHTttOMmepPzUQqSPpnShsSNntTkKKTFfSstKLQtVTjMmEuRVvQhHmaAMyDZUuTtzaAeEdksUucCLPpMmkiIiMmcDdFxtTpIiPeIiEabBAEuwWpthHTWptTIiHZzqIDyyYzZYvlLGglXdmXEeFMmYDtyIiVvmYGgHOohiLlQqzZiIZzDdJextTkUTcAkKawWCAaOoHbbBpuUKoiIqQZBuQqTaXxQYFfSsudDdDcCUQqyypvXxVXxXiZaAHhZYKkfFHhNpPUZvSoMmOsbwWLyAaqfxVehHEMbBLlsDdQHwUtTmOoMuxosuHhwWHhXYyXkjBlLpysehLmMLZNnWzqXXyTthHYLNHhADpAZxXzZYBJFfPOopjeEoRrZzjxSrnDdHKnoOBVwELlMLZTtOqQozSoiMcCeETtnKkopVlRrLWkKVvOKkwWogQdMVdDcAVvjJrsFfYyxvjBlLPcCWweaAUuNNngNjiNCloDisnfFKkNSGgsSrQzxVCcZypGRMSsmrNngvJjQLtiSkKwSaQGghHXxqfeYyEdOyAaaHvxXaATphqIrodLbBIkLvVALlalcfoOyYlpPjJLlmAwWcgMVQHhCfUZhHzAFQqfauDdUubIkirRvVZvnNVoCsJjBBbeEJjNHhBbnRmMrSJjsbAaubGgBUnzZWLkKyoOYTGgtlwWIiwUCcjJQHTsoQqGgONLsSWFfdPEepYEiIeNocCcCsluULSmMtThHLMmlnxthxXaIiyUvVuSskKrRufrPoOaAFHSfFMXxmIizEVbIFfJaALljMmBbFvJjIFfTkSsNjJNGPXxpgfkuhHjJnhjYyZWfMyYWwmvnKKkkuUgEfbNNmkFfcCiIMmaeWsocmqwaoErPdvUusEMcCmewWmMWSpPsjSdDszyizqpGgDVNDNMcKDdCcunNzZUxKCkwxUjUAanuSuaWwIzvvVVHYyqIieKbZzBZzfwhrRHPOVvQqTtoNbBXxAxSspCdDrRngOoPSGJjZzAadDFDSuqQuUqOKBbFTtNnfkBbfFojJQCssSpPWwSAacpoOntTWhvXpPVvxEedgIirRGzmIpgwsfvVjJacCUSXroORxRrSIZzbBFfiSvBPpbcJCcjzZCxEeQqrDKkYyQzZnBbNVcrRVacCvVxXAvSsUuvVrFYOVvoyMKeWCcwEJwWUnNKkSJTtjAvFIVvfzZFixKkmMbBQJNNntPLGgXAkEJDTtBjnoTEhMoOmolnNLgDdwWTtEeKTtESMmLbOnoOEzZCcUeLlmAamuUoOLqQFjqQJXdgGdcCDdDDiIEGgmgZzpPvFORrMVvaZpPtTkcCHLlNSdDsqbBUDdwoDdOjJWUBEepPudDrmRrjJMSsQqRUCcwPYyPpXiKLiIlkaEBIimmMfFMutFhHpPfZjJISsOLOlvLlnYyNnNpPxVZzrRQwWqQqvHEuftsSGgVmOaBOvVVhqQSvfFVsqQyCVHYyrnFIsgGjbBGOoaXzKkwOdDIRrTtroORCuUavaXxAWwLvDdVpPlWUKkuHoOPphTtDdvDWwqNsSnRrQdLlwRgSazZkKClxGgXQqxYyJjWLnZzFfshMmBjcUuCPpJyWwYlnBfFbNivJtkhDdeSzmMZsSeFfTtFOLRQUakEqKpPkDpPdcCQGCUuEHhrENnoZKkIcbBTouUCcXGTtgJSEGgtJJNnVhkXyYgGLUhHkKsQjJiIhHJbQqByvxlirRILMtTmZCJMuPpNnqQzNnZspPiqyzZgUaVvQJjqPrPNdqQnNgGGLlgTKktDZtqLsSaAJBbUZPGgYyGgBZrYyRpJjhHMHXxgSNYPOoyYEPNnpEfFKRAadIDXJfdDFhFfHOoORrXQQqCnNuvWwVUcyFsSdcCLisKkJIijPpVfGxcCXZzRzJjUuhJUuLlsSfqDNAanvyYwKKmMwHhEepPnpPNlLWTGrbLlOoAaBplkKjJAaMmktebBjDdYaAipPNnnNcCZLlzoYcCiLluUHnfzsSZFvnNVSMsZzlKUTtNncuUCpaAHhmMkKXxizZwBwElfFQPYTtypqUutoOaTVGgMmKkUTeEtYyQnNXOXxOXfFEexVyYYbknkKNvVEeAJuUqlLQPnsgGPpdDTkKcBbCHhUZzuXPjJStTLlscCYytTPtTkKZvVzpbBRrotTOcNpQNnOjOaNHhndDqQvBMJjSlwIiXgjddQxpwWRrzKkZrfhHPsShDFbBRrfVvHCcaAbBJjLdhHaAoufFUixlCccAaCKOvpxNxXZznEIiQEeUjPdDkXxwWRrVvHnNcpNnxKkXUKkHhrSsCbBbvVBHVnNcPpXgDnNdDddZgGVvoOznNZowWNgVdDimzZoEhxLXGbBEegiXxIFOXxoGgMCiILlIaAPpIiqnGggGblCdDnNcFHIuaAKkqRrQBVBbaAdBbcCSjJPpuUjJnNshoXxOqmiwWIZzaAsBrgUsNnSYuniTtrocJjTArQqNnkKJjOoRCTcJbBjZzCcCbBJOzzpPEqvEmHLEetTmOorinwWNVndOXxojJjWwQqJsaVsSvAJmUevqfDsouBbUJEejJKkOGgAZzunNlIiDZvpIFPpPSMmwWsEepqQWcbBwWPgGgGpCVnNUuaAdbBXlnNbzZMzQqZmXbBkKNJMmUSSUeuUZzDdSjJssVvFYyrTXNqeEDbBRrTCFzEeZiIdFwKMJTtNnxyYXWwUuyYyohHbVkxXPpfFXcYYoOQqygGjJoyYDdrRuTtmbaAhHBBbihHIgGcOoCWxXzBJjXxIhHiHhcWSswEeZznNJjEefFZzEetbBnNTjXkmeoFpPcYYXEEbBgGkivGlbXNEeBizZMmICzZcbdDouDdhjGgmNqQqCcQnOolLgtTnNYbBPgukKDoOomMMcCKkgaAGGmbxXuUeZzEdtuwJnNjpPbrRZzURruOoNnJjBIxXqZEVHhfFFnfPpYRrlLjBbJyXcLlHhWEewWwIiBXxbkKqXxBbhHQyiIYNQqKktIiZzoqQJjTBbtpuKSYFbliILEePTthHvPAapcIHhiRrVPYyBkiIXxBbPjJCcQkKhPpHpjJJRxFfmPphHbjJBbBlwFfOkUDJAxQmMTOGgRBbrZzkcShHvqQqQVuPfFpiIUqQbPVvcqQCuUaBbAuQqoOxwsjJLAalwdDRrBbWSWXHOtTJdDKkwXxCcIisSGNXxUCvVcahHZZzzdFvCcJdIjmKkMIifFnWwNxxMmXvcYDiIokJjSsNzZcCXxDGoOrqQRJgGYoOGrKkRgGgtTlLlLSsAaRreEqpPQyYeZGgLbGVvpQyvWwYqPUgSDdnNKHCcSfdKGSKwWtTWwkKEAahHzZHWloBbqbTEtOiIoJdDKvnNOTtosJjREwWxABjZzAcDdtTWwzIiZFGgbBWNbBnARZnDuOzZoFJjBrTtbDWmMgDqQtTHhRiILtTbEeBlXxTVhHQPpqsSpkKlLEXoOFfQiIqxkKQVXaAogBpPtTEQeEzZuarRvcwWSPpsvVCmMBbGIifFeGGWwggorazkKtTjiCcIJhHhqqQQWwPpXuUOoxkKRfDdVKkhHYoOEAazZWwHhBbqIijpvSsCcDdVKpJjfGgqeYyEVvtBfuUXxFbAasvVSZzwWTrYyRgGQOoEHZzqiDuJdDjaADdJsSujJopBbPDtTYLbULlkNDIiatcCTkNnFTtBbhHTtTJjVbjAaTtDdJnNBzCcrmMRXXTPiIjTtJkKWTtKklBqQbUuXxWRrwyYCQRAazdDhBbHagGRrAZIiRORZSszXzZxjipHhiupPGGZzPpgQqSsPsSVAyYaHAaiILbBaAthTtpiIhZmtjJKkTxXKZOOoPTtxXpxRctGZzTthviCWwKeQRjQKkqAaAasTXMxAfFaXkKIirpPyYzfFSyYDDdoOqLUdDulQdWEewNnsSjnNnNCGoOgbVvGIjWwkipyYfuUWmMwWwFaQfFDwjJpPWIcZUuzfncCNAerRBwWPppXxYycqQGvVYOULlsWyYwuUSxhHDdvqQRsXsUJWsSRALlHBPdlLFApPaflLTLxXjdDADdQCcyXFYyaAMHDdhtTnNdcCRrChHclLCyBlCcguNnUdrRDGietdDTPfFIipImMmKkMxXBboOdZzDzFfyWwiIzzNzZoUuXxXSqtTqQctTkbBIzSVEuUehkKHMAaHhzZbmMmMBcZwcCWzlEXoOxEYDdyDdRkehHZZchhHTmMFYysqQSLlvlefFEmeEMdDLYyKkLthCcHmrRBEujJUPYypQqPvIiyYVZXHslEeaRrAkKNnDDddEtTJVyTtAaYnxXNytTAaDdVvYvwWVdDlRrLnNfFNPpGgnSsPCEOLlVYySsvoecUuAatTulLlUaCYyHheNnWwBUcJjdDCEMmeMYyNaAnVkKVaxXAVvWMmGgwYbBhHhNnuxzZlWwaArHlmMKTPmMzZvNCcnVdzZDkKBbXTtUreEMmJjCcPpXxTtRpbBrRowWMiIiXxcCvKkAaxXhHPpoaBbAgGcOfXxpPspPCcBvVbSFWwodDBnNHXxZzyYhCLlLxMmXlVvABgrVvwWRzZXxIiJnNCcBOOoDcCdKmAPHhkZzOoHhoXLiIeLlTtDdzbgGYeGgGuUpBeEbpPcCBbpdDPGhHdDXxVeZVvzqaVxXHuwDbByYdIiYyOfFobBqYywEeWQiOfFqvVcCWwvVcCeXxETXcCtxXRpPHwWhsSrjdDJfxwWohzOPpyYUPpsvVSLJYYeIiXAaxkKmQqyZmvnNjJXxVMzEeAuRrHBNnpmtTNnfIiFMwWwiIMyWrQqRYyvguUuUmMZoOzzoOgAaGWwlLAayYsYQqyKVvZQUtTjJuuYNnWvVwzZyDdUsSXZgDCcdhHpcCPZzkQUurRhHiRruZzRRrJTtQqjoWobBOUuDdLlMmwvVNufFUzxcEeClLBbTWPhqQIeALqQBbBbnNlGpAaPhoOrRHQFKkNnWuUTtxXzoOOoXxEeukZpkZzKPhHzTFhGgMmOWbYnNurRutlLTUsHyYHHhhhAELlMmeCchHmMSsaoDuUqwdlDdUuLVvpPDNDdRbBrnVnkKBEdHLZzeNnEGgjdDJfvtOnOcuUfFCYyBbLJXtnNtTXxUVvEeFNHhXWPTtNVvPWwexSsjDdJaWwaAAXlZjJPpYyORrmKkMojuZzUJxXgcCGOodDJUuqeEQRSMmeEMGrWwRgmsIihHSKkFfKqpPQkpRqLlwSeEWfpPUudDFwEeDdpSpxXPwjDkKdmRrEiIlzgNBexXEbvUPfCcJjfDiIWwBbOoHhxuMSsTDPpdxrAaAYyxHWwxqOoQHzZheEXXNnjXcCtncCOoFDdgGfCoYvVgGjaOobMmQzZqlRroObXsVkKvgVvuMmUaAGMmwUuNnJdKkDoOezZgGEwzcCFiZxhdDHIrRiIKClLcohHZzfFxqauUNcMhZzVVvvVzfFUoOvVjwWJuGgtTQqqXDPnNpZiIyWwnbBTtAaysttTThHYfwWFyCPpMfiyYIBmMIcCiEHiOnmgcaEtTeBbWwRxXtyleEHhLEeYuUHhDhGgHEoOYRGAagKpPmMldDRSAaZMWuEPpeeeEGguUbBIieEKLOOWwWPlaALMVvmoAwBbWGghGfRrFRRrbJjBrfCYjJrgGRamMgUoOuGAeDPEegLZtTzKoOkcCJVxXvWwTcCiIiCiIcrRLGglFLlPpfFJjdDFQqXnfFNxfFbUuKkaJjoOsPpSQqxXcPjQqJaBbgGWwAyfFYsACcwvVapPAJIijWAaWQqYywceEBiIxxXSLshwxaAwcoOCIiWXWqMmQsIiLkKQqlosgGzZYySSUJjusvqIldBtTUiIZAavVXBbtTgKkGrRbomMNdJjaADtYqvVjJQhRrxXuGgtGwWXAsSasSOozWwZlPpLsSxXNBbnSsUuEeCctdDTCnNckFOoHhoOYyCcUuoyYUuuUmCcMQyvVLnBbNtKqrRQkTJjNnlskKSWwDdYnMZzsSFeNnEOoKrRkJjcAavVnOGgYyymMYNnZevHxXQWQqwqhJjLlWMFfmzgGZDPTtHhvlLGMmTUufpJjXSslZzQcFcOGgtTRYoOCcCcjHhFNqQnflIZqdDZcCzZzusSUfRSbabAaBAAaZzBWCcCIicwJjNiIgGcCnTbeEBcCbBMqQmuUBbIKkoHnNhHhlYyLOieEwWVvdDxuYQqeiFfIwjJWsSjJjcHoOaPpuuUefIiRrFlLceEFkKfOoHVTYRrytxXlfDeEvrRLrREefFAaQqzFfCcZLJjNnnNlPRGgTCctqvZZdqQPpCPCcjoOVvJOTtoVvFMmfzZpjxXJlLQqEuUsSDeEnNdXxeHhkFfKVLlvwEedrRDaxXYyYyQWNFgGfnlgGZzLFAaYdmsSRrvJUujNnbnNAakxLlhHXiIgRrITtMTtTtmNwWUBbYyOvVrtTRfGgwFfqUSsuWSraAQqRsqrRQLlyYvVTzZFnjJPKkpKwPmMQNnqpTwfxXFWtPEeSpdQUQLHhDdlqZbqzFfCcZEJjeTgGmBbXxMaAtRrKeBcCKktTUuRrRIikKKiIRrRrfFhjuUDNyYnNnYEexXyYDdDDdGpPldhHScCsPnNaAvViIwWpNnIiDcCNUuDsSMmdeTeEttQTtqhVvrRHIinXxZzsSNBbnUVvVFfNnvfhHGgFkKuecCEvAaVjJCcuoCcOamHjJPpqRrRrGgQhKJjWwfFXxFfrJrlLOHhLGgBbNnTtPuUpDdbzkWwNnLxXikUupPrWKDdgFfGkwRDdsDdeLNEemaAukzZYypPugGUuteEfFQfaAnNYyJIcnCcvVNzQiINnnRrNqfNnFuUFicCopNLlnhHPOeEICcJlLLljwsSWfSsaQqAQKVvVvLlRlWFBsFMmRbFfCJeEuUjPnNpaAxXBRrAabBbaABiIfFjJCwaAqpEePHwEeGgeEWhPbgGRrdKetsSxsSgVLlvqBbQGuUsStelLLcCQyYOorfFyLlYTsUulXGgPyYHhpbBLFftTeiIeHhEzZErRRPprdVcCnNvrRRfFtreErRgGOoRbBjQqHhEeMmJoOliIHhqQmgGOaoyYjJKkHnJYyWwlLdnNDNehpPHPdDkKpJoLlOjEpNnUuPNnRryYrRNgdDqSdDsjejvjdDJPhHpXxQqceECVfFlDdSsLSsmzvjWwlLkeEKfjJkKFNnzZnFflLaFfAKkZzOqQszdiIDaBmRryfnNzXxusSodEIiIiexhnNuUHrkKRzZrMcmfFiGOoCPmMpcclIBSVPpvshJmnNMAajgzZGprRjCcdlLUueEaAEeDDbPpleYyELBPQASaGjJHwWhbhVvHxWwXtTcCzrRZwWMmwWUugrRpIiAaurKkLzZLlqrNgkRrRjulAUuPplLaFfqRrQYfFovVeECUuKwDmMAaMmdWSsFSszsSpPZGwgHhmcCyYxXlVjJJjvLGgNvVnfFMmrRIhxXHaQBsSonNyYUuHhoOzGgZzfFKgFRlxUuLlcCXtyHhYmnhJIIOoXHhzZrRfqNaViISsqudDTMvVXMmxMIiKkccOiIoCRmNaQqMmzZxyYXDWwSsREnNevCQqgCcuMmUhHcCUaALluGJjMbGgBjLqMmQfFsYRmMryudamMADIkKlLPpivVUSlsJjcCVrRtTrOoRkEeiIWIiNnHhlLUbxXBaNNnTtnAqQvVDdBbvVBbAaugGdDCkTtAabBKcsknNKEZIicCLEelHhJjNnZExXoOeybBjJkxXKOnyYctVvUhvWkdDlLWQMCcqJTtjEfFeQiIDdyYQsSeRrxXqmMQyYBbEmMJWwpPtTVzZwIBZgGyYLlzDdDxlLNmWwAbBXxKkaRkKZzlBboOPGgpOpPokKaEeOxPZzwWVfnhwLlWtxXTMWwdszekmMKtbIiewWHsSsSNnsSHhpvVUulFfLMmgyXxUXxZmMcCLBtTkVvKImrRMoOqirRIBbmzZQgGuAEeeMNnbBAaaAbiIBmLTtgGlQqHpPhdEOTtdDazXTtxDyXxYdJuUpPUujiIrRJjZWouUQqfoOFfcCFdDoOOIJjmMqQiIWwDdPpPoOBbpLEGiIgelKsSkRZzJjbBrjjFfJOnNgVvyYVvmMHhhHEaAePpGmfFnRNQqwWWwnLhOoHIvVgeEhHImMNFfEKkepKkPgGGgTEetQqwsSDCcnhLlHoOGdTtDgEerXxRpPSsOQfFEemMsWwgTtOkKozeTKrmMRlxXLPphHeEkLDKTtnFfNkBbSsFfzUuqQmwWoOyzZYMYDQqNnNnFildnNQqqoOQVVvGgvifFImMYyCuUANTtnNnjJuXxqFfRrQPhHpUDdDMmJuEsScVOLdDWwkXosaDmMEsdSsDwqacCAQVgGLIbBiKSsklqQIVpPvbByYinzZNiIuKpPkDdDdRrzZKkNZMmDuUEedPptefFcCEgnNGYyhHuUutTTtUTwAwXxWfQqFaMcCmwWIyYDubKkBqQUnNdNaAUuEgGeuzZtTiIrzZRHiIDdbBeEpzKuQqUxFfXWvwWVVvsSoAmcRrLIillLUgGuDdgGUWKkRKUfFuBbviIVkrqmEeEeNZzjKkJDOoAlhHlLLaISxXmMsYyuRrnoONORXtTudDUMdXxzZDXNnxrLlRmsSzZsrRWFYyxXNrkIiGaHAVEeNnsSuaYHkKFfvVbAIiSsIiaaABoOZzyqdwWDtSBbyTkaAQqzZKpuTTiOoiIrRIveulLxRwMmWCcJjEeJSsSNnGpPtTgyJjYZvcCKkKkvdDOoVIYyrRPpcjMmJrRbBnbhPXxpYyZzIvgVvYOoGsbxbBnNXBpPaAPUuFTOoiItJzZMnNiWsoTtGdDidDITtxiIPpQqgDdJjbBGKYxXawWzZlUYyuLywWWjJreFfsmMvVVypdDvVvVnNPYKklFfPvVpeErEnNpPyuWwBbUGgoJjcChVPpjJJjvyYtxIuMmNkGgLlKnUmHhMBuUwWoOWwbUfiRrFfIFqsnNSvzZayYAVUuMmLlPGYyIzZKkigrRhzTtZzZVHhJsUuSJrFUufJTtCeEczXxNnrRZAhntTRrEeLlQqIiunNwWPpFKfmMSoOsXhHxJjwWtIAXlLDlYyLJkKjYtTRkKTwCXxhhsTtEeMFKkRibHhBrVIivkkjVvYySsAaJKnsSsTrRtUBlZzaALyYTZfFoOzHYFfCjAaqQNfFnEvVeOotTzRjJCcjJrZjyDDddMmYgGKkIiLiIKkHgGhZzcJjlsSsSmMwWtGuUgrRTEbBkKogGOefFHVvYyGgSiIlWwLqBbQsTAeEwWMjJCciIwWEecCdjJhBCcbkyYVFaAxKkXTjJNnWwLcNNpzwWZzZQqDfFkKcCRLmMlrblLiGjdDLwWlJSjJGgbyYuBYyMmEeQqyYbgGhoYtsNnhHJVDQqjBrRbIiJMoSkKsEmMeksSPtfmSsUMmuMKyRzZrTtAVvgGiIamMANnauUHhJiMmIoOjJHhuyYTgjJGtmZGgTtMwvVmMGgzAaqQnoONzwulekKCcEQqFfiIexXWAaNnwqQiIxYyXZzrRdfWPIiptTBDciwWIYyCEeoOFfraAnQqNRbBJBbnNTyYoOoaAdDaAVhHvmMOKkfFtWwvFfVIigegyYdGgDHTtNBbnaAPpWzZDdQqwUukKYyJjhibBJjIQiIqrRHhRrXwWxNhHEeLqQrCcCcPLlvVFfpOqaAQNnjZkKnQASGgssSCcjjiIbNHhnBJOxVwWvcCQqsSWwmnNfFMbBDdXgGRVvRrhoOHroxuPpQMJjJURrqQucRrCuUuaAKLLllYPpykEVveDOodkCcTOoCctKcCQPpqXxbIiuUUAawWcCgLuUlgGcCMXCcWldIvmMSlLsIiObvVBsSYtfFNnRYyrPpyYTtTSsyeJjUuEoLlyCcrRJPLlpjqgAfFaWOowBXQyYqxXxynNtTfFuUOLOoEeYylNnWwmMRvOkKwJTtjTLsXIpPigyYGTtxRpWwJjsSxXWXxqQdgGDQMgGmVvovVOwWwWSHmhngGvJyYfFjQqFeheQqTtbBEHEfTMYCcyRLlbrRBVvwyKFcChRBbZcHhCkkKKxgGjJXYybBxbBCEecLLRdvVDYjJhpBwbBrTtRWeENnbOodAaDPtTpBmMpHNTtnbrgSuzZvVLjJWXxwxXFfxXKmSswMCSsSXxBbsnNpZzeEPXxciIJjLlFVvflLmMstsSfTtFTwWSDdmMLlNDdnVsJjaAaASPCcMpPmXzZnMmNxFvVIzxXdDrZupPhHUzbBUXjJbBxhxXEIumMRrUiemMnNjCcGgJYyUuAaUIhHqQiUupPcmMCopAAaaUuPOpPugxOoKkXdeOokKEDgstTSaAHhITtKkiBHhQIidDJuUpXMtivVIJjqQDdTtTdEeDqpPQtTAUxbZMmAaUeEQquVvzkbBKMxtTXmAgGafRPprRSFfsbGggGMRJjVvrmBpuUUJjiAadDJjgGvybBYMwWmyYYyMHzZxFfsSXuUzrRMhHmgNnBbzwWbKkBcCZeEOoIrSsOAapEeXXxepPsSnuPpUNVvgGPtTptTvVEewdDWYyJVvTtsfFSfFjRAarLlxXLXxYABbayliIqQgUuGdDcCXHhXxxXvOoVjJDdbNtTJjyyjIvVibBsSxlkKxRrXoHhONnoSsdgGSsaABbcCDzZSZzsAaNnREermMKkdgGgUvViexXEdmMDZdDmxXKkRsSBbrMmGOUuCcogohHzZBhhHHmOoMlLWBbwWSsjJweXxEIaAiIOoiCcVvGgybBkhHKRrYSskoOKkpPCcrAaCcZzjZEeRrdDdNmMnTdDuUtjWwJDiINAaWwDzLlZdcCHPphNTGgtvpPMDdXxeEmFfVXohHOzwWZgGpPxyfLtTZzAaSsSgGsYyriIReMmEjdDGrRFJhHjYyoOfLlRrxXgJZZKGyDJjdvBbiIZzCcbBzZVxBhHfFPbBPtTtTuUPppZhHUuEekKzOhomiIYbByMaBbaAALlNnIoOiMmeCcEmETSstesSMEMSsmMuUzLlEtLZzETtNnlLejJDdlTaAsNnYyiDdIzZZzitqeEdDKLPpOjJolLlzHWwHhlLrlLqNnQwWRSRbplLHhPoJjOBzZkwWKyVvRIiiIrYrRgLlGcCcbdDBCuUmMrmLljckRXxTtrQKLlMmnKkNqAamuUMUuFdDLlfUuyhHqQbBVvpPYlqQYyttTdVvDTCcFfwZzCcIkKeEudMmlLDrmxMmXcCiIMRaNnRrdDQTtJPzvVfFvVEeSHdeEDhCvVctAaTCcwWaAsAaWsTLuTeEfFQqVKkvpPzZLsSbBdsSeEmaAkKdDMykKwWYMmrRGaAgnNaAvVfYwuUWtQqeNnETlcCLzwFbBfXqUugGQxyYoOWZEeygGnbyMmGzZulLJaAjfFbjJnwWBbLlQvVbNnjJrRSsnKfFkzZhHFfrCelLEpPnNrRcIiBbNoObtTrZnNzRSspPXxkKMvwWVoOmhHlLPbBplPpyyYYNnjJLkKiITKXFbBFfcMmCNnfxLlkWwOwWoBhHbtUgpPCxYyXMmcVvVvEebhAhHUKkktTtTKuPpTtzyTzZtYyrCcGZzhHLzZrRFfHpPgLlGhEYlLNnAayDnNGvPpxzZtvVkfFKnNnNZziItcFvViMmINQqkRIirmMdJFfjUIiugGDXxTNntOoCcfFfQqlbBfKkPpFLJjAGgKfFnNmMkEeaIibRrfFBFPfFjuKkUuLYynNgGTtlvxXnYyNiIlLVwWUQVvSoOoOstTEjgSsjJGAaUuJIWUuwihXfFWHhJKTwhHaAhPjJpfHhxhHNnNdDBbxXnCXxGgcZzBbXAaFJjiIlbBIiMtTTtUyYbtCxXPpvVjzZOJEMFfmewdDRrlLWGgwMmGcCggGWIiwWbJsSLlzZCcjkKFfFbBrRujJUPpfGzXxZyYgBjiIoKkJbwWBCVvccCcCcGgFWHfFhsSwZzkKkDdbBKRMLlmMuUdDFfUuUyYrNFXmMxuUzZXxfBTfFPcCUJjwWlQAazZqPpnKiInNgmMGJjhHOKkoHBSsTsnaANRyLlYroOfTtcCFQqDEegdDGXxmMhvVsSDaJjHhlvVLANnWwWjbBbBaAckDcCdKZWwhHuPpRAaoOrCcPpiIOgGoeZzEVvvVoOhdDoMmOPcCgGeEphHHddDDdOIjJnmbGeiiIIFfEgZkyYKznDVnNvZzyYBbtILpPliEesSsjJSYnKRrkFfZzNLloCIiYywWcsSpexXEJjBbgGWGgwKyzZjUlLfFuEeJjVpPvHhxXJYxXmMzHhZXxhuEJBbrRvVvOobBVLlhunUuNAapPdDFPpMPpKYykdDVYoOypKWZzwhHkZfXDdxtsiIjJsSqQFfSQxKkQHhqXZAIiaTtzsojJOoObBfFSkkKhcCqQHIzKhHtTEerZzlIceEbBYysSAaTHIihtTtTtyYcCRBsSbrCiIDitTIWwditaAuUQvVqtTpPJaAjRiGgeEIGgryFjtTJnNjJuUlpPNkKdDnCcvVLrRFfaPpAfDMmQqdrjJjJGgRkKTSsVvVvssSStaAYVQEQdDqeEeAaIvViaIiuKkXxuUkZzKrRyYUuwWUwWAJjRrBbeInNiEVvYysQZzGgIiqAawWNHsShmEBbypPYukKUePpDdGIiYyVQOghLlrRyYHkKgVkKhHFBbyVWwvYmnNMgGBbfBwuhHUWVFbBYyuUzjqQJZhHzZiUuIflZzxXZzykKYjJLkKbsTkshHSVvLlvVKIfFiBbQTvIiVtxXHZzGgkKwWVhXxxBLliITtbgGIfFfFiZzAgnNGCcjJlLacCjSsRrJrRgaAGDpPdXdDeEpPVOoNnjJgGFBZmlnNsSLMXtTOoEQwWqXxSsexEupPUeHhzSseEHRrDQcCnNZTHhtZggHhGGzahHAoONnEeubBbBgUuGxuUFfXpGgPjJUoOgGwqQObbBBoGgBkKbalLZhHzAAPgGyYxkKwWBbAQqaCcxXIiYyNnraABbRgGLlXvVxIYyfeIiEFcLlCrRoOFfGgZTYytEelMmzZoOiIuUMmOomMLPVvaAMmMmphHBbiIOEdDqQCcRreLlNnXxvVUuoBbiIbmMzZBVFnNISiIaEeRrACcQqjJxXYNgGnEeCcFqQfHiIUAHhaAasSbiIBXfFnYyNeEEuUePhHzZpAtTaBbhHmWwEYyeuCYCcMmWryVvwWYRLlshHSsSfTCcXOoFfXxoOYyBrwWmWwMWhCcPpHDnNAaiLlAanNPpIJjdhOovQOoqDPDOoMoZDdzONnmdlzjJZjJjJquUQjJfFAaFfLcvDdVkKCuRrkGmMMmRrFfgKvVTWwCQqctyoOYDdMZzGgmCcifFSsIaeKSSsmMVvSsQvpPlLVEeKCgGCBbcckUuEerGgeIiCcERBbJjWwTtyYvVuUDdbkKaIdsSDiZzlLUuARrmDWuUFYyfeEwYynnNNNUdDuaAeEnLlzaaAIiAaAgGdjJmzxUuXqeEYyiIoOQTLliItkKepVvGYygYyLlPEuUiJjyYUoOZOozWwsSdDhHtTutpPBbZznYEeyFZLlzqvVQfrKkRSKksSiIQTtHhWwjJQqqfFuUhHSsQqUuYysTpPKkrRyYzbBDoOdZmAqQRraMgRrGdDiIOoghHHlLdDCRrcPIiphiIqQXbYnoONyBGgaLwWlAsaADdDdSTBbDdUHNvVnYyeEJjhxXdDDMmGgeEoSsOdxDyYVvdqQFfrTRrbxXBtRIiXlzZLjBbyYJUJFfBbBbaAjxsSNnqQMnQqwWNSsBbcCpPQLlwWuzZOtTtTrRGgoqiIQUeEoQqOgHhPpoOEeGHYLVgGnNvfFCcOolpPQqXxyaHhAkIjJiIiBtWwTXOFfodDxqQtaATbSEedGgcCDHhsKhhHGnoONgMmlPpLIYyivVLlLlmMVvsIiSfcCFRrivVNneSsMmOQqopfFacCAAaPDOoFVvfwWRrdEIadDBJjbYBbyAlKkmLcCsSQNTkKtqQnqlUwfFWrEeROvDMmIiIihHaAaKkEeAdVZzmMtzZDkKaAdTlWwLbBIbBMmUubBdDFfSsYNnCaYyBbSsuuUztTZNnUhHAcygGauUUuAamMgGUuASsuhHMmmMqQmMCcYxythHHhuUCqQcDdWyYwTmMtKcyTUjJzZjmMJurnNCvVOobBcKkZziDdYyCcfFcCSAGgEeBbaNnosSOhHwkKWoODdoaAOnNsIRVJjvQIEeiMOoxRrXeAabBEOLlosSpPmXxNnVCcAaqWxXwXxXdDYyZDdFfarReEACczYAaIiBPphHMyYiILlBuUbmYylkKaRrfFADNngGMTtmPDeEdyQLcCljJqXzZyYpPrgGRHhLlNnxaAQqYIixXxXKJjkZqOopPQhHrdCcDXxRMmqkHhKQZWwzKkVvzidDIdTtDKwWBJjbrhmMZmXxOoMzgGyYHMFKkfaANnmRrRkMpPmmkoOKMMDuUddEmMZzYyeDnSeEstBWwbFfTXsSwqQzZmmMMWmdDTtMrRnCcEeNxXVvkoOwfFWVcCvKtTxFgGVoOMmvmMMmeEKkOofoGgOYYyyIimMrRWkKAsLlSlhUuHIiLbBlOoqIiyGgYAqQaRrrokKOOWwxXoDeEdrRkNnEeztTZzzZZPprRFmMFfxlLXAFmMfmLlcCMaIglLGinNBmlLkKMIibBbfFrRqQAawlLWfXbBxefDoOHhtpHhPTdFAsSaOzZooOElLRrRrKIimMCcuUmNxXkKnCcbFbBeIOoxJjLGWwgNYyAZiIXxXxGgzqQaXIixeEcCcbBCEwRgGrLliIWwWRreHpPhcCIiIOohHQxXqiHhgGNSsLfFxXlLEesSMrRheEHRrmkKbBaApPOoxXSsAWwaPjcCAoOfOoFiUHhuUunyYNIpPaJYybQCXnNxcXxqRBbzZIiKkdDrADdaspXxPMGgmJDOodjObRGJjgzzZZrRwWZOozKkqQrmsStEewzZWRreETLlMvVGgWwFfRrIhmMHioCzZuURhIiHNnrjaABbjowWOJDdFeEfLlJUuuYyZzbBmhbBHMUuwWUyYiMLlmIFfckKeoeEHhOlLEZzvkKmMVIiPrRcndDNCQwWcCPpIAaimuUgGiIMSsmMKkNnyUuHhYqHhVvGyYgLlfvVFPpkKmTtcLdxXDlYyjJCMtTQXZbhHkKOXxgvrRVGoBQNAaVvnqGIiFfgMNiIxXmouUOMZzBUuXxbNnlLYyuEeUnVGgGgvBbuUswupPUWSYyPhHSspQUuTtqKYyqOfFoDdbBsSQcDdCPHhpRCcryYcCkIPpPfZzFDdXxEepZWwwWEHhqQezMmYyyHhYWwXIixgyYGQiPpDdIIiqgGwhHWRrDdiwWXoOxSslKkLxpOotTbUuBDvJjVWNnwdmMPeERYyyYLqQMmlvLlMmVhHBQqbIihnNbBMRryYGjJgGgquKkUQmuUHbBpCgGcVZEeGgzvPpOovVYGOogIiCnYyNlTtdDTJGgeEjbBtLQYRrypoOPVvnkKWwNsSaAqcNnNkKOcConyPsSdDrYCcTtyhHFmMfYyRvHhVzZcCJjyYnNuUXxDLmMlJmMjdeQAavuUVNnqNSsgGxXDJjvOoFfWwiSsxXZzQSssSUuNnqdtTDRWwrpPGgdmMDIIiYQquRrmiIeBbgnNGFQqEoOeCcRrcCffFjJbBjJEvVVvTtMyYYcCaAaAyHrRhGgCcmMmqQMkKKkJOoeXxAaxXOaAotTHhEnNZzRrrRgGDJjnNdaAjJNPpngvtTViIcCAadLlDkKPpQWwPpyYqZqQqQDiIdjtTJzuqLlRrQBbtTUrRGKwBbWkjIiwfFWFfMmXxrxVvXRcCnMmVvVsScCyYXxHrRMmiIBbhvNMmGgZPpzNnEpNncmMCPopPOjCQqcJpPsSGHhkKgBbXcCQJjqcSsCZcCdDzGgxXFAAatTVvaZSszCcgYzZjdDkKnNJXIixHLlUJjuyYhgGkKmMsWwSgGHhyYKkIpPiIicCbDdBTtqQCSnvVNsdKkDZzKPpkcoOmVVGgOGgKkovJjHplLuUPhwWBbdDDdvVUuvQqtwWTeEgGMrRlLGRZzrgmtTHhMJjJxXWSsmMWwHSkKNKknsJjtMmFfThDdBbeEwnNjyGgYSsCcoOIiedOoprjJXxRPYyPpAaRUurDxnNiIXlPpUJjuIizLlbBZyjJSsYHhIieQqEsSWwNYynwWqQbBSsnNBbsSRNnrHhYkKyKktTGgnNYyFQqfsSOoLxgGXckeEbBCcPJjTtpfFKBbBsSZzbVAakKXxpPmAaMzhHghHGKkZrRvgXxhHGJjdYyDoOKRnNrkCcaACMPpWwaAmSjJuUXDdxpdBbVvDsSjJicCnBbNIMmiIXbJMmjGJjgBTmMWwtTSsvNlLnDEeEWwedVngGQUuzZqNWAazZCinNILlcwyxCcXYKkeExlLXjJhEeGgEeYyHZOozlLS";