Created
May 23, 2020 19:45
-
-
Save Willburn/2a635477e6579423cbf47fa430dd2e05 to your computer and use it in GitHub Desktop.
createstaking script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cat << "EOF" | |
``.'",,:>*r!~'` | |
`',,,,,,,:::::^/^!!~` | |
`.'"",,'',:~!^::!:=;;>ii!' | |
`.',''.`````:....';,,~::=vvl^` | |
.',,'....'',::,,::::::::>;ri|\\:` | |
`.,,,''` ',.```````,.'',,~^^:!^>iJ?` | |
`'''.````',. `.':,,,"~:!ii7l7v7Jr` | |
',,,':::~,.....!::,,,,',,!":::::|7!:;>` | |
',,,'.:'.`` :,.```.',:v;!:!^r?xv|il; | |
`,":,,,,''',',,":::,::*\**^^!!:!*>!:!::rl` | |
,:::"~,,,,,,::.`````..,r,,,,"~~:!\!;r?/l{: | |
`,,,:,,::;::!^^*\~.,:"~~:::::::!:::!!il7\:>\ | |
` '` ,"",:!:,:!r:~:;,:c:';,,,,,"~~~~!!::::|llz^>s. | |
a! .@L `~::!>?zi:~!^::;!!^t::~~::::::::!*;rr?ll/7cvz' | |
"@K .@L '"~:;r\u6{,:|;::!!!l|"""""::~~~::::::!7/:;)lC' | |
UB@, '6Rd@/ ~OHg^ :::!^*{wdgr;L>~:!^^^zr^rr;;?r>>rrr>>>?z7|/7sv` | |
.@rUe OD`.@L `:d# ~":!^>ue$Bu">*:!!!!!v::)!::::!^>?)L!:!^>|iv}? | |
}Q:c@, Qu .@L /By8Q `'!>^>?|/yw6WE\7l*|\//cxr=7|?\LlzsJzzc|Ll7vvlvz/r!,` | |
,@wFFQA wB,"@L RH.eQ ``.'''..',,,,,:!!;!:"""":!rrr^rr^!~:!^rrr^:'`` | |
rk` >X.`vp6u! ,ad4C `.```````.'.......`````````` | |
:!' `::``,:^^!' '^!!:~.`:!!!:!.:!. `!; `~^rr!' `:!>*;, `,:r=^:`,!, | |
^lL:`//`!\^,://,,l=,!||`,"*\:,`ri,`,i\ .?L,,\L'^\;'"\/,:\^',\i~:l~ | |
rc>L*)i.cl' `rl:~l|:r|! /L. >/|^/)l .ci;!l\'ll'``>l:>)"``^l::l! | |
rl,'|l)`=l?^rL/.~|="||. LL. >i,`'il .)L",'` ^|=r>L*`~c\*>L)':l>"~: | |
~!. `!!``,:!!:` ';" ,!" ;^` :!. `!! `:: ':::,` ':::~` '::::: | |
______________ __ __ ______ __ __ ________ __ | |
/ ___/_ __/ | / //_// ____/ / //_// ____/\ \/ / | |
\__ \ / / / /| | / ,< / __/ / ,< / __/ \ / | |
___/ // / / ___ |/ /| |/ /___ / /| |/ /___ / / | |
/________________/_____________ /___|___________/_____ | |
/ ____/ ____/ | / / ____/ __ \/ |/_ __/ __ \/ __ \ | |
/ / __/ __/ / |/ / __/ / /_/ / /| | / / / / / / /_/ / | |
/ /_/ / /___/ /| / /___/ _, _/ ___ |/ / / /_/ / _, _/ | |
\____/_____/_/ |_/_____/_/ |_/_/ |_/_/ \____/_/ |_| | |
EOF | |
# ASCII ART http://patorjk.com/software/taag/#p=display&f=Slant&t=STAKE%20KEY%0AGENERATOR | |
# ASCII IMAGE https://cloudapps.herokuapp.com/imagetoascii/ | |
source ~/.profile | |
addr_dir=$CNODEDIRADDR | |
if [ -z "$CNODEDIRADDR" ]; then | |
echo CNODEDIRADDR env variable set to $CNODEDIRADDR | |
echo what is your address/skey/vkey default directory | |
read addr_dir | |
fi | |
networkmagic=$CNODENETWORKMAGIC | |
if [ -z "$CNODENETWORKMAGIC" ]; then | |
echo CNODENETWORKMAGIC env variable was set to $CNODENETWORKMAGIC | |
echo what is your network magic number? | |
read networkmagic | |
fi | |
cnodesocket=$CARDANO_NODE_SOCKET_PATH | |
if [ -z "$CARDANO_NODE_SOCKET_PATH" ]; then | |
echo CARDANO_NODE_SOCKET_PATH env variable set to $CARDANO_NODE_SOCKET_PATH | |
echo what is the directory and filename of the cnode socket you want to use | |
read cnodesocket | |
fi | |
cnodeconfiguration=$CNODECONFIG | |
if [ -z "$CNODECONFIG" ]; then | |
echo CNODECONFIG env variable set to $CNODECONFIG | |
echo what is the directory and filename of the cnode config file you want to use | |
read cnodeconfiguration | |
fi | |
staking_dir=$CNODESTAKINGDIR | |
if [ -z "$CNODESTAKINGDIR" ]; then | |
echo CNODESTAKINGDIR env variable set to $CNODESTAKINGDIR | |
echo what is the directory absolute path for cnode staking directory you want to use | |
read staking_dir | |
fi | |
## STEP1: CREATE NEW PAYMENT ADDRESS KEY PAIR | |
echo what do you want to name your new payment address? | |
read pay_addr | |
cardano-cli shelley address key-gen \ | |
--verification-key-file $staking_dir$pay_addr.vkey \ | |
--signing-key-file $staking_dir$pay_addr.skey | |
## STEP2: CREATE STAKING ADDRESS KEY PAIR | |
echo creating new staking keys | |
echo what name do you want for staking vkey? | |
read vkey_name | |
echo what name do you want for staking skey? | |
read skey_name | |
cardano-cli shelley stake-address key-gen \ | |
--verification-key-file $staking_dir$vkey_name.vkey \ | |
--signing-key-file $staking_dir$skey_name.skey | |
## STEP3: BUILD STAKE ADDRESS WITH ADDRESS VERIFICATION KEY FROM STEP 2 | |
echo what name do you want for staking new address and add .addr ? | |
read stake_name | |
cardano-cli shelley stake-address build \ | |
--staking-verification-key-file $staking_dir$vkey_name.vkey \ | |
> $staking_dir$stake_name | |
## STEP4: BUILD A PAYMENT ADDRESS THAT DELEGATES TO STAKING | |
echo what name do you want for your new payment address and add .addr ? | |
read payment_name | |
cardano-cli shelley address build \ | |
--payment-verification-key-file $staking_dir$pay_addr.vkey \ | |
--staking-verification-key-file $staking_dir$vkey_name.vkey \ | |
> $staking_dir$payment_name | |
recieving_addr="$(cat $staking_dir$payment_name)" | |
echo your address is $recieving_addr | |
## STEP5: TRANSFER SOME FOUNDS TO YOUR NEW ADDRESS | |
echo now we need to transfer some founds to this address | |
echo lets calculate the necassary fees, first lets find protocol parameters | |
echo and put them in the protocol.json | |
cardano-cli shelley query protocol-parameters \ | |
--testnet-magic $networkmagic > protocol.json | |
echo how many slots do you want the transaction to have time to live before going invalid | |
cardano-cli get-tip --testnet-magic $networkmagic > gettipfile | |
currentslot=$(awk 'NR==5 {print $2}' gettipfile) | |
echo keep in mind the current slot is $currentslot and the slot number should be higher than this | |
read ttl | |
echo what signig key will you use for transaction? | |
echo $(find $addr_dir*.skey) | |
echo name of input addr .skey file | |
read input_addr_skey | |
echo now lets calculate the minimum fees for one input, two outputs the ada and the change back | |
echo | |
cardano-cli shelley transaction calculate-min-fee \ | |
--tx-in-count 1 \ | |
--tx-out-count 2 \ | |
--ttl $ttl \ | |
--testnet-magic $networkmagic \ | |
--signing-key-file $addr_dir$input_addr_skey \ | |
--protocol-params-file protocol.json > minfeefile | |
min_fee=$(awk 'NR==1 {print $2}' minfeefile) | |
min_fee_ada=$(awk 'NR==1 {print $2/1000000}' minfeefile) | |
echo minimum fee $min_fee lovelace or $min_fee_ada ADA | |
echo what address will you use for sending ADA? | |
echo $(find $addr_dir*.addr) | |
read send_addr | |
send_actual_addr=$(cat $addr_dir$send_addr) | |
echo lets look at the TxHash of address and select one | |
cardano-cli shelley query utxo \ | |
--address $(cat $addr_dir$send_addr) \ | |
--testnet-magic $networkmagic > txhashfile | |
awk '{print NR, $1, $2, $3,"\n"}' txhashfile | |
echo select line number for account you want to use | |
read txhashnumber | |
txhash=$(awk 'NR=="'"$txhashnumber"'" {print $1}' txhashfile) | |
txix=$(awk 'NR=="'"$txhashnumber"'" {print $2}' txhashfile) | |
addr_lovelace=$(awk 'NR=="'"$txhashnumber"'" {print $3}' txhashfile) | |
addr_ada=$(awk 'NR=="'"$txhashnumber"'" {print $3/1000000}' txhashfile) | |
echo you will use $txhash TxHash and TxIx $txix | |
echo account has $addr_lovelace number of lovelace or $addr_ada ADA | |
echo how much ada do you want to send, warning NOT in lovelace | |
read ada_to_send | |
let "lovelace_to_send=$ada_to_send * 1000000" | |
echo ok you are sending $lovelace_to_send lovelace or $ada_to_send ADA | |
let lovelace_left=addr_lovelace-min_fee-lovelace_to_send | |
let ada_left=lovelace_left/1000000 | |
echo the lovelace that will be left in the account is $lovelace_left or $ada_left ADA | |
echo this is after sending $lovelace_to_send lovelace or $ada_to_send ADA | |
echo you are sending to address $recieving_addr from $send_actual_addr please confirm by hitting enter or abort with ctrl c | |
read hitenter | |
sleep 1 | |
echo we are building the transaction now | |
cardano-cli shelley transaction build-raw \ | |
--tx-in $txhash#$txix \ | |
--tx-out $recieving_addr+$lovelace_to_send \ | |
--tx-out $send_actual_addr+$lovelace_left \ | |
--ttl $ttl \ | |
--fee $min_fee \ | |
--tx-body-file tx001.raw | |
sleep 1 | |
echo we are now signing the transaction | |
cardano-cli shelley transaction sign \ | |
--tx-body-file tx001.raw \ | |
--signing-key-file $addr_dir$input_addr_skey \ | |
--testnet-magic $networkmagic \ | |
--tx-file tx001.signed | |
sleep 1 | |
echo we are now submitting the transaction | |
cardano-cli shelley transaction submit \ | |
--tx-file tx001.signed \ | |
--testnet-magic $networkmagic | |
echo lets sleep for 30 seconds to wait for transaction to be done | |
sleep 30 | |
## STEP 6: CREATE STAKING CERTIFICATE | |
echo what name do you want for the certificate to register our stake key, add .cert | |
read cert_address | |
cardano-cli shelley stake-address registration-certificate \ | |
--staking-verification-key-file staking/$vkey_name.vkey \ | |
--out-file $staking_dir$cert_address | |
## STEP 7: CALCULATE FEES FOR REGISTRING CERTIFICATE | |
echo now lets calculate the minimum fees for registering the certificate | |
echo | |
cardano-cli shelley query protocol-parameters \ | |
--testnet-magic $networkmagic > protocol.json | |
echo $(cat protocol.json) | |
echo please tell me the key deposit cost in lovelace? | |
read keydeposit | |
let keydeposit_ada=keydeposit/1000000 | |
echo $keydeposit lovelaces in key deposit fee or $keydeposit_ada ADA | |
echo how many slots do you want the transaction to have time to live before going invalid | |
cardano-cli get-tip --testnet-magic $networkmagic > gettipfile | |
currentslot=$(awk 'NR==5 {print $2}' gettipfile) | |
echo keep in mind the current slot is $currentslot and the slot number should be higher | |
read ttl | |
cardano-cli shelley transaction calculate-min-fee \ | |
--tx-in-count 1 \ | |
--tx-out-count 1 \ | |
--ttl $ttl \ | |
--testnet-magic $networkmagic \ | |
--signing-key-file $staking_dir$pay_addr.skey \ | |
--signing-key-file $staking_dir$skey_name.skey \ | |
--certificate $staking_dir$cert_address \ | |
--protocol-params-file protocol.json > minfeefile | |
min_fee=$(awk 'NR==1 {print $2}' minfeefile) | |
min_fee_ada=$(awk 'NR==1 {print $2/1000000}' minfeefile) | |
echo minimum fee $min_fee lovelace or $min_fee_ada ADA | |
## STEP 8: PAY FOR REGISTRING THE CERTIFICATE | |
echo we will now pay for registering the certificate of minimum fee $min_fee_ada ADA and $keydeposit_ada ADA for keydeposit | |
echo lets look at the TxHash of address and select one | |
cardano-cli shelley query utxo \ | |
--address $recieving_addr \ | |
--testnet-magic $networkmagic > txhashfile | |
awk '{print NR, $1, $2, $3,"\n"}' txhashfile | |
echo select line number for account you want to use | |
read txhashnumber | |
txhash=$(awk 'NR=="'"$txhashnumber"'" {print $1}' txhashfile) | |
txix=$(awk 'NR=="'"$txhashnumber"'" {print $2}' txhashfile) | |
addr_lovelace=$(awk 'NR=="'"$txhashnumber"'" {print $3}' txhashfile) | |
addr_ada=$(awk 'NR=="'"$txhashnumber"'" {print $3/1000000}' txhashfile) | |
echo you will use $txhash TxHash and TxIx $txix | |
echo account has $addr_lovelace number of lovelace or $addr_ada ADA | |
let fee_total=min_fee+keydeposit | |
let lovelace_left=addr_lovelace-fee_total | |
let ada_left=$lovelace_left/1000000 | |
echo the lovelace that will be left in the account is $lovelace_left or $ada_left ADA | |
sleep 1 | |
echo we are building the transaction now | |
cardano-cli shelley transaction build-raw \ | |
--tx-in $txhash#$txix \ | |
--tx-out $recieving_addr+$lovelace_left \ | |
--ttl $ttl \ | |
--fee $min_fee \ | |
--tx-body-file tx001.raw \ | |
--certificate $staking_dir$cert_address | |
sleep 1 | |
echo we are now signing the transaction | |
cardano-cli shelley transaction sign \ | |
--tx-body-file tx001.raw \ | |
--signing-key-file $staking_dir$pay_addr.skey \ | |
--signing-key-file $staking_dir$skey_name.skey \ | |
--testnet-magic $networkmagic \ | |
--tx-file tx001.signed | |
sleep 1 | |
echo we are now submitting the transaction | |
cardano-cli shelley transaction submit \ | |
--tx-file tx001.signed \ | |
--testnet-magic $networkmagic | |
echo ok now we sleep for 30 seconds waiting for transaction | |
sleep 30 | |
echo you want to delegate to another address - answer yes - if not script is done | |
read query | |
if [[ "$query" == "yes" ]]; then | |
echo now lets create a delegation certificate for this staking address ctrlc out of script if not delegating | |
echo what staking vkey are you going to use and write ending .vkey? | |
echo $(find $staking_dir*.vkey) | |
read staking_vkey | |
echo what pool verification file are you using? | |
read pool_vkey | |
echo what do you want to name the delegation certificate? | |
read delegation_cert | |
cardano-cli shelley stake-address delegation-certificate \ | |
--staking-verification-key-file $staking_dir$staking_vkey \ | |
--stake-pool-verification-key-file $staking_dir$pool_vkey \ | |
--out-file $staking_dir$delegation_cert | |
## STEP 9: CALCULATE FEES FOR REGISTRING DELEGATION CERTIFICATE | |
echo now lets calculate the minimum fees for registering the certificate | |
echo | |
cardano-cli shelley query protocol-parameters \ | |
--testnet-magic $networkmagic > protocol.json | |
echo how many slots do you want the transaction to have time to live before going invalid | |
cardano-cli get-tip --testnet-magic $networkmagic > gettipfile | |
currentslot=$(awk 'NR==5 {print $2}' gettipfile) | |
echo keep in mind the current slot is $currentslot and the slot number should be higher | |
read ttl | |
cardano-cli shelley transaction calculate-min-fee \ | |
--tx-in-count 1 \ | |
--tx-out-count 1 \ | |
--ttl $ttl \ | |
--testnet-magic $networkmagic \ | |
--signing-key-file $staking_dir$pay_addr.skey \ | |
--signing-key-file $staking_dir$skey_name.skey \ | |
--certificate $staking_dir$delegation_cert \ | |
--protocol-params-file protocol.json > minfeefile | |
min_fee=$(awk 'NR==1 {print $2}' minfeefile) | |
min_fee_ada=$(awk 'NR==1 {print $2/1000000}' minfeefile) | |
echo minimum fee $min_fee lovelace or $min_fee_ada ADA | |
## STEP 10: PAY FOR REGISTRING THE DELEGATION CERTIFICATE | |
echo we will now pay for registering the delegation certificate of minimum fee $minfee_ada ADA and $keydeposit_ada ADAfor keydeposit | |
echo lets look at the TxHash of address and select one | |
cardano-cli shelley query utxo \ | |
--address $recieving_addr \ | |
--testnet-magic $networkmagic > txhashfile | |
awk '{print NR, $1, $2, $3,"\n"}' txhashfile | |
echo select line number for account you want to use | |
read txhashnumber | |
txhash=$(awk 'NR=="'"$txhashnumber"'" {print $1}' txhashfile) | |
txix=$(awk 'NR=="'"$txhashnumber"'" {print $2}' txhashfile) | |
addr_lovelace=$(awk 'NR=="'"$txhashnumber"'" {print $3}' txhashfile) | |
addr_ada=$(awk 'NR=="'"$txhashnumber"'" {print $3/1000000}' txhashfile) | |
echo you will use $txhash TxHash and TxIx $txix | |
echo account has $addr_lovelace number of lovelace or $addr_ada ADA | |
let fee_total=min_fee | |
let lovelace_left=addr_lovelace-fee_total | |
let ada_left=lovelace_left/1000000 | |
echo the lovelace that will be left in the account is $lovelace_left or $ada_left ADA | |
sleep 1 | |
echo we are building the transaction now | |
cardano-cli shelley transaction build-raw \ | |
--tx-in $txhash#$txix \ | |
--tx-out $recieving_addr+$lovelace_left \ | |
--ttl $ttl \ | |
--fee $min_fee \ | |
--tx-body-file tx001.raw \ | |
--certificate $staking_dir$delegation_cert | |
sleep 1 | |
echo we are now signing the transaction | |
cardano-cli shelley transaction sign \ | |
--tx-body-file tx001.raw \ | |
--signing-key-file $staking_dir$pay_addr.skey \ | |
--signing-key-file $staking_dir$skey_name.skey \ | |
--testnet-magic $networkmagic \ | |
--tx-file tx001.signed | |
sleep 1 | |
echo we are now submitting the transaction | |
cardano-cli shelley transaction submit \ | |
--tx-file tx001.signed \ | |
--testnet-magic $networkmagic | |
fi | |
echo Thank you for using this script | |
sleep 1 | |
cat << "EOF" | |
''''''''''''''''''''''''''''''''''...'''...............':!;>*|||||?r:,................................................................................... | |
'''''''''''''''''''''.'''''.''''''...''..''.'.........'>zvz7)LLL7vvtuuz?:'............................................................................... | |
''''''''''''''''''''''''''''''''.........'..''.........,!*vv7cL)77cL\L7zuCc?!,........................................................................... | |
'''''''''''''''''''''''.'''.'''..'........'...............'~>lv)c)iL\||\LczCyos>,........................................................................ | |
''''''''''''''''''''''''...'.'''''..........................'*vc)LL/\|**?\)JjaXAXv*^!:~",,,,,''.......................................................... | |
''''''''''''''''''''''''''''''''''.....'.................'...:z777cL//LvCo4wXkkEXww4aaaaooaooojFzv)/|>;:,'............................................... | |
'''''''''''''''''''''''''''.''''''''.......'................';szsJ}FoewwwwXXww44eaaoSjjuujjjyoooaaa4wwXXeotL?!~''........................................ | |
'''''''''''''''''''''''''''''''''''''.''..'''.''...'.......,>zjoewXXw4aaaaoooyjuC{s7)icllcl77vzsst}CujoaewwkAAXaF/;~'.................................... | |
''''''''''''''''''''''''''''''''''''''''.'''''''....'....~|j444a4wXw4aojF{z7L/L/LiL/Li)iic)c)LiLiiLi)cc7vtCuja4XkUU6wu\!,'............................... | |
''''''''''''''''''''''''''''''''''''''''.'''''........':\oaaaaaaaoyuJv)iiLLLL/\\\///LLLLL/LL/////LLLLLL/Lic7vtFjSawXUpK$4J*:''........................... | |
''''''''''''''''''''''''''''''''''''''''''''''''''''':\jooaooyFCsz7v77777)L/|*>*?|||||||||||||||||||||\\\/LLLi7ztFjoa4X6pKpwj/!,,........................ | |
'''''''''''''''''''''''''''''''''''''''''''''.''..':LuoaoSuFtzv77vvvcLL\|?>r^!!!:!;r^!!::!!!;;!!;;;;^^rr>>>>>**|\LlsujyoawkpKp4{z^:'..................... | |
'''''''''''''''''''''''''''''''''''''''''''''.''':\joSjuu{zvv7c7)/\|||?>r;;;!:~,,:::` '````,,~:~~:::::!!!!!!!!!;;;^r|7CFFjoawApK6o{r".................... | |
'''''''''''''''''''''''''''''''''''''''''''''',;7jjuuFtz7lccL\||??**??**rr^;;!:::::",,,"~~:::::::!!!!;;;;!!!!!;;;;!!^|)i7JuSaewXAUXoz>:'................. | |
'''''''''''''''''''''''''''''''''''''''''''',>tjuusvz7)iL/\\|?*****???*>r;!!::::::::::::::!!!!!!!;^^^r^r^^;!!;^>>*>>**|*|LzFjoe44wwww4u/,.............`.. | |
'''''..''''''''''''''''''''''''''''''''''',*tFCF}z7LL/\|||?*|||||/\|>rr^^^^;;^^^^^^^r^^^^^rr>>*****r^;;^^r^!;^rr>>*||*>r>|L7JFjoew4aawAAu\,.............. | |
''''''''''''..'''''''''''''''''''''''''':/{cCtz7i///\????||Llsts7L|>rr>>***|||?||\\\/|/\\||//Lici/\?>^;;^rrr>?|?>>**>rrr>>>|/lsFSaeeww4w$Ao>,............ | |
'''''''''''''''''''''''''''''''''''''':\}}Jlz7L//\\|??|\/7tFu}vL|>^^^>|\/LiLci)i)lll7cvvll)L|\\cv\*>*?rr^rr>>r>>rrrr^r>>>>>>>>|L7suawwaeewU$j!'.......... | |
'''''''''''''''''''''''''''''''''''',|{tsJzli/\\||?|\/7tFFz)/|*>r^;r|L77vlL|||\/Llvv7v7Ll77cLc7}us/|r**r!;^^^;^rr>>*|\LL/\\\\*;!;?LvuawwwaoEKA?'......... | |
'''''''''''''''''''''''''''''''''''^z{zvvlL/\|***?\L7c)L|?^!;rr>*|>?|||*****|\l7zz77zszzJFuuyu}JzzzvL|>;r!~:>|/////7{FC{}{}tzcLzEkXoztja44aowOU7,........ | |
''''''''''''''''''''''''''.'''''',LJzzv7L\|?>r>?\L7v)>!:::~:!;;!!^???*>r>?|||\uoaXkEXwaaoyuFCJz7777vvv)\|*\Lv}tta4jyjuFuFv77LLlzueoujouFyoooyepqC,....... | |
'''''''''''''''''''''''''''''''':Lzvz7)\|?>r>|L77cl/?!:~~"::::!^>|L)l7vvvtuSoSojuSSuuSoooSuF}zv777vstFuCJztj4Ab8NN%UweeEs77)L\|**>|Lvua4aooaoS4qOu,...... | |
'''''''''''''''''''''''''''''''!vv7v7i|*>r**?/LLLlL?!:,,,"::;>/sj4kU$qpKbbbbHDdKKbddpwoSjuuu}sszzs}Fj4$b%WNBQBBBNDHKppq47s7i))/|*?>*\vuyaaew4aakOD{'..... | |
''''''''''''''''''''''''''''',|zv)vcL|>>?||\/))/LL|::,~:!>LJjaXpbdHDDDdpXXXajC7L||>^;!!!::!!!!!!!!^uN@@QQQQQQQQQQB#NRDDKAk4juuJ7iL|*|iFojSoaaa4XpDH!..... | |
''''''''''''''''''''''''''''!7zc77)\?||/L\?|L7)ivC\|/)zj4AqKOdbbKXjv*!,'''''''''''''''''''''':^|tUQQQQQQQQQQQ##BBQQQQd>:!r?iuwj77{}zvvv7CuCuowqKKDNs'..'. | |
''''''''''''''''''''''''''';zzi7vl|||LL|?\Li7}aUdASSo4wwaj}s7\r!:'''''''''''''''''''''''',a%NBQQQQQQQQQQ#QB####gWBQA?'''''''':>|Lz7LL)ii/L77cvyAdNQF''''. | |
''''''''''''''''''''''''''rzvcl7l\||\\|?Lvzv}4DgRbKv*!:~''''''''''''''''''''''''''''''''''!FKBQQQQQQQBBBNRRNN#BBOF!''''''''''''''~;>|L\||||\L/LFXK%F''''' | |
'''''''''''''''''''''''''>z7i)cl/||\\|\)J}}op8RddF;,'''''''''''''''''''''''''''''''''''''''''~rLFa6DNBQBWHKXSv|:''''''''''''''''''''',!^?/L|?\LLvowXv,''' | |
''''''''''''''''''''''''^J7cc7L\\|\/\iv{uaEd88Ku^,'''''''''''''''''''''''''''''''''''''''''''''''''',:::,''''''''''''''''''''''''''''''''':;*LLL\|i}au~'' | |
'''''''''''''''''''''''!zv)L)7)LiLv)7JjeAdRKo\:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',;\c|;*uD/'' | |
''..''''''''''''''''''!zz)c77)LLLvc7toEqEoJ*,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''':>>\}4!'' | |
''''''''''''''''''''',\zcicv7LL/)lcCowXS?:,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''":"''' | |
'''''''''''''''''''':vC7lc7iLLL\)vuauus!,''''''','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
''''''''''''''''''',\u{vv7)LLL/z}C)L{/~''''''''','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
'''''''''''''''''''!Fjtvz7LLiLvu}z7}!,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
'''''''''''''''',',\yutssci)iz{zc7\~',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
'''''''''',''',,'':CyutCsc/\vuzl{c,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
',,,'',,'',,'''','!ujuF}z7)lzJvF/~,,,,,,',,''',,,,',,''',''''''''''',',,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
,,,,,,,,,,,''''''';uujutvzlc7Jy|,,,,,,,,,,,,,,,,,,,,'',,,'',,,'',,,',',,,',,'','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
,,,,,,,',',,,''',,>jjyuvvzvsto|,,,,~,,,,,,,,,,,,,',,,',,,,,,,''',,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
,,,,,,,,,,''''',,'^uuj}vzizsa>,,,,,,',,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,',,,,,,,,'',',,''''''''''''''''''''''''''''''''''''''''''''''''''''''' | |
,,,,'',,',',''''''!uuSa4usvo\,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,''',,,,'',,'''''''''''''''''''''''''''''''''''''''''' | |
,,,,,,',',',',,,,'!aeUDdaJjL,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,',',''''''''',,'''''''''''''''''''''''''' | |
,,,,,',,,,,,,'':|od#QQQgyaL,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,',,,,,,,,,,,',,'''',,'',,,,''''',''',,,,, | |
,,,,,,,,,',:>FKQQQQ@@@@pU#a!,','',',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',',,',,,,,, | |
,,,,,,,,">FRQ@@@@@@@@@QNQQWj*',,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,, | |
,,,,,,:|AQ@@@@@@@@@@@@QQQ#RDXL:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | |
,,,,:LHQ@@@@@@@@@@@@@@@@@@QQD8F",,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | |
,,~/W@@@@@@@@@@@@@@@@@@QQQQQQ#Hy:",,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | |
,~jQ@@@@@@@@@@@@@@@@@@@QQQQ@QQQ#i,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | |
:4@@Q#dA4SSokdQ@@QQQQ@#H#QQ@QQQ#K:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | |
o@d)!~~~~~"",',!>:|awE4ARQ#QQQBQQ|,,,,,,,,,,,,,,,,,,,,"",,,,,,,,,,,",,,,,""""",,,,,,,,,,,,,"",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | |
#w/\\||||r!:!!::!;::,,',~>jRBBQQQj^^?>*???*?|??***?***>>>>**?***>****>>>>>>>>>>>>rrrrrrr^^^^;r^r^^^r^^;^^^;;;;^;;;;;;;;^;;;;!;;;!!!!!!!!!!!!!!!!!!!!!!!!! | |
CzJ}{|sLL/?*>r;!^!r>:~':::!:7H@@QXLlzzv7lzJ{uuuFtJJzzzttJszzzvzzzszv7z7vzzvvvv7777v7l)LLL///Li)L//\\|||/L)i\||\|\|\\||//|||\\\\\|?*??||?****>>>r>rrrrrr>r | |
jjuut7s|\{L/|)?:>\*:!:!!*>:~*LN@Qw}F{{7czCvCFuuyyuFF}FFFuC{}{tzz}{tJ{FFszvci7zzzzssszJzssvcL7zv)LLLL/LLll7iicl7li/LL//\\|\||||||||?|||\|||>^rr>>rrrrrr>*^ | |
EOF | |
echo goodbye and thanks for the fish! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment