| Bytes | Lang | Time | Link |
|---|---|---|---|
| 868 | Zsh +basenc +lzma | 241001T061750Z | roblogic |
| 910 | HTML | 240926T120558Z | jdt |
| 919 | Bash+lzma | 240927T141914Z | Themooni |
| 975 | JavaScript ES6 | 240926T135039Z | Arnauld |
| 938 | JavaScript | 240927T002641Z | Kamil Ki |
| 925 | CSS | 240926T234238Z | Kamil Ki |
| nan | HTML + JavaScript | 240926T143019Z | Shaggy |
Zsh +basenc +lzma, 868 bytes
Tweaking the excellent work of @Themoonisacheese above, using Z85 encoding instead of base64. Saved many bytes, introduced a decoding error. Result looks best on a terminal.
Code formatted for readability - wrapped at 400
basenc -d --z85<<<'t(T>P0rr90%nSc0@@rh=1t<H3vv}[0Mi?VC<(^Kd6/(fiR9n/(u5T8u{{oY?J{%v}&LN)U%b:pk&w?>>=$E?j<9=anwK##pO+lXC=dzctZ7W:}5D3z^Bg5)(^e[NaBR59k3Ttt?Ol8JdhHmOL8GCUgYHnH4@Rm(ZnQcQyi].xr&U/QH4qawwcM@!eV^LV(Ji2->l2mDdc]84K!1JU#g7iIQieh6&O0A$Ojo*Co>Ac^cu/.nq^95/xu*]WZq8d#%mSroP<3PIR]7YV*tfyp9WqC+LGE4YiC3B52<e$nZn33w?Wu{:0IZiC1FAo<9bHPMygkk*b^QfwJkX3U*jPuu>&s7d4?$Pui]T{YOUbC^xEQX]/w&B[P1SewJ=S{@H[
OgcQTu&{F1RI5]f7%9)!-5?)HZf[IzSjF*:.D=Ok=.3-oyb8@JA^ZkTpQ*Q-*kWlpxaZ8Y$(&M>)(3re&KM*hey4]!W<6s}J2J2M!.c0T.)/$tTxFn*AEr6Ha[=3J@BM[d+$.%/SBnr@v4}$k!qiw{??pHpTl+YVfRSBO^pn-X+hBchvyn6Mub6qKe/TD1#tue=FBJcyST^I^I5)}1q7vwjr[iuC!<4iO9Kr:5?9E:IV@Jzk8^kSG6)pofhGkSVyk/o?l$nsE#gNi!vlfdckym?&zP3}@w=aLQI<O%:ZavbhAE{Kn)2vXqmQ?b)GZ3AjS!c&V+ppzi#-xPt6d3WJ[vUds&8!F8DT!t&oeIOOCWWgee18Kv<.)/DVAbjUEG{D@SOS$q:Pn){&UcJr
nW[C:n5Hx!gXjm{9jB44{^B@x2xRX/Ni.wEzdzd:Ml//&<px9++LiEZ>=Lo'|lzma -d
NB When I tried to convert the base64 string to z85, basenc threw this error: basenc: invalid input (length must be multiple of 4 characters). So I changed the last bit from /7fAiGU= to /7fAiGUU= and it worked, despite lzma complaining. This is what the encoding step looked like:
echo {TheMoonIsACheese-base64-string}/7fAiGUU=|base64 -d\
|basenc --z85 -w0 > waiting.z85
HTML, 920 910 bytes
<img src=data:;base64,UklGRpICAABXRUJQVlA4TIUCAAAvccAxAA8w7qM+Z/MfeKCk7Z8iSfkiKqrJyrHAHXIcd9f/uKxwt6U77Cxw2I3uXU/RR8Bt5brmBv3k78fcIKL/E8DofVPk4z8t1Xhuqu04cb62/oEl2o5/b9LiwfO1S47fqLVvrtLuefAtjXhca5e8pJG/MS49ocVHb2usOJGlrWe+hTwcfky7b+/zSTr21WXIDzz4rXbivhekdmxjSDx/6R9S+4gmsWvFvLZu1jQmLSnBHBLMMdEKU20Jc9oZLNZ6zpHaBVSJwjXaeZz05BTHvseJpHTQEFsFpgI9cIYyoLceGMaCewq0MXb1AHlsOLRg8djnp1Wgju07lIFnxk7bDjA/tu+0mVaOZ6Clkba9AIzFoRULJiOcNgNqGjtegJiMxMYVAGmEYQZ8xPiDq6F9JdBBhBCbYECtUK8RYhN0VWAHdJ3QOiiLBdZDyUotrE9CNHgfdQbz0pBYJ1GZl0qmJWUHINHRpAwxURqQFdg5TKVKOU+CdokUHw2vSlS+0sjPKomMVBi6R5SFV0gJbpKAy5w7jbbEmM9GJAdzh5Z4RqORNPobtBge0vjgJ4O/tYh9SYKtE+PLZLSJsTUZ+5wv0OMyg5kxLJZqa3MSrO+N7hQjeuMDp15otDOMuN3gEuctI/42OOT8Y6QvjHIoafGFwT3OL84ezJ+TccLZh/mfc9pIqgt2XDIyeoPUSvRCrAKmAjA05Pd75FML/3eldkmBwB2c4iQjOJmtLtegc7KxETcZOzDXOdVZZUQ16B239QZFSy1rBQOSEU7n7EOPMHjAWe5UZ5WxozM4w5kZUQyyEckgGwNygiTBGegN9xJnhZSgSoV2hgR0UqX1ElCMyAbJaNmwmwYA
Compressed with cwebp -z 9:
Dimension: 114 x 200 Output: 666 bytes (0.23 bpp) Lossless-ARGB compressed size: 666 bytes
- Header size: 61 bytes, image data size: 579
- Lossless features used: PALETTE
- Precision Bits: histogram=3 transform=3 cache=0
- Palette size: 2
Bash+lzma, 919 bytes
echo XQAAgAD//////////wAE6AQ0YBVhn3uDlgl0vOXoGCYVOfvHpT5vTV2MemT4s/dNjvCzHeHDP6j/kKuC4TkcE9BofQfjfXbpZUkDZ531aSnN1+ePvhOxIhD8bh1ztcMJ0QJ4vXUQZNQLXC9bnFekyTZ6Pz8acfuIvESitf35KRxJeJgdOuMhhuIZwmwNZtvQJyEJZ7PSpR+MrE1uQWwaRSgyB8zToabiMgvuXTiGZ3eblf5XPAaDp+eRHXVf5QAq0Mu0z1/wLmlRMfx9RnBvYuNDoWzy+Lb4Wstf2LVt+maEJR70dlvk9eOuNcpHrGhAtZf6t4skdYaA5VdLI9JU1zKGAVHSX7SbQGOl/Dz/G0jhDH2Y3/g9UfS8nI6uqGG9fmKfGmY3dskFGCCaz10MR/FqO0esQaw5BRIHhS72bGXV4kBTiAepSG7iUE/JaoxxQKut+kvsRX6NXCOxrBCaMsaW5ChO/2BZvcE9HukOz1MuNxbKNWvB69W6zxH6j25el9zx7q1t95VcQh4F2yITn4Ywkg+O/oCUKt0Sjdit5a79KQZ7QLp4rPhuIqFPzsCysewFLJ4IjAy59ZsWNgsVr5ZzOYGPqraLBjLm7s7ejNFrycwq0hOxuAQQ+L08I19feMD24ZvrXFwSKPa5iwXuTj6MvwGC7mfpL0+8ULKacljdtsTCf4m1U9S4E2wmFWn34VLs2f05I9Sjb2HdyV3vSTY6rGZKWF07Ubl1iu4HsiY9H2KJs71vlzsbd2VadLG5jthd8lnCLokaV8KT4OfR7Jz8efwsEpGzYycSU3tyVXqvuJd8/gWXYlNC3IT4ddXoVOAEl8f5TxDUL7Vc9iNtfA9dzWxmw43Y2Hz/yn2+MKDI5WCL4rQv7Myj/7fAiGU=|base64 -d|lzma -d
With contributions from Neil (exact number of bytes saved unknown)
-16 bytes: the converter encodes whitespace with U+2800 characters, but they are poorly compressed and we can do better by first replacing them with spaces, then running unexpand to convert 8 spaces to a tab.
as you can probably guess, the base64 is a lzma compressed stream, that contains ascii art generated here.
The generator was configured to create a 57 character-wide image, because that's half the image width and braille characters are 2 "pixels" wide.
Modern browsers assume tabs to be 2 spaces wide, unlike terminals which assume 8-wide tabs, therefore the ATO link will look pretty bad. here's a screenshot from my terminal with the default 8:

JavaScript (ES6), 975 bytes
-9 bytes thanks to Daniël van den Berg
This encodes the 64 custom tiles of 8x8 pixels used in the original C64 version and the grid of 25 rows and 15 columns filled with these tiles.
Everything is stored into a single array of 15*25 + 64*8 = 887 bytes, encoded in base64 and compressed by shortening runs of consecutive A's.
s=atob(`(ECAw.QFBgc-gJCgs-wN 4.PABAR-S!EEw)BQVFg!BcY)ZGg!Bsc*HR4AHy,ISIAIyQ+EQQlJico+CM Ck,CMAKisY/Cwt,QALi8/ETAx/DIz&IwQANBE1BDY%QABDcj-4OQ,EQA6/Ds8.BD0+ESMAPiM+B!Pw/'pABACE oEhqpKpRqlWkFTsVbjXbbdYAQ&FJVAKIIpBGIu9VttFCo8qg QEBAwIBCiCASKBQqKKoVZRVSlVKEqXUaqqrVa0BlAEBBQADAQEDEkgE E"CiiUMGBgQNAIDAgYEDBQYUChyEGg"wYED-QQ"IEIogCo QUCFF gAFIgCSASIAQQCqQSpIoSqQR JACgEkCgIIMEC)EDAwYqkUikEYBUABGKJBKJJJUg B"QSgEEDAQNBAIDARVAFUAiCEABAQABAgABEAKAQCAgEBAIBADAQCAwCAUCJI EE C!BEAIAi!gAE'wEDBgQGDQhE!RQ IgIIQAIIAC gFGiiwEigoG#BAwEBAbDYqPQ2CwUBQIACKIEI ECAQTQWGqggSBEACCAQKkkDQcOBQYD C ggg h DAaKRwpKnRS7aDUoZCkQJ"EDAgMDBkFAhFCAqIDQBwUHAgcGAgM#kQ R"BIAgCoASKLQKRQC"IAGAEAQBAEI B QARAhCAIAQQCAQCQQSgAKhAKC!IIABUIRABAUEAgEB CQIlAkEQgFCI UAKgiEBSICoQCQQK I`.replace(/\W/g,c=>"A".repeat(c[C="charCodeAt"]()-30)));document.write`<canvas id=c height=200>`;c=c.getContext`2d`;for(y=200;y--;)for(x=120;x--;)c.fillRect(x,y,1,1,c.fillStyle=s[C](375+s[C]((y>>3)*15+x/8)*8+y%8)>>x%8&1?"#FF0":"#000")
Encoder
"use strict";
// turn the data provided in the challenge into a list of [x,y] coordinates
let DATA = getData(),
coord = [];
for(let n = 0; n < DATA.length; n += 2) {
coord.push([ DATA[n], DATA[n + 1] ]);
}
// extract all the tiles
let tile = [];
coord.forEach(([x, y]) => {
// the coordinates provided in the challenge are not aligned with the grid
// we have to shift x by 2 pixels
x += 2;
let X = x >> 3,
Y = y >> 3;
tile[Y] = tile[Y] || [...Array(15)].map(_ => [ 0, 0, 0, 0, 0, 0, 0, 0 ]);
tile[Y][X][y & 7] |= 1 << (x & 7);
});
// save the distinct tiles into tileMap and turn tile[] into
// the tile grid, filled with tile indices in tileMap
let tileMap = new Map,
id = 0;
tile.forEach((c, y) => {
c.forEach((a, x) => {
let key = a.map(v => v.toString(16).padStart(2, "0")).join("");
if(!tileMap.has(key)) {
tileMap.set(key, id++);
}
tile[y][x] = tileMap.get(key);
});
});
// convert the keys of tileMap into an array of bytes
let tileData = [...tileMap].map(a => a[0]).join("").match(/../g).map(s => parseInt(s, 16));
// put the grid and the tile data into a single array of bytes
let bytes = [ ...tile.flat(), ...tileData ]
// convert it to base64
let base64 = Buffer.from(bytes).toString("base64").replace(/=/g, "");
// compress by replacing sequences of A's with characters in the range [32..47]
let packed = base64.replace(/A{2,17}/g, s => String.fromCharCode(32 + s.length - 2));
console.log(packed);
function getData() {
return [
65,0,68,0,70,0,72,0,74,0,56,1,59,1,61,1,63,1,65,1,67,1,68,1,70,1,71,1,73,1,74,1,75,1,64,2,67,2,69,2,70,
2,72,2,74,2,60,3,63,3,65,3,67,3,69,3,71,3,72,3,73,3,75,3,76,3,57,4,62,4,66,4,68,4,70,4,72,4,74,4,75,4,60,
5,63,5,65,5,67,5,69,5,70,5,71,5,73,5,74,5,76,5,77,5,62,6,64,6,66,6,68,6,70,6,72,6,73,6,75,6,76,6,59,7,61,
7,64,7,67,7,69,7,71,7,72,7,74,7,76,7,77,7,63,8,66,8,68,8,70,8,71,8,73,8,74,8,75,8,77,8,60,9,62,9,64,9,66,
9,68,9,70,9,72,9,74,9,76,9,77,9,78,9,70,10,72,10,73,10,75,10,76,10,78,10,63,11,67,11,69,11,72,11,74,11,75,
11,77,11,78,11,65,12,74,12,76,12,78,12,79,12,64,13,67,13,69,13,73,13,75,13,77,13,79,13,62,14,66,14,71,14,
74,14,75,14,76,14,77,14,78,14,65,15,69,15,73,15,75,15,77,15,79,15,81,15,59,16,62,16,64,16,66,16,68,16,72,
16,74,16,76,16,77,16,78,16,61,17,64,17,66,17,69,17,71,17,73,17,75,17,76,17,78,17,57,18,60,18,62,18,64,18,
66,18,68,18,71,18,73,18,75,18,77,18,78,18,80,18,59,19,61,19,63,19,65,19,68,19,70,19,71,19,73,19,75,19,77,
19,58,20,60,20,62,20,64,20,66,20,68,20,70,20,72,20,74,20,76,20,78,20,79,20,57,21,59,21,61,21,63,21,65,21,
68,21,70,21,72,21,73,21,75,21,77,21,78,21,55,22,59,22,61,22,63,22,66,22,70,22,78,22,57,23,59,23,61,23,62,
23,64,23,67,23,69,23,72,23,74,23,77,23,78,23,79,23,55,24,58,24,63,24,79,24,57,25,60,25,63,25,65,25,69,25,
78,25,79,25,56,26,62,26,64,26,67,26,79,26,64,27,65,27,79,27,80,27,54,28,65,28,66,28,80,28,65,29,66,29,80,
29,81,29,66,30,80,30,82,30,64,31,66,31,67,31,81,31,82,31,66,32,68,32,82,32,83,32,65,33,67,33,83,33,84,33,
63,34,66,34,67,34,68,34,84,34,66,35,84,35,85,35,65,36,67,36,68,36,88,38,90,39,92,41,94,41,94,42,96,42,67,
43,95,43,63,44,68,44,96,44,98,44,65,45,67,45,98,45,100,45,69,46,63,47,65,47,67,47,101,47,54,48,68,48,70,
48,74,48,103,48,57,49,60,49,63,49,65,49,67,49,105,49,61,50,66,50,69,50,71,50,106,50,107,50,56,51,59,51,63,
51,65,51,68,51,76,51,108,51,61,52,63,52,66,52,69,52,71,52,73,52,109,52,110,52,57,53,60,53,65,53,67,53,70,
53,110,53,111,53,61,54,63,54,65,54,68,54,72,54,75,54,110,54,111,54,58,55,64,55,67,55,69,55,71,55,73,55,
111,55,112,55,63,56,65,56,67,56,70,56,74,56,112,56,62,57,66,57,69,57,71,57,73,57,77,57,112,57,113,57,65,
58,68,58,72,58,75,58,108,58,112,58,64,59,67,59,69,59,71,59,74,59,110,59,112,59,113,59,62,60,66,60,70,60,
73,60,77,60,112,60,69,61,72,61,75,61,106,61,111,61,64,62,66,62,68,62,70,62,72,62,74,62,77,62,103,62,105,
62,108,62,110,62,111,62,75,63,102,63,110,63,70,64,72,64,74,64,78,64,101,64,76,65,100,65,108,65,109,65,70,
66,72,66,74,66,78,66,99,66,108,66,76,67,79,67,99,67,107,67,71,68,75,68,98,68,106,68,107,68,73,69,78,69,98,
69,105,69,76,70,82,70,97,70,102,70,104,70,70,71,79,71,96,71,103,71,72,72,75,72,102,72,103,72,77,73,80,73,
96,73,102,73,84,74,102,74,103,74,74,75,81,75,103,75,104,75,76,76,79,76,104,76,83,77,103,77,104,77,73,78,
102,78,104,78,105,78,79,79,105,79,88,80,92,80,95,80,101,80,104,80,106,80,84,81,98,81,105,81,107,81,108,
81,103,82,107,82,109,82,86,83,90,83,95,83,101,83,108,83,109,83,110,83,92,84,105,84,108,84,110,84,111,84,
97,85,107,85,109,85,110,85,72,86,89,86,107,86,109,86,110,86,74,87,93,87,99,87,107,87,108,87,110,87,106,
88,107,88,109,88,80,89,105,89,106,89,108,89,109,89,105,90,107,90,109,90,104,91,106,91,107,91,108,91,109,
91,103,92,104,92,106,92,107,92,102,93,103,93,105,93,102,94,104,94,102,95,100,96,103,96,80,97,101,97,102,
97,95,98,104,98,97,99,99,99,106,99,108,99,109,99,94,100,101,100,105,100,106,100,108,100,110,100,97,101,
103,101,105,101,107,101,108,101,110,101,111,101,107,102,109,102,110,102,111,102,94,103,102,103,109,103,
111,103,112,103,107,104,110,104,112,104,113,104,104,105,108,105,110,105,111,105,112,105,111,106,112,106,
113,106,107,107,110,107,112,107,109,108,111,108,112,108,108,109,110,109,111,109,102,110,105,110,107,110,
109,110,104,111,107,111,101,112,106,112,107,112,84,113,95,113,103,113,105,113,106,113,97,114,102,114,105,
114,107,114,99,115,104,115,105,115,106,115,102,116,105,116,107,116,97,117,103,117,105,117,107,117,100,
118,104,118,106,118,107,118,108,118,103,119,106,119,108,119,102,120,104,120,105,120,107,120,108,120,109,
120,107,121,109,121,104,122,106,122,108,122,109,122,110,122,102,123,107,123,109,123,110,123,111,123,106,
124,109,124,111,124,104,125,107,125,109,125,110,125,111,125,96,126,108,126,110,126,111,126,98,127,106,127,
109,127,111,127,112,127,102,128,108,128,110,128,111,128,112,128,108,129,110,129,112,129,104,130,109,130,
110,130,111,130,112,130,106,131,108,131,111,131,109,132,110,132,111,132,112,132,105,133,107,133,109,133,
111,133,112,133,109,134,111,134,106,135,108,135,109,135,110,135,111,135,105,136,108,136,48,137,60,137,
100,137,103,137,107,137,109,137,106,138,108,138,109,138,87,139,90,139,102,139,105,139,107,139,70,140,74,
140,77,140,104,140,106,140,93,141,103,141,80,142,87,142,89,142,91,142,72,143,76,143,82,143,36,145,52,145,
59,145,64,145,54,146,61,147,58,148,56,149,54,150,39,152,44,152,48,152,53,152,51,153,49,154,42,155,46,155,
48,156,44,157,47,157,40,158,46,158,44,159,42,160,45,160,38,161,44,161,41,162,43,162,39,164,41,164,43,164,
42,165,24,166,39,166,41,166,26,167,41,167,40,168,38,169,40,169,35,170,40,170,37,171,39,171,30,172,38,172,
34,173,36,173,38,173,32,174,37,174,36,175,34,176,37,176,28,177,31,177,35,177,34,178,36,178,32,179,35,179,
30,180,34,180,33,181,30,182,32,182,33,183,29,184,8,185,32,185,26,186,28,186,23,187,27,188,29,188,25,189,
29,189,0,190,28,190,2,191,23,191,26,191,28,191,27,192,4,193,23,193,25,193,27,193,26,194,22,195,25,195,24,
196,23,197,25,197,23,199
];
}
JavaScript, 945 938 bytes
Here I again use image url from jdt answer, and it allows me to actually beat current JS record (989 bytes by Arnauld)
document.write("<img src=data:image/webp;base64,UklGRpICAABXRUJQVlA4TIUCAAAvccAxAA8w7qM+Z/MfeKCk7Z8iSfkiKqrJyrHAHXIcd9f/uKxwt6U77Cxw2I3uXU/RR8Bt5brmBv3k78fcIKL/E8DofVPk4z8t1Xhuqu04cb62/oEl2o5/b9LiwfO1S47fqLVvrtLuefAtjXhca5e8pJG/MS49ocVHb2usOJGlrWe+hTwcfky7b+/zSTr21WXIDzz4rXbivhekdmxjSDx/6R9S+4gmsWvFvLZu1jQmLSnBHBLMMdEKU20Jc9oZLNZ6zpHaBVSJwjXaeZz05BTHvseJpHTQEFsFpgI9cIYyoLceGMaCewq0MXb1AHlsOLRg8djnp1Wgju07lIFnxk7bDjA/tu+0mVaOZ6Clkba9AIzFoRULJiOcNgNqGjtegJiMxMYVAGmEYQZ8xPiDq6F9JdBBhBCbYECtUK8RYhN0VWAHdJ3QOiiLBdZDyUotrE9CNHgfdQbz0pBYJ1GZl0qmJWUHINHRpAwxURqQFdg5TKVKOU+CdokUHw2vSlS+0sjPKomMVBi6R5SFV0gJbpKAy5w7jbbEmM9GJAdzh5Z4RqORNPobtBge0vjgJ4O/tYh9SYKtE+PLZLSJsTUZ+5wv0OMyg5kxLJZqa3MSrO+N7hQjeuMDp15otDOMuN3gEuctI/42OOT8Y6QvjHIoafGFwT3OL84ezJ+TccLZh/mfc9pIqgt2XDIyeoPUSvRCrAKmAjA05Pd75FML/3eldkmBwB2c4iQjOJmtLtegc7KxETcZOzDXOdVZZUQ16B239QZFSy1rBQOSEU7n7EOPMHjAWe5UZ5WxozM4w5kZUQyyEckgGwNygiTBGegN9xJnhZSgSoV2hgR0UqX1ElCMyAbJaNmwmwYA")
CSS, 928 925 bytes
This answer based on jdt answer (I use his image url)
*{content:url(data:image/webp;base64,UklGRpICAABXRUJQVlA4TIUCAAAvccAxAA8w7qM+Z/MfeKCk7Z8iSfkiKqrJyrHAHXIcd9f/uKxwt6U77Cxw2I3uXU/RR8Bt5brmBv3k78fcIKL/E8DofVPk4z8t1Xhuqu04cb62/oEl2o5/b9LiwfO1S47fqLVvrtLuefAtjXhca5e8pJG/MS49ocVHb2usOJGlrWe+hTwcfky7b+/zSTr21WXIDzz4rXbivhekdmxjSDx/6R9S+4gmsWvFvLZu1jQmLSnBHBLMMdEKU20Jc9oZLNZ6zpHaBVSJwjXaeZz05BTHvseJpHTQEFsFpgI9cIYyoLceGMaCewq0MXb1AHlsOLRg8djnp1Wgju07lIFnxk7bDjA/tu+0mVaOZ6Clkba9AIzFoRULJiOcNgNqGjtegJiMxMYVAGmEYQZ8xPiDq6F9JdBBhBCbYECtUK8RYhN0VWAHdJ3QOiiLBdZDyUotrE9CNHgfdQbz0pBYJ1GZl0qmJWUHINHRpAwxURqQFdg5TKVKOU+CdokUHw2vSlS+0sjPKomMVBi6R5SFV0gJbpKAy5w7jbbEmM9GJAdzh5Z4RqORNPobtBge0vjgJ4O/tYh9SYKtE+PLZLSJsTUZ+5wv0OMyg5kxLJZqa3MSrO+N7hQjeuMDp15otDOMuN3gEuctI/42OOT8Y6QvjHIoafGFwT3OL84ezJ+TccLZh/mfc9pIqgt2XDIyeoPUSvRCrAKmAjA05Pd75FML/3eldkmBwB2c4iQjOJmtLtegc7KxETcZOzDXOdVZZUQ16B239QZFSy1rBQOSEU7n7EOPMHjAWe5UZ5WxozM4w5kZUQyyEckgGwNygiTBGegN9xJnhZSgSoV2hgR0UqX1ElCMyAbJaNmwmwYA
HTML + JavaScript, 13+1015=1028 bytes
<canvas id=c>
`¾ ¿ Á ¹ à »¿ÁÅÇ ¦Ä ½ÁÃÅ §º¿Â ¼ÀÁ ±º¾¿ ¸¼½ ¬´¶ ± ®³¶¹ µ· °²´ ª±³ ‘¯² «®° ¡©¬ ˜¤¦« ž¨©ª ¢¤¦§ › ¥ ¢¤ ˜Ÿ¡ ›ž ‰˜œ š ™ ‘ ˜ 0’– 3• 15 7” 3‘ 15‰ 246“ 9< ",/13468
7;>‘ !$-/13568: "#249<>
!"$+-/1578; "$,036:>
.2479;=
058<>@BGŒ 2479;D
6:=>@BHV
479<EN 08;>@BKWŒ
6:=?DH
3ACFL
9<>IŒ
@BE
CGLO IYaŽ K F !M !"#JQq # S ‹Ž &P VŽ 'S‹ Ž )PT W )*dg +PSbq *,GI~ FUceru ,-DEQ BCWcs -A\`v‰ /@PSadp ?FHIJN]^_agnrtx{€‹ 0>GHJKMR\\]\`equw‰ FKLMNP[\\^biosvxz}‚Œ 1>ENOQTYZ]denqrstux…ˆ‹ 2=DPXY[\\cdpqsvwz|ƒ‡ŠŒ 2CDQRUVWXZ[\\efhknoprtuvxy{}…‰‹ 3:>ABQSTWY[cdeimvwxz~€ƒ‡ˆŠ 4ARSUVXYZ[cfglnxyz{|}‚„…†‡‰Š 456;>?STUVWdefhikmz{}~€‚„‡ 567=>Tefgijlm{|}~€‚ƒ„…†‡ 789:;<ghijkl€‚„… 9;hj`.split` `.map((a,x)=>[...a].map(y=>c.fillRect(x,y.charCodeAt(),1,1)),c.height=199,c=c.getContext`2d`)