diff options
Diffstat (limited to 'advent-of-code/2022/03')
| -rw-r--r-- | advent-of-code/2022/03/1.c | 50 | ||||
| -rw-r--r-- | advent-of-code/2022/03/2.c | 47 | ||||
| -rw-r--r-- | advent-of-code/2022/03/input | 301 |
3 files changed, 0 insertions, 398 deletions
diff --git a/advent-of-code/2022/03/1.c b/advent-of-code/2022/03/1.c deleted file mode 100644 index 447fb78..0000000 --- a/advent-of-code/2022/03/1.c +++ /dev/null @@ -1,50 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#define BUFSZ 1024 - -char buf[BUFSZ + 1] = {0}; - -int table[53] = {0}; - -int decode(char c) { - if (c >= 'A' && c <= 'Z') { - return 26 + c - 'A' + 1; - } - if (c >='a' && c <= 'z') { - return c - 'a' + 1; - } - return -1; -} - -int findcommon(char *buf, int len) { - memset(table, 0, 53 * sizeof(int)); - len = len / 2; - for (int i = 0; i < len; i++) { - int code = decode(buf[i]); - if (table[code] == 0) { - table[code] = 1; - } - } - for (int i = 0; i < len; i++) { - int code = decode(buf[i + len]); - if (table[code] == 1) return code; - } - return 0; -} - -int main() { - FILE *fp = fopen("input", "r"); - int sum = 0; - if (fp == NULL) return -1; - while (fgets(buf, BUFSZ, fp)) { - if (strlen(buf) <= 1) continue; - int len = strlen(buf) - 1; - assert((len % 2 == 0) && "len error"); - int common = findcommon(buf, len); - sum += common; - } - printf("%d\n", sum); -} diff --git a/advent-of-code/2022/03/2.c b/advent-of-code/2022/03/2.c deleted file mode 100644 index f91ea46..0000000 --- a/advent-of-code/2022/03/2.c +++ /dev/null @@ -1,47 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#define BUFSZ 1024 - -char buf[BUFSZ + 1] = {0}; - -int table[53] = {0}; - -int decode(char c) { - if (c >= 'A' && c <= 'Z') { - return 26 + c - 'A' + 1; - } - if (c >='a' && c <= 'z') { - return c - 'a' + 1; - } - return -1; -} - -int process(char *buf, int len, int n) { - if (n == 1) memset(table, 0, 53 * sizeof(int)); - for (int i = 0; i < len; i++) { - int code = decode(buf[i]); - if (table[code] == n - 1) { - if (n == 3) return code; - table[code] = n; - } - } - return 0; -} - - -int main() { - FILE *fp = fopen("input", "r"); - int sum = 0; - if (fp == NULL) return -1; - int line = 0; - while (fgets(buf, BUFSZ, fp)) { - if (strlen(buf) <= 1) continue; - int len = strlen(buf) - 1; - sum += process(buf, len, line % 3 + 1); - line++; - } - printf("%d\n", sum); -} diff --git a/advent-of-code/2022/03/input b/advent-of-code/2022/03/input deleted file mode 100644 index 167796a..0000000 --- a/advent-of-code/2022/03/input +++ /dev/null @@ -1,301 +0,0 @@ -gvNbShZZgQfWdQhdPQmggLTFLwmwjFqjVVgM -CsJnHllcsnnnnJrGRnRwPPLVmFLHLBjFFVHmPT -JlnCtctJnJDcJlDCRpPrSSQWfphzWZfbZSvfNfbS -WjvRSdSQjvpjWzNlnZlNZqCCMzZZ -nJtJsbctPBPwLNcDZNNGLClC -tsFJHBgJwgJbnvSHHWVWHhVhpQ -zRzPhCCSHVZzfGHZ -qBsWBpqBwBcvqqWgdfZrprdggPHHVZ -WWmvwvBbnWmnwvWcbmWWnqNCRSDRRSSjjSDbPJbRjClLhC -rQrznfHHhrHzllzlzTGcJgtJ -jhhjjSZVPWVZvSFtTttLTglgFtvm -dqSCqVWdbDSSVqbVVSqhNdrnpnCnfsnnwfnsRpMpBMrf -rTnvrSSHvHtnDQVDtfmW -ZjCglhcCJschpZbZgbtGmRtbGmwtQtbmtN -FFZCghFJhlslFpjcdFTPLHHmrqTMTdzBLHLH -WzDfrDwwDCCDMnfDHHJjTHTtNdngdHtQ -FmScGPPPPmpspchbGHtRsjdJJJWJWNttgH -bvhFlVhPchPvqWLwqLWqvq -RcchVlCCvmhDRjNJJJjbjllZlJ -wPwFGFMPfpdtqbpwFFfGPQZTWTZjtzQWTBBQJzZjZZ -fbwPqqMPwdgvmDVDhmRCgR -SSQggtQVQQgQGmGVthVnWDGjCBLLzdDNCCjDGWCW -RcHcHbFqbPMZRFTvHFFFlcZZBNBtNjjLLjDdjLjDqWCpNLpj -sPPclZcsZtMPfVsnnwwVJhmQ -jlrwpVPjMwfzZfhfwddH -DbQBGgBJPPBBHfPZ -ggGSQTnTgQGbSRQRPrNlsjVjMrpmMLnrrW -MzNNbMSrZNSSvGWWznwGQlTG -ZCFCJHqJFjqTTqngPwPG -LCJLJCCFtfjsJCMbZSMSbbcDdBfd -LCdjljfJJBfLDCCdJqGqsGGtmBsWtbGmSS -gpgchRcPgRRQNZcpNhgNPzzmGrmrGwtSSswqrSGbbTzt -QgQvNppRPQcggZNccchvNZgCjlnsDLDflDdfjLfMDVsMLv -jfSfTWfwTJffQQNwTCHnGGGgHbgqGFvF -LmspctdsLDlBLPmFFgqbqFFbqlnSRS -PSZZsctsDDtdBmzBLBSmpJjMzWwjVfwJVMrNfwrfzf -zFZqbRNRHNHhqHFqzNnzzqDQVFMggMgDpmJMTgpVTQFJ -SwLVsSWBfStDGMfDTDGGGT -vlCBVsSvCRrHRjCqrn -ndGVddlVdrcGlGcljdVGjCgfffPCCLfCMvqWvPnqgn -FNtRZBDDSNSNStDhFRNQtLgCMTCBqvLMMTfJqBLPLP -bwQwZhSDFhZbFSNccwzwHmHHjHMwsd -BrSDgqrgWzWDwJBzMDWBLjpmVLFfFPLVJjVVPLFV -cNnRlvNRvQTcnZwmfQGPmfVFPP -dsCNllvTdnntTlTsHcdCRtNRBDWBDWDrWBhDBqMBDqbzWwCr -stLcchcTwRcsVTtftVVthchqmmCCFvWmmgSgQFCwGvWSFCrr -PljDbZbzjllHdQNWHMFGrMMHMFrmmM -njjjzbPdqRcRQQns -BTBLwzmqWNbpzqNzLppLBnhZJcJSHThhnnJZHHSQnr -RfQgDjgsjVfRFDdvddtvhhhJCnrSnMZCcMSCSJ -QRtjtRQQlzlqqzzzBW -FnzllplJMntnzptLFzsjTVSQcSjSjQFFmdQQ -wgwrBrwGHPGBqHrDcpmjddSQTmTGVmmG -DBhhNBrCrMvNvzptpN -LgSbLLRJQSzLCgJRJhWCCzRBdZdcMfcHsMdFFjfPjsCHBc -nrVTnmrrrlnGGmrlVwVZPFHmdsZHBmjMcdjfcZ -wrnTlNpvVVrqFrtnwGqwwrTpSgSQQLbQRzQSQRJbQpDbQz -pgvmcpVcpwJppwgwvMWfHbRGRHDBJbWGfGGb -hQqFqQNhqdCPNhTQCCFbbjmBHBbBRjGHBDBGFj -TtdCCNlPCmssnqgvzzvvtVrgzzrc -JltddTSgtLLvgvdldgvWPZPPSjWMjCfWNjNWPG -FrwpbwhbmfjGRpGPNM -cmBrBcBnmFBQqcFbscBhQfttznJgzlLLDlnglzLLlg -mDhRsDzWZzGhhhWpZwzwGdfbFsfFTQTLcNFfFrNvvcbT -ngMHjjgVgqHnPlnqtnClMHbfCJFbcLFFJFLbrQNbFQcQ -SlqHqVVqPnBHSHHljlMndBdZQphRhdGpzWmWWwBh -hVNhcfbSSNMfjjMlqRCqpdzpRJdnhl -sBHPPwQwttBBssLCHzDBlDDmRmpJdqJJJd -sHHwtsHTWwtZPHtZbbVSgMbGCNjNvN -SgMtSMVChFBHBFdCwhdqPcPsbRVQqsblDbRmlc -jlrLWfvWvzWWzmcQcqcNbmNDjR -JpLznrnfGrrfnWWzTpfvzvdHHCgSBwdlTMhCTMFhBBwg -fptnFPLsttddDdRhQShQzC -BqGHGlqmmGmlJmNmqlbbCzSCQHDzSjHhfSShjfVh -fbrrMqGGBlNMGNqrqglmrLZwFcwgFwsPcscctpWLgn -TCMMTtWBqCMMMWWMSWhNFhlNBNlNHwNDsvhw -frfdrbZJrVLdZLbnJcrmvhlhHshlgsZsHwwghZ -fLRVvcvRVpfbcfVVJTqpWCCSqCCTTtjjPj -vRCGzdTtvdBCTzCdmVsQjnVttngthgnQHs -rLNZlrwrjrFLMsggsQpsQngqMq -NfjZWcbffDrLZfNLbDczvmcTvvGCmCBBmSdP -DSqdzrHgJtSHMgvmnNGdcmCnvssN -ZwQLlVlRVVWZFZhbJZVjRJscvBGcpssLpBcnGpBsmpBs -TwwjjQJTjlhwMfTDgMrfgtqg -HhvVhgddvdvqTqVqHQgjgmCPWGrcWsGWPcvlsWrWmC -lbJBBFbMlJFRCmsRmRPtCtwm -FMLLpDLnFpFJbDfLnZZSzhqHVdVQjgSdlQTZ -mvBrszzsrrrGsBDvBvszDRQDhjCwWdLhJdCjjWZdqqdZdW -gMlfFVccTGMGPMSCdcLLdqhjLJWWdZ -VfggggPVltVSlSlHfgFtTpfRGmRrrrvQpQsrGmnvnQbzmz -HjtMgWbHBtbtcggVcHwMwcdzpZFGzGZFpvFFZZWnnpFG -RNNrfmSrSSzdGBzFfJFq -mNsSrrTPPRshmsBClRClPmSccVgQVHjHwtHwTMbTVwMHgg -pZmmLpQLDJBCPCssJTsCTc -SwlLwWvSwNSSSMSMfWLvvVdPFzjfTscdjcCsjzCPddFc -vbVMqGbLSVMhDQnRRQnBqH -lNmNwlmlbhhfFNgpJLnHfTHfTdnTML -BGvCwVGVPSDWDMMJTHZMpndH -rVcBrPSPCwWqPwGCBCSrqlNNQFhsQhtlhhhgNQtb -HqZCQRQgWjpmZHRHqQjttGGJQNQtwQGGGbGrJz -SlddfFVMLncbJJMzMzzMwD -ndSznsdVHsqgpZvH -sNStMtNtDztrvrRGPRRRRrNzqcchgJJLqnBScBcJThJggJBT -QCWWZbCbCVjVbFVFbVwbnhqLqhghBLwwTqJJcpgTBL -ZlHjfHHFWFjCdbHlQFnfdnZFMzPzrrlMrtrrGRMsDPrGvGPz -NnDHhNNldhNTdHllpptCRtftzmGBGmVRVGRH -wgZgZJLBwqgLSWrBvZVVzmffWzRmGsGmmssm -bgqPBBLbPbrrZBjjlpjccjDdDchFTNlc -WRWNNRWNfLZtsmtSWrtLmWgTcMcPrpMTcVMMPPBBqjcg -QJJDFbpnpJdlcwcgBTqlgPwc -GJFHJGhHnpWWShpsRS -DHDZvDQWdHJMHlJf -RhhnGLnBtGrnLjwwJTTMTdQccllSMQ -rmFrrBGQLQFLjbFnBhQLhrRGCPVDWzgmpsWvWWDzppWpzCvC -bsrJrWgWJvQRqbbRDNGGZDlwNfNfwS -ttCHThhhcBVpTBcdhdpfNGDSQLwDLfDGfQllCG -jFjzcFhzQTTjHFvJsrPPnnFgPb -SZggDgNLGCQzSgRsljscPvPPbHsBNc -TtFfTpMthzhFFTpdMMJPfjPPWjBbHbjPlPPBjj -dpdttMMTJttzMFhqFwGLgGRSrrQGSZrwRrDQ -JsJntWmghjgJTpfgFCczlztzrDZDtDzC -QddBBdBSPPPHBSVHVHvNdPVRClvlcclCDLCLFRFrrDLcZc -NVwBVSNlSBNHngnngsJWhwWh -hQVWJGWJlJQDGJHQWHpVWJVHmfPGPcjfdLdLSrcCmfjPjCPm -wgwnRwMvNvBvFZMngNvFZCjdSSfcbPLjCbcdCbSf -wgnRvMMvjMsTwngTgnnDVDWJDplHWhlhQWlWDT -WGswWFGsBFwHvjnbnnJjbG -gLDrSrPpLfmmDqqbbJZsjvmvRv -DTldTpTsDLgSsLpfPTslVdVVdNWVzcNwtWdWhzVt -sttWrhWZsLVtJVZrWhgbCPQQbDNVCHglnnlN -vvRRRMqpmTjwFqmfjFjmBMwNbCwQNgHgDnbNnHQHQCDg -THpvmBGfzWGzSzzS -nmZwwfPmNggwgPgNmdvPPhTRHTHBJTsvSP -WDccMzVQzGWcrllLdsGTvTsJJBLTdL -pWtzQrzDlrCpcQztlzCCCpCVFFFwtgmfbjmbqwZjZfmFwfdw -bmMNNMVSRWBWCSmVRdMRmMnvZZscvvszGcnZClpcGsvZ -gfLfDDtDgjgDtWTjFQjHsvvpZqqplfvvcllcnnvG -TFPjDtWPNPwBBBNB -QcTCHcTwdpQgcWzWwvMPRzSGwW -sDNjfhVmnlVffmLNfLbMPPDbqGtMSRWtDMtP -fZjJJshhhLNnrCJScHSccTQQ -qfhBhLLjvMqWWBWjsQGrdrGzpszpGrqd -JTSDHFtlTDbHTcFcDbTHzmrNRdRRbNzrmRRnRpnQ -PHcltTgJDlplgptScCfCgWMVfvfZvhMMBV -rttDPglHZZDDDPHgZtgWBswdsTfpfdplLqfsFfFdfd -cRVvpcmpmRSCGGCcMQmQFqNNqdVdqTbLwNbdFfFs -zhGjRhSvcMtnrpZjHZBg -STNrrzVdTJwsBggwFgBN -WbtMWJJpwpDsLBfP -cbvncCCmWtCGMcZHVVSlJVQrzvzVqQ -MtPVBHVbBBTwbvWgRgvF -LhZjZpnnMRwWfhSh -LQcQCLCCCcnmnqZpcrpnrjQlsBMHddtMGGzrJHPPsHsNPPJz -NbZtmZDmNNDBHBhDNtNGcvpmgLmmFrvprgrFGv -djMjffMdqnVVTdMfTPnQSFScFFVSLLFrvccvcllL -PPdPwMQwTMWDwBDZLHZN -DqpJFdhtmdSwpqSncljHsnfjqlbzlc -rQVZLGMWPCNrCGMwNVMcbzsVgfHHgfncfscssH -NBCrPLwMTrrMBLQLwCFhpFBDFdFFtdvDFvpD -QRwGBdGwqRTBMWRMMzBqQHHhngspPFFbHbzgbhZLLP -rCNmDjvrCFpvLZsgPb -lDrmpcfCtVDtCjlfNfQQqVdJBQWRVVRMMMJQ -zcgjlRcJCFtlnTvppn -BLSHDMVPVPHVHwFwMhTvgnFZMh -DsLSDdmPVNVdGgrzCCdbjc -tjjRbNQtvJVVsvqsvdTsGqBp -wlFLPZPzzzrzwZPmZfZPlrmpLDCpWDWCSTCpppDDBssdWG -rwwcFFghFmgTcNRJNnnNJtHV -RLhbzMhccqLzdjghdFddNWPN -DmsTZfvrfJLPPWwrdFgw -LsmDtQDfLLGbGQbSzcpM -qwhmmHlHmlwChcCWlpPCBzjPVdBzLsdLBVsT -DnJDMqRDsPsjRVQR -tSGSnNNSbrJJGfDSSfbchpvptFwmpcvlHqZlcF -rdQdBRPrQBBnfdBbzLLgLgmbzSLCPW -TcRTcFDTcjvswMWzzgLSzwwSLJbL -MNTRMNGTsFMMqqqcMDTTnfpBhQhNpHZBZHBfrptQ -ZZFwcQGwRGLTGLTl -rJtMrqBVvhBCnlCn -WWWMttbqqzfPWqWJVzmDQwFQlwZwjQfjgFcZ -RhgmdBbLLmRvhGZwhZZJDwGq -ldPpTtTPtVPpfTGzJQFGFqJsFG -MPpCnrlCVfPtrPVtntllnbdHSbnBvvgdgHgnWvSv -nbnfjQbQZBqBvjQdVFGHhsQhsFsFzGpD -RSJSTTcCVTTMlSNcSTRRwTccpwDFDDzFhHhtwppssFGGpsDp -clcTNJlLMgrcgRvBjfWVfWfBrrZn -LHQdpQLQDRcDBQccVQpnNRhllzMtRqzRztTNnt -mrvZPZvZvZbPSFJrSrggFvrJzbhlzttTlNtqtsMtTntntdqq -GPfJPJwfZFrmFvrPmgHHQLQWdHQBwWWCHVVC -TvTTLfflhZmwZLvtJmhdFhMpnWrpnbJcWMnpHzMrzbcn -VqRRNGCBjRmqPGqDzbHMcMccWnzngHnP -jNqNBjsDsDRCNVsmBRNQNRSSSddhZvLhddZhvhwvLTZwhSfT -vjpJvpgpNwjDWvvJLhFLLhNRTmPTRPRF -HHbHVrMHMmqzHlGmtGqMtdLCLQthQQPCSPTSFLLPRT -bZZzbHszMrqzGmrHMBzbHbqJjffcDgwWjDJpnjjcscwgnw -fBHDMNhhHMrBDBrfQqfwwvvLvfjLZZ -lmppmGJgPPpddJVdnwsQjLttqtjZTpcsvT -RndRmlGWJgdRnWQJQgWdQPlFFbhhbFbHbHMhhBbRDRFrrS -tVhwlMdMWlhlZMZMlzWrtRpBNpLPpmnmCPQBLppPPPBz -GvGTsgjcTLRQHmTQ -gGRGbfbgbcSbbcRggvfcwlZVhVMfltddVtrlZdhW -PwjPHwWssqrHqCqprpCPjwrrQnnDbdnQnGQHnbZbGQZbBQdD -WvNtLhfLndnBNbJJ -fvhvvWfTmtzTmjpsVVqsPzMjjq -GjHMMTMfZbnqHnJNCN -rlpQpthdlQbnlJqRzqVL -spphwcpBvcvdvFTqPDFfwwPZTG -mQfqmtpfBHJCHdlMDB -cbbPPsZqjqcSvVsCrDllsrdzrzzD -TSbVTvShqnVjPTPbggSPbNFQWGtfNLtFfWgGmGgGWR -HJtwgJJwJrcjRRjRnwhVdrVbmGhPmNNrGhdV -fWFvTDssTDMCBCWsvszWWMCQhZhLLNvNNbhVGGZdRZRdmhmd -zCTBzWzDDCDCfFCRqCJHcJJctjJSgHpqHqJg -dgnwgbcwVGbgDWnQbjdgDnBRBBNNqRLBNMLFRMRlqNsc -fTZHmTmzJMmSSCZChZvZTHRlBNBFqtqftlqssqNqftts -JTHJvhzCHpmPCSSTzPpPzJHgQVdQQjQdQwjgdpgdDMGgQM -qPGmWLJWBRRdvqvvNq -TnZHsTZsZsZZbDtbrNrdnDft -SShhQQZCHQCSTVlllVVQCjQWNJGFWpWgFpmmVmNgLgFpGw -TsSmttWMVstNfbMfBcpnFchFwFwZNrrwFp -DWWCGlHWdhddwpcrjh -gQvPqglRCHCHCPCPCJbbtSVVWtTVVJvTbs -ddHSZQHDStZStLtsdDpbCbBPcjGGCqCMBGdNPb -hWhvmglVznzglgzvzfznwfnfscswPjbMBMjNGBMPGMcjcPwP -sJWsJfVflWsnhrltrZLFDDRRFTSSLT -qqCqLNjnPPLZPjqnDjLNgnNrcGwtgddGrhprBJhhJtBGJG -lTMDsDHmlRRbQQbVfMHFmMBJhwcTddrcpBBGdGGJcJdB -lHFfQFssFFFMQRVWQVlssLnDSLLPvZZPqWCLWSqjvS -pJPZRpQtpPQpGPqWbqlWTdLVLJbT -nnnjCwgrgcCFBfnggBCsMTVbVsWVWdCTTdbb -cfhcnwnrcggrncrwcjBDcGHmNPRRGRZZQRRdDZzmzH -NqTrrzLpTNdLLJBBcBGGZGpFHB -sWbgfHSfSgVgZcmGtStZwBFG -VjQjjPjhbbfsCbbDQCgsDrRhzMdlNzHTRdRhqdNTrq -GlqfPdvdBqPgfqDgFMsMVDppbsNJNpMs -WnmmWCTCjZnmzRjTZRRnFBMNpbZZpFJMSFSNFSbS -TRRrnLBmzjttRRCmTRjjwLlvdhQvdrhqqlGdPqGggPlQ -McjMPgPgGPHJWjhPNgPqQbpQSfqffnWVnnnpnZ -BwwDmBTLRBBLzBTBTvtVqlfpqfbQqpqZbnQFlt -rDsDBsmvRTBRzCTZsTmCsCrLPgNcPHNhPccNHHrjMNrgdNdP -GqmLFDrcglvQGZwwzj -nlHbSNBhhslJfsBfvdZHdCvRzdCzppzR -JWShMfWMMthSJBBthJsgtcTTcFqcTrmTLrrTlr -CsBsShBWsBWhvFJWCSsJpbTZdTbdBRgHffRlHHHBgH -tqmnwwwDmVwfzZblzTRqzQ -DGtDjGMcntMGnnGhhjJJJsCpFRRSJJ -GQVVcGgFGcSFvfcFfJVnQmdbTwMLwTTnbnQMws -ZqZrDWDtNPPHRNPzGCdndLLMLwMWhwbmLddn -DRqRHCHlCtDrqtNqDplfpvGFjVjvBSFFcj -zfSfdGPdMVHHdcMThhpwqqrwrqJhcF -vlDNTWDDWWnngNQZtgwLrJZqLFZLFJpFJjJJ -NCtWmnvBmDnWQVTmTGSRmmRTPz -LLvppVLDsppGMGCLCCwNmJMNrNHrNmNNmHFjrh -lZZfvfgRPZQWNNmlWlFNHl -nnRtndRbcPttvTpswLTs -trtzWfszNPlhPlgrWglhZjSLDBvTfSDTmSvmLvfS -QMdVVGBQMTJDvSjdHJ -nBppGVVnQQgzgPsPzzhp -fVQzVrQVtVzHwjtMTjcTCjFgcDCGCd -JslDPWLbLbZlJBMgBTBPdcFTFd -JNJmZsDLnLDWmsVqSrHqnHqQwQSq -mLMZRMRmZLmHLLjNshrrJjRsNNsj -PnqnBVBPcpWrWfWzDhDsHW -qpBQgcQncqpBcVgtclHqcSMTLZZQvLLZdLdwCmLMSd -PZgMwZMjPgBCWgZFgmBGSTtwcccztTzbnGDcNT -vJLlvvlfdsVVslVHrrpLfRlDcSScmbSnnRGDnbDTSbSSDt -fvVHdLfLQljmmqqMQPhQ -DZRstNGrDWGRMlzLHLMpNSpp -bPgCrCvgnrCPgwplbMSjfHzHfj -CgnFnBVrFFVmdVggmPPVTTcZBGhRqGtcZqqJhGRGssWs -WrrCGrDlWhBBZtHB -ggdcnQpcPRSpzfvJBTfPJvtP -gSNnSBFnSMBNjpMssDmCrrGmCLqq -szZGZGGwNdVtpwvbzptzVBQQLFclTJQFlHJNcFBRRJ -CTrqSfWThWDjJCcLQRRRFLlQ -rggqfMqPWnDqnVbZvTtPZpssVw -GJHqPPcJnhthNHnL -rzzlVDVTQDzSSdsSlzpBspssLhmZNjhZWjjffWBLZhgBmnjt -TSTQTsnTbDsMvCGwcFvbJR -PPjtzdnCnSjSthPjWJgJWjgMNBsNrT -bZHfLLhvhpbfvLhHfQbqpNJTWWNsqNTrTNrgWN -ZFbZZFvlRvZwhQwLDSdGnmCGmnlmdznD -RFRRhzzsRsszRlhbrhgBcbTfHgBT -pJtNmSgwZNtSJLgSqHcbBDDTHPfrSqTc -ZNWdpNCJtLZpQJLLpmLtZNFGjVgFnsngRGllVsjjCnvs -sJVRJmmmwwlmzcszMzjRjJVzspCZBsZTTFpTTZvSZTFBFbtZ -GhNDgNWnGGqDvFSCZvbtFpvg -fWrCNNffGnhWdrPhWjwjzRlJmcjRcPzlmV -FdncmqmgcZztLWFvFFvjWLlT -RsMMJVpfhJVsDVMfJpvlTWTvhjQSQvCbLCSC -jDBjRrsVfNJgzdZrZwtmZt -THDDQLZTGQQLQDSSTBCZSZHfFrvvlVRRlPVFfVrvqnvnnH -VbWWcgbNpjgPrRvrNfqnzv -swggwpJWwsWscJsDSLTJTmSVZJTBDZ -wGsznPGGBHdzHhtHDD -WMVSWqVmrSBMpvWVMFtdClhDtqDDHhdtQt -RgWVRcmgnPPnjJBg -BmfPBHBFswLLjQQnLCnzzW -SRdvvRSGrdlRSvTgRrMVCjVWCZzMnVZhWzTj -vlSRJrRJvbGGrSSJgWvlScptFmwbmfHHBfsNFmBbfsFm - |
