From a5d1167aec675e9168619f47ba8774ae8165cc86 Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Wed, 10 Aug 2022 23:34:29 +0200 Subject: [PATCH] day5 (painfully slow) --- answer_cache.json | 12 +++++++- day05.py | 68 ++++++++++++++++++++++++++++++++++++++++++++ inputs/input5 | 1 + inputs/test_input5_1 | 1 + 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 day05.py create mode 100644 inputs/input5 create mode 100644 inputs/test_input5_1 diff --git a/answer_cache.json b/answer_cache.json index 7fb8ed6..d689699 100644 --- a/answer_cache.json +++ b/answer_cache.json @@ -28,7 +28,7 @@ "wrong": [], "correct": 239 } - } + }, "4": { "1": { "wrong": [], @@ -41,5 +41,15 @@ ], "correct": 7887 } + }, + "5": { + "1": { + "wrong": [], + "correct": 9348 + }, + "2": { + "wrong": [], + "correct": 4996 + } } } \ No newline at end of file diff --git a/day05.py b/day05.py new file mode 100644 index 0000000..8aa6744 --- /dev/null +++ b/day05.py @@ -0,0 +1,68 @@ +from tools.aoc import AOCDay +from typing import Any + + +def react(polymer: str) -> str: + reacted = True + while reacted: + reacted = False + new_poly = "" + i = 0 + while i < len(polymer) - 1: + if abs(ord(polymer[i]) - ord(polymer[i + 1])) != 32: + new_poly += polymer[i] + else: + i += 1 + reacted = True + + i += 1 + if i < len(polymer): + new_poly += polymer[-1] + + polymer = new_poly + + return polymer + + +class Day(AOCDay): + inputs = [ + [ + (10, "test_input5_1"), + (9348, "input5") + ], + [ + (4, "test_input5_1"), + (4996, "input5") + ] + ] + + def part1(self) -> Any: + polymer = self.getInput() + return len(react(polymer)) + + def part2(self) -> Any: + polymer = self.getInput() + tested = set() + min_length = len(polymer) + for c in polymer: + if c in tested: + continue + + tested.add(c.upper()) + tested.add(c.lower()) + + test_polymer = "" + for x in polymer: + if x != c.upper() and x != c.lower(): + test_polymer += x + + this_length = len(react(test_polymer)) + if this_length < min_length: + min_length = this_length + + return min_length + + +if __name__ == '__main__': + day = Day(2018, 5) + day.run(verbose=True) diff --git a/inputs/input5 b/inputs/input5 new file mode 100644 index 0000000..e94b0fa --- /dev/null +++ b/inputs/input5 @@ -0,0 +1 @@ +itLiIleEXxGxXgTtTzZRQqrIVvwWMmUvVuiIgsSQqWtTwIiGDdgvVzZdDGgkKbBAQqaGJjaAoxXWJjwmMOqQyoOEKkCHhcpPXxeaArKkRxXyFfdDOorRTtOoMdDMGgmmBcVvaAkJjKCbYHeEhkKNuUDdndIiDEXxPUupyYAaessSjuUOocEeCJSiiIIYFfcJkKjuUBbChHMZzAamsSvOoVtBbAaEeiYyrRJjIcCNngGCcToOhHiItBbEIieTPpRreEDddDHyYQqyYlPfFpGgGgZyYyxXoONnYzLhWQqRrbklLKdDBDZzMTtmdzgkKGHhvVGPpcCwWgrRIMKkmiefFEZXFfxgwWuUsSVvyYPprIGgkKjpPJiRGbBvzLlZbBCcQKkqVoOPfFTtprRFMmVvaPbBwiIWpTGgYyOtToKktArbJjBrKkoOgGRMrRYOoyRrFfmaAjJOiIohHRTteiLSslqQIEVvmMdDgGHfFhJSsJjuUjcCJrghHGRjfwWdDoXNnrLlRxySsQcCqYOeEDdPqDdQIbBxCcXXxivVpwSfRrIiFssSEehvVHhLwWlHaApJjPnNGvXWwxoBbOVgHhUPpdDzZuGgYVpPQqvWwBbyEeNpPWwnaAFfjYyJyVvYziYyUuIZtcBbCToHhoOWXxeEqQwvnNaAWWoFfVeEvOwwVqQGgpdDPRCcrBbOIiRtTMmrSwrRcCzZWJlLjsKkDdsSmkcCKeSZzsKkEfTtjdDJVvCVAajJvoOSsFfaAcqQFSsVjVvJzXxuUKkZoxNnXORrDdvVcCvYyiIpPktTKKQzZZzqQyYOoYyqqvuUBEenNVvbVQHeEjJfFJaAbBpPFjJzsScCDdwWzZKkBiIIibOfFoHhOZzjJoZUuoOfjnNqQNnOoHonNPDtAaHhTbBKkdJjyuCcUsSYnNdDXxkDTtdIGHhgiQwPpWqsSrRLlcpPyYCKOokcClYyvVLSYyfMmFTZztHMmhFfoZzjfFJMmMmAaWlLwOfFcMmCTdjJDNntRCcrnVvVCcbMmZzzSsZBdDvMfSsFmNstTnCcNYygGnNnLlTrRjJSXxsZzfJnNGgjFwiIjJWjJLltNckKQqkKZICSscbBsSIigGwcCjJWBpPaAbirRCclLAvVnvVNamBUupPUuzZFfbyYgGjXxuUuUUzZuDpPdJRrTHuYKkyUhXiIxtMyMmdDDxXwWdJgGjPpYzcCdXdDhHJjdDxYyMmhWwHDoMmaAOdtTDMbBmMAauSshmMHjFfJUoOzlJjQeEIiFfmJjMqrRYYyPpyLZPpmMmlpYyPdMUumNnDwuUQnPpNYrRyqKkrRrRWmWwMgGGgxXzZLFeEfkvVzZKRJlLjrnNREelWwxXLSsLMQqVvmwPpfFWvVgGcClzZZzNnZzLPiIUZsgGVvsMmyYSQqPpUfFAauSIiwqQBbWrRNnFEefdDNnPKkpLvVOrzRrZRoMkBbKIpPiryYRWSRrswmtTkKHhlxXrRnDdpPlLNjJnNPpKkxXyOxXMlLmjJeEoYGgpPZzIiEelLXxrRMZzmNngKkGCcmJjqQMdDuMmUYkKnhHdgUuGCYNnybBXqQxwWwVvMPpmaAWCcAahFfHjGZtTtaYyWwaVvmMvVQhHNGgzZnqEeHhPDjtTJdplTtcCLSslLiIKnNkChHKWVvwiIkcsSsSLlbsSaABCFfcLeExXAKHhDdQDdqkalJjrCcpzZTnNtlLPuURrvVkKXVvVvTtYyxeExXRsAaSoNWwniUuIyFfkKIKkiYOGgDdnuUNnNWHhlLplVvLPTzZAauUVvlLBbrRsSNhdDHnJiIGNjJnSsggGxXjIvdDSkKuUAazbKkBZzZIlLXxyYiOeEHhowAxXazZTtXQqXxfFxSsLadvVDAaAlWsZzcChtTyKkYjJpVvQqPuUOofFaAjhyYHmMJHNncWMmwCCmMFfcLIilgeExXjjJJcRrCxzZjpRrCSNnPpzZDdscChHYPpycjJfFRXJjxrOoJtTCcjtTxvVTYytohHMmhHOjJvhnNhBbHvVwWXxHKyYkNnEeDgGOodbBkKVdDiIsLljJSsEerRFSsfZzSGxXgUuDmBbZzMdUIilLiICXyYdCcDXGggGRruhWwHRrRXxtTpPrUgGcCHhxwWxDdOoMFfmLwWFfoOlpPTtQqOoQPEepDDyYddGgkKCHUuhgGZiyYsSIEecRrFmwdDWLlzZnbBZmMAazzZNFmMlLfJjVvaQqjkKJnNOoTRrtKkeEAjJEewWkVvWMmwRrOQqouUhHKCclLkHUWwuigGIpAaPeYeEyQqaArNWwnJUdjJDubBhRrXxHAVvaZhHJjzZLldWwDCczLYIpPiylbPpBxaEeAOAaMmocCUxDdqQSrRfFspPdDyeJjEYXrSOosnUuNRtTOBboNnmHfdDFDdnNiIAEeahKsSHhzMmZxXkgKCcUukxRrcCkKBMmHhRrqccCDlLdHuUtnNoOHhThysSmMIiwWYCiBbSsZzICccBoOvuUjJaAkeEKLjJUjJVOobBBfFbaARrPpWwJaRrvgGfkUuuUeGgEfFnsScCNKZzeEFVkKMSsLlKkVvvVXxoOfAaFVuUbBVCzgGSsZlQqLlJwHJjoOhWjcCLcmMuOoUxIjJiXtGgYydmMWwDohHOTqQgsSGJotToOVTtpPveEOXxAamMyYQqiqQSqQsIUoOuZzyYRsSpPNRrnZzUunhHMmWTtwyYwWCckxXYpPQgGDdrRtSsTbyYBpgGGCcgPYyGgkKaAUwWuYyiIsSevVkBFfPkKWwVvpjblLjYyCUucJBOopPSdDQqslRrMlLHhDlLdbBXxeRrglLGgyGgYJjKkMxXwVvWAPpaevaAYyVEOkKeEoYytThHyYIimvVGMmkAwWaSsKYynNrqQWSsyYsSmOonNcCYyRcCrNnUuoOKpPfpPzZxXPpzZoOFmMroOaIwWiZzCcJjxXBkHhcCKHhtTigGFfjJQXeExIioOuUiMmeFcCNnnNvVfEEegwWoOtTGMtTRrzjqlLQJeEZDmMdIZSsXxmMzvRrViuIiZzUNnBxXrJjTwWtxXVvbBKEezZGCcgQWwqkDVhHvKkdxhHXKSsNgGndlLDpPZSsPbBpjIiJSnNAasGkwWKVRrHzZUuSYyGlLeucCGggdDWEewlLABbPQqpawWwWVcCbXyYxBmMwEeWLGgiIzcoOCFfwWnNvgGpSqQsKkPVMsSTtmUIiuZpHnNqQlWRriIpPwaAyYmKkMLWPpwdDhzZQqsSWEewvhHVdDCJkKjvVLlioOPpIFAaLMclLWwCigGpPIIiuoSstbnNgGBoOTeaAETOoyYteEGOotTgVvOKktTXVlJjJjKkoFfOfWTtVvwMmFcCLXDdDdQpShlnNLHsMmGNngeEBGiIggGdDbEUuIiCcLuUlgGiIRrezZEQqSZzsTQLlEQqeqYyrHhRiuMmUIxXEeUAaucMZHhtGgTdDYgGmMYFfZMYFyYNnEegGeEmMfVvsDTKSsaSsUuALljJnNkiIzyYcCFMmtTfnNZfFgGtQBbqsSzZXxLlcGgaAuUCKkdoOEeIAaLNnlREWXxqQJjzZZlRXCwWTeFfNnyYEbKkrAaRQqdaAvtIiTKVWKZGgSmMhHszkZecPpkKCEUSdDhHOPposmlLfAarRrRFHcCEehwsSWbvVZzMmiIiVzZvTsStraAAAaaLdrRiIbpDRraAdAaKkWMmnuUNewWEfvVFIKkhHcPpqQLlCOoAaNnHhKkCcyYSsvVZuUweEWoOuULcClzCciwZpPzuUHhOFZzJKkjTUupmXxMPgPbBKkWQLlSsDKkgGdhHzmUuFfJjNnMZGgMmERregGCcwWMZzmhHHhqdBOobDLzqQZXxwWlLPplLQqPDdjJjoOJyYlLAapIiAaqJGgjEsSuUrEebBMjJaAmlrRLhHcCgGCcRriIvmeEThHyYtrRVvMkKXxDnNdcKkCwQKkTtqIiiIClLQZEeUrROooOdLlDdDGgFfdmBiIbfFMDuFZnNzfoyYOZzvFsSLlfvVLOXxoCciKkIlCIBbShHsicCuUctoOMmVvTNEiICcxXOfzZqQaAQqkKkIyYbUugyYDCcTogeEGOfZzZzVEevnNVtdDTiIVvvNmhAaAEeaHRcClLrMnuCcMnWlLHhtTBoEexsgGoOSaAXnNVvLloOObxXePellLLEGGlLPpjJZzgQyYdZGaAgzPpNnRIiYianNAIyBwWtTbVvXOoxpPsSUZzeEuanNAEemQCcqIiPGlHhLbBosJjPGCCcLlMmcmMtjJcCPfVvPpdVoOvDFsgoOtTGgwbBixXISsWJjKCcZMCcFcCfWKyYkQnNnNqRWwrSYyYysfFYyDvVdWWwwaAnNaAdvVUzZsSmMOosDAaGCGgcgdwQPsSpPMdDmiIOosiISQqTsgGSdDtTLeEiIDdfGgFWMGgxmMXmNnwHhZzfAaIITtMmiGLlROorhXxHNGYfQqTtBbFyYygZzNnTWwtaBVvbfwWFBxXbuUAvVlWwFCcxKhHkXXxrRxPpXLlhHfLCQqqxJZzIijbBmMhOoJjMlLmHqQDdyYIXxiVKkvYyDPpnOoGBaAKkbndDMKkIfFimNHhsSgoZzOmWwTJjDdtDdqQaxXgGKAakAMzZPpkKxXNdlLveEVxXGEerReEOosSsSgAMNwPpWnSAasMvVdAVUuvBbaTtGgTtLUulAopPRrtTKBbkOaDKpPkjoRzZrAFfsSaOJCpqQkSJjszZgGvSuUwWfMmcCywcCmMMmSsWoOFHhwFfvVWuuUOorRuUMcCkVgGdLlDXxCdDozZEeOSLluUaAscRSLKMuUmkzWBbVvMJjRreTtmMabByYSsiNnNIinISPpyYpPpIbBDhHdZDdcCpOaAkKTtobBKkPYZzygkNnGgEeSKksXxKGIilLkAjyYqIiQYfFAmhHnNjJMdDKkDRrvVtTfIiXxjqQJFMCcvVmpwJjGgVvFnNfDZzdeENnsvVkwWKNmaAMtXOsSnNTzZtzZgGoFtLlTzZqUuQfxNoTtbBddDNHhncNnIiCxXDOvIMqQGgKkpPjJuMmUBbhmMRtThHrbSsBDdzZXxjYUIvViuFHKkhAasSfyTtpPGgvVJZzHJjezZEEeTWwJnNkURzZwWNnwWYwmYnNsSKevVnNFfxkKXdDbBWwbkOoKoiIYydDLlBbqvIEAaRzZcCiqQiImMRrImMiIHhpPmcnJjcxXGkkoOaqQmMGgAPpsSKKLlEeLlNnCckKhiINnMmJjLgZzGOoMXxcCmPLlilLSTtWyYkSsIiKWwNKknstTyYWSsHZzhwRryYSmMuUKdGjRrUuaAJHmMhgFfMyYJjHDdPhYCcyfFXFCEenEeXWwApDGaAgsLeElDIidSBbXdDDYyRrdRrPpvVKknjOuOoUXxsSAaEiItTEuDdoOUuUrjdDjXxVNnuJjUQqwHhTtXLlaALlULlGgyYhwzZWUugvVpPLIieEgHhGbncCQqQrRWoOlLwqAeEaNKIiTtJuxXUACMmcBtTAuUnNoOcFfLlpPCLlpPBbxXaEerJFFJjfOyNnYouSsUSsfyGgYgGyYwUcCxXufFRrWFnfFNuUwlEOoeLmMLlyrqZzdnuUgGNDtTbBQCchmMHhWEhNEeDZzKkDddKVNnvwWoOYfFykfFEegWwPprRwWDdmsGgSIoOiMVvFfGYyHhiIXxJjRxXDvVAUurcCwWgsSpPlLwWzyYCxHhXcZXnNCcCCcfFceExfWwFNfoOkKFYhCcuUHyTytTDbiIjMmJBUzknNtwAavVeSsUYgGZKrRsSnoOFSYyssSgBbRrkKUuJjoOgGvVGQutTUOFpPfJjoqnNXxSHmBIibMaaAyJjFfEegGylLwUuWZEprRnUuNEeUuFWgGwKvcZznpPqQNbMFfmBhHKiIaAOokhHAipWwGgPPpBbzZaBUFfYyQVaAabBbrRBAwWKJOoUHxXVYyrRvZzNnHhApEJjecCNnPinTtNIVvYoOiIycCHabBAiqQHKkhIzZRrkKcCkzZKVvHRrMmhHXuUNnRECcTtwWUYyxbPpdDLlBpPKkSsrxXRJjnlLNjHWXxwkaAKWDqQFfkKHLlKkhuUAHhaNnOuQqUoWwdyoOzaJjjBbJJjQqqoVUuvUuHLVKUuFAEcCIRrZVvziLOTtoGZzFfgjPzZpNnGaAgJqOoQjJLSVvscazZJjfvVEeOoqVvQFjJLlrDVvdbBdxXDVvflLVvhHFBDqQaAtTSsdKkoOIiQFfQqqYyIBFSdDdDTtOJjohHQqsjJOoSiIMIaPphHAWwTtiFfBRrbmHUuPphLlbZyYJjAtTapjJiISsMmJjoRruUdDOHiIhaADvVEKhHdDopPOUukiIyYSWwsBbAanmMtiITvVFsSkKXxZkKzVxXDHhgGcCJgGjdvBbOdDVzjfFXwWLlwnNFfmGgMUpPrOohHhHRDErKkRIKkGxpoOPiumMUGgIOohHtTwWlaDdWwAJNCcgGHhGUugUYoOgGrRsSXxybPpfcCNohHfOoFOnMsSaAmTxXhHtRntAfFyYPCwoOWcYcCrRiPpwWykKQqYJsSNYynZzjIyBbUupZTsSUuqQMcCmtTtaCcAbLlBHUuRrmlLMhRPZzPUuUVKkSrRsVvhZzHvuEDdcCusSUqfoODdTSsoOgRMmrGVpPvpPsKkjJSjJoLlOoHhOiPpIKOkKoDdIqQPNBbCcniPpIyYuUuUpmMWwIQqsSAbBQqijJInYyCoOAaUurRcrzWwQjuUSfgzZHhgkIjQqiqHhHWphfFeEJuUjjDdjJJkKHhLpPaAaSpPcyYEcCsSuzZUzZDdFBEebfBEsSQqqQzZlLpPyYebQqyYeCcLlRrCxXAaaKkAUKeJrdSsLljmrRMUoOBOobFwFfWkKFRgKkGPprwWPFfpIlovQqWwcWTtzZwCtIvVuUjBwlkKBiIbMmAaAaRLTtlKhHtTjqwWQeEzZJwKkWspbKgGuncCaAAaasSABKkbzmMoNJjMmTtHyYhQMmitTEYQqqQyeIGwWWfFUuwBbgqeEVZzZzmMsXAaxzjJTtFfBAaFfQquUdDKkdGgDbTXxtKiIkIrRmMtTNniUPpupZLlzKkhkUuZtTAaxXfFYyLdDZzpPOoeiIwWEirRqcCQaAcxrGZrROofnbKQnoONXxqlKvVvVJjjJbMRrmBeEetTEkhJjEkKeDdVPpZfFzvGFYnNlRrLVvyiIvYyLlglkRxXYyrprRPEenNKCxaAXvIiaiTAagGtPpypPYIAZXLeElxaAqJGdAvVdDIiWwcxXCDOodOtTaZzVvWqQrRFfmMwgEeQTtKklLqZzRdDXxOvVaAwWAaaSZzHSsXxloOqaAeEsulLykKJdDjYUSoOEQiIjJqabEeGgBkKuUylMAadFfDmeEJjLclbBnNMmhjXelLEJtTjxqZzQwWfEeoOMPaAppPtwKkWVqFfQWwfFPVnNvZsuUSSTtuUlLseNkWwKnztTZjJaAnNEmubBUjJMCuUuUnNsSWuUwnsSsSNWLIilwsSlJjadDYQqywlmMqQNnLeEWCyKkYyKslLRlLHVzfFZWzVxXdVvDKvVIiMmBzFcCOCheEHSEexBryYvVFlcCLwWfVBbqjqFXxtOEeogZzZpPaAlSslLCcgGLrHhPaKkApgrkKYyShHNOogGnQyYqsRiIhHRrtTPpxXHyYhGDdRkKrRCfFcQqIijJlLiIhHrRDdwWzUuuUCImFLlChHAaUuHhBbvVcCxzZXRrXxYRrpPMmrBbXipksSAzZwzZaAgMmgGqQGFdDfyYqQAaOoWykZzfFKtUBbuhHvVWwFrRRrffcKkCIiSsdDdDFFSsAwWafTAateEJqMmfFRrWtJzLqQhHgRrGeElZLlbAaBzWwDdZARxXrUkfFKZzQwWhHRrkyeEjvVRTpPtVvLqQPBbwjJLRnNajJAQUujJVvcLkKlVvtTOoVvINnbsSiXAaoZzQcCIiRrVAaGyYCcQjJPyWCcxbBKGBbgkreERzZeqQQqTtSUIiUugqNnGosShHfnlWwDdLRraTlLznNZZzmMUuLlttTGDdMmBpPNnGgruUIbBIifFiRUHhnNMmSsPpJjQoOHLrrRqxsSSOIiTxpPDdXVvTtQdDqQtTqboXxXpPyBPAzKkZnNWSTwWtsLafZzippncCEzZeXxkuLlUTtiIKJjQBqQbwsSDdWRrUdFfDuqzLlLyYllLJAitWwWVvsAaMmkKSqRrQGglHhuwWULCcFfOFfWwIiWwGXyYhDUudrRHeEtTxgoORryYRwKXxkBbWeOoJjHaAhEFfBPpSyYUIidoOuUDgGOodejJENchpOoPZzoObBprOtTaAMmpyYPohkKaAvixmMukKVvWwqQZbBoOdAarsSgpPfGhHXxTcCtlLqQWwcCKakavVqQXUvVNfFaAaAzZAaBIZCcBbjJzibtTvuUbBHhiOCDdcFfrcCVvzZFrRRFCRryYDCmMvBWHVcCvhwBWwbJoOjbobByYVsSLlvFblLpPpJDbrRNZzqzVuUXZzQvVqfJvKkKkvVYhHysXxMmGQqgjJTxXcSRrUSsHbzCcZSVvgMClQqLtTliuSsUkKIZzSvgGoOVjJbDRrdWBbwqYyQBjDdrRVvyYBcCKjSwPpZzWzZhNKkIiDSskKdLlAalEeLDseEdQqQFfEBbeGPpcCGgkKIfFVtTKfOoFkrFfRvXEexXNnxdDJDDddjxIiXnNKkKoOkwWUuKdDkQqOdDanzlLlLKkdDZbBNwrugGUwWgGkKRiIUrRuPpdDBbtTDdDcCGBbjADvVdaJXxjJYNCDGgMmWuUNnwdMmcOEeomMmaoCgGgxXGKknNKktTbBeOoENncZzOERrePpoQqEepSsPpPRIirHhcCKxoONwRrnJjNtVvkKHhxGgXBbfRJjWwDdrFNnaATkjAFfaJvVKIiCMCZzcpPBbUuxXrRAUnNJCcoOeibwWBCNXPpxCiIcOKxXxXxJpPAsSaZhDRzZOIiogGLllXBbIJIiKkQqjMHhmiZzIyyHhIiYLlYcCxXeqQEPpRpcCPSiZzIVsSfFvXAKMmCqQbBEoOeKKyXxYBKkPqpSsAuUJjdDFfsmauXxCcVvpPMmvOYyBbSsBbrRTeEtJjIiYyrRtkKktTvEeVwEmxXMaAwWnPDcCFKxXTtCckKnNkznWkeEKTDdYtruhHUZEYYyUNwKRrowWOhHkBnNbJJDeEULNnlkKbzZBWPfFKkjPHhbBpJiUusSpPbhQqkmMLlKUpOiIUeElLBTtXLltQZzgGvVqSsafFLlIVvJAajihHFfgoOGTAaFtlLEJjeQqTdDYVtTXnNwFfQqWuUSsDdxhHHhEUhHuNnAaHAMmePpTtEQGgqMmzZXxVOojJvKriIgGnoONHhujJldZzPmkKMmhbBQEeCIgGtTvyYuUVKkeKaNnAEkfFBblFHhaTtApPWgGxBbXdDBbgWwfFGkKwxXkMwIiWIpPYHWJjAaWwwVJdKlttTTRjaGgAiIyCcNFfeEgFfGXxtTSQLljiIznPmHhMpeEJvUuSoObBsBaAbVvbVvBCcckKCVkKabAadDBtTnNLlJjYBbyRfFeEzZrrRlLWwOhzZJjvuUVHEeGsrAvGgfOoPVmwHKBbyYtToObyUuYgGtTkLlGgBbpwmZzMGgFVApPavfgAsjpWRrngGNwcCNVvHheNKuuUUkKkuIGgiIihXRrxgPrRpGHUZStTsoOdhHmIiMumMBoObvVuBqMHlLuUoOsSNnoBsSVvbVrRWwiIzTtZkuecQEeqZtgGTpPGimeEnTmiIdrRhOoHTtfFchHmMCcCDqGgrRAaTtQCcFsIiSfFlLfQqaAfkcCLlKeEHhdTttTfFNjJnFfDxwWjsSqQKTaApPqQqCwdDWCcxXuUtaATCctTcAabBFSsfrdnNDIqQzcmMLEtCCccTgGzZwWsGgSelxXLTdDTteEtTlLXxdDAdoOYSsynNDVbOoMSsmwWBgEeGbGgMVvmcCeEtbBxAaXRrhcLlqQpXOMmwWoLZfEFfVbNHhyYTtKyYkFfOFjJlLfygGYXhGyYWwgkKHaAHhUIihHWvNmjJMxXnslnNDtXxTTtdFfLqVvmBbSsxXTtbpPBDddDvkKVMGqQbwWgxXAUWhHwCaAoOkiInNbBWhmMKkjJDsSNwiIbBWJhHbBAaGfFyastTSAYgkGaAtjVvJeEGgxXEyYqSsNVPpLqvYKkeRFfTqXxQSsHSDdNndGgaAORrotTDtTFfeEPjQqEepJCcjOTolLaRrAEerRODdjtTDkKDQqgoOHfFDEeQqTtdbBUuhGsSUuAudBbDUZzaCxXnmMCTTYyZzFQXkKcTtzZPpCxnNnWLVvfFtXaPsSLlcCjvVEemMOoWnqQrHhRhQcCVvueEUfdDXIWlsSLwhmMRSsOAanNoeEjucCBxXsSbAaiJPTtbvVSDzZeZxAtTkYyjJKOoOMmEeUXxuoMQQsSMEYyNoOSqQHxHTthyYBUwYyWGFfgWwwlDhHfFDdhHWDBbdAwWxHhvVrrROtTJjqKkQlEfTtFEHZcCWnDdZFhHcCfzkqQrRKNCzZidqzZqQQZRrzVNnvVvDYgwRrWoOEFclLOoHhmMDdMwSsTtAaZakKAczMmYyZuUOoCYyotTlLxXglLMmEdAgHPphWyBMmbjJYCtFfDKiWaAwIeECcUuYqfbBJjxmMmMyYXxxvvTttTVyMmohOoNEhHexXIinlflLqQFvSsyMmYmKMmkzZbBMeFfErMyYHeEhnNNnBbUucXOAtswwWtvQPVedgvGUuhHWwTLhzZHlLuAaIiriwWmapSaqFfKsSsYySnxXsSeXFfTtAjJnNSNSqxXIidDGgljJuUDBbwwWzXYymWNnBoOwnMvVmUuMlfFuULwCckKoleZpalHkOOVvaAVvjJRFbTEImMnNqQgBnGgNbRrqXlLUuxlewFuUfxXIiWCEbhHBKGUtEeTaZzSssvPwNHpLlctHhTCpShkgGKqMFfWwmcyYCDfFjJTteEeEvVBdLluUYTbLlXxuCQYytZzCEeFIzZiUuDiITtaAiIwjvVJEeWBbMWvvbtYPFNnfzGgZvYyilLIwWVpBbfFlLyTEeBVmMeEsJYfiQqBPpbIWXxNEecCnwUudqeEqQfanXDdHtTbBSrwrVroxXcCOjzZxXJAtKkTRrIEefFgAuULlrRhsSHtTOoqQKLhHlkUdDDdMhHmuAYywKkFdDLthKkHTLQGgkphnBbNVvHSBbyUZOoeETwtTazZAdDAVyYvNhHIiZcCDJdDDkKdexbBnNXHRvvGgbBVVPBfFbvvVdwXTtxqQDMmmMdWKkEewmAatuUCcaATdPuzTtFaAMmAzlUXxuTtyeEYrRyYeETvVKZzhHSslLnNQJjGgqsSHhEIikKcJjCebBzAZzabBPpagnadvVSRrwWYDdKoAaOlLFEmFiIWwQzZKGUugwkRrxsShVGAagGoOgjJUusSmMgJZzPGSHzZhPzZpsCkKISsoNezZjJEbhHBneWwcCEkIiuiIRruhhOoNHhnUtTpXMmciCkKXlisNnLlVvGgilsSeRmPdyYDAaSpPAlrqrDHhdRqQzzZZtGhjJxxXXKkyOVvojJYMmPpciIVSKPgxXiBYyZSsqQqQNXxhHnoOFfUuhTtUuBQqbHqliIwEAabPpgGzRrZPRrPbBjJppUWaAEcsSqdiIAaDOuUbBVcChHvKkNPEScbkKQquqxXUuPSXxiggbZzBuUkRrePpmMGHRrdhiAacCGgxoOXFfVvGgpPlLihHgGJHhfFjWVdDTtQMmoXxwYXpPvgGVnNcCnaAWwYGumsSgLiIlGHrVgGvhYPGgrRKkoqbBQVNnQjiWwyYxXfCwLoOnNtBbTlYyyYBeETQwWuvrREeiIEWeEaAbBwUutTzgJjGhIiHRqQCcrDdUupPfkpPKAazruUYpPhyFfsVFfvHEoOrRZmAnmMmHGgXomvpPVMIigfQMiImqFpPnngIiGZLYylzVvNORiIWwPpJWobBJsSjEvDONnZVTtLluUnVqQvStTsdDBdDcCbNWpcNnOrRojfUfFpPOwWcCouxXeuUEhuXxEeUTIiSsSsCcSGxHnNjPpJgPaAyAaTtsVvDZzdSYVvmpzZeErnQqZzSVoyYoZzGDbBeqnsSNvVwaByYbFKkyYmMLlpEeIvNRvTcdHhDYykrvVRfFBAaqQqPuUpBQvKgTtDdfTtlLFcjJLlCiXPpCcuRFTXxHhtKTtQhBOChsSxwfFmMEkKUPpSWCcFTmMDdzKkZlLIvViEdfFFfzZxIiXWgGwjJrxCcxXXxSsyeWwEMixXIwIiWcCztTGopPbhWjJwHaAJnWFcCGnNQFygKAVvEeoeEQqCOreVTvVTTnNLliyYWnNwSuruPQqhbBlWwKkLHmwWMpXxWwoOUtXxTGPpEWqQbPoZzeEXEfxXPpFVvjJTUQeEquCcrRboDdOnSsfoOhaQRrZztTlJjgGKkytsrRSWDxZvhHPpVQqBwoYyOWkKbqeEZjsSAaJUuYyfsMWGgSkhHKuUEFfGgHbBvVWiIwRloAHfjKksWPpWTtUfBbFuKkwrcCWEGgvfFiIpFfPpPjKkSsiORiIrnGTtglKkcXIiLlyXVJjvxfFYxtGgTZzHCchIiQzZWwquUMtzOtToIiZpPTtkkKKFhHfFFffJrRfFgGjyYvVgGgWAawMUusPtaqQXaAJGJjgqLlfoeEuUYeEysvVWwnAaRkKrmmhUpGQGrKkiAaMmOPWWwJyYjhHwOvnNVprJjrRRPgaAGXxHkNTtdDRxXKkFfLiuCchHYfTbBtFGgzZtYyoOoVvpPdwbBztjYyIiDdUVIiUbzQqcCxZJjeEkKkvzZGwWxXYyLTtfFDdrhJjEhHdaAfCcAPelLbPbBvwIiPpgiCzThsSvVtuSuUqqQQwvRrkKoOTtKwWdmZrRVvQqdLUIirRuldGgxXpLlapVvPWhHwAvVKkowmJKkjOPpoEeOJfFQVvxiITgGtXiDdMxIZzbtTkKBqQgGEewAwWawvDlppCoOcHhFSsSdDPeoOkfwWVvwnNlLFLlazZzfFZAMYyHXBhehHxQCfFNncFFwWXxZZzthZFCuvtTVUqZzJxYniIEemMNylJAaFfXJlPpxIdXxnjZYyKkrFZzbByOoQsSnmEeMGjJgmXxIgGBbFBboneENCciCoOLlZzcAKkHpPafpPFSsAjQWdDiQqIZGJjzjJUfFmfQTcKiIWXVvVvxwxLjJlsSNsSgYynaTQqtIizZgGoEeOAMiImRzcZzOjJkKooHkgZACcZzNnWZdtCAacUcBbxXCjhSsHRgxXGrJYyWeEPiIaAFJjoOfXxbQtkUfFtCKRroAaOkhYOIDvVXeEFRweJNuUnibEepNSfAEePpHRrkwWyYVwWkZzTOojJsxXzZCcmNKkHhPErReEhHeiIpWwQqvKrRHgBgGbGDpDdPqQdjLUCcTrUudHhXAaNIizZRkTAahXpxZmMdFvCclLViQcCqnSjPeExgGyfFHfFxoOyYSjahSrSBjyYAhHJjsdDgaVfFuUvMxXJzZLLleQOTtoVvMuUmaqJjQtsSIrUuRWwBXxbRcCtTOgGeEoUurTmeEeypdDBbcpLtFfKgGKLYyCcOMmlLTKYwWyRYaBHhbASmGlLtTPEEeSsYUHhPuUpulWXxwZiVvEhmSssquUQuUXHqYYyyUnIiCcLlMqQmMxXoOoOYysZNKWBJjbXrQYygGjJRrefKkTtFQdDPCcCcQqAapmMRxTtGUbgGaABuymMRIgZNnfCcFBchEXxecCRrmMkPWwGoJNnCIJHMmFNCSXxSmMSsomMOsJjsNHhVNtFFfXxBbFfGgQqmKkICrTBbeRCcvVzZratToOYsWwXHvVhRrxgWwAawWwPqQMmpWVIJjQivFtTuUvVfyYPGgrdoPpIiOvVOgGjJkvVAHhOzZzZpuUPZzbBbBlLcsBEerSsjhHKYMDZzrRnNdLSsoOJjAbpiIPlnhLaWugGsKLlHdDhjMyYGgLwWLeEtTDdZzKzgGtTzBbChHRrmwiRxYyXrIiFfbcCNjWKkwrwWRtTJaBbFsSubHEesYfFGYTtyGqPpjjjhHUQquYyYuUyOyAFYcriBLcCGgjJTdDVnNaAbtTcCIcCeycULyYkOobBsuUEerJjtpfqQnNyoaAONnpPVytrRqRrQJIiBbBblGgLbBfjPpWwJKkFJjykXSsWOowepumqtczZCqOoQTQMoOcCfclLURSsrbXxJjBbBKGzyYjHgGPphOHhodPuaEEeevVBbAaBXyMbBQmMsGgDdWWnZlLNnzjWgGwwBqsSUuQkbBJcCjxfFrrWwMQTsSLltQiIqcGgCuUXsSqsJHAevUgGSXxsuqEeQKkVAaYyYkKyhHMDKEekiITjuUIiXbrRBwWaQqYFfcCfFdDDNndiTtaAVvOoDwyoOYJUuLlBbjWRrzZWvaAnNVbBSAWwaWwdDwWvCfFgEeDdvVZzOkKYfgjJGWwFwWsqiMiXXJjVvBBXmHhMvqQViIxPNbBzZmxCcYrVPFhjCMkSVdZzZzhHrQXeiKkIISsWSOZzoCsDdIivVxduUZEeiTebBJjEhHBwGgpPbBMmufsSLlvuUvsZveeyYEDHbuUBhUAotTGglYynNSsWweWZclLCZcmzYtwuGgUqQIrEiLxXlpPNlwKksxTtXSWLnbBdDIYyWFtQFfWwKLcClfvVKNccNgGnjiWwTnNtMmvVwWxnUuDkKCVvafrRFTKpPkCHhauUGHWKkwtTjJxXZzonngTvrRVUiICFIVvaAGgizYynkKNQhgGMmANZJjSsIinNuUjJdrPkNAaIiAvRRrrJjMmpPVarRnKpMmqJoDaAAaUOoDsSiILDdSsswGgWKkvVvVwRkjWnNToOtRrwJNDIWwrRVvEjJboTtWzZqRuUWCcZzHhTJjjzQHhKAaWwNnXxexXUOhHoFxXmnqQrBTtQqdcyVvYMbRIfWweQqbBEFhuUHiBLhwWHlnfVkcGLWwyYmMhHlsKTtoOkDzdDIrRcCXxrKkwWvOovBbEeZgzyYZGPpzVRXxVvNYyLlLuUzQqGPpbYzZyhJjHprRPBzxXWwsTnMtThMKgehKkCtrRTJBbwrRKkbfcFzZftBblLKktDdCOrRrBbPpAmMxXaHFfIihwWhHhiKaAvVTPKAHhjJYqQjJZzUdsSDhbzZlWwtTKnNEoPfdUuaXxaBbAaAbAaflLlLkkyYFfjJKbBxeECcggGGUulVsMmSquZmMzABWNhHnwYyvDtPxXfgGnNvKcXxCkVEeMSsSVvGgzcHhCtTsqtziAaJjIdXnNUvNnFxXfVvVcsSCWwaAvFfVGgvuUwbBdjjdDJDGaoOUwmoOGrzZnNhHRqQgZOAaovHhiMmnaPpNnXxrLlWwnNSanJHhwrRJjBlAaLdOBgLllUuLKwfFBaGyYcsFRrRctTkIiwdDSNnsRZzZlLzJZzXIfVGzZgvtTmBWwburRofiIyYtTYyFKkZOozgGRdtdQqDxXTVrQqkQvVIuUQqMEejJbLkEeZzxOoLTtlaAwWEZDCGvNEYyenwWYjJKkopcLHhAalCcqQQnpPOoxXWwRrJjdDLlNeEHMaohxktTKWSEgoWAaAyNUpPPtCuMmqQULlcTBDdbespPoOxCtbhNMmrVvSaOoAsVfWPpwFlLLtTlnrtkKTRVvVwWZzwaAKkFoOvVuUVvfQCcFWEewFvVricCRhMmJMWCcKkAWwFfaIGgVsQqwSsbBWeEIWmMyOyDtTvpPonNOPpVyYZzCDvomMMixXIiCcCumMxwlxXRreBbWwEehRnNGvVnPpiIazVvxgGXCcZIEdDsSNnxwWXNruUZoOnNFIifZzoOENYybBIioOOoJgnPpNnNGnlMTtfFLcCcDdrdDQPJjQqGtfFSXyWwrRlYxXgVvZrkiIKIeajJWwcHRrhCtTGofvVaOpGuEzcQAuUCpHdetFfvqtjJvVWwTZzWKkBQqnNbwyyFfYzzzZpsnNWwkKAuUaLkKlcQqzaIRrJjiAsGPXxNjJyZHhzrRvsSsQpmtHKeEsSaABKGjjVBdDxNKRmdrRKqQJHhgdkYdSOnofJrRjFeGbfFmHdJZHpPoAjtHhTJIUuTtJjihXhHxMmsSTujJUAayYtwAaRrsDdbucVOmeEYhUNcCXPqwxxwWdDhUlLGSGbBgoLNrFrhzZqwEzZyYBbeqQNbBjrCcRJzZqQaAPyYyvVKkAvVaUhpWwPzIkKzPpPpLlVvLllYiIUuyBbjJIiRrLyeEYZqQUumMmbyzXhJjJFCplLPoccCHwWhCqrRHDQYyiIZzgEFfRrgCcqQKTCeFfpPpPEyTVvaABsgiIGSxhPpHsSjvVjtHlLlLRrrjJaMHfeEKkFtTnDIiPBuUbAEZzerRapNjVJjuUMGsSglLmRlLrvcKkCqQkKJDdnNnrRAyBtpPyIWwOIpmALdyPFfpPhHpcCntSzNncjWZLuUdkKSscCaAjJpPCszZSGeZadmMTEUWwsxUWRmMrGXxFZgjJhVAgGYypgGPYyYjBiHhoDCAKkqgXnNSsgQqyOoYEzNnZvVlHykKmMYlUuLVvhLlgGEeXyBbHSsIkKuUoONRaXxGhHgUCcSsuSrRpeSfUuUKkfbCKQqHhkpgGNnZdDzPjJTKEnNWUxXOiIylmbBMEgoOvzwYkzZYtQsiOouUIozZOMyFfjLlMIivVhDdsSHIKpjJgDRQOoEerRKYpPzzkrRKZbBATtTOdDoIxaAXYxXyutTyHNnhYUCvaAsRQqMjJzZmcHHyYhjJMmgGilLVsoOoHyzxfFOxXnNowUuAagGWGLlrRSsoOgLlYGjCjJdqorRUuUuCNbBzZWqozBcdDlBELEeSsNpPDPuUyuUalvXiQnNDdUAayYulQqLXHAsMGsMmSgmdDlHhuIMmAzwGlkMsSUBbmEoOeNnUVDdeHJmttTuOJjoUCJnNiiIVvLlnGggZjMXxmYyhHYKYykmhYHaNEeeEmLVcuDBbcnBczwEwWerjEbBLjaHyfYyFzlnbBpCJmsaAItVmMvXbBxNdDdDmMbBbJIiZdZzSwLfFlCcYDPGyJjUuYgKooCUAsVvZNnViEXxXkKtPBsiIetuuAaMYyJwmLjJEcCeISsiGYyIEenTtvVUWDzHDdhZdwQacCNnQwSsWLIiIiGghKkuaqQqWddXJkKjtTwWLlenNoiQqwWFoBZgGWwzsKkSKkQZCsHWTtqQnNbBwsciQUuqCTlyYmMlzOaAqnNUlvrrlJTjEQBIYAzZayVuNQqklLUSsuWHOjJoxhHyqQqguUfFhcdDCuUBIhuUAaHRfuVVfFKbBYgGyYyYbBtIrRjJiXAESejfzYgDmMdUuGOoExXRhHruUfFYyXBwOoWbsSUGgmMFfycqQHhliIlURqQNnltJOcGfFugjEeMkhsSDdXxftTzKkRMmzZLsKksFfDssSSsayYwbBWWMNWudVvUGguGelEshHJjkKeMmaANRYBbOlmdhqQmMaaAJjrZrROvVeeEXxxhrRNzoOzidDQEUuiFWwWwizxXfomMlebBEXxYZzavcCOoquUzXxhKkdaIiYyHqQgDdGhxrlLRXVrRvnNBRxisMwgqTrRMpqtTutxXQOgkKGIMflRrHhDoOfYHkKhbBVFJjVvQWwFfEeqmMnNEgVvyYrkRrlLUyYyPpglSReCdPpjvDLyKkpJamhlLkKIiHGjJzZDGgdXwauXalLizjJuTgxEetWHhHUuzNEhJuQrTtRTtcrIiEOoEVuytTeCVzZvPvVAObSernNQoLwOooOXxiIJjWAaVRqQRNPIipTtxXDUurROjJwWodCtnlLLllUuwnzHcCQCcTtqTttMmOoPpIiaxXEFnNbCJkwWQiIvOUPpoCcskKlLScpjApPTRrCDfsAaiIRNnKkAaZRrzBcCZOInMmDdqQDxXwMbBmfFPzZFJjyeqQjGNaKkQqAcwGgWOXxsSvbBpBbnNBpmOojamZzyxQqXHhVLXQEGgwZwvVPVvVvUuQqKboGtTgpIiPOQFDdYFHZgPKlCoSRKkXSseExyIbBQJKsnjhmMHNnfPaApesjJfdiIuUDgEekTtlRkAxXSPsSpKkmuUVuxbqQIiLlHhWBbwvnUaLlKTgPidDDdGgItTpbBMmOahHAYyzNsSIHCcheEKYNnyaAZJzitTkKIZjcumMKkDdUJLLuAFjEAcCCcqbBEeZzGdDiogydDYDdeQqPnNPpuUpOebSJjFfYVrOPEepohUDdMFPpfmMmunUXvZfRrnNcChHlYlLQqDcxPOowWCTDowCzZcOaMqseMaAScCsXWwxGyYgDpPdjJsSTvVTtyTOrXPpJPEeKkrKwptdSvJjKkEBAjFEzsnIlLMMwnkKRrFDDbBizCckoLlXKpahgZQqsaiyMQNMFfjJSsuUeExXDKkYyUuYypRDvVrdvNPpiaAnrEOxXzZHqMmiIYAYeEuOueEpPLlhDdHugGIiuwWWwGghrRshHSuHhzOoDHSJjTtmMWRrwpqQazKqQnbBNkNnZAPoNnjKfFYHSsWwfOTtHCYytTHhDdZzKvVXiooxMfqfFQTyYTYTtyDiIAakKquJxbBFKkAuVTtfFvjOTtnCxXRrwWLHhEelcdDqQAaZgnDSssXxaASdNGIYyDdiKwPpWklLCczBQqqNVkKTqgGQmdhgJjUuGwWVgNnCotTOcqiIbBQfctlrpPLhLCcdDLMVvmlfcCqpPCykKhFfqQMunNeEUunNEePpzZojJdPpwCBbrKpJaAxXhHBbLlnPpXPnjJAaYyltTIRdieqQcCQqzZxnrbmMBvmMAaKkUrRVPJjUBPpHZzbQxXuzZsYySZzuUeQtfvpBDRidgrRGCwEeFfGghHOoOTjsnNEhNsSnHhYLlviIOYNzJUupPjZzdDNZhMmJTtbGwiSUKkuKkTnQqxlGgyhHTBiNnIdDFHhOZBJuUjgGIrOoGjJlpPtCPpoTxXKkHhtFfHKmMmSaAxrGgfFXLGgUuCLlasJjSUBbuezgXrDdwJjoIioOOCclUWMnwVhHmOkKUuBIYyiMGkObBxlfVXiIxIVkOoKSsUuUXxtTFqQbBohnvVNTEegLlWwjCcFxXfOzZjJQYtCBbBpuUPKOTMkFfKxvVZzHhnNVYjJFcCvlLNELsSlcCXIijAaagqiIwWQGyCZCcpsdAGKkcBbkKLlxXfkKAaFGpPWiIXlLzZGhysqQqlmOYUmMbMmBgGALYyaPpZzAWQNyzRrZQNpPnqblLUOPBjdGgKsKGefwuUWpqxxXdDVCWKhmVtsHEibMiImMZXcgGTtCjcBbCXxJnKzSsUuzLlZhFfWwcNnCxgGjcCuRgZzWYywBTXkKNnEPyYVjJkOPpoJfFjOakpPuUOYyLlYTtSeLzZXxwkuCcUbNnWwBiprwWAlcRrvgVNCcnvGVtykKYTYVvrGDdiPlLaAFwWCvyeTXblIiyqYymSOyfFYdWWTMqpFfFfNnGSsOfsUvVDhHYyGFfmhCcCcvVlLZzDtlLpGMmJjmVvMTbuXYWwyxeEKkodSSdDaAjJElYLlzEeidDSsIllpkKPBwOoxDdXWbuWjTtJYBNvVaiHIDirtjAaWwJsCcSPgXceECHEehsSFJeAgGHqQrRIwWifFhsSVSPwWpbMaEKIGoOguFfGSsCcGHhhoAacCsFfNEendDdMmYGsLsqjQCmMdDfFJpPeELrSsWmpuTFwhHcIdlwWLvQqMlLlouxXUgGrIirakKJMwWmeEMwXDKkSEevgMQqCcgldDZqZzNXxqRcAaNOXxLldJuUZpSyfFKkyJzZHhjkKAaUpPOIjyYMmIiqZBbzxXxoOGVXxvyPpPpbBpeyYatmeXoDeEdRrOrKWwkIQqUujsnGGHpfpEiIruBTvWKXsxXSYyuhcPKNwWrJgGqSDUuUuSZOoLlzXxrreBokKLdaZzAPkNpPrRDflWwAaMmVvLDMmiDdTtHdDYxXoZzcvjZtubSfbIiGgbHhCcgUSsHhJfFpPjHcdDdgGuUJjwJlcUEeeEcjTYyefSOoNnxIiLlXVWgGPHZgDdEFSEeEfOoIXUWHwWTwWfaAWycGgxFfEaAdHUnEFfegGXPpKBbupfwjOGggGaAxgicCZXbrLBMmFkgAFxXECiFZAURhCpbBJjJjDJjdOViFewIdDUfDdKdXtSsTKkNKkenGKkyYusSUmxmMYylLpooVSshBPMmtxXTsSIeEZCcHvasYwkKBiaaADbOWwiBqJjkwGtuRrWwUTgiIWjJKcHhZzUzZAaoOLTFfpaMvoMmbdDOokdUgAgiIqwjEOoFfekBaDWwdSsANnbVvHhKkhzZsICwzwBbXEoAaOQqNUuiIhDdHRwCNoOlBJxIXRrwbwqQWEeHdnxTtPpCcGEfFDdeRxJjhHEWJjojBbJZqQOozkMUumqUAuoEZKxgGcvaAMmJfqzQSSsljSsJuNUQemDfujBbzIiJqQjZucCUqQyYyuVaAvbXtSsgwWGmxXMbhHDmdDMKrbrRISQqVvNnQqxXglQqLRJjrGqQsMgcCkawWAKzHhZOkPPwoZOoznNLEellMmozjWJjwrZZzLNnpSsWwiyYZqmhiIHbeEhRrbBCEajvnOeejnNVUHRSsnNlRKklLlgSCVoMNnoNnHoOCcYeExfjJFjbBIiyYxrQqJMmjakKzZhqLMmaAjJuyFouUsaApfAzZbNPpjJqdFfSXxsZZDdqMinNdLVWLlOibIiBpPsSAnvVPlLKIMqojtwWfGRfckKCdkmMPQqsSZXxTvVWQWwBdVvonwPPgdBbDcNFCgdsSfFZeEsHJaAqQVvjhvAnQqhHMVclvPhHpVWyafFEeojJywrzZrRRvRIVTRWzNZUjJaoFiIIaAQIZXoOOEegllXxTuRNbaNwWtNRryyYgGVoOsScCiEerRIZzzwESQlLPpKIcCEIwAPMNwWitoqQWwsxXMmrYVzOhGoOgdDGPpPpwWjAaYLhHXLWhfbDdzZFavVyBgGhxZufTFfwzXxQrgGmyaAHnNhYcCMquLlQKkqLVqDgYnyeTtoOeEeGIfEcCecMmzZKzZkCEmAfuUiHXFdDbHAEoOcWXZznFfKrRBbSdBbDsbcQhHCckZzZsyvVwKkKkQOmMKDJfTvCAoTsOeEoOZztToKkSpPtKtTrzUeXxZweEWzcWZxiiriIOIiLaANkcCKHhHnNrSnCSIutOoXtnFfaAXUbTBetkzJTtTtTIXPpEFUbQYZpKkPzocCcfIQqoRrqHRcfcCMmLIiPzZfKzZcCkFOofAHvnNDUtTuUYkKyyYrkyYzQWwCcGvkBHBbpKkoBjCsYySDEeNnfvWwVWuwWFTtjTjZzEeJCWsFfQqeRaiIOoyTtbYnNvqxeEDdXcCQJbBJjTeEeERbKEWwJKuUxLljkKvfUuFZzktrgkYCJTRLxgGQSlLHheDYGQqYorROlLujEezyEexXFnNYynNdrgTtaAAapPhsSjsSXcCtQPMktcUlerTtAaDtTduQqkKUEhHisgGSIqWNpPHxfbalRrMmSDFhFARiuNUJaKiwkZqQrRDdlLgGBgJIbrzlLPICcDdQqiqUuQJRYuBuSVvsSPpFpwiIcCciImMqXbCSRrdDnqOwWojJgFfSHAavPDoOFQRQjJgVOgNnGWrRYFuUMXxYywWgAxXaWNclYyLCIKWEAaXDdxjHhQBLDiaqSqQqQwtFmFfMfXxKmXxxAPlFDPpnNbIlckKCszjgGaHhyZndnNRrDBbNnAUudCCccxXBMhHzFKQyYZCSsjlLofiFMmPpfJkkKsSaxFfkKYcAaCyCQBbqfFcPUGguklIuflLFHhSJZqQzjQWXxwqTPhaaSOVMmqQeqRrQcGlSspzQqZWQZNPcsEgSsmjScxbvQOsOoSORvVYLSedXxuUDnPpNIHMEeoAhFfvxXfFAaVtijmkRrtFZdwkKDdhfFHhEXMyjjXwFrEBaGgARkZzKvLlgGKaAkdRtTMmrXxjvVDJwbIjGwWUuEevYRWwrsoSsOSJjEeSeExcCaANnYzlQWRZgiIyBsSaLJjjJqQBbsSFfFrRfOoLjqfBvVspPzMxXmrMdvTtTGgHXXxtyYKaERVSsXivcrTTtegLlgTtQLlPpXpIEtEkhMmapfFOUxDPpdxXksEAWwrRctrfwWJHdBbDhYyDLeSsFwlPiIdDHhCpGgPDgXxKmtTZzZmzCKTfPpkyZzFfZMmsepzIlLuUDCcgATcLYySmYyMsiNneKaJjfkKFAuUkVHviBlsqcCOoQSsVrsViInfCIddidHJzoBbfkxoKsxXSTkAXzwKkwZZiIZznWaAawAaaAqOqrRHUuugdZVxwwFgUMmDjUuEeyTOSXxsSVdDWwkVvvieBbBbMwLZMmgKRroOZmXXxxeEUiepDKXLlAcCaYKYvVZzydDdsDdSzTkizZgPPpntToONmMywUFyhHkKDigGyFhoUSsbPKDZzdDSWwsdxXpPkgGgRrFzZfjMmqOUuIiiznNauAlQituUsSeAaEnMXxJjlkBbKLkKwfFaxXCcyYoAaBQqxXJzZfFglLiqBFaAvQqlnNzZnpsSvXTRKkOUssRnVRrvNJIYnemOsSlPUrGgTOctciIAayeEdOoyeSqQJjStvYMpACCLTEqpBiIRrkNiaAIJjoOnHDTZVUazUWquoOUQnNelZxTOoSBfhKxZjHhmVFoLlrCcuMNdOozZsSGswiIZnNtwWbMmvyVqDIzbdDRxXrgpMmPGBIPpiNkrRlLlLfqaAJzLgIuTWjJkKBeElQpjzZBbDreOExDJqQpPkuKkOoURKiKtqezZAhuWfNnFmMtcuXMfgSsJefqiLAapSTCwWCxwWlLofqvyYzhIYxMmhHIuUiXZlcCnjWwJNcIsMmuUWlETSmMYypRzZrzZmTHmaApGDtPpEgMfFWwcfFkjJwGxElzzEDUuzPpQLuWjJOOUuQqXoREiIBbephEEUpPGeqriTwWtIffFFDdRQLgtTxkJjBOnVvaAjgyKkggvVJtPeOxXvJjogGeMcDdKkgAazVtUvovvVgwOoWfFsfFiPOxfPjJGgNQMLoiIVFfnwHUudfFGjzYoOBFaTtJEejouYJjyMvVkoQWbBjPfsPpSbBXBbKkxduTtJahHgiIGOTOiwAYXFPXpzuUtCbdDAaxsMlIiUBmucCUsJpKhdDnNdWwbBCcmMKNcBbCqQhRGgNuTXzZHCIxXiAGIYyjIHlLsJhHwWwSsqtBXPpxIFfCclLqbBQiUNihgxZCtBbCcTcGgGlozCcTTtpLxDUuEelLiIyYiIaRrknuIiUDABFhZBlxXeteTyeJwWLElyROokiDdDcCyAspFcCDdSJjKkruFXkWWwnxeEXkvVFBbMmeEVERqIicGdfcCMmNuUuWkfGLLlShHCcGrmMvyYVPpBHQrLtTHzEHBbheZzLGYyZnrlLzfdDotgGmqhHQKkGHOKvzJjJeiuRwDdoOyIitGgLuLQbihHdjuUYgRsMgQUbuHgGyiRykSsKHjsSJhBbscnrfhvJCywsdWcJRzZcCKkiiIIKQvVJeEzZrbTySzZbBiIPKZCcyjWYvXxRoOrjJwaAAyYaWqNnQOQqGrYCQeEqmrqgoORqQZzrZKMUloOFsuYDIZAGmKzZkMNbWSKDdpBGbllswWcRCAAnfWeEwFEXlLbRJjrqQfFozHQaJYyYaaAcMmRXxerAanRrNWwbBeFjnlcgItDmzZdwWvpOFFqQoahDEeFBpPDDavDAJjGgcsScCllLFfAItAVIHBEPCcmYtBOfDzgDGkKTtyXsDvNntTcjJXtTcSxOjnxqIiPeOxyYXvcwgYjYbBJCuUPqQpqZMoofvVlLFPRvKkCchHhHKjdlxYyjexXEnhzuAaWEkwWGgLocBthQVxXvYyqmxpPGVvFfYAaGgWJpPvtvxZGMmHTtYyJFfgYyWwGeLCclEXxjTJjntTNtrZCLltTYXxyUynlLNtrRHVTKGZakWUuRzWkQjnoEeUeAaEYnSirFfRIPeJjKknNtTVrRyaAyqPdDpFWluUUBKPDdpopwFfJuUJQqtTmbjuUYrhHkaTlLtQqeEfCmMaVqOoPliYrjXiaeEOoAIJwwxqQMdJjYeqQHhEUZJwIiPREeAjJgfeGjtFfhrQEUJECWxsoOTyEELfJoOxXxuVoPnMqMfHkhYuGgfEccuUKRGjJqLhKUeEzZHLlOonZxXStoGtTgODLjJrCIicCiCrGiIEGFfCJjcgRrPBEePpbTluJHLTXfDgGciITIitiIoCcIiChHBeLlNxXTqpPYfRrGLrhPXVQTtaiIfkuUFlvrmtXWymMHhYipgiIAaGkKPYvCwpZNnrAagoxjcYeVvXVoRgjJGQqrveEnsGWTfrJuVkkaxsXjTuEaMwRHrRiMfXNjJgEqQMVkHHiIzZsSXBfNnFVbBvbuHhNxXnURrtTICkMmvEvVeEeVKDVvSGWteLbzPdEsSOoVChPdDTACBbHAPfFAaTjvViIRKdJsSFfffFFtKrRBFfXHCcfjQqJQQqVQsLuoXIgFdMGgnuUEeiXzaqQVTqVjNobCKuVvfFbHhgGejuksZVJKkzJcCDdaQDgGjKkJzBbnsNNKLCuHKkNBbyYnlGcvVnJVYGbaTtdYPjubcCQvVBbDyHfGRBQAatnYYyyCcfFVrRXxvdzUjMdDbcWdDwkKjJvNeBbZUuxZzHqMLmzeTtVvjtvLpbNFasZlLMmDdFfYMVDUudocCuXMcCglyrRtyeaOmarjRrOvqrEjJYGdFKkUKCTilLpqhsSHhHpUsSnPZNtTgGLlYRtTKcgkKGpCSLbHhdNnPJTUUWfYjHAahlevtDtcjgGOmuFfVwQGBbdfFDiIdDzWJycHhZHrRZzhzCkKaAYjwZEeZzgqWvUMoJCTdzZTnaAZSszNVzCaAcZELJyFwuGgzZuuUtjKkpUgGuvVDBlbBTtscPCkXxraAYyyErReTtnOohHzpNuPoOQhFfHPItcPEWweCUucpkuyYdDkKfDgyeRQtTgnNGVoJRuUAMofFvVAJNnjEYTYLGqQmxkKUfFOvmylLlLzSKkAfnBLlLlPlUuVTJEZMlmQhXnNzEnVnNzZfFCBtTmwWJsyYSuZDNTBbqbrgFhYdGgqnNBUJpyDoOABzpBbrRPXxZgyvjYyxFfWYywXNuYyUCgUuLiIBbNnhURrgGclknnEeSNZdqIiAzZjZFtTfjvzSKUJEBfFxXUKDdkkxHhXcBOnJevVEvIPpiQtvAHhZxINfFmDNnfGioOchHCfFxOUlSqvQqqjQqJbBFHhhxbJjkTJjjDkrJtpahAaMfFmcatpHcvsFfSecCDpzZZBacCAlETwgsicCIdbBcixIhHihhKvmeGPppPUJhHjLdDluUeDdEunBXxbxFmIMmhrWmHhxXyYAeUzZtJxSXsSAKKvUjRFzZtwgSrRNDdUuVOvoOxqQsSEyBbCZjJTtzJXOGRzPWcVyjJIwJjxTMRVLfKFjJAqQqWwQqvWmMwxpHRlgGgFyQtRrnEHhbcOxXCdFxtsSlhHhjULvVtpegOoRcIbBcRldIiTszNOohukHlQVbBpPvgrkDdiICCEeeaAFZzGgUyHKhFmQmNpOZzvAZzqQCGgcFfaUXoOjFljJeDdeDdYtSXwcejrRueqRHCcTJLlgEFGarpWjrlDdLRIizuGZzgyDmOoXWWDdjxJRyILpgarRgGAGQvBbiIyYAYyckAaKCcKkFhHTZztaAOouUAKzkFfKIiJjZRHhyLlJBqQqQMvyYVjjWPOkbuLwfQYYvnNEpsNyMmdpiIyYxXPnNDuJjONJqKwZrwKAzcCgktUuvWSswhTYoLlDdOugGcaAMmzRTteEBbGEegxXhgzXFfPpVTVjwGgyRrgSsXMcuUCHTKkbCKkZzOIilEeZzKKkewUZHNJXLDJkoOMmVrpiIOOmzQTtcjyJyGWCVoEpQXNmMJoXslLCYyBbPPppVvxEeCVdSZzxYliILRrgqQdGZdFmMobTyMpebhivaTyYrRiaLrRcCCCcadVAbNnBddeEbVvfdHAOqaAQffoiIPVDMtTdTiGCLNMmJXxfwxXWEiwWGgIYycHhxXCRNnBbEWwrMmCXxAyjhOoHAqhZOvVBUumMxRrcCeNaagGcKkreECSLzZKkLBgbPxXkswMmBnCZzuUcmMmMEeEqQhHeNngCIuUTticazidyUSfLumkzRrGQRMATtaQSsWwqcyRJjgoVwWywJYzkpsYtBRjqQqFNnfkrZzjAaCmMnNYywDSWYctTbBjVfFHFRWwNwWCSBIibxRrXYrIYhUpPBumEUueMqGmSRrruUGyVvJAakKDYyIBqlUzZlPpTYPpnNqPpQEefFWrUfFAaIxXEjZVkohgMTOmyNnYMFZIidDRNzTtGgglyYZhEelRaAqkKnNhbhHDdDdRgGgIiaekKEAspORUuCcroPlgtTqQaKkAFKuUfFBjJLlbwFfUnFDgCQMmrevyYcMmgJkKjsSGCfIpPiFIifKNyYwKxfURsfPtTSpPaFfYcCdIKrYLejJlEexXjSsEYtEawWATEEeLbzHfbadNKAlLdXSsIDdilPtFfZOLbBPpxXgIizXGHLlInuWwbTQWjuUSpDdPhpYyPiJigacUuhQqxtUTUutnfFLlrHnEekqdDQCCccFfDHkJjPuUjSMbIiuaALmSaAXBcDdoyYrROoOTZPQqxpfjJuUbaAWwBxcCyQqgGgRrhHGaWIotoHhAjUDFuUpJwqOKmUOAfbyZAaJgDhWNvOkgGKlLiIlmqnzZpFXopIkKSrRwWwWgAqQaaAGcCXxBbGVOVuTvZzZGrRCmEOVoEUupTjIiGGICciYGJJjrRNoSUusJjbKXGlRRrrEwWguUzZBbueeHPFfrOxWwOooowYlLyUlqkKgGZdeZZLeXgWKCmGeTdTkKoOtpaAWwgGPgPMhBbtMiIPsteLwlLrRGgJjWwSKoOkiCLzyiSiIuUsHZVQFYywWOXAaAactTqQiIctsPlPpIQFEjGFmxUCTwUHakKEQTLlkIkreEKjdXHheKkoERdSsOJjqQYyoJRrPqLjJbMmwHhtUFfiGmzAaZMGglZjWwQXxyYtTCcFJjjxvVXJdDaAkKIFfiKnZbBidDdhFvVfHiIQvYVwWBTztTWSgzZkKDnmURLIilgGnNOfvMJzXkLNnlHFbstXzxXLEeEwZhHSsuUzuZAuuUvztFfdhAgGaKUubPQetDkKdFflLlccacCPmyVhHTbBRrsbwWBhHWwsEPpTtYDYCTCUeEuotRupLZFfzoMENyijrSSuortGgxNnVPNLVfaAxXbQIGyUuYjbOAWmNJjTIUuqzZLaUAmMZWwpPIoQJoOGgGDdRVvrpBuOiUuIHfYhHATtaolLOjJIOStTsodAaYfuWKkXxYnLlNPppyYEeGIKtZDkyxIiXUuxkdPErReuUuUEIuXIixMJjzkttTTGzlWzEYyeZmEcCIVeEKcCvsotYJduGfWWCcXvzGxkKXgDcCJjGUhQoQWaAAwNZzKkVvzzdDWWZxaKtkOXKFOZjhDMmIDDiBWwbcFNvSRvsSSLbIVjJhvhHEIEeYylCtaGSsdiZPoOtTESzYKFNntkOotTDdcZMiIQvVqzMkBbwWGvUCcuVdbpPBcaApLnNvVWCcfEldbyYuUBsSRiIrUujFRTjEeJyYdDCHlLhaeSgYyGKXuoPAWwiIuUHKebBTqQeeEiPxIiUuqkKdQWwqDGGGcCgEtCcRKaAkCVIxvreAkTdDVvxhtxzZXjJKkMmVDmOoRZSFNGgnGgfWwbrRFQJfFxXllAaAYyjJaAbfFfFYROorGTtzYVLlvyrhUuHwqLZyYyaAXswWCcyVXxgkKjJJiBlLWjdJeEkKlLbGgVvBDVrbeRxXfWxJJYmPpxemMHsSWDzfTbBKmMMJITLhHlFHaOmhojJOiEsCclyHuUnNhrosSoqVBXeEmMCsJMGeCcYySCEepnzqwPLgCRrOTtoEvosAAyYHQIiqptoOsUiLKpUeEuXAKjhHFfIVvAaFOJjJmMWwbBczqkfSsfFZsSDdmybVvBYbQqDaNzYPZzpNQqnANnJZSFfLTtTtiBdQqZtTzfLpaXMNnkTWskKrvVWFfwRQAIdloObNnqJXxewkiiIXxnwOoGaAmwWfpPywkKovGqrqDdfYwcCUuWydpVuBbXxXxUhsGQNFfscBxQiICEeWzZPpPfsUbUyNnrjGgRrCcpZRFfBMmijCclLaAGCcbAalLUuzKWbBIkAjLlunhHUIrafHfdsLABiIFXhjJnRhHrUuwQeFfRAaOoELuCTKXxmpqTxJmMHNnGiaAIxXRDnNjJfYZZzJUkKyNnqQNngydEdDQsSqsYyqXlrtjcywDdWgGJjFfKGRTKZzVJXkjekzZTYytWwBrtQFfoOqmMjntTpzZPLlNVyBwWYArIitTESwcXxtJfUwbJjBFdcCcgGJbOoOLlPiIxXhbKVgIiqZzZKRXBiIbxPXxvVsSpudNnVhaFplKkRbBrFCvVcCFfrhQOaAiaAQDWwdqNnFCfFFfNPpnOyqBufegsIiSGxiVJjDdvtjZKTEbtRrBbaABuxNTxhHTUZzcCNnijXnXxNxJscNsRhgGnoOloRIITtBkKbXdDzwXxFfCcCEuZRtTYykOqQKkacVZIiqQQxXuUqBbWwztFjdkmMoqWkKxXhHYSzyYKcOocCCqpPCBSsxXyYHhrRkFfyYNxwCeIHhEeiahBgGWwfzZxhIFaiIgGMmMZkOoKzsSeFiQiIqgEEYuUNyaAVvGRraAdnNMmqaTtAAazLlwWZQQvCcqQlUQaARqZxXWtFAKkppPPaUzXHbYBbAfBFHwlxzZtTlyJPpgHukKUoeEZvyRMmfFTtSybBYOqQGdDgTInmpaWkUuqQKieikqseeEWNnqQZdmMDAaZzvcCyYYnnuUNTnAfVvFIiBnrUtUNKmIiMrRiIuUkrZOoVvSszBbRnuxXLLmMXxGoNnxzoaAOiqifOAkNnKuznVvZwrOobBJZzjVvtWprRPwvirVWYOVrRmMvAYpPwWwLCvmNaDddhHDVSQqzLlVvNiIuUnNnDGcfnCGppGPpkKgGgGgIiWNODsEeSbdDsSvVqwtWwCMmczTtpKDFrgFTJqQOQmikpNarRIiInNGgoxXwvSslDImTtQzIizDQZznNnBaFfFPSOIifYUlQHCcfFAEeRXdDJzrsSRgGZsSsSXyhOmOvcsGLrRrLHhxXrhDduvJEIimMEoNVJAeHhtTcHBMoOQzBbIPxXlRrzRsSWwJZOLyYPpOesSEFfCmEAaeMcWxXppKYyoGWwPpeEeEmhHiBRkdBJjeETxBUYXpPxJBbUSKlLksFiMmIuUdMEqunULpPsqZHhEeQFFfjVWxXwCHhXkOospPSzeOUZzauouUOQKnwWNOweuUXrgRrRrXNDPjJzZphBsSJQqDdjWxipPXjbLCcncWMIXxiXEedDxLNnDdldDIimEerdDtTsSjJgGUkKuPDdpnexABbspPSsSatMmTWZWciSPpPpHNdDnKIiJWlLQGbBaGuDwWKBzZOVBbmAPXxtluCoOJjQbIoBdAIvVVyhHYvbjJiIKkWySAVhzitTpbiIeEAajJHvOiIOPXSsQqBbjJlLMUuqQgNEnsiISlLxDaACcSsknNzZFulLiQqWhqweEWQHtTEfIvoPcHrBbCcuazfIHhcetTfKkEXxeaGxXvWwgeEGVCcKQqvVfrJjRblRBgRrGxzQqIBbrRGUuXomMpPJWFJjPUkxNKkjJtTuhDeXCYQMVvmqwFtYydDVvhyYxXZzwuxkKiFesiITtfeGcCzhpwaAvsGlLAMmapPgFEyYtJCzZuxdDXCmMxXLjWWwDChtTuGBBFoOsBUvVTzJjJVCcJjPtTeEpCOyyYhIdlLUrRuFdnTtKpaAZzqQTtDlLlOsSbEdDRRQqstiimMBsQokVvKOWwqSbIITmMdsQjFfRcCUunkyYpCHUnPpNsSuUxkwVtbURePFPhGgggNSrRJpPLliRbEeBxTtEMCcRrLlIrRiTAVvEPnNYgXQJiooYysSOqbiIBwWQumMYYVvsPoOQqzjJsfFSjLbBlnNDonwWCrsSQUunMmCcQzLGJjmGVyOgGoYsdxnNxXWmMmdDjHbBhARxXRJjOLmVDiCWftjJrRUPYyMwRYyljEecqJQSlLlSglLyDhHSJjOYypPHgghHNnipPQqIYAaiIAayUibBkeAuUmBsBbvyRGgrwWzZYaEjoOflLoOxGpTAaRIdXxiHhhSsNnWwIAncCbyjxXLlJwUYyUuLLZZzyLeqQsBbxXsuUDUuxXOUBtmMgPTdxXQqHMFfgNndhHFfCcuSFoTiItLlgqQPnmMNuUQmtmMwwJjDosFIiLoOlfMQyNnYEeYeELBxtEYVlLcvVfaAmwWzcrRoOeDdECQqUuBbZwXxWMpIIifFYygReEyKkCLaQqgGRwWPISXxsbpPCcDdBKWTtlgGEsyojJKkKdJjDMmUuAaxXrRAoKcCvpextbGrVvYyUJXHZkNXxxzpPmNnBIehSTvOlLoMHkwcvpPRrIidwWDXQPHhHhFEgkSkDJMmbpoiIuyYBrRjJYnqxXwOtTolauydDhHzZWwoxXMFfLlutTUSPpsLQSYHgxwgtTbBYyoOCgaDSPoOzcIiYWzZwdDgkKGrvVRAtTuUJRHTthrxeLlnVKkfyFQqffFftTFwWQqvZiIzXSsnNleELqoOQmtoAakLQqIilbcTyqoJGtsVzZIivSyYHOfWwuviqQvFLXmMoKgMoOmmbNnoMvEwWevgGVIitTWNmwuTqQtLWRxoOGZEAjJRrcZzGsJjSUuecCEgGglxRXtfFTsHhDdMkhpPOcThHLSsgRibzofGgXxJTtjbvVvqQIiVKVvktYVvIKSGgskrRiLEeVvXNtsIFfWgwWJjaABjlLHzncOoCUuiIZsUuSCcnyoVLlbByHgGqVvQeSLVvdDlJsSGfFarRpPAgEenNGgTNnttorRKkKkrRWcDeEKkIrdbPUuVFTPpqEeEUBbqBMmDVvdhtTbukSsKpyYPpvUuuMmLlOCcGbjJBgoVRzZNXEIDWwQqVvfFdKkDNnriLOOooyYtTWxXPkKpwNpxNkKjPkbBRcWDKkOcCUmgGxXHYbAajJBcQFKfMTtmsBbMKkmHhSIhHiFklHlpPRLTmMCFXxGvvNnVPpMLlmVvHDMtEoOegGvnuUQXxbNqQpPMmoJUafdDbBXjUUuQHhnFfNmMdteEtqwWnNQCcqQmMFmXOOIrRxkkBbGgKrRRrcRrkKhoFJAajzDdZBbhyNnkmMYykjxXGQquUQLlqZzgJKJOfFsSshdZUHUUUWnNwvVFfoUyaynNNnVvMgGmWwQZzhoeZzyqtTQbaABpyYPMmYRNIZznVueEUDRdrPdmnqmYIASzGcHhCHAPLlknNoOxOTtQUuYyqCcKZIddfeENWmmiNSNDdnZCcvVeDqAaQdfYyJaberRrIiRbBGgtTnNhHVsEeDTsVvpPvVSXxiPpIVvKkPWkRpjBbxRotYyYTtttEeTXxJjUumESlLaAQmAoBOobWMmRrOmMdtcbBpXCdZjGbwWBvVgJEezaArRyEepHhPLFzVxuNHRXxvysUuBEoElBbzZDdJjLGEBberRcTHCchkOoKtCeEnNqQXxZzOIgTtQaeJfNnaUCpcCPclvHhVljtTEeCzkeEHhibFfBnZoGyYtMmkAuNcdDCVJjRrkKDvVdoOKkXxBiIqQPqQpqSwWszZfcCFQoOXUsqQrRSvxXXRuUrxMaAaAfkKFsGgaKrLVvuUUuKGFSEFpPJEemMNSkjqiYrsSsOcrPpRLkpGzhtTfyfqhSsoOHBkBbUupPpWzWvVeqxlvsOoSxWTzZtwXwWONnoYlGgLMAdDJxXMrRPVvbPMmVdDGgGgoVvCoOngJEYWwmMfpWxXbBdwWNiozbdsSXxDrYyYKkdDyXxSFDddctauUJrRSsPqgGQCdDOuoaAiIVPpUgGuqKjcBcCfKkekKAXxTQrRqfQdSsmMDqcCFIimMkKcChZNWLNHhTcYyDdnrrvlgGLwLlWlOqRaAEskKBoaphHcSsEVvYUvSsVveFfeRCqUjHeLlnZhPpwrRTXGtUZDdIACkKcxUAhHbBlUulLLWuUxPpdOoDgYyrXxRMAjPYldVzZuUJpPDSscEHhGYygrsLGYuKRGehHBiIbWwrRZzfvyFdPKkrYyRCSscpLFzZmqQioziIZqTrRtTUQOoPoQqOmtQGWmfFSIjJXrbHhADpPHZQuUVAtIiTyLKBtTbkOFZIfIWSswevViIGgqMmIUuZZnHXXMmxEozRHoOhAHDMLoyrRrnEGgShHeLEgUDnNduDUwbBnmAawASdSSlrzZneENZTtFgGvVHKmOoJsSGUnwWNgCotTuUrRjThHLrueELLCWNnwEeYeExsSXeERrrRuxeyUuZatRrTuUAnNFJLkKlEBbsebBazZFfxTyjJbBkYlLaWwAyDdvFLlfbBvUwWFffPpFLWlLtTwLKklwWhHlFriMmbHttTTGQYXhwvVKnUvibqeJtjLLlRfFRUuVbBLZzuQZzoZLLtcICShSczqRvVrlLHhbOLyYlfIOEoOxTtDDwQAUHlqnNLlwWgOoGAqmrRMutTHhJjJjzEeZAsSaIdDKeEjDdgGRjQqJNnrLlJkgGpTtPhHiHhNigzZlMWGgFfjmDSsdzZUUTEzZRUurSbpTCcGHPphgxVvXxeIvzHhSLlDJjkKdaDduOocOOnNXxkpdDdyWsDcCzjBdDnLLlliIxXTiSiIxrRXMNnbBjMmLfFAjJalcPNLZfFYhAJleJRBwWbWZCdDbNCuUuUDdiIdUCvlMndDMmxXAhyiIHvVMVrRvyxXbBJzzZGAaDdNVvZzIjyYcTMYZdDzOoyIijhEeEHhcCmgGyYMwWvudDMGgeGmMggyYGEujJmKLgWZzvVhHdDZrRPhHpaiaLlAULyiIYIiqQmMSahxltTLjJqBbIaAUnNuxVLAYSspdUunAsSalebTtXFfMmxpgGPpPLCbZOQwlLmMncOQlzZLDkIouUOiKIdDickxXKsqFjJfQSIiJMmgyXZOoYhBbIiLQqDdUhHulOSmMvIhkKCrSVcrRxXbBLgtTMmGlileEIzSsZYyiLOotakKZykcCQqgGcCYyePpEaAqrRrdWOowGNnPiISshHkiDdDTtDddvVmJYmHhSqTyKJjyWZqQbBQqVGeLwWYouwoOeiUGguxXIkKbBAaktmMcXxKkIiBzZFuFsEPjJhbBPpHsnNALEeleEGgrnihfJjFxCcXYxLeJjnNIiyYGxGQacnNdOIPxXsSiAaLhCcHlIFfpMmbkKJyvVavHGFfzfWwJjQSsqgLlwuCcXSQqMmcCbBUuuefrRFtDAzEgcDlzrRwJCZsTNAaYDlFfJaAjbBabtTuUBCcMkKPiAavVOooUuUKkKkKkuEeitTgGYTbYHhbBCjJPLlGgyYpcDdaddDNhTtmAaYyAFfxXRCLAalhZzHBUusSbchTJJlLXnGgNPpbnqNteEeEZzYctkGeGqdhzvVmMfFZAaAuUaQOcfjHxPpZDdYWUuQqwBMulLKBbzZkUztTqQZiZHuYIiXxpnWQHaARfhHLlRnTtlHNAauUnhBbJjBbwWOqQkKzSscSsCZswGgWkKAauUguHXXCcWQpxIinoOuHvVyMdDoKkvCUxXBiIzZSWHxqQXaOhzYBbywWjDhMkKzZJjOowWBhHgEONMmgRrGosDMmyKDGMmrRbZzBjwWHVvhkDMrkoOnJjXSnNnNsSsbvJpPpPgGJgkEebHhCmMcqQkhHhTwWMPaAqSVAaTbBxXtYnHhFBbfPppqQgSZQqCSPZZXEexYDdxXQVTOojjJjJJmMELlzGgZRfFtTrDhPcaEloOtFfCckKDdHhTLeqpPCZeUgPoNnAFOgFfOoZzAdDEipPRzGyLEexWwuUXYsSxsTgpqRClmGYybBgLLlNFfjcCRrnjJeyYzWuUwmxXMRneOfIiCcFoBbCciRrAiINgfrRFeXFfxIBnNbiErHELWZAaYyzXUcImOVdcVRmMrvdYoYvxQqXVwiSvOAVvaoHCchiiIwjJmjHRzZrQyYqrIqkKVvRrQsSRtTfIidDfqWvbBNYyiIvsSRnHZzBTpPFfcNnXfFGgSEUupIiudQjJqDUFfunOoRrwpPkKWjJYawOoOGexAaXSlLsswSspPhedDEHXHbBOAaiIOofFAmkKhqCPOyQqGgfFVgcdzewWaAXKlBmuSeEfFLlsAaUimTtjJMqKREeaAvDrqQKkcCOWwUhsSXxHMFiPpxjrWKZzkKKkCrfHhSqCgVvVlNnKkzXxZaAoOyHhYLvZzAjJbWkGboxXDQqbfFWjRrGgNAWwsFYdDyfdDRXaPJjyjJYpAxANYyIXxVzgDKkdGMgGWuTgjLlJGjJtpPJjaAAKkgdzQBbqZJDCWwsSmMcWVvXxPpbBVIiNjJneEQqvGgtTSSssVRrmMuxDJwsSWjZwUuQqKFfkWTQSZaoOAYaAysmSsFhHpTeopPOEdVbDaAdBbadgtTGDUXxJjQaAvLXKHhUIiuEeFKdDkBJxgvVGXmMEejCcAJjDFpGgOrOokKRnNQRrDdqEeeQqkKEwWHhekLJjBpPQUuqEelLHuEepeEPyaknNFfpbBtkIHRcCocgxXgmMGGCcTWwkKTOkKoSswHhWwQqWCnNFBOotgGNnTWsSjcYyelLEBbHkKKSskElLqQpPGkmHmNDdKktBbSZoOgZlnJjryYVRDdlLiZPpdSfFgoOCKvKkFNkRrKWwbrBmCRiIrDwmwWrRIiMJfFjWmnOoNMTtbKkRNMfuQqSsEtTSIRrHhiAwWasjJrRkVvnNqZhHcCJhZzHtzZUuwJjrTtQyYwOBqQeidJjBbnSssSKrEelLWQqSMmldYdbBDyudDdTtIiOjrRQRDnNEeznDZvVhHeEztcVvJeEjCTdaHfRrFqZfcuLlkKQqwWdDGZzgtGNeaAEnNWCcwNkKHhOhgActAcJjxXdJjtvVRoOrWfFUuwTNGgXXxBbIOofFJTthHCCmMnkFkdDWDtTdPpvVBbwqBbRrdDTfwAaGgeRNnhHiWrRwWTXxhHdDyZMCzzwELFfHhOaudMWwmEVzSiIDdVVFUWbkKtIzDCcXxXSrRlLcswidDExqLlYyRdYytTDdDtTEeDvVvsKmMwWrnNRmcOoJHfpvRKaAOokyXCcfOoFpnNPMnpmWwMbOopPqQbxxIHhHMmlLhZzmtTQqIQpPSaAyIiNniIovVXxGcjJGgVeYyEswdDdVvdDTtIyfFdvkKVDAxXaAxfFenNEJtIijJdwWmECcarKkRhjSQAaoOxMmQqfFSsqmRRxXXiIKbbBBbjJSvViIsTtdDWvVJZzNwwFSIisfSPpqmAaJjqQYOoxbAUpMmDJldDLZzPtOoTpZgkKkTtDduCnNWwFUPpPEQqxKrRYfwWylLYkKFnNpPjTGlLaAgoOYvYFPuUTRTtSRrKdDOoxXHhlZLlzuCYEikKtTvSsUuQqrRzZVBvtBZzdDbGBbAalvVLRzZdDyYzZrMmglctTSsaACmMYybMmdDBbITtRCJjyzaAZfaGmMgYohHJMmJJQTGmMgtgWwYyIigyIiEeShTtBUfAnrRBqQQpPqQwWkKsSqKkDdIWMzZcZZNnZzkllmbBJVvkVvuUSAaUwzZAlHcCmMNawWAnNLBOoaAyYalmykJRcdHhWwDCbSjJtqQNnTCoNnajJbBmMKoDtTRpGoOMmSyDdBbRrAOoEtLlRuUzxXZOociMMmDFJjfdgGfqQTnvjtTxXzZJLlncnfhjicvVjVvOgIiCcpKHCaAPAapnaANbwPpWzGixXrGgBbYgGxXgrRGgsSWwXrrRbduPWIiwpJmMjUDBPpqEcCqRxTaAdDteEXxVhHvjEeJXxQqCcmMIiQqsSwknYyjJRrEOoWwezwXxlLWoOSmfFNmMuzZmZzeEMQhPpvVxQqSnQqNgGvVbBMsSHeVPlLpvIbBzGgLsSEeUwgGhHWPpPeEiIpuyepgPpMlLssSyrktxXolkkWwDdTlPWwCWwPYEtdDTMCctiIiTOoAqEljmMoOmEAakKeVvAGvVSkpQxXYyqtTcCPKasSJKBbkbsTtRIisBbYyqQGtTgFkKfHAJvVsXhiIYXlLptBXxbTJnCcNsOoNnNIfoODzYyXGgOoPxpPHtLlKrnEeAazhHZuUxDRCctulJVnNvlLuxXEeUhkVPUupxXnSsnNMKTtkSVvtKvKhaFsSfFsnPBIjEMmWrfTteExpPdioyHzZcCxXcTEeqQBbuRrHhKXxiITqBPpFkKgGIifggGGpwfIiFUyyoOYYkKubBuTvVDzwZnwWNeEzeEGRrgaziIGKhmMkLlKrRQRrHhfFqNnOCwCcWPAfFapZaAVvrbBDOodNGnXkeECaAwtTvVWtqFMuEeMmpPzrJjRmMUZeEzuJjQqZZgztXxTwJjqcCmMPpJPphPpJjaINnOfiZzMyYNWwIiqYLzZlfRzJNDiXdDLmrRMjxkKWwjLTteQqMmEXGgNnjGgQBbXCcxcbBfyYkKzHcsiISCTzaAXQqxffkKcCpuUjyYJPsSqXEHbxhmaUugGAXxfRrWMmFeEKEpsGgfPPLqQdSsPpVWFfKFfkWiJjVvLlXmUuYyIxXvVqjoiIMWrfFdDROThwWHpPoOMtTmwHhyFfVvYWBIiNnbhHthHPDDViInNvVvcTtCtHhTzMdDHhDkoKedDETtkOZzekjJKRrEiIGpPNngVWKksUTXaAxgWwGHtZlLcwWPIiraDSsdARpoOIiIGbBhHCcWVHsSEehpBEJDdjpFeEfaFDSseHZCczakKARwWiITpCcPBsShHbZztlgVZzDdkKKzXbzZFaAfQqBzZbBldXsSxicCIvVDoaAOLNTtnmMZBQquEevvVuJNnWwPpGHevVEjJmCcCbBcMhgiKkFfxXIFfTZWJjfFDOTvVyUnNIlrnKhyYTtoFfpoiIOoMmPWwwWsSpIgIiGTtPpRgqzZggGPMMmmuHMKkiIMNWwSDdOFfFYyQJZzjMmjxaAADdgTtGVvTVvNnekKEfFpSVvmqnNQGNnkKTfGgFybBYmMmXPpxpPwTtWCLtTNokIihdDvVDdHTtKBbTCctrRIdDJVxXOoezxXZmMwRwSJFqQhcCaOLrsShPpQqeZXxzsOowIimSFzmMQTtoLmxXMljJXxOzXdwTNnDaANndrhHRYLqAoOtTHFNBtjJWweiIxOpBwJjegRNnVvUsISfFrRsttZzPCcptKkvLlEYysSRoPpcOakBbmMGYhHCcwWvVKkcCVvfqtTgAafwNjBOgZkKYnNBbymfFWyYZzPpwYXRWwbJjBDfFetgQqtTGfwsueWOotTXHcGEegjJiIobjaAJHTtqpPKPVvSspJjkiIfFHhkYyFffrUxIGgGfFkVVvqbnNQbKMRrmCtEeVuUwWhHFfrTtnVEeiwWjJPMmfADgGdhHMmWQEdgOOvsGgpPNRPAadDFfMpwJjWmMGhXgstjJuIiUOoHhHFJMrRVvuUWnCcNCcIiwmkRrKCHhPQqDpPdxXwvzodVtHhTbBYQyKkeNnObBJjwjrofFNAaGOIixhMNMmaCcdwWDAaCckZzAakKKMzejJdzZDhSFLlvPpwWIiVfYHycCRZFdDdDZMmNnOfIiFWwoZzeVUNnqtbLlgxXGWMEemcFxXNnBYyiIbIJJjAVvaqQGnNgqKkvZzOoXxfFhHrROpyHfFRhMUaTtAseETtSEegMmcCvVnNyNKkmMiIhHxKkyWOqkOJjovVUuKvwSsTXFfxtsEeSevVhHvVEIIHdDDhHlyYRrWaAwSsLxXPplLhgTtDdEKuUzfFZGGIspQUBCwWsepUuLoRiIrObBSVvUusEqQelnwdDWLloQCeqQwuLlBeRrWXxDdLQzMmbIGMmrRpsSbBaAksvNntTCHjJqQcCkpTGuUgoOtoOPIibBMrRmKmMgTXxkCcKQVvFfyYRxkjWRrwzZJjJKXLfFajLlJsNuUkKnZZnNtTzzHsShDdiIgGpMpfFrRPhHryYEjOoJLISILSsxGqPpQgcIVvCsScMoOmCtTxPKkDduHHUUKOsSPpwWuUOoPpjJiwWcgSsjJpjGtTvHXpPKRrWaAkqfMefoOkysCcDANzNnZDdLltTHhzZdDwWxXlLtTGvVAZQqcCyYktfyYFLGguoOUnNxXSsZafjJZUppIiPDMhHZzBbZzLlWhHDNnNnsSZzVprhEjGgGgdCcMCcmAamMtTznaWMmXxuUcCtqQzISsiuYLlsIiPMmKIlLDdtTifFXxDssSiISdqllfFgGfWdDgGgGLltrRTabBazZGiUeEuHhKkaTHNnhtQqrRpPRNnSsvRDiIdWRJjqQJjJjshayYAdDdEeDQqaAnNYyxNAFaAQDCcUuFBbyjmdDMRrKIikSVdDwLlmWwdIpPifcTJvVjKkqIDdmMiRruIiUcMmUBtIiMmyuULJjjJlDdDbfFDdkKdtTQHNnVvsPUvViIudDPiIfFhnWpHhVjJKkWwEeSAusSgYyGgzZkadDyYAeEecmkKUuMzZETtiILQeEUaAuGietBfrGgLlooKhFfLAPzBbELOWZzQqmoOxXNGgWRrbhuuUUHwMXxxtSsTRrZWdQqgrpPjJRpPeeIiEHhEsSGIFfipnyYNPYysSBbYHhmiICFtTfcMyLuUjJQsnsaSEVvelLMmsxqQPpoOEHhfFwWFfNkoOQAsPATwWtMWwIRGgUjJdDvVoFfORrltXxKgnNGgGkyYgVCcKsSkGRrrxyYXRbBDEEevpqbBVTWaCcAUrQqRDdAaucCDqQSsdSiXxoOfRrFITasSoxDdCxXxHhXWwoQqOaAsSmBbwWaAmMREkKrRezZOdDoVlLcCVvyYJGgjaAFfLYIiysFHhfOoSYLlyifFrRWwIHOYVXXFdDMmQapPAykdTOocCfoORrFlLpPpnNPcfFZzwGaDeGOzgGEeWmfFUOoufFuUDdCgGfUueUuSspPXzZkKBbxGuUXxDVvuBbUdyISscvVrRVvbBDdOpPopPVLMmlhHzZvPWwpdDwnrRNzhgUuGeOoeLoRXayYwdLYyWwWkKKkMmisSIubUXxJjsTtJjSuXhPpsnHhemlPpzZeEiOoIGgaAWwDdLXbBxFfibBBbIEebBqtTOoSRrqQshCcHhGgHqDdJjmbBzZwiIWRrnfFNaXzwWQqEdPpsHhqQBSsyYptTjrRXxVvIUqQJrwSUuJbBjEeyYgnHhNGsYyWtWyYwbBiITtTGsSggGHEqCcQMmFfLZzlWweixgGFqnNfFHNwlLJYyzZpVvOoAxdDVvTlwNGglLWtTUuiIwFAafqfWzZwWwHhthxXHtcbBNkKvVUjJucdDdcCdoOFfhHSsJZqQztGgBbgGZziIzZoAaAaPlLBbzZJTtpsgGWwusSUiIvVhfzZQJjSsqZUuzFPptfFcCnNrEyxXpPVQKkYySwAaWWwfQMmqFslvnQeFfnNZCVvceEzTgiImMzZEeJjKfFjnaAWwmMdHvVwKcCcuGgaGogGOjJoOBgAaAaQCcPpcCsSdYyzzZZBbFfJBbjPpDiInCcNSVwuZzTWAaltTLwbBLPpltjJjJrRsSmMTrRtfFTtiIxDXxaAdfFHholLCcnDqQWwdBvfcCoOkKFeFBbzEeuUlXVvxxIiPKzCcZgGkCHnNTenNEBGgviHhIatDdlzZnNCZiVvMBbmurlLetTERBbTtdDURqQyYkKQtnNkJWwXpPFCjJPpcdXxDJjMKknNtJAajfFNXxNnMCcOowMmWaAwWeEohHOIgzCEUKSsvRBsLltTSbxVvXfxXcCFqQjJrwWScCsOIinNhmaBYlLybAzZQgGzZfFbZMmzZAazGOogUKkUDznEnPYyJSYqQxXVzZZzvLlyaZznRrLlNGmMrRWjsSJUOoubBPKBpPABbafFTtkhWMvpFeEVaYyFfbBDdRSgopzZxXPvRrNuWfFwUnVAJjjJeaAECcjxXxrRXNdlLDxXseESHhZJRrvVeEPpZzEeEeqsnYJrRrLNnWSswKkkDCcjLloOlLIiyPKkZzpYvBjJbXxhVvUuyHhiZzwWsSJjmKfQqrdDRtEeTLKwFfWbBYLSslyeFfkEigGcqHKPpkMKkCrRcptTiRLSslrItOoTGaAgTtTeEtFNEenfDLUTtRUukvVahJjehHvcCyQqkKZzfIOLloitATxburRbBtvVToPVvuHBIiIpwufBIibFySsQqYbBdjjWAwWeEantTuJjyzzZZzEeZeZzzRWwhHTyPpEejJaEeAAaEeIivVtRrCcCcUuwNXxuURlLLlrwWZfFYyBbCcfdpfDdFgGyYXxNdDAaeLlYWwyWnxXqQNKNJjnnNPOoNnpTPpKkKUyYuktTjRlLrJlYyTtLoVUAWwMHhFfSyFfbVvBYaPvCWunKkTtVTXxtvNUwcVTNntQpbkkzZckaxsrjJeaAEDdsSkKuUMmDFfdPVvpeEixLVvrkKBbKkdCzZrRcCcHzjYyXEyYMmehHBbqQkoLlpPQqncpPpPIVvEZzjuajJmGgpeExXLlPsSHhcbBCclLlLWKxCczZFfrxXRXqQdDlfFTtMOomKPpkLkUunjrRKkJgGXkeeEqQElLtPpyYTiIZzODAadAqQMNZznyYGgIinyYnNyHhgOhHBbwWodYyjJwWZLlzjJgGLxXDdITtileEfFvVWALloUuVvFWwfYyOxXNjJzTtZnRrSsoNnXxXvVuUxfFiIKkigGgqDkKVvZyYUuzSdnfUZzuDdWwTtFHhHgGWwsqQOOCcopPoJkuJjRrUbCcJoOJjIiXxspPjEHUulLheFfkKECcPperiIJjoVvOPpROpPgGEeoQqJLLXxkKlcRrmGWwFflYyLOoMmKOOooMmksLlHhBTGcCgthusCcCbBSstCcSVrRQqaAjCcKknNFxvfFWwZiInNQnHhbQqEeBBgGdyDLldYxXxXjPmRLlryYMBJYyjfLlOYydDVcdhHcfXxKkVvrNnfiIRCcoVqQiIPpvINnVXxtRrFfyYTGdDgBPLlcCpbYynHhuPpAaQhHqIixlsSLIiAKAaAkgFPUueEphqQHGoORDzUUuGgXIVoqwWQrRRrOVvQqHcIilLCRPHCTtcwrRWCdAagjJGDqkqQtTMmiIilLIuUOoKQnDUuuGgJjsbMxqQXmmMiIDdraOoWwAowzZPpTIafFjMmqQZNYNnynQqNPuUfFPIAHhIiBTfFtbaEeFFuUfQwWWwHhqADdYymVvMGgfFlwTEetapbkKjYyPrRvVpYyDdJWSswSsYZzxNnpPCvVcOYyBmMtEeDxXdosOoXQUJjuRlooOOJjcKkChquHhLlbgsaASAkKNFOgGmMCKkcgbBSvzZVaAOAaqQoGgsTtQGvVqQrmzfFvVZWwRrxxXhHNnXMcCoOOEeofFVvRuRrsLlXxEbBoOXwOoRrYpqExXeDdyYhjbBJHgvqSsOeEqQxIGgJeEtTNnQqEeEejEeirRIBrRipPCmJjfFUYySsFyYfIiFfhHkiICcKumMMqHhMmrKkqMmCcQNEevVGgnloOzZnaANaAWpdDllLrtTTtMmyYzZJgGfhHFEeYKqTtHhuTtCcaMoOmjjJTeEwQUuPptTfFjbBoxXhMmjJjJYeEykKxXHLlOPpTYaKPIoOEeOoTtxRuUyJlLjcLpPoOrRyYlIiZzfMicnNBKHPphkVvbGTSscTeEtCfQMmJJjTtQvWkKwMmhHyYqQGgMmFfDduEoOMmVveUBbRHhbpPNdDnTtDdXsJHhbBVvjcoVHhvyYfZbkvAaZOowvhdDrSkEeCQZzqYycwTtaAWhbBcCgGAaGgliIaHhALKwWkHYgGcTHhiIAatxXAjJpPLczpHhUuAavdDEegGTmqqQQOovVYypqQicCIiIPHhFJNnSEesSshHoODdmMlMmeELHLlZzEIRrifFeLCYwWGEegACcWwxXenNQLlLUuhNnsAXxorlMtTBbNnmVvIfFidDlLWNnwLkEeAaKhHGZzfFHxXAahdDAZzuUPpoarkKCcRkKiIAyYHhaDgqSZqNnQzsQQqRrDdlXxQqGaApPgKkVvLYyTmMtgGjQVvVvzlLsSEIieJjVTtcNmMYVvyCcSsaAuUXxnyDdYLGcCVLPpcClKkOofbBuUokKOcaAzYyZHhwWCgBenNEpPFfboOKkhhHHHsSQaAqmMLIikYyYEeStTsyuUBQqOoFfNFBcCbzZnNzkKjJzZBSsSgGAasbgpPRiXxIXiICNPpncCNngGtTIFfYylzKkKHPQqeUudoODDdHhEZSwWYyVvrRYyvfFnOxmMXoLlOYyZTYyFYXxyZAazftNHhFfkKgGQqfFxXUkDwWdCcBOoDdmMbDdsSBPAavVTtiISmMpPdJjOoiIsSqkKQDLlBbxXsxXSkBbCcrmWwTtMAafFLtTcRVvrCoOWbYyDdJiNnIGgicCcCfFTVOsIiLlSgPpGLWUDduwifLlfuUuQiIqJDRJjcCHhyYjEiaAIyYWwkumMsuUjgGcCMmeuUEJAoOWZzBbwgGljJlLlLEvVeHJjPrRFfVOovwhyYQIJjJvViNnKGwWhSsHGQQqqdDlLFFUuEefRrUupPswWJqQKkqEeOobBzZZVvwWaARNbBVNnvpPnNaiYyyhHYvVRhBbqQHXxraAikiJjzZItLlFQeyXxJHhCBbcYybBviIVFWwcCfAajWwYrRpnNUSsuRwWyYrhHpoPpEeORrEerpFfuUPzPpaTYPQqpEeyKTtkpdDzZPNrFoOBYkHhKotlFfAaLXxTOQqyJhHmMjPlLpunjLXgjJifNntTnDdfFNFrReGgCcduxmOoMvVBbXWiIxJZvHeEtxXEeToOhoqQKkZlLIiNnzmMZzfNdxXRrDYyveENnYpPyVedDUudULlbBuXxPzBFEeOofNnrzZRsMmhHfBbLlbcCPJjoOoOdDpNnioOqbmMdDsLnNlSBMmXEWwuwWUNnexQpPeQqEdDAabmClLcwZSszWMiIoOqEeQBbqYyQiIRNnuRrUAYyClBblIiUuZzjyYJjJNndcCDIAaieSbuUBspPafkvlRrrRkKQqjJXMmYyxxXmfFAaIiMdDhOQMPOoEeOocBbRiIrOoCGgxXpSsuxkKXUsnNSmAZSsKjJkuUYUufFwlLWaAkKXhdDHCcxEDdRremMLlwcCaAVTGgtvCOocJjCcPqQphqQCciIiIQgGWwqNndDJOiIbBSsbBaAowWbBMmGWwKkgXoIiOVfFvPMmprRZzueoOnNflLFrWwlLkhHKxVvKkhmGgZzMdDzZPnNQUkKWwujZzTtTtJyvKkJjVYbBggaAGDpPdGqgGpbBlLpPqQQFxtjJTXfCclLqhauUhLluUuhiIHjbBTtpXeExPGgXxdDkNiICBbcnEevcCqboOBsSsSLlunNYynNuUbKkAbhHBIdinNIDwWZmMzaCAbjrRuDdUJBaFfyYvVGTtgCyxXffFmMFJjYcpPVMOomRrEesQqaASkCcDfFrQqvVEebBEegGIiiIyYRHBbtThiITtSdDNnDdsdKkMmLdVvDFYYyyfPFjJfplBbIiflLRrpPPBbRrekEeKzYYmMAhshHyYUuMmQqrRfluUsSXxvcCVLlNzZZzHhnkKLCcCqQFfcNkNnSsLdDlhHoOHhxXTlLnNkKtlLzUuIiBbyzZTtuRfFEerEWTLlmMKiIvVFfHhBbTtZUuuRzZrpPRrdBbYPpNIinlLtwWfsLllLnNgNXxnSsGQqGgRrStdDvVTgpPAVBzZbvaVRrvGvVKkoGgyGgYYcCMmyYytTOFUuxXnLldDGRadrgRrUuGzZbBHhbBnGgHFfeUUYyHhumMunNmMgGbLlZzOoDYydBMUumwxXWwHwJjWtTRSsQqRrYtMmTWUcCUuufqQxXjRgGiIbBuFfUQpPqusSUUbBubajttTkKTxXaAkxXBlrRGPpEehLlHsSyYKiIkQqXxbBzZwdDWHnNuPpnNJxXGgjUsSuEeyYxsYySsSYyWtTvVvVRrvNqaAQnUupPTtEPpeJVvJoORevVmMeoJZzNCcxdDFfVvNndutTUPpwWDdPzfTtFZIiaQqFPkKlLpmMfCcxNhyYHCccfZzxVwfFhORVvroHWvoORrHhHDdpoWwOvVnmMdGgDCcYyNzZggGGKkbxvVXvVBeEqQjJHhhmDkfFMmwJcIiCjGoOAagiIcCmMusHhSUsSSssSsxXFfMvGgSsVmUePpEuCcePpEIplHgCaAzZQqJjJjlvVLaANpPzKkZoOCciICdDeEMmMZzmMmZzbBCcIiwNnWVvMrLlFfenNiOnUuwWNorYdDFfHhuYyUDdsSyRhvVjJAasDgGdSLlHVQSLlbBAasVvOBRrEkDmMdDdvVQhiIHHDdhgGsSqQFfqyMWEeBbnjJjjdDJJNyrRmwWMrHhQCcAaqHhuAaKjqQtkKTtZzKkmpcCFfPipeEPjJVLlXUZzdDuhHoOnLlNQqGQZzIiqxXgZpPzxnNyYVvVvVvnTPpRrXxndDpPfFBboOSXSsgGxPrRprZzSsRWPMrRDdwwWWmFfHMcRrCmhdauUyJmMOoWwaKDIiFfdvxXsUuSVzNndDiPkiItRrTvVgGFiIfipPIKCcoOvVsQqAlLmMIiEmwZrRmMlhTtzZbrReEBKrRknNHscCaYyeEArvKxXmrwWtTYyRaGgAUfQqkKXxYuUToOtFmMsVKPaHhnrbBRsUuSHYyBbhXxlquyYjJUMBYyxXbpPmLlzZQOomMLNZhIiHeEzzwFmMfWvVpQqPZAcmBbuRrvVuUUfKkFdDmQqextTXjJSsCcdDEZeECrNnOoRcHhtjfFJTtCeEGgFfunNUcHhTzoLlOnNTtmMWWwBfFbwaxIiXKkgGCtTNneEcwWqQkKXdDaiIZzApPQZWwzmMcPpsAaSQDdMmNnUuTtDaAdqntTtTZmMzwWdDdDCFfvRrxXVnNIicCcgXxiFVvcClTttpKkrBbRqsSJjJXxGgSvVsjIiWWHhIilLwZzHhZzfbBtTrRFSuDvVwSsmFfqQXxeEzkmMqQGoaAOZJjzCuUuJjJlLjUwWcUuSNnpJjTgpxXQSsEecCqCcLldeEDUuSOLlghDaAdbBdDbBYyHjJpMrcsSvVlLikKIPpcCKEekYyMmCyYDuUiInWwHhNqWFCcfzZXxwgQfFUuqSwbIiBWspaCcTtlCxXcJjLiIxXADdIkQqzZKUuvVikFfKPpElLwaAuUQqNYyZziJjIlLhpPHXxmQqzZwWUFfqqQQxXxXFtyYyaAGxXtTgtTYLlDZzEEeegGuUddXAagADdMmafFdDiIAamMGxfFuUGtLKqQJjkgGTtiIbBXxRrCcpPhHlTBqQOoGgiCdDcHhbBycCPpYKmMGgEeKbBLlPpCcuUiICczyYgGMmZkFoOowzZzZKkWEeLleMmSSsfbBFsgUVQqRrvuGnzZrxXRCSscuUgGiISsVzEJjeqFfcUuQqVvWeESGgkKsBbVGnNgbBSEdDBbesrcCvVRWhHdzZDwWwuaAURexFfXxXAHAahaMlLqQEemLYykKsSYytBbTzZlHhYraARyVLlvgGiIQpPYYyyjQxXqXkKdDxAEeaLlJVIivrRNKkvhHVMmnlLVQqWwZnNoOzdDeEKbBmMiDdGarRjJAEnNzZeZzPpgAauUoOIPprRrRicCqTtBbQIUunNxkKXNnkvsYoOySSsOoLqQlkCcmMKKhHksSlucCUoOZzxXrRUuBbtTfFbBNnnsSNwWHRrlLhCcCcwxXpzZIiGGmMgCctanNAvtTVfkJjKlLYyBFfyYAaDdboPpVrRtTpPvjJkrRKoOiNnItlLShHsTkKdDxGgScSsCslLMmmQqMNnAmMaMZkKPpzGgTpPtqQUumOoLsSZzPpPpUukKXxlXWSslDdRrLtTbBwfFzKkZWOowBbqQVvhHsSJLlfFjlLgXxZzGPBMmDlfFsSMGgSMWwLFflmsuxwWXUQiIqmrRXxENneQqrRRjRMmrCcJsSIHhBMsSudDrUuRzCcbMmmMjJZOoGgEezBVGguUvwfuUFpgGioOrRzZqiIQImMPFfgGvmMVvvWwVkSsTDlLsSdyFfYnNtdDGgViIDAoOaGgUuBYaAyouUOespPSEtcxzZRrpPrwSsWEeQqqQLqAaaAQgkKpmMPTOotFfGfFkKzFGgDdfwerRrEexXauUAXwpPWxcCZzKkwHwWTthWiTtkkUuKDdKSsSySshHHhmzycrsFfSdDuURCyzmNUunPTiIhmMSsHtpXxxXTtNnvVvVHhUuCUpPCcgGsBbSwlLWpPXxuWszZwzZWSYtTywWLleEyYyYjJwtgGePpUulLrRPqRrxlLwWZVvzntTNeEFfSsvcCpPjuUJxpPfFUmlKkfPNnpcsSPlvgGQqVvnPpNGUWdDkjJKriIMmEeRwcHhCUuEjJgssSiIKufUzZklqQLhBbUuOUuGgovjJDdbHhBlLgiIxHSshRrtTXpPwWBbKkqQzGgkKkDdMmtTtBbTgGYyANYyOYyLlpPoqzZrRQnMmaLltTNxXyYnCcfFPpYFfyRRrnNHhFuUzZRrCcFffOofFbQqpAafFPQqeEAXxaZzmIqIVvoOcCPMmZzWwRrMKkmTtSsbBpaCcAbIMmAainNlLArRVvNnTZztNnRoGgOOOoTtoZTtAazvcCuUSsKAakVkjJvVZhHVvzMmMwRZPHhOkKopVvdDzsSiIEqQYQqyxXhDdRrHCxXwXxWuUcNYyLlnyBSsbtTYXxwvVAaYyXxOKEekrRWEUuepPdDEgGeFfuUwoWMmmMzZmqQLQqsSJvVAAaNnNnAXxazZeEesSEaGLlLOolgsSbrRrRJjWwKgGfhHDpPdZzvVFLRrlXxLlFfiIAaCkKJjhHcrRELSsllLqxXEezZJhHjykKVVvvKqQNmMQRrqWwZkbBKzrtcCTpPaNwWdDnLlESssOoSqbOolLBIiQeUupPHhAfFdDjpPgevVGgNnpfFPEOSPpsoGvveECcVDdvmfOoaApPFtJjBbTzZAwWOobvVBuUnNTiItjLlIipPcCpNnTtoOPNnDdIivvVVvNhjwUufFKkXxuaAUWJHtxXTwpPWhHYyxXVvzAarRZDCcdDmMdEfFelLBbNnnoOjJxEeXGJjaAgQIiENHhnequhyOoYSiIHhsHhHMmFyYKkPkKpfCcvVlqQRrLlHhPpVdiIDkOoKkKoOMmUuUqQoHVvVvhOBbAauAaqjhHOorgGRaAxXUuKkCcHhuUJQxLlaqQcCyYsSAJjzZlLHhXNVutoOTsShHUPpvEenlLiIUubPpvVDdYyCyOovVaFnNfAaNnPpANnMcCbBmzuUAalLZaAvVYnNZFoOqQQqfWwdRrDdZzwWDtTzQtTNnlLuUprRPbMmfZzFiIBbksSCNnczZKXPppuUkKPUcfFCUuuGwWEeBbMrcCaYyATttLlnNXxgGgGsSYyTnRrNdDRxXfFOoSsxXHiIRrhuDKkmpoOPLlYyMUNnudkSjJsIigdDGDTtdvbBfFVBbKgGXeibkKBDdCcAaFfqrRQIExfIEevViFXoyYqQzIFfiRrMmZhRrHOzZMmsSEeNnMgGmiIfxXFaAtTMmKkdZGgVvzGgKIikEeSdkKDzZMmsLlDdDjJxcCdDzZsSwWMmHaZzAhXTtzZjRfFNnpPHfFoOxXlLDdlIiLtTgKkzZGhEqQdBboODsShDdKwWkPpKDirRIgBbGCMmmMlLeEPpcNnfFskKSpPdpPIiVTtaAqQAlLmnNMavMlLEejqQEeJfCzHhYyVvlLggyYqQGCcLlPbBpGgGMmlLwWAtTaeEJjcdlLGgToOtiIuUQxCcXqTtjJxXFxXfDAuUPpHhaqccCqQuXHrRhPpZzaAQYyqeEKkrRTtYRryAGoDdOdDFvVJjfcPoOpCgaVvPQTtqgvVGqQJreQqyYERESyYseyYkKXnNJjWwEeFCcffZzFKkvVNnGUuTtgGlLRrgiIGVuUIZzrRiaAMmiuxnNXSsRrUYygJjGlLtoNZznOZzBblKkgxXGjJRrAaPpGgbBeELwADTtrRMzZmdaRrAQqMXxmMXxmAkjJKTPpBcCuUbtAaaATOoHxXJdDEejFIiDdnNkQqvVKrRfBqQyYtTqQkKbREerhzQZzsSpPqkKuLlJjKeEkzZzZZXxzfFUTtgaAJOoHhHhvBgGbPpbBcCHhqKkQhHVRVNnvlLyYrlLdhfFJRrWwjSslLxXbcCcfFEeCfFaMmAAaBWfFxXHhFfwHcpPCXxbUuBDbBnUYIiTtKkyuddsSjJPpBEDdebqQFfDrRMmDXxJMkKEeJGgIiLljmDdjNyYSsHKkhHhOFffFGgaAocQqYyDsSgRrGvVhbBaAhwWBbVvHkKLxXlOoyYHnNzMGgmkKfFFfZKkYyAabBNsSUuoiIxfFXONbkKLQqlBOonxXfFJjdaALlLlDiIfFyfFgujpPHhbBrRLlkKJUGtTHyYmMJoOjhlLxXMmIiLnNAalqQAaKyDdYnNkDdkKkrRRbfHhMmqQFTAanNtDdpPBBbrTtDlLdKBbrRzGgfFevYiLuUlIHhZzyBfZzMmFbVEuPpicCINxXsSFfyxXXxwWYMmHUunNcChPpWAawtTyYDuUdJqQzkKZjkKneErGgFYjJmMQqyfJZzGzZwWgEPpeyYjRHhplDvvTjJtnNByYqQuUbVVdaAcYyVvCKkKkkvVKrlLYyWwSsKjJFfNTtYyCcniWpPEGgewIcCRkKuUdDrhHeEkJKkjCFfYyzrsLlSRTSsMmlLtZEznNZeoOPphHVrRpPmMvKhHkRrmkKuCcUMNRrnWwkKnNvGgVNwWlLZznnNIFfigEedDGNYynWwKWdDkKtTZzzZwgGUmMpPLluCcgFEefwWGOouUpuIiUPXxpmMrROlTgGtZBbzSwWsVwWSsGgRdDLoOlaVAavAreEfRPEeprFiIbBvLTtGgxXkKuJjUhhUukKJjNnJjZsSzCNnXCcxxXNnnNmMPpjZSszJcoOTOotmHhYygtHwWhTGVmEAaAaAaSsWwxXxseESXoAaOGgeMYyvRpPFUufrCcpPxXHhtTMFCcEncCNBbefotjJTOcCgJVNngGvkKgJjaAGjIirgtTGRbvVoOEmMeBoOGCxXczZdXxDkLWwRyYrHhTtVvmMlNKkDdyYnulLkkKCcFfwWVvrtTRwWuUqQKUMsJdDjLlWwYnsSNzZjJTtiIdWNnFfwwWDmMYAaTugGUzJjZtEeywWCccCjUsSuJyRUurlZzLdJjdDAaDSscDdCOoPyeEYpzZrwWBmMlLpPbRPpWwDyYdNSssWWwwSnLlDdfTtMmFiISlNnCcuULbWwBqQPtTpMAamKLgGlbBCFfYyAKkmCcMDPplLoOIidRBbLLllrLluhHUeErRhHaiIkKycCYxHhXUusrRSbZtTPpzBvpPuUdDvVfjJFSsIuUilLkyYjJzZqQKBbnshHSkKCcLlNBvGgVEebBbBvVrvVbTJvVCcjtqQBRlaALFfigGIxXbDwHhXJjxxXWmMHhmmeEGgMJjMNyVvYnHhGgzZFfAaLLllgYyEeYaAjJyGiIdRrljJLLljvVXxLEelJsSlLOkmHhMKoAaRrAjJTtbUuBapzZPDdyYoSiIRrsOVUuvIjJBbizSsCckKZkKVNnlLpPcmMOjJohHHhZzJjnNk diff --git a/inputs/test_input5_1 b/inputs/test_input5_1 new file mode 100644 index 0000000..410cf15 --- /dev/null +++ b/inputs/test_input5_1 @@ -0,0 +1 @@ +dabAcCaCBAcCcaDA \ No newline at end of file