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