From 0353778bfbc884e89c508ae1eb63a90208b7ad26 Mon Sep 17 00:00:00 2001 From: Jack Bond-Preston Date: Wed, 5 Dec 2018 20:26:42 +0000 Subject: [PATCH] Day 5 --- aoc-5/inputs.txt | 1 + aoc-5/main.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 aoc-5/inputs.txt create mode 100644 aoc-5/main.js diff --git a/aoc-5/inputs.txt b/aoc-5/inputs.txt new file mode 100644 index 0000000..006dd98 --- /dev/null +++ b/aoc-5/inputs.txt @@ -0,0 +1 @@ +CXxRrcWhHoOwWtTwSsRApPWwarlYyFWHhJjJjbBTsSQqtBTtbTtwfoEeivVTtIOLwftTFQqWlaFfAGgoOMmQqyYwWWDdwyYnNBNnGgBbwWbiIZAappFjJfPYypPPzTtWwrYyRBuUbjUuJlLKhbBdDAaHkNnKZzKuUkzOoSXxnNsZtTfFIiUuHhkrRvNbBgGneAaEsCcSYyDOodVAanzOoZNJKkpPoOjXaRrAmMfFDaAdtTOfBbFAaFaobBOIiAFfUulLWwlLoOEBbRfyGgYNnFPOopgGhHLllLfBbjJFBbreifIijJEeXxLlpPUTtuLEeeyYVvEpvVHhPPNOotTnoOLlLIiGtTNnTtgQqlzZpPpzoOlVvLvNnVvHhVjJBbvVZmkDdIpAaPXxixgGXLGgNnUuAWwaldVvDVvIiaAnTtNFyYfKZzrIyYiYyRoOdkKwWfFjJCPpcIiDAaSseeEOHhFfiIoEFvVNnYyFwWfZYysSzSsqEcCeCBbcQXxJjfOJjlLSsofwWyYENnEUueekKiyGgzZYIBbUuEeFoBbOqLrWwRlVWhHwvQfKZzCHhcfFGfFgyYWwkWwbBWOVvAaoQpPqwKkbgPprdDRQqrRUfFuGmvHiIhsSXxBVNnDdvFfQqbLdDloOsSpPPpBbUuwXxvtTXhHxVhHWHeEhdNnJhHjDiIYyOoxJjXjCcLlvRSsCcrVEpPqQeJZzGAagsrRxEerQUuqRPpprRQqPArZzrRRadDBbtzlLkKVvFfdDnNiIZzdDdDdpPeEDdZzhPUuyYpxXHpoOPRrmMUpPOouaKkAhAaYdDySRrJjsHFgGnlGgLaJjAqzZkKJjdDQbalxXLANnBhHbBGgAaiYyIIisSNOomMHhLDdcClIiwWfJjzyYZbuUCcAjJaoOmMLlMmQqmMuwZzvVBbMeEmCcWUpPgiOomMIlMnNmLdDPprRiIGSsPpBvfFRrtTVVvdDEIiTaAtoOKkHMmgGpPhcyYCdDUuOeLlEDhHdoelLOoKkDdwWCkKcDeUxXwWiIWfFwTtNSaOoAsnuEXmMJqQucCUjJTtjxYybBhvVHTZMmztCMmcsSTkMGgmDfFgGdkKWwTtKKpwaAcCdDbBySUusYfJjdDFopPOnNvtTVWPpwWpPVvRrrRViIvaApOsSoyJjmIiMQqYQpPqoOPgGkKmMPUuQqrREerRBxXOokzZVvcNnPpCRrWTtCcpPnNXxdsSzZeEIiDCcJwJjWQxSMmsXqjwSsbZzdPpDEJjeKkmMRrorRXwHhWxLYylOCmMoOcRrhwWzZCjJcLlQqiRrIZzxXHBfBbzyYZFfFilMmlaAPVviIpTtXdDxzZfwWFyQqYsWgGwXAaxyYVvzZkyEeYAaKJjEJZKkztTgjLqQlJfrRCcWwVvvjJufFOoUBpPYyXxbVcCvQqBmMLlPxXeEpzZzZMHhVvNIhHiASsaYyEeZzhHkKsUPpuYUuQTtqQqmMmMySmSszZPpoOLrvVxXRlIipSsbMmqfFQBPCqQWZziIwBbLlqQZUbBuKkzgJjgGGUucESsFfPpgGTzZZzVJvVjvvVfFtJjdDYHhyhHyrRkKSKwWuUkskkKRrTtGgpPaZzpPkKUuMmyYlLAbyYRrHhBKSWwsjJktTWwgghHGyYLlRGgrMmbBQSVvsqGRrUucCxklLKXTDdmMtJUujsVBbUuzZoGgOZzpPNKklLnjWwMmcZzmMCJWyYweEXuqQUUuxgGioOOoIxYyXxzZXvUuVkIiiIrzZRFfGHhgQqUuKvjzNRrnSQqseEoLluUdsSDEesvkKVSOZIoORrxXlzZpPaRrdDAIiAaYyCNFfCcnIipPVvmMzvVZAaKkozZpPnNcwGgWCiINnOkRrKQqUuqAaCcQyYtuULKvVKkcCklXxhHbBToOcLuUVAWwazuUmMAgGaZuiIUGRrgeBbEnxXLlcCSsNAakeElLKfFcCvzzNnZZnNrRCyDdhHYrREbBNZznNneESsgGVjJrSHVgGvhKkFfsRWwDdvgGtTeRgGriIyYnjpOoPCMZzmcJCYfMkKmFyDdJjMkKIixkKBbXUuwWtTeEMmdDwWtTrRXGgAanNGgxGqQgDaAdjWjJwJmBbmMcCNUuuTVvtULCcCcLiVsSvTtIxXuCcUlmMJjlUuYspPWwkKUupEePQqzvVZSIqQiIiiPiIpoOevVEIFfOxGZzgmPpMbWLlAaQqDdZDdoOFezZEjXxGgJLgGloOSaAYyWnNJoGgOuUwWjNnwMgGCcCcKkpPGnNgroiqQIORLlqQqQAaKklLfFWqQVLNpPjFfJqQUDyYdunKRrWTtEepruUaCcARPwwWkPoONnpSdhlLHDQqsLliQqPpUbBuwNAaoOnZZzcCXHhvVxbBrRziCRrcjJxIiQdDVvKkqTeEMmELlYsSyUuwWesSXxnNHhlPOoQqpQyYsSyYEQMWmMwmZyYgoOGwWugCcTtxXGfFNJjvVnUfFeEBbcGnNyYgCVvnNAuUahHpPMmWhTtHNvJjVDdndgGjJkaWwALlKiITtDRrbKkRIidDHhLlQqoOHiIKkeEhKDdrRkiIrRMmrCcwaAWDmGgMYyCoOcIpwWPiWwQiIqwWdtGgJjTAaQqlTmMtWwLxXAaixXZzIBbbBBzOsxXSLloBbzRrZnNyZBbzXxYAawBhJjHbjJWwDdWaAjJZuUPPtxXTppJjqNnQXxcDdCNSsnZCczFfwzdDrEeBLlbyCcYyabBAYleCclLuaAfFDYNnPpqgGTtQNnyLcdDCkKoOzAaZmpPSsIiMDdcjJCdDKeEkZzWwjvkKdCccCDuUKksrRGgzLlEerRiILlWwZSFfMmBfIiDdvCcWwhHVFJoOjdDJksSKjzZIilLmEFfezZMNbBVvVBbhRrHgGPpKkvmMkccCCGgDQqGKkoHhOiqQvVIgCqiIWwKkZbbBVvBzlLoOQqwDRrGgdmnNZroOoOiIQqBbqtThoKkQnWwfFfPplLVvIiPpDdLuUGglxXmaAMrRjxXJNnrEedDRFvoITtiOYyWZzuUETtRrAiIaAaoNwcCAQHheEEdjJDtlLTvYQqGgyVIlLAHhbBaiWWZzRrzZiIwfDiGgIdFEecCOofFTtIiXxfdDFRoOrxXUnbBmMJfEepfMmBbFKkacCaaAAZzAhHiIztTHhYyfJjuUYimhHYyMJjIfYjJylLPcCpQqYNnyxXFeEQqacCAVKkWWwhHLyYCcZzXxlCcyhHYVvJGgkDdxXtTKpPrRIiLlUuLGZvVwAaWzgkJjKSlLseElbBrRZZkKzEebBzsSqjPpJLaAlrFfrtTRmcCSsSLltoeEbBOYypPMmTFfkgORroSsGaHhASGOouUgxTtRXxrBbVOohHvQqXoOsZzuUIWwIZziXxsSQqwWirRKjJhsSHZznNYuUMYymaAJjnqRrhHwLEelbBkKWhnNJjFfmMwWtqQTTkaVvAyCJjcYKtbPpBGgCcwWOoNQqqEeQKkeECtTOvVoRrcCcNSsnxuRrRryYUjJuRrQqvVUXyAaDdQqhHWBEebYHeEfFhybYypPBwQHhqWxPpIOoYjgGzZPpiTFHhMwWmfGgWwJjzZgJjGbBjlugqQGULtTJJjtMxXjvrRrRVdkKSHBbhVvarXxRAsFfEeIiZBblLjrRJrReEzQJEFfePhYyHpVvsVSsjJLbBKWwkTtEXCcukgwWUuGRrKTtFphHPQTtXxlLqxiIHhFfXoOxdDyhwWhHPWLVmGgwWMUucCvVaAzZPsSNnnNpvbiIBOofFMmQAaAPzEeZmcCMIFfpPJjGgoOwtTWiOoqQodDZznrRgZzhzZHSsEeydnNxCcOopPjJdLlNdFfDwWMmgGnqQDrIiIZziRxPYyFfplLGgzRliIaQccCufFUCqANnSmMstTLvVsCcmMSZUuzkKrTtAeERMZzPpmzZxXVvDdCcqQkbxXRrFkiEoOQoOnNSlLvVshnNKmhDdHeEmSsMGgraAeLBbqQEelMmERtTGmMNngqQxcCXGdDjJgMTtmGtTPKkpYOonhHNhHHRrCczZfFVRrRrvjXxTtJcChTtaAqQVvnNnhwNXsScytTYwWjJMmCsSBbgGcCiIuUVjZzJOGgolVvJjylLYLCrRjLlLlJqQScCsEmCcMUuQnNqIbBJjigGAcChHdDZzHhYgBbjJFfyYZZGgyYzzfFusSUhcFfCMpPVvmMHhmweEseEScCoOTaABbCfFIYvVyrRkKRXZzxdDMmInqQHZzfQqRrFhDdAaaAyYFfLlKfMmFuGgUkmMNkKiYWiIwMsSqQjJmyHqjJQhdcCQziILTZztlWyYwZKrRgGZlLzfFkayPpShHcCsrRAuUbBNnPppPoOorIiROaAVoUNnbcCBIicCQqDdeEEkrtTRxTtXKeXxEEeeKrRfFYylJjXpPkekKEKxLeCaGgAwWDlLdeEfFFfcxXCKOFfWwlLoThHtnKmMkNydQqByYfYyFbnJLDdljcnNpNnpwWPAaFNnfPPpaNUSFRrRrfrJjNnRsTCcZzWrYIiyRwuhHQCfFWwceEyYxXLrRCcQMmzZHhCczeyYeEfeExhHXFmAHhaMHhEXxRrpPdKkwWjNndDnPpNqwWTtxdHhDXUqQVHhvurRUujJgRrxyPxXpYXZawfFIGeEMbBcCmcCgcCRrMmODzZzhsKYlLyrRDCWwcaRroOASIiQfFqoOBeEkKbKQqkcxXnZkHhUAPpqQgGGRZfFzraAWwKXNnxyYjNNrRbBnZJjzZZzzUsSuYyJjJYyJjjIGgiwcKkPsShHNsXxIiSnAasSvVBbhPwWpplIiTtLRfPpFwtTJGzZmMXEhHexgwaADdWJxXjjJjrRrsBbSOgGoOouUvVRYptTPAJjGgapPHNnhUuILMSsKkYyxGgdDriIRXjOCcoJjqQQMmKpPaAKnNyYptTPPDsSsSJkKDdUuSnyYhHJjNWwBGgsOoSzFfFrRfZbZzdDfLiIakBboOXxonNxXOnNYybBYKkdDtTyNnkJjVpPgGhfbBFOLlZzzZoExXeOnXgGxAODdonNpeEPadDNiKvwtTWocCjiIcCJmMTQcCqhMmKksSHtKvVBbMmkfFxXKGgzXxYyCYknldDOoLwYQqDdwCcQqWyWNrRoOzcCJjmMcCMmOoZKmMfoOLlsSNiyYqnhHNnjIiJoLxXYqSsbBQxXkKLlcBbqdeWwfFEwKkvVEBbeWwtTxXGgWDeEpgrRGyYPlqQshHnsVvwWUuSNAyYaAuUqQWwfFyYJjCclQqtThHLIiyYyoOYasvVlgGvVpPLSntKkTJqQsSqQreERXnNxlLlYyOoLuNcCivVInIivVTTLlttUfFrLlajJpPhHAwWQqRjhHCcOxCcFfLlXoRBbBblLVxXQqOovjJrzCcmMdLrYzZkKJuUCclLsSmMbPpmMhubBnNGgUFfHYyknNKQqDRrdQSsDMWHhwmwWMEKketTDcCSsoOdqQABiJiXxTCHRrhHTtnNYyAaPpBAMmBxXXxiIfFYybyYYLjqQjJbnNkKaABTtLluULIimCcEegDvVoihHrRPpvnNVNncLqSNnCcSsatcCTtyYpPlWwLtDdRJjrjJwWTuUHSsNrWwNnTtfmMFRRHhjJqQEeUqQutjJTveceEBbhAaWwljJWwjJAaUyYufFdDJjNntTLhcCwuUWJRsSXBbtgGTiIxnOoeEuUfFNnNxtTnaAaMmITUutMmaAaWwAWrRHdXxDhwULxXeOoUuEdhHmMlLlLmXIimMxLldDneENVrUuRVouUJSsXxjbBlLYybgYyqQsSsvVBnNIjJibxgcCdahHhHADSsYQqyrDdMCmQqMsfFStTxXpPOGgozcCaKnNkAYtqYFfyGkKsSXxZzSPpYVvoOKoFfvEwWeCcJVtiSsITROorWwkKOmAaFHmgGvmMpPVQHhqxhHXbJjBFfpnNVshAaAhzZLlyYjJeSsEETBbtllLIPpBbiLsSPXqQOobbCoOcBnNBKEpPeyiuUrOidDYySsKkBbwWNDdnpPTBbtbQqaQqAqXxyNnzZJjMXgGfFxUuVvyYorRbBOEeuOUuoqDdQRrjkKJJUuFfPpCREOTnNEepcXxCzTtjJxXcKkCdDxXkSsIirRKfFkKZgQqIiIiqQKkRrWwgGukSFfiIcCsZzKNfFLxOoUutTwWMGpPBbtTeEKuUkSsSgMlLkKmwlLWGAuzZRrcCUukKkKYyHEeyYNnRrFUuWiBbyJsSyFfBbOrYKTtkSsyJjNVvnLYQAdDpPaDZqQLlKkuUPpiwWIvVIVCfFcvRriwWYypPXSsJjxJheExXyHhHhWJjwMpPRrLVviIlRrOoAaqQNHhGgGLlgPpjgGJORDdwWrLqQHhliaZpPhqQYXZzxyjkKcCJHjSsTtJzAKkZGgzgGOoWQSsvrRVSnNnNsIiuUqAawXxNnsIQqswWSiyrRYYGwWhHNLlrJtTjPiqqQQZDdaASsaAHhYyeEzIVzYgDwWdmMGAKpPkxXammuPpJjpPPpWXxwQdDAprUuRCcoOFwWfPwmCSsbsSKnNkBRuXxUvjLlKkcCPpNnJVLZzkKljJPeIiEHjJsSgQqgGGhXJjXZEezxQqtnNTXzZYyVvxkucCUpzYsgGSDzZdWwgGRFfFfvVnNOvxXVQrXNnaAqQZnTaCcAtbBJlLTtjpPUuNGgCczkrRRAKDdmXMgPoOFyknrRNowfFWwYyaTZztaAAlQiIqTbBbBYyQqmYyMmMPptDdnDdAaOhBsSyYbBbZAFXxRgoZzcgrRGSsCBgGCHhcZvCcBbnNIZzMmLliUjJuzZVvsSVmMsSnNzZbBCcVvZzzwmSqQFfXxsSjJBbFfFfdYrRyBbDlLdPQqpIiLlNUzLQqlLlZMKkmlLuJAalLZzeEjiICcDdnPpOKkosSdzZDQqxjJYyZzVvgrPgGsSpghHOFfkKFfPpobzZBGvWwvvUPpurRkFZhHpQqSnNrRUfFLqAuUNnVeEvxXmMqjtZzTbBJKOlLYacCAMmuaAKkeEnvhBbHVvzsSZMjJmIieEXxVkjJKEGgpPIEeHSIFfiHhdDIsSrRUlLdzyYZDYyuiaAijAGHhgPpfDEesSBLlbpsSPdEyYrRBTtRrvOXxEewWnMmNYyocClyFfYHtThLCcDmxXMdDdlLYyDwWuIgGidbBDLlULgeGgEYylchHfFyZzlLlHhIqdDuUOoQiqQHhhHhHgGniIsfFSONnnNofFkKNbBnmMrRNsRgGDuNnNnUOohWcYpmMoRrOPIRfmMFxIizZbBwWXPpeiIUQiInNqtBbCvVVvzZctYyejJECayYyYAsiEestTJjCcAaAvkOoKkKESsiGgIgEtmMfXsaAyYSxFcjvWwHPpMmBbiIKKnNBqwQqWQVvuUfFfQqFbwWkKkAcCaWQqJXxjoOwiIkaYyAQqbsoOSrcCRBlLEfFbeExvVXEfFIiDSsVniINnlGgLQqyYHYyFfhPpNaAnNzhHuUnOVYyvVvoeHhERIijiIJrZXmOoWwPEepmoEeTtgGfFcNnrRCUuOMCbKGzZgkujgGEeJBbVvRSsBNFjeujJVvBJLljaKkAZKkzbiwCIicWIAaKDdkwWkKxXQqpYyPTtbBgZmPpRzXxRLhHelLEwWlAMmaBuUsSMmXRrSsJjTtbBIisVryYNnLlXIrMmQqHnNxkKYyyYjJELFGgnRrNsAaRrghCcHWMmQqMGgmhHPpvKmMuUcCcCczZNtDYqQydpLWRrCbBuPpfcCWtTwWbxXBwcCaAWwIigQMlLacPpXQqxyHnNEeaAkKYybBFfrRUYjJhJjHVfBbFOovBfiIFtMaTtAAjVvPpJatTmxXKWwCfFeDdULEpuUPXxvVcrRzzLkYyKlXlyYLOlLoiFYQqyZLBrRbTdLlDTtJjtSsFyYNnuUfhsSXfeEdDFYeEKkhdDHyxCIiLoaOoAWwBbYuLlWrRYYmMKkSswsSWALlDhHLlYydaoOctkKWwvBAabSsVRiIQqrvVgbsSdEPpVZmMzTtwWLllFfvVLveDHQqlLXxhvVgtTNbPprLqNGgFcCGgXQUuqJNnwHhWaAzLHhifFaHhBbhkKHfFOHIrRgGRCcvVrReHhgzZGmSOIiobNnMmWwYyaAuBbUlnqDdbBWwlMtDdPBbpTnNyAatTAamAKkByYyYGgEUemMHhbZzBEwWJjxIUuiOLLlloDeEmqQFsSJTkRrrRKbBtILlRfFrpPhHZVvzqQmCcTVHhgxXROoKHheEkmlAaqtTpPAfpPWwFadDQKkeERtiIKkkNnEiIeKcCCcaHhRKRrkEBzcZDhegGMlLJXxHalLmGBbsSShjjrRJJdIiDiIAaYyHYySsOaAvgqQpcCnOoYyHhcsSClvVLNuUnYyzZVgGvNGJjYhHKkSTZzjJpfcCenNenSsmwLlrRWMfhSghHKMmJjTtUuWwkGpPsouUOBbnWfFwqQNiIPpJaEetTDdAGgLLWSicRrsSuGduBTtPPpiIpGCueEyYbBnNwWbBWwrVvRxuzZnLljJgGDvFPsScZZzeQqEpaAPRUuDdLOOonNoIRQqrHyYaAYyDdGgxSspXCcxywIWwivVcCKpAauWvWrnzZnNqQNNDMmRrDdwWdaAnVxXvRELlEWcCiIQqXMmFfxwSYysFfFjOoFfELluUPpemMJSsfHXYyqQGMWwmgGgGgaBAaJjMmbwkdDcCvVeDdAarRVXxvEKWYygGsSoqQOLxXxXeELlCcnCTtJjrRvkKpUfFBiyYPpbBIrmoOopPfFOtmMXcHrRaAhCihBbmuXQHhqmMeEGgfFFQPpJjaAQbBqUtTZSfFJbBjJjswkKWFqQCcLlfBQqfFAaTDdypPrRYjDlLdJtlqQLdDulLUVvrRkAaRrwRxPdDsPbBdSsCVZzFjJFfxmVvMyYAqYyYRIoWEYAayYlwWLDdyewPpJjsSQqCctTPmUuYynNGjAlLaOHwTZzFfDdtSskaAgTtGRrDDFfcCduUSsgPmMPpVvpPtQqTQqIisOJjrROXfkaAjxXUJjumPJjptlLTnAaUuNMJkKlSsLcfcCjJyYgGPpRGgrUMmDdndkKuVFIifPrYyMmRGzZdDGggXZzxtTXxKjJkkFDJWpPwjdDdGgYyWNcUhdDDdxbJjLmMpPnNiIOeElLLlrRIEedvnCSsoOAGZEezKqORZzfFQvVqUzdZRzZrAaXxApgEeXxVpPafFpPKmMEbBcirRNnIFfmUuazSZelLlLnNkgGKEovVSpGDdgmUuMJjdRrbBJjDPmMmMvQqVfEvVeaAyYXxsSFMmYylFfgSdDbBstiITeMwWWyElLeOowWkKiIvvgMoQYyqOEgkzZVvWGgFfCcDNIincCZMQiHhIqSsCbdYyDwYyrRyYWUuBPpFVcCvfIipPCceBbxXzGgBboRfFKkrLheJjjcLUVvumMjJEtTeBIiWvVVjHhNnCDLldsJEArRaejVvxKNnknPcTtCpmMkgHSshGfFojuUJRrONnLSslFfeEFcjJCPQqSspdxXDvVRfFlLmKkMAVvuxSALlTtYyLlLFflIQqiaSsRLlrdDtrRGgGBbgYJjyxTtXHZzPphjJBbYyIipRGgQjJcLlpPhIiVvXxFCcfpqSQzNnfoOWwFTtZUugTtyAaxMuDdqzAHybBpguUsSeoONJjiInIAyomMxcqXxXYMmJhHCcXxXxcCESseHviIpLlvLZzlZzVsSbsSxXHhZVzZzZJRRTSCdANTtfFiJBXadDsSuJsZzSiIjlsOocCvVZzOWQqwoEeLlLlJXxfGlLhHgBbFbwWSZOGBbgozsJjaAkNjaLlXxFfAmhHiyYqsSsSQvjFfuUgGUSmMMhTruUlLgGBnUusTtVaKGiUDdbjJBuVqrRtYyNnTYtAAatTyumMUkWwGKkgIMmgGKCckbBjXxGCsbBHgGhfKTKktDTtJGgjWwDdWoZGgzXMmxOnNwwWqRrjzmJnNGgjqCccXxRPpAaaAyllLYYyyLYnZzlLsSNAaSVWwCcNKSjJWwjJBPpbPNntoYyOYyWZzNnAaqcxLlpNHhPiLEFfLcClQqHqQTNgKkGriItTwWYyuUleELAjJGgUuXAaudRUhHurJCcSseEjxXVNiGZzOoWPiIpBbiBbUuIDLZzCcxMmQHhdDbSqzZUulLuUTtiIIiPMBVvbHuFoONnyHhYDdUuOMmaAZvVjJVvCxXxXPpgNnGwhHWisSdDOtTIidDmIiWwejTtJESsMyYzmZsSppBbSsPPlLAaAaDTIKksntTNHhcCyYTjYtTvhHcCFfMmePpEFoOfrRvXTKktvRaxuUXqbBQoWeEwpRrQqPXHBjJtTGXzXxvVvVcCZBbpPdDSsRrGJjIYlLyOoEjJeaTtlLWwAbWBMpKzIiZZFTtUfoOFLuoODvEBbraARebpdDAyYaVJAVvSsTeCcEFftHhFpPZTtzUrRcAgGnBNhEeDdcCmMLzHWwsSUuhSsWwRrZjfFtFobzHMmAkGaYyPpbBIiogCMmcGyYJQbBqMmJjBCcbjjvVKkSwWYupbBVLlpnyVwgGfogGOZzSqSsxtMXxAaiItTtTgGACcaBYypPbZrSsPMmkrDdQqRKsSxhHVvUuXfFUuUucyYmXxrxXKlOcBOLamMOEetTJpPjBbcwWEeYyiIGgCksSrRKmHcChMVwWvcQqmKkMjJCWEOomMLlvVTMmtPpAoOwIiWyhHKASdDkKsmMaFfgHhjJHhBGgOolVfnNSsckKCvVFBKkbacCAvaAcjJfJjFwIxXCAalLcimKkrdDKkrHhRkKTtSjJscqWwQoRAwWmWnNUPpTtRJjrJSYFVvfyGgbwbBvxnNSsaAkKgGVAavVzpPkIIiXxiTtKqjXxwWafxXaAFljAafFHGaxZzXJjGhrRuUqlHuUhQCwtVvfFJJlnNIiLeEIijZhTyYydDYTtRkKJjrjMwWWNkXOuYyRrUdJjDeTttDdgGNTthEtBwoONiHgGeaNnOPpuxrCQcZJoJjOoOjajJuUbZaAzUjMXfQSbKcyYDdcCdykKvVCuWBBPpsPpVunQGgqRdDjEYyFFfhQciISsCqHlLsSvVTtvVwWfHjsSSsLlJTtAGiIgfIKkkKxTtQDdqWkDDwbByixidCQqiJHhlzZUpOSsoPCcwWAmMmAayQqYGgsKVghlLslUPpuEeCcdSrRsGgIiHxXhDLcnPVvQuUuIiUCwWCKkfFccEepPeExXvUuKrSwWsRkMMdDbNnvBborBbkKOjJoNjJgzouDqQTthHCcduUUwWzZBeEbpiqQIPwHhWhwvtLlLlOqQyEOTtoetTOeGgQqETtiIoRrrRBTtCRnNnNrBOWpxXPmESEeVuMtQXZzqQRrQqHhxyYqTyYRrAmNnAjJwWXxPZtTsSiEeSlLbBFfgGoaAOsqTttqQVlLvkKmUuisSDJUujLldXFfxqbzZlpPLBAaBbrFRyYreklLKmMKagGAMmrRfrytnbzZBLoOlBKkpgsWwpPviAalLIVSsDtNyYnYeECcMmtTiIllyYwWEeLwuVvRiIrPpUPzuuUuUmJjJvVhUuysmJXxXxHUuhsSGEehuUTEeEeASsYyaeEGYaGBMmbFfgAIitTVUukKjJvEPpLlioOFfDdLsXYybBMeDURzZzKCckLmDdcCcCmMDdOWwzZoSlLoOBuUjJRrOoZcCztTEIieBLOkxDBgGwWRhDdHrHrRSgTtGEosSOeRrcWwCpPamMkqQqPpQaApvVNKdysnNvEWwkAaKekqYnNygGjvanNAVJANrRzZnhXfVRrOTkbBgnNGGnNwqeEQeEfcCNuOwWVVvvaOBKWwUukuUWYyRrZzwxXbuXVvxoOmMLlUBbfOoFolzZhHEAPQqtzwqxbBUmUwWuaEaNGuUNnBbbBgWwnAdisSIDuRZOomFfpwAaWeqSswWBgGyLxXcDdClMmoIiOXDfDdlBbvmjJMmMVXwWbiYYOLloOqOsSoiIKkDdQLrRIiKDAqQkKSaABbBoOPpHhpPlLbMhHmTQSsqZdjJDELeElispLlsSOZzopPBpHrNbHhBOoYEepALzZlENrRpeZzEoSsHcoIiMmYufNEedgJEXxeBKkEnNfFRrgGUuoOeHlpPdDLGAagkaAKsNpPnYyyMvToVvOFfQqGgDdcCMjJVXQqxTtNOcuUMpmMyQvVFfqdDYvVNnPsSJjaFfmMyjwWnqSVcBbHZCczsemMEtTpPuDdkDXxFPpLedPpgZzvJjAasSwVMrmMwTWwQHnNhQqTtqtRQqrJdbyYfNXxnPOLgOsUuIirsVvEeqbBIiVchrRvVkxXeQqKhDdHfFyTuKkgyYYKkXfRKkkbfFBXxXxySkKWwGklhYypPBbZWwhMmFfHPaFMYyVdDvXxpiEeIPKUuEenUuQzDFfZWkKOyYzZooiIQFwWfEexXDdntEeTNxCcAaAhHadDwWUuSszZwWhWwWGgGgUgVvylKjJafqOiIaAcSPpsuDhVKvVGdTaGgPpAtxBbXAacCPpuToOtAaORoKoCkvIiVKhFfpZQqzYOTBbtoOyYSLlsGDdgJjoxWwwRrWMyYPYYytdIiaVvszZKkmWwYygGMXjceEwdDWeEEesSvVCJHYDKkSNnuBIibpCcAlLasSAloOBJIidDlLqQlLFMXxmMYyfcIlyYxXYSlLskLjJKkhaNjJSYnNnuUNgYyGeEJjfaAUuhwkQhtKfuUlLSsWjYoOyJTQBbjJMcCFfJVYNRrnyAbFDdfwmMlrfZzFIQqqBGKkaAUuZLlznNEecCkJTtGgjJyPDAadqPpkKQATpYoOkKYtmMWwzZDmYIkKDAMwRftThHFhHrWmgQTcCKFfpPkYAayIiYwWmBHOdDsSbBUutJjbTfacUuCArRDCIiPSspcNngSXsZzSVBjGMmZPpaNVvGvgiIxXvGzqHmTtqQPGgFfdxKyAAaaYDibBzIMWwmWYywGgdDaiYyLlCkRdMmdDDtSsBGgkvVKauUSTrRrRwXwwNnWnNXxYRrGwYTBbBmMPZcCzogGjoOPFhcCuiIOviYyIvVcCRcJkKCcElUuMmZkKzZwpbBcYLlNtMwLtTlybBsNneBouUMmQiIZDdSsZzZflDVvdwWvugaAGpSVbBvSQMmqcydDYJuWZzDtAahHSsrrPpRwJjTtLlmoOEBbZzeAaMmFfqJjoEtUuGFfgTQBbojJOTtwqQeEYyDdjJFfMmEvwzhOoHOocqtpnNqQWwLoYwWghHGCcnOeEobBNyaQqpdDgoOGvtTVPpyBbNDdvVTtdzdDWwvVSenwsSoNnqQhHUsSuKkWOovVwOXUFdDOJVvIijFfMQxmMXzZvVqbSIfDdFiKkdSsDdJvVjeEDeLlJjExzZXfbjJvensWwSVKFsSiIfAaREQHhhBbIiHIJREaAGMTCctZxXzmQqvaaNYtniINTmYUhHOzNxXxXEFvCyYkaAKcVvNeEYLmRiIruRcXxCAdDTEXNPAWwGFfGZzgwfnaYmhYqRAzZsgrBbUXqxXbBgGLfGypPtTSqpPXxNnbSEezBShHbmwWKxqrxXxXqsHhShppqVvlLALlaQsSNniaAIyElLeejxQuCJaAjrRIiAbDdRxbPpBXJnNjIiEbNxOoXZznBhEejJbBHhfoHEXpnFRrlXMxrmEUXxIiFiIYybBbJjOxXbBolLJjJbBjoMXxWuUwmAaXxcCVvKIgrMoOFfemMWXgsbBVGVpzMIQwWRCcyYftptDNDwOzZQdhHifFyYiiIjJzBDavVAHAaUbBqrRtVnNvTQznOoNWUuwZqdDlfFLVhEmUWvVLgvMmfFyAMdGbsEVvqMiZzIdDSbBUJjueYyEjlLFasyYnNgGwWVvqQaASAEzQPpFfkLbmMBleEKglIqGguDiIdQqFfrxgxXVPpHltSsysSYXsMmUuubZzKfiIgGzZWrRAJpPKkAZzmnNwsSBuMKkahrRSLlEesrulLxXZzjorhHoOREtTiIQyaDRrRrlLdKeEzAxMHhTfFWLlcmrRDdKqOoaAQEekMAerRoJjZFfWwzXSsGgxrRozZGgspZiIzZWrmUBbuMRrkYyKTaASsrpPIidVGJbuUoOBhVJXoAaeEkKOiIkNGgtMmNbBnQKkKkoOrNnRqKSYPpdiLllvVLIqURrelqtJjwvvFfhHkaAxsmMDdOxtTXrRoSafFTcyYCSsJPLNnrayYqFzmATGgPMmpCcEcbuEhkKHepPvVFyyYYvHZzCJjWFBVrqQUHgGiIexBIibXfFBeEabaalyqsSEevVSsJjToAaOtudLJRQfkcdDFnNCpSkKsPZzcKvVpQqdSsDKkKklLKkBbXbBwWQxRKSskrTtmMSsmMHaAuTtUYylOjJKuUkolLRYIiyPpWtTyDOeoqZQUuWzZaUWxrEdwBLlbxCXnvegRSsrDMYyWwPfFkPiIpKGRQqrhOoHgSHhzrIiRRrMmIaLtTbmrxXZbLsPuUfUHlOYyfrkKhVSRmrrRTtRpPMoOOoruyuhYqQykjJqQQqoOKHriEDduDdSsEuAaSsOGgYqDHTtoEndWwDNtKkPpTeXqzZQoOoOqnZqQeEzlZzKkqfnVHPphAaEeDpPIvJrwvYyJjaSVumBbMdDIsTtCcfUuVvZzfFxXpPMmFPpzZMNnmSiYyxfjJaDdUueSsuUMlCcoCeiYyIEjJcdzZTHhtLmIiuXipPIuTtUIifLqJjzZkCKkckJjKNgGYyVvsSpPnhFttTrPlLJniFZzyzZespnAxvVGxqnrRNjJLRxqVveEEeTtxHhXzZvVEnuUNbGNnzYyhgcCGSpQhHRQZTtEUusqXxPpQaEyeEYeArRSwpEePWeJcCjynOoQLwqQWlqlLNEmbQtZzTIiIqtTgGKkqQqcCVvQNyYtThHnLiIWVvdDoMmTtOPHxXEYNrRnbPMmpNngRrGTtBstTngnbIUuAaDfFLAALlAaPxzarsCcSJfdxXWwCctDhZTtEezhOoLUJjtvfFktgsmMSEEVvqQeTVVTLlkKttRkKmzZBLliDpYyuUBbNbBPlBhHSSsapPbBAGgyeSdDYtTyDdgsBbbBYMNnmoOzZyTMmttKkjzwWZDXxLdxrRWcaAUuCSsHYyhVIiRMdDZzmJjYzZCckBKmMSkKHHyfvVDdvvVoQPpEajJVvGAxAaoOXqQaKaASVvAaQqQqsqQSzZAvVIiaaAJDdJxgGLASaozZWZKnNgSsPEVvXxZzHhRrTrRLlULlfMcCAGWcCdUyvdpPDVYuJjDwKkFuUDaAUkFuyYUbtTgZzMAaeSzjJKBbkEeboQqOoOJjBCPcXSUplOoNLDlkKLdrUSsfJjFdDbcNnlLIaBIxRPpCcrXpPpPUvVzPIRrbwWBPzqQobgGaAjgGQUuqCcQqJWHhwgGREekKrfsxMOOKWwAoOzZSsxKkOjJozuUZjWtmMTfThHhTxlJuUVvxPhHFfjJcJlrKkCzcJKeEeATtNjyYIivuygGYpZVTBGgbXmzaItTszZiIBwRrWwWZAhHIuGgrQlPpXxOojhHJcChbBjMOkQVUjJzOoxXvVkKDdVyvVXxcChLGgSeEsMmIiqKkwguxrRyhNYyWukMmXxHcnGgBbDdytgGeENPvsSBvsSVbqQtTAXEexyyYhxCcWVvuUtTObBoYPIWTQqmuUxXvBQqZLQqYFacCWrBHhbSsojJEevVlxFfXmMLOKkghnwWNDdWwSLiIbBAalLuMvVSrRiINcpPwWCTHdDhxucRGSCcsmoOMZzsWwdFJjWwKkwvVxyYOSsrXRgGrCcnmMUsWwsSyFOtOlLzZoFoOlLNPpwWrRrlzDYoOfEeJIfUemPPshHIiuUkAagkZzmMmdDSWwsxQOoaAqXujJYyhyYCKkFiIkKGgHhKvVAFfobwhRZzPprHWtmMMgGqGDLldgsSqGgQveEjCcTMIWOobjdDmmMQqMnkmGgMMmUuKSDdYkEelEekcBbCKEeSPdDQjJqpWZzCtXJFfNnPpJlLnWfvCFfOoHhkyYKnNSsZmMzciWNRrnqFpPwAaitqVHlcFQqfFaAGaAScDvkFfvVlUTtdkSTVRrtZzfxXbBFAUugUVvnNuyHrRdDhsQqSYiIutTUhHjBAahvVSQoVvOqlXxPDFfdoxmMyJvuSfFEeSXtKkTNnWwVydFfDjPixXPXxXrdDJjrRfFqQLlNnTfhRAaGgsLEDdjJeRtTruHoPpsGCVsSaCcAvcCwvpEPVvpeEnNOQqyzilLfYXxfiIFrRhHyyYjJIpKkehHEWdDTtSoOxXeEwWeAahHqJjQPcCyrRvVFfYcvVCrhHRbBLXdDJjxlpdaARLSszTtTtSGoRrOLlnUuNTEeDdtgsZWsMmYygjJcRrCAalCFGgfZpPXxDSBscCSVDXxFMmfdEQBbqemMvMfFEvORcQDJjwigGIWdqUulLCbhVvHBycHhCQeIiWwaAxGgFfXYxXMyhHxXlpBbcCcCltTWPLDzZeEdhsFmMRFfNPEehHoOsSqXCBfwwTtOopPkKcsSCkfFYynNLQepPPXbqTtGgfJsSjZUoRrViIqwWZhHzQVvJyYjpupPnYnNjJPTVDdWxAaQqXDdhHypAaNncCVPdDVvyYwWOcZzXHwWzhszLkKqNzZedvWaAfFDTtkLlEHheKTtdsSjRUXxMgdDaAuUNntBbGJjgJPYyiuXOJjdDomBKJaAUueWeWGgRrwmMNhHViCnbZgGPFfKPOoLlgqQzFCCWwOSsYrvJZzxKkGgKEeqQDdFHwWIihRoOrNjRrLIilQqLGglttzngGZhHzNRfVvkKJjSfSsxNnXNnvVWwFBbUuWnVtTOovGKcCkgNgCwIizxXWkKNokKUBcCFBbfbBTtcUvsSBxXICciZzzOYExmeEMmvrEegZzHwWWwxMOxSsKvDdVWwuUQbBqkXXxSsoKkmHhSsXAaplBlLTttTbIeEFjrRRuUbIswOffpcLjFLlGgSsfJEPprRDNBrgznAuCcqQUJjqEKcFfwDIKkirOaAvirRIWwViIiVrAaRyUuhHnNwdsXxlkKcGOXxoRCckKrLQGglgXxPKQNQqIizZxXnYwWyRkwEQqoddDzCcZGZzoOzgdDHhwJUMmWwZIOFfqEmMLlejZKknmvWvzuyYglXxLdKUpBbFhZIbaiIAarFfGmQVvnNBMaASskKdNnYThyYqQfuUZzsSBbxqTaWQsfNVvIvqCIdVnNyPoOaAFfpFdhmMEQlLNnzMmgxYLJjpsSPLYylaAYyCdtRxXsGgzqQEeZuUQBGnLlqQjoOuUNnhsSJjgNnlHJfKikKIAgHWwVvvVGQlVMhfAafxXvViTVvtCWzFfzZlZCcGUuviuqQZzeuoOUwtSsMmvvVwWVeKkETgCcGAwWElcCtTZjKXxJjdzZWwDOIiWkGXxdDBnbBNIdDFfGaAUDdvVEyYeuQwqcCCcQWLqwITzZoOXEewlLjJGSwPpdKkJubBCcCPBbBblDEeDdvVGemMmaKAakzphNEkOoihHkKJjLZpPMmkDdKmMZWnctUuNDdYynBbGxXgoODdLVveEWCajJAIGhRqQYOhddlJjfhHAPpqQaTtxoJjAaOiQqUSMajVvjNmFubHusmMSOaAgBTTXAFfYHHhhzenNELPpIiyUuYfvOoVhCVFlLeEcCeUunNjJbBmCCcqmMKNntYdDyXxwXwwpPCwWcJjOxXChHlEeLcoubBcipEgGiFPpjJfBbtqQNeSmMAgqQrNOPIqQiSTdqSsHhmXxMHQbBKkeEcCnvVNNibLlAaosTtStqGgwQCKyYIamOoCcKqQkMHhWrRwOowWIivjQbhdDnNHmNnGMSagmMiCcIJjVvhvuUUCcryYRqQuuUigGgAaGzZuUOoXlLxXxTNnxjJjyBOoCcEcCeRrxZzpcCgfCLlUucFGKrGXxkWOycsoCcAapPojyYuUbPpWQqxqOojJEdoORzFXxRrfjJsoOSfbVvVvMaCcpPKRrkJjoXxkKHvKXnNxkVjcCMrREmTtteivJjVDdbXHhDDdzZzlLZdYzZIiyTthovVOHpXxIuUkKzwWXYyxjJIIiOdEZhwubaMUaTtvIAXYHeNnEQqwWkhHKOMmaAMfFcCOaICkBZIiVvSAXkbWwLlbMWxmMDtfzVEILlmzZGrvkwHhPpDXTtybBYjJNnxsaAAeEaSIiplLPmHwWhmAXkKIyYPzGbBZzQqsSsSuVxxjJXbBsSDAaQHiuURrORcnNmpAaRIyeESYltTcCLZzlHhLFsSAalLfhYeEzcpywWJcjJYOoaZFfnyuUjJiIWBbqfOMIAaGqkKJMmdDhHcCjaYyxBaFxXfFxtgMmGnKkHXYqQPZZzzPwbBDEedawWaypNeWjJIiWIPpcAOoaCirPSsoyLNEciBWwbxHhrRdVLZKkaAzIJyyJjeEYRXxcCpzEeZfAavzZAVUuCKDdbTtBUGDdmWkhxvLSIMmiUnNuUSRDLlZzdrhEstxXwWSNnLlTtsXPBbpPpbxXHVqmsJjrudxXDxgMcTTfFPpUuvORruUiIkKIcKaASsiIflZzLgGXScDJjdCWOtgGTedDsBbdmMiIbhHNnvkPpKHVIRrPKkeEayYAsgGCcgGSolLjJPtyDOodsSRdkqCmydqTtLldWziuqlLIukOfIiFhHUwGgtuUWVcMgWwpPdqfRRrQqrAaRiIanpiIuUKupUnNyYKdYygMSoOsmEeOWTtJjwlROoywNxYZlLzKkCXYxeEedDEcCVTQqAdyvVVcqIPpIwWvuasuUSqrRvVupRiIkpTrTGMmpKZfFwWzjRraOmMJpvCcVUhHZzADPfFzZcCpsNHErfFmoOCygigyXxYYZuLaAZQftsStTTFfOoFkuTtpPZxSuBbnNnzdCgaaAJjArRNtDdDdjJFfQuYylLqrDnNdlIvVfJjdBbBPTRrvVmHUXcCxGgNRoEeQfFGIzfFMCcXxBAasgUuGjwWJOGjRFJPgGTiDAmGOouUgCFkjzZERSsptQDIidBbqiIKtwbJjPblnTtccciIodiIfFWlLDJtTPpUszHMLlpmoNnNPQqpVhTDOynNPpPpxSGHNnhvaDdlLwWAEzBYKAmMaeSsHhQTtqOoOypPydbBDAaqynfFNkKsPCcroSzpPSSssLSslsyYgXZzxZRRrdhfseRrEHxxXcTtWwClPYypzZLyOLxRaAVdTWwCctciVynumMrgZilCJjwWseEdDuHpPZoHiIhsaASoXSbBsxcCXpHVvhAebByYDdHhwljJPRrpIGgDdNJbBvJqkRRHhueEeEVoGWwJHYyVvgwPdDpngdDjJYyEaAeIJnaZzIiFsiFaKMmkcBaAKmBdDJqGgNWtRrxmilLSAEejAaJbOoIsSqdyyxXFfnHeEAQCBOgFWwfJjLHhrRZAESseGgHhKMAwDliWwtiIMmvVTfFwWILaxIznotTFJpabUeELloORJYVGEYnNGRCchHxXyRnurTjcCZzIYKHkUurvVtxXUHxsYUMmCclLBbfjisZyYXxwWImEiHAJnEpVRHoyEGJsSwMPHrRSBPpenLleEsSOhJoLlyVPpvdCiigbRrZSfFtTlYbBFTtuUfACcClnXxNVvVqQdGKkgOoDPeEXaLruUhHTFjwQqEetdDltpPDliRrRjJuuMjJqQbBCcmYVdYVvtIQqiUQaHZCczBwizZJqQKkJKkjmLiZzEeyYZRdDrMmxnViICcTtlLfBXuUZzHiINWhSmYyMuUTtbDdLDdlWaAwEwWejSsjWKHEehkOowJjAjScCsUsnmMdUuzZmMyXCWwCsAHmrYydrRDJHzHqQevmNsKkwWSsqQSnixWXDdUkJLaAUqiImMQudDwxpaAZHhrwWLlIihbeEGgZLNdEauXQqsSLnxXsjaeBnweEGzmeETSKkNhHyAaCctTjJYgkFyJTvUFfTtWUcnQQqfcxXeWGrAaNxmMQNknXYyGgsSVaDdXDJkbBeEkKiTusSVEsMmEwsiEyDTtdkFfiIgyYtYLlypOotDNnTlLtnuBbSsUUYlhHBbBRrfFJjqQukKbCcBMByYLjkMKZjKLXxlChMmHzgbBiGBbMvowHhLnPcCnPpNCciyYHUnNxXuhOojzuUBgzZDHVGSshHkKxCcWNAiIaDSrbJBbHhoTCcJnDsgStTEkDAteUuUuGmsSjJoWFIMmiAaeEfbLuUkKltTtxXwyXkKxYQFphxXtoVvOuqptONnPzMmfjwsSWDFajmMuQxGgeQnNqQZzJucPdNwWnDLlDksBbjJKnNCtTSRrOdDoRrJsThXQZcCcgUrbvNnjJVlhFvVfKkKflLFkvzUyYzUuLlMmglLmMCcgHtoOTDUFOBbDnoOksGgxZvTUytQcWwcRryYsXpMXqrmMgZlLqdDQxPpXgGHlQqMmCRsFxXMmRGAhrdDfWaAKHfoRrjYdNNBGgFfuHhEwqqfNIrRiOYssIivVkKSgjJfFhHhHWmMQYyKQJmBoiyEeZzJaDdjJLlDbpNnPDCiIvVBoONfPuYBGJjgYyiIbHhBbyUpFnicCcFgGtzCbQqGsSpTtUUkKbRrEvlXxIEIwWOTtoKuqgHhOQqaxXAVZnNipUuZzPDEedIKVgGYyOovStIiTqQsfdGgDPIiOOBpcCtTGstTJUuyeSsKEzZMmJjhHiVyQuUquZJjzWwoOSfxXFmrRnNaAIivTqNStToOsTdrRCjJcbuUFfBkBpDdeEBlLLQqtmMTEWrLlnNwWRdDWPxuUCKslxXrHHTtIihhRZzSstTZsSumMURrgLkJayoOiIoUJtkKTDdjQqmMzOqrTiIvNMmXBbxbBWnSAaLJlLUHhyGNLQiFpJgGGdDstNDBbxsxXSsSgGXdEtsUuSfFtTTwWeMMmXTUoOHhAaJftTFfFaAgGPfvVjJNfGhxvtnxXBmMIsSiroONnEegZhYuwpPWUSskUtaVxXSsLliIhIAaKkGnNtXxAwkKWGMmUrVvlUVvGwWefddDYyvvWuoaAiIPxXyYTtpBGzcXxNaAoARnNUNnYXNHhFffYDakKrUKkuTTfjXTyEeLQqNspUyYxDpPHMOPpKvpkKPmtTvmgnmnNOtEYyHBzZTmnvVGQIiAzZaqxXIEuEZlLzuDMmEMTmLwNnwWxgBbOPcCAwWyGgYtTMrRmOIuUxPnkKNpqQXLliwMmWjJoITfFRrvVSPJjNbmWwisSIdDmoIiVswWYCSsxXippdehtsjPjVvJYZIizGgyjgvKuKzZeEtTGgbfPTwkzZNNRrnvhtTlrRJXxVEzGdhhJjEZzisQLjlLJDhiIaJhXLlbBxHBnNbQXPprsaAhMmEecCOGrXEtiIfeGgqQEFTQqjEuUDdtvVeEBblLKkbsERyBjJnNaSvgGGKdDfhxsSXLrseUuMSZzZzsmULluWXxnJMeUuEIyYiOYyobJEejESKIrKcCAWwaUuZpIhvFnNoOfTAYyGBbWwGgVTkbBNBHmMDLljSsiIZfFzXYVvjLlPjtNnoOCLhHljPNnildTfFBbuLvbBSQsXSdDsswWOAkKYnNnOoLwWlHhMDMmcVCeEEYjovcHxkdzZulLQyYeEqGydPNefxaAzntGgbBBQAQXvrqQqeRzACeVvEcZpAKptJFfjWfFDEqUumMRxUupnDfpRriIXdsSKMmETQxpMmbBirRXqFoOtTbBnNRbBxXaKrUHVKMdrGgOVWwvNnoqQhZdyaEYlnQqkKkGWwTbBxXtjJyBlZwuUWKYGXxfpEaAvVsvJjVvVyWGgLMmkgYnNyrZNUunZFgivJLlgbPdMmsArmzkjJPjEeOyEHNMmYyLPWDdwpgGULtEBTtDdDyqJqQaWxXUBDWGHnMAJvjIaAinzPOJMouOjVJQXBOodVDFxjKkSVuUwGyKhPRPpaCcRHmMqXDDGNyoPpqQOhUuPpHVYAvWwVajCmocKkwWtwUZlLHhQltwWlLjJgXBpRrPmxhfbJuIppPqtTRaWwTYyCgXGQfFxXqxSEgZzAYsBlWwzZguSmtTtdPMKwWkZzoOoXxOvPpVMmMhHqrsbCcBlHhJayYAIijyBbsSXwuVTHhmrzdDZRxMmTtdbOohpNMQRjDdvedDJQQgGKhaAnGRfiAafpdDDselLENnTIiNUunTTtAruPpAaNDcCYfhGgeEKHDdNnhYXxyoDFyYlLFQKMefkjJmKmMkzVnNfFTNzxXZnHSZjJjIHXUuQOrlfViiWSzrRchsLZtTzOoSzQkHySqQTtsYaLlUWbQuUqyznDdZzNDsSdgBBbiUbBTtuUbBbBJCsnNjCwWcvVsipPYsLBdDbVvatTPrHhOfFAmeQzZAaabwJjAIIEoOXULCGTvCcbdeGgMvAAkuJjJkaApstLgHEegmMIGwCKfdCcVPrBEenkdDnNmFfeYEWjaAJxWwWvVYyzGseLrgGlESgZruSsjJHhzZMNnXYySsoOdhHLlPRrJABcCzLJIQqCcikKkKHdnAXxXxaNxjJXDyYHbVtHBbYzZXxzZTBbAcAaCaJZEemtTMEeAaoqoQemkjJOdTdDtDlOypntQiOSqQsoWwkLlyYmZxNuUXaefFTtNUupEyYpuBbgGMmebBElLUglmMQNnYLYJyYZJjDYqQyYycAuWQypVTlzQaADKkuhoOhHLlDrRdbmpPUulPGNMmbBjeETDdiMmIWsFRrpIWTXwpPWhotYsSCcgvLSwsjeJjSwoDAaWwAsrElmtNaPWbBPPRUuUCgnXDrRwAaEIBbzspUkKkcPyRrZzaWNHhDdGWwWwpJjKOpkoRYmMtHdkfjrtTCKOSTdgGVVWYrRdvWyxkMmVvlfGgNnLaXxKWynAMLMmjMqkjJmUyYozJjmRwymMDcZmgYEMRhHbBruCvkTWxXrbNnBJjDChJjFSsMmuUoOwMmVTFXfQdGsixTtRdDOOAaVvNJXLlAQqpNkKBbIFDdMUBkkmIiMKZAazHPBMAcCaqzSszZGeEUuAMNnaaPJJZVVvbKcVlXyQQRHMguLlUKafFAVkUwolHCVhEMbygmdDCcbtuRmZyxXYjyMqQYyBoTGlLMtFzKzTPpsuxXfxakZQqGJWeKLYyuxDxXdLnICukKUcVmMwkjzZRUboPpvVFfZhHpmMkKpPRsNqlLcCSsQVLlZzIrmqQDYvVeEuTomMOXXxUyYoOyjJjJtnNLGMoQjwDdlVdKSSCcfeEOhQqRsEApdMtkqXQDLMxZSVinNjUiIuJqQHPpiPcCpIzZUWmMFxYWnwWDLfZOoBbSVEEeMnHhHcfFCMmZzKQixvVSVgAiVFTnLnNwhcnRrcOoiAboOaAbBoltTCYycAaCOMgGiImocVvJjFyoONWtTRoOrsSkKNdoODdCiIoYwIhtLzIuHMmXdCcvVcsQhOwPCcnxMLdgGcCSGgQqVZSJjKHBsWzCeyYEnROodLlIiFyCLAzsSPCsnWHhwzZKktILDzZdDdliWRPpVMkwWImesHVTMNKWwgZyDCcEeMwWgzZGeEdDWwXnNxwlgGLadDuUAaERhHrloaAOajJDZYcrjYwWoJCvCcHhEHhMaAmyGKknOmNInNovrFfRqwTYyNMmtPpPpTRDdCcXnzZUwWubtIVviTBiItkIiMHyqFERXayYAxrJpPTxvJjVWwiIXkykOIvfcZzvzLVvlKEnPTiFfSiiPzaABCcnOndDNVvdlyYLDwZsKkSLvVNXxgGEaSxXDdUuZiCyYcpPIwQoJMCrtHBZgitRSsEWLjDXHhQqvIoOSLxXZzBCAkVlqoVaswMAEwIigdKHTthKwNnUJPYUudLlQGmRrzAJjReErnNnNnnOjSsXoMOoRSvRrjPMmheflaeEtTRyYrARtTpyUOOogeESQNgGEedFWagGgGAwzZQXxihjxUzFfqqSQqspPACnNcNngxUupBGnhRrrrRrWIiIOGYAaRrYybWHwTkvzfRMmtdljRPnVTQXbbBHKknNqAaXxtTdmvVoOdCcMmCRmeROoPhHppRKKuuUbOouUKkeVvxXFfvejUuAQaWwAHSXCcsSYjJEvVgGuiMUFaAyuHQqQqzQqcgBLtfAKaLlpTxyFzZfYrRXtUuPCOsbiIBMDdFxXfQYaXanNxkfvkTtKQKRrkquIZkeKwytsfFRrnnGFERrhnGggzMEHXxCdVYyfhNGIXWoRzZrACcajQbFxCcVeEXVCUuaRWkKDRYzZnHWyTJjtCLljVvHLKkwbBdDSWCcTAqTzUIZziuZiIRlCqOAaonIxbBLPpHhRmMYJvzNnLlEuqbBQjLlZWUAcCbCcgksSOoZUqQEaNnwWVvVDdvwBbIWNnRCIiSsPpcCBFAOdDOodbrgthGgHjOoFrVxfFwWlzYtTRrgEIAxXQATGWHSbDcgQGgGgsXlKeETKeqQwHLlOozZhqQTtOoCexQjgWrtTuxrNaxNnduTiIHyYsikqZzuUqQZiNivxlwNnCIiXDtKpHlCcnNstIiUjEYwYyWhhGvtTjsSRUunsPfONSvFfgfuTIAkkIyIiYhGgwDmMkKnBaZzGcHcVvhHAnNdIiwFENGgOQEBSsbTteETvCOocXQqxBbjbhHjUuZuESshtTOJjRWyYUGdwTtWSTJUbBpQIhHiTPhHvDFfTLzbrRoOBZHPjayYveZvXzhVvcLAalBxXTsuQPOzZopHlglLTtFSBiAaycYTBbUKkpPYlLlcuonNdDgoOwVCcQqgACcwWNZzXxDdcCnNYhyggPSnYLogOoREeZCcrpPqlqhtZjJETFfvxGaIMkfykzVDiyqJfFjHhgKTGhBCjJJzeTtJDRQnIicUAalqrTtbGXxHUPobdmvSsVVRtTtTlLrEKTtodxXEITtixTdPUgdBQqJjHAafiapxXPKVUntiICruUItciVvnRidyMaApocCauNXhzZmMHfbYKubBdfFuGtikKYcnEyULluHNuUKkgmDdAaMGKknFfhYlLeNCJCIicjrRyxXITgtDGgdHhTUDUzZkyBFmMxnUAOZzPmYDIrNICTgGizZRcTMmNiIuvJjkAQqIxgUuGXoOFheEbDGMlLmupDtNnXegxXGDOvVkeRrvMDBOpuhgBRQqQLoOfFuHjJhCNqrdWwjuUTtEeDdDvVdMVvmEZjcbHgtkGhHHhTZztkKuUAafKYykFQNnyYYIdvZKYFKmiAGggXgzZGVteRUurzTHbBQaALQRmMjJzGgvVrGOlyNspHhGOoGYHnBbNynbBavVGrRvWGOUCDdLyiIutyJjOoCYIbsfGLhhHqUSnNtMhHmxjJWfYyFwXbCVvHLluUZxVvsMpgGPmSdDMmVzEVVDdvMmAJpcChltdVpqQtgYyGqPujtskKSsDHhPptTguwzZroIiHaEeAeWdzZDymaAMYwUzEeJcBwbBWbWwChHBJVteFfqkXxKXxtfYyYSsyFTobBnefWnNDaYYyeHhEyChCCcgAbNmEeMdWHCciKYyKTtaHhgGitUFsSGHsShVsnoFpSYyNrgGJvVVMEemgjJHHwWyeJJLTtljjCceEkKJuTOoSTtLhPkTdxcWLXVyYjJInIrRsSzsSQKnNJHoOhAOYyoajwahHAWNnIShtUDXeEAnRXUjNnJMmZztTRnuUNwGJxXqXEmMcJjrpoOPRWETtnNktaAkLxSqGCdBshEewgEetaqapPieGyZLXvJjRfJTGhHRBEeDuOobBUoafbGFfrPpReEwWUugwWcJjrzZwiWtTnNrRAeuzFvUuVfKHhfFGbBBaPpuwzJqQUebbBBZVjyrPplXiYyCcNQcLkKrtQakKtwsWlhoOJbOoBcwWYwhNyrYydwrYMWwmyAOkpfFPRPprKohHKkZbBzQqcvGgoObBJjxvNnXfBqJOwxnNigzZngGrRHFvDMmcSswGgWhBbePpmNnxXZGDdNHmMYyhjJVPpvmMrRmMHsfFSPpWwefgNHhNRrSTYWkEKziUTtQbBhCcHqVFKXAxAyqmSocmMAWwkahlLdDHFTXwWxlBbbGCZhUYfumIUSZzsepPyxscChPZcCzpqjdDJaJQqEVaeEAtTEZzBUiIkkrPPpPdDprjJEMrcszZSsSDkSsnNKMDSsQPphBcCxqtvNprJqQtTLDTwWrFZVIiKtWhweOryYRoEBygzZfFoiwUtTuReEJjRHNgbPXGaQQZuXJHhHIqfdDDgGnNnqsGiIQqouYXxPBbrLFEHpJiInNVsrmOxJoMmNDdyYWwxXBbNnNRNlLndDrqQGDdBdDbsSgXxEeaZMgqVCcvDypjuWkjJkDGWeamWSAvfFFfUuOQLWwvGgKbBacaAboOyYeElsKEvZzVekiVMmClLcxdwWJlwerTIGFfzbFfhlLTiIRcmjOqtTWyEeYzmMhHlLsAenZzlmoOoOMzWTtoOoIpPiNbZpIIiIlLsIjJtpNeBbUukZVCFVioKYKtjeMmSFfsdpPDfdDQYhmEeKTNOoxrBbnhgGHtWsSsSQdDVOinMoNhEeHgUuVvJjYHFfheVcjONnyJRLlCyzdALebBAHhWmPpdYEerRzGLKtTklknmtvhOoSJjERrDdMiwWKmvSsrwTMmNScHhpZalcYfGgIkKifFJjDruJjUNIcCicZwSbhksSdDjJjJieEIszvscCyYDlmXNXxpGgWoHqSCDxhUiZlPxXiIpTUuHiHgGgGhWyOcrRDdDqQnsSCcvVwnYfouwWUOmaAjJMrRmMLOBXqQRrxaICNCHWnNlNUuSstfvBbIaGiIUuUxXFfudDvsXIXxqkhNDRrJMmCcxXjdmevssSzLlFTtlAtmMTadgGIieDdEMmNwyXfwuhHhogGOItTvszXkKuUmldqxsSQzZKTmDXYyxPaeSrTnNtHoFsskDvLWJqOFfTtmglTYjJVvuCcnNBbKkxyYUwWFfutZzUbBydMTtRivnSrPzJjOTtoOBzZurJKWSsviNlXUlkEwFfjgzKAXxXFlLIiUStZkZfTmlLgtLlOBbbyYmYJKnNkWwnNzMCYlLkKycrFjlLJfUTGgBMbBGYBmeUQquHvchLOWuKDdvXxkGmhrqqjJYxLVvvCkHmMhBvzjjpAAWwmagztLlTZZQqQLlmbphKbZzDcCdumnNLlDBbdBbfinPaxjnoorXISuYyUbPpBgDDdqFxftEevwWWfHcdNnRBBafFAbbxXxXwtKVciIXxUCwWcmeyGGwWgMzCdYdTtDWSsrmMMAaZmMpKkPCcFfOyYusSxXMJjfFKQiImeEJwnNWCclTBbtmaNYwxXkAlFLwWKXYAawpyYPjJFfVDywvvDtsUuokFfcRJFKDhTyrOsSKPoGgmMktTPaAgpPnqQJWcCwjwAYnNpDdCKEeuPSZfFiiOoIvVeWdxNGcurFfJaAAajppbBwpEeAKknTMLepPRSuUapPdOWsEJSrRfFWslVGHaAhsSFfIPpiJjUuyTOHxtKTtkwiPSsfSwtJngpLMBnNLlVvHUdqZLtvPYqwUaCUUuudzjyNnlyFfqLGcCPePZznEAxIiyzZvVQMmqGgYyYnAaXlLyuUYzMKYybBIqTIiNPYoLxjJXoUMmuyYRrKMtTEjJqOhYyHQOzjtfFPpyMmlNnLhTpPvBhmWwMhjlZbaWWwwEeJjCcjaApqQDNnTtxWwmURyYwXweyEMKgGNbRpYyLTtlrRvoODFkcWgiGAagGhkKGlTSPkKKjUKrRaaVncCNmEqQDBVtgcluxEeeiiauUHhWBAAaqBbEPpMtTaRrXRrxLleEoLlRfFpOoQdfFDqAYylSjJyISJScjcCuIbGNZznSsZYBAawuLlAhKqxxXXZsaAQqSslSHCZVvswIIvwBKClLcbBQzgGsSZqkbWFbOoUuBLEeKbBkZzRoqxhUuiiXxIzGvVgAZzvQGgqbBVwWaZJzshtvZMEeVeEvKUuBbFAaEmkqffaAEedjPpJOkvVcCHeEFycCdnURattHhSdhHPFIFrgtTNHkqyYqyYjEVdDRrJrqmrndDrRNRnPHBbvVvVBRrDXMGgtvUWxoqQRrOsQqSkKYLSRQmmpDGgTMsUmMGnNLaAbSyaGesXmMgxGctfFArQPiUjyYBFAXxaFfHdDXxXMFfbxFfGTfFLqzuWTCUuOMlLPpceEJxXdDybBvYngddxQhMIiOogGOovVNnmrArpHpPsSWVrRtTvCcwxXhHkYRrgvVQqRrWIiiIRrvsEoOeJXfdviIDmMpPFfbwWxUuJjqjvJoUOmjopZNJYyVHhfFjamNZzhpYyPgwHhpPdZzbuwAbBjQvVYdLlbeTluRYYcCNnyqQyrlnCzZcheyYbBYoJzrRZpdDKZMRaSDpBGjVIGfzzRdDHhGGgKlbBVvHHhKkhwYzZMmpPSDdfUuFEeePFXxrRgykzLbZzYQsSqgFTtfKNLsSyAahHeAYDzaAHRDmkvZzhyYuAaRkANnlLrfQZzxpPIPXqtShHseeEkeEoODCcNnonNOxHhPFQbBBbqdNPXrfMmwWFrdDjJRQFCcfKHhkedQqwLlTpPPkvVaPrRpPIizUwWuDAadBbakKZrXxEQIiRVxAaLldDqapPqbUsSZzuTNDdZXFpnNsSlLPEnoOpdDPpDYVvnNfFgpPxXiIUuUDKXhCgGVOJywWecvCdmNyVvaoSSjOoJsvVxSqsIiVlxSsWlLwdDKkUuXUtDLkKIpJcHNnhTJpJyxJdhbnKDdtvWwgatyYVJjHijJPzyYkRikJjGgseBmRCBbfFcrjNnNwEgZbWwBzGSRlHxXFkgUuTtpPVvVgGlPLlpLsAbYdDreLlSmMNnBeETeJexRgoHNnxXSlLRxcmMCqrRQqjKkAHdlqSIQqexuUXvVHHRrgGDgZevaAjLKkGFdDfgHVvoOVPpnKPpWzZwWtpFVvBkUkVGJarRApJSTrRHEDPPIeEQqckKySvOMMuUBnpxXvVUumhHqQqQgGYyMeMmEsXxtiwWyYaUqQupoGXWlMuFfVvrRUtmekKdUeUeinNfMmFsSghHNMeEtVvNnbheTozZMNGWoOwMVsStTYyMVkomrRhdXuPRrSnlYtxJsSZzNnFTtJjttRAMmUuPpdmMyWMmaAwFnxNnGgyurCcaVvOnUuCEjJIieZgbOUwVVDFEguLdDRuyYgaTgsSimMHvATuKyHzGmMRblLsSkUuKNTVXHgFnFpyYOoFfrRfHhFvVjpPdDXxuAatxmHyaAYhnTSgjPpPfIqlngwWYujNnlskKNwkKBbnVtRQJjoZoOuOYAjKlGfFuUzrMmRLSkckPOopKtYZzLlyTXpwxXKkwelbDdiIwWPboOKZzDHhtoOnQtVMvcCVIiTtspPUYvIekEYjSgPbQqoopFkzpPUuvjJowWGQyYUkiQrRxXqeiZBXxbzLVtsSoOTedDBHhuupPpfFPPgBcZqQTfOoCAagGCcICUuAacbDdtTcjJdWpYykKbBqQUuGgPwBGgCcdjJAjpPYIOwWSsMmbcCMSsjBbqkqwrRyYKkGoOSyonFQQWeUbnnDyJOwrRtTeEWFhkwgGGvFfLlViIgFOobBRfFiIqQCcHagyYfFrMLlmfSroOcoOPpQqLTNnthvViIzOoGRCcQvVxmPxeESMnNTtmClLCPpqTAaAaYutVzjJCcRrXSKHEehNdnNoYyfwWzZudPpcChGWwGZuZfFVxXHLFfBRuGFfCzdJjDqxHhfFHtSjscnNkHhSKdwWaQqARrpCUjqeExXExXXqVvUJAfWvVwhHdKkJgGSsFZpotbsVvSBTBbTPjIiJQUTCcHPfOoDdMmqWTBwOAaMgETadxLlaAzZXKgGFfesGpPShHRrdNjKmMkdDtOjBRsdCrRiKkIcAanAawbBXgvzDdZtTSLlsYyhdmMGBbbZOFfoWEerRwoOJIpyYNlWOVmRrgIGZGgcCcqmMQkkKdaADJzkmKJldDVvbmkCcVvQgGqKUwWgGhHbLxXyuoOyaAtTYNDnPpNdTtdTPsSTGDdKYeISWeSvVevUEetnNIVPpvhjJLltXxTHKjdxXVvxAvxBbNxXXxKnqXnRgwECFqNCuwuVtjvVYQqbyYFfLlBoXxOKHhjJkYyfKDdGnstMZgWNGgbEAJOofFPOopSqlLQBbNlyYPpxdlLSsDEeDdvVCcUAeEeDNnnmMlzEeBeEHoOoORzPXwYoOyjJcCWMmWwWlDdjJGgwWjKuajJSsOyYoAmMxMmHhwXIMVEhZheEjVvrRRxXeEQqrReEMjJhROoraScFfYycrRzpPZPpxYmMVvDCcNSLluJaWwNmMnJJPpBtTjJwWsHwJjnhxbFvtTnNNXzIlMlVtqQoOTvLFfjKkIWbhAqiqQIuTxWzZwXhHyYyDvyUUJjrsSILdTLTWJfteEUuRlAxpodxXDOvLcayLsmggGQqdDpUuPQqGMzhHBGIYyIcDCckKYcCcCOxXjHDdxXoaANoPuUpeEpPOwWEbsuUraARhYZWwzypmWlLjGgZpPzghHeYHhOhrvPoOXrRxeNEejahsSIIievrnNRVLlMidDzSGgIJFuygGVvTttTSxVvXXhuyYxCcXTUubBRKhkMmmeEMysSikvVKWKkwJttTRNnUNrYuGgUxXrgyegvyQqjTtTtlLQqruBXxAvLlVPjhHfONzZZYsSyiXAdWaDdlLmkazlGobcqaDUaAuYZzydhNdDmMWwzZYCcYtTDQGgwtTWiBuUaqiIQsIlLMXqDdQTwmMnPpMmQjyYbMkNnbfDddDGgxXFLlCtTWwAzZfISfACsScFfDdoONZzjiGNWDdXvVxGZjJhHjJzqLlaAQDdhjgOlLPpKkvYyUxXrGgrNnKQjaAVgGjniPpLTtaAWyYnNMmEalLPGgxOAlLaHaAhKkOzhUdDStTFfJjcLIzGRUNYMmvICDvrXloYYyXhRYyJjzZrSRrFHDrzGSZvVsSsORxXpSYuUKkQeEYYoByYbgGEkybZeVgsSsXzZYodtHvuUnOMSPpmCoOOCcoctTKmMSskOoMsPmhZuUCcSujdwcCDOCCCaANLBmMcCjZzpPmvVMJmMpoqQOjJBLlWTkscCSTPpPrmMeJKBbfcMadKUdDwWuBHhbkSsywWOoYItpjfrJfFgTtoSbmfFZigbBqOrgGxNBbnXnzPpZuhAaMtfgGFpPRrpbDFpPiLRQUTtqjJlLTnGcDpPZzsSZNKyYkKWAawhHkUsXzUTtRrKfFkKFfxMmXIiaASsqzyYeElUzyGIGYCccMLIilEeRdxXPpDdDehnSdeEaCnYaAwPpkoOKDdWyYyNUUuucubBPuTiItYyqQVvUKkjzeEZxPpXoAJvVRrkRrPgEetRFftPKUurPzZtTUjuUJzZQALlUVwWiiQEeOnNoCvYDaFftvARraXywWxcZlpPHhLGgTtzyXwiIWHhnWFfYrLqQsSmBbMKkMNnaAmoqQSsEeGxXVvDZzkuPXxUkPNAgGrFAaYyrRQDBbGbEeBmbBeECvwbkKBTRrWhHFbBnNHkqQsSKbBhiFfIfuvOoViIoVvKUiQUIZgGwDQDtzZTmMEXxeCmMcYMoPpyYdOcQKDrJJNnjVvjJjDdYIiTXxpEeOwWpivhkKVFfBDSEMmwWowsxQqFSsvBbzZVkCTRzZrtiBbXROorEeUfFuxcNnMmCoVmQqMthHtbBCYymKkPpbBJjGXLlURSMKkQvhHhBwWxjJJjTSdOoDoeEOeHsuaAslhHJjVXHKHhwMgBbukcvaVJjyYFPtTrYjizZlvDBbcCcCXZzICOoenlYHhOpRLlLdDlJjwPpWwwEnRrPqQYAADdoOSselLlLEWppyxhNxXThHIiXfAbXYyAyYQgiXxmoFQwMVvmnNYNKkxFfXzAtTyZzCwWlGgLjYPXxOoCZyHDOodHdDhysYirPMCroIVvhqdCcCcgGXvUGgNnKkgtBbrRfFTqQQqZpixaOolrRLuUMMsSXxdWKVgGRNnMhHmYEeygMBbHhizZevZFTdXwmBBPpKxasWwzbIiJjIiKxXieEQqIUyYuciAomogGhyxaiVTtAuEeFfjJpPwWmABUWPpbQqBHzeDobBxXiZiPxmMPpxXBIbBHhETvpPVMemHhxXJEehOABbmBLlFTHhtZrDeQXwBJOSnNdDsOSCYykKYPGgTtWwpoTtXxwKgRkPGgXxXNnwWhHlLbYJXtlLIVwmMWHhHtTGGgVIivehHEAiICcsmgzZcCMBRrqJNnVfFHhAjJikcqWvVrRTtJjqQQTvVOBkKNnvVInZzXUdDucCxJjqhQDtRXxrsvVpZzmMonoOwWRdDGeEIiaJjxXsEnTIKkePICyYUWzZWxWTTtkGgQKkcpPMmMEfvSscHFleEZvVyaxnNzZttbdDGoUhBUfMpPnlLUuJJRQqlLrAmsHhuqURrEeuQxXIxXXEeGWwgwjJWFFfpPQHhJjqLDDHgGHhRroyYfNnFyrRrHsSiIgpPiQQqJjqcoOeErRsSwlTCNwhOoHzzLllIJzZjKuUKQqkenHUuPZAMEgdHhLzfFiIZpcUeEfFvVjcCTtDaApPWwWsYygtTfNnqrRbCcwZzMmWBzZMmbkKBQFWxtiWQlqiIgfFFFffiDdbdDNnIizZgfFKwolLrsSXxCcIiZzZzRTtSskyYJzLeaNnyYbgeEGBWZzjJRroOECcUIcCVoOgUuedDqjJTtQECczLzZzZZUuwyYcxXEJjeIiILlFhHJxXjFYyHmsSvLqghGUuakFjtThHhLGpfFPHiNJjlUuLnLlIJNDdgDdvVbcCPpsSqSroOTDbBlLcIoOiKklyXGrRZqeHDIifYvcCDXxicQVvVicCrHhRGWIijBbJwgBbnFSuUqoOwAtQyYXFRrJLljPpHtyDwWmbqGgMgRDdAwJjWmMBizaAHDdXxhHfPugGkTtDGFfUZVwVMNzJQoizRrgGuiIjSsWGZLnNlVvwWgDOeWUJjuKMmCvVcrqkzZpXxGLqlgCAaLSDWYvwWINeEnRrJjorREXxeRMEezEeVveEZEemdWpPCCcYykeQabmMBNBCiIphHNnHHhhHhPTsLuUlFfzZStcdDeEbqQdDZGsSRbGgndeRzZcCrlCdDuUPFffFFFooiInNOUuWgkKGDVvSsJjdSiBEerJRrfDdizZLRrPxuufNnFUUXwJjPplLWiIhmMGRVMXeSkKsTtyoZbJjsSVuCbuOnwxNnXdDZWcZzOoGwtoVvDdOTqQsFrZEeTsSTJnrRJXINnixhHjqQzZfqQBIibjJkrEeGgqQRSDdsXjVoORyoccfhHcCZWwwWTvVtGpkjJppFTtfPzBNcIvnEaAJjwOoEFfYyhHgGlLjkbtTMxUFfIpYyxXjGgTvVGmurUuJfFweEVDCcuUkKEnJhHjQlZAaShHHZhxCoDdIipKkvPYwvnNPpwWtpyNaAUPUupPvOuzFHhQBxpkAaKEqiIlbDWwdYUuyBgxkKXGfFKWWAaWwFbcxoONnQbBpnrfHhSHlpwLPLYmyEqRrYzpPogGOZcCkKroVembsdzUqQucLAfFaJjGSwlbBrEeFmhHoOMfDZzoXxOEpPqqQQxeEXsDdwBbPihHJjFVvIZHhYobBePVWcKkXxgSVvoOOhUaAlSrAaHLlFtRCcxcDdkKCqQpIpJVvYvwMmtTWxsfFpPGgTtsUgGUuVjYDdXOpLsHbJsSKkGaGgTvUuoOtsRrmMKDuLKqQVdCsvVeEgfBbnNCLhvyYzurGgRUHVvhZhHQTIeEqQWfQwYSsMmFZzfytTIVwWFwNmMRqQuUzZrjjxTuUcwnNZzsLKysMkKmCclLNJBwCIicSJjsiwWqQAXnNxaGgmtUcCHhbBhHsSuJYyVQRBbSBbsrSnNsmTBOakfcHsFfSjJUDdvfFVMKGKsJjSqQSpbTxXtBpIDdiMEYyuuUFiqQrRjFBeEbydZLRnfTofYSuaAvVNxRoFfXQqNbBnWfDSgoOrwVvUuxXWCUXtnsmQqUlnNsHyYEaAeMmGxXozJjZOQqRwRrAlLCcjhHJfUEeAauymsSNnMlzbbBVuUWhHJjbBwMUutlkKLwipyyzZDdEeYwXHJjhHYOocCaWwdDbBVTtSPpspnNLljJnTYNIiPpCyYhFfKUwZtTznHYXUGWtTQlHhHYeMoOhHmEdxXDPOopjPpzZJvVvsSRrZunNGgWwvqnNTtKTtomJHLbBqRGgUitTaAazbSiAZMxiWwItOWYyAaYywovKkqQzPUVDdIiRrUudVvCcxbpPXXxxBXDJntTaEPpkjCBbZlLVvcEegGRLjCpXNnLljsSLXtHhIiHtUuFYFfCcywJXaImtTMikooYymXSFpcIGgiCNnPkKaAuUBOZpipkKUuZfFkzZHhKudDWwaAWwFfgGYRrrRIiyiRrbgvVeEGAiasSoOACkKBuJjRDIidlnLPuBbsWwxCuUpcZsEmGBjJfKudfgamHhFoxXOuSsGgrRHhtJXxjFXxfbBepGEedDkzAawOAsarRawWVvIiAuDdtTUaATtlXjjJAaIiGgjDdpPXxQqssSAadDEeXxXxkEexXcCZzgARreEeVvqEeDqqQQdIiOMmcCBbyYVFyYYJjhvVhskbKrWwRrRyrlLAaiIWwvzGgZwrRXDlHYyhHhRrkKSsdJTYySGLlTttTsHhEYveEWwVsjiIJKkbLvVJcCjpnPdWwgyYZzGNCcnnvVTtNIYybrCcRMrTvvtFfMmeDlWwLdJjXxmtTdSsDMGTKCcVTrRulHGgYHhTtyHdYSsrOoRyXxTDUuFjKkqNnSsQRAZXpGgUuEHIiheYyaaDzZdldJjiBKkNGQqNvVSyKkehpwlUuQpPoOdDhHixXqfiIFBMeqQYLlEzZezZcCzqrqPsqzZQHdDZfFglLqkKFfuUrRQyYBesUuUuxXSYyAaCbBcQYyXrlHKkhHhwnNAaWaDdjJRrQqAQXnzbBZNwVvcOoCWuUnqQNWwBbgXAhHYyaXzgGZxaNPSwWgGEJVvjYfINjpPpXxRTfOoHKQlFmtTMQqbBBbxUMleEDOLmuWzZwUXxQqLlEAFmMXIEelLsSRriTtdEeBbIiDUVvvsAVWLlFfRjpPVaAihQqFfEeHQqdvCcNFNnQqQlrRgJzZjGTtUpNnPuLLZEeEezNrREKkeQxOhdQyoUpPeURrBblLZuWFfwUzerNnOoRIRQqdlLDUYUuOoUsvHYDdDdDduUxXDdHhyRFoLYyhuFpSFfMmlBzFfRVvMBlAKGgkiZfFZzspaAxaAGgXQqibaAZzBGgImMmuUTtdGFfAaEVqQLlSmMuUsNxcXWDxxIiyYUuXGgXKkeaAlLRBbfFXwfNnFuWwAkrRKwLlrdyYDRqzQqQOgGNnEoYGgwsScCfFrYyCcLhOofFXXxqxPoKktTOqnNQTtaARrCzZxXsScksSNvVwWbBnfCrRKFqoOrjWwhHlDPpUMmQYLpPAABANnfFsSeEbEHrRASsalLhhuRNnvbfwchVfExXemMIiUTtBCGocCHhOwWgqQetaMKkZfQfFfFARlpjJjDdtEeAXKlLOoVQqCcvUuFfUuVVWrCcRTQLEuQsSDyWwbBsomMhHOktTTmMtTnrRnNEEeeHhcbfFQquhrRHUByYCKxjvHlLcCjlLgvDRtFfrReESsRwzPHhSZiIzOOEJjaTAatCwtmXLpfFPlLMmUulauUZkvqQVAesSEYqEeeyaAYOeEfFJURuUyYZzuUHvVANnmfFUbWiIMaEejawdDFkBUSxTLhbBvGXRUASsaQRLlWtTwrSVvlLsiYeEyLGXuUxqpXxPZrRefJsmbBmMQyYeSoOKkBWwgBbDmaYVZVvzGRrlwaEeArRspPSUumMkKQquMeHwkKWvjJQuhdbZVLoOrNnQqRlWwxXMmvypPYIIDqoWdsAaSyYndFfTwWPbBTFnYoOgGBWwJjbyNOorqimBbZPfFYypPvhkKHgzZHhvSbBGxyYjJwEmRGOuVFfvjJUJjoiIgQqGCcXxixbBXkOYyjJOMmHhpLlPWwoHhBlnNLfYytTVvuyYeoqQOXxeEMeEMDdmWwMmRXmikKIxLnNfNPxehQqUGgujJOoeEOFWwHSseVvQqrCYycBiIawWcUCmMcqTtTtPpXnNmMJdDRrnNElLYYyPXxPQqsSHQsZzSRQXkMmeEuUPpuUMreKkERQqBsbZsBQhHQqsYgGgFIilQxuRGNyYncCSaFfHhDdMmruUQYnNyeEyHMyACcNcCFBVvbWgMAarxXRrRtTmapnxSsUuetNnarnNUMwWlynKqQDdkVfbBeEegxXGnZouKPpkyMAayneVvGgBSsbEcCQEeqXxAbBAVMvVrRrRkKmgerjiFOofEeqerkvNbBEVYyqQBFdheEHYoOkKTtylLDbBvcCPpVCcsIirRBPpKklRrdDLmAaLlTteEMmofuxWYyNcCEsZDnYCcPAOlPNndDUuTmMQCZWXxWwVQHhqeYoOyWqpPVveOQMmMWRTdgGwcCUjSsCssqQPCciInNtaAFfXmMYdDySsxTZOrtTdDRoTtzSsoOUVEeYyLFzzqObESyYYWRrbBzZqQmKkORroTfPpFZznRryRrCCcPlLWzMmLeCkKmqQMWwmMpQqfFTtPcGNnTtgNSsnjRrPpjJCrLlFAaMmfAaVoTJtTjtUHfpJOpRrbbBtPSspmMyWgyWxWtAasxXAbdDTrGgKcIdnNDAiZhHIFfdkEwlLtTlLWUTtueXDIiwWuUpYydDMhiIQZNngsSVGVgnAzZRrzhCcHgMEemaAKOobBzZkJbvxsLxXZzlGdfFFKktFfVvBhHTFfohbjJMykKqQuUwwWWtiIIiqFfGMmwHhWKsTtSkaZzdGgRvVriyMdMmIicCxXTaALlyGpPgyaAPJiIDdYyjtaqtLlTQSwWseEVvfFpYbBjKKkzZgbQiRLWtTBUuHhajJvjjJmdDVvqtwgqQGnNgGbwWKkBFkTHqAaKNnWEpPrRAaeHhTtwWHXjJxPpFnNyebBEHhsMmWwUOoKkuAanDdADdHlMmKNnyLlLiCVvFmfjcaACRrAayYbLKkaPUNxhHCcXnsdyZzIfFPQqpSsihzfFZpPZzxcCSPpxHhXOomMATtTTttAaGgDTypCcmFHhtZzTkKFrRCcffMmXWVvwyPGgTtRxXrHEbBecOksSOroNyqQYdDQqnUrRslLScKkCsSDgkKkMrRmvHLhHiQqBbWwIldUwWCSsoQqfFQrRFxXAUuBbfFaAkLHhYGAauwHXhHqOJjwzJjtTZzHhJjdDwlLEfFeWduUDdZqNdAakKDkmiIfAGgpvVwWzponNBDdbOPHLMZzxXmyOoYrRKPcjJCpgsRrYZzeESspPXxKrfYyFFxJFvVfjybBGUyYjJtYkEwWeEKTtHYyCvKOokQSRSoGhHbxRKTtkwsSWwWBzZZznNbrXpPhHBlopFfFyYrRBvVaATtDjrrRTtRWRBbdDmvWVGYyDWQhHqwEgGfEeFlzvVZOowVvXxWAafdKBCcbUJlLjzZuUFfSJmMjoOkKDdhCvsYyqQQNKkJsSYmMAaADdYyjJPeEaApmCeEogGhHnvmMkKcCmeJjAaBbIeEiEJjtcCVmDqQdSsrRYSrwOoWRKkIihEWwJjWwQJjnNqeDdhOoyYGgHrRvViIbjoOGDnFKkUyIiOChNnOPhHndqQYWwyBbDeKkaPykKCcJfxRgGYyrkKBbRrAaXGgReENntTrFjnpJGgjyYPpPcCRudDUOoVvhbEeBfFPbtTzSsZzEvVeZEePSIzgGZRrvVBbzZeNnzxXtZzsadkloyyIBBbfFxLFkDdKkzZYyKyYucyWwYrRCWwLlUdxKmMkvsScCVocCOYkDdKeEbQxXGqQgerbBPpDdJjbBKkRUuaAyYENpPnBAaSsbECcPMxXzrUsDdNnSNnekKAMuXzZyYGgQWZTpawWeyDdYeELedDsSEmhHMAxXQqoUQqnFzyYZKkQqIiWoLlOlwWLOoLxXlgKtovFxgGcCHaPVOovBbpGgwWPpVJjvcCwVvWQKVSYJrRnNjmkKMJjRrDRrqgGQkkKnVvPKvVgGmBbUuMFfAhHGTtgshboiiIiEeIfFrRImIiMOLldhHXKonNfFOobBKklbDdXaAxGgTtbsMlZlRryYMmLrdDucGgCdHHhhCIilLcEmxSFfgxXGhHctTCllpPCcaAVvzyYaAZWvVwLeEIeygcCBbrREetNnHgkKAajMwWOoJpPIdDIiijgGSYJjuFsSfSQqsUYyHJjjMjJUZpWUuLIiCckwWKGgyelLEqTeMmEtQRruUuUQqzsnjJNSZMaAjJfFcXxCcCmUbBuTwVvWdzYyZvVGgSGqQPbNBbBbTWwYRFkEfIimDdMRpXxfFJoOjPQIMAaOoHhmdDyIhjJHiYQqMYvVyYyVvVvTBbWCcwQIhHzpaHhlLMbBamhHUkKvseMLlaGgAwobcbOotClLcTEXxoONIinBbepPYoaATmMMmVWHzZjJHxXCkKchOZGnrRROVBmmVqpNYyCYfFKuUkyzZSHGvkSsSkKHhbBMaWweEuLjIcOoDIXIWwgGPpYWqQdZTtzdKoiIeEkKOwXiGgkKpPbBMIimFahEeFJjoDdkWwKxXODdnhHQqNfuUeZzJruURrRrNUDdvXxmPpAaMSsSkKqQbbwUcJjYDdwDbxXBdogZzGOWDCkBGgsHqQhZzdzZDqFWwxmJlLLluULlVvJjuBAzGbBgoOCJeERlRrLrjhHqcRXwWUouUDsSdjbBJAsSERrhwWInWqOoLlcCkKQAacCxXJAajbOFYtTyxXrqQRRPpnNlLrfoTeHnTkKCcQCcKkqEdKkkKDouUaHVvhApPxlLFfKnzSsZwmJoOocCOtHCzyYZcHhzBbjTWUucqGgLfpPFQHgNLlnpcCdYyDcCxuUXNnPALlghJRLAavVlrLARdDrRrJgpPGQZXxxXvzZXVWBsjMpPmuwMarsSsWwSOoOuUCTtRLlssrRSUiIuShHMWjJCVOkKJjoLlyFfYkKbBDdNnwWvCciIjBbTtrRJcClLLkKkKbGkYaewoWwtTPpLlCwWcAUuyYxXxAaXlobCoLkdDBbKkQqaAWuUbBwRMjJCpJjuNiInURzmTXbpPBYJjDQqduUyQJjaAsFWvYDdpPNvVPHjJhvCcPnNUysfFajJAiIyYJjJPpOPpjJAgKBaAbevVjJEaXxhlcCLZBOpPMmMMmmfzZTJlHnbMmpPqmMqXxwWQpPQNuCcoOUVvaCuYyfajGgzZaAvejJEyCcYluUeELXdDxPBZyNnYzVuUdDdyYqQVAaHhmMsSGgvCccCiKkIIeyYEiUMmpPlRuUrXajFfJAxaAmjJMfFsYySuxCcpPiIXfzuUIikVvPmbvVwWwmMBigyYeSsNcCnEZdDoOTtaAbBqQDdzOoxggvVGtTbYyhqiIQuUxOyYArYyVvAaVzZVvIixCcVnNSsyqQYVxXJjsSCcygGYYyyJjlLhvVHYykKNnJBbwpPWrRtBaAbTtSxlLXitdMmzUuFjJpPaAZzfMPplLlViIvLZRroboPpOmMBIGgczWwofumMUrZzXxHhRiIhHRUKkIiVvhwWKkmoOweEWpQQqlLcCsBNntZzuRVvqQrUTqXyYlHwhHQqxrRbxXBXWLlZzdDYyTthduKkUiIyhHYwgIhjJmMHoOnvcJjCeEyYDUxAaCcaJjHMmhKkAoOazZQqRnqQtheXxtTWwlIpngLlGPXCQEQUugGqeBVvbwTEeplLQqskOooOnuUvVvsXxuUrCQJjCcMmMZJQcCdBbYyfFqAaQkFScghTtHSsdDVaAvXxPpuUJiKYyhHYaXxTgGyrRQvGguUIgkpPEeFdDfALwWledDEvSNTAajJtbRTttHuAaUmiIZHhNnbBzsJjvVOouAaWsSwzZJVSsIMuUjCcJTcCdtTDsStwWJFfmMXnNAamMUsSbBuxnHZzTthpPHlLyYOotThBbKvVTtBjHhSPpLUASstFfTxxXCcbIiUucvJjVBGgbCRsSsSRSsrrjqUuhWCcwHQFfDdjJtTIWbBwnaDcAcCarRvVsvVCcMmtUugGrXxWwrjPpwWvPpzEQqeBPLlEeVhhHjiIySsPpcCDXIixSsdRaAOyYopPxXXxZzGgTWwtTtrxXbBsSxXZzxQCXOYaiZzEGLljPprRJYybBwWPVvYhCcDdaAWwaZzXlLxmRrMZQUmXxXYIiGVvSseEqsQrRPHCkKqDdkKrPBPpbTKksUuVvoOcyoOxXYSsFEefBbClLXUarEePpHjJujhnNHJUhfWwKtTNOoXDdSeEcJvLlEEeEeFfeGgkKwWwInNioOTOkKotbxKkXIilSsYyOoEHhZzWweMmCJlLEvGFfgzRrZVHOolQVvqlLOXxEedHhDkKZzcCWOiIowZYyEHhcdDmzdwKGemjGgGYYyygJGVVyYYoOwmEGKkqQRrDdDQqInNrRidLLfFboSUuWwsOBKkFfNnXxBblfFYysZzqyYQddDmSeQqRrBbMmEsmMMFHWwhgcCmMzZGfpPDPGlLNnVvgGgpOzZVvzqqPIipQhHQsFfZzZAMLlCgGbBekEeAzZuFfUvOojJGkKbBPazDZuhHJjuUWwrMmgGLIfFiPplodTtDQkgvVkAaKacNVDiIiUuBbolvVLlUuQqAaJjBtTdtDdTnNDXdkKDHzZEefFuCRrXeExnwhHSsCcfSsGgKoOlLpvVvZPpzUTtDNuDIijJRrdDsbBygGYhHsShHcCSAgGapPzZdFGrlLRgByYbCKfJZzjFOKkkKoFMmjJOnNorNRrnRxMijJImowWoSdutGgTUlLDWiIAaqQTtwpGdKcCzPaApZBUubCMMmmcuUfFRrTtLldDVvGIigzZWYyhoJgMwWpcCOijJrYBbyygGRhwWHraAfFQaXfvaAKkcDpSsSzZkKpXRrrFXxEeYyrRWwhHfWKFfQqXxVvxXDvVdmMuUbzZLlNnZYDdvVyzljJCcLzsSuyYcCbBqfxoOWsSwUiIuUMHIxrRTcXxCMRlLbKGqbBBbQgkuGdDgPLlVqeEQmHhMcjJNlrtTRqxwWuUXfQqmMcCFQAaAGgzZxzZXxKkhevVtTXeMETtesShHmEiIxcCeEewVIiGgwFOowWfUoOoOPftTbBhRrpPHFjJkWYJkKxXWwjPXNnhilcJjCrRnNKVvklLKkZzvGgtTXxzhHZVHtTtZzThrzgGCpKkfCcVdNyYUbBXUcgzKkZaAIiAaPuUhHpbFfEekKkKzZIiXxZzyYmMUDgOEeoUYyCgGDkKdklLbBfFZzorRHhrROyYrRpPKTtZzVvtrRTiIIBbswxXleEEhHelwWsSjVvHFxXNoOxXEtTkUuKgGJjMYymiiIIzZEdDdFROorfDSzZsFPZrRztRnNBbrsiAawWIbBykKgmMPIigGDdGXxVyGgkKPpYLQqlosgpPMbhuUGgHBuUHhQqbrBCcbRwWBALlhNnjmEHzFfVvpPZXxdhHaAAazCZTtjJbyYeyUuDdrRhHDdiIYmMrATmMrUnNupPvVFfLFWkKkKSswfMrmNnvVMhHGHQqhvVvtBbWwuUMMmqQiqQBydDgGQqYbjfAaMCcdJjXGgulLNnTttPfFXxpQsSqTYyvKkVeeEdDbaMYWwmJRVvrjiILQNzZLhHlLOQqoaABFfeEYysMEOorDdiFfhoAIPcCpvVlpPIioOmMZjxfNnRrBbkKnNniIQQqlRktTKyYAvTtrRVBbNKkfUuFnaBnbBGmMNnaAJbBjBGTZPpzZlyYLrRjJzCjJjJtTLAabFfBjJlSHhGgsDduChHEecjZXxuUzJbBUvyiIYVSsyQGgWwpPHhqLlyFfYyHhBbIQqBeEbuUGginNcYyCweEPpUyOBblUueEJpPjPpCcFfIicRriISsHksSKKklzfIxrRcCdDZmMbfFBJZztTKkjJfFjsSOowWZCcCWYyKkFfboOqQBweOoZiICczluUuweEWnNEdDZBbzTPpBbtqQcYWwysSUjJucCgVBbvGeHhEoOPpZzkaAYsSCcyKZYElLjJeyBLlQqbzkThHMmGgbVvmMycCuaAuUhRrYfFvVCRAargGHhAwPpPpWmUuSbBsJjTtsSOojJtTqmMiINnVvtOoBbtTEeTMmGFJjQiIqqQUcRrLlrRdDwnNpPlPTnCcOoLmSpPqQsMjQqJlEeCkVJjSswlLoOGnNSfHhleXIihRECcelVvvVoOLilNndDgngGUuNGLqQCSsHYywWhMmcMmxnkKFfNOSsVvoRcCFPpdDfvDdSdDNaAoOzZnZzxWcCtTwWwyYYyyLlVvYtTIikKbdDkKrDfFdDdcCvVZgGrMJhHjdDzWwxXGTaetTEAeEtqQeEUaJjAaAUuCcEJhEgGBbewWFJjfHjJfTpPtnbrsSUlLBmMaAWwbRNnrBlaALOocMxzuUpYPpSsyayYJjBbvaAVAPCchHCIaAGgitiIIiTcVfFbBCcvVvAavVNfFZvLllLgGdeLlBMmWfcIiSsbciItTNnaACZzBsSjJQJHhjqIiCTtFxsSXbBKjJkQqIwWtTiDdHhqQoOWwyYOowehaAVgGnNJOvVoJjIKkigGsSCTeELlTteufwWFnNAarRBbUaAZzQqrRGjvVJqQIieVXxrRaUuzcCZlLSKksSJjIYDyYNndDYxXydiINnyScmMTrRTuqQEEeyYfTtFnNrLnNvJsSjVTtSiIscCiIPplZzbBEeRriBbYyyCwHAhtzZGgTHaXxIOovXxVKkiIrbBRaAidrSsECcekKSLKkYXxTtfFCccCIiCVJNDkKMmdnjvLkWUuCcwKGldOoOznNZReEroVbjJmMeeEyYUuFULlupPlLaJICcCLlcCLlcshHRrQeEqhiitTwmMBbWFfIoOempPMGgNELleSsDdbBnaAiINUyokSsSsRroBbOqQQuUfFuCcqQUagSsGFfQlvVuDsSdPpsSsPRMmrzfKVvjJwWRrVvVIUuYytTTtiJjVcuUGgpPgGVvfFCklLKiIkyYKVzZHhRGJjmMBbXxCJLlmMjlLbqIiQBcXaADIilLTtcxXCsFfYyQqlLMNnHhcTtCVvyYWiIkKbDdOCcGnNrfasuUOoSVvDdxJjAaaAHhXDdzHowWfqQaAFpPhOohHCcuUHNLQVvqImMioxXcCOwWWOWwFfKYfpdDPZzpGrUuRTtmMkzZRKkrarFfAaAPpaaDdAaAKGgxpvVHhPeERwWqRroLlAarRuUryZPuUKxBbprFfRrcMARryYAakKkKRracCGdDmMgFkqQKfWMEwWUueTtjEeRrJTiIHhtMmXxmaqXxiIUMVvMCTtcyQXxqyYPYypZxpPuUXvMmEepnNRnxXwYyQqqQWgyVvTtSFfIcConIiYrRuUyReErldJGmMgMmJjjDLmYHjKZzPpXxCDdcbeEBhPQqLldDpHJjkxXDdJjzmMgxXGdqymEedDuSsUdDUubBMJjyOoAQqMmxXaYLllReEGglLwWrRLVvloYyYIicaNnmMhHAsSXxCjYIgGwfJjxXhYmiIMbAXxeEaBymMXEexUaHhPpoyYqFfyYQODdsqQDdnAaWcCwNgdGgDMJzZhHjmEemLlFfoOTtncCNXlnmMKBlLbkUthHxhHfFSssLlSXwWTGgGWwIiSszlRrnNymMYKkyYLQqoOLiIXxllFfLQdDqHhZGgEeLldDPmMtXxhTtHsSpPoDFfderRyYrcvVjJCxXcjRrUmlLaAyYUuENneEeCHhcYDdcTtCQBqQinNIzoXxOeRZzrEnNjJZgGIrEUZzuSeEsZzeLAalpCcFfOoQqIiPRZzoaARIvdDVYrRkxMmpgGxXeaADdpPhHHalLJyYRreLlEYyjTBbRrQqhHtHijJJjpOoFfVQqvJexXEjPPpbhHBWVvwbcCeEBtTICcUIiIioOuhuGbBBbgCcFfzZUHSEeIivPVvMhaAfYyRrMVvoPpGsSgvDdZzjwWVqQOkxXZmEeMaAFfvVvVzysaAgwBbWoOQTDdyrQqRnNZDGgEhHedPhtTHwBbVBbvxXWpcDdBbmmMRGXSGgBbIiGBTDZjJzdthKkHOvVvvMaApkKPkKwWIIiidDoOQdDqDaAyYUuWwcClupPJjWwJjXqQxNdDnkgGYyKiSspPMmQoObBqNnAhHjJNcCXHhYyrSnNsjJDyYdjHLlXoOIQqiXxuUxYyHCHhgGEfFVrQqJjjJfIzZLqQlicCTDdtTtFFfnSLlgGKyYksLlSjGgJshQqHhTAnNauUALlIBbiRrstTQXnNxadDAdDHhlCcCIHhOmMoOaxXAmkKseESnNMmRrRKPpQzZqkrZzMFDdyYfVvbqQBdsSIiJjSsNnPpeEGUuMlZzKSswWkJRrzsSbBZlLBbaAkKleEifGVvgFFfIHKkPpaAhtTtTyavTcCNnDdtVaAdDgGqQDSslzZLFfdDgGdbcCFyYvVfhctTttTLlZzbBJSsjNnOoIGyYgHiIhjIbEenNaWMmwmdoOqrRFHFfhfBjysSYynNRkKcCiIcCjdDJSsjJejJEDdlrRaAbBDePpETtOoZUuIlLiJNnUujNCcJjSLPpLltTQyYsSQmMqsSsSCOoyJjKknNuUhHlicCIOqQNQInxBeAaQqEJjpPuUbXFbBXxAakKIiVOvVoDdvNtcCTYybSsBnikKhHcCyYIiiIIiIyHhjJcMoOrRmryYaARhRrBbKjJbBkVvQqRrHcCYyZxXrRBbzZbBkObBvVcCVOoKktTdVvTtgGHhmQqMDkaOojBbJLlNnNnAIoEecCHyYoCAacUuWwAaFfOvQqeEKkKKMPFHhfXxpQqvVxXunNzZUROKJjkoWwAarmnNAlFfhHBbiIjJFtTsAaZzjDdaAloOLdFfpDuUNnyYdIiLlviIKkZzVcFfCPpkkqJVvhHmiIaAqQSQqsnNYyRLXxllcClLFfLrZzlilLnWwYyNyIiWsSdrRDcdDCSsGgSswWlLbBrpPVvPoMmOAaiJjIHQqnNpyBbtvVDdlLTYHhgGCWvVHhDdHhiVvEzZeeEIoOnQlFfLqeEBbQqNqQYyhsSHrRiIrwWRaAhHtTntNnTOXSsrRxoJDGGgNntTznNZgHHhhsSPpVJjvdkrqQyYnNRXhHhHexXnJjnNNNnfFNnExgOoakKuFfKkGgmMWDdwKoOzNaAmqQMCnNnNswFfWOoaxagTtLlGAXAdpPIikvVKkSVLlvCaAcwWHZWwwWdogGiWAxGgzZqyYQXGgpIiXBbxdDPqQRxXrzFfOqQoGHhQGggGJDuuUnwWNUZWwcCeEqubBUlqYyhDdHhHJjaAcuUCUtuIidzZeEDnkEeKraAkNnKsSRcmOoMGgCAKbBcCHhkuUCqQTwWtrzZRFfFfNfFcChzZHDqQKkpPAVvIikKfFaYkKhRrHcPpjJCgkOoNneEtTvVKGQqyYkcBbEjJvVqQDdziIAhHaZpPnNLlksSNqyYhHFfvVQncCSsiIKktTuaATsStsSlkKLOqQodDIiYyOFzZCcrVvRLlfmMBbxXYUuyvBbQAgGSsQqadgGgGtTWweEDfFGgqfEeCcFZPpzaiIPpDVvLywLlWYlMmUBbuVvHzZhdLlYCctTtTTtTtOoYyAqDMmgGXHAahhHEkKeRrRrxNnmMPxXpiIdDFfkHhKZzyYrXsSBPpbxoOzZfFictBbArRaSsEcCeVvohHCcOfFYbBRrhHPJjqQpPSspRryWSdDsLlRrkKrRGgfFLOoliIEeEeHWwGytTrZfFzirSsoORIRtTKkaecvxnWnNHxXYsSyNjPpYyJnnNQeSsEqZYyzNNZWwzItTHQqhiIiEenmMAayuUNkKtgGTnCBbcdjJfFDjJgaXxdDwWAMqQaASscsSCAVvaDdbBLKRrklAakGgHqeaAjxXcCtiITvVeEJFXxfItgGsSTYyyfFYCcCcxnNPpXpPVvmAaMKtTimMHhIfBfFBbyYKzZryYGgavVRrKkRLYyllLvJjVpSgeEGsGgBbSsPhHmMHhxhHXbBQqrXxCiUUYyuuIIiRrcZgGqQVsSvJjXHhMmUuMyXxgGtTYEemUgGuuuUzZbBUXDyYlWmMwNHhnzZLOEeOoMmBVKkvbvVoYdDGHhtTmMgGpAaYyHdpPDhPBTtbalEhHeLCyYcAoOZzNZzWwhHDdjJStaPpATsoOlLoOcLlCuHhcCWLVQqvWwlwvVDdXAaMmxiIVvUOpaDLldUuuWwhHYykKIitQqGgbNjSsCcJnBiIwhHWuUtTmiIMTUYyWwqdOoDTtlFfwaApHwWrRYpPEeaAXAfyYFaqQfUxRrewWvVlwWVvSDdwWsWwviISUuVvjmPpvMmVSsQqMqQCcbFfRrBQSsqkgGpPKqDCLlcCrRKkcgyYGweERiIlLrzKkwQqAaWZeTtEWbcMmCBJTtdDawWAmAaZyjJYzTdDWwmMtTpdBkKbDPvVWwJFTtfjhTtHxXsSzryYxKkXRwWZSsJlLjZrRQhHLlqzJjteEIKcCkNvVnYyLlZoOzNnuUarynNbBNyNnYnYgGRAJZzqrRbBQjJymkKMhkKZzHirRjJYyaASswWXxJjHilvJjVLIdOoDhwcmwWIiMCxCcmMxXXDdkKwWoBiIbOhHvVYxXSsVvcKkCKHOoOohkwWIiyVvYnSstTIEeiqQHQXbBxMmgvVGvaATtOowWVIpPiNIiywWLlJjVvsYyMRDdvVIMmiCcdDlSsLxXqQfFGgQcCjoFfAaOrRdDwvgGqQfFMmiuUIYyMmMrOUAauoRhHmFfRrrRyFxXZszCcDdDdZKkSujJUyYrRPXxFllgaAGLLdbBDlLLldDjNrRwWxXuwxGAagXBNnAabcCBbLlFfDdGJjwWgeuUGmMJjgqabBfFkKLlliILAaStTUTtnVvxuUXNkKwWuFfssSRrWnYmMyZzsSgGpPObBWwegpPbBGwSJjwWvVsQYbByjJqVxJjXnNxXIiFSsfOooOWweEmMMCcGgOomNDsSdvwWVOoqQazZpPAXPpxqmzZJdMmDjCEAaePpYyVvcCJHhjcMbBJjVvBbBEebOfFEeSsnNHnNGglBbKkLKkIiQRrVvRzMWBbOGgoHhjJVvQcPpAauUQJjqdtTHhLlKUuIiwJjTtoOWnMnNmHhUuAaMmDdbpWwMNnmPOoVJrLlRBsSSkKsyMmziIZYcCdzZcCDZyYzbgMmIiBbrvViiIFfIorRlLORCmMcGfPptxXTwqQWFOoVeEvriIyYRFfoOFflnNdbBBbWKkwCcpPQqEeBbxEeaGgACcXhHIiMbBmRkKrGHOohgUJjHLbBHhRrlBbLlqQhrRjJEDdLRmqQYxXoOydDQqimMIBbMiIduebBOvVozZXxEUfeEFiSsIVvjGeEXbBxLlYygJDHhiPpIZzqebEeBuUWwqhJcCjnNHAaLUuHSsdDhvVQSsqofFOpPUutTSKksHUuhaPpsSbBGgmqQMWwAojJOdDjJtXlGgLIDdkYyRrLlaSsWwAKEeLFfFfliIWgGwDdukKUXxtlLTWZzgrEeVNnPpsRLlrScCvIiMmLlfFiZzIvVRGiQWwhHqMmMcCkKmISseETVvtclLCKkUWwuIiIcCYyFfldgGhwWHxCcXcOoBbCXxDZMmlLioOdDKbBkIWwtmMDdTVNnXxXxvzvQqwMmVvpPbBvVNWwnaAnNaARrNnAHcChEeahmMOoYySsCcDdhHHmJfFjrRswvVxXNnBbtTIrRiWyYfljJWwLbBzwLZzYyTtDdlKkoOcYyCiInNKkGgvOpPoVBxXAuUaXQqvVZzPUupjJYfFyXxNnRriIoyUuqQmZFfzMktTKiIJjRrKkcCkKRrtTnMKkiImnWwNmMIKkmMKkicNiIcdDUuioyYOJnpIiPNdAaDSiIKgnNGGgQqKkdfDdyYbBFBuUVvIibEejJOoOodDdcCLlDHHhhhNnHsqQSCcIiPpMxXmMmsgnNGbGsSgzZOoXxjJwWhfFHtGgTZzBbAHhDdaBZGUugzPphHMmkKtTmJjMuTCctUGgTtNAanIpNiDdCcInPIoOiyYgGicCSOXnNGgoOxoDdkKQqAhHatiImFffnNFkYyKMEdFfDexwtToOUuWNXxhHnXHhtTGEJjrRegTDFfXxTvVtYfStTTtsKkVvDgGsSdjNnJeEQqFNzZnKkkKOobLlBrSsRoOHhXxiIQtTunNOoUqZzOXxoRrjJePpdaADHvVaAhGgjJqQppZzPgGPdnNDeRrBbpbBPYVvAaRrXEexytTECeEcMCcnjsSOoJFfGgDdTtdDIKoOkvVimgJjKkGbrRyYRrVQAaqobjJBOvNnwhHWVfxXWwFFWwGsSFfoOZzmDdmMMjNqQOonZzeSLKkrKbBkDdREeGgEiIIiRrLlfFgGlLYynMmNHheAaRGtTgQgGqBbzZwWrLvVLlTyYtBjJAabILeEeElrNnYNfcCFHhAanijJxXxXIuRrUiIREJjPpefFhMmaAUuGgHrpPUuUYyhPfFcCaApHcJjvJjVCuyRiHeEtfFTSDdpPsrRxXhIhHQtTqyYyYnDlLdNKDdmMkMNnmhvVpgGLlAaPqgGcCCCccWwQfaAMtTmuUFpxXPgGHpVvPUulvVbBLSCciISsNVjdFfDYyJFfvaALrRIiFfluUjJxXTuUtnAwWoTIJXxkKCcjWwFfRlLriqQNntmMeEaRCpxXPcFfmMrADdOoDdOhHvVhsSHadDsKXYyxZzoOXQqdDOcCoKkxMMeEBbwCcFfDzZdWmyYRdDqQdMmDEermzlLcaACeEZBYybUWwyYufFHhbNPpnOojBbVvkOoyYKJktXxhsSJjLlIieexXEEEeHZzZKkSvVwWYyvlLVJjWsSwtTDdspPRyDTtdYFftPjJpRrfuLtTAalUFKGgkuUufFUkKLlqQEeZIizTrarRsTtnbBdjJDgGNxkPpnNKXxXSyYrRVvAwWQqNndDvVzmMZFFiIdDrRmcCMSsxXqQBuUbfMmWkKwfyYSZIizsBHhbKkeJjEpPLlOolIilLLOoUujAaGyYoOgJPpSzZpyYPpPZzuUsiMHhmzZITfFvVKkMmpPmVvMqQRrtTlLIiqgsSfFGdjnNJwrRWQKLlrRkHhqDHhbBEeQuMmUCcbJCcjBIyYaAGgihHCcYyITtGgikkSQqsKYyKYWwSsylwWLqQLlIqQibBMmWwYdItTGgiDZOoGgzHiInXxgGNhyczGgvVZeOoEGqAaQtTgZDRrdzkKCexXEXmIiMQqxXVvhBZzbHwWbBdDAyYacCSEFfwSshHWxXPpRrPpNnGgeheEIiXxSsNnDdHNnVQjJqJjvUuVCDddqQDHTtTtWwpPhvVOocrRYyBbLlGgFBbVvXxKZzkoOfMCcztTZBRCcGgRmMfFqUuQqoOQrrRdDrglLGvVFPvVpMDdeuUPKkdDpwtTLMmlWNAaRrnWwnNjJtTXxeJjEUXxuyYsSqQjcCNnJJjKkCRrLlcESsWwJgwWGtTloGgORrpPLGgjekFfKERrwWWirRIwDIidrSsReElrROHhoPpnNFIRFfruUqzZQFfEvVeAafoOGmMrRGggsSzebBgPwWpGaAuHhxXUuUQqEZAJEejCcaAWwqQrAaRdDaNOonoZdjJaAMmDmkKMNnaJjAbBpJaAjPwGyYgWJoOjIiXkKLlxXClLLlcUPpuUuhHwWqrRQxzrjJlLRgGZOMFfdDdDXxxXmoBbOsuIzZiUShHHhjWwYVDdvyJEeYyYLluUyfqQQqFMmMmuetTEUQkKqlvVLYytToWwhHwWCXxczjAgWdDwGxXaJQPpqOoQqFZzfEexguUGcNnBbCmBboOFfMfFhRrHhHuwWbBvVUfFqQGgFfdDZyQqQZzqYzPrRIiNnZzPDdEVHhvgGepEeeELiIlhLlHFUyYCcuEefEeMMmNnnuPWwpwWUNHZzhmGgpL \ No newline at end of file diff --git a/aoc-5/main.js b/aoc-5/main.js new file mode 100644 index 0000000..2835171 --- /dev/null +++ b/aoc-5/main.js @@ -0,0 +1,36 @@ +let fs = require("fs"); + +let input = fs.readFileSync("inputs.txt", "utf8").split(''); + +function swapCase(c) { + return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase(); +} + +function collapsePolymer(polymer) { + for (let i = 0; i < polymer.length; i++) { + let c = polymer[i]; + + if (i !== polymer.length - 1 && c === swapCase(polymer[i + 1])) { + polymer.splice(i, 2); + i = Math.max(-1, i - 2); + } + } + + return polymer.length; +} + + +let shortest = Math.min(... + 'abcdefghijklmnopqrstuvwxyz' + .split('') + .map( + x => collapsePolymer( + input.filter( + y => y.toUpperCase() !== x.toUpperCase() + ) + ) + ) +); + +console.log(`[Part 1] Polymer length: ${ collapsePolymer(input) }`); +console.log(`[Part 2] Shortest polymer length: ${ shortest }`);