commit c108f8a29248b999ef96781a30d949bfc03853d8 parent a05342880ddd0cf37b114081e0ac1069329b401c Author: mpizzzle <michael.770211@gmail.com> Date: Sun, 9 Dec 2018 17:05:14 +0000 puzzle5 complete Diffstat:
| A | 2018/files/puzzle5.txt | | | 1 | + |
| M | 2018/puzzle4.py | | | 1 | - |
| A | 2018/puzzle5.py | | | 36 | ++++++++++++++++++++++++++++++++++++ |
3 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/2018/files/puzzle5.txt b/2018/files/puzzle5.txt @@ -0,0 +1 @@ +tvVcCtTEedPpvVDaAtfbBxiIXFMnNEPpeiInAaNjFiIrRfLMmiIlJAamPpVviIcPpaACHKkhcvNnVhXxtTsSTtbBHUvmMVuUAakKhHyQqYuayYAaAYWwbBKkyuUCTdDgSsbBIwWikKZzOdDiQqeEbmMBIogvhHvVqUuQTyYtVBbeEvVjqQEeJGkKRrHqacCAtTYcCKkyQQqhoOCGgWwMsSjrRJvvVbBwWLlNnVZzZzmjJKPpkbBciIHhwWhHeBUubyDdYHhRfFASsAaJPpbBjiIarESsGcCLlEQqqryYRnNQQqIiTtvVrXbBMmdDxRsKkeEfoOFwWdDaEeLlAbBSnHhIkKidaAaAciICDTtNoOgRrGRAaDdrEfFcCushHJjxXhSsBcCbTtMNncCmXxxAaMNnvSsBbVmSXrRxBGgbsUuZyFfFfYNnzSaAqQJVvjIRrieESsEeTZMmzTAxXaTmMttNnuUhHzZtDuUdnNsXxJjwoOWCcFfeiSsoOIEzZbBxQqjJoDduUqQOgGWwIiIMmCcFvVfiVBbLXxlabBAvaAHhXUuXSsxrRVbBcCvaAhQqHVdLlHhDnNvtTsDdJjnlLVvtdDTAHhaNOofGqQkKgmTtyYMfFFfxTtBLlFLvVlSsbBfLlLWEewvVvgGVjFfHhJllLKkbvQqzZmtTjWwJMVXxfFXAiIaFwWBbuvVUNnSGbBgGWwgKtfFTwOtTyYouUjJWRraAMmqQMmfiIFpPyDdYZzjzZJpsSPauUxXAcCMmQqlLkYKkpPAaEekKSogGOsyUezZEueoOCcEaAbLlsSdHhDSKkslLeoOEVvhHBNnRNnrHPphncCXxtJjLqQlTdzZDNRrqxXQrEeZzZzDdVvwgGCcWEeHDdvFfUuVhJRrVvdDdDjzbBcCZCcoONJTtPpjgGlLyYuUmkKMOATtsSaovVnjJnNaAnNrRPYyCcpdDjTtdpPgGhzZHDnNNEenAbBamoOquUIiEqQYyBbYylLeTtnNQMNYQquxgGXULlyBbEeYyYynzFfZUmTteEPAplLPlLWwapiIsWJjGgEeJHNnhNKgvVGknjlcCFfLoOaAZHhzwgSswWKkGucCUSpPvyYdYZzyjJxYyXsSVvbBDjJiCcIgGMmlLvVgRrGhuUFfdSUusZzPpDHPpyYJAjJafFjjstTGgdDTtSYwWwWbRrBcyVdDvfFzZrTtRXfFxQPpqNnQqBblqQLquPpBbUvFRrfFfVnbBNQgZzaACOOzxXZoobBGgHhkKsScqrRQGceECAagTtIgGzZiidATtaXxsSWjhHJwxXzZDmMPprqQUuRIBWwWoObBMmqQwbyYeEHhaACcPtTeEpYytKkTYyGLgqQGgOBbEeocCGcvVlNnLhXxjJHClhmMLlHbBZzkUuAaKrRkKRbutThdDHZzUmMBCcMmrFWwPmMpfWgvNnVGUuAagGzZIizZggHhGyYPpOiIrRIiGBbgAaBOobRcCroEemMHIiNntTtzgGvVAjJKkZzcCXBbfRrFAXxaxGghyYHDhHbTtAuUKkaBdWwCcpGgwWeEPldxtTXDdpPDLUuEFfezcCZQqcCjfbBFJgGFTtBbftXxAPpaQXXxCcuURrxuUZAazQqMmnNQQDdqwWvVqfFYycCZzqMAamAaTzZoIixXOiILmMLIkKwWxXiIiMwQUuqWOoSsSspPxXvVbgGBJjmdVVvvDfFGZLsQqSfFlzxXNncCBCcYybTtoEemMKkOoOvVqQkKgjJMRrkKqQoZzOHUkKSsCxXLlcuoNcCnYyUulZlpPmMLeEmMzBbiIPpkyYKrRtKkvVTkKgGzZKubngGNBsSUBoOIMmibkCcZaXxAUuSeEszPIEeiOoGgDdCcVFfdkKDAaaAfFFfhHBKkbIqQaABAabmofFOMyYfFrRxaAXNnQxXqaAimWwMwWxNnWwXvbyYHhBQqnNjrRJiIcCJrlLREUJjuJjeqQmMHgGhzfFoOSsOoQmRrMqKksrRSaANnpPrROdDxbBPWwpXSNnsrcCRrFfRlLNnXxijmtTtTcCSszwWZzoOZMXqQxSsODrRdXxpgGeEPowGgpPiIWgGZztcCDdTJITPwWdoODVnNvpROoyYrQZATtazyYvCcVHhqxAaXeEPpvIiCqQcNnJwWFfZzuUoNndDOedDEgsSGeryYJKkpPxDdXRNnWwrFFffGuAaUmiqQIIiLlbbBQuUqBAaMcBbAalLLlCDdYyEeOZzhHnNiIiodDaArRCcNnqQOLLleaAXxEDdYylPpSsoFzZLlFXxYEtTeYfFyyBbIvVikOoxXKaAdFULlufDLMmdDlBbfXxeDLlOodZzaAaAHhEAaFfoOWwFfPpnNrZjJzqQRmiZzgGABYybaYmMcPpfFjtTjPpJJdYyDdKkUuDprRyybBYYkKeEvVoOLaAlPoOmMIiGgOoiImMdDqfFfCcFRrhOvLXxltzPvVpQoOaANqwWcCGeEgOoQnHhgGEvVeZjJnNzhHHbBXPpxiIQqRxxcCXXnNrhcpPCHhQqrRquUAaKkYpVvoOhHAvuUVFfuUaxXlLJjYBbEewDdLlAkKEeGgaKkWOkKMZPpzmqQAGgaEUuaAKfVvVvrRFtTSskKTtGgYYyySgxXGUuAastTkUTtufFHbPpQqBhihHtTBTtDdbalLAJjGgLlpBbPrtTRlnNGrRgRXxrBbiLlPpImCcMhBbHLfrbBYyhAaGSsUuADRqVRuUrSszZvMmQOorOodaApnNPamMtTLKkdDTtzZFeElaAVvLXcIiCxlRrQqKkjYnXxNtTtTVaAvWwzZyfFXyYxiIJIiwWLpPKeEnNdRrDxdDXOfaAFqQFfrRwWJjKeEGgkkKZzOodvVTtTtgGDAXxeEhAauUHaFQAaqfoOKkXdDxdPnYyNpRrKkuMmUKUukeVvfFkKEYbBQqxXyuUhHHhdNnAaCckKMiImUudDDsvVSewWiIyOoYEfFyYDQqQqxXuQqAaGQqgORwWrlplLqQPLpBbLlrRpMmPkMhHmIiKuqQUIPpiCcCbBcPJfujJUFEeoOjqduUdOoSsDPGgpmzZyemMEYcCzxJjXZdDGgBxXjwWJeDdEUBbuNlLbhHBvVjWwJnXxSDeEdsnNcCFfjJbyrjvVJOoRTLIilvvVEeYynNlLPCcfFMOpPozZmpeEVvyBoOVGgvArRHhIiabeSRrnJsSjRXlLxHYNnyDTtBbdeEcChyXxkCcKixDdNnQqxWwJjXXWpYymMPsbvVBSslLSwIkFfieERfFefFsSToOtENfFnkvVKQqrQtLxXMmriIaVTthwQqYyWHvjJzZTtAUuRvUmMupGgPGgVlxXJjTxXEsSVvvNLlWwUJjlCQqjJcLmMjJmQqmMtPpTAOotPVveEpVHhvAnNJMyYmuUjSsjuUBbuUZjJzKRrbBkJOVvkKosmMSLlwdDcCkKZzFfgTtqyYzZwWQqQkKWPkKNnpdDFfDAahqQHdatqQjJjGgJTAzZCcRDdrcCIidoOxXDFPbBpNKEeXxwWxXDdDdoOVvfYybIiyYpmyYEXUVvsSfFrRgGuxlLBOobrMmRMmcCekZenNEzKzZaAbBgGiOnNoVvIoOhHFfKkgGZkmmMMQqWVvyRrYAazxXzkKZTtsgQqQqPtTpGcRFeAaEdDfrEebcCmgGMGgMmBUukcGgfEnNLHhllysSYSQqPrRpgGtTADdQyYsSYylLsQUuqRpPrNPpOmMKQmtIDdiTMqkxXxpPXAaAaoofFOmMNpPllLLHTtSVvhHliIOoLEeuHhUVvxLjJMmmfWLllfFFfLMiImwkFfKcWwCTuUEetLlfpPeEUTdBbfFDtVvIinCcNEnNeugUuDYyHhdBblzxoOXxXBbxXNnTtZoJjOTAatLmMqKeEkfFTtFcXxCuUfRIXxiaAWwPprTqQseQqDdESGWwvVgRrmMlLZznIiOojJNFfnNeEvWwBbwWLMmUulVySsZzNnErZKuUkzvVRehHzwWzZzZrRZYptQJjqZdDbImMOQHhYyYyqzaWwAZSsoOohHzZiZoOzTtBLOoJjlzQqbBBREeDdpPdRMgGmBbBbnNuUKkrMmQqvVDQoOqUCyYcFfvVUuYyuLbBPdDpCeEcEeudDjfFlLZzvVOosSJwyYwWbBGoOgQqsScCWxwMSzZeEYGdDgUuyMmAamMajJABtTbsAaSzXxZsVRDdrknEerOoUucCJjMmtTPiIiIMJRiKkIrxgGFfXtOlkxXGgKaAfFrRBbyYeEhHMmvVBboaAZzBbODyDdYdUuUFfrGgjfFXpPXxTisSIzuUWwZAZztTdBlSqQtTHhsbBdDcClWwiYcCyInNaAoOLxFfwNAaOonTrRtGekKDdEWYywkBbKQSzZlLyYsfbBFSsEiIkJjKKdDknNJjJjVQCbzZBcinNeEIKZyYRfFGFAafsbBIUuireeQqBbEOoInNwWAaUuTthHiSsSDdsrRnTtNLhHaAiIfFpviIrRtQqKklgGLTmMhHQgVvGqrRolkEeFfKWEpqQPesSwXBfFsSKCctTPpjJrRkUuPpJjtTlDqQqcCQdLlLiKHhjJMyAaYTtTWRrwhHtWwGmeEMdDZRrWxXwgGCclqQLzNZSszOoAllLLGgadDDdTrRtncCPcCpjLlJzZFfqQqQxnNXJjMWBbwZzmIiebsSRIirLlUuhlLHLrRZzlNnjJuPpUWLlLTtyYhHZojoEeOlEeffFjrBbYydDcCuUAacCHbBhxaAeXxEBbXKeEPFIBzLlZrCcbBRXxirlEBbeLrRPpReEIKkKHhGNngiIkMNTtSpOoPTMIibBAasCeJWwcCiIjUuMjJSsTtmKlLAakyOZBbKkwWzAKZzVGgfklLTpPtKxPqXxcCGgIiLlQqmMYyoOvVhHomMOvuUVQgbBGUuYmMyrWwkPpKHhRiIRCEeGgOPpoTtPkBbKaAFvVfpvSeEsSeEpPstIiTVwkDdkoHbBQqMmhOYyHPpGldDFfDnNdgGpPLgZzhdDiCcIKUuDTjMmJozZfFfFpqQdDhHfFSsxXpMmPLlCTzZtuiFfGxXguUgotTOGXxiKkIIkAaTtBbcCtcYMEeiIzhiOHhoPYVvieEIMmypIRrTfFUjJXoOxmsSMHstTUuShTtiIGglLfFHzZgGzZcmmxBCcfFNnyYBbJsSBbuUNnrzZRjbQMmaAcCbnNAaBmOokKNWwrZzmjJIiIiMgiIhgUuGSpSHhYysPsFfnmnNhHBEeeEYykKQqgGKkbssSZrfpPfdAasSDFtTXxzeEHHwWhhZeEEexXYypNnPYoYyOyrRIibHhhHBtTLjJObBoUuogGOvVlPpEwWMmGuIiUIuUHhiEezZjJfFjJMmgkKZujJvVUzyYkKFfePVFfMmFhZNnxXvKkGgLbBlQGghHyYqZzPtCvVfaIiXxiIBbUXxuNTtgmMhHrxXnCcoONRkKkAaPprRKGDdcWmyuhHUYCtTKzwWEeZYySsBqQzZERryGgYBbHhyWwdDcCXuUPpxAalLZzYSsmeEMyYoOtTTyYtiIZmMmMgIKxXEedDAEvQqVKkmGgMnNTKkwWhHavVGgWIlSmMdDsSsuUVWDcyYCdhhHHnlLQFfcCIRriRrTfFtEeDdErRegjeEhNnHMUuZzmJuUWwGAHhaaArbBmMMmZzbBNnRgGqQzsUueESZNZzntTpPQnNapvVVFfRrMZzaAoFfliIMxXmCcyYvVuPhSsHbgGBlMpPmfHhkKFLxXIiQqUuVDdWlvVLwjcSsWwvVOfFoLlCAPVFfvpPfFjJOopqQRraQqvKKkzXxZaAUukkKbtTvVzqjJQHkKaVYfTtVVvyYvZzdaADFwIgGioOWyvsLFGgMbkKBeEjJGgmfiPpmOoMXxZzIVvlkZzZugGavVFCqQUMmucfFfyHhtTzZTPDdNAMmHhcyYCanBdDsSFtmMTRLlRSdvVLzZleEzZBLdDNAanlQJjykKcVoOvCDLldlOZztTFisSIuUDdcBRrKxXeJjWjttsnNUuxIDpuUrrzZIWdsSDErRxXoOjMZzFIdyYBDZzdoORrZzAaGgjhgGRaArZzEeXAhaAHZzYUuQqysxTCcMYuUYhXxHMStzZJjRrSsTHtTVvawIRVvroGgOhIyiEenNIMmosSAaOkKflWwXxAaiAaHhyYyYoOqyYQXxIbkcTtCuZzqQtTxXSbBwWsjYydOZzRrAQqkKaTtKdDbxXlLBkseEYySokKDorRvxXVqQnNwWOJtXxtiIaAVvOrlLRosAameVvvVEfFVvNjJngGsSMNnuUgGlOQsanVvMmNHhAkKScClLfFOofFjJzZwsSqQWqDdihvXlLxNhHnEMmfHhTLKkAaljnNJVvYWwytFcCMnwEeWfRjgGdDcOoqMPDdKkptTmlLQhpPRJjeEKcCsSkGIiVvnKpNQCcCcqdDLlnuKkUuaAeEshHSUGmMcCkKLVvzZluUpPgGgzZktTMmUlzZLaWwpPaAkmJjQqiKhQqAaRrVYvnNZzKkVqNnNxXxBbSsXiWVyYvwWAavJjBbrRVwHsSjJCOorRLlwWOcCocmVvHhsLlBbSFfuCcbaNnAFSsJYyPZlwWieEwWgxSsXGQLlQPpRrvtTrbBRvlLOCcYKkEeyozZYyfFqQHhPpaGWHtThXFZzfxwkyYyYPfFDdzgGGgRyYrlLaAZZzXmMxGgpEIOoixgGXGggGEeMmeUuYyIiLlVhHvrRFrlLRuUHTAPpYyatamMYygGSslLxlLwWhHTtCVvcAaHXxhBbcnNsShHNnJXxNmmnqQLltOntWwTxXxXmdzZzZpPWwDuUZVvIwWiTlLfrRFtOiIizsSPpbjJBYgiIGyiYyMmUFfeEZmOWwhvroORVHZzCIikKZztTcwbBbljJLBUuhATtaGTtcCgOTYytoRrFftFfTpuUcCzvqQQPcCFfAapqVHIafVvyYjJFsJxUuXLlmMSspbGgxoOXiCcfFjuUtyYThqNnQTtEeFfBbykqQpZdDzXxcCSsSonNYykKQfFIzQqTPptzZzRraTtqQUuIiYyVvASZbBVvzdsSbXxBborDZzMBbrkKRGmeEMgLQqluaAUGgRrVIivVvmpPdWwYyfFMmAawYydDtzYyUuBbHuLWwTuUZpPcTfsOovOFfoVcCPpNRrPPaALgGllLpbBoFYvSsVyfMmOSsaKmMkAqFVvNnpMqrRSsKkyYQvTHhCcAaIirRvhHVcCsbBzIXxieNngUuGEPjJpPppiJjInNeEdDbBHhPqRrolLDdlLMmScsMaAmWwSBqAasqHhQpRnmIZuUzSNnGgoOHmsSMXxgpFbBftTUuRriDdtTKkgsSGIyWwYPXxSsGhROWwoUurVvKkmMtiIqQTYynNVDdlZzLNnvKIioOknLlIWwXxeErRwWiHCdnDdbBNWrRFfcvYcCEIiepDdQjJzZVydDYbZFjDdtcVAwYyBbEeWhHkKpPCeEcacCgGfFLlvpPoOCQqTyBbDdFfQuDQqdIiUkhHKuVvUJkvVZzEeWjJwgGBFfaNnJjIFfuMmJjWwXxQNnqUWDduUqQwXauUUuOXxtdwWDnNTPpMmcjJUlLuAXxaeBbECTvVFfVPpfFXxGgBIiNnjJvVVlLvUKkTtudDhHPpXdkKCwCDCcEeEcAajJCKkefeEFQqfAHOohciIxXMScUjrRJurSCQQqwWPnNpQLlqSsqTtcZzsFtTMQRrTtvGuJjvVnRFfrUurbtTwNnYyWBbBRrBqQkxXqQdDKnNGgGtrRFfTPpjJJjMcCUDdVFguUAaSRkMmKttTCcTIhHOoioTtgGnNcChHOiQvnNVqIWbBBYyepsSRbsSvVMMmXsBbEeQPkKpdDqOoPInnNfFNiWTtEWwFKkfyYuToOFfwWZWaiIAbwWBJvjHXQqIixhJjMGzZgZCcEemMpPGgbKkBzsSGEetTsSgcIDdiLlQrHhgGhvVlmMLadlLDApPHJjxIiBbuUKqQQoeEvNnVOXMCEecMmmMXxmxXxoTiAaInZzNnIiTlLZEezRwhxXcCHQbBYyNBxXlLUubnNiIkRcCRrdDHhJjYjJyJjtTnpPqBbRrrRCcyLdIUBBbxXOzZobWwCoMURXxryYPpjJyYumCcEeIlLUCLlwWMmPTtjJJjcbORpPTuUjiIJrRyYtMMvmMkKNnVKkmlnFfEetTNlLnDdOsTtSoNAanITtidDNrREeyesSEwliPptPsNnYySKkpTvVWKoOHhtTFfkKkwWwWwDNGTtgeVuUwvVWryKbIiBXxGgMmhHaVqPpRrQvpBvVWRrJrcCLCclRaAQdDqGkCGgcKwWVvySsYTtAcCaKkkKQFfIEevNQqrRKknGgVHSVXCSsAIisStMmKkToOabBftTeEPPpfFLljJbBrAcCVvtTaRDQqsFfYEeTzzgGZUulLTtpEwWNVvnDDSsaAbBuULldUuDRGgriIObNnBVvtIiTdDdtTiSYysiVrRvMmImMHhtTuSByYbwWsUGDdsSmqQFOofMNnRrgdJjDcCfFIiIoOsMmnSgGUuuUsboJjlLBbEezRrlLZBbjJzwWwfFWZivlLVPBFfbnNhzPQFfvVYyhHKIcaACiCEGgoOebBVvXZgyhHYGHhzoOZzyYktTJjXxZUusSdDzZqQUubBiIHhqQRTtTtXxrZuOoZzkKwOjJosGgRTIiQMADMTVDdStTZKkzsvnNcCyxXIibEMmeEeotLUVvOPpdoKYyjvVbsGpPgQqNnVpbDbiMsWmMwgGSRVvrPnNptTZzLGgYylZzzsSZdDbRzZrfcCFVETcCbBpEePWRrYtTrRypPbBCIibxXvVEezCcfXmMxTtuUsEeuUZFfWpPCwWcfFwzSEeaALloOoOFZQqBRrZYyluTtjJULnNfFUyDdXUsTpNUunUuKlJjLkORrxxXWupPAaUufFULdDTfFeEDdaAXTtEsFfxcCwagZzGbShHnNtTsOfFQmMHYsSIiyfjJFDdhKkeaAEjUuJIeECcucCDdcNxXjJxVvkNmMnKUuLlLDdjMmveEVdDrRSsnNoHhvVoOGkDdnNQqXuYsSiIfFyUnNEepNQzchHiIbBSsBbYIaAioKRrkOyFfFCXpPbjJZztFfThaAZznNDdBQDiIdqbHMmecPoOpOoCjJoOLlcCEuUaiwQqWSWBXiIxbXxwsHRrTtjCcuTOotvhHRrrvmMElLewWYiIylLRrDIHhFfiwTtUugvVOoHUbaAFjZcCIWZzFfwWimMNnNnbBMsbBrRljJYyxIWhHLJBbUujVzOojJLbBAuUaBbUuIrzZJjyYRSpPrRnPpfTtHnHhAobyYBrwWROxXJjaSRVrivZZzzXxXuZzUxioOIkKVMmFfKkpPVAiIRdDcdiIDNvVnMmJjfFcfFZzDKkEeqMjJmBblOoThSsKkHBAicqtRrTgGECczZvHbUuBhvVVeWwfCcaAKkgGeEtTZRrnJjIdhHKkXxSkcVvvVCToOhTFfFoMmbDfkKFdFfMmBMmnNMEenNmMKkDdSslLPpQqRrLnNPafNnYyzeEbnNFiIflsSCwWcyzvJAapzIiIiPpUzZuUUvVLlHhmEeBahHqQkKXFrRhHRsMmRrSQoZzOoOFffuUYyfFxxXXVfboOclLRgrRAKwWrRkaGnmMTsFTiIUuLllLOoECBeEMkKoDbbBgGhHUuBweEixXEeggGyYyYkKGSsIiwWWpPifjOpPUAsSYyjJBbMmayGgEuzRrwWIJjwWIHhnNKkmMtGjNnpPJDdgEpTvVKkdnNQmIiMnNqnDdNrpPXxIdyYKUmMEeupPpPFgGfLCcSsymUuCcIWwBwixwWHhIinOoDdNSSsRrshUuQqSZdsuXMuUmxFkKfVqPpZhpPHReEcCKEeUWwptTkVvHhKsPpBXxDnNFfdeEbWNAcotDQqdTKAaHibBIvVuUAniIhHGgbgnNOVYyKTtkOOOoocCPpeESVvsmLlpPLlUuzTQqOhHoNrRGgfoOCOGCcgpHhPiLlIoLHMmXIbBnNoOiILlFStTsIifqQxXgTtuUHhGiUEeKgQqZzzZkKoGgRrHcCnNgDUQqdDsrsXxoBbNfFneEtTuUOeEGPpgEBxyYXbZOolpPxXLhmMFfrEekTtSUusGghHKRraElLSijgGFWbBwfJEQqhwdlqCctqVvmMLlQSsagGWnJULYxVvYyaAXylEeBbwcCyKkmEHheQqMoORXxHzLZAafFVvwJjSmsSRkKDdNnrMxXuOJjwWsSFfkWGgeLpPlgpFpPiuUFAlrNntVvqQNnUuTYydgZzEeIFfiQzqQqhNnDfgAaNncCFfGwEeWwgaAGzOogGczZCjiITsRJjIiLDdXkRRqIlpwWlZmZzhHMNKkkVvkKKADdayqQYpPqQWwYJIiZzYsSoOSDdJjBxXZgSRrNTtniIBRNnOoVWwvjJrQqIodeUnNwRrjqNnQzaAZpkjJKGGgoXxOQAnRrNjzqQBbZJTFcCftaAHhWwQKxXCinlLXZcUQqHFBhHTtdUeEueKYfHeEhqQWsbBSEewGgRrYyZzFSBeeEEiIRwWrbpZFfbcrRoTtbBEnLlNhHIiVpfFPVBluZzJjUMfFSrRlkXgQwWqYysSNnCczbnsPvVpKkSxbBAavVXAaHUujJDNndvmMiwaAWJjBbTtIxrRDWIfwWLXkqQaFfmdDMAnrTFGggGBgCeEqQQjeEdDdDJdLlfFtqQlhtwFTtMmlqQuoijlLJSsKYQqHhymffFFMmQqWOSaAMgGScCsxUUuujIwWwWQlEdPeEyMmhHUuOBOobTtHVvhJSkKnFCcmMqTZzthHgGpiPWRuWcNnCTuUnzGlLxRwFfgXJQuzZjZzjJWJRJjphjBbFfDdJFwWfHKycYJckKXHsShOoIUDdjLlGQqgnXZbBzmMkKmPqXbBdDTPlgGmMWFfIirVaYQBWcaxMmKkdjJNnDAFncCrRmMcRzHhuUdtSscCEGgeinNbIiBIvoaygdDGJbBRkvPDdLlpvVVrJqJodDBbOjJjHEeFfxdDXUbyYBuPpjJfkKFviIiCcCcmNZzYykKnNnMBbwffFOodxXdrRLlkAaTtNnaCeUuEfwUyhfFIikKUwWxCcXmMRPpYyTtMgGmFflFfcCLrculLgGUFfCAXxHhcCaaARrmmMsSuFkgGCcCcKJjfQqhNjJnwrROTAmbBMZzomMyzZSIimMYysvVRDdrzHhIibqoJfFKkOjJsUuuUNnfUuPpFLluUXgZKkzVeEIiYyLlGgvLlbBtCqQCcAwWnNMkKzZmyYXdDxOokJjwOUeTnNtxKYyGgERAyYBMrlupPUYyDGgsSNjeONcCsSnSsOoVeOonYyNGHQlzRWDowCcQqWObMfCyEeEexNnQqrCuQqUUucRXlklhHLzRrBbxXxEgZzwstTSWGNnxXNIQvuUIwWhxfFOeZzEMsrRcDdUNEeOoWZzjHlLkKXOSkrXwKTceECtQqkkKulLUnqQoOwWhgAaiIKUPkKpuhnNHcyIiYCNyYTtnYaAyXxWaAwlaGgpSsPASsLyKkpPbYyJiILljFfvVGVRAPOovuXnqQNxuEekYDdyKUUzbyYKsbjJmlLMCcgGLRJjrOoNndDWMaAgRrVvEeBbTtLYEtTEebqiHmUuqQlLMFtKkPpTbSshHOeiGqHZnNzdWwDKkhVvxQqcCiPpYTjLnNYyjJxXgkKGiIltrnNRLbBuUZdDzlixYyYjteETJZznjJRGgHITEQqwZEeHhNVvnHhpIMmioZzOPiIFfOoIMmQSsQqHEbBuUpPehPpqFyYthhEeqEebQqBfFQFhHBNnWNnHOwWotOlGVbLzSsZzxXZlxJjaAlBsSMVvmjJcCkmMKjJbPpLHoOONUuzPpZVvaxOoXMmkKACtKkwWAazkTtWYyAapUUuUuNnQquPjoOIiJwyYkoOWTtwKKHLllLhZzxGmMglccTtUaLsxIZAiIgGPpcWwemQqVvMEHhwfuQqUFzWwzZdnRMmUurwWNvVnbBrjkcGjhHUrRkGgcCbBKyYuqQXxvTtzrRZeElLAGRzOowCcWOZYjJCcMYtzSwMNnmEeOmJjMXxbJWsScCsSMaAmBXqbBEqQezZQdDZPpBuUbqQMmuUKQsSqkACrQYrTVvtRCcyqmRrHhnNMeEeXDdyYxDdlLwWAuUaAvpPVaEEhHhHeimmMpPVvTtUHNnhNnHhuAajqQaAJvIivVFDgfkKFtCcTbEejAHHGghIPtNiIxxKkDdLlnNfXxQqXxIXzZxFUuqLlBJzZXxjWwxevGwWEekKGAagJjKzkCcxaAlLcCVOolwIiWLcyYhHCvdnNnYyGLKklhPsuBbkajJTtAKfFUtTcpPiEVeYKQOofxXFLlKuEeqeErRsNFfnStLlpkKQqPSsKnNPXJjUuMmkKxpuUwWyUuxXYPxXilMmLhHIkXxKlDdbcCBIiKkyqWwQYuUoglVaidJiuhbBtSCzZVvcmMOKksXxuDLlEjJedkKqQtTJjAaAhHabktTGLLllgjJDdPbBbeEeEsSjJBprBQqiJjzZzZsSsaAAWUGguUfzZYcChXZqhxXMpPiXxIrvIFfiHhaAfFaAVZEeUuFfzCcsSyaAVKXxlLchdDFZzJzqQZeEDdjfqeErooOODuUdeNnHhETtDdENwWHhhZzHIuIlLrRDdqQIqQipfFQqVGgCcCcBMmoOCzxXdDfFEeWwWwCckKjJdOoagGRryQqlnGwdDYmMydUZzuabByugGUAaYgPpxXPEsSfFgGsiHYyeiMmIVpxXPDdSsgeEdJjrRxXgmUosSOKPpkjmMSfaLlSzAauUHhPprGgRnqkIHbTAanVvQrVsspfFPDdgGSEeneEKknjJnKknNNplgGYyPTtpCcYzZywWEIiZWhAuUatHhylAoGgexXbBEORnNKbBywvuhwPxrPKzDHhdOoYyZTKkrEanNwWqaqQAQhHKkAGgKmePpwNnWCxSMmCpOooOPTgGXtucksUuQqtxXTrRkHJFfQqjGTteEgqQzWTtiIpPcFXTtCWqTtQGGIigKYireExXLlRtXxEeNnZzMmMmsSUJcWXxwWwWpPYdkKDfFLlgGONndCNnkwWpOoPbBUumKoOiLwLlIBbvYbByVUGgQqulLidDWlNnKksbBXSxTteEzOlxUjJNmZzMjGbDaAZWAhHKOokJuKGgkzOohHTtNnFfZmMUBQCqCcMyODQqZSRIirVnNbBIyYhTtHVvikaDfFoXxOpoOTLgCcepPCvNVoOoHXxWpucCUvVKkXkKZzErReFZbTtBvfEejPZiIzHsesYmXgzZCcGmMxsSJtueAgTbBlmYycCsPpOBwRDdmRuUJncwjxXitTOoIkKJaoOALlnQdDqlLEHhetOeMdhIimMPHIkKQqoEehHireERZzbNnWwBJjevLbWBcCmMbdDhtaATqgjNyWwYmMhLlHTtfFZzxHiXvUiImgUPlfdvVibBQUfLtjbBJkZzTttFfTMKkIidHhwUukWhTlLfPpFIwWpxXfFiOoRrIPeEdgdXxDoLlOoDdOhlkXxKeELQeEqxKACcaTBbheEHMmtzZFXxtTyYfDdzZpPAajJmUAaIiuSsMWwTHdDpPbBCzZchrRWzRrBlLPIipWlcCYyqKbzRjMmBwILyXxYBbltvVTetTCcEtTYkzQqxRrNzZnfQqQqhHGaHEeZzmbBsfAKlbBLxWwxRkpJjjJwWFfSoOLLltaoOJrOoRtTSslSKkUuFfcmMClOoLunrRIiIcpEkKTdDFfegGWwsXQHefFEuJvVGHhCjJelLnNUqjJQlLBxnNsiFfIZAazpPnNZFzZcCWwflLCbgGGhikcWwsSWKkwFmeqQcCUuDdHiiIIvLrRlgqEKkgpPGxnNmMdDAaIibBLljpPkLjJlzZZzCHIiDkKiJjIJbdwUuWBfFGhHcCDUAaUuDdUuusEKhWxXCUuEdyYDNntTTirRuUuHnYyPpzZHDRrdIiDkKrRsStTAadDOGBGgbYeEaAaAdeEiIBLQAJjaxXhvVjJHSsypPYaAalNnzZtTaAwWAAaIiJOxXoNVgDxrpppPiIWpFiIbBrRnfFYylzZLERrvzZkXmMwWLuUlIMmhHWQoOqSpPsorzZvkKrRVBxiKZBbzGgkmNsSzRgGEuUehHQkKDdqYeFKkvptnNIcCiUuUujJMmWHJjTVxsSAlOrUuVvvSsxujEedDJFfSLIilOQijEYEeEapPERrNnIieApEnNAanVTHwoqZaAyjBEDxVlLYyRrvTYytzZVIGYygTAUuaRroGxXTrYlwcCWkKBemsjJLlSMmKdDiIUuKmEeMkNtxYiIyrotTUiGGFQTtqQqTtUlKkLoOoVvOCcibqxXWZFOoxXfcCWkVvPoObBjBbrJjEeZUexXxtToOsGgiCcIHBbgGhTyYlHXzgGTtZTYEeIDdzZiyvtNnMLlnwLsSAIcsSeMZIvCgGcViqjzoWibIYyqJjQjJVEevGHdDhTkKEWiInqqQvLlVaEEjJnrDdfFurRBbZzOivVfFZoOzUmseEJBAiIGgKZtTzrVYRdDFzrtTnNfOoFTLlTExXWWwiKnNvrRiLPpVdkKDvlKkBSsHhzAasPUjNnKXxkcCfwrJVDdhAamMHRrvodyGgYOomMwWoGAIKkuUjXOyYwWoMmjYyJtTjJVDpcCdDquUQdMOoyYiQyNnpBbBxawPnNfFpPpjJSHhsbAWwyCUKpfIxXUuBbzfWIiaAmAcpPCtTaWjJXxvYLlyLBbUnaepPEBQaAqnPAcXxqRuNkKyQqooORrsbBotTdswWFfSiHhrgGsSpdDepPdKkKknNkAkKRTtGrRnvVFfNybBYkKtREbyuXxKxvVUufCHWwjdDwWUfFBWXYgGfCqQvyMjJyxXmMkKYxkuihwrSGQqvVsSgEhstTOveOlEeEsSeLozZHhrfFxPcnYECfHlUvRrkBbKqKkiIQkKrVvRbjcCdRDXxPfCSqQsBbnCUuLljJsSwshbTACcOoWOoOZOIUuiXRbuHhUhHzZcvVZnNzCBrtTUupXiIEeoiiOmMPULPaApexZYZzLlyuUmkYlLXxeIiYyPhHZzRrYydizZGgmYyOEkqQtSPqZVvWwDaAdghRrAlQzBbvuuunMUPpumlLNaAUbBUXvVkIJeEcjJHhCvbBPvzZUkpPKCROCTXxPtWwTpCSselYmMJpPjjpPJzLkKDdgGxXhwUuWGgLlQbBOoOEEeeAEUJDxXbBpPrnsZzBDOWwvVodJjfKDKkyYZzyczHhfEeFNYhBbHFOofImMDXxdiKUuhKeQqNvEOoAaHhKkhHpyYPFfgGPkKpxzqAoDdrREeKQbjExXOpLjJgfFGWUkKuYFfNKkpPNnylKlLxXWYzZCcywDSsQWwzZUuVPpiISlFGginNGwWYYycMLlAiIGoOWGdDfJjRsZFfscFFsTkuJtSDHhdSssGWwaQjuUsSLlKyYpFeEfkasgGSuULJjlyYaAACLzZljwWJcgGNCcXszZSxAFOohrRcgTtkWwUuZQqUyPpYXxwdVMmvKkWGsxXgkKGStuUWwpwWiLkvoOMmVIDdqQvfWpTXxPptOKSsFIifkKzibBIZmMMdDFfDSsdmzjJZcNaAzZnGgESApvCcKkDdhHntJjQcIiNnEeUNnrRMJjZPpCCkIiYuUNRECcDhHhHdMhGgHZZkKrTtUOoOPzWwUuUBbkWwsGgbLLQpJijJInsiIDdeESIiNCcJYyoCRfpVRpcBbJnUGgKkpPOokSNVvFfnXxIJjfpQGNbBoOMmcceEbjjJJFYPDfipvVMLQqliIlbdDBkKLsglsrRSSsIiHGTtgBbNtTnhOGgoYNXWwPiQqbNUAamCzrvDTTttKklLdVjJFDdfGgIimMyYhHgeEKRiXkKLSPpsccWwepZzPEeENnNnrpWQZzdBQRrRkKFKkcCKMftJtTMmaARcaQqyaSGgsMnIgGCcSskgGgtWKLlPsRrQcCAaLlquUzmMdlyZzYRXxAamMJOojWtYyDdiNmEnUuhHmZzbVrRvBhPIZQqzPpRrIinNdDidIiMwIyoYGJjPpXeNONlNnZPSTcfFkKlLqiYkrAaNnBbHnPBbZzDlcjyUuEeYgJjUuiIIimbBhHmMackuUmpagGaHzbwfasSSspaANnXMWohHSnNeEzZsSsAfCcpxXoOYbBkZeEsByDVvIiahHfVMcCDdKAxYyENhKSqQpRmMrPRUuMNqryLlyYdDYXxNbMmBqCsScCSsnQcCqNdDDvWwVxuUbEpNYuTqgGQMPpsSSeEswTjMMmykKYWwKkmWbBwPNwWqQAVKUbqQBayDdjgqQhOUoOdFiFmmMrwWRDFgWEeRkKrBbiIXxEebBpOoOovVsPyYpqQOoKkzsSyxDdxGtBbVvTPpgUuXXOoYOZOozFEeeFfbBvVeEhwcwwWWCvVOooslGLYyhHqaAQSqQlLNnwNWwnASngKkofQqFdrRMPhBGzZkDdbCVpQqazZGgIiQejZzcvvXODdIiMCcmLcGlLgntTNOoTtfFBTyYRJUyShIiHiItfBmEeoOoJOoTrHMlLGDdjOJwWGObBKAaBbPpXqZzmMgGfJgGSOPWwWwpCLoOzZDdtrcJjCTtVvhPpaCeEeKYyeEHvVhFBbpkaAVRrvQXxqKJUuCcWHhhqdDQzrjJxfxXFfuDdAMmzYSQPpqsdNnDSszZIrrbBVvukeIitTiIfFvVpRrWyYRrbBtoOTMqQmGQNnqgvkKVwhHMauMkxXKiISscEwDedDEzauUyFfYClLdLLbDdBjJGglzEwWRrEgGcCWwLAVvslUzlLlJnQVxXHrLrGeEgWJjerfoOGgoWQqERrewtTnLzBRyYrJjngoMhHMmHhrRmAaAZhpaBbQhHzqpQCJjGgcIFTtIOrRgzEQcCCcXxppPPxXvsSVLlMmYoYHATtIbBigRhHCjrRaADdXxzDdZJZzSsXKkxIxXHCmYyPPQqgMvVDCNnOhHoAaGgcvsXxicCrVvzZuUzZRfFomMOsgGoKQqkKnNNVIzQNnXxkuUqpPpPQUqQueEkKKqbzqJarRDdJKEeIuZdCCcJQqEeBunNUlWwEhlOEecCXbdDIpPvcVvCZjmaAMJWAQqvdDdEFBbBKkbFffCijnIigOARraAawZvkBYGLlEeNADlzyYrRZlnNoOTgGduPscCJSDoaKktmUuUuApDQoIiOyYJwEeWXwWxDdtPtTJxXHNFfnUiIsYySuIHnNvVhYyVvGlZzsSLgnUxwVRRUBZzbEwWtTexXmMQAGLlrxXmMREeJPpLlNKkRrWwYyTtmbHhCxXXxcIileSFfsiBBNFfnwWULAFgGvVrwhTiIsSDoUuOdzgGZKsxUKkaAxXuAqRrahHACPGgylLRrdDRrHhQDdYrqQAaXdDKkIlCQqcWRsvVSrTxsSQqTbQqNlsSaBMCRlSsLDdqQrphAxXsSeGQAmMniIqDRoxXOlLqdhHaJgGLlZuJjUGkWwKgzbBXxjylNnILlOoRVvkKTtrBbNdDFTUuwBfgQOoCheFAawPRrpWBwPaALxbgaSPSsQqpaRYkKdERQXvVbBxEeTqatTnRvDdVhtTkjfFGNtweEWTnwGJjSscgGzZbBRgLlaTpceEZtTgkKGvpPsiEhHsodDOJIgMWwfFzlwAhHaWLKyHwOVgGebBEJaAehHiIJjteEQQqqTFtiDdwWDaAKCcrYUIgNnRjNMjTtJNrwpPWKDPufEiIpPGuUHhfFRrxtpPTVvVvljJtBxHgGNqpPQnhOovkKucfewuQquUUZzumLWCcbtTgSsGawlLGgYEeyIgFbBxcCzBMQRYEctDWwFeurQqbBRozTorRNnxRrzLlKvVVvgwgGdQPpOTVvkPTvmkPpKaAwuPpMASspLzSsyaOGgKhTedDEfgbBOsYiuULvVnUzsydnNDIiFfznNEenvHhIqBWwuUpEeZPTqQTttxeERMmqzbBZQEBblLXIdJnwbZzZUuBbIFoOETNYyMmZPNboOBhHVpPnOoNvaAsSzZGOAdpUFTaAtWkSGGgbXxBgnIijLcCVvOzxlENnKjQrpDlxTozZrEkKRrlSsHNnhcUuqppPYyPhnNHvlmlLZEevgGPWxeEAadDpqytBbbOlIAaWwwWiDqoRrVurCdcCBbRpPrmMlLeElBbyyYUMmOoAavIrRHAaeEhzEqQeWwCcsWtXiGgeIAaOHhpPozodfMYLnNOoQUIaOJzDKkdFjJIzHhPVvhHbDzZdaABLjGCcFfSKWwwZzZMOvVCcfFTtNYOLlQaADTSvwCcWVFfYjCQqgxbdwWRrlIAlxfObBoFMdDvcLzZBqfTBIHuJjogGFjuUiIiqQmFfDTtZBbzdvHcBbCVrDdRedQQdgGhUuDdetXxfFPqfGgtbOHwKkWRdgpxVvwWioOQqzzAQTtsLlSxDdKkNnVvzSsEtOXZzxXBbxvOCcTLlcCtnNQMmTWwjzlyYNqaCjCTLVvMHlFcCOgTNeEFDyYdNmIPpWyYZbqIoYuUrXzghGgSlNnzvVxgGnNXZCcoODESyYjrgGVJmMsIiwTIQuVvRWbBwTuUTtTmzZhHcRrRmeEiiIIbjGUuMmuHhHAaLlhnWwbBmhGPAaHOisSFxpPbBZjFfMmafFQqfFAJsiIoOuHhGApPRbBrFfxXsBvWwiIYfFZzNYzLejYJjgTFPxpJjPKLlDKlLkNnoeufFIbPwaJgGCcAdKJmMIiIEzwzZWfIbMHhGgmBLtbBZhJjfPUNnuDdeKMmJcCBvYDdiIHFfLtNYyRAQqJjEerHhigKIiAakHNmMuUqOtTOLlXSicpBbFGgebnNBjiIKJjxXToOdDLguuGgSsMhbBHmvpEcCcxXKkCTVvteIiyQqxdDrljkuwqgYhaKbBwcCBiINBbqQnbZZBkMFYyXfFFfFMmfZzxfXxXaRVvrpEeDTtcdDqjJMmCqHUkKKkKkrRlLygfFGQnNkkCJPpjlAaKkLEeMeEaAMwDdWxQxXDzWwQdLjJlFgUuwkKYibBILlybjGgRkYWHhHOdbYgVGMUumGdDRWIipXxxQqLnDYfGoWqtTAwNiITtMQqMNnCcQNnNTxXWwIiIfPpvxHhIZZDRblzRrZylZpURrKkSjJspZMdDcCPIisNnnNUVvzjkkKSBbtTvaMmWwAVlQrRqtTRUuyYymVsSZKQxXqznVvlElwQBzAftTPprHkcEDdHwsSqGkUuIiAaOoiZQAavyYICJDSnNoBrRDFjzJgGjJCcVAavvVvqhHZPpkTtKzWfanNsvtTLioYyOoBsixjJiIyhHKbbBtTBwWzyxNniIkKBDdsSGyYrbBaANntTRXVpPvQLlqWiScvVnOoNIiKVrsMvgGTuKmMkSsLtZXMUuaGARrDLkCqQxvVXHSsOHTxWgGKrRToOQqLNkWwSHmVKFfCABbWYhSecCcprRHdFQEeLjKkiTbBWjYAPROKiKTGgLltuUTPQqCNCJeEBqQQeEBStMfXdpWwPmIiabiyFfxoVNnvOXxLdDlnOowjJlHxXOoeEzZzZGDWwMmMmFwlLWXjJKhHPAZpPAdDCcabNAangteERrgDdgrRNKwnNWfPoOjJtLjFffCcvvVVkWsSwDQTWnXCUufFcYlIiIisUuhCIMRwJrOZhHuGgKkUzMyTUuthbzZuUByYHJjAaFuUfSPyYgCWwCluUYeAYyfFZzaEqQiIGVVlgGLcCLBpPbKEvVfEMAWLnNwWoeEdRrPrsTwtilGgQedPsuUPpSTYyPbBvNVviSdDwWxXLlYbSWPleyKlaZhhuwJtcsjJWwCisShHIcLVGcKpPfFkbWvFfYBuUyYoOVvEeCdDvVcknNxjJSsAzLiaMmBWSFfvXsFSTAEHrCnSLlTSsxXkzZaYtTbfFqkqsJjVlfFdDLssSxXHKpzdDHZYKkISjYySiTvVKkMMKZzvIjZrRLlIAcmIiWYygcpgmKRvVzSsCWwZmEbuUNdYyiVbvsYyNnJwpPoOkFftcCTtTtAjaFRkUuKgcOwfpNyorRODOoMeELBWPlwWVjJOvVpPxXCnQwNahHnNyKJgGjHKJtTRAJzZKTtkssmMDhFYcIclfXxNnnhvVEFfeyMmpPVvHaIiaDdqQttTKksSODjAwWaJmyYUNEBbzZelxFBbYqSsgZtTnNWfFdDInXxNYvVTIPvcHhHJzZSsAjJbsLAaoYHiJjIiIQUaGirjSkgiOoKsSsfFBbxXpPWPkUtkHhETtTBbqQSaAQquUAaETUWrpPREgOXjcFKFJjyDRMmpSuUiIqQHIrFoIiOtLlPjQMGgyBUdDApDLhHsSldPMtTIiXxtdHhlXxbYyBLoGRsSCcGjJNrTVvdMmaYybONGgdDdGTAPaAwCcZGdDfFjtsSBbbTXpYdwWEFfqGgQXPdDaHhAbBwWvByYDdsQqzFfeEECcQxYOcCJdRrnfFkKFSbBskBbHOZzXxPpbwWlLncpPwWolDAtTRRrrFRFoOlbOuUUuWFaAfwvVWtwWTVKBAFPpwWsWMysSAcbNCWAhWIjJaXtucdDCJTrOoNbBAiwgfwWLbCOovYZzPjRlYyLpPhYWwBpffFEMzZLhSsxXxXHlfOopPFHFfmjyYJuUMpMcThLltTEbrRBtTFxoOVvXeenNsoiIfNnaAFmyjbENcpyNniIYmMPcCCQqbVvEBEerEXgGdORrGjTcoOMjrLxlLnNpsSoMyYGgNzZzQTaApPJLljlLdRsYyLNaCCBbEeJIiZyVviessSSMmxnNXdDygFfaAzqQgZzkuRLiJcHhIGeVlLkRrKfFvbDkZzRdkHvVaApPdpppNiKKkkADdnNTEQRWjdDCcAauuUWSswwWurnGRaAFfrFvPsmMJjGgQkKJjZndjJjuDZYVIivyTtbOVvvHhVNnqvYPoOpOVvGgiVGgvOoOoDhHXzOFSswTZcCIizKLELHxcNAyYWnMmGytAlLaTtzZcoOCHhTYNiVvhConRoOnylmMQqKdDQqpMDgsUUXjgGhHTIiSstIpwVgZIkIiDdZyYGgevTDJjMZzmIidetSlExZEKgIiMmvVXrRgGATHLCapWwPeEzIiMmoOMuYlsdyKPpPxGEggqQsSixXGnsrVvCeRChHcSsNZmwnigGeEIameENMfAEePpVxmUJttTJdDkdTgxqQqQNNnsZzwFXxiHFAahHfHqjWwJmzZjJBbLDVbBDFexdcVGqqQQKCceoBOFCRrcfYoOyaCIaBwIEVIHqvVvwWPkKlLqvJfFFShGvVyfFcCcCYicTJJjRrCiVEuyPJjZuiJlgGpQqPoOohzZHOBctTQqKkZzCCcEyYSxziIZXselknNOQDsSIfjAbByYEUukfsPxXaTtAxBbPpHxXEPpEevVwWQhzdeEexKbRrUuBprMmeENnRPkTtjhbnNPpzZBHZfiHYVvCLqLiIXxhnaRDdWstYkXCNuJHxWHrxbYFbBfyBXRqIvVmMicLAzZUADdTvQqwWuUVVIcLlyacdDQjjbdDWwPZzpMmErRwVQqXgEfPOozoOyhBbeYyXOoxOoOoxaVwJTMmtGuSYyIPtaFVvPyYpfDIpPYyfFGgGvVJDoYYugMKkSYREerrDdXbBlLBPMXxmRrBooOCiFcUnxsSacCkfUtaRRAEejIyOoeiIVvzZHZzBSnNsOhaAlLRSXQRrEeTtqUjpPJUuTnfaWYupgRrPYjhHkvVAVvRrvCcwWVwQWkKYYQNnhJcVAnNAxIJjyWwOoKUHLqbQlLgvhTUEwWANfLlFBbPTfFtEEftSmBuHhxdDgyJjyYHhYkpPSAGgYuUeEyzJZkKzZaAkhAmjwfFuAmmCcWkOoVvzEeZmMMSNnErFVvkKQqlLiTmlrRLZVAAaavsKkDdUUesyecCrEjJPpLYyYFfcTUjJhGyoVECWUQjmMTYyGSsfwIiWeEBkVEBAdNWHxGgXxOBbWwuoOYyQqOohWcCwwvshwBYOcDQbtTqQvGRDdrAjJUTtuaLJjlryYSwWRNnhHzYXvVFZdtGofHhebqQfFmudDqTeEtGgiwWIvOoVelAPrSsuLKkLSsqnhYSFqQvfFwpbCzZXxzfFKxXUukUYyueydyiQIiyNQqQZZCCVvsSXRPsSrwSNPPbIgyzeKZzkHhpEWwTYygyqXxtThEeEIJyYBbZLlzDdVvCogGmXOeEKupvoVvyYpEkKdsBuOOoLlVtTviIoUYGgsgdkKDRrFRSsxXxElWwpFAaPnbBdnPaQkKqbBOosSNJfFcrZTdnNrWFfScCMWODJjjLxXDsyYhAahHrRtoqJIaAiogGZzPpDRJOojaZzAwepJJGJrgqRasOohHgapPHxEeIiqQfzZTaAGgtcCXJrRiElLNnUuCclCummDKkdptppPcCuyFfvVLlVjpPRAauUIsbBSRQWwVvEJAaoOiIjvoLjBbKGRrrMVvkKlLoxXjLprJMmbzZsSkLlKfFDSsJTTDbaAtcqQoOIkBbKYyvVXQikuqVXmaoPpQqOyUuGLfFMZzlqkKfFRwMvnMGvWpPxUSyYspPUuxFtkKTIdEeDdtTrgGMvVUfRrcIUFDvoHrRUFrPFfTFpPUtnllKpQPptaZBTKVvZzYeEMCcxteiIEcCcQqiQiXxWOoucCUwXSFNnuUtTuUpVLlyuzMwITtiQWnddDcncCNCATeMmEtlbpzyYzruzSsfsunSyYsLaApPlVtqVnSBbBbEQdjEeuUnPwWOozFdDqQqmlLUuaAKPTtYyUcTBjnNPHhxEeQiIqRrKkyYLltllzwWkKvVkKqrsSRKqSsBeHhHHVvhUuXgGJNErsuCbENhLujJphHFfMxXGguvKRrVAauyFUuhWwIicCIujjYgGaiSvdwHhWFgGoZzBbOuTUBbQqLKkvgWeCrROpmNzIizZZnOXrEBbBRCVvcFQcjaCIibBNpwfzsSZUgaGuAarRKKDdLlcKEmDnGTXwmMmmsShHheDdpPCIEenNgfnNpovyYBFluUTBrRWdBqDpVLkCcRHhXxHcaACVvmhHGAdDaAavYyIihuiLlbHOTRPpNMGqyNHhGTJGUsjVINnNpZpzjhHtBbyYpbXLljHhwZyjaxgZymWOoOOoSsoMzZPCcYypcCQvVqlGGWwgEpZQqzTdgzZigNnWvMhHzZWKzNnZDdNBnDDNiZLlWyVOkBbKZXwWxalLdDAdDAudJUIQXRRuTFoFfOfruUbXVNbpZswWsBvNfJjPpqRcCaAOOOOAAaaoLKGPpQqsaAmFKDqGqQFZzfXCDdZLqXxmsREeFfDdKoOnXxNWpPLJjFCnNFfjUZzZjFXQAaClpgsAgURpUuPqmMnLcCSYjYoJjEeHtThyYQdDKQqcCXyYSpQJEDdtNfCBXxZCSNnsKfsytuDCcsDdyfgzdyYDSmCaAXVLVlCFdwhpXxqjwYyLFtSxipaXxqHhzaTMmQtxPDJjqYiNnFTzGgDagGhHktJvVEejOFiTjyYSsJhHnqNnVvjJSsgGPQFEiqQGVmiaNKkvqyaABKRHIVlldEvkcLlgGfFHyxsHJjcyYGgpVpRhRSsrviiInCmMYaQGTiUsSratboOtFcCJElYSupPUXwWHEhsGbhAaYyHSZEebNWnNLlwWDxXZShVySDdZriWoOiXkoJjObKISeEeEZwiIYyDWwdlkBbKOuwHhRmQnquUeikXMmxWrROEoPJdDFlLfPqkdDClogrRWKHoOMmzAalHjJZOowWgbAKymVxULlpPjJXMmKyWeUGvVgLBNnetTypRrEZzAaewhNnHtTLbBPmeAfgeEGFUuDyjJJmzVxXjNkKKNNkNhDdDFfNNAanXumMhHgygGQfFqYIiGYyOspOaDdeghUudjJRVvCXxcrnOfeEGyXaewtCgaHhInNJHhNnjJjgCcGHsEeOoFgKkKoOECHLgALHkKRruUzpwmznAzZkwWZDkKNwWSsosqpPiIiIxyJaCcOsSVhHTfFBOoaAemIikKfDdFSlLmrZpvxQwtZUubHHHhcgSoOeOokKKCyyYEgGJLhqQwOJeEcCaXpPSnVvkKRoKrRpPxXpPpNnwIiFwQqwwWWNnncskQqSZzSQqCKVeHcmiHhuzBbaAZdKkDCYXxDZwxjaAJfJibEUlkPsPpqIinEeNZyvjJEeYyOSKRrERFfcrRTFfYFtTfPpyveQqEbUONkAOuUQCRsSrNczbfEXxfFlveLsoOlfnDkqQmzhHgFfGvnMkfFoNyXxmfSKayYARrXlKjiIwLqQNcCGmMpPqFfgbtbBdDgbBXkKkbsWAaFaXxWtTJjkKpkLMAuPeEhKUuqQApPetgJSsVBGgbnDdhEQiSMbHGnNFfBSszZNnIYtTOJnNqQKhElLdgGxrRDKkiwuZzjgRVvrffSfINgouQmIiRFsYFiaAPUkKWLIFffZOOmpORroXyrnRIKizZIBSenUtSsnNuUyeEBhiKkmThxgoOHFeSshfFtOoyYHyttbsNACcNrjJCRrKkcNvJjGgYDdyVPpLzZzpffpPFmZzYGgyDoNnOAoKbjlLLQqlvQqVOoGSYzZtWPaAQxSZMcuUGgdvyYHoosTKTNbBJjeyiIZzAaLnRrvVLlfFNlWXIGnBIRKkTpKxXeKXmYNQhHwJtAaTcCNQqnZzjReElwWjOoNIOocxsKkYyVQqDdUCcaJOomMjXxmMmyYMIwWGWrZzaYyxXjJqXGglOoCvVyYppPJrRjgGzSiGgEeRrBAawWLKkzzeSsbxXqCctaJWwAajqQVuUGgLqphyaRzyDdGrRiIdJWsPhyQqgSyqQqQDWwwWBwhHfhYHYbUuBUuyYyhYDdyrqFYlCctvCcMlJjFXmerUOmAalMpAaNSBfMGmOoMgTtckeEVCitQJTMmvCjVvEeQGJjrftEGOghERwCceRmmzawWUuAKfjGgWGgDEvRBCcbrVIiedwfFPpFfJFkZMMrEWreHGogehHTFRgXxqhHOKkoHhJcVtjpPqTIcvKYyCmFaXxAbsnVvTtjJPpPmwWLMQzZqouRlLuUEcCMjJxfLmVTHhmMLyfQRyHFWoObdYaAsGYHpSwgGjDgYZrAYHPQlmMvATWwQTtBEvVIiZZuDlYyLdlLMmUlQqTtpPbJjIsZPpPcUuLxQpPxWwXARwgGgiAuUutTvYySXCinsSDdJLiIyYrWqnyMxKjJkkENnrkKzTtZbUlPpLilZzLiIIuBGgRxXkPtribNgiqrRrzZRQxwtTNnYPpEDdntktSOOhVDCmzsXlLqorkXcDdCxKROpTysgMmJBkdDOaYydMFPZQcCqlvbBXxVnHcChRCcnanSBTTAaYhOoTnNnNyYHEfhGXXxQqHtMIeWwEHbOoYDdTuQqRrNEsbkPpvVwWirNRYxOoPMosSAacCSsorRnMmNSszgGFillLwupIflLyLpPlSfrMioOIqHhIwWDdiEeUOGlLxXHzZmMhniFDdsdDFFGcCJoOUWyPpVAavYIkdDKdXDTteHkyuUBbYDdEejoVgGbIJjiBvNngGyizZbghRrBmsIqeHDdNwWvjGTEakHpUaHhmlKPwAfwXxsSSpPBCcKxGBbwWiIlLFfTBGQgnKkKklcCWJkLxumMpPiIUksFMYnOKmNVZxXMKdNFLSlEVUuLesCcdDiISRrFrRQqBZCnQqcqoQqaKnouBJjZzVthHSsCrrRerRksoVYznNQwWSpKLueBIjFJjXWzdycCCccXxXxUIMCKkBbhEvkcssLyYlIiKSCNwWWfWSsmMdDPpPbBkOrNTtsGIigUrRurRrRNnxlUuLTtAjLLlloWMNnfcCFmaAiIJjHljeYcVvkEsGCHtThhhBIizTSsWqXVPzRMsnNSEesQqMJjsKkSEbtvpPoAHhsSjYXiIQSOndzKaNiIjjJJZoOMWPZhBblaGlPphBbceQsSqjJkPpgGGfcCShNnyYiAGnNcrRTWEAxYGEeggeEFoNDHGEAoPBbrRSolLOYyojJOoLlUxeEpPnPLlpdHkKfHhFnKuUnnknvVJvZMjoOWoOwxXYdOoasFfSEMpXsSxuUlWcCPYLYylEbZzluEwYkoOXxxuXvWwMDdYXxkarRBGHhzhLZwWodDOhaAkWwwcCGOLcUuKQpjIipOPpeowUuKIXxEDRrdUnNuanXxNAQNqweEWMrWeEUoLWkKzsikBKxIwIRZJjzzsYvHszmbBbBMdaAwnBzsBgSHehwWxSsSnNsRrwOoWsivIjJiVRrUuIyLejfTBTzZARuItgqAyXRhHrRNRrnrxfFchHNDdIVHrPvmKkMSsPqXxEeeEsSQChScCTtXYhCKVeDLLvihrkbYQVnAiIIEeMQMQqmqvgIUuIuUiyYefqpfFQNvVqQhHtGgIfoYyZzTyYKAlLdZtfpPIpPyQdpXTqtAZQAPkKIiIoGgOXsTflWJMmQPvVHWBbDVvfcLvyYlvxcMXxPpsVvNnZGFjJQiDdIqhHYSCcdUTYSFkczbczZFncCpPIiFfTqQejzASsoOaZqPsxkqJjOyJyslNMmQruLlGaSGPLcAaMmsSdUuDqxfJzuaAcCJcflwxXHhkQWwqiIrSMEeQhHLllzVvbBFfcxtTgQdkhHfMSgklooYyAaosSrLlLlZzHhQFnVbSSzPBnvxBRtUgGrrlPFfpTtLxwdDWqiujDUaDdQqzKkovYwzIPpnZzddNbntTkwsfFsrqQRSSmDdVwlLHhGICcGDtPegLXSIisxmMmQqHhxXwMBxXbYzGXAJUuYzWJxSstTBPTJZPzKkgVvGPpPnGgNGBbgnivJSugjEetgntTYQgmRrnrtohBIBbUHBbVgMBbhrKlvpPPdtTQbDCcwbtLfbVjJfFOPQqFGMmoOishOoHScjJdgGDEHZZzzMMWxtgzhLlHkKZNEoVdDfFvOeAadMekCWMXyYdDxmwkkbBUgAGuFWPdDncAaAxXoOJwWCqtTfrbesScCrGhHgRRhaXbBxAHxoMNnPoXxcEwGVltTuUutUfJjDVsIWfFwAyEeJNnJUiWwHfsSlLYUvCcsSkVUmeEPIiUlHiIneBcPpUSRenjEexsShEbHhnNQkQrRdDpaAPZpPaAPpHhLLTmMiIXpTtJboOtCutTpkMQrTtRfZpNJDqesNvQTBbvSsNUjJSFZURZZPBLZHhzauUDNguUGwFfqhHWsSmZUYvVvPfsOoxIqICPBbpTXmyQqktPpxXbzATyYyJjCIiZzWwhqQHcYSsqPkLLNTxXuowWOoOdDftVvYypRfuhOVdfuiVvCPnNppPFumRDifFfXuXYyBkKbwVgmwWNVmSmkKMtTsfFAaWrQLkKmlgYpPdDAAaMxvLlQUKIqaAxIiEeirrRRCEeTBdttjdBIiVvbvVBMmjRPlJOmRuUgkXeExJlOVKkepPqEWwAaCcernNiISsiRrmGgMrJZzvkKYUPTPMVUuMmvMUcLeNnIhHfFjxJjFXjJhAGUuSArQGRjgvVjEejPErwWTttTRWDXxdaArdOEeAmMajQOTHyRrYyYSCcYydfFlJdFfowmQCcqswRDtzRQqCjnNQKkqnNnbUmMuYyBQMmqwWLlApNDNpfPLmMeXeWwErfGSGgybSDePqQOVPURrkoeExmMWfFwMOcDdzZjqVvQiQqeHQkKYGHhtFeExuUXfePqQKkEZYGiSsBUuppnsjJrbBRRrWRprxccsSsSzzqnYbBuUqIYDYEOoZcBPWVfCcsylduUDmMLbBkzZKHNQllURpaLEPpQUQqMBsSEFgGOgTDzGgfeEeEYyxynNZXxZzDdrsjMmzHhZJRIiSsgVBqdajJADdDiIdCPpoNnybOoxXWHmMSfFVWiIHhRrHYyyrRYIiUoXNnhwnDTtabevEeKbFgzZtJquwceDvVFfdvOYIQYyqigHuwWtNQqnyYGgCyeCcEUuleRMmEPpXxYRrSEuuynNYSzfFMtIgGEefReNWwnlLsmKwMMaJjUWZyOoYzJMbBaHIiKzjZaswWKGXUhHbMZzsLlTFeelLpJjgGGgnaRVvreuXxQqtjJnNHVGqBQliIhukYfFiXmKkMaFfavCjHqAgGTtaTtyywqWaxXqQrRKJtTNnjJypTiItGPfFSsUywRrAFNtuxsrHobiIhnNeErROoZqQkKXxmhHMzVvvVESsYaAHnNhHwWhiJarrATuFKAXNPEepuCetTEfSsIcObpbxRXxXLlxXxdDysrRmGUyyOdjRrgiRIirbBIidAEeTfFkCcKKkpispgGkKPUgMKkmjWvAXGgEHnNCcYZpFeGxvWekKoOxXhUKkuHdDQZTtzqBJJqPxXpbQqRrBWwCAYCivtauWBbwHhalCQhwXhjUncxKMmXxyTSwrANHMiImlxXQlcyhIFzJsSiIXxXRrnNPpKkrREvVDZHqWweJQqjhXDdpSFKBbqQfgJjnKkNGFeaJvBbVFXxKkVgGwWyYvidqoGgWwQqiIKLbdDLjIUpPzpmMYUevIcJjjtCIgHsfjKkVQRrtTpwKkWVQhiqQveiWbAicATtoYybOEDaGgAdfEcCbaSPpoOSszMmZsSsACcBeqfnNFQnEeIiNFkgvHhCcCDDdXEkKfdbBvDddlOogGMQrRrRhFfsShIfWSnXGtDKjTjOoaAuMXvaFmneEMLlAcCTtNWMJjnlLNznsSCcrEcVvRSNgIGGegGgXpkYDSLyUHheEmeEoOZpPALlclhtawWUuxGWwWwkaAezXSseLsScCsTETNnttoOvVVEJjmMzKizGFfvWPiJOoxuqQUQquuLlSGdpPmPtTkLQqYNWwrNOcHIoMmOngNwalLnCdDXhlmMEeepPlSsktWfoZTtxdtTIxSsXoyzZVQbBOooOoBNQqnhQqHAghbBJjiIhqQHHGmMVvazdUJRrtTJjDNzJjqSpVxXfgcCNmMdDRKkFfsSUCjsSJcUCcXxJaAwsvVVvSrqGgetKkDdVvFUuMmfaInPPPDhKDrKdBClLZlLztTJjXbWJjLlpPwBDdtTxcWwNGgnElLgiCCcfOoFjIlrUnNKGLlNnMmZGYRrQqYyPpEIYVvzjUuccACxXcnOolBpZzPiImkKPpMboOSrDBbGgtZzqwTtWQqZnmOPAaXlRJmFfoOCtJgoDxGgyYeRbcDdCBJjjJPpbRxXrePpBcvLyYlVCnfFeBJGgYMihHIOSnnNYyNEzZSsnZkKzhHNERrfeHtCuUmPbBmDhHdMhmeLlcCFPbIiyKkTtHrJkKpyVcBlFGbBjJWIabBjuSsUmMJnlLOxXoRXxtjeEcCUTxAiwXxHaeEPpwRrcnBgGCaYUDduhHmcCHhwSfabkvwTtkUuQqKGUugWwfFaAUXxukKoBLfrfYyadEeLOCCcNBcCohKfbBxXNDjoyXiJjXxIqeZSeEbVpxHheDyPxnNSstBiIsftTFSqQTJgXxzWqQpatgDnoBAlLDtRDdRrnjJgOoeEfFrgfFOXxkZzCEecKDDdTwRrgGCcmMWmTtaAayYubYmqJmMpTDwTtmHvTtVhkKTtMWdoOzvKtTkVZzZfsSRihseEPrdYfkfCJxoGnNePpiIwuteUuKksXxtTYyteKBbTudDKpwTtSkIGXxKsJcCPpRxXIwWgAuwWmMqhjfFJqQyOlSBajhCWwfFUuVpityirRwKkZzPpzGQjJBbyfXkKMmLnupPMjJLHhIildoTAvVdPpDAneBbEeENtThYMvVmoONnHNNnFLVvkKCiCyfbBHpPdSSttTTEeZzEUuejarjkhkYAYynWqcCaAPpNcovwWLpwblzZeEwWmdcfFCYnKkPXxFWoCGSsrzZfAJaTZzSsSTpPtGIigsKWjSVBgGVoOvIiFxXfvEeIwWDniIOoBeMzcZrkMGqQnNWwNnPCcCDdGwMZzBbCaZziHhzJtTiVkfXxFmmtzZpPIzjgGJZsJsDdzZmMiyzhPpFftWtTwTZPkhQAeEaqfFSUulLGgvgZzGKkqlLQSQKQaAXxByAMmaAKHhtuUsAaNcRheatsfSxVswbAIdnNAaDdDlZaXvVKhHbyVwBiIGglLCaAgvlSCTjWCcUHHzAqQOoLkYELpwsBFKbBTtkjJfPpysInyYGgVPgGpptpDEqLITnAVvaIiNnNWtSRuUXxpDOlzkKpPcCZwamerRFAtTaVvekrSsRwjGgJWliEeIvMmvXxgeEYyqQyLccGpsdDYmoRjWlNnLrmttTTicHSQqQqsSbBLyxNFfwfFBbtqdKpPUuyYFJlUuTpFoZztTOkKkKjJkXxnGiIGRrBbTGBzzwghHGWSpPsZapnNGgkxGgfyYdHhgkKGghLWAIiaKkNXJjYJjhHIBHhJEpPejsSAzZyYfFMmMDxFuUmThQqxXHsbhkKGgHqbiIjcncptTtkHhIgQqGHQqRriIhkorqQpSsemwWMEaJzZjyJwtaYyAOoIJPplqfDhPOoCElLlLhHsHyYuUvVywZzapPckYyvMhsKjJnlEeJaAjtkwMmXtSshoOovkKTtVKkhHhcKldaAagAeSsbBESsmxLlzQqTlUlLuUtVmSsSaFfgGARveEkCsxXIwxgvVxXbfFkKtTXcCdDYZgGkYXISbfFOIlVSAFvVwaALoOlQVjZfFWwaAJfdwWbOsdjcKkiVqzIKgQWhhHGVvgqQsSjJTteCynNpPYKhRFdDaZbqWLeLqQNUugGZeEkkdDKzvMYrqQcCWsmMSGgwLMefFEmsKFfKkIiUupPSrRsFfJZPpuXxeESpmiIzXxPdFfPpZzBYybDuxcCHhXPkKDdzaAvVLYeECcLBrdzKkRrziEIieAaaAXVPpFitnHhqmNnmZzkUuKnBbAaWapLlPQwOyYgVvFydlNnQqLNRrmMlQKkDDddFfwWZzQqbBhHqXyYBbpPPwbBrggvcCRtTrYyTlLsStGaAyBDnNohwPpSsyKrJBZzGgWGfjmMbBJnNqQDcCEeqZmMdDkKdJjFfqIiXAtTamVvgGmoLlOcKKqYDduhLlQzZczZUtTBbuQCCAacSsdPrRAxmKUuoObzHhzkKWkAHIiyGQWUKWwrRJLRXYlLRrPVJjpfFPUUGltKkHsShAaicCIkJEfPCCcIsgGKkxTtSsobBHhoQeEIinhTtjJGIRByYbaLlrdDnTlGghyVbjHhkDvVuUdEkCcKPpUupFHBbzTliFFfZeijkDajAWpBVSsvVviUkKEyYOdkNnnNEezZXOoZzpxXftGyJuUAaElZiIymMnyVbSHbBhTtupPUyYLlLlagcCUOoSDdzXFflLfhHAaIzZoFfFfhpmMgHMNUmMMmzZMmTVwwWPpWrRvtUuliILgJBTtKkMaArCMttRPprrUqitWSjJjvVvRJseqQnNdPpiILnmMNscXuUStFfTsxCjJWwHGZxRyOiQBzZLlzYywiiIMnfntmXxMGofLgGhLVvlmLlltcbBJcAQDwWdnVBbvLjJZCcJOotqoCcVofFTenNZXqaZZtjJTIXPGDrhoBTFQpTEHuUWwgPpGDqkKqDEvhVMIJfOsSHhQJjqUhiYNnylpAaPKkSsDdLbtbBaQqAtTKkFpPQdDbdDlCWwXHhxVmlLXFfLCccCrRcCaiUugGgGUuWwKkLzZDOoBXlLabBAGcnNJysthHdqKkoCcyWwbwWBMmnkHhKCcomzWksguUJJjlQqhHpHsQqShZUuieEfcCZQqjoAiFaAfuqOdDoKklymXxFDOYQqyZQqiEIxTwdRrDSZiVVvuYtTrRLsSlLDGPSspKkNngcmMmMRUvOQdLmZzHjJhHhMmMNKkMmgGnozZBTHhGgPIirRpYQPvVXwjJNnpYYyyVzkKMLyYVQCLJjeEDdeRPpfFOtXLgGYxuUPpXydPzwWZTtAmMaRqJkrReLXcCZEeoqQlJNsoOFWwfSsXFfxKwZcCzfclLnNUugGmMCFfgrRGuPDaognpzntePpfiQqzBJjWwWNjDixNnBbereEXpzPQqsSxXCcbQBbiVNZYRrSZuRZzrNlIySoGFKktHRrkoAYSsZlGgPanNXxEehHaAmUSsWRrMViItpaAmMCcJjEeEeKtoqDWfFxXGkyeEYSsZuUXnZzNOtfFZOUEfdTCesSySsrqmbZKkXfGizZrRWABuUwlajJAMUWEsSTwWtFCUnbBVvNVXbLlXLlxTLRriIFfhHXgeFgGUIipdBbGgkfFsSRnmnibBIaAKkXxJrLlGiuyRkdpMoOmPiIITkSsKfEjvoWhYkvROoraSsAVpPBbZkTtKmFfGijSeNnIiRfFrISVzYyCPtSRraAsAGybBYjJraArdDRytTYSpPkKsCgWglLJKHrNAQOotbBdDbBHhjJiIqOosSoOrxXeDeEXxybJjByYraAAtTsAGBXqQlpHhWbhHulGgLUYRryHiIhfSshhHzZHEHMmxXIicqGPpFCmMcUuSHhCcsbWtfIinarRKXxQqkSsALluUiLvVYvVQqAvVDQUETttTeurqQdQNaqgEaHPcmLlbALuUvVnFfBOokKtmwIDdpPiWMCtTcXthPpHvVwTTttLiIsFpPfUuLlSfFixRhkaAKHyhHhHedDEqJjYpcIiQdDjJaXkKSktNcCnXxHWRfaDdlubbIVvPpHjJmMhdDPpjJEiILBMYynOowWmMyYjgaqRrbBIiurrvOozZJjWXumMNiUqQWwtTuhiIqQjpQqJjAgGaTAajqdxXFYyfPaWwMTAOdsjFrRfSpUAaAMmaYyJjDaAwdDtLzxUbjJBuXqaAQZLOodaxXnaAxaAGgXwiIWfvVFgGEegybpPKVvXxVzfFWBbrRgGoGNJXxIcmwWMFfeDiIVdNnDTrUuRedDEtHhDPpdawCcAaCXxMmczZzVvtTVuUigLEebBlGBxoLHeLbjcfFDIiyYzUikjAjQZBzZqQZeEivnPLlpTtkOSWwISVmMwaAWdmrfFRPpGppMWwchiXxcrGahDdJjyOyrRvVqcCeZGmbBMolLWwiJjfiIiqPQZUmMuqOoAPtTdDLHiIhhHlHzavSsVdnNDkKOGNbZXKXHqQfFKCckhHrREehxtTtVfFvTkxlNtTOoOIiFREwpaAPBbROolfFRDVvxOoDeEPpddDXMOAaomdXFfxSPpshvWwqNjsSLZuUuSssaASLSaZzJhHDdveEVrpPmMFfgmMIiGRfFCcjlYyeeZQqlDcYyTPptxXAGgAtTaZdWeCmHxXhUEeAHgGDdlLhmPVvVLlvFfEKWiIUuwURRieEeEXxSFfsyZaUFrRUuXCcQqcCRZHxXDYTtybBdwJjifFIjPfkKtTHhkEfFcAbBHmMfFmsSMRCcTkKXxlcodDsFfjFQSstwWTxkUuokKaAYygjoJgIGgiQqmhBSsbRtjOMkMmKbFWJjwtTTsYaAlLlLujJjnNYyOortuUbWrRwGgCloxVVCUCcuJEqvVsSAPOoveEuUcBoOHhfFLlKgbHpmlLHHhhDOGNPpsSsarxUQquXRWNwWnKkOWaAMmMmHiPplLaAIEfIikKHhsSQqFfVvoZPpAyYHhaSPLKklwGLlfJjdMFffIfDuohqQHzuUZHJjoOIitTGwzZWMmDdJYATtuksSvanpJtWnjJlUYyuBbLNoOmtUynNnPTteBXdsSAamMcoOQcCnRKkQaAnmrsVvkdbBDHndiIDKktTIWweExXieXaaMmrRvdKIWwikqQoODVAkmvFAdYeEbjJSzfFKyPiIpPdMmsSDFaCcYyOwmxXxJjPxXAFWUkKuBZhZzAAPMKoOCQqCRrcAjJrRMGOdDoJOoxXCLdIhHiJjtbBrRTKkeUutTaAtToOEpZgGOoUuzNhMmRKyBbIsSDdQyYVvqQCtsfwWFpzLnonpPEgGMmxgyOYiWmcCAajOoYyBbJJkKjDmMpHMYVvyNecPpCiIMnPpITwZzmgGFfrRaAMnNrsSLDvgwfFWGVAaZQqdBbDSpkwTGKqQrRKkzZBbiNHhmAHhHhYACrjTFmkftTFwWfULlurFfTtqbDqwPReSsxXECCSjJslwyYWAwgGWahHxaAIrkGtTRZcmhHMMunsSBxXITqQtpsSxAaCcnlLyKkLpPGSwWpVlLvPmPtTfFrRIFdcCpyfBCCtTngcCcCqgGoOeHhEPZzXxPpFisiEeIKulLYywCctpPTTtWNTVvtjWeEOowCPqQrVvvPFwWraQqAcOjSkKwWsIijNhHnPqiUuIlPplIiBScpPCIiKJjXxuSsZpoxXEecCxXBcCbaAuFwWfRaATtHhgGzxXcCzHkKhNnmeBbrzZYynyjJKcczmuZwWzlLCqTNCcVPxXaVvrRhAaHzZswWeLlDdCkoHhpPeEPwsSFcOoCVifFKdDlZzIPtTkKTgwDjJWuPpIxXiUuzqQKlLGCdDtTHfanKPkJqAgTjZzUKtgGQqQcCqSoOffCAaKkSgzZGmMuUgGzSraNnAFgwgamCygIpPQqfLsvVlLqQvliILqdkHhLYnyoOwXxwlLlLWmMgMSsxuUXQzZqhHMmmqQGlPNnoeJBqkOaqQQFfgGZtTXqQeuUVhHgddWwDDGnaAEkHFfkoOoOyFfeEnZCYdknNrRFbBgGbAaYySNtTRBbFfbBwWdjDBbdNnueaFfkzCcZKoqwWlLHlnYyNZyIiLhHEGgcRrtcCJjcdDoaArKkcuVpVHhjiKxUdaAvVuUQqDNnVZYyqZPpzLaHmJjMbBGzQpaAHhqQPpsTKeFfyYxXoMGgIDpWwEjlNnLJyWwmftTFMKWwMQCcqKiIkzxcCzZXxXpPwWSsXzZEluBbpoIIOxHhPGgptTnNPxozoKgGkwatBHTtSWJdDjcPgjJGxXpVvNcFpSsJjxXdrDJBjJjJLKklVxXuLhYqQzZyuUFceyZzAaNCpXXYyxRlLOxXoEVdDoSVjJTtvtTTtZsSzsSLlHesOoFfRWHIiIrRUKXVvyYmwWYVnTUutNyYqQcFyxLlwbdDuJbBKkhTtcFXkUTtYmMAavLlkKVHhBerYyToOQqyAaaAYgraHhKdDDFtTnNfyYEPRcCbjJlLkKmMBlfFLIDOSwWjJKkAaOsDdSYnUrQfFCaGgpNbFfAiJjUuINYyBbOPpowWulVpPNSsnwgGRrMqQwWwDdpPOoFFOoJjfZiGgFPkmMucYaBWAXIoOaAibPrRcCYTtqImPjJHhiIpBCcbDiIIiPdyYvVHeeErREhvxJhOoNGgnHBbcCbBtTsSQqiuUIKkYyAaTtwiIWVIiefFEvQqDdtTriKrRMmkIRihHsSQzZqYyZzaGvVgGggOeEDOjRWcCOoBbFJuvVpSDdgIiGrRZbxXIVYykBbIwettRZrReEfryvKkRkaSsDdUubjSMuISsUmMujJFPpfMmRrolKkLNnURNKdDAakeeEeAyYzZsSQNTtweXxtgiBIhHbBwOZJQzpPmrRrRECibBalxXWNtTsSmHhBbTViISstxhLtSSsXbByYEuzRJZzZbcCBbBzDdpSsKwFrRfzwAaQBIlJuUjkKDdLuzBbZcbBbwpPWBCfgCcgvVbIiZHPphzBIuOfFqjJQRroUuQRJjHhrqRrNIinMmFfyYWwwRrIiSuUFfdDsWZznNTtTtORVvoOXTLlnkMEbVvLyEeGgbBRtuJjJjUnNgzlLZhHJjOtiVvuUmMnNvXlLdgGebSstTJyYAvVaYaAzPFnNfKaAkpnNzRrZQOWwWbBhtvNeNnPnyYNeyeJDdTtnNIJeEsSjqyYTtoeeEEnNsUXVWwcCUuRkKobkYKkPpyKBLaOoXvthwTrRPxxXXVfEkKyrZcuUwWCnMJjfFIrRnNvVCcMmXbCcRMJjvVxXmOjVvJXxLlKkwihHxCcKGgVWwfFeNdrRDfyYSsiyYrRISGgskKPGgwmMPPQqRLlIieEXdpPrRGviInjaxXCcLATtqlRrbLlLlYyDyDVvFfpBbPdgoZzzZGyYgdhNhUTtItXxTtXxLlSXxAaZzsNnecwbBHkukKUeSGgmMdtGgTgfFqQbnNXOozZxkKDLlBwWjtqSmMSssTtQTdnNhaAcSJjuXxUwWsKdDPEeVvpJIiXeQiwWWwsoOSDdIGkKzZNnbeyYMmEBfaADTtdTtFkKSFfsVJjHhhEriIRPtTpjqQJMtTfCKIJwWjGAaQqgHqQgBoOJjcaALlzdDMmSXfFbHhNnuBRrbqQaAEcjJgfFmMOojOoUBbeEhqxSDdEPpdDVLlvteOoPCZtTjJzXxiNUPTttTeEpyYaArRGgsLtTjfFADdaAgKkXPqQpxGTMmloOsKkPKrXXYyiIkghHpPGBbayXxYFDdSMhyfFYlLvVAQqcjJkKDdYyCgvVFiIOojJXZKywWoOXxXxidvMmVDPpWbJrcCZBGgkQYyLwIiEuUeEebZwRsSRPpotTOrWwrtTrRtkXNnmIiMHGDdDiLltkKHTtwKWDbBaAsSmIiKwYyWTlFCPpUuzVvZcuDdsSYyqkKYgGEeyHMmcChPpPUupIDFLpuGKkvTtViIMiIKkuVXxPpxhHIhVvmManNAXIihHZzAaVvxXnJGQpIiPFfZzqQRrHwDdBiIIokKLlOisSlVEIVvQfFqEeOeEyYgGihpHDmeZhHzEAaCcEhHoTsSCclLwNnWdDNVBbjJlLvKkWGUugRrWSswZzCzZhHNjBbYqCcQyrMmMrWZzwWLluUKkbjJoFfVvSvVMmMfFnNmMJjLtCcuUGaExXUTVvbBjOgGlLoJjwWCcNOonMyeESEaAShGmMWwgcpPCpTaAtkKJFAaVDdzfxDKkQnNqdPUvVuwiIXxhOEetTvnVcEGVvlnJjNUznNZutfFPwSsWdFfATtKvKkTtszdoOPpoiCcrRIYMmmTtvVukvVwJjWSsdDKUCcQDdEecqUubBbjawzdBJjfFgJnuXcCLdDSssRrSoZKkXxXsxSepPEvbBGgVYvVyIkbBzZMKcDcBXkKxQqbaACLmMloylLwCjuThMmDdRrwWbBHIykUugwcUuPpPpxLlfZzNnCwTMmtdDZeEnNnNhKWGgwRrSKCIiaAYyGgNNnNncCnUTOQqoxtFfRVvrcsXiuUIHheEcKkEYyMkPpRRrrejJRtqQUEebBukSspRnaevVcCEwWQqbBADdQqVvNXpRrRrWHAaUVWYPpkraGZzgLLlNnYuUPWwXxpTHXxiIwMmVFfvBbzKkeFfLzZceEGfFglLCPpKwWkvJjjJVvVgGPNfFSsbBNvVfFSWwoOdDvVxXvfFAaXxRsSsSznNZqKkNtlLlLQqZzBhsSVvOoOokKiKQbBlLXxcCNVveEZmMsAFKGWwgkKksJoOuuUMrRGDGvsSVQqEevEkKXxhIyYMmVvReErSeGgpnNGABbDgGVvWgyYGgWwaANLcCYADMmZcgmMUuGbZzvSsFUuOoIifDdPpTtPyYiUiuWwUYxXPpuUPpymnNMneRrKkRUpmMFfPTtGqQxXmeEtTMtTfTtFXxguQFYyfMmpqQaaAGgGguUHhAvVNnPmuUMgGFfdDyYHGKQqkFfZzgLldDCkiIiIvIiYWCcwRmRSssIikKSrQqHQzxHEecCyXxFNnLlUuuGgsSyYwaSIkKCcbXxcCRqfFYyQKBeEzZUSWVviIwosBbTHUZzlLjJBbSsIxXjDIASsvLPpGOUuLpkNnTQUkdDfFkKmPPppuUuVvUCczZMTtdDqkfFqQyBQqbpPCcEviIexXtTtTICYQqyzZSpHjLlJgNDVYfaAFyrgGREevVvrRPpXbBVvKSyYsDdZVvvUuVNnGgGgcCZzkoOwlLWoOAiIlLlLxfFXaXaAzZxbBhZzvVFfHLhHzZaAltTgVrRFffkJjKgUxXuYyBbGFEeUslLBlLbSuEWwVvQqXbQfiFNnYyvVNnYnNyZlLzXXGKkTtiIlLeEaVvpqQPZEezAgBbEenTpihaZnNzQqbBJRloOLrnNBvVGdfVLlzZMIBbEsSeDSsmMdRcqQazLlAakMmKYvDdcCUuVjJHaAhyCcxFfbtTwffFUuFjBoWIiIisZbBTymanNAqQOodDyzoZrmBbMgOnNoNnaRruUhHRfoOFRGgjGgJrrVUuJgsyvVYiGmMgISYysCcSCKxXJaALlvhHVIRriRjJeVvxhHXEqQbBNDAaZKkWRrSsCJjQqBbTtagGziXSlRrAuIiCbBCLXZTZzcipPInedDEohXxXBvgLoCNncuUIiThCJjcwbjJfUuacCAdDGgqGgjhHJQHHTfizWetIFfitTihYyrNpIiPyjfFJCcXIXxXxTvVBblBbGgLxYyuqQUXvbBVnNJvVrlLNlLnRGgIidxPCcpVqQvXcCBbnNDOohHtHvVhyLlIXQXxeEgGgIGixXIgEoiIUuBkKrcCbBQaAqwWRGrRgYyfhcCIoFfOQmaAMBeyNnlYykKGIimcCwlPDdpWwKkKkBbBSksSBKkEjJeVvZVparWrRQqAawvgBOoYklPpLcChHCcGWwHNoOVvDddXoPpOfFHhiIxdDaADPpWWwxRiIVvKsMmoxhyYJwnUJjuuCRQqrSmopPXHibBOaAohHVqFfidDneEkKvVeXGRrgZnNpPKDdLHhYcFmRrBbBwWdHhgGwrZLuUrbBxnNXREUrRueqqQxXosSOhtTQqgOoyYoOtsSTEvoEexXEJUucCnRrYydLtTaAHhYyRbBYBbmMymbmMsSJjmMareWwcQqhHCkXwWVvEuzZcChHoWaAKacFfqQxfFMEeAaKkAeKkEamMNnMRrmmXHhTGxKkvVeEKhHkSSCcsNnojJjzZOcCQYyBsSZcCYOfFXxaojYSsyJCcjJUuOgGtoqeEQNnWHoOQqUMuHYuWFcAXmMEekKxtBbTKDDlLJjFWmMOomwWPpMmaAMIVhQjRbaABsSKlrRLrjYQqAOVEoOePwWpTDEeJVvjZrbBCNfqzZQaRsgGSrJEejnNemMEXcCADdCqQwbqyhZzHRrbBPpAvRfpPQqmMFbBFxXfxXinNIUXIixuwLptxQpMHhYyxoONJuigGxCOAZzuUaAaEKkefFoMmjyCjJDxXdYktpVvPEeTPrjwsSkKVvJUeEqlLjxsSGBbrReEWNnrXPpSsgnNpPRKkrqiIQZxXVvFJjfNtwdDUuUrHZzdfFDmMhxXwpzxXZIPmMOBbwWoWwTtQMmfNsLljoJkKjaAYfdDFqQtTdDPppDULlueCcLzZIiqiJQqLlnNXfFmsoyYwMkXxKkXxIYyWwxXnqQAayYNBbOUdDLZzMUumfLlWTtwWTzZgEWwFfaAeGOoHxMZzyYYymXLTFfDpPAaOcCoqXxWXxwWwQqcvQqVVvGZzZzbftRNKXxxCwWdDchHtiITIisSluUdDFixBbTtXaAwyYdXVhNKkBZpBbPGxKLxXjJYyvVsmvVuBwWbUDdyYLGgZCczbvCcrRvvVPpeOaAipzZnNmMuUPDdqQfmMFSGuUgsoOICBUuzaAPZmMgeEGPnNEedDpIizpgnNGhHLlPsysSLltTkEQsSqpPmMmMPpDvVnNbdDCcfsSvVheEuCzxNbBmMIcoOkqVOoFfvarRrCcuZzURCqQcqqQuQKjJkBbqUgYyMmPzZJWuNnAFfDdaEDOikKTtFflLbTtEeFfjJjMmJsGzbsQqyMmkKjyoOnvuUVznNLPLzZIiiQrPprKkPpKTmMtxEiIzZelTfFsSkKVvLltaAMmrfFAaGJjgGgStqNXrRxOonQOoJZSQqsWwWrRFOtTodHhYaAyHQIotVvvVTaAoLlXxOOixXGdDgZqIyYiWMmwGTtDRLafyYhHIfUuOoPtTTtGEfFwfxDdmMXcCgGFKopPxXUsWzlZzmMZhRrrYzWwZWipPIukKjRrNpPwYySmMsAZzTZdVvbKVvEeRrkxuUXBDmXxMKkeEzQJjLMmRrRrvufFUBpPbVEeqSsQtTDlLWHeCcIIQqisebnNBAfFRhHHzYyPpWwbBeShHmMRSuJjdDleELdgGdLlGgtTDGlLKkhOzZXxVvLltTGkQqufMmfFFxfFYyEeeEhdDpPlGIigNnGguUlLcFnWwtZMTtovkKoHhGBNNnGTtguUaUuhRrFhHfrRkKkOekKEZgWwGLlwOoWzCaHhBbnwSPqQbvVBuJGKkgjXxPLlZzpkrmMmMvVzVvQvsSjJUSDzNSsnsHXIWbTtiAaobBOMMpPPoOpmYlkDiPpRDtSsrRJjPeTOoiivTtIiVYyKkZTtUsSLPplwUutTfFlLWjJBbehHGgDdYvVMmbnmOeEoVvMNnNBuoOoYyJFXxIwIMmWdOkKTdDTSsttmbEeEZzekKjJcekKoOyYGgteEfjJSzTtZtNrCBFvFJjPpUuqGgaAfFEerplLcCiIPXxCcUufzZxzZBbMmhtaAcCTkKHAoOzMmZfFbMzZudDucQqCZfFfRrFPHhlexXELjVUuKkZYpgGPLSswWVtXxTCceECFfGgcvBZKkhHFyYApyiIYsSlmOcFfDdCftHUutTtKBbGmMaAWwgsjJhlLIiHkKDiWvVwJjNBbzkKTtxXkKTtFnJjNcCfFpPYynNQCIabdDQqtLXxomMDdOQXUuxfCcTtFdSsjJCroZzObwWBJjavPlLppVvPIRhvVqQXxrRczZCFfHvfkKcCFrsiINYJPpCjsSXxpPyfjJeEWeEwFpPhLlFpPIVbFcCfBviRrNDdbpPBsilzZDdZvnOGgoNSsllLMmKkQzZLMWwyYKtTkmlqgVvGIiwsSkKvViXmMLSmZzIriInNRwnHhWwdDNizJGgfjfaAQqFJBuhEeBbGpPcCWgGdVbBRGgVTWwBbjJoOMmFfTttJuUYyjkKkKUSsJhkKIlLlLCcyYHhgGAzZCdDckWwKnNAbBavVBaAUuoWwmMWwtTRqQrOfFhYYyyHvVkKVvxBbPpcVvfYTtnIiNStTsUuzZyfiIFjJDdDdmMeEIiuUJjITtYyvVZzVviaAgGFfRrIvVinNTtZzUuCCcZqvVgckKVcCvPtTpCGnxSseEXDYWJjwydpPPKknBbaANxKmMgOHhRrJEwWFfmMelXaAnCnOoNOoUimMTtpPjCcJJjJdSslLDhHLljXxxjJXLlqyYQqoSvVMmrPqCcCXmMxNKkAKkKkRraDdnqQlaAMlLmBbLpPcQpPpRtPpTsBAKkWXxXNnSeBbyYUuxdDDdiIAFFffanHhkKDdNtuUrRlwJjXHhoPtyYSSsEeEeugGxmMlLWwYumXxMrRWwWWWwetTEwwzlLyYcRrwtqQxlLXeJjnNtTaAQqvBLNYynGsSglmgGqQIBdZzGgCcBnwWNDdPrRvSUuBJxXRrkOzZKEekIiQqDDdousSlTOBYbBHHhfFhAaEOokbBKeqQFfPpKkEDdMmYyIPpiqQeRrtlLmvVeEsWwgwWGSdamNnqwWJjtrnNSuUeEWFhHfUpGgPAazzcCtTTtdXxcCDGgQEeqOoKFUuLlfUuxboJjOBEMmeEeciItTkrRKkqpdDLlZHnSsNpIjJgWwGqQgGOBbBNJjSTtsGqaAQZzNvgGVnUmMuuUFWwfgSDoKkMnNmuUdmMdFnJjNXxLJjlfFfRrCceIiPgtTGZdDtEAaeySXKEekxdEeLlpFzZcHheEvVZCczAaqOoSZzsvVQxvcgGCzwWZshmMisSvVSZDyYJjdzsVwWvqIaAiTtnNgpPPpjwbPATtbBkXxYZzRLsuUfFSlvcvVCFfsSBbbBEnIieEViNnmMlLSsxXIvdQqyYwSlLsWEeUuILWwwWWZzYLmBQPprRhMzZmHqsSbrtKkTOookKBDdpPClLplLcuiOcEeWwSsvVuLlIiiBZzNYynNnpPbDBbxXrRUuNnlYNDUudnZtTVvzQNTtHhwWcSbBsCrSsKnqWXxPdDpVLljJvvVjJrtNtkKOjLlPpJDdqdDXxtTkXaRrAwWbBKkgGZzAKkaHWwhuURKkqhHgGCGgmNnngGNJrRSsUDdukKVjwzzZdDgGdDpfnNFPtHhKkyYcvVGgfFCUyYtTyYFfMmJjyYVkKveHhxXtTEYyqQVvQqeEXxewpaAQqeoOkKESmMxPpmmXxzZUvVuMvVXxqQoFfsSJjONnFfpDdFZzLSslFAaffhHPpFfFffFIihiIHgGTtHhiIPoOoEufAaFUdDjNnhHJeLlHhIiOaABoOeaAErPgGSsEVvbyYdDwtTrMyLlYzZbBmTtSsSLlNnsaAHhsGfviIujgGJJjmPSspyXxYCcYygbRNVRrvUMmlLRrgVtTqmzZYyoOqbBQfRCrRNnhAlLazZAaHXBbxsTtfFFfdDxXmFYyfCawuUWFdcgGpEEUuebBiIezZPtbBTmmMMueEUWRrcUuDdDzZKzZkAalLxXxbfdDFvYyUutfBshNnHSbYyFAaogGgGShHsAMDdmfoOWwqQFxiOomJjeEUiIuMAbOoKZAazjHhoOHhJjbBkhDdHOoKRDdrqXaALlrRYyxYJHhfVvEewWAazLlbBZzyMiImCcYsSBPpvqxpPJvVuUCcjiIiIXPJPpjyXxcCVNSsnCLlvVwiIXxnXrRzZLlpPxUuNzZYyuUWwTtDctTCchzZIWfDdquUxXfFsSQFSsbBwtTirRNQqQqwWHxXqbBQRrhrVvRsTtiMNUMmupPriIEedSsDPScOoClLQbCRrWwsWmMwoOOQsSZSOoTgGttDdVzZmyYjJhHPfzZAacCQfFSwWVObBoZqQzvspnSjJrLlRIuUiFtCzoOtCclZQqBbNnOoEeAaLkKlIiPpVvzUTtcaAQqCXJjxhPYykHhKpZCdkKDcWlLQqeEwTVmMUuvfFKkWQqROBDGgsapPAZnNXxZZzzCzZVvLlcCcZijJqvVOsPKYbBfFHTtITtyYCQrYyRuqQUuUAaqoOczZIieLdDlTtuUvVEihzZHfFASsaJIBGgPSvvJjVVoOsjSIiBbAlLiWNnwHhXbcCBmMxaAtrRTgGhcCfFcCZPDdkKbaABpPHIJjVviWRUurFyYYyfDdEUcCiIOouhHzFfZeoNcjgGVvJsSqQCnMzRzZrpPuhHtTZzIZIoMmBbeEzSsMFVvfoOVcUuCOowWvUsSMmuNXyYHhxouUTmMNMmMMTXxOopPhHtnVNnvjCDSsdqGgGgQXlLxXAeEBbheLlgBbbBXxGElLfFfwWKkKzZJRkKeEIiwWrjLlkOoAaKhMPpmTgGgGUuMmtFfkKjUuJLixrRXBbIlCdDcGgHgHhAZzzZgGUKPmFfMpkqQdDukWIiQqsWwSwvFfOIoOtTiWwomMRrGgcbuUkKBCfFRrAaRrVKhHVVqeEqSsILzpQqlLjsSsSfBweEWcCUJXxYyFfnNLlkKjMoOEehFfIqQhtTHhHnNnxkKAaXWwQyQoRnjJNrLKklOxXqvQqUMmxXkKuHgGvVhbBrRHCeEZRrOMmozckaABbuUlLIMKFfoOLlAdDTtaAupSsZzZzPKJjzZHsSQqhkLlKzZuUnJjNgGsSEeXwNiInWBzZdlPpLoODbxPHhvQqENnegGQqCYcCybBcCDQqdVUEeuvViIZzZzOoFayYuUgGGgAnNTtsjJSfGFMmfvVBUubgvNncVkRrGDdgyYNVvZzhQqHgszmMZQhHBbqSrfFXxKMmTToOOottkEesSrRHTuUtZzCJirRtTIhxXyYHTtRGgrSshHrKkFSsNtTovVgGEeOmgAaGhHZzeWwlLAaVBhHbeuUEFfHIDdmMhHuUomMXxWwLSNfFnTcCTWwtjJKkTwWPpZzlLhHZzUsDeEdSKUcCFfuBLZqQzWRrqgGIbTtBSsisSQwQqIiNnGHTtdDhggGFYzqQSsZiHirhUuHILlZzEeUudDiReEWmEJjeMAhGgZzdwWDsmPpyYwWEtTecCyTKkQoOlLqtpPycCmcCtaAzZESseXeTtEaASPpNGgYMfFmwSsSsWjJYyoOynhHWdDyYvVwDdafUuFGgVvxHhgcMmCqQcCrRGHJbDmMDCcRvVrdiHhWwfmpPJnNewkKkCcKaAiIiRRwWjJPdSsieErWwRXREekOoKrFfxXxEebwWBXUuELleSTUdDxXRYyreEuOofFTJwfFXxwWRiIrCcVvttTTEWwxOoXkbgGEbBYygGejJEeSsCjJGgfWDiIdwokPpKLUuYsSqsSbAaPuUpDMmVIivZPoOOoALlaHYyhAaqQqQUCconNOuJYylLjsSpNnNyYnqkRrKQzsrrfyYxXUuFMmfMmbpWwihHmMNnGgKkkKIiItuUSsUuxXYAUuaAnNcGgCKkULlzlLHhSsuTiItPpUYyKSnmcjJCoOqQeEMFfNhSsHChHcAQDdpPqLleoOEgGhkKZJjzZlLBVaAjJceEnNZhHzsSCBbzZJvlLSWwspaACIicpPuUdDyYRrULJjriIUuRrKkROUuDWwoOdqQmvCcPCcTtAqqmMZzxXNjvzZVJFfIQqhHHcCEeNnhiwsSVvqQrRoOvoWwWwOLAaPpHhnNujJBbzZiDzZCcdDsSdnNmMjJrRuUIWwnNUiwBbfFKkVvLllLpPAyoOYtwWIDdiejJaAjJZzgGhHbBfFiIaqSsBbQkuUaADPTtpNndvgGYyVNtTnnkKNlLXxivVGpPAaSsiIxXzBbCeEKkceLpZzPlPJYDdytTnNmMSsCmMcqvVWwQxXjOoKZzaAtTkSsgJjGpbkRrABbaUpPyOoYuPFffEeFFjJfpcRrXxMmMwSsCsSyYVBbszZTtgGVvqQIiSXxvneYtTyaHhAEoOAFVvPpWPpwcBeEPpTtbjJTVvFfvVpVzHfkKvGgZzpuUPpFOsSovddDDVSgGsjjJnNFfJRtbjJgGkKBbBaATrdDIJjiRzygsSSTtsGkKrRVvsGgSYSQqaKkoOAPdVvDnNpoOfFjwWfpPkKUuFJXxMtTNHGoXxHhZvVzeEHhOlLRnWwzZGgMZzqhHCcXvVMglKGgkLoPpaAOGMChjbBLScCslJpPutvVmzZMAaXxHZpJjPfFtTmXuUAaxyCLlXxAaRAarTeFfgGHBnNbxXhFfJjnNlLQqTtEKUuURrybpcCjJPBYoIiOyYFfSsceEZzaACdGgDcIiVdDvtToYyOYyaAPjJBbOTttssSSdNntsSTDeEdIiKWlLfFcCIiRrAabBccRTtrCrhmtTzZxXMaAZzHpkKxXXfVvyYFRrFvkyYaXxUuIcCiWwoqQNnyYRrYEcSIZzBOobiEeTtmZOoOyYoNnztpPjmMKkqRrQJVOodDtTLlvsgGLBbAalnmbKkvViXxPZJjhHzpfxkKXpLltfFrTZxRrXzYytRTAaeExXAaOBboLlpPaAkVFfeEvxgEeCgGUuldMmDxXLhHxbvVKkcCBXKnNkcaAGnNWwqnNvVuUQXAaRJIiFrRXxLwWxXsSJOXxzRLlJjrlGKkgUuwVKkYyvFnNfOTtoodsSSsSsnNPpouULliHhIODdDpRrOoPOiFGGggffFmMWNnwIexXEBYBbBTtblLMlLfFmyEFfjJVvgfFtRrUuyYTmAueEUzZatuUrRvVTtwWTOokoOKkcUCcuCnYyNbBEzZeOoxXIbIixRmMLlrLmMlkKSseqQEIiwWlMmaAWwvVLSbBsFHheEbBKkXWwPpxLMmlGgfvVUulLlLNnwWSrTtRMHhGJZzjTtiaJjUuAlLIRWwWwhHpPdDrgAKkawYfFtTyWBLlbmQLlnNqsLNDdrRIinOVlLgvVGVaAvpPGyYgPTtGgpPikfFKeEIVvjJVvlcmMCpPLluuUxXSsqQSsSMmsBboOUPkKpqQzoOZAaERZzScCMmBPpbdDqQvVHxXhsSgtbAagGBTrvyYDdHhZzcrRCNnXiIxzZyIiYdeEDWlLlBbLOowVzhnNHoOlBbLKQCuUrRcqYyklLBbZzkRCcrZzzRrFIizWwZHjJpPGghoxAaapPGgAqQeEXOaAfKkAaZPpDdkxXaACcfFoObVviIiIBxoOXrFfpPWPpURrTtuCuUchHwENRYyJjXxrnebTUutJjrRjNnCcJTticCIbBBRKLlnNdHhDTtwWUuqyYeMmEsSveZYyrRRrzJSsjjMmJZzKkUoOaAEeuVvqJjgUuWXLKkbhHeEgkKlLGDiLlIhHTmMtdxXDwWQrRgGqkKqQoOZYyNMmnaAntTNVvuUIizxXyYbDdZzoOBaRJjrQqLltxLlSWwsCckKqQNnJLlRMmAaOoBbUuuxDhHxXdXLsSoKsSkTzoOZYGKkgdDxuaAUXyFftTjmpRZzzZNKJjvmWkKNnXRrAatTdQqoODrRARrNIiLlLfFlAaEoOonNOenaAafhHQqFLHhlUqaiIAQVvlHVvhXaAjJxrBYlLybHhbeEAaUuqQbBjJeEIzrRZZpPzeTtJaAKkjbzZBchaAHCdDEpPiXUuOoeEcBbCMmxTmMNyYnJjLeEuIiHhUtTZzlSlLsvVSshHPdDmMuOGgBbocFfwWCUUutLlnlLNJjmTtWwMyYtTPHdFfDsXxSUuWwmMNnhwEerRWpkKAanNgnNBbQCcGaAjOoJFrZuUzBbRYMmyFOocCwZzWMwWjJvVNnpMhHDxXyYoYyZPpzOdKkbBVfFvmFRragyYNnbAaBGAfFfwWzZPkKIiwTomMOtLlWRrxXFflNOidDgGIoaAnDdXLkKfFlijJoOrRGgIdDNnQqpPVvshpPnoZzOnsOoSzZmKxXSBbskxXMIXxioOqQwKwWkKkWSXxqlLaHhGgdDMmFfxXoOEzZuUhHbBvVEeeIiZOozKjSsxiIpPXHhJkcCsIiZzqsSQLIieFGgPpCKCGIivVgqatlLTSsAQNQqngqQZzhHTtvCqQcVGJjSOoQqUDbpPBiIOodQdCPpcDqqPpQXxubBzGgaAkKZIitTTtZwjJYeEDTtMmdyKkKYJjlLyzLbBlgGHhNnMWwAaLlBbIciIHWwhCiPODdzZoGgQqtAaTBFiaAItTKKgGHhkWAawTbBMKkcCoOFfIiRrmGgGgtkKKkoqQOkREerDrRdSIiWlLXxwsknSIAYyaiIinVvlLdlLDNsqQHhfmMwqQWwLUuGglWwGWDdalLIiuTtGgUWfWwFsSdDUuwwWXxGgmfFMzZTaKkKktThHzrRZLlsLlSMuUunIPzZpZzrpPEzZeRiVeOoKkXxqiIzZsKkfFbBSYTOotaAyIKbBYgGsZztToOrRSqQSsrVvNyYsEYVzZXxEeRrtdDYOoefFEqQVvJjJjCcSsJKjJkjBxXjITtNngGmMMmMEeoOmiavyYJjVAmMsSjhHOorsSRWwhHIizZsSUuIizZQqJcCJBbbbxXQqTmMturUuIioORBbyPpYZzdDDdUBCceoFgGUufOyYCfFcEnNzPWwpZMxjnRrNJUuFfeckKCEWwXDfFdDQoUQqvVUuGpPjJZzgowWDQyYqJGgjdcqxXQQqkKEeJjWwrRQqCceEsPpuUoOwjJWjwWJSoVvOZzCqgGQqQYybgGuuUUNnbYyBuUBkKwWrNnRGgvTuMmUtVssDdSYySkkPpKfYyFJjJjbBWwtTXxqXDdxQAiInUuNaWwmfFMVcCvfHhKMmsSklmPHhpMdDJFvBbVfsSrRxXiIKkalkKjJLAVvxvVXjgnNAapPYyHRIYyBbiFIxXkKfhHPpLQqRvVvKkVbTtBrFflESseAfFaVvSsSsFetYyTdLlSssShHJjCcUZzhHIKkicCIiZzbeETtbBeEVWwvBrRQquauUJSEeszHhZEejgGAZzdDKkLlsSYyDLlFfKBbkoyEexXHcCOoEekKhqQfrRKWBbrRLlwkFPXxpWwdDPxBDdqPppPQPLlIipbVvXGgewkKWhHEqQyZKkXxoOnNTtPEeJCzZiCKkcIcuJjFfUVkXxjmMJAaKvdDhHOoHhjEeVvpuUYrRyEebBTVEeGgBboHNnDdQnNCyKkIMDRVvrdAkKaJjJjrbYyaAtTBRQYyqfOkKIhotTOcCHIioKkHhBKbcCTtBPhHpmMkfLlXxXkKyWwYxwLlnesSENWZoOzyYYykKnxXNFeFfIiEbHhRrlLcCcCqQgiINhHnHSsiIhRrnNfFstTSYywtTWfxXFpPjgMmGGgwWlTTttTiItLaAlLOoqQaAQqRBbxiIvVJfFPpjXRBbrEQqjSsVnNMmSUcsSCuDdsgGuUmjJbBMXxiRrIhHpPtoxXFBbQCcqOvasSdDAVxZzYeEyOoXodDPpfcClLGgTtEeGgpPEeZMmKLlTtNeEKkGgHhnNSsnmoOMkPpdhHZzDqQKkguUhXxCcHoOLCclhHKgGkGcCgKkeEYyGrRxXjcCvMmVpCcInNcCQqAamzZXxMZziIUunNwCoOcWFCPpzZNXxnJjOoaGEegoqQOAcGZzgfLdDdDZzYykIiwWRrKqQyYQLlqlgGCcMFfAamNgGnbBCclWzZwLiFDdfjrRJqBbQGEegiIswWSLmMyjJYKkOcCaGjJgxXVvAJBbjhtcuUCTMmcCPAapTtPpvVmFfpPqQrGgWtYWqQmMwyTnNwRqQkKTtQFuUPBbpfqSsMlMeEmdDLdrRDCLlWbBwcVvwWlLmOLlojBbJfFWwmMtxteETXTlfFLaACcCrRtTcHIihuMuUmUjmMDdJXxoXPpyKkEefbBFYiIxOUuAaReEFfGJjgrjJlLTtIillahHSsvUAauJkKjPpoOVZWkyYNblLBjJnIijJKyYwSsgGEeyWJjJCcjwuUYIJjiemMwrRQgmMGqjFTtfrRJGgWhHLxXjvVJzUuZeElbvFfVlTtLBNnEfXxFipPIWkKJXxjFftJjnNOomMTtwWTKwlKkLeExzMmPrRpZXyYGcCsSBSUusbWwMmgWskKSkDdNbBVvnNnWwwSxXpPVXxAaJjvEeCMmcUuXxTlLtMmxXwWrRooOAjnNqQCuUaAGgcJNTVvtJjnQqEepOoPTlLtaOspPJnNLlZlUuLzEeNXxbBBbnhHfFjCctUuFXxKkmjJpZzPyYMHhfThhHiIiIJOojgGPpHTNnLUulVZzvTaAthjJGwbBNbBFmMfUuSwWsGgnaAnNRrSwNnWsdaHhmMADYqQfFJjogCcGEeaAONniTFVOovfXxnNWiIfFYywlLtIhHSkKzZsCwWQqLQqlXxUuBuUbUWwGguymzZMJrRBbjSsDdSsJHBbhwctTaIirRNnAChHoOuKHhkUWZrRzpqQPLlkKPpBOobJVvjDdqQhHpPFfhpPHBbSsUuyYebBHhuUPpEhVvJjHBboOVatTARrckmMKMmCIiabsILliSoOBfoOFGgAflLFhHRrvVYyyYMmuUyYqQUPpuMCcucTttTCSsJuUFDdfrRNPpnLlCaAVvcXxUmMutTEeRrSsTtdDiIiIRPpoOEetTXpcCBbPHlkKLluUUuLwRBbrWSsSOohHiKkIgGfAaFuUDPpdSsfPpFKkkhHCcHhTtfFbBpBbPKoyYOduUDKkYymMCcUKknNevVObBeEoeRLbBlrEebBNnDcCAabBIwWiZGgLKkcClLhyYHUufFlZhHfFzXUulLxCcaAkKweEUuWDdCcCccsSyYCxXOoQquOLloLlxXsiFfISxXUckKtTCzhHHhxXmgGcPpCMdheEKkHqQhHhHyYbrRYyjJXWwoSsOxtTsZzSirRILveHhEfFVvOoOXDdxsSqDdkKQosSRLltTKkrVTnNAawWrRhHtZzwQqewWESsWooOoOrRxTYytHhXNWwwWnQqOxXOoiWwINRzZreEnelaALELlCclLeEKkOzZmMooOSszZBbSVvTtsLllSsiNnWwIqQZzLlhHmMyYXCcxWwBbJGkKgzCcZQKCckZzvVqaAxXpPjNnjJTtOoZIiAazdgJjGrRYyDzwWZAaZzMmGgoAazZQfFQqqtTlsmMSJPpjLpPloOceTGgjJtECbBLJjOKEekwWQqOEewWoqGgGgNnnTAatCcNZzgGQSsBFxXZzoOBEedDbBbvGtTgVTtfKkRrWwGyYgaAFiIfT diff --git a/2018/puzzle4.py b/2018/puzzle4.py @@ -18,7 +18,6 @@ for line in file: sleepiest_guard = "" current_total = 0 - most_predictable_guard = "" current_frequency = 0 diff --git a/2018/puzzle5.py b/2018/puzzle5.py @@ -0,0 +1,35 @@ +polymer = open('files/puzzle5.txt').read()[0:-1] +polymer_chain = polymer + +still_reactive = True + +while still_reactive: + still_reactive = False + + for j in range(26): + new_polymer = polymer_chain.replace(chr(j + 65) + chr(j + 97), '').replace(chr(j + 97) + chr(j + 65), '') + if len(new_polymer) != len(polymer_chain): + polymer_chain = new_polymer + still_reactive = True + +print len(polymer_chain) + +current_shortest_polymer = len(polymer_chain) + +for i in range(26): + stripped_polymer = polymer.replace(chr(i + 65), '').replace(chr(i + 97), '') + still_reactive = True + + while still_reactive: + still_reactive = False + + for j in range(26): + new_polymer = stripped_polymer.replace(chr(j + 65) + chr(j + 97), '').replace(chr(j + 97) + chr(j + 65), '') + if len(new_polymer) != len(stripped_polymer): + stripped_polymer = new_polymer + still_reactive = True + + if len(stripped_polymer) < current_shortest_polymer: + current_shortest_polymer = len(stripped_polymer) + +print current_shortest_polymer+ \ No newline at end of file