Parts of this code have been authored by @grahamc
S3ETHAGKW3BJTWARYXKNXPFYMBRGJ7W5AWEUE2LGITLBSDU3YLXAC
XO72X6PQOB2636JAVQTXC2WC7BYZTYVYTQDAWYFXZIQYCDIP6ALQC
Y6AHH4THYQA43V77L43YM42DYRPCMDSWLUV4NKWAQYMPL4NTUIPQC
J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC
OZDDUMVPLAIDDD4H43JOP75WYF6XOXL737GEUIHVDTKQAGFHYTBAC
ZH6B56XRZON7AGKUPGKABU2SWOIQSYBTXVOMR66X6P6MG25Y4WZAC
4UUKWXDFP2CBW6MJCBIOROQZXZDJPWJWDCKYTXBFKNCGVMJ32BJQC
TFK74CQRYCOR2RAUZ6LATA3IJVR7QCWSPCMTXCJPPDPIRS7D5UTQC
ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC