URI: 
       Day 3 - aoc22 - 2022 Advent of Code
  HTML git clone https://git.parazyd.org/aoc22
   DIR Log
   DIR Files
   DIR Refs
       ---
   DIR commit 54494bb55617dcfd6aaa8c144fdabcfbb7e0374a
   DIR parent 817340456f1f55c470dd29d382901c57f368df03
  HTML Author: parazyd <parazyd@dyne.org>
       Date:   Sat,  3 Dec 2022 11:22:56 +0100
       
       Day 3
       
       Diffstat:
         A 03/01.sh                            |      29 +++++++++++++++++++++++++++++
         A 03/02.sh                            |      31 +++++++++++++++++++++++++++++++
         A 03/input                            |     300 +++++++++++++++++++++++++++++++
       
       3 files changed, 360 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/03/01.sh b/03/01.sh
       @@ -0,0 +1,29 @@
       +#!/bin/sh
       +
       +priority() {
       +        case "$1" in
       +        [a-z]) python -c "print(ord('$1') - 96)" ;;
       +        [A-Z]) python -c "print(ord('$1') - 38)" ;;
       +        esac
       +}
       +
       +answer=0
       +
       +while read -r line; do
       +        first="$(echo "$line" | awk '{print substr($0,1,length/2);}')"
       +        secnd="$(echo "$line" | awk '{print substr($0,length/2+1);}')"
       +
       +        ffd="$(mktemp)"
       +        sfd="$(mktemp)"
       +
       +        printf "%s" "$first" | fold -w1 | sort -u > "$ffd"
       +        printf "%s" "$secnd" | fold -w1 | sort -u > "$sfd"
       +
       +        common="$(comm -12 "$ffd" "$sfd")"
       +        prio="$(priority "$common")"
       +        answer="$(( answer + prio ))"
       +
       +        rm -f "$ffd" "$sfd"
       +done
       +
       +echo "$answer"
   DIR diff --git a/03/02.sh b/03/02.sh
       @@ -0,0 +1,31 @@
       +#!/bin/sh
       +
       +priority() {
       +        case "$1" in
       +        [a-z]) python -c "print(ord('$1') - 96)" ;;
       +        [A-Z]) python -c "print(ord('$1') - 38)" ;;
       +        esac
       +}
       +
       +answer=0
       +
       +while read -r line0; read -r line1; read -r line2; do
       +        ffd="$(mktemp)"
       +        sfd="$(mktemp)"
       +        tfd="$(mktemp)"
       +        tmp="$(mktemp)"
       +
       +        echo "$line0" | fold -w1 | sort -u > "$ffd"
       +        echo "$line1" | fold -w1 | sort -u > "$sfd"
       +        echo "$line2" | fold -w1 | sort -u > "$tfd"
       +
       +        comm -12 "$ffd" "$sfd" | sort -u > "$tmp"
       +
       +        prio="$(priority "$(comm -12 "$tmp" "$tfd")")"
       +
       +        answer="$(( answer + prio ))"
       +
       +        rm -f "$ffd" "$sfd" "$tfd" "$tmp"
       +done
       +
       +echo "$answer"
   DIR diff --git a/03/input b/03/input
       @@ -0,0 +1,300 @@
       +tdltdtmhlRNCBcwmHr
       +WDzDPnvvGnsWLWpGJJHRzCCRZNBRrRwMNwHH
       +DsDsQnJDnWsJnJvrQDPJddgShFQhjljqhggbdbbt
       +LqvbLLTdvlfdqTLtbvDSRHPhHmRSnndHnHRM
       +jswsGgzwsNgNWNwGJzVrgSHnhHHDmShmmGShnMDPRn
       +JMNWzVwMpjpLpTfTLLTf
       +HnQBjMjPQmRMmJCmBPGSFTSVWcNNGQQGGGTV
       +dgstqdtsbwrzddvrvdwqzhrWSFllDSWGDWFGDNsDDWSTHT
       +gpqZwwzHZhwzMJBmfZnnJLCL
       +PJHbTPCmLdTtLtRtBvzBrWffft
       +hnpTqhMncpFDppDqqNVFVvWzvNWNvfBfzs
       +GwZccTpgnDSDDZQdCZbbClbCmm
       +bnZnRZZZRlpGBbfRJjBbMfhCHwfsHShschMsHCww
       +LqVtqVmtLQvVqqLTFFvLDMhDMpMhwMSLDhsDCH
       +mFQWtNggVQQgmdgpJGpnnZJjbWGBRZ
       +GsdGrGqvLZqWvWWdrPLdfvsvSJDDcQQhcTbFbTcCJLSJShcJ
       +wmBlnjwjgHSSDQjfDDfF
       +wggpmwmwNnMlHRpttRHmlPfWzdGvvvzrZWVvMrPvvZ
       +jvlvTvTvTvcqTdZrdnGlVfNgspslpfGGnM
       +BWQhQzQwmhwWHbWCSRMRgjpjVDDRgDgVffgV
       +zLHQSBWmLcjdPjLLLZ
       +BjjLnRzBnRmTSTBhpBmCjnLqNPGGVNZgNgLGddZVNVdf
       +wDDJJQJlJtHrlwFFPNGGfZbbbglgfPSf
       +tFQssvcDJtJcFcvwHtBmnSCvRmzzhpSCWvmC
       +GvPVvVHPgzPMcFvDHssdpCpsnpHnsj
       +gmhmSRZBJTTTmSBZhhrqSBLRCnsBjjnbjBdbdbbdnbjwwBsj
       +WlrgrRgJSgZSJJJTZRtvVzvGtfzcVFcMzlGM
       +QSZwwsBZZwjsndFsMPHLzTLLLz
       +tpJfgHghmvqpNWrrTMrMMRzPrMPJ
       +ghgghmlvmgNWgmWwBQcbGGSclGHjjb
       +lhlnWGGFWZhDfgFfWDfrhgrRwcccqcZQBQMwcqJMTMRMqJ
       +jVdpSLPVSjtNdjdPtptzLNPPzcBzwCQrCcTBTRqwwqMCJTcC
       +PNHdpPLHtHtjdLghnHWvrvnFlFnf
       +qttvqPdCtLrqRgfpgpMgSfSWvM
       +TJccnTDjjDlDhSpfHdhpTpZf
       +wldwmJdwmsstCsLzBsBCGP
       +ddpCGpGpnndnpWqdVVpDGfDGFzSsFSZzBJShJsVtTstssrsr
       +jbvPLwFjztJBtvJz
       +wjggcgPFLlLwPFNwHmNPQqDRQfCRGCGqnpcRqQnn
       +PmmGhLLcgZbPQnqH
       +DlVsvvrvvvrsDJLRDvvCHbpBqpnbQnggbWZbggVW
       +vJRTSSRJClCCDwTJRfSfCsGzMLmGmzmjGcfmdFNNNtfh
       +vcmmMvfctfjLjvvRbLdHSnQSgQFnghSgQQSSjT
       +WzVbszVNHnTsQFgZ
       +pVlGlzrbDNrDrPpJNNJpVdBDvLdqvvvqqdBqcfvLdq
       +gfzgzPDVZQDDSqBdtFfdFdvqBB
       +MrwmTcJJsMwNmJdvFqdFGGtvvsGt
       +HMmTTwcJqcrTHrjjczhZQgzghgQHhnhhHh
       +BffBVgjPwPPPJwBBVJfDDsgrdZdcZqlcSnSncRNzHzZljNqq
       +CmWFbCmFvMtLLQCTbbbLtRqdSZHcdnqqNqNTRlnqNH
       +MpthtSMvFbvWPVDrsDgpPggD
       +VVRntNwmlvhGccPNfS
       +QZcgZppdrZQTzrBgCbrbdQrBvjLssPjSssMsfSLhTPPGvLTP
       +ZZcpJZHpgCgpppdrJRtVJFqVFVDRWJmtVq
       +dpdhtpjHtnpFRHdjRnwspMQmqpqqmVqmTVJQMmff
       +gSCcBCBCcgwDBLSvcLQQVTMmfmMJDqfTrrVV
       +gSwPzLBbNCbFnHHjhthh
       +dLNrRmqLqRgCNNrCJrSqqSQgjDWnGpGjDjspnlslGHnnjsQj
       +vVTzZFVttVBMFbFfffVVmVtHWpDspjHWWWbGjjjDsjWllW
       +hwFFwztTzvZmBzVfqhSSNPRPPCRPRJCr
       +BjfcmzCCTtNBNjcTDWwzPzDMMQPDPMws
       +lGpJFHnlSlnZbGnQQSBLwSPPLMsDQh
       +JFHHpbnZbGbZgvTmqfNgqCcvjB
       +ShhpqjhhVZmHhSJSSnLzdNRNTjLwNTNTzv
       +QffRWRrMGwLfgNcNgc
       +GQrQDPRBlGlsGrWtrtPDPbWpqhZqSqJJpHZSVhVhhmmBZF
       +ZlVVDTtTrzFDrFfB
       +NNGbJNNNNmpWBNbNWmjMfdjmFfPdqFMrMj
       +NQvRNvSRHSQBgRGQJJQQHTtcVLlVcTwVTllnRsttZs
       +fjsDhJsVDcVJVljFDqLqFlnnCFbzbCCCZCzCtCZrnCCM
       +HwQNrHWNPGPHMZCvMCbzzvHZ
       +dBWwWPPGrGwBlcjDlcjcjldL
       +NCLMHJZqCHHHMFlNBZtTZRvtStZdcRbc
       +wDrnpbswVgsrsWmGpDpfpBQtRSTmdvBjTjtBScctRm
       +gwzgbGDgpgFJMzlzPJCC
       +SpnfPVqFnGfPGggqfGbjZZrtWrlRlbHpZjRZ
       +mmJmdJBsBJsDwhJBQhTZtzdRltrrRlrtHjjl
       +NBscQhmsmmQLLwLmhhwmcSSGfnfSFCSMCPfHCMqG
       +hvVnPwZwVzQrhrVhPPPrpQVDBgMMlSTLZsgdDTSTdsssLd
       +RvFCqCGfbFCRbRmSBMMsLBgdFDSgdL
       +cRGjRWbWjvtPvrQcnr
       +LzLNzhpcRRcTmNDzRhTPDjMvMnVlMgjngSMrMzrQQr
       +tfbWfWcWddFcGFwfswFFFCrjjvlVbrQjSglSQMjgvlgl
       +FHWGCHCCGcwfswqHdHqwwmPqRJDpZZNRJPRPPTTJNR
       +gLHLLhTjZVMwMRSZZS
       +GdqdtlPvnQPPnsRw
       +tNNGvdtbdmJmHRTRJrFr
       +QjjdjGDvdjwpZsssvsPZFZll
       +mTWWMWzbPHmZwHHw
       +JwTbtBztMVLDSpjVtc
       +SZSBWtBSwnTDFSDD
       +CsrJWmmPrPQmpzsPmssssvnTFhvTnPhnFDFfDFnwqF
       +CCCCzprgrJJCgmVcpJmWLQZddHlGbMbdZMbtZNNcHHBt
       +fgqqrZLqZqFzFFWzZzgPPbnMNNNvQnpQnQbNbpcHNP
       +SdwdmwCClCCwldhRSmsvpbncjQbNNQMtjQnMvS
       +mDlwhMRlCwDCTVwVJRdGgfzLLzzGzGFWqGqfGD
       +CnVvCqvnRqHVqnWcMFnLmLnMMm
       +ZrdzbzbrdwtQdSfdcmmFMBWFNFWLwNNp
       +QFrQtJDdSZdDVHlVCPssJRll
       +qMpGGmVNHMGVjRJJGfRgQtjQ
       +flsTZCwDwWcZZPCrPZZWgLLjdJJQSJTQFSgQJJRt
       +ZcChshwZCDvlCZCsPHMHzqNzBmMfmBBMfh
       +wCtZtzCnPldZSdZp
       +VMspbMHspbshbPBLFsdcsLBdLs
       +pRrQHpNbQbrqRqJfnwfwzR
       +DPPcDlPwNdNRJsccpgvwBBvqGGQtqrCjwr
       +fMSVrMWmLZqHQgLggCHH
       +mZZWVTbTWWfnMWrbmznfZfsPNcdsdpRcNJplbJNcNRNl
       +ztlNSLhplhBHwwBBMBtv
       +DnVVfcGbVnGRZGgvPMpHBpCmJMDP
       +GnZdZZnbdpVcQjQQFjjqrlNWlrsNrFNLLsWqSF
       +bJQgDRfjDbJbRMTgSSPzPHCNhzQHHszz
       +wmnwFmDcwFGvpvwGnSWPNPWzPHhhcWSCNz
       +GpDtmvrdGvvBmZrLTjZRTqTjblbMfL
       +gBhZmtHhhhwTJqwDFqGGqPWqDb
       +rRLRVTrjCrCVdFjMbvGPPGDPvW
       +LSsVdrRNRCCffCSllQNBTNgNlmhHBJ
       +lCzCCDMDlzzlZtttWDnDCZPbVGLhSmSLGbSgGPgVZm
       +sBcNsqTQwRQRrBgbgSbPTLVSnLmV
       +wcqrjQsBBjdCzjdnCv
       +ZgHVtMQVVgvQjjtzdzfdFHppfmzwpz
       +CsBrBLLJSrsRCvnGvfRdvF
       +DbBJTJDLrJDqqqrrhJsJqVWthWlZZlZjMPZltvtMjZ
       +bsHlrwlnwwQJsqmJnqsPSLzTLpPGPSgPPPWmLT
       +fdvBtpMDfpCCfBcCcCBtDfFSgTMTGSTRPLgPWGzGgVgLVz
       +NDcjcDZjBCdvvjdvhlbJnprjnnbhwrqn
       +zRpLMMqjgMggqLDqDRVGNGdhGtvGGnvGnrznGB
       +VScbcZPJZWZlZbbHSJQJGtrGvtmdBBGmdGBrdn
       +cbPsZcPCcWfCZPcPQslljpDqwfqVgRLMTRjwVqLM
       +QtRWhjtsbttQtnbbQvsrRBfDNdMGBLZLVVNVGNLGWd
       +JwllwllJmCwzPFSJzwwTBZLDLdBBBPLZZBVTTL
       +ZwFSSmpwzScFSmggHQjbQvjvscQbrtnjbs
       +WMLWnSHSMnHjPVMVMVVJGM
       +zQzRcmttdftrtrdZZRzDtPZppphsVbjGbQbJTTsCbsjppG
       +dmrDtqfzrmZtqDvdfmZmtdqzLNlgnwgWLNvwFWgWWPNFSFNN
       +hvSrMwqljjBHvqhHsHshqnrZcCCpfCZZCCZZCcCfCZ
       +QDVTRFWlmDnpLnnPTPCZ
       +DVQVtmQRWRRGFVRWVvlwdShBvvSqvtjMdd
       +pnMQbbnDQMNMDQsnTplNTDvqPGHZGcvqmCqvmqZqmlqP
       +dwJdBBwdJJwLJBLSRJczWmHPzqWzzHGmvPRHGG
       +LrdFgSSLBsDMFFcbQb
       +NSnwvSPPVNnPTLVpRvVvRnqhhQQzHhLbzlqcqHzmHHqh
       +DFMMfBffgZJtFsJgwdDHGHHzzmqhhHQzDQGhcH
       +dMrZMMgFfFtZJZfBWMfVPNwPpNwPVSNVjjVWpN
       +dNlLSvLSdNlhphlhlWfVFFbZHqjjHHvqFZQHCQ
       +BcrTcJfRMRmrcbqcQgcHVCVF
       +fBzTJJRmfPPmnppdNwhllwlz
       +GqfSSmPSFwSCmFBwfQfQBfGnggLrhTrJBDDnrddsJDdLTL
       +cHHvVtptbzbrTQJTggnTQv
       +QRVbbQWbpZbVQVGfRmwfFwmjflPP
       +zzBQJmzQPPlddpJWlzzfdpfjvLvgmvFggMFGDVvLGHVFvvtM
       +CCSTrCncrhcCcwhRnCqCttFDvMFvtWtVHvFhvLVv
       +wCTNCSRnbnpWzlBpJspN
       +PTzTPlrrfrbzmftTTrrjPMsNNFZQgQHVgMtNVFMgFF
       +DpGBcpvdZhccdGJhqDBphZhdVRQVQQVsqFwMRwFgFNHMHwQQ
       +SGcLGpdGnBhDJppSDZlPTTmLrmbTLTmrZL
       +PzmhTqSzdDGcDhzdJDPBmJnrdVppNVVtgttMVrNnMMnV
       +blbQbWLvlWffCjlGCWwsnLpnpMggnpspnsrg
       +fQRbCZRfFZvZRQHRvHjmGmTFPcBmDhBGTzmGqS
       +JJVJfgJfVDdfDDcpTBgdwQMQZQRZQZwmlmWwQGcm
       +ttzzjjzSqPzqtqzFrPvzwNwMlMRNnnwnllSmmmQG
       +FCvvChhsRVhhJBdB
       +rbQZdRzBFTBzZZcclntHnlfJlrNgngfS
       +PPqGjpPGqpmDmDwqPDVnlNpnJfnnnglJCHlNfC
       +MMhhjMwwPvZNZTvLTZdL
       +ZZGgVgwfQNVNLfZsPqRsVTDspTpsqs
       +jdjdSbmMdMBSvMgBcWpsRpTWDHWTvRPs
       +httmBMhbBBjCdzShfGzJlnQLlgGGZwww
       +gLSLMCbVSGRPdTwtjtVfdt
       +TpzJpFFqmzpscslBtddjlwjjDhhldhvP
       +WpsTmJpHssqnHMGLnGSgbH
       +RRBCpJJplCchWJJHCHCvjdpMzFzrNvVgFrrMzz
       +btLLPGSQctnZnPwwSjgZjjjNNrvMvVrrjV
       +tmLPGmnbnsLLwqQPSwqGbwDfHlHWBWlCsffshDCBfWcJ
       +GhDFZFGZzzbCdZbZVlfv
       +bPNWSbSJSWSJPBBLLqClCltlwlNmllwvCQfC
       +PgPLqgqpWcWJJcnqJccccGrjbHhDRGMDGTDbpRhbFF
       +VJRffrVJvDzcRcFFbpSlQLHlvtlstbbt
       +NmNqPhPqPZhsQLQwSRpH
       +dWRnRdBmMBWgjCgVGjFcCDzf
       +nhhQFDmVmDGhmFpgCgBpcpHqncCt
       +fLLZbljhjjscCggBCLCL
       +PhMRhNWddWNjfRdPRfWNfVmvQFVQzVMJJDJGrmQGrQ
       +PNQtsHvZtsQgQLPsPtHZbfzRffRzMMqRqpzbfqng
       +jDwCmhrDlhBhBldrzJMmfFFbSfFnqpFb
       +jdljDrDrTBBnGVNcGcQLQLQPQL
       +MjzrjZvWQRHtjQdS
       +JFJlDJbcbvtRQmQbQQdf
       +JqNDBVNpqCBqDBCBVDcNVBqNMWgGZTPZgCrPzzvghPwrwZgG
       +gzggttLNDFztFCNWzrLttmFddSjsdJsgZVSsJjwjgbgZVG
       +pPPcqpnqHMpcRbhhMMpThvnwZSjZvdwZvwdZSBvGZSGVZZ
       +ThcPlHbbPHRnlRTHnMhpfltrNLWzCWWCztzffQLLDmDN
       +SlNJRpCGTmdFFDcbqJZFFJ
       +wwnWPHgsLPlVVfssLcZcjjzrDqcFzcgchZ
       +WVvQHQPfLwSGSvCRlNSd
       +wWnWcpWDcwHcRdJQTdmNsT
       +hprqBSvZNjFdFjsq
       +fSfpvhLBfltMCLzWzC
       +fdPfPwPmdmLZfNWjWszQNjjN
       +MBRSBBRBChMRQWhlmVWNsmzm
       +FvRcSrcRrtvrRrvrrrmcwGwLnTHHqGtwZwHdGPHP
       +tFPlJcDJdvLZvFlcvlHtQRthbgQjrhsgQgNr
       +qCnpGMnTTVwCCMnqwWfpChQHRbrgQjsQmmfrrHgHrH
       +GMnTSBnVTnBGbLlDDvFBLDbF
       +rJhPGdLSWnnrdqLhPPWGjcZZffjcgNdgNgRcNfwf
       +mHsDTQlsQBvWspTHzpmCTpcZgwZjZfZNRFwRjRRNMHjZ
       +vCzDDQsDDvbllWTllCDCCTSLbqSPVqSnJLGSqrPLtVnP
       +sSRdHHHSRhjShVHWVFJdQPNFpGCrQCCfflqlPvfN
       +gLztmctMwnBtTzMppBCCrGfQlQQqBN
       +bbbncfzLmmmnnZLgHZWjhsjVJjHRVSdR
       +bRgwCHfgfCCttRbdRLHzzGDnDnLBhmBGzvmFZD
       +rssprQlqlTQGNPcJGVsTBDmWzBnPnhWBvZZDBvDm
       +MQQTJTNGNcqrNwMwwHRdRbdgbj
       +sBnnsDLDBCsLTngnZLcdmppCdmpRJwJJQdMRMP
       +NlrTblbNNbwRPpjjbPdJ
       +GlztrhvfGqltqzWrcZgFZVSWWSTSncnL
       +FLJqLFRjzFqzJddlLfNNCjPrGSHCPHNVNVSH
       +TWTpngssgcPgNGPc
       +pGMDZpnZBMDsTTTnTsQWWZTRlbvdfZlLflZzJfdqvdRbqf
       +ClsJpCgsppMbFFFbHp
       +PvQRPqQPvRdwLNZLZqqwGPPPNTbjMcFcfHjHcMNfBNHrcDDM
       +GLRnzqzdRqwdZnLLPqqZdQGsVtsnlWCVVWsgtWSSVVhFWt
       +LNLSJjQDLlzRGwTTzQfT
       +WbZqchqMZqZWbmdZbhTrvPmGvwfHRHGTHRwH
       +dcfChsWWZgbfWdhCbgDNFBBDjFNBjjVNpD
       +HjCLsHJHCjnNVHdCnHtJdtQQgQDhFGFDLcwFDBFMMDBT
       +vWrSWSbSrRqmzlWlQgRQQTcRMgMTMFwT
       +bzrpWWzbqrpnZsJwZVpC
       +FhlfrNdTrtFdtrrrfcZBMdpZcHHHZMcccv
       +PmbjVDjwQbbjjVpDDvpzBZSSMsvG
       +jmbVjPVWqVmgJgjmmPPQjmqlCMlftnftnNlTTLLfNfrJtN
       +PwMWzqwWbFwznqNQQhffQjJfnhfJ
       +mmdpgmttDrpgpdmZdHmgNsQVZvJNMQvVJffsZVQf
       +pdcBrMgDgcgrrHPcFSFzzqzFFbPS
       +QRJJtSfJtQtjQRnSnNssTNdgsgdwddRWcm
       +qHMDhPBqbqZVzbddTcVwSmNWNVcc
       +BFCZbqPbHBPMhCljvQSvGCCpnj
       +HSzHNHlNHmBSHSBFrFFgBHVVqbQLTTcLtqDsDTBTDcDp
       +CWQZGCWfMZGqbTbtpLsbWp
       +GwjhPCRZPQPPCPwmzSNzzzmwzlzSgH
       +GgTvJbpJGvPVHZZZLW
       +cwWdnwmWnfwZDBHHNzZBVf
       +nhjjmshdwmSjsnmwrrQrtbtbgTTgrWth
       +lFBTtcnlcFlppVpttcFZVhTTDDLCHDSDCjDCMSLZDWdDDSjD
       +mrfsgMfRRwwPffJfbdDdgWGLGLSDjSSWdC
       +MmfNPwPzMzlhlFlplV
       +pRVgVsRzdDVJJJRttZTnnLrGsrGssG
       +BjMvMBWmjWNWSWrLGZPTHLSLTrZr
       +LLMWQjfvmljLBRVJfbChfVgJRz
       +RPDsdnVrVnVzScStjpFSjV
       +BTLBhMMBpSMsMjZz
       +hwbBgTsbBbGrGHvGrvDnPH
       +nzwgtSFRqhDphDwB
       +CmWCrrmrVPGCDTbpvvvhsZDG
       +VdNrlWHpmQzSMgJFdRFz
       +jrhZtczchvvFCTmCDlDMrMDT
       +bHbLnbbwLnWQpLQgQVpQCTDqdmwqmDqCdDCSlmdd
       +sgVgglblptsfFthtvR
       +LctzWvrzTWsvWBfvBzdJQSdQhQQfpDJJmmDD
       +lMRwjlwlLnZwLHLggQDRGphdFDJQdSdJJQ
       +CjPZCVCjgPwgWqWLqzzcWsVq
       +JNWHsPNsJNHBnfnnqfqswcctDTmPCRmmTRtgCdmD
       +rjGrLrbhGRZVGQhphbbmDgDZMDMwdwDcCMgcDM
       +zvbLvVpFvjzVhbQjGjHlnflJFlWRqBWWBJBS
       +NfCMfGNdGqVDhWBvncLllhBgcmgL
       +bJbRbHHtRtJtZTpSRtsLDLzvcvBmgnnnJlsm
       +SbbbTRpbQHSbbwHZZTHqfCNMfqFWGNGVQMFGDC
       +MdzwdMpVwVNMHQMJNcHM
       +mDtcPDqWnDqgnGJvLHTJHJ
       +mmjhhRBRBcdZrcdRCz
       +lvldsNpNGCGgCvCGggDLMbMmrdwnjjZdLLwrjM
       +HWHtPHSHPBnrmZjBbwwC
       +tHqWRtfttNlDClvNqs
       +BTRNQTQTTBFRTglDwzztDgCwLF
       +jZsMjqgdrrzzSbsDSwsw
       +jWZrMgMjGdvrWWvrWMfMfZTBHTHQBHBQNpQRfRHNpnRT
       +GRgFCPhnBBhPwZPnwdbWMJMlcJTLLlTlRT
       +VQsvVvvVNzqsscTVSLbWTStTJW
       +spfDNpvsnPCfhBbh
       +GhWSgWphprhQqqndQd
       +MvZRjjLcCzwcLnHfdTdgfFHQ
       +wCczcCgRMwRRNCtjMCtCvlBmVDGslmPpmWWNVGSpWV
       +PZqgTbTZvFgZbZnFvPlBsVqsGBlGVzGsqVls
       +MMhSmHHfrfrSrjMNfcjrSRBlBVzGVpVGgGVCGslGNd
       +rMhQQmDSQMjMtZvPTTnJvtQg
       +TNGWlqVpmPssnNssWLtRfCLbjCCwPgLjfg
       +ZSHvHczFBBcHhJHFvhHcSFgrCgLbfgfbwrLTtbjwLwJr
       +BMzSQzcQznlNQTQsnl
       +FVWDZDZHpDdtZlqZqZqljfNmsNFPjbbPbPRbFFjm
       +MJSGMghngrccvSrSzMrsQbbRmjmQmjtNtbfB
       +CMnvczGChCCwcgtpDDlLLLwVHdlHTZ
       +fTTzbQzhDwwbCnZnpbgnHncM
       +mGtBRBFmsRpVGMzpnnGL
       +lFNqtdsssrRFBltSFRFlSrvfDSWWvwfhhPJPjWfQzPvf
       +GWWWQlpSZzrQnjQdRHVjdjTRvddddB
       +ztthMtCmffcChJhChfCJdLddLBBgvqdvBBVBcgdq
       +smbsmbmChCJmJffPmhNthDtZwnFQZQGpSrGWGQGZpQZzWP
       +ZDzsjjFLFqsQzFsZqDzBHGtBHpmgdNGmGBtLBG
       +hbbMMTcWhbwnJPlwWrnPbbVGVNndgpVVHmdNHVBmmmtf
       +bCTPTclcgRZQZCgs