advent-of-code

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

day_05_1.zig (54401B)


      1 const std = @import("std");
      2 const debug = std.debug;
      3 const fmt = std.fmt;
      4 const mem = std.mem;
      5 
      6 const ascii_case_offset: i32 = 'a' - 'A';
      7 const destroyed_signifier: u8 = '*';
      8 
      9 pub fn main() !void {
     10     var allocator = &std.heap.DirectAllocator.init().allocator;
     11     var result = try react(allocator, input_polymer);
     12     debug.assert(result.len == 9704);
     13     debug.warn("05-1 {}\n", result.len);
     14 }
     15 
     16 fn react(allocator: *mem.Allocator, polymer: []const u8) ![]const u8 {
     17     var p = try allocator.alloc(u8, polymer.len);
     18     mem.copy(u8, p, polymer);
     19 
     20     var last_len: usize = p.len + 1;
     21     while (p.len < last_len) {
     22         //debug.warn("{}\n", p);
     23         last_len = p.len;
     24         for (p) |*unit, i| {
     25             if (i + 1 < p.len) {
     26                 var next_unit = p[i + 1];
     27                 if (@intCast(i32, unit.*) - @intCast(i32, next_unit) == ascii_case_offset or
     28                     @intCast(i32, unit.*) - @intCast(i32, next_unit) == -ascii_case_offset) {
     29                     unit.* = destroyed_signifier;
     30                     p[i + 1] = destroyed_signifier;
     31                     p = try shrink(allocator, p);
     32                     break;
     33                 }
     34             }
     35         }
     36         if (p.len == 0) {
     37             return p;
     38         }
     39     }
     40     return p;
     41 }
     42 
     43 fn shrink(allocator: *mem.Allocator, reacted_polymer: []const u8) ![]u8 {
     44     //debug.warn("{}\n", reacted_polymer);
     45     var unit_count: usize = 0;
     46     for (reacted_polymer) |unit| {
     47         if (unit != destroyed_signifier) {
     48             unit_count += 1;
     49         }
     50     }
     51 
     52     if (unit_count == 0) {
     53         return "";
     54     }
     55 
     56     var product = try allocator.alloc(u8, unit_count);
     57     var product_i: usize = 0;
     58     for (reacted_polymer) |unit| {
     59         debug.assert(product_i < product.len);
     60         if (unit != destroyed_signifier) {
     61             product[product_i] = unit;
     62             product_i += 1;
     63         }
     64     }
     65     return product;
     66 }
     67 
     68 test "react" {
     69     var allocator = &std.heap.DirectAllocator.init().allocator;
     70     debug.assert(mem.eql(u8, "", try react(allocator, "aA")));
     71     debug.assert(mem.eql(u8, "", try react(allocator, "abBA")));
     72     debug.assert(mem.eql(u8, "abAB", try react(allocator, "abAB")));
     73     debug.assert(mem.eql(u8, "aabAAB", try react(allocator, "aabAAB")));
     74     debug.assert(mem.eql(u8, "dabCBAcaDA", try react(allocator, "dabAcCaCBAcCcaDA")));
     75     debug.assert(mem.eql(u8, "dabCBAcaD", try react(allocator, "dabAcCaCBAcCcaD")));
     76 }
     77 
     78 pub fn join_strings(allocator: *mem.Allocator, string1: []const u8, string2: []const u8) ![]u8 {
     79     var new_len: usize = string1.len + string2.len;
     80     const buf = try allocator.alloc(u8, new_len);
     81     errdefer allocator.free(buf);
     82 
     83     var buf_index: usize = 0;
     84     mem.copy(u8, buf[buf_index..], string1);
     85     buf_index += string1.len;
     86     mem.copy(u8, buf[buf_index..], string2);
     87 
     88     return buf;
     89 }
     90 
     91 // Oww my stack!!!
     92 fn react_recursive(allocator: *mem.Allocator, polymer: []const u8) []const u8 {
     93     //debug.warn("{}\n", polymer);
     94     for (polymer) |unit, i| {
     95         if (i + 1 < polymer.len) {
     96             var next_unit = polymer[i + 1];
     97             //debug.warn("{c}>>{c}\n", unit, next_unit);
     98             if (@intCast(i32, unit) - @intCast(i32, next_unit) == ascii_case_offset or @intCast(i32, unit) - @intCast(i32, next_unit) == -ascii_case_offset) {
     99                 //debug.warn("{c} *** {c}\n", unit, next_unit);
    100                 var result_polymer = join_strings(allocator, polymer[0..i], polymer[i + 2..]) catch unreachable;
    101                 //defer allocator.free(result_polymer);
    102                 var new_stack = allocator.alloc(u8, 100000) catch unreachable;
    103                 defer allocator.free(new_stack);
    104                 return @newStackCall(new_stack, react_recursive, allocator, result_polymer);
    105             }
    106         }
    107     }
    108     return polymer;
    109 }
    110 
    111 test "react recursive" {
    112     var allocator = &std.heap.DirectAllocator.init().allocator;
    113     debug.assert(mem.eql(u8, "", react_recursive(allocator, "aA")));
    114     debug.assert(mem.eql(u8, "", react_recursive(allocator, "abBA")));
    115     debug.assert(mem.eql(u8, "abAB", react_recursive(allocator, "abAB")));
    116     debug.assert(mem.eql(u8, "aabAAB", react_recursive(allocator, "aabAAB")));
    117     debug.assert(mem.eql(u8, "dabCBAcaDA", react_recursive(allocator, "dabAcCaCBAcCcaDA")));
    118     debug.assert(mem.eql(u8, "dabCBAcaD", react_recursive(allocator, "dabAcCaCBAcCcaD")));
    119 }
    120 
    121 const input_polymer = "OeIiESsoMRtTjbBJYyTtrjJmeEPNliILnzEeZcCzYyZdevVEgGikKIfreEEeRkKFDpKkALlLlaRruUsJjKiIkmMIiGguEeKkdDaDduUXxAPpRrUJjLlNEecCntZzrRfHhFXxdiISslLoeEHhTtxXRrSsOxvVXDxeqQifFxXIEFfcCXOobvVqQdDiIiIGWwSsgZzBxvVNDdwWnYyzZPfFoMgXxUuGOrRoAameEotTeyYEHhHlLhaAOnNeEmMlLJjmMGgoOfFMlLmOGgGHhUugsiIwlLpjJPWMycCgGYozZOmzgIiQJpPjqGZrRuUhHIidEgGeCcwWDXmMMmWwRHTtzZhrGgxkxXKkwWKuUAOoaEvVyWwaGgkVvfFKmMAxXGStbBTsKkSwkEeKWsKksSpkKPfFbOoBQhHqQJjqwTtsSWBmMBKkbbDdEeKjJZzYeEyMOoSsmkgGcNnCyGgeEYTtqQyQqkKQIiqBbYfheEHkeHhbBNnWwEuUVvCcAavViItTKSssyYSFfxFfCiIlqqQQJjLdQxXoOiIZzqzeGgEZhuUjJadDtTAWwHDYyFmMfayYJjJjPpiIArmMRvVsrRSjQPpqzrRDdZJcYyhHELleQMmfFVdhHaAmMDqGgQhHpPPppPvlLKkMmbBZmMCXxciIzosSOCcSsWKkwAwWaDiIMOomdoYyLlnNmMOHhaDdcQqCSsTbBtAqeSsdDulLCcgZzGqQUVyYvsTtNnNIinwSsWqQgGiUudFTtfDjWwJfFeqQkZzHhKEIqjJAaQSUyVwpBbDdvVkKPRGgQsSuUqrHhWrRIidDdWwnBbQRrqYiIzZMmpPtFfjJmMLlTtSZzsTnNyZeEHhgGUuzudDsIiSpPUWwEKkQquvVeqKkQKkTtEUdDeEUlLubBQqLllljJgGsSsSUugGfpPFLLjWzZZFfzDVvdaAnNDdnNWwwYyJWyYfFrqQRwWHhiISsSsjdDJhHjxXxXFjODdjJoJfJjTtYMmyJhHotTOPQbBpPqqQpjaKkEeAvDdVljJLbfFBQoOqJWwwTtXaAxrIiUuXFJjfzZmIiXZPpzxPlLpUudfFDZfFZzqQPpxXCIicKkUNnuzZMYyNnBbmQRrqDdPptTzFfTaAkSsVMSsCcmvKxXvVtzVvmsSbBMVvfTeEFfcyYEeHhTtCgRFfrsSGtXxscCSjJaAFLFflOoBRHmMhrbMmxrxXTtRrRULmMlPpNnujeEOnruURNrRQqojJpAkKauUvVcCfyYDdyYFNnPIiBbjJPpVfFisKjsSJoOOokWwSFfhlLHDjJWwyYPpMoObBmoVvOsMmSjJyYddDIbBvyYkKGSsjJagGrRAgHhYyszJjZSaAIiJqpppPZzuUPCcyEAaeJjFfiIYSIisnNSNMmnOoiIEjJMmeIisOixXIWwRmMrfFxXpMmzZPcGgHhClYyLTtmMyYdLoxXOGgDdeECAlLKOokKkaNnAaTtcuUCLdDlZrRzclBbDcaTtMmcIiCAtTiIOoOoDpgGPEedprCcRPATtRoOHhraCcIQqmLCclMUuwZzEeWlLcPphHesSeERrEJaAjtLvVlToCcOCihRrHCcwyYWjJCcCVvbBDdBjJTtoSJjBbjJHhqQBDYydYyTtNnNkKpIWwhHiHhPieERrGgIPpuUbBnZzFLlcafFxkKXaAhkKaAHxqQXUuACTteEUufpPRUuZzrplVKkGgLrcCRCclLzZtTlZzisSfRrqQvVFIbBZzYyIiOoQTJjVvtPpuUAaqOoPpuPpMGgmiRrIUPpLcCjJVvlxXFfdDAaBbvfFiIoOJoOKkjZZzWwfPpFUuzwWiUuIRzZrjsDdSXxYAaWwyJJkKjYBbbBiIyrREPmSsMpPpenTtNzZnnFflDdjJLlTtkuQqUsqQSKzZknNbBeEKXMAwWamMdDmWwiuUqQEfBxOosShHsSkKxXXFdDdDFfZzfFFfhHTtSoOfFslLGeEYrDdRyvVXxgfLlyYwcEeIiCWMZzZzZzLlpPCcbZzEeBSXxsdDMsSdDmBhHhHbAbbBGgPIipBaXxkqtTQbBlOoLdDKcGgCJjRrxXRhcCHQWwakKbVvBbBAenNEJMtTzZQqmjLkKJjsSYyjJGguIiUayYwnNlLNsezZESNnaAmjhHoOLlJVvpdLzZqPpmMMnNmZzvEeaAVQWwfFcCNnjLQqlCcJNnbLHhluULlyBKGgkbWiIzXxFfQquUZCcDdOPpoEewqQKkxJjKSJjmMVrRjJvsqDwWdQeEkUuQXxviIqiIGoODdgdDFfPpXTtwWwWxjJsZzSkKHhlRrLjJtrRHSNoOnsiuUIqQhNRrnqQjJYCRrNSsnAaGdDgkTLlKnNnNxjJXyYiIaAkYYrRyEAamIiMwWeKkqQIvgGViXqFfZzQDdcTWPpwYytiICPpXEexhHYyWwcKkCGRrgPpHhfCdDsSJjIifFcFyUCTtcrRgjPpJjTtJUuGiYycCGQqitTIeEnNguUcChHMmoylGgJjLEdDHheBjJbuUlLNnubrFfRjJBjJUbkFqgGQfKBOoJjMmMkKcCmSdDWweEhHstTYxXjJuhHSyYsMiIcCNntKkTzHhWwZvjJFfVzCcgGZEeLUuaNnAqmtTgGpPpBbPXbBfFukGFfgTtxXNIgGinDdmMmMRrKDCcfFlLJvVjCcdtkKTnNUHhuDcCpPqQHkKFfhHhpPdgGkKuoJVOoMmFfXxvbzZBKkduUDjxXjJNnOtxVvBbkKGsnggGMmtTCceEBbGTQqtNFfXxKkStbBNprUvfFPpDdVVvutTDzVvFfLlvCcVZmMnNYySsoOGAagsSGkxXKgmMcCvVqQBbMmdcMmNnMmDNnRrRrHhAaIzZiWwdQRrpkiIKNnNnPnNuUYyqCpsCMmcIdUAzZazJjZuDUuJjZzNntTJjiPpSPbchHLxXVvVvBbEelCBOoRPTkKGDdgsrRSgJjbBrtTzmMIiZyYhHKnNkdeEDRGtTIvwWkKVuUZfPpFJjwWMoODVOoWwvZbnNiIBgGgGIidMByYlLUugGCfFgmMGcRlLKkrsuUlrRLSqskNPpULluhaAHnENnvcCEqQxXwWjlLJevTtVxDdHaLlWwADbBEedxXhXyyYLlYiINnBbGgBbkKVbBqFVvfQtTQXxCcdDwWqXmMxTtaAMzZoOufFUmAUEebOotBbTtlLsSTGYygaAsMmSnNBdDtTbBrnLlNRQqrIiQqMCcmRPpnNYbBylLIishTXxtGCsScgsSZzHstyYTSlLSoOzZAHhaiIAafFdDsjJSplLoOboOBdVOYyfdrRDFoUujJSMQqmsjJHQGgjJqnNQqvVwRCpPyYcNnDgGYydbvVxtoMMmQqZzKjJOohHkmnuUNpfFPuUnEeNvVUKfFkGwWgsLlSAeEauUucCOhlrRLHqQgGuUDoODdxmLlMwWXxXdjJFFfVvexXxXMmfFhDdBbSsBvVYyrRXhvVHdDxNaABmMbsSnKkWwnaANbkKHsuUSsShHEPpwnNezZlLlLEaATteyYYyQgGqhHVgGvBbToOyYsStHhEeTOotEyrRhHoOcQgGqYMmymqQMmIiMUMVJjjJAavBbeEoOtTxWwuhoOiInNyoOsiYRrxXyDnNqQGHUuhgdfIiaArRYyvzxoOXQCUucUHhuqOGgoHKkvtTVhoOivTtwWKgLlGkFfVXrRtTjweqQEWaAKkuUtTJEepyBbcCYoOwjJzPpZWwWdEeDgmMGFuUfatTmMWtTuNnUXxEeJjzqdhaALRrlbWwrsSgGfFRfvqsSxXtSKkHhRUurrofFORkKVqQvBAavcCbvwWGmiwWIZzAaMGkKleEdMSsmDLAdDasYQqyIeEixXBbxsSIitTXZzRrSorRMTtmqvhHBbOyDdtTqQYcCofiIFgPjEJuUjevVdNncCDJpXxDVrRvdJjyYJCsSnNcjqQMnnNRrSErResSlLtOoToOhHEelLqucCyYVvUHhvTCcaAnNLJjloODdLaARyYkZzRreNnEZuWwlTtPpLfZzFUiNnfFWwKYyqrRgGxXssNnSSfFUubiIBZzJKkXxjFhHfTaAsSFzPOozZUuvFcCfmfDdJjXBiIbHhBbcifFICxFfkKgGUOVCcvEeoSsbBbBHaAjaAHTtQqhqhHoOCcoOQiIeUBbzZHpPhHPpcCZziPpzZvVIpPZEezFeEfMlnNYyeOoLlETGgtLmZgGzfqQPpFjJjJsStuUTYNQqnybDdJZzjJjBhHzZkPpPRryeEqQYGgNMiImngGGcCNnqQgnNCcOyAZBbzvVLlTtaNaAWwGfFgGggGLlZzQqZzyYtTKZagGYyAzkvVnnNEewWOoTdJjovVcCQqYyOejJRrzZsEeSpsKkSytTaAYTzZtKJjxXzZAamMDvVdkPjJEIibBNtzZTEegGCaAcBbAGgGgaBuUGgMNiIcQqCiozZDuUvVuUMmeAaEBbWweEUEeMmMjJmTtoKkoOOoOzmMgGCJwgGLlSsQqlLfFTtdjOoJsSHdSSrRsrRtkcCrTaAgGtRHhEkKeKbhcCZzKkkXeExNumMULugGUNdDnuWwbkKaABDdeIiEvVpAanNjfFJtlBPpnNYynNbLbeETtnaRFfkKzZNnrFfTtAGgsSRXjJfFmMDDddxSiIaAsSCcstXxJeEjnNGgGgMmTRiIraoOsSdDHdDhJLljAuCcmzZrcCAalLPqQVveEfbBnNDFfdFvpPVpWbBwOoUusBbTtcUuCSfVoOGgvoOTFnNrRfaABAcCXxBbOzZyxXYocCaxgGDdiIMmXbKkEkKOoeCchOoHMQqmBEeuQvVqmLHWwOtToWtkZzBdDbVSLlshHhHWwsSvjGgwWwxHlLHhUPpuYVvrdDRySsVQqatTAvUubxXBuUfUVvuFfrhHMmpdDPRFeqMGgcChHmoOwWpPYyrRUucCDdhpPHJsSLlzZStTsnNHhpKhAahHHndrReuUEDgGwWfKnsSNzZkGBbghGgHhHaqQzZAgGEeSsCcCUuTxWwcCgGUuXTFlFfLfbBdDbSsBCcZRrzXEeSGgTtsVgmDzZdMOodYyMmnNuUZzeloOmMdHhtIiTDgqQcCcgGsSzeEZAaCCcJjhHSXxEKkenNdgGbPHhpBDjJKkvwWHhVsRarRAYZfZzDdFToOtacCHlLlLWLlwBGrvVcCXxRudDBHhnRNvIiVBvBbdDHxXUufFhTtVXxrRfNPWwpKknnKkNWwFQRrEeqqNqQLlzZBUdDgYsSSczZXxCsdDraAQTtquURtTBNFDsxXNnSRrwWlOoxXtBJqQMmjJjsSbeEUlMmzZQdDqsSuXkKEexiIGgUtTkKtSwCRFfVvrOocZzoCSsclLrRWwFfOSsDdvVZpLlhVvHUujWXxwlLwWRrpPEeUujJqphHPTtwWPpAUMmKkvVzZWwWyYFydDYBxXeEbfwiIRrKkTtOoiSsWHtTGNngsiQqvVIShLxXjJoOQKkCbBckLlkSssBbSKsSqaIimpPMiIqTtQALlKCcCcCJMRgbBGxXUiIursrRdDGgTthUSsuoOjMNnJmMjHkKZzhnNqQmJeEXTlLtxJjZHhJjTtksmCcyYMCcYySnNSsQTISevVvVnNZmeyoIiOYLOolSPgGpsqQEJkKjopPOWYyJjwkQqKtaAmMTJpPjeQqMmNnLkwYyMmLlpPqQWKlJjbBOLlfFHocCKkLlfFpbXvVfTpSsPUuUumMuUGAagtFvmMZzVdDEeYklLKtTRrsUuSgkzFFfKkfzPFfEeIiplFUuIcCijJLmMZzsSlvdDoOVFMFsSLSsFSRrsfvgGVlfmTtMSsFfBLlbtTtTqaAQfDdBbaArRYXxnDdFfOaAoqQnVvEOoeGgztEdDeFfTJQqzZRKHhbOMDdnxXNpPCqQjJnNqQczZzIcCuAaGDQfFqOEzZeLXJVUuvvlLVaAzNnZLlYYgPpGdDnBKkxkbBKrRCcBXxvVbFDdhXxyYDdHrupPURfIUkKudrQqwWrpuUQqaAPWwRRybBYDyYkKiExgGcCxXPoqQWpPwvVWwPpCuUckKTDdWwPptRPpiCcWwlLRrOoTtGaAZfFhmgiqLlQfFIUSlLdCcDsuuUGhHyYVfFjJmMgGrRIurRiNnIbBkKPpPEerIiAaiIjJFfCcKCcdDgGkaJjAIilLKkFfGcCSsZjmhHMoOJzoKkaAOgFKVvkBqstTSQnNXuwWEUuetTYFfyYyqQqQTtarmMRkgGKmxPjUuRrRrrRqbNnmtTKkMIkKVhHvsSNnTtipPuUUuJjKkEeGGrRZokKOUulLQfFqQqzsSxqQBLlbqQPpXHWmMwxXXxcClLLlWEeEewbHkKhBuhdOoVvpPDjelLRrEJHRRNHhnfFrwHhOobBWZifuUpAaBhHWwbVvPpvVwWvmaRrAuGgUeEWnNMwWebBEklFfUsqQkKlLGETtoOeyYRnNnNBbBhPWDdwcAayYCczZCbmMLlCjJcPHyaArYrjJRmMyPplpPlXzMIimOosSOlLoFfzZrfiIFucCUdDuUHfutTUkYWYwWmMyIinxXNrmbBdKkHTtjJhUuDtVNrRHMOoeEKkaJjAFfhsQveEViIqqiIwVvJjfFPrSyYxaAXlTtLLFfwWOoMmZzDdnMmOoNHZzhllUuPptzZpPWovSsVVjsSJrAjJmMmMfFaoYbaAnkKFCcfNGkaAKiDdIQYjzZzfFfFZJvVxHhjJXZzYyGgNnOIioRrAaWwVRrxXYyiDdDLyYwxYvVymGHAahyYtXxKkTUuuZzZzEcCLlbBedlLpPDMWwrRmtTleElLXxcNHhoOdDUunCuwWULrhHRBaAUsdDSjlLRrDdmlLMmfEeFqoOHhUtnNIiLlTANnwWaZbBzOoQzZqdoODwiIWQqXJAaKkEeFfNYynonNOtTvVAHLlhanNAazZdbBLbBlNnDUeEaAaWwnNAuUuaqGgNzXbBLlxJvViIoRiaANnxaAeEXInNlmMBUubeEWwGpPgnNnEqQeEeGlLEGpPZziIjaAIidbJjXxweEFeEDELUWZEHhNnuPpUeZGBbgWmMmdDDdNiInneEPpNpPDdbSeEsBEeWwKkzMUTgGiIckKCOotCbBJjKkcjLvVloOkKTzZqwbBlLWQzZZztyYYkFgGqsSQysSlLYTpKWwOmdvVvQeEXxiIqwWyYtTSbBsJjjzZsuUUuSiISTRrpPmMyOjJOoHNnDdUdmuUMOoDBsVZbBznNvyhHLleEYvVggGImMBUudPcCaAnqQCcngGCJjJjTfFdDtQqlkBbKOotfvOoXxKbBbYCcyBHDmatMmDdhGgYDdljJLfhHFyDKpPkQquULlcrRCdLCcHBbhmMwGMmgWQqYVvyeiIiIEcCbBGgCUulBmMbZOodOOoaAoDwmIiMWzNnJCcskKSzZJgGYycyhtbubdDBSNuzZSspVvPUKRlLRrIRrFNnfrfaAfcyYCFkKmSHHOnqQNgGocMmWtrVvcCyzZdWAapHhPxXDdwxtnNTSsRraLliuUTFmLlDdMolLhnNqQHOASsaUucCkNnfsSUNIiIimMfVvFTtHxKkqQXauUZzjoCfFcOOoRWwIUuirRjayYAVvjCcvaAjPpJLlMmHwWzZNnpQpPuBboOiXThHcCHOYpVvPCuUcBbPpsgFfGScfFCeRnOoNLvNnSFfEcCiIRzZwoOzZYAyklHhQvVqTtscCSZzPpLXYyowWOgcCQqeEOSwIfFHhmAaLHtThlAajfnNfFpgGnNwWQqSsSCcgeBbEyGQqVfFiIiQJjuGgUqTEetHLlAaBNJjCgJjGiIiVvCpPkKcOoYyXzZxhdDwWmMdCcDIwWivVHVIKkxbBXAaiBbuULlbBzYyIiQqsbBjzZrXUuUEVaAttQqmMIGPpgFfivVnNnNUVkKJjvPnsSNttTwZzCfFcVJVvjKkvRrgGWgGYTtvnHhNcCVsbJjBlLTvVQNUusSrRnFfQqYyYPpdDTxXthIiFfYygEerRGSsEeydDABbUVvvJEejrRwWaSsbyYSsBFffFhAgoCcOQvVZzcCDdqKRTtnfwvVIakKAiSxbBVvBbrqQUHhuoYyiIwWuUUifFdGglLsSndDjRrJGghDdHMIPpdDinNWaAwQwuGgCMWrRwaeEOktLlTKxRzxXZrXwkNnfYqQyFhHoOAaZfFZzzZQqCcPhUlLWwjJnBTtbLMmfFRrleEXBbxNniwWoOaABbdqCcQyYXxDRrFfFfDsSdTjHhJtWFfSslxXLKkzsSQqnUAaFfvWSedDdmMAAUuaSPpOiIOoxAaPpPpKGEeCcglwWYyovMBbhHsLlSmCeUjJjtaxXATjJdXZzxauUcDEeLgGlLIBQqbfNnvVdBDdbqQsSyKkZdltDdfFpPEZGSMJjsSHhmLlTtPqQCcpqQEeEeqoNdTtWSRrpPsKkqjJQCcniGimdDMlgGsSrNMoweEWwWJCcTtFfArjIiJRaWwiJjrRoOweyTtYpPryYRNpPnEEewWAdDhHoeDGgEaUWgGwqTtdCcEeDMiIiIQiTGgsSWwtbmkFfFfKQVvqKkMmMmnNuUMQQNrgrRGRIuUinvoOVxXFfyYGgqqQuUqlzPpGguXxvVpPYGvPpVPxhHQqQqXkKtThMaAmTPptOoEAaSbBsGgBTEZrRSDmHeEaAIiNFOZzojJvpIiXoAdVvDMmAaZgGqQmMzLrMnXdPpbCcZzeEBbAaiVvLlWvjqQqmqEePpwVvKDjJdwVHujJTWwmSsMdmMWwFsSgwWGfDNnzZCcmMTzZtCNnNeEovVYzzXxkNnKeSAaZzBbwjJOokKKvSinNInNgGkKJxXmcVrdiIAYynUgGuLlxBaAfFgGbXMrCIiXxqbBQNnexXElgGLvMzZgGHhmVbBmtbWwBTOomvVtIiqQhHUQvAhHnRrhHQFxiSexXESsoZNnvVzbBbBIiiIOvVsoOijHNMoBbOTLmngGgGuUDdSsNMYyKXxXZzxHhyMmYkzZjJGgrfPpGVvkDdxXExXeZObkKqejJECKkvVcOowWZzApPfFNniMbBGQqWjJVvVpPvgGgnNflLkLlcOyYyZzRrLUDNnJjKkdJdGgbMmBbnNBDrSsKEYLlxXyxXeCczZCcCWwiIcGnSDuUdsOoJjRJjzZDnNdXxQUulRrRUCUucPsgGSGuHhYyaRrAzZJjrxXRUMmRrBfFgASMmHuUhsSseElLgGXxsWwiIPpafFUaAuqlbyYBLYyJjqQaApdpPaLUuleEKkHxXHMmhOohAdnNDvLlVJPHbEejJidNndDyYDCcXxvGgVFuQqLlUVvfLBBbhfFHbCWwgBbEgGeIMVbBvCZzmRlLXOooOxUuIiXDlLiIKuUJLTrDTtdRtYoOyUuiIljkOUqQmMeEUuyYzDdZnNZFZzYLlOVvgWwGYyosSMeEXDdxtTbAZDMmdSZzbxXBoNJdLlsWwSuUkKiIFZMiMmImXMmxzfrRDVhHbBZMJAaEJQRrSYysAawWyYgtTGeEGnneEjJjTtNhOWwVvAopPbBDdwWqIKWtyYTwfLlFkiVvQFHhfDdMLqWwhuVvUXWwxHQqlLMmFfQTnNreEBbYwWbndVvDuUNLlZxXaAzZzBwWyDdFKuUkfMmrRDRreElrRxLStRqlEeETiIFfXTrREkDBKkmMpQjJAatTFfboOBWcfFUubBFwWfbhoOHdqQDfFZzzZIicAaKkBYytTkKrfGIigSbtTfNnwLPprYZzoOykqTdDtbBZCeEqOoQIiUnFfWwNuJjijFApPapqQKkPIitTqTBbUaAHhXkKxsSVvGgKvVUMnlESKIdDlZZzuUzKxXOoZBloRjRkMQNnqyYHhfFAGgbBBbUlfFKkLNvVPpTlLkKEOrJjKkuUrRRJjoZzYynIiUudAaIidiIzZzZGqQgVvDRrgGEVveBbLaAlIiDYygBCCccbyYJjmMaAGZzyYBbPBsSbCctTplMmzoOZgGLJjLgdDdfFyuUkKTtXxdoONnqQzZJDdHkrtTDdxLlXWwbEkaKkAOoQGgBqnNGghHcCQNnzuqYyoODQqPJqQjspyYFfkKaAxXtjJWPpwFfzZYyTJPpaAjHoeEOhiIpPWkNUVvuftwLFflSswwZzdDWyYWQWcCCcUuxXFDfFdfSsFounoOiGLzZxXlDdKAaBGhJjHgVMDEeyfbQqBwNnqMcRrCmAWFyYdDXQqYRryxAafrRnNvYyaAVpPWwtTZzJjwLlGgWcwIiWbBEeDEeuUzXYtTyxzCcbBFfVAaQqQBMmDdbDuUGAlLagdrpnNnNEVvUueyYpPGglgqQGVzZdwFfWOoFLDWwdIivAafFhCdEeDrRlLEGgUnNVvkoOkKKifFIAhCJPTtrRWwpEClLBfFbMmkKcyUXHhbALlaXxDdWwlpPHhLBnxXdDUuNnnNuYyuaAUXLlZzxBFfbUdDFyYuUfWwBbaANtTtsLlrthwWcCaAwWHTDdaAFQbBfFUuzigeEGLtRrbBTFfOoqQJuUMmRrAaTtvVFgGTtvcVvCWwVfypPUucCrrRouUCDGgdugGUfZqQzCdRraADqLxMMmmGgPZzGUuLldwWDgmMNnvVFtMmgRrVTtxIiXpdlLwVEzFfoNzZauUuUAwWpPonNOCuUfmFfNqcCxtTXOfXxBbKWwWsSwxgdDTplLPBbnNJjyYQqUHOoZzXOoxyTnOxTtuUXRFfrBPpEexzuQOntTbBNorRqbxXQUuqyYDLiQZVvzYyBblLVWwZzOSJjzZHSFfWgGwRrlsXbCVvWOgIiGQqOooOoJHhAajeTtiIyzCcZpPUPpuYEIilLwZzEwXKkmYyFzZftQqTyYxXCcMVvLgpPsSGleExWxXeawWwnNLleNnEWsSSpCzZsSAUuqQuUwWzGgoOQqhHZBNWwutTUnuUTtWwzZfEuUlMmjJLefplLeEPYOoyNRrYHhynwdDQqWIRrpPQqtjlSsGkKkrXxRKpdqwWQEycmoOMaRrAaAFRqnNQzZZzrREeTtrgAaHaOMkgpPGKmPppkOoKtTWwwooUuOowWSAwWxAaXaHhxUuXslIiAaaSsAvzZVkEOTtrRoUwmMAaYYyyfsSkKFelLEmsSzZzsrLkryeyYdTGgreEACGlLMNWwoUuIAaIipPgcOoCGEehnNeNEeMmnsSOosSbrRfYyqQFbBFmKkgGHzZhEecSYmMNnNYzdxQLCtTclvVZcCxXvHhwWHiImYeEyCRrnAOoQWqQwsSXOkqQsSiTtSssSPpXzpPBxXbIfZWjWSuUxYWwahHMmJRrjAavRrVAxXyHhXxBoOPpLBAJyOceENCcTxNnhHzZJxuLlwIiOoWQqhHUhmMXaRyYXkKtFRrcCyYfvViImUWwXnDdXxNdFFbBVvpueEdsSDVKknGZuULnNeoOhHeEMJjJcCWUusPsbBWXxrRQvVWwrPWkhHKTIiNntwoODNZzndjJyYsYYCckIiKyyYyhZzDdgNncCbxyYTtXRrBGHbBxXzZeFfmXxYygGOoMFfCeEOorYyfFRgGFfcErjEwWeKkzLOfFNuUnouUEpuQNHhnqUcCVvYhHykKGgnNnpwYyLIiSpPseEqQlHhxOonZTtsSzfbBeEuhHTNwWnuUxjKklEebBWwyYoSsteEOoTSsspPSRrNoTVvVFRSsrsSlhtTDetSsWwTbIyYiLlNfFKkRrgGvwWWQQTtqdOAEclBbLCepXxuUqQdDyYPAaaSzQqZUuUyVvXxfFBBbwDdoxqQXNnHfWwtrReEfFZzKUZwfqgwWuUaEAageEGkKirFfRHAapwXxabBAtXGgZNnnBbOrUNnIPpqyYKGgaAGZzzAaxqEezYBbykSZpPvVoOnNjByYbJAaGjJRrVbOoBdDobBmMOwMRrfFmYmDdqQnJjxXNyCcKkXsSxYWjJHhqiIQPbwWbBtTrkKRxXbBYyhrpPRfFOobBtTTttJjxXTWwOoKkUaYMrEeRQYyGgqEkKyzZewWEyjlmMEeugGwWiILlotDdTWwZDdHOXPpFINnilLTqQMmtTnNvVPpAmMabBlLxzZtQdDqQonYyNDbBdtTIWUhvADdyZzYaAUuQqHhQEIKMtThHiImkivfFgoIiOPiImMtfFQqTgEyBZEsSIaAilxBbOKpoOcCaMkWwYzZeEyobjUeEuGgGbzpPZzZafFSsFIifctEcCLlCEeFfUuGgTtpPcxXefFTbCOzZfFoOMdDkKCcmddKkDDVoOgGeEWdDwRrImwPpJjkgSskKGFftTKDdWOPuYPpVvyxUuptkKNniIuUkLCcOxJjXohRiQqImMgGLTtXUezZEfFlLpPHyZpvZCcxXzVPKkDdzvvmcCubEfwWFcSsAuzDPpdZLFfUkKpkDdHhWkKLlwKkKSsZzfFXrRpPiIxmnNuUXxGgMvXxOoUuSsjEwWeeLWwGLgGlgjJykKYShzZxzlLBbpsSebMmMkKrRTlVySsYIifLlEemMWKkIiBbwfFhHtHCzzESsKOozIiZBbrDdeeZzrRLKAlLaQqpPCcrRkCmSsqXxQvoOsHhZiIibBAaFfUuKCQsxOnZZYZIiigfFxXbBbBtrRTGEZSszIsUTtuSLbYQqXCcxPpcDeEmAalULluRrLqrRQfJjxYvVvVZzeEglLZSszGqaJgNnGlttTdDDptTHhAabhaRrreEFfbLlBwjdDWwCxXKPpkckKmMuSxSrVBWwbmMYcCyLlXMkKWwoOmuxwkKWXoAagGyfFPprRgyYCPSsbEaFCiddDqAPIFfKJUujJOoigiIGgkvVKBcJsZRIiSsmxVPpvLeEltsSSJriIzZqEkwWcZzFfvVzpPQqpPMmZIiImMVHRrgcCTySpPsYAZzaaLlDdAPIipdDpPkIiKCVvNnwWrXozkcXxClLMUudaADDdZznNXxzZzgGHPHEeTlhUukKpPvpgCyYyYcUXxFfrRItTPICOocbbBBJrsSUukjJkKKuUaAoHhrnNaAaArqcLwNnEpPeoOptxPpUuxZJjvtfKqQAfFdnZzNgGRSsNnRMmrrFfdxXDnwWhHQqMmKhHziIZuLlOobBBlydOvVPpJjAaIiUUujUdIQheFsSPkKkPJQiLlIiInNgVvGeLlyIilLCcvjJXxFwWrfFHDdZAEeROEEkKcCeglIXxsQqSiXxLAmMaVSsAHhUzZqebhVvHGOxvaAQqqlLearRAPvOohHbBxXKraARktuvVUbBgGxRrXdDrdGmMwntTAaJjLlNCcdFfBRbfUdQqNzrazZXxwKkTtfzZtTCaxzpPZcCXvVJSsbaXeHhrMmrRXxSVVvdDGgkjTetBQoOOLjJwMmeECcheksnNDdgOokpPsSAaDvVFshksGQqupuUPbBzZEegZzBCRrclzEIiyAoOaYyeEjDdgxXdnSpPMcCmdDZzOosKOdyCVUfFdDuWxXUujJdDwXwWJwhHWKsSkiDjVGgqQRrzZDdfwWEeDBbbOoIiBAungeEHhXxHhWmMjoQqhvVPxXpUpBsCKonNQqGNngtRnNrWiIwqwWhHXSsRrajdQquhHKDdoWLlkKTtNnLHhfFMLlXhHmQqMrjPqtTpwWKmMLlbpAaAZVvzavgGCVPppBjJfxXyqQsknNgGUPcCOTtTnRrNGgVvnnNCxAaFNfvxHhXezQiWUTPpDhjJHBMzZmMgvVmONndUNnGpyGkeEKCoOcoOkKMJHURrODLlfFdnYyxhHBLgVIKeexdDtTmMyyDdXRKkrxCfqQOEMFiIDLldfKvVxJZzxlLLlwWXCHdDUuhbnNqHhMmQZXxOoCHhcwNnyjJXEexYMUsQqSOyCxKvBPpOYjkKcCmkRrWfsSDfcPKkptdmMfFzZxgtTGXQzsKkeESZnwWMmsSxCcWwtRtTfCcSqQgaAGFfESsUuubBXxDdssQqujnxBLxnNDdLlDVQqvjKkJvOXxowfilwXxWiILPVzWwdNnLUahHojHhOSdFTtxXQDdVJSsjEuOoMjSPShiIHsWwpBbKkfFjJaNnAEJjQIiqyYewrfFRWDNvIRMiIlOohNnMVveVNmMntTQeKmMkZZDdSsodDjtsSuUcatCORINUyuEEeeGRGgvVbSMQHuUhrRUuHzeEZDHhxXvbvVXxJjXxUFfLlVZzvihgQqGfcCTtnXxNLBNQiYCcycaAmOofxlXHeOhHcCExXebBMIvlcCDdLbBGnOYywWqQzDGxCXrRxJYyHhjvhcRGguPwgGWPmMaQqApChoOKpvVAaJAatTuWwZzqCcXxmMGCmMcgnNfFeXPVZzDdokyYAEeaLXIODsSlhdHpLlFRPXsSqDmMHhDZQqzJxXjJxXGxWGKkgLsDdmBbbyYVWzZwAoPpJqQhHRrPhHpolLqbBPzZnCpLlxtTtImMijJSNOopjaDdWgGpuqQBbUhHPwKByTtvPpoowWxlLqQqubzZBvmMtATLRrDHhdeWvVqQbWuUMVvmIZzPVvukLSmdpPDgGsNhVvIyOTJjXxbBtIfFyHhJETpPtTKVvLPRgVvtklLkdDWRlLrXxVSsdiIbBQFtTSmMbBrRQqsSsnNFfjHZSsqQrHhFmMfpPReErxVvXmMgFvZzSgGBHhXxGJjgbxqEeQXIEsSelDfSsfdDFvVmMoOYQqkKqxLlocwWCjCcxMrRmdiDSqQsHXxhYyrkeepynnNnNFfsGEeMmwWHhhFfmPzbbBtTbBHhPppgTEetGlLlLzujljJQTzBTtbnYypRXxpAuGVPQqpzZvojJOYQImMSUmjczXWwnNVYjqEeiISFfulUuiIxYYyyHhlLqQKFoOfHXxvSsjpPjTesShHsjxOqQOowWZztkKuUCifQqaAVvFzOeWwRjJrRFtTlLfecgUpuUPpPuuUxXgGqQeKtTAuqrlowWfLlEAKgGkfFPUulLcCYyNnpasDvVEedUuEZzyYSLlsHKTjVIfFLbHSNZzlwXLckKOSsoAsoOEeGaArWrRhQqvzmMSsZVFKkfHLlEeEetTgNnGVtTaAcCDdGgkPFfpKVIivMmAaoObBwVZzAcTtLlKkuUOoioyYWuUFfZxgGCeEcAgJgGfZzLlFSifNTtRhvcoOYyYHvdDqQGgAwWaokKOoAabAXxoMEGgaTtAeEevTFUehlLcCXVLokiIPpiQGgqyhNnHYIKloksSmMKizKkTUbeAIxpWbxeEXuzZuZzQnRrZzsSTfFCcbBtSscChVvKzAmofHHhhVRKkKkrsSoHhOGMexjJxXSsXxfFfAaRrlWwMmMMEueNVvoBlsehHIikGrRxXmFfMGgCcOHetRrwWcCONJazaAZfFumMUAbdjeeEKaHTtxXhxmMKkzZlpTpUmMuPnjqXeECcfoOVasuCcjMmkaAmfRgGCvqeEtTzZJyYjdqAaVmMvQRXVaAsTtEeibBIssAauAFSWvVGPiMlLZlHhLDrRvVVQiIqHwNPyYUsdfIhHigPpspGNcPXanOomMsSpRrWMmPpFilLIkEQhZiAUslLUVTtvNuJBbuBbqQXWKZEezckXuDdUIiiWdDwIRrkjJCZzoOmndnvdPyYQxiIXZYwWyIYeEzrLlRZZPmMKkpxXJwSAaVDpRvVGgebBjpMmPUuJXxOAWQMnNCOSwvVEAvbBVKoOaAMnLlSsnBFeGNMmvgGIdDiHJjhVVlLdDFGgwdDuUhHJLljoOzLlLmMlqjJQiItTJHNuUUKFnbBnKtuUiRrMNnmwAaWVpPZqQzfBbyYiDdBvnlLNequUgGQZshfpRFUYAHiITXGRrBbgRrNOnyEerRDwllLnSDddDYyaAtEexLlXhqwWVSgjJGMmsvHhuNkKScHEeAafFhOzZHhQqzMuUmbBIXxKiBxXFjWwJCUucdeEDibBIcYyhHqvmwWGCahHlLMqQLAaMJjJjQqnNmFNngGMmCKilOoaBbApPoOEeLlxXDWwLlORiQHbBpPPqQtoOVhAaASsYoDFmMXxOoAtTmMsWsITlqEeVvhHhTtHgGVVWwvJjPjJqQLyQqYlOoYzvXCcZqrCcAaRqQRIdHhOLcnIJnNnGnEpvVbfFJVXPpSRaCvmMmDqbBWwGhDdHZzoOwvWwPeEOUuOojJNYytTAaVtTvAamhHKkMmWwIOTtscCQqgGrRlmkKeWtMmAayhHYZzzZTvRrHhbNkhNRsXiIzZJObyMnNmzaQqKkPdaeEnlVvxCcxMmQZlLuUWFfzZwdDwzrRzZlAoOalHESMPpmYPUuUaAuLlbbBJuzrRLllLZULlKadDyRrYuwcCWqfFcCLlxWwXQUAxSGgsxGzZgaAMCckKmXxUaASHhOjJXWhqSIimvXFQsSYlNnBbBqQWwHRrJjhUuVzuaAZzRrWwnDdmMcCTtzKkZfFyzzrRIGgPyYXuUxpxRrPYTtqAtUbzOkZwWzmMPBhTtAaeEtuKAaXWwELljIAaPLKklpiIXlLLlxyMYbjJBWwTdyqQfZzxMDxLpPHhVWwdTtVvlLiFfQhtTPwvOoVOtTvRrVokFfiIyYKPcClbBLTwWhHtUepPXfCIlLKrRlSeEKYqHJOojhrUeJtvTqlDmuCcUMDWwddkxXkeEsXxnHhNTAaQqtSHsNsXcAaCxuZEobBbBTtTBbVvXQqwWmIQWjUsIiLlSutafFAnNTNxysWjJwShUuyYqQRzZteALlamdDHTlqpiITtKKfmFfMeEGENOjJcJjkRRgblDRrdLlLTtebTtBBEegGfFIwWAqmAaLGCcSMUzZuYKdDmglLyYhHGrzKkZUuLlgVveEYfiIfLaNGdaaADdvgGVcmMtTCHdZzDGNnHhhHghGppzZPNnkApyYIRoOQqrYRXxmVdDJjfYyeEFYyBbWlLDSsvVOnNoAcCBpPZzQbZFPMNxXxVvOovbcHhbLRrDzZJsQBBFfbhQqQqBaAIJjyYJaWwWpPJjniwpyvVpPYkKTtyWLlwOxPPTDnNdAcCzvVgKEgqLJhhHHrREjJejlNsSnhFcCVvzZfpoIiNTZeEzgGKmnNKvBjCAZzaGLlqbZYdSnFfvVDlLDvVLdDPvViHfzOvVbQPpqRZzrBoPptfFenfFkslLlTfJvKvLlNcCnGsSukKSjCcbgiIKYylxGvkNntTyGiqQhHphCQUuWsSsSsSaAEqKkCcCzWwMmTCDgCNnQDdqAaJLxzscspqVzsFJlLjNntKgFuSsoRrUuOGbBEjJXxFkddOoIxyYTtOpjbBjyYVvGcePpjGiwGHIUuNqWGbHxWwxOereOoKkwUJjniAxdDXBeZQqOfFMoBbOmMgjJnNjJcCyYvavVBdDbnNAWTWnPcCdQAknNKsMmzZIiRTtFfrUjAaHgGOxMmfFEeXYxERkSMeTtnghpdDdcCEUurRUuIiLMmRrzsvVfFdDwZjBLloCVRPiJjIIPGWnKkNwWnjJWHhAaVvPGNnXzZAaLnbBaKRKkYdQqiIDzGZAazgWaHhJjxXlLqQAwVvTylWwAqsJnubBvVDVgGoOEevHhRSsrFfCwgdcXYbnNBqmJjkFfrRzWwmjpPJxXqadaFfXxZzDqvVoglqxKuUVvBEegNinATtaNjxNmPpiXyYOoiIxQqqQwyFfCcCWwiOocGHiHhpjhHJAagGPIpCYyGgofMOokiIPpKkPpKmOJeViIIDdWnNmjJnRroORQcCjaAJqYjaBbTtBbRpPCcgqbVvSNGgneFftMmNAeESWwsrRoLLEgIiIUlLugGinpwsQKIszMCSslLAacWaKklLzafEuYGFLlfHhPpRgOsSmMgkeEKSsGQKkbpDMmMRfkKbROogGrKhqaVYyKkIUNnuXxzjwqXImrRldaAdIkLQqKrvQqYnNysSVvWTtwQlMWTjJrnXxfhxXxaAfFwVsSYQJdpPwWDjDvVkftMpCcVSsnUoshyHEfaGgXHEfVRogGOhLvyYVuNRrnbVMWIikgyiDdvVIaVvwWqthHViLlnNTWvyUuNQGlTeEteEoOLAaDDdkTGgrRtsuUokIBbiMmZzOqTCcbJjLUFWSKBzaAuUHxjJdDQtTIiIQqioziHPphIbAcCcgsbBbBqQpUiLKkjJSCFfUJRrmMjftTTtAnibqFSvVteXmMxEfFyYfFUuwWTtTyUNpPIiqQloOUuIikETUMkKVvmjJuzkKZpAcaylQBrkKRUDSsdZzbZEepSsxIiMmhlKkIiMgUuGmGhrRVuUipPldOAaArTiLlIeEBNyNnYZzMeHhEoOXcCkwZAKGkHawmVUuvENnvVvgGXlLJZCtdDjaUuIPVZPLlckKCpiIfFeDsSoOBbowWrRaHspXnPJjjmMTSsAaekKBrPQzZKfFNngkbBsSNnsShzfwLlnNWPpVcaKYBbjJpPLlqHhjJrRQIQqCcQnNaLdbCplSsLyQrRqDdzdCcwgGBbyjkeFfdDEKzXxVBYOTtgTtGIjJAYPrRwmMhcCHiINWwnNEeMmimSiIsmMMkKygRaNnAiIrAPRZzfthHTTUNnHzTtcuUPppkKnvtTHwWrrCcmMhHUuUuRoOoUuTuUtoVoKXxTtkAaJvoOnOoCbBfFWBbQqYsrRqiIQSUFKSsDqaAfFnNGCIiqQwWAVUucCdDybBHhEKkxXNSsIXxiNnvxXVDguwWUKKkGhHgoSsKkbBsSMmpmvGBbGygGUFfmYeCbQLxIiXGglpLlCcyAaYKuUsSUDfFdYwiLOoNntfcZwgGiSGTFUzZuXWuUwPpSsxflLtPOfHKkkprzThwWhXHOFVvfDpPmMIidiALBbHsSMmnNrAPlLiRjLlJMJiihWwbByIiYHIIKGtRrmirRDNaARBfTDdFnIiNAfWVGzTWralLdmMzewxzZCcXkaujLPYyKkpllfulLhteETBiIVQYyacCaAAKgFfnNlEJjmMevVEeHNIYedDEbBaANaUwKkIiXxaAtTDViVoOvovqKNGaAanIsmbBhZzGghlLwWHYycCqcFXuXxKkquUooojSsJObuCczjXqXRrSsvWIxMswNXjDmlFwhoOfYFLJDlKrPpZzCcgGOQqOooPKLLrARrfFoOxXawjJDJjXzkKEeIikKyGdLlAWoOZiIwiIzFfwvVvenuUNnsSsfSsFSlCvcCVcIiMcDdFagblLRrBGDvpDdsVvxGnNsSySsYwnNWrlLnNRtoQyYZbGgGoznNZhyxOaLtXXxteSsHcHUkabCdOOXHjJRrXzZcCzVlLYypvzZYkAGYAayoOeHSCeEfyYrOoRFoZZTtTqQtZzorRlnfFNgCGjVXMwPpZzyWMYRjJvgGVCcMmMmIEeiPHhgGpMjJsKnNhaXRrgGDSsdGRCcTtmAKkaOCQqcFfGQKKkaKkAklLeOcCqQEeoEVPdbBwOoNnWlusmJzhvVIiHXxaABtTWwDhVgIGvxXxrROCDgGefFEpPwLlkKiItTjHYUuyhkKJLlpgGsFQqJUAaunARrDdaaAIiAmMVvuLvVeEYyIkqRQqqKbBkQrjWhPppPYMzUMmnNuohsOTtNXJSBDxskqUujWwAaJqQfFvVqdMmHhqcYyJecvspPudOxXKkbBzEzZYyIaJjsqlLunrRcZPTeRrLXNnxknUSfQkKqbkmwWKvVUuqQmGdOouUsCxVdDsXpPpicRrspBxXuJjbYyfFOAEzxtBuUrfvOoEdWwcCUmMuonYyNnwoGSTXsSKkBMmbpPxtkKdDlhPIITtDgGcCogGdtTtmIioOCTtWZCSszZzinzbBCZNnBcgGSsZiojJMmwLlJjFfEvifgGyalfsOovLmDdnJjzZIzZJjCcCdHhhFQxUuyFftAqQpPaTyuvbymGgMZFfgJSodzZTtEQAUdkYCaAKBbPpTtkONnpPoQAxXaHEiIeeEhrRxXtTbBnagmMwQqenNWwrPpqQynufFUMGkZrRzwmMurRUkKWKgMBsgPZWwBjQqGPpgBENnRrCahvnNNujHhoddDVEKkHaCsZPpMvdoODLppPSsPkKbBpSsPeEgrAayYIYQZQpPqtqQTAcCslLyYOZzMLBbZKkOoiuUbBDdzaAZTtvVVUIjUuAanUuvVIiYuKsWwKjJkSsSLbxeVvlZFfrRTGJumMUuSsPlvVKkCcLnNLivbBrzaqQAyYZeUuqKkTtQUpPcjSmxHnNtThXOlwVWeElLDdeWwVbBiRrwpjpWwbBPfJjanuUudwfSsFqCcsjLlnoOGgjFCcSOopPqAjPhLlBbJjAdHdDYyhqkKDQYSXfCHhVrRmxczSvpPLlyUAaaJmidDJOYYyZzyxXTdiHEkQqtDPpxXeELQKzCZzOQqmNnxrRjrRGhWDysSFbKecJNPpaYyAcaAfuJGPTRVmfZZMmXrQqODjJRrjJrDFsSSFRiywNnbbBBWMmMDHhdElLlMqhqlbtaGWwgCcYyCYOoQrLlUNiwxXWDdaAPpYmgGMyIDylsSioOIGgEZdLQfFqFbBZCcGLxcSsJPmzsfjJFoYytjJdPfFAqQjAauUJhNkkHeEoyYjjJhDjJCQDdOotjJZzTqiEdgRjZzXTnNtCpVvNucQqjuagGlewrgcCztTEsSaTtHxXNEdDLlvWABGcCOzwVSsRSswWLuCyYrRCREBIKDUuOSsCtSMLNnNxXzXvpJjeESPpVNYkKgRBbxpPQYLLyHhbBymMRZzFJDdDjASsMjOPIaAwwsSqoOQWweZzrpPRzxmDjIiKHmMfAIlLbQqZNpPUErYSMmkKLluAavpPfFTWwUuZzCccoBvnstTbcGJSZNnNnucLHzqQPBPxXphHbrRpsNsOYeEiUudDGgMKEthxXyhHByYxTyYeHJMzFfKoOBXqzbdVezgAhHwWaOoGqHhjTIGKkYyrIYyYOokIcsbBtKcsHLiIuUlbERWlLwxEJdZeUbVvSsZzGyqZzQifFIYkpjbSoOWjCcohHOvhJEanIRrmKkMPkaAKbFqFfMKkmQffYYycCdeEDyZjLlqQSvVCcEyzOocZTtzcXXisSfnNyGgLGaERIirzZhMfwWoSYyJjgEnNeYJrRGgjoqQAJdExaAJpPYFRJsuOSfFYcHItMmTjVOoTiwJcubzetTSPgGmMbOoBHZfephcwZNnLlGgEeKKkRVsSvhHiEeCCzZPjJpAVaUAGNSaAgQIQqRGoZYyEcCaAHhBbemsAaSMUHhUuCcCcGXxMYpkQIkZhHiqQjedyIIZzZtTmMAJUHwWjgbCcBdWZzlLwDtTyxXnMmyYNdDUFfYyMeULKbBmcCFMQqPxSzZRDyEXxdsSDeJkFSspCgSNtMmqrRACctjUuMmlSsLlLqlumMQqDhHyYjJdkfqkVvklLMmdDlSsdWebedDiLhSNnsxKBLlvPjJpxcRbBjJrJQfFCyYckVYGHvLlXxRrVPvVpKAUvEUuePpCslsSaAOPHfwWjJZzWrnNRxMgGmiofxhHtDuUFvzyNnQqnhsziIOYDdzqXxQhCzfrRFJQqmSPEPpsSsXNeJWpVvCcBFEXMmQYlLJDvNtOwWwWnwiiIzZpPiWwEvoofXxjoOrRSDsSAmMjoOmMyYKEwGPTRzZFhHftTGuUocCOsSshHYBzZpBbPEefYgjJXxGyYCpyYqZpGgPzwAvvxHMzcAaWhpPiIHhHHhpCKkzLFedotdYHhdDNoFxXJHhUuhAQbBqqQjCCKDJIPBMaAmbOSkKsQqlbBkVzAaRghZDxXfSsOowOQtHlLwWCZnEPuUPmbBVpHeEATdjzoJjYGNLlvVkgyYuUbkKvyYfRrFVpEePPHaApmsjjJpPJVgGpPRODdGJTqQSxwWXEnHXxhAxtDdSacySKbikJWwjpMmStgRmDdBbeYVvyEbBYwOOAaoeDuhHQwWquUVvPuMmkCLzLlSPfFgLRnYqQRrDdGxwWXlLlZzSMhHdOoLBjIiJLvMmlgKkfTeEIEpYXhkKHqSBmLIvUgGqQpPxXIiOawWABbokKMoZKvIipCiIcPnNVxLSpuIdDtqqaZImMjzYkKgGFfbBQRrSoOZzIidDFHMgmuaXxBkJiIgenxtYyoUBDrRuTDQsMmSgGxSUuoOnYyVvktKEwTtCFfsscsasBbSMmAjBHhVxYDkKZDvVdAJTbBgGCsquBLyPPyYnaALlNSLkKlEeRhHAwiIioOGgQRtTPpPpQLLllKeEjVRrEeHiJxWUufnHhVwwKkNGnwgGrOTzZBbIiSHhgGkVtqqTtKVVvUPpgGzMmkKTTtpPbGaAUxvOSIbvszAfghhjLlZAaKkMzOBQQDdWwlLsSIifVRrxbNnZCcpWGfFqGOALrkKEGmUNdCSHhsiHTgGtKlbMmPpaAuUwWYfGjJcCSfLrRmskthPpiIHTzZqZWmpGxEeVySXxXHhBGgRGgJHzLtTQqlwpgUnvZsyteUmMuJPbDdtubBWvVUIiuwssSaAsSLuUpPDdWnNGAfTtLlFHhQMmVvYnPXmVMmmLlvuUlkrRKeEVaueEtdDTPWwpNWwnUunuWwuUUNuUQLVNGpcvLlShoOFqIfpdovfFWkKwWwAaKkhejEobBcoOoOrktABkqxXtJjbVyXPeLHfOeMQSsyYBXxkKGJkKNnimMgBILHkFfvvgGXxHGHugGsWDmsSLhKFSQvVekKEqQtNnNaNbdOTzBboFPlWwRrVSsvWZLUdyPiIeELiIlFXjCWhHhjJHlLenNgGGgKRuUXxqQesStTZVxKkXWKgXxfFoOGStgvVbdxxfTtFSkkKPpFLYyhJnNjHDdyJpubzZZpbBeypmIislLxXOtTUiIuGoLljaAoEeEeCxXHhaPpgGXDjJdxASsScDvliWwYIosSzZOiNnrUehHdVTLfzZsSFIiwtyYnlLoprsNnuKkYeUuYXxqJxXfFHsSwWfFwvVZJjxxHEwEeWDAUuawEKkKkeWFfBNZzDatpPezZEOohCHExXpEupyYRvViNJjahjUwWGyYsUuULXlXYmMCKtoOTdwmGgbkKBMbHqQEeOzqQYGgONnAnNIinIiBaZzOovVDacoOumMobsEqwWYhHOcMYIiyHfuZJYymMXJwHGgrpPsuwZkSsKSsfTtcHzZUunNKRrhHhMEqQljJqQRrojtToOZzJMNYNvLSmpCoOqQcRmOonxdHdDhibwVJjtWBpCVHxGckGgKWFhHNSSOQqoEilhHGYgeFfDzdpPDUuwJXWFopPsqaBdKdDLlUEBbtTQMDIiPpnNmJMmYiIEeTjJMFfhfFjmTtMHEFfPWcCwxXYytTjYGgPpZzkKPGYyZgwWGHVhAPGjJdDwfFGgjJnhldqQkgvrzZgFRrTtvNnWwnXnNGAukJyvVBFfJPpWwPJmMjQqlzxBbCCccQhmtfQzkJjKIMZAeXyYSgGuxGKqkKSRrsknIiQozsHReZrkKZtIfFpPDdnYvVVNVaATthHvLfcCHVgQFNcCdDshHSXwWhkdWvmtTMjyLgGITiIzvtziBLlAEBeXxFWDqlwwNEMmADLmwpPlSvVyYisSDNntTKEpPeEeXxTsdeEKihToPpEUOoFVvvSlLsRoRUuWJqfFQJjxugYTtWGgkGghHMAkwYeEZxXGgWaAwpIsnJjNSiztzZTkXxYymKAfYyMKnNkmDWsvNYVvKkmMPWBooOOUqbaFfyYAJtzpnpttTTvxqQBbffFXocMbBAaVvPSsJjGMmFfJjOlWMBqxlLXwvIgGwWibBJjSfFvByplLKnvIzlsDPpWUuGgKHMyPQJjfxKgGaAWGgDubCCcsXbBxiRrymsSTmOJjLtZckBSsvYjJwtTUzuLMmlTXBbsvVOoHAaMmZpkhVJDdqQBBvVGUugvFOcLlBbFyYfKBPWCWOFaqnLlLVvgGQqLRrlOSaTtEvVDhpPHtTbSaAfwcCSwYcCghHWwzDdtTtoOzDJjhbBMrRlLlLwWmMzNsgvbBJjZajFYytEUBbhHwOgggCcyTtYVInSFNrRFduSsLlUVzZTcvCOiapXrRVvUgGMMmxlLIXYNnOAakCllJjTbKMSsyHhegGEYEvkKVwOohFcUJTtvBbsvVmOhGYykDQzZgGwWpAdDIbBrfFiIjgTaQhXxHSbKkBHhsWXZzkgGkzVYyvDdwmvUuSLoOfQqdQycCyFfYzkKUtQrpPRaAtTqzZVwWQyYqPZoJFfMDjJGHOucLjTtJUulvFGbQHhbBbQqCzVoFfOeJxbcCDgwPRNcJCcMTtjJmjHOooUnNkKiABKkbukTWNnuZzDdmMsSwMmUgOxWyYoQqxaThEwKHBnNsuCcKkLmMEepoOjGHfFwWOtpEeuTSQqVItUhQKknCDQqEDaCvbkudNTwlUuDdgGmdDsPxjJgNwQqKsSAqNnRrBEaAeHoBAgwOwLgkvAaCcapPAeEOmJVvUyDFMHbRXxxXUsSurBYyhftRnwRKBpXoRtTiAXEIiexaiGAaeEEeZzVFbTtBfvAaArifGiYgHEecgtPWhtZGfjyYXSfFxVrpPhHRlmMKFfWpzqQqEeUHTUutUZzvLpKzkKYrRYnVvsSfLlnKBEebWlLiIwwCcWWOWwTmMXMVULcHQYyqhMmTlLGgNnnvOOuqQUtTTtWbBkKlLXjuUcCSCcUudLlKWVUMmPpOoPpotTOsPPprXxkKKAqKggOrJiUuNZxgIMmiEBTtXikKGtOoQkaAQqsSGMtflRPphHZzxXzLlHhZnceECuYrCczODgcYyjJjZXnNdUFfsYOJEHuUslEssoOhlaATdsOHhRfqQuAJpnCQqufWezGWwWwgRHhTiXxuGYBegLdDlLlzCgRxrVveVtkiVvpabIemMxVQWDdyYpiIHhpPehRMFXqVZvqQFIbETtPDzZEhmQJjqOuCGPuoWWVvdDrRutWUaAjMlDcONWQqzBYEOuLAXBnCkNLaOWgGgUubZzzaAuquNvcClkBEaMjkEWgrmcalLrkmQIimVoJKKGgrYxrNlkBxwsOoePpJWTtwIejJpaBbAPsSRrIfaZoWOwNjcjDrqPhHMOXrqQQTaAiRrsKFjchPYurjgxhQqPfFAdDcCapHXGJMmtTReEfFUyAapHCJfkjOoJSRwWOorItqqQRfhwWDdxXHFxoWwmCcpQRdJCJkerREJjeRSslLcCrEKnWowOzAFijJEPfFpijESWXbKLnRXtTybBRkkjOvLxXlMqMKRAPpCMRIiGMmweKGgJmAebKLVnUfTtFQdDUZBGwofkRrKFATtliIrRxXnQqKcNbuUxdehHEDalUoeybZwnoCdLmJpPuwvyYwWEeVThHUYywJjwmMOUpgcUoMrNnRBbHeAadUupIieBeEifVzvQFfxfmruUHEBDxXdbPUupPgGvVeEwqvpPXbdDBbzZBKdDkOobhHBmMpPEGWwsSgiBjJAPIKTtTvERXrIirRGcZGgGrpSvVZzsPREbygUItrZjJEwFUcNPjaUFrqQoSBkKbDtLHtTSrRnNSAaeLShCyYceQqjyIYEeyiYoySuDAaxzJiIFfCGdoZGgRyUNvVMmaArKlaALkLkKFuUTmgKqOoXxTUugIxbeGXzZznIjFfRoGGkoOQlLmMakFfRkKpSTtBbKkVWwvuvoOwkDsJxGKkgwJjooVpPLlNNZzntClvVutTvmxtowkNFqQeEHhNyoOyZoOkPlwWVZzdDuTtbBhiNnIuGgQZjwlLWaAgGsSJZzPwkiIxXLvXWoOFaAiIfwscmMCxgGJFgzTHwpTGpPChCckKGyUuIgFIRadDgIIiIrOxPbkklPpiKrRCckIMmLKrWNrTFmfdYujCcMoVhHyYNKknpPKFfGlWovVWGabOhbQcCakWnGJjXpSMgGVvLWkKtnuUDUKBVcAXxdedfOoFzZcNqHuTtTivJjstWwHhUvVvcCVPTohwYyWgJPdDJjlUpOomtTMPSbDdhkWxqQXeLlEeHtapGgPAAXOFfwbBRrPPppHeEhXoGuPpqQMmWLlQWwKkTBbtWwqmMEbBehHmMqQUwSstpPKUaZzIuOhPcCgGpcCCnrpWGSsdcCPtTpBXjEvZcBxZzBbXqBgfOYyoVwWpPChHUOoofFxdDXhgdmjSsOxXfFzpQdDlLqBbvxXTuZTtaAYqDFLlvVlSssVMUPpuWtTZKKutTUZzxwaAvEeVAaqAtGXEexJKkiIRbBiUuaPTtvVqdKgHLloMBbSIiVjuCfHWbBemlLkBcCtpPzXxZLLcKoyeExiOoXmEeuxPAIocVCGgtWwvDfnfsNnNiZzvGGvpYyPAaVGQqoWmqQfFMuerIiRTRrfJeEhHAzCcVkKpPGSnZoOmHdZfFTGgZzZGyWsKkcCPpWFBbsBCfjJFcuUNndeOOooAsolNWwWuUwxXXxLlQAfowcwpbkcCFfBEebCoXxySsHhTtYfVbbjvcCHKPlLXxBbzhSxtjJUZuWTtyVCcSsbKCzTloMthHMYISyYcBUdwJjkXFHhnNqpIsSiYmhklLwdBbuUSLZiVNkeEPzZYKkbVLlsJjbBVhHWQbmwLcCoEeWYVvywgpkxXKmCOxIiusSUHhNnrRFALlaIXxiLlXVIiIiTtPcCprRPNPZTYyjBQubwpMBkKbmynSsBlLbGgmfFHhMVSwdAlLnNadDZzFakMKUuZPlLzyWKamKwyGUXjwrOrSLCclsVfoOuedDOnpPpPNtcCrRHIkDSAcCqQaqQtkpPdKkIrRIisLWMlGgdamMenWWKbBkIQqiLoOQdwfEbeqQLlabIRrZTVmMrRZIitOohHiTtlMmYJwjFfTpPtJsSWVwDKHxBbsSeEnfqGvhTtFsSlnvyxXQqYyNpPrRiTzPpRzWlLwErhBbScCLlbBZOqNqkKQKMmQkgXUsMbBmxEazeZzppPPEmiZqFTMHqXZLBbpzZbcCaABhHRrlLUuoODVvdjbQgGqYjKUagKkxNVfGRhHVGKDLHNGgtTWgpaHvNnCcGghzgpvVPZMmqQzYyDiIdpyJpQqYyemxXMhJHGDdgmtyNncCMmaANnjMDdWwdMmmqthaAHQqkKTegGuXxJjkDbFfAQSNCcnOfwRrxjwWrRWUOiIouZWwHIihdEGCcXxygtTLIeVGDdAaDdGggvsdDsIinfwBbkOoMmKCgXhHhuUvcPbwqQTvWEeMmBIkKcCcCDXNOoMrPMsVvlVnynmOLemZzDdJjzXxZHkhFfCFzWUSRhAaWjxjPpIizfFUWwFwWhmCohHqQyQGdDgYyeSBODdUzZWwxGgXCAdDdAbNaoyMlLzZmZoeExXIihkKBWDkcyxLOWwoxluSIiguJHAnIrSsyYPfFHhsQTtqSUePehchHHEepPTAdnbdehXXzNnvxXVWhjQyEyKkJjQqUrkKSzZslLRSRPOuIiUNTssSctlLTCSWltvDWwEuROoyXiISsZzHhBbcCkKJjtTxYyXxBbISsLVdCobBOWwkKuUsGgZzHhcOFfbBJkKOdDgoSMXxKnNkPYEPzoOBUPjYZzRrltTfPpKsSsXlaALXDBGTiIsgGkwvzDdErEekEWwTtwcJxfpYDpPulzmMwbBLpfOZlLtoDBnTtAnTqKksjJfkHRrlMdwSUhxXgcCvVhVVKhliboOGIjxXgbSyYsqmfIiFEWUuwDdoYyFhoOlEpPpPpxvVYvsSBMmKhQqHkXxTxXQnNKbaZzTKRBbrRCnNKkdDcCOeJPpErRYysSDdhHxXDdAkAaTtKJjdDGgaHhHVODPFiQMmfHzZsVCPgnvlNnndDNqmMoOKkLZzlpPPwaAWprRBbUQyYcCqAvLMxpNyRrAaqaTtgmMwzZlaGgASpPUTBpCcIijETYSzVNuGPjbBJQqLxXlWZhjrAabaXxhHlLVvAxeEyYsYvXgPJjpPMqQwzQKjRrJSMlFsKkgFyTtBWwLmTzZVvtMkhISscDlLneAaTtEuhHMgiIeRlaoapPAgdVvDQaAIigwPzZzDdrRBXUuvFspPSgLdDRbBrllLvGgVGMmgtTQqIGUuLWwlgiTtGqdiIDqbQIiuUqoQrRqZmLlrRzJHHGFkKaZSVBisoWwVXugBtZuvkXxQGgQTvRrKkKstsSoFMmfRWNgYyXxgGZznWWvNFwWwXfFPpjIhLlvJZzkQqqXxvVrqIdDXxKkWarJjeEsppYlnNbUQSceEQnNEeqRrtjQqpPazdyXvbJSCmMSScWehyYFfHHhkLlTKEeNoOsXqdtUUudbuOYyrRTXNEGMmwWjKbAUMfKiIkfFFGmhfsqyZJiNnzAAaQQTiIiEeUPslXkzOmpuUqNnQJjQqPuVUuiKQqklMbsQxyPeiKkeEZliIwWLztFGMmLVhhHzZrRHfKkFoOlbxTtXlDmsLgaAZzKkyNrpPlGHhpuUsXxtTZlcKUpiiVvIIUdEJjoWyMrGTsPKTKXuUQqxyYktIBksYCAsTBbXpPpPNLlnawWTtNvVestWwdDjgoghHGrveESDAadMPhpBGbBhHKngyJjOZJDDdtahPvMWwppeNvVzchRrTKkqoAaJuUjWSsLlFSsdpPzWwHGrZvmwxXWMZzKzZRgGrLoyYNnpijXxdkcciIJaQqHjfiwWCcITtOnDdkKyDTODEflZKkWjJFfBbNnwckKmMPfFlLYaAyhHiIyYwdDCeEZmpPhEozZOeXrRVVfFyPpYaWQjyYJPcyHhFuUrgGRYyuUbyhHQqSgPjJprtzZpgWekEeJKxXkadWwsJFUIiuOOViIeIVvOoIYyWNRrIVvioTnVBclxXLCbFoOfdjsSzZnNyqfSsFxefbsSTttTZztTPRrwjEnNpPneEfFDdKXxkVvmMsHhSxuUSepsMjZpPPpcNHhnHaNnAPpmMZcCyovVySsSsYOoXAahHxZSHNYFfvEeVCfdDxXFfFcZVfoOlJfFjLdMmEWwehHTXOoqQFOIXFfGgwFhphHoTtLSOocVuakCchlkKrRLIigyvlLKCcqjAaAamMCXVZzdDOMmoUubLlkXHlIEBEwDuULQqlLFfKHhKQFKDdXxULQOooOIuUuUiJTaHhQmMqQrRTWwnsuUGcPfxXKjYdrsXpmfMkluEQqmuYVFfvGJhujaziiYDdDqQEJIznkKNKiqKPymYyYyguzOZzgriqGMmsvVnDMFRrfrZzReuMmUTbBtEmdNPRnNrpngauXFfRrzZxAvaMAabBmAIiUQqawWAuaccGgCcIrkaAzWCHPEFZzzhpsEZBCBbcUCjWItAGgavJihCysowWUSjGgrfyjXwWDdGgepPDysSYUujGgalLOyGsOarRAFmHeAglsSNnYFnNsXxSxXIxxCCnSsjJNZYehHBbSssJPeEpzFIiBMmvVpmMiNuiTtIuUYyUoOoOAEeejHVBbJwsBCcJMfYgeEbBGyFqQvjJVmfqQXxFPKeXrRxEgBuEzEeDjeXrNneBhnSsNSCkTrRQqSFfaACibhmMHBKzZyiRgitJQUuZEbBrRvDBQqZQxbkZmbBjOoJjhEtXfFbYHTekmaAhHIyoSnSZhlCQqiIUzTBbTttcFWwfCsjgbBSsCBTtAarRSNVbgAaGOCYOoyteEgaAGUuVUsygJjGReuLlwiIWnzByYiaFyYbBhktWwrRTJdxJzZjMmXMrKkRXZEWWizZpoJBbmaVvARrrRaJdjfrUuYeEuUiKkIYllyqXrGynvsPVRZzDdrxrRZPprKZzRrkRnlmsTcodkibuUerrRbBcJjyYlLvVcUlrvWytToOYlOoLaAZogjJbaYykKmMwVDdenhAeZcJhHjCGRdDWELAUJQqCUrRrRNnnPrRcTWleELwtxJrMmGDeUuEqQEGgKkehHezZzZICccdHJFfODiIlLbBdhKKnHaIipuUyYmMCcDTNnOSZMpjmMCckKaACXlGggzYyflDzeLYdnullLLRqyVvcATxXBLBbhHQHQeEmlLSsLlLemAvVaYIrfsdDfdRdnuUNDdoRxzzcCFMvrhHNhHntZqQzpgjUmMFCcCmMnjCEkBfYdwHgZbBzJXZzNnMoYycZkqldTKehIrRDPpckKCtojIqQPpMpfFPjAupPJjYVsZCXMvHhcFxspPyyYqdKhNlOoLnsSxXYyHbBkGgdDQdDDaHYySspFCcgXxGfpPJaRrQsfdDUuJlLqQGgNJSQWwjJWDUNAFDdPpJPWDdIvEhHwvWLoxXaXxAFfMsJCPrnNRpBbNnuGgERVmMIlpPpUjgTttzLEIiXBLllRrkUyNJiuvEjoOOoJeIOcCozMmrRlmoScCvBbVazqyUBbuiRURrPpuGpPlxXHAdDahVmzeEeESsScAheFKwWkfvDUuOJUMOomSsnVtSsTHsSAcbfIixXfFFBebnNJbzQqpGSbMmmKkmpPNYXxREWGAZzNqVvcyKkKDufFXxaqtTeDYyOsjGzYBVUYKkdDYXqfHDchHiTtNMIilVSBbcCFpPLNnAYVYvVyLlLlEevAhRrHaVvjHRyUuYrhAaJwWFIVeWeEOtTIzCbLlzcZNDdIZrRLlcNnzwZzcMTDRrTtAaOsyYSdiipHLpPsgXxFrRfHhOWzZNODpPoOeRrVFTtZzRbTXZJjWweLlanNoBmMNnSsUkKbPOoSCIhHPlLxSNnvOaiIAoXcSKrRkDdDIigMLlkdDMKBNJjjJjJsSZzWwnAaFsuNKlEtrRpzCNneQqSsvVEJdDjNsSjJUZRrxXzQSDdZzAgGiiIesSZZzoDpPUpWwgGDdPSLlIinNBbVCEzZjFfCvVUuTtAaQCcDQtBbNnTqQQKSXdbsjuIiUxcCnoSHOrRZjJmyHwJmMkiIKUuQKimMWwlUSsYyaAdSsFRrfDOoaNjfYSsySMGgmjJdDPWOvXxVoabBAdcoUfHhFuCcXHsSdyZzYpPbouUtTOZgZzGeEjMSULXeEPpvVxQqDpvqgLloJeEjaAMsQqSdTtDrxXgSsxAHktTuUSmzZPSsprdDymydDYwYWWwmmMxvJgcGnjJrRdDNLOzQqZADdazzOcPpshRrEHhgaeEKyVPvZxhZzxooEWweDHhcBAKgGuhcCXxuUChEFpPfTxTlycCYAdDoXYHWwOgBzqOTrRwWxXgSsXSHhxXPmMVdAfdDCmMKkmgGyYLksGgRrSKNTsyYSWwtNnhJjHEbBnMmNVWSslLkKZWzbBgGOoLlwaDgqQfFYZxdWAvTtVkKayYRUulljdDJzZeEqBbQhHkpKkRCckKLlkLdjhHloOfnNyFOoHLjJNnlWfLMSKksdJxnWSmwWXiwVbBxQbBMXxaAmxSsJmMZUBOOQUZQqzxVvJjfCdDBbQRWwrHMSiNfFAgcCnRrkQedDqQEVOIvdQqiIWuAnwEbBeWtKkTEeQqyinnNnNEAGFfgMmaeMmhLmMGkqvpPnNbHUFNnLKIVEevJjikfFJUAKQqHdfbBiICcFDhyYmMWAaEfFZDADdRlLUujJwtCcCGgcZRvjNnJVCwWcrgvjJiMmIwFafYnNytFbrndIFMmfMTgEebBkjmrIpaRhtTlaIVcPvVpCvtTXxwWohxHHtZRzZzZaAeNndDEkKqQBAabPDdKhyYOoFopJjgzwWZsVvZwkKWzVJwWjoOdDvWlLzCFaAsSTlIaAYSsyWyhHukgsSlwWLGLlPqBQqYycEyuNnZzUMvVuYqQgfFgVMPOLlkuUGdkKnxXxXFZzKkUIiuJjfeYGgvacgQdAakjJfuywcAaNaAFfVUujOVvvhHhHOOwWRPphVVyYvVvRrNPCZheEeEutYDdDOodNnyFrpvVaGAaYrYydDRdDInUuAaXxWpUTtuyAaaOoidDxsSXiIoybHhvnNZwRrbBWJWwYtZzvVTWaAhHOoDZQqAaAaRrYlMmLPcBDlAqipPIiykpPAaACyYvFyYZHKcCGMSsvVmkRrLlqCcpRbEtJpOoNxHhPShtTAOkKdQqEAGFfgazsSCcvpzZoOYyiAJTIiczjNndXWwxDxPpVeMWAhKgkazWhHkbBKyoOYmMzZKxmnbtRaxXSsoDLpPGFjJWwfgIvHBJjAabIPpizZgLHSZzsXPzBubqDdLYACaPnNWwoOmlLMtUueRRrrKLxXUrRyYuJjnuDdYsfQBINaNFfnFucbMmBiZzIslIuPSGCaBZDdOqXnfFNhZbkzZswaAfzZulBNntQNnmMoYyKzZOSKkKdvkKVgqnWwYVCcwtlqQgGLICcvTQzRrZAYMYDdyGgmOoGKwNnmvOoBUlHrvFeyYISsihnNxAFQqehYHSOoRrOuNvPmkKHhTFKQTtqdqXxkKyvZPpzfFZzWUukKXKkHFNRtwmtTLSsqDdLzZlVRklKZzcCiDDLMixVvQekKEWiIHhJZwWivAEpPlLevMlLTtmVQHnNeEIikBFaArmXxdIAaiPBqgvVGoGreRrEiInNgQqFrRfyUeFAZSsCPpeEcAwmZSiHhkqXkKxSWUcCdDuPNsSGedDllOfpPVTtvFanoOTzZEdTtUuDvVPpsZOozBKkQGrAJySsrgzZGNMwIiIYyiNniQqvzlLZEjLloFOBbcgGPQqTthgCGvVsSgjqQJFfxXKkIcAaYwWWBbIdZzDMxXnKkYhHYjJyyXJfFXQtggGSskKZzGTqzZxInGEebkXQLGdDOwWQzZdADsSAQMWwZKMmnNMQfFxXyxCDGWNnPfFhHLlmMpcBNnbnaANdUNjSCcQaLiIYtRDyYdrZqqQQyMmTtraAkANPplxgpwNGgWweEwgphHiiIprNnvgGDdcObJzWSZleDGsSFfgIiyKkpPYPHGNEPpmsKreIiXyohHhoOJIipPuSGgaGOogqDpNwDdtwVlFfwWEeLGJiIXxjmtTMrwWRNnmDdozEbaIAaOoOiIoNGguWwWERxXEovVXYyXNaAnbBcNntbBTChBRruUjIiAaJgwPpCcJjQnihgnKkAaEenNGgNyYDdWIrqQRSsgJEcbBCCXqNnQxaAwWJjgJJPBkKboXbBiDDXxvVwvVkKWcCZzKferRgRrUfeEGiIkyYzYyEesSZmAaunNJjUMTfSZvQpoOjJwWDLldGUuvVgPPuUSCSMLrRlmGgZXljnNcGdcmIiMtaAZcQuUVQHhqvetAfFaTVvwqcFfvWwrRVARraHvVwWPHhIgPpYKVgXLuULlkCNBbnrRcEeGBJsUGgsSgVkIiuUVjSsrRFtLGgSKfFpPrRNETVvSXxsAaZFhIoeEOpNnlddNsVvDyPpwWzBQgMYymcJbsSVjJIikTtMlOoLkXxAVvatGqQgnOWIiwtTPHYHyYvHhVHhhoxXONnyPpQrRCMsSmXxcDdGecCTyYQJjnNqDdtkEeybBYGZatppXovkKWsSwZUuzgGVYPhHWINkKuUXxwAkKtTyYjCmMZQqzLlmMpPcizZbHbYyqSjdlBXxCBiIVXtTnmpfzBqTtbaiIzyYZdbBlLvVwvMEerypPUiIuiPaeEKPgMeOoEmaAADMmgnTtBbVvfGgFAgGXvVdDxMmlZMmzFFyGtTNNnnRMFfgGkmMymswkKthEeHTWeECcgeElLlMQaibEsSBGrrRrKCeJjEonegjJEeFkkyYPAaAaQLFfEethMEtTyYTsPpSrDuWwUdHYXnKHhkdDJwCcqiIiMxhHTttOMmepPzUQqSPpnShsSNntTkKKTFfSstKLQtVTjMmEuRVvQhHmaAMyDZUuTtzaAeEdksUucCLPpMmkiIiMmcDdFxtTpIiPeIiEabBAEuwWpthHTWptTIiHZzqIDyyYzZYvlLGglXdmXEeFMmYDtyIiVvmYGgHOohiLlQqzZiIZzDdJextTkUTcAkKawWCAaOoHbbBpuUKoiIqQZBuQqTaXxQYFfSsudDdDcCUQqyypvXxVXxXiZaAHhZYKkfFHhNpPUZvSoMmOsbwWLyAaqfxVehHEMbBLlsDdQHwUtTmOoMuxosuHhwWHhXYyXkjBlLpysehLmMLZNnWzqXXyTthHYLNHhADpAZxXzZYBJFfPOopjeEoRrZzjxSrnDdHKnoOBVwELlMLZTtOqQozSoiMcCeETtnKkopVlRrLWkKVvOKkwWogQdMVdDcAVvjJrsFfYyxvjBlLPcCWweaAUuNNngNjiNCloDisnfFKkNSGgsSrQzxVCcZypGRMSsmrNngvJjQLtiSkKwSaQGghHXxqfeYyEdOyAaaHvxXaATphqIrodLbBIkLvVALlalcfoOyYlpPjJLlmAwWcgMVQHhCfUZhHzAFQqfauDdUubIkirRvVZvnNVoCsJjBBbeEJjNHhBbnRmMrSJjsbAaubGgBUnzZWLkKyoOYTGgtlwWIiwUCcjJQHTsoQqGgONLsSWFfdPEepYEiIeNocCcCsluULSmMtThHLMmlnxthxXaIiyUvVuSskKrRufrPoOaAFHSfFMXxmIizEVbIFfJaALljMmBbFvJjIFfTkSsNjJNGPXxpgfkuhHjJnhjYyZWfMyYWwmvnKKkkuUgEfbNNmkFfcCiIMmaeWsocmqwaoErPdvUusEMcCmewWmMWSpPsjSdDszyizqpGgDVNDNMcKDdCcunNzZUxKCkwxUjUAanuSuaWwIzvvVVHYyqIieKbZzBZzfwhrRHPOVvQqTtoNbBXxAxSspCdDrRngOoPSGJjZzAadDFDSuqQuUqOKBbFTtNnfkBbfFojJQCssSpPWwSAacpoOntTWhvXpPVvxEedgIirRGzmIpgwsfvVjJacCUSXroORxRrSIZzbBFfiSvBPpbcJCcjzZCxEeQqrDKkYyQzZnBbNVcrRVacCvVxXAvSsUuvVrFYOVvoyMKeWCcwEJwWUnNKkSJTtjAvFIVvfzZFixKkmMbBQJNNntPLGgXAkEJDTtBjnoTEhMoOmolnNLgDdwWTtEeKTtESMmLbOnoOEzZCcUeLlmAamuUoOLqQFjqQJXdgGdcCDdDDiIEGgmgZzpPvFORrMVvaZpPtTkcCHLlNSdDsqbBUDdwoDdOjJWUBEepPudDrmRrjJMSsQqRUCcwPYyPpXiKLiIlkaEBIimmMfFMutFhHpPfZjJISsOLOlvLlnYyNnNpPxVZzrRQwWqQqvHEuftsSGgVmOaBOvVVhqQSvfFVsqQyCVHYyrnFIsgGjbBGOoaXzKkwOdDIRrTtroORCuUavaXxAWwLvDdVpPlWUKkuHoOPphTtDdvDWwqNsSnRrQdLlwRgSazZkKClxGgXQqxYyJjWLnZzFfshMmBjcUuCPpJyWwYlnBfFbNivJtkhDdeSzmMZsSeFfTtFOLRQUakEqKpPkDpPdcCQGCUuEHhrENnoZKkIcbBTouUCcXGTtgJSEGgtJJNnVhkXyYgGLUhHkKsQjJiIhHJbQqByvxlirRILMtTmZCJMuPpNnqQzNnZspPiqyzZgUaVvQJjqPrPNdqQnNgGGLlgTKktDZtqLsSaAJBbUZPGgYyGgBZrYyRpJjhHMHXxgSNYPOoyYEPNnpEfFKRAadIDXJfdDFhFfHOoORrXQQqCnNuvWwVUcyFsSdcCLisKkJIijPpVfGxcCXZzRzJjUuhJUuLlsSfqDNAanvyYwKKmMwHhEepPnpPNlLWTGrbLlOoAaBplkKjJAaMmktebBjDdYaAipPNnnNcCZLlzoYcCiLluUHnfzsSZFvnNVSMsZzlKUTtNncuUCpaAHhmMkKXxizZwBwElfFQPYTtypqUutoOaTVGgMmKkUTeEtYyQnNXOXxOXfFEexVyYYbknkKNvVEeAJuUqlLQPnsgGPpdDTkKcBbCHhUZzuXPjJStTLlscCYytTPtTkKZvVzpbBRrotTOcNpQNnOjOaNHhndDqQvBMJjSlwIiXgjddQxpwWRrzKkZrfhHPsShDFbBRrfVvHCcaAbBJjLdhHaAoufFUixlCccAaCKOvpxNxXZznEIiQEeUjPdDkXxwWRrVvHnNcpNnxKkXUKkHhrSsCbBbvVBHVnNcPpXgDnNdDddZgGVvoOznNZowWNgVdDimzZoEhxLXGbBEegiXxIFOXxoGgMCiILlIaAPpIiqnGggGblCdDnNcFHIuaAKkqRrQBVBbaAdBbcCSjJPpuUjJnNshoXxOqmiwWIZzaAsBrgUsNnSYuniTtrocJjTArQqNnkKJjOoRCTcJbBjZzCcCbBJOzzpPEqvEmHLEetTmOorinwWNVndOXxojJjWwQqJsaVsSvAJmUevqfDsouBbUJEejJKkOGgAZzunNlIiDZvpIFPpPSMmwWsEepqQWcbBwWPgGgGpCVnNUuaAdbBXlnNbzZMzQqZmXbBkKNJMmUSSUeuUZzDdSjJssVvFYyrTXNqeEDbBRrTCFzEeZiIdFwKMJTtNnxyYXWwUuyYyohHbVkxXPpfFXcYYoOQqygGjJoyYDdrRuTtmbaAhHBBbihHIgGcOoCWxXzBJjXxIhHiHhcWSswEeZznNJjEefFZzEetbBnNTjXkmeoFpPcYYXEEbBgGkivGlbXNEeBizZMmICzZcbdDouDdhjGgmNqQqCcQnOolLgtTnNYbBPgukKDoOomMMcCKkgaAGGmbxXuUeZzEdtuwJnNjpPbrRZzURruOoNnJjBIxXqZEVHhfFFnfPpYRrlLjBbJyXcLlHhWEewWwIiBXxbkKqXxBbhHQyiIYNQqKktIiZzoqQJjTBbtpuKSYFbliILEePTthHvPAapcIHhiRrVPYyBkiIXxBbPjJCcQkKhPpHpjJJRxFfmPphHbjJBbBlwFfOkUDJAxQmMTOGgRBbrZzkcShHvqQqQVuPfFpiIUqQbPVvcqQCuUaBbAuQqoOxwsjJLAalwdDRrBbWSWXHOtTJdDKkwXxCcIisSGNXxUCvVcahHZZzzdFvCcJdIjmKkMIifFnWwNxxMmXvcYDiIokJjSsNzZcCXxDGoOrqQRJgGYoOGrKkRgGgtTlLlLSsAaRreEqpPQyYeZGgLbGVvpQyvWwYqPUgSDdnNKHCcSfdKGSKwWtTWwkKEAahHzZHWloBbqbTEtOiIoJdDKvnNOTtosJjREwWxABjZzAcDdtTWwzIiZFGgbBWNbBnARZnDuOzZoFJjBrTtbDWmMgDqQtTHhRiILtTbEeBlXxTVhHQPpqsSpkKlLEXoOFfQiIqxkKQVXaAogBpPtTEQeEzZuarRvcwWSPpsvVCmMBbGIifFeGGWwggorazkKtTjiCcIJhHhqqQQWwPpXuUOoxkKRfDdVKkhHYoOEAazZWwHhBbqIijpvSsCcDdVKpJjfGgqeYyEVvtBfuUXxFbAasvVSZzwWTrYyRgGQOoEHZzqiDuJdDjaADdJsSujJopBbPDtTYLbULlkNDIiatcCTkNnFTtBbhHTtTJjVbjAaTtDdJnNBzCcrmMRXXTPiIjTtJkKWTtKklBqQbUuXxWRrwyYCQRAazdDhBbHagGRrAZIiRORZSszXzZxjipHhiupPGGZzPpgQqSsPsSVAyYaHAaiILbBaAthTtpiIhZmtjJKkTxXKZOOoPTtxXpxRctGZzTthviCWwKeQRjQKkqAaAasTXMxAfFaXkKIirpPyYzfFSyYDDdoOqLUdDulQdWEewNnsSjnNnNCGoOgbVvGIjWwkipyYfuUWmMwWwFaQfFDwjJpPWIcZUuzfncCNAerRBwWPppXxYycqQGvVYOULlsWyYwuUSxhHDdvqQRsXsUJWsSRALlHBPdlLFApPaflLTLxXjdDADdQCcyXFYyaAMHDdhtTnNdcCRrChHclLCyBlCcguNnUdrRDGietdDTPfFIipImMmKkMxXBboOdZzDzFfyWwiIzzNzZoUuXxXSqtTqQctTkbBIzSVEuUehkKHMAaHhzZbmMmMBcZwcCWzlEXoOxEYDdyDdRkehHZZchhHTmMFYysqQSLlvlefFEmeEMdDLYyKkLthCcHmrRBEujJUPYypQqPvIiyYVZXHslEeaRrAkKNnDDddEtTJVyTtAaYnxXNytTAaDdVvYvwWVdDlRrLnNfFNPpGgnSsPCEOLlVYySsvoecUuAatTulLlUaCYyHheNnWwBUcJjdDCEMmeMYyNaAnVkKVaxXAVvWMmGgwYbBhHhNnuxzZlWwaArHlmMKTPmMzZvNCcnVdzZDkKBbXTtUreEMmJjCcPpXxTtRpbBrRowWMiIiXxcCvKkAaxXhHPpoaBbAgGcOfXxpPspPCcBvVbSFWwodDBnNHXxZzyYhCLlLxMmXlVvABgrVvwWRzZXxIiJnNCcBOOoDcCdKmAPHhkZzOoHhoXLiIeLlTtDdzbgGYeGgGuUpBeEbpPcCBbpdDPGhHdDXxVeZVvzqaVxXHuwDbByYdIiYyOfFobBqYywEeWQiOfFqvVcCWwvVcCeXxETXcCtxXRpPHwWhsSrjdDJfxwWohzOPpyYUPpsvVSLJYYeIiXAaxkKmQqyZmvnNjJXxVMzEeAuRrHBNnpmtTNnfIiFMwWwiIMyWrQqRYyvguUuUmMZoOzzoOgAaGWwlLAayYsYQqyKVvZQUtTjJuuYNnWvVwzZyDdUsSXZgDCcdhHpcCPZzkQUurRhHiRruZzRRrJTtQqjoWobBOUuDdLlMmwvVNufFUzxcEeClLBbTWPhqQIeALqQBbBbnNlGpAaPhoOrRHQFKkNnWuUTtxXzoOOoXxEeukZpkZzKPhHzTFhGgMmOWbYnNurRutlLTUsHyYHHhhhAELlMmeCchHmMSsaoDuUqwdlDdUuLVvpPDNDdRbBrnVnkKBEdHLZzeNnEGgjdDJfvtOnOcuUfFCYyBbLJXtnNtTXxUVvEeFNHhXWPTtNVvPWwexSsjDdJaWwaAAXlZjJPpYyORrmKkMojuZzUJxXgcCGOodDJUuqeEQRSMmeEMGrWwRgmsIihHSKkFfKqpPQkpRqLlwSeEWfpPUudDFwEeDdpSpxXPwjDkKdmRrEiIlzgNBexXEbvUPfCcJjfDiIWwBbOoHhxuMSsTDPpdxrAaAYyxHWwxqOoQHzZheEXXNnjXcCtncCOoFDdgGfCoYvVgGjaOobMmQzZqlRroObXsVkKvgVvuMmUaAGMmwUuNnJdKkDoOezZgGEwzcCFiZxhdDHIrRiIKClLcohHZzfFxqauUNcMhZzVVvvVzfFUoOvVjwWJuGgtTQqqXDPnNpZiIyWwnbBTtAaysttTThHYfwWFyCPpMfiyYIBmMIcCiEHiOnmgcaEtTeBbWwRxXtyleEHhLEeYuUHhDhGgHEoOYRGAagKpPmMldDRSAaZMWuEPpeeeEGguUbBIieEKLOOWwWPlaALMVvmoAwBbWGghGfRrFRRrbJjBrfCYjJrgGRamMgUoOuGAeDPEegLZtTzKoOkcCJVxXvWwTcCiIiCiIcrRLGglFLlPpfFJjdDFQqXnfFNxfFbUuKkaJjoOsPpSQqxXcPjQqJaBbgGWwAyfFYsACcwvVapPAJIijWAaWQqYywceEBiIxxXSLshwxaAwcoOCIiWXWqMmQsIiLkKQqlosgGzZYySSUJjusvqIldBtTUiIZAavVXBbtTgKkGrRbomMNdJjaADtYqvVjJQhRrxXuGgtGwWXAsSasSOozWwZlPpLsSxXNBbnSsUuEeCctdDTCnNckFOoHhoOYyCcUuoyYUuuUmCcMQyvVLnBbNtKqrRQkTJjNnlskKSWwDdYnMZzsSFeNnEOoKrRkJjcAavVnOGgYyymMYNnZevHxXQWQqwqhJjLlWMFfmzgGZDPTtHhvlLGMmTUufpJjXSslZzQcFcOGgtTRYoOCcCcjHhFNqQnflIZqdDZcCzZzusSUfRSbabAaBAAaZzBWCcCIicwJjNiIgGcCnTbeEBcCbBMqQmuUBbIKkoHnNhHhlYyLOieEwWVvdDxuYQqeiFfIwjJWsSjJjcHoOaPpuuUefIiRrFlLceEFkKfOoHVTYRrytxXlfDeEvrRLrREefFAaQqzFfCcZLJjNnnNlPRGgTCctqvZZdqQPpCPCcjoOVvJOTtoVvFMmfzZpjxXJlLQqEuUsSDeEnNdXxeHhkFfKVLlvwEedrRDaxXYyYyQWNFgGfnlgGZzLFAaYdmsSRrvJUujNnbnNAakxLlhHXiIgRrITtMTtTtmNwWUBbYyOvVrtTRfGgwFfqUSsuWSraAQqRsqrRQLlyYvVTzZFnjJPKkpKwPmMQNnqpTwfxXFWtPEeSpdQUQLHhDdlqZbqzFfCcZEJjeTgGmBbXxMaAtRrKeBcCKktTUuRrRIikKKiIRrRrfFhjuUDNyYnNnYEexXyYDdDDdGpPldhHScCsPnNaAvViIwWpNnIiDcCNUuDsSMmdeTeEttQTtqhVvrRHIinXxZzsSNBbnUVvVFfNnvfhHGgFkKuecCEvAaVjJCcuoCcOamHjJPpqRrRrGgQhKJjWwfFXxFfrJrlLOHhLGgBbNnTtPuUpDdbzkWwNnLxXikUupPrWKDdgFfGkwRDdsDdeLNEemaAukzZYypPugGUuteEfFQfaAnNYyJIcnCcvVNzQiINnnRrNqfNnFuUFicCopNLlnhHPOeEICcJlLLljwsSWfSsaQqAQKVvVvLlRlWFBsFMmRbFfCJeEuUjPnNpaAxXBRrAabBbaABiIfFjJCwaAqpEePHwEeGgeEWhPbgGRrdKetsSxsSgVLlvqBbQGuUsStelLLcCQyYOorfFyLlYTsUulXGgPyYHhpbBLFftTeiIeHhEzZErRRPprdVcCnNvrRRfFtreErRgGOoRbBjQqHhEeMmJoOliIHhqQmgGOaoyYjJKkHnJYyWwlLdnNDNehpPHPdDkKpJoLlOjEpNnUuPNnRryYrRNgdDqSdDsjejvjdDJPhHpXxQqceECVfFlDdSsLSsmzvjWwlLkeEKfjJkKFNnzZnFflLaFfAKkZzOqQszdiIDaBmRryfnNzXxusSodEIiIiexhnNuUHrkKRzZrMcmfFiGOoCPmMpcclIBSVPpvshJmnNMAajgzZGprRjCcdlLUueEaAEeDDbPpleYyELBPQASaGjJHwWhbhVvHxWwXtTcCzrRZwWMmwWUugrRpIiAaurKkLzZLlqrNgkRrRjulAUuPplLaFfqRrQYfFovVeECUuKwDmMAaMmdWSsFSszsSpPZGwgHhmcCyYxXlVjJJjvLGgNvVnfFMmrRIhxXHaQBsSonNyYUuHhoOzGgZzfFKgFRlxUuLlcCXtyHhYmnhJIIOoXHhzZrRfqNaViISsqudDTMvVXMmxMIiKkccOiIoCRmNaQqMmzZxyYXDWwSsREnNevCQqgCcuMmUhHcCUaALluGJjMbGgBjLqMmQfFsYRmMryudamMADIkKlLPpivVUSlsJjcCVrRtTrOoRkEeiIWIiNnHhlLUbxXBaNNnTtnAqQvVDdBbvVBbAaugGdDCkTtAabBKcsknNKEZIicCLEelHhJjNnZExXoOeybBjJkxXKOnyYctVvUhvWkdDlLWQMCcqJTtjEfFeQiIDdyYQsSeRrxXqmMQyYBbEmMJWwpPtTVzZwIBZgGyYLlzDdDxlLNmWwAbBXxKkaRkKZzlBboOPGgpOpPokKaEeOxPZzwWVfnhwLlWtxXTMWwdszekmMKtbIiewWHsSsSNnsSHhpvVUulFfLMmgyXxUXxZmMcCLBtTkVvKImrRMoOqirRIBbmzZQgGuAEeeMNnbBAaaAbiIBmLTtgGlQqHpPhdEOTtdDazXTtxDyXxYdJuUpPUujiIrRJjZWouUQqfoOFfcCFdDoOOIJjmMqQiIWwDdPpPoOBbpLEGiIgelKsSkRZzJjbBrjjFfJOnNgVvyYVvmMHhhHEaAePpGmfFnRNQqwWWwnLhOoHIvVgeEhHImMNFfEKkepKkPgGGgTEetQqwsSDCcnhLlHoOGdTtDgEerXxRpPSsOQfFEemMsWwgTtOkKozeTKrmMRlxXLPphHeEkLDKTtnFfNkBbSsFfzUuqQmwWoOyzZYMYDQqNnNnFildnNQqqoOQVVvGgvifFImMYyCuUANTtnNnjJuXxqFfRrQPhHpUDdDMmJuEsScVOLdDWwkXosaDmMEsdSsDwqacCAQVgGLIbBiKSsklqQIVpPvbByYinzZNiIuKpPkDdDdRrzZKkNZMmDuUEedPptefFcCEgnNGYyhHuUutTTtUTwAwXxWfQqFaMcCmwWIyYDubKkBqQUnNdNaAUuEgGeuzZtTiIrzZRHiIDdbBeEpzKuQqUxFfXWvwWVVvsSoAmcRrLIillLUgGuDdgGUWKkRKUfFuBbviIVkrqmEeEeNZzjKkJDOoAlhHlLLaISxXmMsYyuRrnoONORXtTudDUMdXxzZDXNnxrLlRmsSzZsrRWFYyxXNrkIiGaHAVEeNnsSuaYHkKFfvVbAIiSsIiaaABoOZzyqdwWDtSBbyTkaAQqzZKpuTTiOoiIrRIveulLxRwMmWCcJjEeJSsSNnGpPtTgyJjYZvcCKkKkvdDOoVIYyrRPpcjMmJrRbBnbhPXxpYyZzIvgVvYOoGsbxbBnNXBpPaAPUuFTOoiItJzZMnNiWsoTtGdDidDITtxiIPpQqgDdJjbBGKYxXawWzZlUYyuLywWWjJreFfsmMvVVypdDvVvVnNPYKklFfPvVpeErEnNpPyuWwBbUGgoJjcChVPpjJJjvyYtxIuMmNkGgLlKnUmHhMBuUwWoOWwbUfiRrFfIFqsnNSvzZayYAVUuMmLlPGYyIzZKkigrRhzTtZzZVHhJsUuSJrFUufJTtCeEczXxNnrRZAhntTRrEeLlQqIiunNwWPpFKfmMSoOsXhHxJjwWtIAXlLDlYyLJkKjYtTRkKTwCXxhhsTtEeMFKkRibHhBrVIivkkjVvYySsAaJKnsSsTrRtUBlZzaALyYTZfFoOzHYFfCjAaqQNfFnEvVeOotTzRjJCcjJrZjyDDddMmYgGKkIiLiIKkHgGhZzcJjlsSsSmMwWtGuUgrRTEbBkKogGOefFHVvYyGgSiIlWwLqBbQsTAeEwWMjJCciIwWEecCdjJhBCcbkyYVFaAxKkXTjJNnWwLcNNpzwWZzZQqDfFkKcCRLmMlrblLiGjdDLwWlJSjJGgbyYuBYyMmEeQqyYbgGhoYtsNnhHJVDQqjBrRbIiJMoSkKsEmMeksSPtfmSsUMmuMKyRzZrTtAVvgGiIamMANnauUHhJiMmIoOjJHhuyYTgjJGtmZGgTtMwvVmMGgzAaqQnoONzwulekKCcEQqFfiIexXWAaNnwqQiIxYyXZzrRdfWPIiptTBDciwWIYyCEeoOFfraAnQqNRbBJBbnNTyYoOoaAdDaAVhHvmMOKkfFtWwvFfVIigegyYdGgDHTtNBbnaAPpWzZDdQqwUukKYyJjhibBJjIQiIqrRHhRrXwWxNhHEeLqQrCcCcPLlvVFfpOqaAQNnjZkKnQASGgssSCcjjiIbNHhnBJOxVwWvcCQqsSWwmnNfFMbBDdXgGRVvRrhoOHroxuPpQMJjJURrqQucRrCuUuaAKLLllYPpykEVveDOodkCcTOoCctKcCQPpqXxbIiuUUAawWcCgLuUlgGcCMXCcWldIvmMSlLsIiObvVBsSYtfFNnRYyrPpyYTtTSsyeJjUuEoLlyCcrRJPLlpjqgAfFaWOowBXQyYqxXxynNtTfFuUOLOoEeYylNnWwmMRvOkKwJTtjTLsXIpPigyYGTtxRpWwJjsSxXWXxqQdgGDQMgGmVvovVOwWwWSHmhngGvJyYfFjQqFeheQqTtbBEHEfTMYCcyRLlbrRBVvwyKFcChRBbZcHhCkkKKxgGjJXYybBxbBCEecLLRdvVDYjJhpBwbBrTtRWeENnbOodAaDPtTpBmMpHNTtnbrgSuzZvVLjJWXxwxXFfxXKmSswMCSsSXxBbsnNpZzeEPXxciIJjLlFVvflLmMstsSfTtFTwWSDdmMLlNDdnVsJjaAaASPCcMpPmXzZnMmNxFvVIzxXdDrZupPhHUzbBUXjJbBxhxXEIumMRrUiemMnNjCcGgJYyUuAaUIhHqQiUupPcmMCopAAaaUuPOpPugxOoKkXdeOokKEDgstTSaAHhITtKkiBHhQIidDJuUpXMtivVIJjqQDdTtTdEeDqpPQtTAUxbZMmAaUeEQquVvzkbBKMxtTXmAgGafRPprRSFfsbGggGMRJjVvrmBpuUUJjiAadDJjgGvybBYMwWmyYYyMHzZxFfsSXuUzrRMhHmgNnBbzwWbKkBcCZeEOoIrSsOAapEeXXxepPsSnuPpUNVvgGPtTptTvVEewdDWYyJVvTtsfFSfFjRAarLlxXLXxYABbayliIqQgUuGdDcCXHhXxxXvOoVjJDdbNtTJjyyjIvVibBsSxlkKxRrXoHhONnoSsdgGSsaABbcCDzZSZzsAaNnREermMKkdgGgUvViexXEdmMDZdDmxXKkRsSBbrMmGOUuCcogohHzZBhhHHmOoMlLWBbwWSsjJweXxEIaAiIOoiCcVvGgybBkhHKRrYSskoOKkpPCcrAaCcZzjZEeRrdDdNmMnTdDuUtjWwJDiINAaWwDzLlZdcCHPphNTGgtvpPMDdXxeEmFfVXohHOzwWZgGpPxyfLtTZzAaSsSgGsYyriIReMmEjdDGrRFJhHjYyoOfLlRrxXgJZZKGyDJjdvBbiIZzCcbBzZVxBhHfFPbBPtTtTuUPppZhHUuEekKzOhomiIYbByMaBbaAALlNnIoOiMmeCcEmETSstesSMEMSsmMuUzLlEtLZzETtNnlLejJDdlTaAsNnYyiDdIzZZzitqeEdDKLPpOjJolLlzHWwHhlLrlLqNnQwWRSRbplLHhPoJjOBzZkwWKyVvRIiiIrYrRgLlGcCcbdDBCuUmMrmLljckRXxTtrQKLlMmnKkNqAamuUMUuFdDLlfUuyhHqQbBVvpPYlqQYyttTdVvDTCcFfwZzCcIkKeEudMmlLDrmxMmXcCiIMRaNnRrdDQTtJPzvVfFvVEeSHdeEDhCvVctAaTCcwWaAsAaWsTLuTeEfFQqVKkvpPzZLsSbBdsSeEmaAkKdDMykKwWYMmrRGaAgnNaAvVfYwuUWtQqeNnETlcCLzwFbBfXqUugGQxyYoOWZEeygGnbyMmGzZulLJaAjfFbjJnwWBbLlQvVbNnjJrRSsnKfFkzZhHFfrCelLEpPnNrRcIiBbNoObtTrZnNzRSspPXxkKMvwWVoOmhHlLPbBplPpyyYYNnjJLkKiITKXFbBFfcMmCNnfxLlkWwOwWoBhHbtUgpPCxYyXMmcVvVvEebhAhHUKkktTtTKuPpTtzyTzZtYyrCcGZzhHLzZrRFfHpPgLlGhEYlLNnAayDnNGvPpxzZtvVkfFKnNnNZziItcFvViMmINQqkRIirmMdJFfjUIiugGDXxTNntOoCcfFfQqlbBfKkPpFLJjAGgKfFnNmMkEeaIibRrfFBFPfFjuKkUuLYynNgGTtlvxXnYyNiIlLVwWUQVvSoOoOstTEjgSsjJGAaUuJIWUuwihXfFWHhJKTwhHaAhPjJpfHhxhHNnNdDBbxXnCXxGgcZzBbXAaFJjiIlbBIiMtTTtUyYbtCxXPpvVjzZOJEMFfmewdDRrlLWGgwMmGcCggGWIiwWbJsSLlzZCcjkKFfFbBrRujJUPpfGzXxZyYgBjiIoKkJbwWBCVvccCcCcGgFWHfFhsSwZzkKkDdbBKRMLlmMuUdDFfUuUyYrNFXmMxuUzZXxfBTfFPcCUJjwWlQAazZqPpnKiInNgmMGJjhHOKkoHBSsTsnaANRyLlYroOfTtcCFQqDEegdDGXxmMhvVsSDaJjHhlvVLANnWwWjbBbBaAckDcCdKZWwhHuPpRAaoOrCcPpiIOgGoeZzEVvvVoOhdDoMmOPcCgGeEphHHddDDdOIjJnmbGeiiIIFfEgZkyYKznDVnNvZzyYBbtILpPliEesSsjJSYnKRrkFfZzNLloCIiYywWcsSpexXEJjBbgGWGgwKyzZjUlLfFuEeJjVpPvHhxXJYxXmMzHhZXxhuEJBbrRvVvOobBVLlhunUuNAapPdDFPpMPpKYykdDVYoOypKWZzwhHkZfXDdxtsiIjJsSqQFfSQxKkQHhqXZAIiaTtzsojJOoObBfFSkkKhcCqQHIzKhHtTEerZzlIceEbBYysSAaTHIihtTtTtyYcCRBsSbrCiIDitTIWwditaAuUQvVqtTpPJaAjRiGgeEIGgryFjtTJnNjJuUlpPNkKdDnCcvVLrRFfaPpAfDMmQqdrjJjJGgRkKTSsVvVvssSStaAYVQEQdDqeEeAaIvViaIiuKkXxuUkZzKrRyYUuwWUwWAJjRrBbeInNiEVvYysQZzGgIiqAawWNHsShmEBbypPYukKUePpDdGIiYyVQOghLlrRyYHkKgVkKhHFBbyVWwvYmnNMgGBbfBwuhHUWVFbBYyuUzjqQJZhHzZiUuIflZzxXZzykKYjJLkKbsTkshHSVvLlvVKIfFiBbQTvIiVtxXHZzGgkKwWVhXxxBLliITtbgGIfFfFiZzAgnNGCcjJlLacCjSsRrJrRgaAGDpPdXdDeEpPVOoNnjJgGFBZmlnNsSLMXtTOoEQwWqXxSsexEupPUeHhzSseEHRrDQcCnNZTHhtZggHhGGzahHAoONnEeubBbBgUuGxuUFfXpGgPjJUoOgGwqQObbBBoGgBkKbalLZhHzAAPgGyYxkKwWBbAQqaCcxXIiYyNnraABbRgGLlXvVxIYyfeIiEFcLlCrRoOFfGgZTYytEelMmzZoOiIuUMmOomMLPVvaAMmMmphHBbiIOEdDqQCcRreLlNnXxvVUuoBbiIbmMzZBVFnNISiIaEeRrACcQqjJxXYNgGnEeCcFqQfHiIUAHhaAasSbiIBXfFnYyNeEEuUePhHzZpAtTaBbhHmWwEYyeuCYCcMmWryVvwWYRLlshHSsSfTCcXOoFfXxoOYyBrwWmWwMWhCcPpHDnNAaiLlAanNPpIJjdhOovQOoqDPDOoMoZDdzONnmdlzjJZjJjJquUQjJfFAaFfLcvDdVkKCuRrkGmMMmRrFfgKvVTWwCQqctyoOYDdMZzGgmCcifFSsIaeKSSsmMVvSsQvpPlLVEeKCgGCBbcckUuEerGgeIiCcERBbJjWwTtyYvVuUDdbkKaIdsSDiZzlLUuARrmDWuUFYyfeEwYynnNNNUdDuaAeEnLlzaaAIiAaAgGdjJmzxUuXqeEYyiIoOQTLliItkKepVvGYygYyLlPEuUiJjyYUoOZOozWwsSdDhHtTutpPBbZznYEeyFZLlzqvVQfrKkRSKksSiIQTtHhWwjJQqqfFuUhHSsQqUuYysTpPKkrRyYzbBDoOdZmAqQRraMgRrGdDiIOoghHHlLdDCRrcPIiphiIqQXbYnoONyBGgaLwWlAsaADdDdSTBbDdUHNvVnYyeEJjhxXdDDMmGgeEoSsOdxDyYVvdqQFfrTRrbxXBtRIiXlzZLjBbyYJUJFfBbBbaAjxsSNnqQMnQqwWNSsBbcCpPQLlwWuzZOtTtTrRGgoqiIQUeEoQqOgHhPpoOEeGHYLVgGnNvfFCcOolpPQqXxyaHhAkIjJiIiBtWwTXOFfodDxqQtaATbSEedGgcCDHhsKhhHGnoONgMmlPpLIYyivVLlLlmMVvsIiSfcCFRrivVNneSsMmOQqopfFacCAAaPDOoFVvfwWRrdEIadDBJjbYBbyAlKkmLcCsSQNTkKtqQnqlUwfFWrEeROvDMmIiIihHaAaKkEeAdVZzmMtzZDkKaAdTlWwLbBIbBMmUubBdDFfSsYNnCaYyBbSsuuUztTZNnUhHAcygGauUUuAamMgGUuASsuhHMmmMqQmMCcYxythHHhuUCqQcDdWyYwTmMtKcyTUjJzZjmMJurnNCvVOobBcKkZziDdYyCcfFcCSAGgEeBbaNnosSOhHwkKWoODdoaAOnNsIRVJjvQIEeiMOoxRrXeAabBEOLlosSpPmXxNnVCcAaqWxXwXxXdDYyZDdFfarReEACczYAaIiBPphHMyYiILlBuUbmYylkKaRrfFADNngGMTtmPDeEdyQLcCljJqXzZyYpPrgGRHhLlNnxaAQqYIixXxXKJjkZqOopPQhHrdCcDXxRMmqkHhKQZWwzKkVvzidDIdTtDKwWBJjbrhmMZmXxOoMzgGyYHMFKkfaANnmRrRkMpPmmkoOKMMDuUddEmMZzYyeDnSeEstBWwbFfTXsSwqQzZmmMMWmdDTtMrRnCcEeNxXVvkoOwfFWVcCvKtTxFgGVoOMmvmMMmeEKkOofoGgOYYyyIimMrRWkKAsLlSlhUuHIiLbBlOoqIiyGgYAqQaRrrokKOOWwxXoDeEdrRkNnEeztTZzzZZPprRFmMFfxlLXAFmMfmLlcCMaIglLGinNBmlLkKMIibBbfFrRqQAawlLWfXbBxefDoOHhtpHhPTdFAsSaOzZooOElLRrRrKIimMCcuUmNxXkKnCcbFbBeIOoxJjLGWwgNYyAZiIXxXxGgzqQaXIixeEcCcbBCEwRgGrLliIWwWRreHpPhcCIiIOohHQxXqiHhgGNSsLfFxXlLEesSMrRheEHRrmkKbBaApPOoxXSsAWwaPjcCAoOfOoFiUHhuUunyYNIpPaJYybQCXnNxcXxqRBbzZIiKkdDrADdaspXxPMGgmJDOodjObRGJjgzzZZrRwWZOozKkqQrmsStEewzZWRreETLlMvVGgWwFfRrIhmMHioCzZuURhIiHNnrjaABbjowWOJDdFeEfLlJUuuYyZzbBmhbBHMUuwWUyYiMLlmIFfckKeoeEHhOlLEZzvkKmMVIiPrRcndDNCQwWcCPpIAaimuUgGiIMSsmMKkNnyUuHhYqHhVvGyYgLlfvVFPpkKmTtcLdxXDlYyjJCMtTQXZbhHkKOXxgvrRVGoBQNAaVvnqGIiFfgMNiIxXmouUOMZzBUuXxbNnlLYyuEeUnVGgGgvBbuUswupPUWSYyPhHSspQUuTtqKYyqOfFoDdbBsSQcDdCPHhpRCcryYcCkIPpPfZzFDdXxEepZWwwWEHhqQezMmYyyHhYWwXIixgyYGQiPpDdIIiqgGwhHWRrDdiwWXoOxSslKkLxpOotTbUuBDvJjVWNnwdmMPeERYyyYLqQMmlvLlMmVhHBQqbIihnNbBMRryYGjJgGgquKkUQmuUHbBpCgGcVZEeGgzvPpOovVYGOogIiCnYyNlTtdDTJGgeEjbBtLQYRrypoOPVvnkKWwNsSaAqcNnNkKOcConyPsSdDrYCcTtyhHFmMfYyRvHhVzZcCJjyYnNuUXxDLmMlJmMjdeQAavuUVNnqNSsgGxXDJjvOoFfWwiSsxXZzQSssSUuNnqdtTDRWwrpPGgdmMDIIiYQquRrmiIeBbgnNGFQqEoOeCcRrcCffFjJbBjJEvVVvTtMyYYcCaAaAyHrRhGgCcmMmqQMkKKkJOoeXxAaxXOaAotTHhEnNZzRrrRgGDJjnNdaAjJNPpngvtTViIcCAadLlDkKPpQWwPpyYqZqQqQDiIdjtTJzuqLlRrQBbtTUrRGKwBbWkjIiwfFWFfMmXxrxVvXRcCnMmVvVsScCyYXxHrRMmiIBbhvNMmGgZPpzNnEpNncmMCPopPOjCQqcJpPsSGHhkKgBbXcCQJjqcSsCZcCdDzGgxXFAAatTVvaZSszCcgYzZjdDkKnNJXIixHLlUJjuyYhgGkKmMsWwSgGHhyYKkIpPiIicCbDdBTtqQCSnvVNsdKkDZzKPpkcoOmVVGgOGgKkovJjHplLuUPhwWBbdDDdvVUuvQqtwWTeEgGMrRlLGRZzrgmtTHhMJjJxXWSsmMWwHSkKNKknsJjtMmFfThDdBbeEwnNjyGgYSsCcoOIiedOoprjJXxRPYyPpAaRUurDxnNiIXlPpUJjuIizLlbBZyjJSsYHhIieQqEsSWwNYynwWqQbBSsnNBbsSRNnrHhYkKyKktTGgnNYyFQqfsSOoLxgGXckeEbBCcPJjTtpfFKBbBsSZzbVAakKXxpPmAaMzhHghHGKkZrRvgXxhHGJjdYyDoOKRnNrkCcaACMPpWwaAmSjJuUXDdxpdBbVvDsSjJicCnBbNIMmiIXbJMmjGJjgBTmMWwtTSsvNlLnDEeEWwedVngGQUuzZqNWAazZCinNILlcwyxCcXYKkeExlLXjJhEeGgEeYyHZOozlLS";