Skip to content

Instantly share code, notes, and snippets.

@petersalomonsen
Last active November 23, 2020 17:42
Show Gist options
  • Save petersalomonsen/0a9435c3a65dd6f9dadf336ac20adbbd to your computer and use it in GitHub Desktop.
Save petersalomonsen/0a9435c3a65dd6f9dadf336ac20adbbd to your computer and use it in GitHub Desktop.
/**
* "Fall"
*
* Spotify: https://open.spotify.com/track/0UtYDJwUGQO4OvCmPnGvZT?si=pB48erfcSeud45DKaWtfmQ
* Soundcloud: https://soundcloud.com/psalomo/fall
*
* Copyright 2020 - Peter Johan Salomonsen
*/
setBPM(100);
addInstrument('pad');
addInstrument('drums');
addInstrument('sawtap');
addInstrument('distlead');
addInstrument('bass');
addInstrument('organ');
addInstrument('piano');
createTrack(6).steps(4, [
[controlchange(91, 80),controlchange(7, 85)]
,,,,]);
createTrack(0).steps(4, [
[controlchange(91, 100),controlchange(7, 115)] // pad
,,,,]);
createTrack(1).steps(4, [
[controlchange(91, 80),controlchange(7, 120)]
,,,,]);
createTrack(3).steps(3, [
[controlchange(91, 50),controlchange(7, 100)] // dist lead
,,,,]);
createTrack(4).steps(4, [
[controlchange(91, 30),controlchange(7, 127)]
,,,,]);
createTrack(5).steps(4, [
[controlchange(91, 50),controlchange(7, 127)]
,,,,]);
async function countup() {
return createTrack(1).steps(1, [fs5,fs5,fs5,fs5]);
}
async function mainTheme() {
createTrack(1).steps(4,[
c5,,,,
d5,,,,
,,c5,,
d5,,,,
].repeat(1));
createTrack(1).steps(4,[
fs5(1/8,60),,fs5(1/8,15),,
].repeat(7));
for (var n=0;n<2; n++) {
createTrack(4).steps(4, [
a2(1/3,120),,a2(1/16,60),a3(1/8,120),
,a3(1/8,120),a2(1/16,60),a3(1/3,120)
]);
await createTrack(6).steps(4, [
c4(1/4,100),g4(1/4,50),c5,e5(1/4,60),g5,e5(1/4,80),c6,g4(1/4,50)]);
}
for (var n=0;n<2; n++) {
createTrack(4).steps(4, [
c2(1/3,120),,c2(1/16,60),c3(1/8,120),
,c3(1/8,120),c2(1/16,60),c3(1/3,120)
]);
await createTrack(6).steps(4, [
c4(1/4,100),g4(1/4,50),c5,e5(1/4,60),g5,e5(1/4,80),c6,g4(1/4,50)]);
}
}
createTrack(4).play(
[[ 0.04, c3(0.17, 78) ],
[ 0.57, c3(0.13, 84) ],
[ 1.02, c3(0.24, 82) ],
[ 1.49, c3(0.19, 77) ],
[ 2.01, c3(0.18, 77) ],
[ 2.55, c3(0.18, 95) ],
[ 3.04, c3(0.16, 89) ],
[ 3.50, c3(0.20, 84) ],
[ 3.95, c3(0.16, 79) ]].concat([
[ 0.04, c3(0.17, 78) ],
[ 0.57, c3(0.13, 84) ],
[ 1.02, c3(0.24, 82) ],
[ 1.49, c3(0.19, 77) ],
[ 2.01, c3(0.18, 77) ],
[ 2.55, c3(0.18, 95) ],
[ 3.04, c3(0.16, 89) ],
[ 3.50, c3(0.20, 84) ],
[ 3.95, c3(0.16, 79) ]]
.map(n => [n[0] + 4, n[1]]))
.concat(
[[ 0.04, c3(0.17, 78) ],
[ 0.57, c3(0.13, 84) ],
[ 1.02, c3(0.24, 82) ],
[ 1.49, c3(0.19, 77) ],
[ 2.01, c3(0.18, 77) ],
[ 2.55, c3(0.18, 95) ],
[ 3.04, c3(0.16, 89) ],
[ 3.50, g3(0.20, 84) ],
[ 3.95, g3(0.16, 79) ],
[ 4.06, c4(0.42, 84) ],
[ 4.50, g3(0.54, 65) ],
[ 4.99, c4(0.30, 78) ],
[ 5.47, c4(0.20, 79) ],
[ 5.57, d4(0.31, 77) ],
[ 5.98, c4(0.48, 88) ],
[ 6.48, g3(0.53, 84) ],
[ 7.03, d3(0.49, 74) ],
[ 7.5, c3(0.49, 74) ]].map(n => [n[0] + 8, n[1]])
));
createTrack(1).steps(4,[
c5,,,,
d5,,,,
,,c5,,
d5,,,,
c5,,,,
d5,,,,
,,c5,,
d5,,,,
c5,,,,
d5,,,,
,,c5,,
d5,,,,
c5,,,,
d5,,,,
c5,d5(1/16,40),[b5,d5],,
d5,a5(1/16,60),a5,,
]);
createTrack(1).steps(4,[
fs5(1/8,60),,fs5(1/8,15),,
].repeat(15));
for (var n=0;n<8; n++) {
await createTrack(6).steps(4, [
c4(1/4,100),g4(1/4,50),c5,e5(1/4,60),g5,e5(1/4,80),c6,g4(1/4,50)]);
}
async function mainThemeOrgan() {
return createTrack(5).play([[ 0.06, g4(0.06, 32) ],
[ 0.07, e5(1.42, 57) ],
[ 1.54, g5(1.34, 84) ],
[ 3.04, gs5(0.06, 9) ],
[ 3.00, g5(0.16, 54) ],
[ 3.14, a5(0.33, 75) ],
[ 0.09, a3(3.58, 11) ],
[ 0.07, e4(3.65, 27) ],
[ 0.82, g4(3.00, 1) ],
[ 5.59, gs5(0.03, 87) ],
[ 3.50, g5(2.13, 69) ],
[ 5.65, a5(0.88, 94) ],
[ 6.54, c6(0.44, 92) ],
[ 7.03, d6(0.43, 90) ],
[ 4.10, e4(3.43, 42) ],
[ 4.11, c4(3.45, 35) ],
[ 7.46, c6(0.51, 74) ],
[ 8.00, ds6(0.05, 83) ],
[ 7.95, d6(0.13, 79) ],
[ 8.06, e6(0.86, 84) ],
[ 9.97, ds6(0.04, 63) ],
[ 9.04, g6(1.33, 102) ],
[ 10.00, e6(0.44, 88) ],
[ 10.49, d6(0.08, 59) ],
[ 10.66, e6(0.12, 57) ],
[ 10.80, d6(0.11, 59) ],
[ 10.94, c6(0.58, 79) ],
[ 8.04, a3(3.69, 43) ],
[ 7.93, e4(3.84, 11) ],
[ 11.52, d6(0.47, 82) ],
[ 10.53, g6(1.53, 2) ],
[ 12.08, c4(0.06, 43) ],
[ 12.00, c6(2.11, 75) ],
[ 14.49, gs5(0.07, 94) ],
[ 14.59, a5(0.42, 77) ],
[ 15.07, c6(0.38, 69) ],
[ 12.06, e4(3.65, 44) ],
[ 12.22, c4(3.51, 5) ],
[ 15.50, d6(0.25, 89) ],
[ 16.01, ds6(0.11, 91) ],
[ 15.99, d6(0.14, 63) ],
[ 16.10, e6(0.24, 75) ],
[ 16.53, e6(0.44, 87) ],
[ 17.06, d6(0.40, 70) ],
[ 17.50, c6(0.47, 60) ],
[ 17.99, d6(0.48, 90) ],
[ 18.51, c6(0.51, 72) ],
[ 16.07, a3(3.18, 39) ],
[ 15.96, e4(3.41, 15) ],
[ 19.00, a5(0.46, 70) ],
[ 19.49, g5(2.14, 79) ],
[ 21.56, gs5(0.10, 69) ],
[ 21.66, a5(0.89, 97) ],
[ 22.53, g5(0.39, 77) ],
[ 23.50, ds5(0.08, 84) ],
[ 23.56, d5(0.03, 44) ],
[ 19.97, e4(3.61, 48) ],
[ 20.00, c4(3.63, 34) ],
[ 22.97, e5(1.05, 78) ],
[ 24.01, d5(0.46, 83) ],
[ 24.51, c5(0.49, 72) ],
[ 25.00, a4(0.43, 75) ],
[ 25.98, a4(0.52, 78) ],
[ 26.50, c5(0.42, 98) ],
[ 26.98, d5(0.44, 84) ],
[ 24.06, a3(3.41, 58) ],
[ 24.02, e4(3.50, 55) ],
[ 28.03, c4(3.11, 43) ],
[ 28.03, e4(3.13, 49) ],
[ 4.00, g4(27.16, 14) ],
[ 27.42, c5(3.77, 75) ]]);
}
mainThemeOrgan();
await mainTheme();
await mainTheme();
await mainTheme();
// playFromHere();
await mainTheme();
async function mainTheme2() {
createTrack(1).steps(4,[
c5,,,,
d5,,,,
,,c5,,
d5,,,,
].repeat(1));
createTrack(1).steps(4,[
fs5(1/8,60),,fs5(1/8,15),,
].repeat(7));
for (var n=0;n<2; n++) {
createTrack(4).steps(4, [
d2(1/3,120),,d2(1/16,60),d3(1/8,120),
,d3(1/8,120),d2(1/16,60),d3(1/3,120)
]);
await createTrack(6).steps(4, [
d4(1/4,100),a4(1/4,50),d5,f5(1/4,60),a5,f5(1/4,80),d6,a4(1/4,50)]);
}
for (var n=0;n<2; n++) {
createTrack(4).steps(4, [
f2(1/3,120),,f2(1/16,60),f3(1/8,120),
,f3(1/8,120),f2(1/16,60),f3(1/3,120)
]);
await createTrack(6).steps(4, [
f4(1/4,100),c4(1/4,50),f5,a5(1/4,60),c5,a5(1/4,80),f6,a4(1/4,50)]);
}
}
for(var n=0;n<2;n++) {
createTrack(5).play([[ 0.04, g5(0.05, 54) ],
[ 0.07, gs5(0.05, 72) ],
[ 0.13, a5(0.36, 84) ],
[ 0.55, c6(0.30, 78) ],
[ 1.07, a5(0.05, 74) ],
[ 1.13, c6(0.46, 69) ],
[ 1.53, a5(0.43, 89) ],
[ 1.99, c6(0.52, 99) ],
[ 2.48, a5(0.57, 78) ],
[ 3.06, c6(0.45, 100) ],
[ 0.11, f4(3.55, 60) ],
[ 0.12, d4(3.60, 49) ],
[ 0.11, a4(3.64, 62) ],
[ 3.52, d6(0.28, 78) ],
[ 3.98, ds6(0.12, 32) ],
[ 4.00, d6(0.12, 67) ],
[ 4.07, e6(1.50, 92) ],
[ 5.62, d6(0.12, 63) ],
[ 5.73, e6(0.16, 84) ],
[ 5.87, d6(0.56, 93) ],
[ 6.44, c6(0.50, 83) ],
[ 6.95, a5(0.51, 68) ],
[ 4.06, f4(3.45, 55) ],
[ 4.06, c5(3.49, 47) ],
[ 4.05, a4(3.50, 35) ],
[ 7.48, g5(0.57, 68) ],
[ 7.95, gs5(0.11, 63) ],
[ 8.05, a5(0.44, 89) ],
[ 8.53, c6(1.02, 89) ],
[ 9.49, a5(0.92, 82) ],
[ 10.41, g5(1.06, 72) ],
[ 8.06, a3(3.53, 57) ],
[ 8.03, e4(3.60, 60) ],
[ 12.09, c4(3.61, 44) ],
[ 8.05, g4(7.68, 58) ],
[ 12.08, e4(3.68, 53) ],
[ 11.50, e5(4.28, 84) ]]);
await mainTheme2();
await mainTheme();
}
createTrack(0).play([[ 0.04, a5(3.95, 54) ],
[ 0.08, c6(7.70, 60) ],
[ 3.98, g5(3.98, 65) ],
[ 8.07, c6(3.48, 49) ],
[ 8.08, e6(4.05, 55) ],
[ 12.05, c6(3.89, 52) ],
[ 12.08, g5(3.89, 44) ],
[ 15.98, e6(2.01, 54) ],
[ 17.97, d6(1.83, 60) ],
[ 19.80, c6(2.18, 63) ],
[ 21.97, d6(2.18, 68) ],
[ 15.99, g6(8.76, 60) ],
[ 24.20, c6(3.60, 48) ],
[ 24.09, e6(4.02, 58) ],
[ 28.02, g5(3.57, 43) ],
[ 28.01, c6(3.65, 38) ]]);
for (var n=0;n<4;n++) {
await mainTheme();
}
//await countup();
createTrack(5).play([[ 0.06, d3(0.05, 54) ],
[ 0.04, a4(3.66, 54) ],
[ 0.03, c5(3.92, 52) ],
[ 0.25, d3(3.80, 2) ],
[ 4.07, c5(3.63, 47) ],
[ 0.05, f5(7.71, 54) ],
[ 4.07, f3(3.93, 63) ],
[ 4.04, a5(4.00, 47) ],
[ 8.05, e5(3.82, 44) ],
[ 8.03, a3(3.98, 60) ],
[ 12.06, e6(3.12, 32) ],
[ 8.04, c6(7.60, 54) ],
[ 8.05, g5(7.64, 67) ],
[ 12.03, c4(3.96, 63) ],
[ 16.09, d3(0.04, 58) ],
[ 16.06, a4(3.32, 65) ],
[ 16.07, c5(3.77, 57) ],
[ 16.24, d3(3.81, 3) ],
[ 20.03, a5(2.98, 65) ],
[ 16.08, f5(7.65, 58) ],
[ 20.04, c5(3.70, 72) ],
[ 22.98, b5(0.94, 59) ],
[ 20.06, f3(4.01, 72) ],
[ 24.09, c6(3.39, 78) ],
[ 24.07, a3(3.44, 57) ],
[ 27.52, d6(4.32, 62) ],
[ 24.05, e5(7.83, 55) ],
[ 24.04, g5(7.84, 67) ],
[ 27.56, c4(4.32, 58) ]]);
createTrack(0).play([[ 0.13, d6(1.74, 84) ],
[ 0.16, a5(3.94, 77) ],
[ 3.87, g6(2.18, 82) ],
[ 5.97, f6(1.89, 77) ],
[ 7.86, e6(2.07, 67) ],
[ 1.84, c6(10.00, 70) ],
[ 11.83, d6(2.16, 72) ],
[ 9.92, g5(6.03, 69) ],
[ 14.00, e6(1.97, 92) ],
[ 15.95, d6(1.96, 78) ],
[ 15.94, a5(3.88, 79) ],
[ 19.86, g6(1.93, 79) ],
[ 21.76, a6(2.08, 83) ],
[ 17.91, c6(5.96, 74) ],
[ 23.85, c7(2.12, 78) ],
[ 25.92, b6(2.09, 79) ],
[ 27.99, d6(1.93, 44) ],
[ 23.85, g6(7.93, 83) ],
[ 29.88, e6(1.93, 62) ]]);
for(var n=0;n<2;n++) {
await mainTheme2();
await mainTheme();
}
// ------------------ PART 2
createTrack(0).play([[ 1.95, d7(1.93, 50) ],
[ 3.89, c7(3.98, 59) ],
[ 0.04, c6(7.83, 39) ],
[ 1.05, g6(6.85, 63) ]]);
createTrack(5).play([[ 0.04, g4(0.54, 64) ],
[ 0.50, a4(0.51, 63) ],
[ 1.05, c5(0.43, 72) ],
[ 1.52, d5(0.26, 70) ],
[ 1.96, ds5(0.21, 72) ],
[ 2.10, e5(0.40, 53) ],
[ 2.54, g5(0.36, 82) ],
[ 2.96, a5(0.50, 83) ],
[ 3.48, c6(0.45, 75) ],
[ 3.98, d6(0.28, 74) ],
[ 4.48, ds6(0.12, 72) ],
[ 4.54, e6(0.98, 74) ],
[ 5.53, d6(0.20, 68) ],
[ 5.68, e6(0.19, 82) ],
[ 5.81, d6(0.77, 28) ],
[ 6.56, c6(0.46, 83) ],
[ 7.03, a5(0.46, 82) ]]);
createTrack(4).play([[ 0.04, c3(0.17, 78) ],
[ 0.57, c3(0.13, 84) ],
[ 1.02, c3(0.24, 82) ],
[ 1.49, c3(0.19, 77) ],
[ 2.01, c3(0.18, 77) ],
[ 2.55, c3(0.18, 95) ],
[ 3.04, c3(0.16, 89) ],
[ 3.50, g3(0.20, 84) ],
[ 3.95, g3(0.16, 79) ],
[ 4.06, c4(0.42, 84) ],
[ 4.50, g3(0.54, 65) ],
[ 4.99, c4(0.30, 78) ],
[ 5.47, c4(0.20, 79) ],
[ 5.57, d4(0.31, 77) ],
[ 5.98, c4(0.48, 88) ],
[ 6.48, g3(0.53, 84) ],
[ 7.03, d3(0.49, 74) ],
[ 7.5, c3(0.49, 74) ]]);
createTrack(1).steps(4,[
c5,,,,
d5,,,,
,,c5,,
d5,,,,
c5,,,,
d5,,,,
c5,d5(1/16,40),[b5,d5],,
d5,a5(1/16,60),a5,,
]);
createTrack(1).steps(4,[
fs5(1/8,60),,fs5(1/8,15),,
].repeat(7));
for (var n=0;n<4; n++) {
await createTrack(6).steps(4, [
c4(1/4,100),g4(1/4,50),c5,e5(1/4,60),g5,e5(1/4,80),c6,g4(1/4,50)]);
}
async function asianpiano() {
createTrack(6).play([[ 0.50, c6(0.23, 75) ],
[ 0.48, g5(0.26, 87) ],
[ 0.95, g5(0.36, 74) ],
[ 0.97, c6(0.34, 69) ],
[ 1.47, e5(0.23, 69) ],
[ 1.46, a5(0.25, 72) ],
[ 1.93, e5(0.29, 64) ],
[ 1.92, a5(0.35, 68) ],
[ 2.47, d5(0.23, 68) ],
[ 2.48, g5(0.23, 75) ],
[ 2.95, d5(0.42, 60) ],
[ 2.94, g5(0.50, 64) ],
[ 3.93, e5(0.28, 70) ],
[ 3.91, a5(0.33, 74) ],
[ 4.47, c6(0.36, 87) ],
[ 4.47, g5(0.40, 90) ],
[ 5.45, e5(0.45, 69) ],
[ 5.43, a5(0.46, 79) ],
[ 6.51, g5(0.55, 88) ],
[ 6.52, d5(0.57, 75) ]].quantize(4, 0.2));
}
async function intermission() {
createTrack(4).play([[ 0.08, c3(0.20, 75) ],
[ 0.53, c3(0.16, 57) ],
[ 1.04, c3(0.20, 53) ],
[ 1.48, c3(0.17, 60) ],
[ 1.98, c3(0.24, 63) ],
[ 2.48, c3(0.45, 62) ],
[ 2.99, g2(0.45, 74) ],
[ 3.53, a2(0.39, 60) ],
[ 3.99, c3(0.19, 68) ],
[ 4.46, c3(0.17, 54) ],
[ 4.99, c3(0.18, 63) ],
[ 5.50, c3(0.18, 72) ],
[ 5.98, c3(0.18, 84) ],
[ 6.50, c3(0.16, 82) ],
[ 6.99, c3(0.54, 68) ],
[ 7.52, b2(0.37, 70) ],
[ 7.97, a2(0.26, 43) ],
[ 8.52, a2(0.15, 79) ],
[ 8.98, a2(0.41, 82) ],
[ 9.47, e3(0.46, 74) ],
[ 9.99, a3(0.45, 74) ],
[ 10.50, e3(0.44, 72) ],
[ 10.99, a3(0.50, 78) ],
[ 11.48, e3(0.42, 75) ],
[ 11.95, a2(0.14, 78) ],
[ 12.46, a2(0.17, 75) ],
[ 12.96, a2(0.47, 75) ],
[ 13.51, e3(0.42, 69) ],
[ 13.97, a3(0.47, 75) ],
[ 14.48, e3(0.06, 60) ],
[ 14.59, e3(0.31, 5) ],
[ 14.97, a3(0.49, 68) ],
[ 15.45, e3(0.15, 63) ],
[ 15.96, f2(0.28, 62) ],
[ 16.46, f2(0.23, 58) ],
[ 16.99, f2(0.24, 75) ],
[ 17.41, f2(0.26, 67) ],
[ 18.01, f2(0.27, 68) ],
[ 18.52, f2(0.21, 60) ],
[ 19.02, f2(0.21, 59) ],
[ 19.46, f2(0.45, 60) ],
[ 20.00, g2(0.25, 74) ],
[ 20.49, g2(0.21, 58) ],
[ 21.01, g2(0.19, 60) ],
[ 21.48, g2(0.17, 68) ],
[ 21.99, g2(0.19, 72) ],
[ 22.48, g2(0.18, 65) ],
[ 23.00, g2(0.16, 78) ],
[ 23.51, g2(0.44, 75) ],
[ 24.03, c3(0.21, 78) ],
[ 24.49, c3(0.26, 42) ],
[ 25.00, c3(0.45, 64) ],
[ 25.48, g2(0.45, 79) ],
[ 26.00, c3(0.47, 77) ],
[ 26.51, g2(0.39, 72) ],
[ 26.99, a2(0.36, 68) ],
[ 27.45, g2(0.49, 64) ],
[ 28.00, c3(0.19, 72) ],
[ 28.51, c3(0.15, 64) ],
[ 28.98, c3(0.15, 70) ],
[ 29.48, c3(0.17, 58) ],
[ 29.95, c3(0.20, 77) ],
[ 30.48, c3(0.48, 75) ],
[ 31.01, g2(0.42, 82) ],
[ 31.50, a2(0.45, 70) ]].quantize(4, 0.5));
createTrack(5).play([[ 0.04, g4(7.31, 27) ],
[ 0.2, c4(7.45, 24) ],
[ 0.1, e5(7.88, 30) ],
[ 10.47, gs5(0.04, 37) ],
[ 8.04, g5(2.48, 47) ],
[ 10.53, a5(0.87, 72) ],
[ 14.48, g5(0.03, 59) ],
[ 11.46, c6(3.06, 67) ],
[ 14.50, gs5(0.04, 61) ],
[ 0.16, c5(14.71, 42) ],
[ 14.55, a5(0.39, 87) ],
[ 14.90, g5(0.48, 65) ],
[ 8.0, a4(7.34, 18) ],
[ 8.06, a3(7.37, 15) ],
[ 15.90, ds5(0.04, 68) ],
[ 15.44, c5(3.06, 60) ],
[ 16.02, e5(2.51, 54) ],
[ 18.51, d5(0.87, 55) ],
[ 18.53, f5(0.92, 60) ],
[ 16.01, f3(3.47, 27) ],
[ 15.96, f4(3.53, 28) ],
[ 19.50, d5(0.15, 43) ],
[ 19.52, ds5(0.13, 71) ],
[ 19.63, e5(1.39, 57) ],
[ 20.98, d5(0.46, 58) ],
[ 21.48, c5(1.01, 60) ],
[ 20.02, g3(3.52, 32) ],
[ 20.06, g4(3.62, 38) ],
[ 22.47, d5(1.58, 59) ],
[ 19.55, g5(4.52, 60) ],
[ 24.14, c4(0.10, 11) ],
[ 25.33, c4(6.52, 1) ],
[ 23.83, g4(8.06, 2) ],
[ 24.05, e4(7.86, 37) ],
[ 24.01, c5(7.90, 48) ],
[ 24.07, e5(7.87, 60) ]]);
for(var n=0;n<4;n++) {
createTrack(1).steps(4,[
c5,,c5(1/8,60),,
d5,,d5(1/8,60),,
,,c5,,
d5,,,,
].repeat(1));
if ( n === 3) {
createTrack(1).steps(4, [
,,,,
,,,,
,,,,
,,,,
,,b5,,
b5,,,a5,
,,,g5(1/8,60),
g5,,f5
]);
}
if ( n%2 === 0) {
asianpiano();
}
await createTrack(1).steps(4,[
fs5(1/8,60),,fs5(1/8,15),,
fs5(1/8,60),,fs5(1/8,15),fs5(1/8,30),
].repeat(3));
}
}
createTrack(3).play([[ 10.54, g4(0.29, 88) ],
[ 10.76, a4(0.28, 75) ],
[ 11.06, c5(0.43, 84) ],
[ 11.57, d5(0.19, 75) ],
[ 11.97, c5(0.05, 30) ],
[ 12.07, ds5(0.03, 47) ],
[ 12.02, d5(0.16, 48) ],
[ 12.12, e5(0.36, 68) ],
[ 12.60, g5(0.53, 64) ],
[ 14.53, gs5(0.03, 62) ],
[ 14.58, a5(0.32, 78) ],
[ 15.03, c6(0.35, 87) ],
[ 15.45, d6(0.20, 87) ],
[ 15.96, d6(0.04, 70) ],
[ 15.95, ds6(0.10, 89) ],
[ 16.03, e6(0.90, 82) ],
[ 16.97, d6(0.67, 65) ],
[ 17.71, c6(0.18, 54) ],
[ 17.95, a5(0.30, 67) ],
[ 18.40, g5(0.27, 42) ],
[ 20.52, gs5(0.06, 83) ],
[ 20.55, a5(0.38, 93) ],
[ 21.03, g5(0.18, 84) ],
[ 21.45, ds5(0.06, 89) ],
[ 21.28, e5(0.39, 60) ],
[ 21.69, d5(0.20, 74) ],
[ 21.92, c5(0.18, 77) ],
[ 22.16, a4(0.21, 84) ],
[ 22.47, g4(0.17, 54) ],
[ 22.72, a4(0.45, 57) ],
[ 23.27, c5(0.47, 78) ],
[ 29.04, g4(0.24, 83) ],
[ 29.29, a4(0.22, 64) ],
[ 29.56, c5(0.18, 74) ],
[ 29.82, d5(0.11, 84) ],
[ 30.08, ds5(0.11, 84) ],
[ 30.12, e5(0.39, 72) ],
[ 30.57, g5(0.28, 90) ],
[ 31.02, g5(0.13, 82) ],
[ 31.11, a5(0.31, 89) ],
[ 31.52, c6(0.28, 88) ],
[ 32.01, c6(0.14, 64) ],
[ 32.03, d6(0.30, 89) ],
[ 32.53, ds6(0.08, 97) ],
[ 32.60, e6(0.32, 84) ],
[ 33.07, d6(0.23, 98) ],
[ 33.33, c6(0.15, 82) ],
[ 33.52, a5(0.22, 67) ],
[ 34.44, gs5(0.04, 51) ],
[ 33.82, g5(0.69, 74) ],
[ 34.51, a5(0.33, 88) ],
[ 36.49, ds6(0.07, 92) ],
[ 36.53, e6(0.28, 89) ],
[ 37.03, d6(0.23, 94) ],
[ 37.32, c6(0.15, 70) ],
[ 37.51, a5(0.20, 65) ],
[ 37.79, g5(0.62, 79) ],
[ 38.37, gs5(0.05, 53) ],
[ 38.45, a5(0.45, 89) ],
[ 38.98, c6(0.39, 98) ],
[ 39.44, d6(0.20, 78) ],
[ 39.93, ds6(0.07, 93) ],
[ 40.00, e6(0.42, 89) ],
[ 40.47, g6(0.38, 100) ],
[ 44.56, ds6(0.10, 93) ],
[ 44.61, e6(0.22, 84) ],
[ 45.05, d6(0.17, 84) ],
[ 45.26, c6(0.15, 60) ],
[ 45.49, a5(0.18, 57) ],
[ 45.74, g5(0.17, 68) ],
[ 46.02, c6(0.27, 94) ],
[ 46.26, a5(0.21, 88) ],
[ 46.51, g5(0.17, 70) ],
[ 46.76, e5(0.15, 62) ],
[ 47.00, ds5(0.06, 78) ],
[ 47.03, d5(0.04, 47) ],
[ 47.07, e5(0.15, 75) ],
[ 47.22, d5(0.26, 67) ],
[ 47.53, c5(0.17, 74) ],
[ 47.74, a4(0.21, 89) ],
[ 48.02, g4(0.45, 79) ],
[ 48.46, a4(0.19, 82) ],
[ 49.00, c5(0.27, 99) ],
[ 49.50, d5(0.15, 72) ],
[ 49.97, ds5(0.10, 86) ],
[ 50.05, e5(0.40, 75) ],
[ 50.52, g5(0.18, 82) ],
[ 50.81, a5(0.62, 98) ],
[ 51.47, g5(0.27, 72) ],
[ 52.05, c6(0.33, 97) ],
[ 52.56, c6(0.05, 30) ],
[ 52.54, d6(0.24, 58) ],
[ 53.50, ds6(0.05, 72) ],
[ 53.50, c6(0.67, 63) ],
[ 53.54, e6(0.71, 78) ],
[ 54.50, a5(0.74, 84) ],
[ 54.52, d6(0.73, 83) ],
[ 55.57, c6(0.86, 82) ],
[ 55.56, g5(0.96, 78) ],
[ 57.05, gs5(0.08, 94) ],
[ 57.13, a5(0.15, 84) ],
[ 57.32, g5(0.17, 83) ],
[ 57.55, e5(0.17, 55) ],
[ 57.76, ds5(0.11, 78) ],
[ 57.84, e5(0.16, 43) ],
[ 58.02, d5(0.25, 75) ],
[ 58.31, c5(0.16, 74) ],
[ 58.52, a4(0.18, 78) ],
[ 58.78, g4(0.17, 79) ],
[ 58.98, a4(0.49, 58) ],
[ 59.50, c5(0.42, 84) ]]);
await intermission();
await intermission();
createTrack(3).play([[ 8.08, c4(0.43, 77) ],
[ 8.52, g4(0.16, 59) ],
[ 9.04, c5(0.36, 84) ],
[ 9.52, g4(0.05, 50) ],
[ 9.75, c5(0.18, 75) ],
[ 10.24, c5(0.17, 54) ],
[ 10.42, g4(0.27, 54) ],
[ 10.73, c5(0.24, 77) ],
[ 10.99, d5(0.45, 63) ],
[ 11.46, c5(0.22, 75) ],
[ 11.75, g4(0.16, 50) ],
[ 11.96, c4(0.46, 77) ],
[ 12.45, g4(0.50, 53) ],
[ 12.98, c5(0.22, 79) ],
[ 13.47, g4(0.18, 49) ],
[ 13.73, c5(0.18, 84) ],
[ 14.24, c5(0.06, 57) ],
[ 14.44, g4(0.07, 48) ],
[ 14.72, c5(0.22, 72) ],
[ 15.02, d5(0.40, 63) ],
[ 15.46, c5(0.25, 74) ],
[ 15.75, g4(0.14, 69) ],
[ 24.02, c4(0.45, 68) ],
[ 24.53, g4(0.44, 49) ],
[ 24.99, c5(0.34, 77) ],
[ 25.51, g4(0.07, 27) ],
[ 25.76, c5(0.16, 74) ],
[ 26.23, c5(0.16, 55) ],
[ 26.45, g4(0.06, 47) ],
[ 26.73, c5(0.05, 67) ],
[ 26.97, d5(0.49, 62) ],
[ 27.42, c5(0.28, 72) ],
[ 27.74, g4(0.14, 72) ],
[ 27.91, c4(0.45, 74) ],
[ 28.44, g4(0.49, 39) ],
[ 28.98, c5(0.42, 67) ],
[ 29.50, g4(0.06, 43) ],
[ 29.75, c5(0.18, 77) ],
[ 30.25, c5(0.17, 39) ],
[ 30.50, g4(0.22, 57) ],
[ 30.75, c5(0.30, 59) ],
[ 31.0, d5(0.30, 65) ],
[ 31.25, f5(0.26, 89) ],
[ 31.45, e5(0.20, 68) ],
[ 31.75, c5(0.14, 64) ]]);
await intermission();
createTrack(5).play([[ 0.10, e5(1.39, 70) ],
[ 0.11, e4(1.38, 57) ],
[ 0.11, g4(1.40, 49) ],
[ 0.13, a3(1.41, 29) ],
[ 1.52, g5(1.27, 94) ],
[ 3.12, gs5(0.05, 78) ],
[ 3.07, g5(0.12, 72) ],
[ 2.09, f3(1.35, 27) ],
[ 2.02, c4(1.45, 60) ],
[ 3.20, a5(0.29, 84) ],
[ 2.03, f4(1.53, 57) ],
[ 5.50, gs5(0.03, 59) ],
[ 3.54, g5(1.99, 70) ],
[ 5.55, a5(1.01, 84) ],
[ 6.59, c6(0.43, 87) ],
[ 7.08, d6(0.42, 87) ],
[ 4.06, e4(3.56, 50) ],
[ 4.08, c4(3.55, 38) ],
[ 4.06, g4(3.71, 49) ],
[ 7.57, c6(0.45, 65) ],
[ 8.09, ds6(0.03, 78) ],
[ 8.02, d6(0.14, 65) ],
[ 8.14, e6(0.91, 84) ],
[ 8.04, e4(1.40, 54) ],
[ 8.09, a3(1.41, 47) ],
[ 8.01, g4(1.50, 13) ],
[ 9.48, ds6(0.10, 72) ],
[ 9.58, e6(0.87, 82) ],
[ 10.48, d6(0.14, 59) ],
[ 10.63, e6(0.14, 58) ],
[ 10.77, d6(0.13, 70) ],
[ 10.03, f3(1.46, 32) ],
[ 10.93, c6(0.56, 64) ],
[ 9.98, c4(1.52, 58) ],
[ 9.99, f4(1.57, 47) ],
[ 11.48, d6(0.54, 79) ],
[ 9.08, g6(3.01, 92) ],
[ 12.04, c6(2.50, 72) ],
[ 14.52, gs5(0.02, 81) ],
[ 14.50, g5(0.05, 58) ],
[ 14.58, a5(0.39, 87) ],
[ 15.03, c6(0.42, 82) ],
[ 12.06, e4(3.44, 19) ],
[ 12.06, c4(3.49, 34) ],
[ 15.49, d6(0.23, 68) ],
[ 12.06, g4(3.69, 49) ],
[ 15.94, ds6(0.11, 15) ],
[ 15.93, d6(0.15, 60) ],
[ 16.04, e6(0.24, 78) ],
[ 16.46, e6(0.42, 72) ],
[ 16.90, d6(0.41, 65) ],
[ 15.90, e4(1.52, 37) ],
[ 15.93, g4(1.56, 28) ],
[ 15.97, a3(1.51, 47) ],
[ 17.39, c6(0.51, 47) ],
[ 17.89, d6(0.52, 70) ],
[ 18.47, c6(0.41, 59) ],
[ 18.92, a5(0.45, 58) ],
[ 18.04, f3(1.44, 14) ],
[ 17.92, c4(1.61, 49) ],
[ 17.92, f4(1.67, 30) ],
[ 19.46, g5(2.11, 53) ],
[ 21.52, gs5(0.08, 66) ],
[ 21.60, a5(0.96, 78) ],
[ 22.51, g5(0.45, 68) ],
[ 20.04, e4(3.41, 38) ],
[ 20.05, c4(3.43, 34) ],
[ 23.03, e5(0.46, 65) ],
[ 20.04, g4(3.50, 29) ],
[ 23.51, d5(0.04, 54) ],
[ 23.50, ds5(0.10, 78) ],
[ 23.63, e5(0.39, 77) ],
[ 24.03, d5(0.17, 70) ],
[ 24.19, e5(0.18, 50) ],
[ 24.36, d5(0.15, 72) ],
[ 24.54, c5(0.48, 74) ],
[ 24.01, g4(1.20, 59) ],
[ 25.02, a4(0.45, 77) ],
[ 23.98, e4(1.63, 58) ],
[ 24.05, a3(1.60, 42) ],
[ 25.52, g4(0.46, 74) ],
[ 25.96, gs4(0.04, 62) ],
[ 26.05, a4(0.54, 69) ],
[ 26.66, c5(0.37, 75) ],
[ 27.20, c5(0.14, 69) ],
[ 27.33, d5(0.45, 67) ],
[ 26.07, f3(1.87, 15) ],
[ 26.05, c4(1.91, 48) ],
[ 26.09, f4(1.93, 22) ],
[ 28.52, c4(5.11, 29) ],
[ 28.51, g4(5.16, 42) ],
[ 28.51, e4(5.19, 28) ],
[ 27.85, c5(5.88, 57) ]]);
createTrack(4).play([[ 1.61, f3(2.52, 83) ],
[ 4.10, c3(3.97, 82) ],
[ 8.05, a2(1.99, 92) ],
[ 10.09, f3(1.94, 84) ],
[ 12.09, c3(3.94, 83) ],
[ 16.00, a3(1.95, 57) ],
[ 17.94, f3(2.07, 78) ],
[ 20.02, c3(3.44, 78) ],
[ 23.45, b2(0.42, 70) ],
[ 23.93, a2(2.04, 79) ],
[ 25.99, f3(2.59, 83) ],
[ 28.59, c3(5.59, 65) ]]);
createTrack(0).play([[ 1.71, f4(2.24, 42) ],
[ 1.68, f5(2.29, 60) ],
[ 1.64, c5(2.38, 30) ],
[ 4.06, c4(3.74, 43) ],
[ 4.02, g4(3.82, 54) ],
[ 4.02, e5(4.12, 60) ],
[ 8.24, c6(1.78, 70) ],
[ 4.04, g5(6.03, 50) ],
[ 8.18, a4(3.44, 63) ],
[ 8.23, c5(3.39, 49) ],
[ 10.12, f4(1.53, 28) ],
[ 10.07, f5(2.02, 53) ],
[ 10.06, a5(2.05, 60) ],
[ 12.04, e4(3.53, 38) ],
[ 12.09, c4(3.48, 28) ],
[ 12.07, g4(3.52, 22) ],
[ 12.08, g5(3.93, 64) ],
[ 16.02, e4(1.26, 48) ],
[ 16.01, a4(1.37, 54) ],
[ 12.06, e5(5.86, 54) ],
[ 16.05, c5(3.24, 64) ],
[ 17.87, a4(1.54, 47) ],
[ 17.96, f4(1.46, 30) ],
[ 16.04, a5(3.91, 64) ],
[ 17.90, f5(2.10, 67) ],
[ 19.95, e4(3.42, 42) ],
[ 20.00, c4(3.38, 13) ],
[ 19.97, g4(3.42, 15) ],
[ 19.94, g5(4.13, 63) ],
[ 19.91, e5(4.18, 37) ],
[ 24.07, e4(1.46, 34) ],
[ 24.05, a4(1.52, 54) ],
[ 24.09, c5(1.54, 28) ],
[ 24.04, a5(2.03, 82) ],
[ 26.03, a4(1.95, 39) ],
[ 26.03, f4(2.01, 30) ],
[ 26.01, c5(2.16, 30) ],
[ 28.64, c4(5.22, 17) ],
[ 28.57, c5(5.30, 34) ],
[ 28.58, g5(5.34, 60) ],
[ 28.59, g4(5.37, 42) ],
[ 26.05, c6(7.92, 84) ]]);
createTrack(3).play([[ 0.03, e5(1.47, 49) ],
[ 1.58, g5(1.13, 58) ],
[ 2.94, g5(0.15, 39) ],
[ 3.08, a5(0.39, 60) ],
[ 3.57, g5(1.88, 47) ],
[ 5.50, a5(0.96, 49) ],
[ 6.54, c6(0.47, 57) ],
[ 7.07, d6(0.39, 67) ],
[ 7.50, c6(0.17, 42) ],
[ 8.03, ds6(0.03, 54) ],
[ 7.97, d6(0.14, 49) ],
[ 8.09, e6(0.76, 67) ],
[ 8.97, g6(0.47, 60) ],
[ 9.47, e6(0.91, 50) ],
[ 10.43, d6(0.14, 39) ],
[ 10.59, e6(0.13, 57) ],
[ 10.76, d6(0.05, 57) ],
[ 10.89, c6(0.54, 37) ],
[ 11.44, d6(0.48, 63) ],
[ 12.00, c6(2.19, 50) ],
[ 14.57, a5(0.41, 64) ],
[ 15.02, c6(0.38, 49) ],
[ 15.47, d6(0.17, 72) ],
[ 15.91, ds6(0.05, 28) ],
[ 16.01, e6(0.86, 65) ],
[ 16.94, d6(0.43, 58) ],
[ 17.44, c6(0.42, 38) ],
[ 17.90, d6(0.48, 55) ],
[ 18.45, c6(0.39, 54) ],
[ 18.93, a5(0.48, 38) ],
[ 19.50, g5(2.02, 44) ],
[ 21.51, gs5(0.04, 22) ],
[ 21.57, a5(0.90, 77) ],
[ 22.49, g5(0.45, 60) ],
[ 23.01, e5(0.27, 60) ],
[ 23.50, d5(0.04, 39) ],
[ 23.47, ds5(0.12, 52) ],
[ 23.60, e5(0.38, 75) ],
[ 23.99, d5(0.45, 49) ],
[ 24.50, c5(0.48, 49) ],
[ 25.01, a4(0.47, 67) ],
[ 25.56, g4(0.41, 48) ],
[ 26.00, a4(0.57, 47) ],
[ 26.65, c5(0.42, 57) ],
[ 27.18, d5(0.75, 53) ],
[ 28.00, c5(5.78, 29) ]]);
createTrack(1).steps(4, [[c5,f5(1,120)],,,f5(1,60),,,f5(1,30),,,f5(1,10)]);
startRecording();
await createTrack(1).steps(1, [fs5(1,1),fs5(1,1),fs5(1,1),fs5(1,1)].repeat(10));
stopRecording();
loopHere();
import { cos, outputline, FFT, EQBand, TriBandEQ, Pan, SineOscillator, IFFTOscillator, BiQuadFilter, FilterType, Q_BUTTERWORTH, Noise, DelayLine, BandPass,SawOscillator,softclip, midichannels, MidiChannel, MidiVoice, StereoSignal, Freeverb, SineOscillator, Envelope, notefreq } from '../mixes/globalimports';
import { SAMPLERATE } from '../environment';
const delayframes = (SAMPLERATE * (6/8) * 60 / 100) as usize;
let delayLeft: DelayLine = new DelayLine(delayframes);
let delayRight: DelayLine = new DelayLine(delayframes);
const echoline = new StereoSignal();
const eqleft = new TriBandEQ(20, 600, 6000, 19000);
const eqright = new TriBandEQ(20, 600, 6000, 19000);
export class LowPassFilter extends BiQuadFilter {
constructor(freq: f32) {
super();
this.update_coeffecients(FilterType.LowPass, SAMPLERATE,
freq, Q_BUTTERWORTH);
}
public setFrequency(freq: f32): void {
this.update_coeffecients(FilterType.LowPass, SAMPLERATE,
freq, Q_BUTTERWORTH);
}
}
export class HighPassFilter extends BiQuadFilter {
constructor(freq: f32) {
super();
this.update_coeffecients(FilterType.HighPass, SAMPLERATE,
freq, Q_BUTTERWORTH);
}
public setFrequency(freq: f32): void {
this.update_coeffecients(FilterType.HighPass, SAMPLERATE,
freq, Q_BUTTERWORTH);
}
}
export class TriangleOscillator {
position: i32 = 0;
frequency: f32 = 0;
next(): f32 {
if(this.frequency > 0) {
const pos:i32 = this.position;
let ret: f32;
if (pos < 0x8000) {
ret = (pos as f32 / 0x8000 as f32);
} else {
ret = (- (pos - 0x8000) as f32 / 0x8000 as f32) + 1.0;
}
this.position = (((this.position as f32) + (this.frequency/SAMPLERATE)
* 0x10000 as f32) as i32) & 0xffff;
return ret*2 - 1 as f32;
} else {
return 0;
}
}
}
export class SquareOscillator {
position: i32 = 0;
frequency: f32 = 0;
next(): f32 {
if(this.frequency > 0) {
const pos:i32 = this.position;
this.position = (((pos as f32) + (this.frequency/SAMPLERATE)
* 0x10000 as f32) as i32) & 0xffff;
return pos < 0x8000 ? 1 : -1 as f32;
} else {
return 0;
}
}
}
export class Hihat extends MidiVoice {
private velocity: f32;
readonly envelope: Envelope = new Envelope(0.0, 0.07, 0, 0.1);
readonly noise: Noise = new Noise();
readonly filter: BiQuadFilter = new BiQuadFilter();
readonly signal: StereoSignal = new StereoSignal();
constructor(channel: MidiChannel) {
super(channel);
this.minnote = 66;
this.maxnote = 66;
}
noteon(note: u8, velocity: u8):void {
if(note > 1) {
this.velocity = velocity as f32 / 32;
this.envelope.attack();
}
}
noteoff(): void {
this.envelope.release();
}
isDone(): boolean {
return this.envelope.isDone();
}
nextframe(): void {
let env: f32 = this.envelope.next();
let osc: f32 = this.noise.next();
let signal = this.velocity * 1.5 * env * osc;
this.filter.update_coeffecients(FilterType.HighPass, SAMPLERATE,
10000 + 2000 * env, Q_BUTTERWORTH);
signal = this.filter.process(signal);
this.channel.signal.add(signal, signal);
}
}
export class Kick2 extends MidiVoice {
private velocity: f32;
readonly noise: Noise = new Noise();
readonly env2: Envelope = new Envelope(0.001, 0.01, 0.0, 0.01);
readonly bp2: BandPass = new BandPass(4000, 5000);
readonly env3: Envelope = new Envelope(0.001, 0.3, 0.0, 0.1);
readonly bp3: BandPass = new BandPass(10, 100);
constructor(channel: MidiChannel) {
super(channel);
this.minnote = 60;
this.maxnote = 60;
}
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.velocity = (velocity as f32) / 40;
this.env2.attack();
this.env3.attack();
}
noteoff(): void {
this.env2.release();
this.env3.release();
}
isDone(): boolean {
return this.env3.isDone();
}
nextframe(): void {
let env2: f32 = this.env2.next();
let env3: f32 = this.env3.next();
const osc: f32 = this.noise.next();
this.bp3.update_frequencies(10, 11 + env3 * 100);
const sig = this.velocity * (
this.bp2.process(osc) * env2 +
this.bp3.process(osc) * env3 * 16);
this.channel.signal.add(sig, sig);
}
}
class Pad extends MidiVoice {
osc: SawOscillator = new SawOscillator();
osc2: SawOscillator = new SawOscillator();
lfo: TriangleOscillator = new TriangleOscillator();
readonly noise: Noise = new Noise();
readonly bp1: BandPass = new BandPass(7000, 10000);
readonly bp2: BandPass = new BandPass(20, 200);
readonly bp3: BandPass = new BandPass(7000, 10000);
readonly bp4: BandPass = new BandPass(20, 200);
env: Envelope = new Envelope(0.5, 1, 0.8, 0.8);
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.lfo.frequency = 1.0;
this.osc.frequency = notefreq(note - 0.01 as f32);
this.osc2.frequency = notefreq(note + 0.01 as f32);
this.env.attack();
}
noteoff(): void {
this.env.release();
}
isDone(): boolean {
return this.env.isDone();
}
nextframe(): void {
const env = this.env.next();
const left = (this.noise.next() * 0.25 + this.osc.next()) * env
* this.velocity * 0.02;
const right = (this.noise.next() * 0.25 + this.osc2.next()) * env
* this.velocity * 0.02;
const lfo = this.lfo.next() + 1;
this.bp1.update_frequencies(400 , 400 + (700 * lfo));
this.bp3.update_frequencies(500 , 500 + (600 * lfo));
const l1 = this.bp1.process(left);
const l2:f32 = this.bp2.process(left);
const r1 = this.bp3.process(right);
const r2:f32 = this.bp4.process(right);
this.channel.signal.add(l1 + l2, r1 + r2);
}
}
class SawTap extends MidiVoice {
osc: SawOscillator = new SawOscillator();
env: Envelope = new Envelope(0.001, 0.1, 0.05, 0.1);
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
const adjustednote = note -12;
this.osc.frequency = notefreq(adjustednote);
this.env.attack();
}
noteoff(): void {
this.env.release();
}
isDone(): boolean {
return this.env.isDone();
}
nextframe(): void {
const signal = this.osc.next() * this.env.next()
* this.velocity * 0.01;
this.channel.signal.add(signal, signal);
}
}
class SawDist extends MidiVoice {
osc: SawOscillator = new SawOscillator();
osc2: SawOscillator = new SawOscillator();
sqr: SquareOscillator = new SquareOscillator();
lfo: TriangleOscillator = new TriangleOscillator();
lowpass: LowPassFilter = new LowPassFilter(500);
hipass: HighPassFilter = new HighPassFilter(8000);
env: Envelope = new Envelope(0.01, 0.5, 0.7, 0.1);
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.osc.frequency = notefreq(note as f32-0.09);
this.osc2.frequency = notefreq(note as f32+0.09);
this.sqr.frequency = notefreq(note as f32+ 12);
this.lfo.frequency = 2;
this.env.attack();
}
noteoff(): void {
this.env.release();
}
isDone(): boolean {
return this.env.isDone();
}
nextframe(): void {
const lfo = this.lfo.next();
let signal = (this.osc.next() + this.osc2.next() +
this.sqr.next() * 0.5 * lfo
) *
this.env.next()
* this.velocity * 0.03;
this.lowpass.setFrequency(1000 + (200 * lfo));
this.hipass.setFrequency(8000 - (3000 * lfo));
signal = this.lowpass.process(signal) +
this.hipass.process(signal);
this.channel.signal.left += signal;
}
}
class SawTapChannel extends MidiChannel {
feedback: f32 = 0;
preprocess(): void {
let signal = this.signal.left * 0.25;
echoline.add(signal, signal);
}
}
class SawDistChannel extends MidiChannel {
feedback: f32 = 0;
preprocess(): void {
let signal = this.signal.left + this.feedback;
signal = softclip(signal) * 0.8;
this.feedback = signal * 0.9;
signal*=0.35;
this.signal.left = signal;
this.signal.right = signal;
echoline.add(signal, signal);
}
}
export class Snare2 extends MidiVoice {
private velocity: f32;
readonly noise: Noise = new Noise();
readonly env1: Envelope = new Envelope(0.001, 0.4, 0.0, 0.3);
readonly bp1: BandPass = new BandPass(200, 350);
readonly env2: Envelope = new Envelope(0.001, 0.08, 0.00, 0.2);
readonly bp2: BandPass = new BandPass(3000, 7000);
readonly env3: Envelope = new Envelope(0.001, 0.05, 0.00, 0.1);
readonly bp3: BandPass = new BandPass(10, 130);
constructor(channel: MidiChannel) {
super(channel);
this.minnote = 62;
this.maxnote = 62;
}
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.velocity = velocity as f32 / 64;
this.env1.attack();
this.env2.attack();
this.env3.attack();
}
noteoff(): void {
this.env1.release();
this.env2.release();
this.env3.release();
}
isDone(): boolean {
return this.env1.isDone();
}
nextframe(): void {
let env1: f32 = this.env1.next();
let env2: f32 = this.env2.next();
let env3: f32 = this.env3.next();
let osc: f32 = this.noise.next();
let sig1 = this.bp1.process(osc) * env1 * 7;
let sig2 = this.bp2.process(osc) * env2 * 2;
let sig3 = this.bp3.process(osc) * env3 * 5;
this.channel.signal.add(
this.velocity * (sig1 + sig2 * 0.8 + sig3),
this.velocity * (sig1 * 0.8 + sig2 + sig3)
);
}
}
export class TomTom extends MidiVoice {
private velocity: f32;
readonly noise: Noise = new Noise();
readonly env1: Envelope = new Envelope(0.001, 0.4, 0.0, 0.3);
readonly bp1: BandPass = new BandPass(20, 350);
readonly env2: Envelope = new Envelope(0.001, 0.04, 0.00, 0.2);
readonly bp2: BandPass = new BandPass(3000, 5000);
readonly env3: Envelope = new Envelope(0.001, 0.8, 0.00, 0.1);
readonly bp3: BandPass = new BandPass(50, 150);
osc: TriangleOscillator = new TriangleOscillator();
constructor(channel: MidiChannel, note: u8) {
super(channel);
this.minnote = note;
this.maxnote = note;
}
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.osc.frequency = notefreq(note-12);
this.velocity = velocity as f32 / 64;
this.env1.attack();
this.env2.attack();
this.env3.attack();
}
noteoff(): void {
this.env1.release();
this.env2.release();
this.env3.release();
}
isDone(): boolean {
return this.env1.isDone();
}
nextframe(): void {
let env1: f32 = this.env1.next();
let env2: f32 = this.env2.next();
let env3: f32 = this.env3.next();
let osc: f32 = this.noise.next();
let tone: f32 = this.osc.next();
this.osc.frequency -= 0.015;
let sig1 = this.bp1.process(osc + tone * 0.5) * env1 * 1.5;
let sig2 = this.bp2.process(osc + tone * 0.5) * env2 * 0.7;
let sig3 = this.bp3.process(osc + tone * 0.5) * env3 * 0.3;
this.channel.signal.add(
this.velocity * (sig1 + sig2 * 0.8 + sig3),
this.velocity * (sig1 * 0.8 + sig2 + sig3)
);
}
}
export class SawBass3 extends MidiVoice {
readonly envelope: Envelope = new Envelope(0.01, 0.4, 0.7, 0.2);
readonly filterenv: Envelope = new Envelope(0.01, 0.4, 0.01, 0.2);
readonly sawoscillator: SawOscillator = new SawOscillator();
readonly lfo: SineOscillator = new SineOscillator();
readonly filter: BiQuadFilter = new BiQuadFilter();
readonly lpfilter: BiQuadFilter = new BiQuadFilter();
readonly band1: BandPass = new BandPass(1000, 2000);
readonly signal: StereoSignal = new StereoSignal();
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.lfo.frequency = 10.0;
this.envelope.attack();
this.filterenv.attack();
}
noteoff(): void {
this.envelope.release();
this.filterenv.release();
}
nextframe(): void {
let env: f32 = this.envelope.next();
if(env === 0) {
this.signal.clear();
return;
}
let filterenv = this.filterenv.next();
const lfo = this.lfo.next()
this.sawoscillator.frequency = notefreq(this.note + (0.05 as f32) * lfo);
let signal = this.sawoscillator.next();
signal *= env;
this.lpfilter.update_coeffecients(FilterType.LowPass, SAMPLERATE,
this.sawoscillator.frequency + (4 * this.sawoscillator.frequency * filterenv), Q_BUTTERWORTH);
const band1freq = this.sawoscillator.frequency;
this.band1.update_frequencies(band1freq, band1freq + filterenv * 2 * this.sawoscillator.frequency);
let band1 = this.band1.process(signal);
signal = this.lpfilter.process(signal);
this.channel.signal.add(signal * 2 + band1,
signal * 2 - band1);
}
}
export class Organ extends MidiVoice {
readonly envelope: Envelope = new Envelope(0.01, 0.8, 0.5, 0.1);
readonly lfo: SineOscillator = new SineOscillator();
readonly lfo2: SineOscillator = new SineOscillator();
readonly lfo3: SineOscillator = new SineOscillator();
readonly oscleft: IFFTOscillator = new IFFTOscillator(4);
readonly oscright: IFFTOscillator = new IFFTOscillator(4);
pan: Pan = new Pan();
framecount: i32 = 0;
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
this.oscleft.frequency = notefreq(note);
this.oscright.frequency = notefreq(note);
this.lfo.frequency = 64;
this.lfo2.frequency = 128;
this.lfo3.frequency = 256;
this.pan.setPan(note as f32/ 127.0);
this.envelope.attack();
}
noteoff(): void {
this.envelope.release();
}
nextframe(): void {
const env: f32 = this.envelope.next();
if((this.framecount & 0xff) === 0) {
this.oscleft.createWave(
[0,0,this.lfo2.next() * env,0],
[
env,
this.lfo.next()* env,
this.lfo2.next() * env,
this.lfo3.next() * env
]);
this.oscleft.fft.calculateInverse();
this.oscright.createWave(
[0,0,0,0,this.lfo3.next() * env],
[env,
this.lfo.next()* env,
this.lfo3.next() * env,
this.lfo2.next() * env
]);
this.oscright.fft.calculateInverse();
}
this.framecount ++;
this.channel.signal.add(
0.29 * this.oscleft.next() * this.pan.leftLevel,
0.29 * this.oscright.next() * this.pan.rightLevel
);
}
}
export class Piano extends MidiVoice {
readonly envelope: Envelope = new Envelope(0.01, 8.0, 0.0, 0.3);
pan: Pan = new Pan();
frame: f32 = 0;
vel: f32;
freq: f32;
time: f32 = 0;
previousTime: f32 = -1;
timeincrement: f32 = 0;
previousPeriodicWaveNdx: i32 = -1;
previousArrayPos: i32 = 0;
sourceOscValue: f32 = 0;
targetOscValue: f32 = 0;
noteon(note: u8, velocity: u8): void {
super.noteon(note, velocity);
const frequency = notefreq(note);
this.freq = frequency;
this.pan.setPan(note as f32/ 127.0);
this.envelope.attack();
this.frame = 0;
this.time = 0;
this.previousTime = -1;
this.timeincrement = frequency / (SAMPLERATE)
this.vel = (velocity as f32) / 127;
this.previousPeriodicWaveNdx = -1;
this.previousArrayPos = 0;
this.sourceOscValue = 0;
this.targetOscValue = 0;
}
noteoff(): void {
this.envelope.release();
}
nextframe(): void {
const env: f32 = this.envelope.next();
const periodicWaveNdx = Math.floor(this.frame) as i32;
let arraypos = this.previousArrayPos;
const numfreqs = pianospectrum[arraypos++] as i32;
if (periodicWaveNdx > this.previousPeriodicWaveNdx &&
arraypos < pianospectrum.length - (1 + numfreqs * 3)) {
this.previousPeriodicWaveNdx = periodicWaveNdx;
this.previousArrayPos += (1 + numfreqs * 3);
}
const samplesTime = this.time * 128.0;
const samplesTimeFloor = Mathf.floor(samplesTime);
const interpolatePosition: f32 = samplesTime - samplesTimeFloor;
const t = samplesTimeFloor / 128.0;
let oscvalue: f32 = 0;
if (t > this.previousTime) {
for (let n=0;n<numfreqs;n++) {
const ndx = pianospectrum[arraypos++];
const magnitude = pianospectrum[arraypos++] / 128.0 as f32;
const phase = pianospectrum[arraypos++] * 2 * Mathf.PI / 255.0 as f32;
oscvalue += magnitude * Mathf.cos(2 * Mathf.PI * t * (ndx as f32) + phase);
}
this.sourceOscValue = this.targetOscValue;
this.targetOscValue = oscvalue;
this.previousTime = t;
oscvalue = this.sourceOscValue;
} else {
const sourceOscValue = this.sourceOscValue;
oscvalue = (interpolatePosition * (this.targetOscValue - sourceOscValue)) + sourceOscValue;
//oscvalue = sourceOscValue;
}
this.time += this.timeincrement;
oscvalue *= env * this.vel * 0.3;
this.channel.signal.add(
oscvalue,
oscvalue
);
this.frame += (440 / SAMPLERATE);
}
}
export function initializeMidiSynth(): void {
midichannels[0] = new MidiChannel(10, (ch) => new Pad(ch));
midichannels[1] = new MidiChannel(7, (ch, ndx) => {
switch(ndx) {
case 0:
return new Snare2(ch);
case 1:
return new Hihat(ch);
case 2:
return new TomTom(ch,65);
case 3:
return new TomTom(ch,67);
case 4:
return new TomTom(ch,69);
case 5:
return new TomTom(ch,71);
default:
return new Kick2(ch);
}
});
midichannels[2] = new SawTapChannel(2, (ch) => new SawTap(ch));
midichannels[3] = new SawDistChannel(3, (ch) => new SawDist(ch));
midichannels[4] = new MidiChannel(5, (ch) => new SawBass3(ch));
midichannels[5] = new MidiChannel(10, (ch) => new Organ(ch));
midichannels[6] = new MidiChannel(10, (ch) => new Piano(ch));
/*midichannels[6].pan.leftLevel = 1.0;
midichannels[6].pan.rightLevel = 1.0;
midichannels[6].volume = 1.0;*/
}
class Limiter {
attack: f32 = 0;
release: f32 = 0;
envelope: f32 = 0;
constructor(attackMs: f32, releaseMs: f32) {
this.attack = Mathf.pow( 0.01, 1.0 / ( attackMs * SAMPLERATE * 0.001 ) );
this.release = Mathf.pow( 0.01, 1.0 / ( releaseMs * SAMPLERATE * 0.001 ) );
}
process(signal: f32): f32 {
const v = Mathf.abs(signal);
if( v > this.envelope ) {
this.envelope = this.attack * ( this.envelope - v ) + v;
} else {
this.envelope = this.release * ( this.envelope - v ) + v;
}
if( this.envelope > 1 ) {
signal /= this.envelope;
}
return signal;
}
}
const limiterLeft = new Limiter(10,500);
const limiterRight = new Limiter(10,500);
const eqlowleft = new EQBand(10,200);
const eqlowright = new EQBand(10,200);
export function postprocess(): void {
echoline.left += delayRight.read() * 0.7;
echoline.right += delayLeft.read() * 0.7;
delayLeft.write_and_advance(echoline.left);
delayRight.write_and_advance(echoline.right);
outputline.add(echoline.left, echoline.right);
outputline.left = eqleft.process(outputline.left, 0.7, 0.6, 0.7) * 0.5;
outputline.right = eqright.process(outputline.right, 0.7, 0.6, 0.7) * 0.5;
echoline.clear();
}
const pianospectrum: u8[] = [33,127,28,112,1,28,143,126,7,5,2,7,250,124,6,122,4,6,133,125,6,8,3,6,247,0,3,128,123,2,48,5,2,207,6,2,193,122,2,62,121,1,50,7,1,205,120,1,51,8,1,204,119,1,49,9,1,206,118,1,49,10,1,206,11,1,207,117,1,48,116,1,48,12,1,207,115,1,47,13,1,208,114,1,48,14,1,207,15,1,208,113,1,47,112,1,45,16,1,210,19,1,42,188,127,42,67,126,24,160,2,24,95,0,15,128,4,13,146,124,13,109,125,10,202,3,10,53,122,2,109,6,2,146,123,2,40,5,2,215,121,1,60,7,1,195,120,1,65,8,1,190,9,1,190,119,1,65,115,127,77,90,1,77,165,126,42,152,2,42,103,0,12,0,4,11,144,124,11,111,125,10,42,3,10,213,123,7,52,5,7,203,122,5,94,6,5,161,121,3,54,7,3,201,120,3,52,8,3,203,9,2,199,119,2,56,118,2,56,10,2,199,117,2,55,11,2,200,116,2,54,12,2,201,115,2,52,13,2,203,14,2,204,114,2,51,113,2,51,15,2,204,112,1,49,16,1,206,111,1,48,17,1,207,110,1,47,18,1,208,19,1,209,109,1,46,108,1,45,20,1,210,21,1,210,107,1,45,106,1,42,22,1,213,23,1,214,105,1,41,104,1,40,24,1,215,25,1,215,103,1,40,26,1,217,102,1,38,101,1,38,27,1,217,100,1,37,28,1,218,99,1,35,29,1,220,30,1,221,98,1,34,97,1,33,31,1,222,96,1,32,32,1,223,95,1,31,33,1,224,94,1,31,34,1,224,35,1,226,93,1,29,37,1,226,91,1,29,36,1,226,92,1,29,89,1,25,39,1,230,90,1,27,38,1,228,42,1,233,86,1,22,88,1,24,40,1,231,41,1,231,87,1,24,45,1,235,83,1,20,84,1,19,44,1,236,43,1,234,85,1,21,82,1,19,46,1,236,47,1,237,81,1,18,79,1,15,49,1,240,48,1,240,80,1,15,78,1,14,50,1,241,77,1,13,51,1,242,52,1,243,76,1,12,75,1,11,53,1,244,74,1,10,54,1,245,73,1,9,55,1,246,72,1,8,56,1,247,57,1,248,71,1,7,41,1,75,141,127,75,114,126,50,162,2,50,93,125,39,214,3,39,41,124,17,125,4,17,130,122,5,125,6,5,130,0,4,128,123,3,234,5,3,21,120,2,196,8,2,59,121,2,179,7,2,76,9,1,83,119,1,172,118,1,172,10,1,83,11,1,83,117,1,172,12,1,82,116,1,173,115,1,174,13,1,81,114,1,173,14,1,82,113,1,173,15,1,82,16,1,83,112,1,172,17,1,84,111,1,171,18,1,84,110,1,171,19,1,85,109,1,170,108,1,170,20,1,85,17,127,140,78,1,140,177,125,49,211,3,49,44,126,45,155,2,45,100,124,24,143,4,24,112,0,12,128,5,11,252,123,11,3,6,5,146,122,5,109,7,2,52,121,2,203,8,2,57,120,2,198,128,1,123,210,127,123,45,126,98,165,2,98,90,125,51,210,3,51,45,124,33,153,4,33,102,0,14,128,7,8,89,121,8,166,122,7,127,6,7,128,5,6,15,123,6,240,120,4,170,8,4,85,119,3,179,9,3,76,118,3,176,10,3,79,117,3,175,11,3,80,116,3,174,12,3,81,13,2,81,115,2,174,114,2,173,14,2,82,15,2,82,113,2,173,16,2,83,112,2,172,111,2,171,17,2,84,18,2,85,110,2,170,19,2,85,109,2,170,108,2,169,20,2,86,21,2,87,107,2,168,106,1,167,22,1,88,23,1,89,105,1,166,104,1,166,24,1,89,103,1,164,25,1,91,26,1,91,102,1,164,101,1,162,27,1,93,100,1,162,28,1,93,29,1,94,99,1,161,30,1,95,98,1,160,31,1,96,97,1,159,95,1,157,33,1,98,32,1,97,96,1,158,94,1,157,34,1,98,93,1,155,35,1,100,36,1,100,92,1,155,37,1,101,91,1,154,90,1,153,38,1,102,39,1,103,89,1,152,88,1,151,40,1,104,87,1,150,41,1,105,43,1,107,85,1,148,84,1,148,44,1,107,42,1,106,86,1,149,83,1,146,45,1,109,47,1,112,81,1,143,82,1,145,46,1,110,48,1,113,80,1,142,49,1,113,79,1,142,50,1,114,78,1,141,77,1,140,51,1,115,76,1,139,52,1,116,75,1,138,53,1,117,74,1,137,54,1,118,55,1,119,73,1,136,72,1,135,56,1,120,71,1,134,57,1,121,58,1,122,70,1,133,69,1,132,59,1,123,60,1,124,68,1,131,67,1,130,61,1,125,62,1,126,66,1,129,63,1,127,65,1,128,64,1,128,128,127,84,53,1,84,202,126,76,163,2,76,92,0,50,0,124,37,131,4,37,124,125,35,215,3,35,40,122,18,78,6,18,177,5,16,241,123,16,14,121,5,80,7,5,175,120,4,64,8,4,191,9,3,202,119,3,53,10,3,201,118,3,54,117,3,53,11,3,202,116,2,53,12,2,202,13,2,202,115,2,53,14,2,203,114,2,52,113,2,50,15,2,205,16,2,206,112,2,49,111,2,48,17,2,207,110,2,46,18,2,209,109,2,46,19,2,209,20,1,210,108,1,45,21,1,211,107,1,44,106,1,43,22,1,212,105,1,42,23,1,213,24,1,214,104,1,41,25,1,215,103,1,40,26,1,216,102,1,39,101,1,38,27,1,217,28,1,218,100,1,37,99,1,36,29,1,219,30,1,220,98,1,35,97,1,33,31,1,222,32,1,222,96,1,33,95,1,31,33,1,224,94,1,31,34,1,224,93,1,29,35,1,226,92,1,29,36,1,226,38,1,228,90,1,27,37,1,228,91,1,27,88,1,27,40,1,228,86,1,23,42,1,232,89,1,26,39,1,229,83,1,20,45,1,235,41,1,232,87,1,23,84,1,20,44,1,235,43,1,234,85,1,21,48,1,240,80,1,15,46,1,236,82,1,19,49,1,240,79,1,15,78,1,14,50,1,241,51,1,242,77,1,13,76,1,12,52,1,243,75,1,11,53,1,244,74,1,10,54,1,245,81,1,17,47,1,238,73,1,9,55,1,246,72,1,8,56,1,247,57,1,248,71,1,7,58,1,249,70,1,6,69,1,5,59,1,250,60,1,251,68,1,4,61,1,252,67,1,3,62,1,253,66,1,2,65,1,1,63,1,254,64,1,0,89,126,135,173,2,135,82,127,87,43,1,87,212,125,54,207,3,54,48,124,51,145,4,51,110,0,19,128,5,17,13,123,17,242,122,13,59,6,13,196,121,3,138,7,3,117,119,3,182,9,3,73,118,2,181,10,2,74,120,2,194,8,2,61,11,2,75,117,2,180,12,2,76,116,2,179,115,2,178,13,2,77,114,2,176,14,2,79,15,1,80,113,1,175,112,1,175,16,1,80,17,1,82,111,1,173,18,1,82,110,1,173,19,1,83,109,1,172,20,1,84,108,1,171,107,1,170,21,1,85,106,1,169,22,1,86,23,1,87,105,1,168,24,1,88,104,1,167,103,1,166,25,1,89,26,1,90,102,1,165,27,1,91,101,1,164,28,1,92,100,1,163,99,1,162,29,1,93,98,1,161,30,1,94,31,1,95,97,1,160,96,1,159,32,1,96,95,1,158,33,1,97,34,1,98,94,1,157,93,1,156,35,1,99,36,1,99,92,1,156,91,1,155,37,1,100,39,1,102,89,1,153,90,1,153,38,1,102,88,1,153,40,1,102,82,1,141,46,1,114,85,1,149,43,1,106,86,1,150,42,1,105,87,1,152,41,1,103,128,1,103,179,127,103,76,2,86,84,126,86,171,125,52,223,3,52,32,4,42,121,124,42,134,5,25,247,123,25,8,122,25,45,6,25,210,0,9,128,121,8,74,7,8,181,120,4,38,8,4,217,9,3,201,119,3,54,10,3,203,118,3,52,11,3,204,117,3,51,116,3,50,12,3,205,115,2,49,13,2,206,14,2,207,114,2,48,15,2,208,113,2,47,16,2,209,112,2,46,17,2,209,111,2,46,110,2,44,18,2,211,109,2,44,19,2,211,108,2,43,20,2,212,107,2,41,21,2,214,106,2,41,22,2,214,105,1,40,23,1,215,104,1,39,24,1,216,25,1,217,103,1,38,102,1,37,26,1,218,101,1,36,27,1,219,28,1,220,100,1,35,99,1,34,29,1,221,30,1,222,98,1,33,97,1,32,31,1,223,32,1,224,96,1,31,33,1,224,95,1,31,94,1,30,34,1,225,35,1,227,93,1,28,92,1,28,36,1,227,37,1,228,91,1,27,38,1,229,90,1,26,89,1,25,39,1,230,88,1,24,40,1,231,43,1,234,85,1,21,41,1,233,87,1,22,42,1,233,86,1,22,84,1,20,44,1,235,46,1,237,82,1,18,81,1,16,47,1,239,83,1,20,45,1,235,48,1,240,80,1,15,79,1,14,49,1,241,78,1,13,50,1,242,51,1,242,77,1,13,76,1,12,52,1,243,75,1,11,53,1,244,54,1,245,74,1,10,73,1,9,55,1,246,72,1,8,56,1,247,57,1,248,71,1,7,58,1,249,70,1,6,69,1,5,59,1,250,60,1,251,68,1,4,67,1,3,61,1,252,62,1,253,66,1,2,65,1,1,63,1,254,64,1,0,31,126,146,185,2,146,70,1,145,168,127,145,87,125,55,217,3,55,38,124,36,134,4,36,121,5,15,8,123,15,247,122,12,24,6,12,231,7,3,165,121,3,90,120,2,195,8,2,60,0,2,128,119,1,158,9,1,97,118,1,166,10,1,89,12,1,85,116,1,170,117,1,170,11,1,85,115,1,172,13,1,83,114,1,170,14,1,85,113,1,172,15,1,83,128,126,130,173,2,130,82,1,92,154,127,92,101,0,42,0,124,34,118,4,34,137,122,16,39,6,16,216,125,12,181,3,12,74,123,11,16,5,11,239,121,9,59,7,9,196,9,5,195,119,5,60,10,4,196,118,4,59,117,4,57,11,4,198,120,4,68,8,4,187,116,3,56,12,3,199,115,3,54,13,3,201,14,3,202,114,3,53,15,3,203,113,3,52,112,3,51,16,3,204,17,2,206,111,2,49,110,2,48,18,2,207,19,2,208,109,2,47,20,2,209,108,2,46,21,2,211,107,2,44,106,2,43,22,2,212,105,2,43,23,2,212,104,2,41,24,2,214,103,2,41,25,2,214,26,2,216,102,2,39,101,2,38,27,2,217,28,2,218,100,2,37,99,1,36,29,1,219,30,1,220,98,1,35,31,1,221,97,1,34,96,1,33,32,1,222,33,1,223,95,1,32,94,1,31,34,1,224,92,1,29,36,1,226,35,1,225,93,1,30,91,1,27,37,1,228,39,1,230,89,1,25,38,1,229,90,1,26,41,1,231,87,1,24,88,1,24,40,1,231,43,1,235,85,1,20,42,1,232,86,1,23,45,1,236,83,1,19,84,1,20,44,1,235,46,1,235,82,1,20,47,1,237,81,1,18,79,1,16,49,1,239,48,1,239,80,1,16,78,1,14,50,1,241,77,1,13,51,1,242,52,1,243,76,1,12,75,1,11,53,1,244,74,1,10,54,1,245,73,1,9,55,1,246,72,1,8,56,1,247,57,1,248,71,1,7,58,1,249,70,1,6,69,1,5,59,1,250,60,1,251,68,1,4,61,1,252,67,1,3,62,1,253,66,1,2,65,1,1,63,1,254,64,1,0,128,1,160,127,127,160,128,126,147,167,2,147,88,4,44,146,124,44,109,3,35,64,125,35,191,0,15,0,122,15,39,6,15,216,7,9,199,121,9,56,123,8,20,5,8,235,119,6,60,9,6,195,120,5,79,8,5,176,10,5,197,118,5,58,117,4,58,11,4,197,12,4,199,116,4,56,13,4,201,115,4,54,14,3,202,114,3,53,15,3,203,113,3,52,112,3,51,16,3,204,111,3,49,17,3,206,110,3,48,18,3,207,109,3,47,19,3,208,108,2,46,20,2,209,107,2,45,21,2,210,106,2,44,22,2,211,23,2,212,105,2,43,24,2,213,104,2,42,103,2,40,25,2,215,26,2,216,102,2,39,101,2,39,27,2,216,100,2,37,28,2,218,99,2,36,29,2,219,30,2,220,98,2,35,31,2,221,97,2,34,96,2,33,32,2,222,95,2,32,33,2,223,34,2,224,94,2,31,35,2,225,93,2,30,36,2,226,92,2,29,37,1,228,91,1,27,38,1,228,90,1,27,88,1,25,40,1,230,39,1,229,89,1,26,87,1,23,41,1,232,85,1,21,43,1,234,86,1,22,42,1,233,44,1,234,84,1,21,45,1,236,83,1,19,46,1,235,82,1,20,47,1,238,81,1,17,48,1,239,80,1,16,79,1,15,49,1,240,78,1,14,50,1,241,77,1,13,51,1,242,52,1,243,76,1,12,53,1,244,75,1,11,74,1,10,54,1,245,55,1,246,73,1,9,72,1,8,56,1,247,57,1,248,71,1,7,58,1,249,70,1,6,59,1,250,69,1,5,68,1,4,60,1,251,61,1,252,67,1,3,62,1,253,66,1,2,63,1,254,65,1,1,64,1,0,33,1,255,124,127,255,131,126,158,172,2,158,83,3,64,56,125,64,199,124,33,141,4,33,114,0,18,128,122,14,239,6,14,16,123,9,201,5,9,54,120,4,111,8,4,144,121,2,19,7,2,236,119,1,205,9,1,50,118,1,192,10,1,63,11,1,66,117,1,189,116,1,192,12,1,63,115,1,187,13,1,68,113,1,182,15,1,73,114,1,185,14,1,70,112,1,185,16,1,70,73,1,214,126,127,214,129,126,153,171,2,153,84,3,61,57,125,61,198,124,37,136,4,37,119,0,24,0,122,14,216,6,14,39,123,12,176,5,12,79,121,3,213,7,3,42,8,3,167,120,3,88,9,2,73,119,2,182,118,2,180,10,2,75,11,2,76,117,2,179,12,2,76,116,2,179,115,1,178,13,1,77,114,1,176,14,1,79,113,1,175,15,1,80,112,1,175,16,1,80,17,1,80,111,1,175,18,1,82,110,1,173,19,1,83,109,1,172,20,1,84,108,1,171,107,1,170,21,1,85,22,1,85,106,1,170,105,1,168,23,1,87,104,1,166,24,1,89,25,1,89,103,1,166,102,1,165,26,1,90,101,1,164,27,1,91,100,1,163,28,1,92,99,1,163,29,1,92,98,1,161,30,1,94,97,1,160,31,1,95,96,1,159,32,1,96,34,1,97,94,1,158,95,1,158,33,1,97,36,1,99,92,1,156,93,1,156,35,1,99,17,1,187,120,127,187,135,126,108,162,2,108,93,3,47,56,125,47,199,0,33,128,4,20,146,124,20,109,122,12,194,6,12,61,5,11,84,123,11,171,120,6,33,8,6,222,121,4,248,7,4,7,63,1,186,125,127,186,130,126,122,148,2,122,107,125,32,197,3,32,58,124,21,107,4,21,148,0,19,0,123,9,186,5,9,69,6,7,107,122,7,148,121,5,194,7,5,61,8,5,244,120,5,11,9,2,185,119,2,70,118,2,62,10,2,193,117,2,60,11,2,195,12,1,199,116,1,56,115,1,57,13,1,198,14,1,202,114,1,53,15,1,203,113,1,52,112,1,50,16,1,205,111,1,49,17,1,206,110,1,48,18,1,207,109,1,46,19,1,209,108,1,45,20,1,210,107,1,45,21,1,210,106,1,43,22,1,212,23,1,212,105,1,43,104,1,41,24,1,214,25,1,216,103,1,39,101,1,38,27,1,217,26,1,216,102,1,39,28,1,218,100,1,37,29,1,220,99,1,35,30,1,220,98,1,35,31,1,221,97,1,34,107,127,210,137,1,210,118,126,135,132,2,135,123,3,41,51,125,41,204,0,21,128,124,16,111,4,16,144,6,7,127,122,7,128,5,5,93,123,5,162,120,4,233,8,4,22,7,3,92,121,3,163,119,3,55,9,3,200,118,2,52,10,2,203,117,2,51,11,2,204,116,2,50,12,2,205,115,2,49,13,2,206,14,2,207,114,2,48,15,2,208,113,2,47,112,1,45,16,1,210,111,1,46,17,1,209,110,1,45,18,1,210,109,1,45,19,1,210,108,1,43,20,1,212,21,1,212,107,1,43,106,1,40,22,1,215,23,1,214,105,1,41,104,1,39,24,1,216,103,1,38,25,1,217,102,1,37,26,1,218,27,1,219,101,1,36,100,1,36,28,1,219,99,1,34,29,1,221,30,1,222,98,1,33,97,1,32,31,1,223,96,1,30,32,1,225,95,1,31,33,1,224,94,1,29,34,1,226,92,1,28,36,1,227,35,1,227,93,1,28,37,1,228,91,1,27,38,1,230,90,1,25,88,1,23,40,1,232,39,1,231,89,1,24,42,1,233,86,1,22,85,1,21,43,1,234,87,1,23,41,1,232,47,1,240,81,1,15,80,1,17,48,1,238,84,1,20,44,1,235,79,1,15,49,1,240,78,1,14,50,1,241,82,1,21,46,1,234,83,1,18,45,1,237,77,1,13,51,1,242,76,1,12,52,1,243,53,1,244,75,1,11,43,1,247,127,127,247,128,126,136,141,2,136,114,3,54,57,125,54,198,124,9,116,4,9,139,5,9,65,123,9,190,7,8,108,121,8,147,120,6,192,8,6,63,6,6,102,122,6,153,0,2,128,119,1,230,9,1,25,118,1,216,10,1,39,11,1,48,117,1,207,116,1,202,12,1,53,13,1,60,115,1,195,114,1,194,14,1,61,113,1,193,15,1,62,16,1,62,112,1,193,17,1,69,111,1,186,18,1,69,110,1,186,19,1,71,109,1,184,108,1,184,20,1,71,21,1,77,107,1,178,31,1,201,127,127,201,128,126,131,136,2,131,119,125,39,205,3,39,50,124,18,119,4,18,136,0,11,0,7,8,138,121,8,117,123,8,173,5,8,82,6,6,141,122,6,114,120,6,154,8,6,101,119,1,222,9,1,33,118,1,206,10,1,49,11,1,61,117,1,194,116,1,189,12,1,66,115,1,187,13,1,68,114,1,189,14,1,66,113,1,185,15,1,70,25,127,202,130,1,202,125,126,126,134,2,126,121,3,42,54,125,42,201,124,15,97,4,15,158,7,9,183,121,9,72,122,8,69,6,8,186,5,7,141,123,7,114,0,5,128,120,5,103,8,5,152,119,1,254,9,1,1,118,1,13,10,1,242,117,1,24,11,1,231,116,1,25,12,1,230,53,127,184,132,1,184,123,2,134,120,126,134,135,3,52,59,125,52,196,0,17,128,124,12,104,4,12,151,7,8,205,121,8,50,5,8,116,123,8,139,122,5,60,6,5,195,8,3,188,120,3,67,9,3,71,119,3,184,10,2,73,118,2,182,11,2,74,117,2,181,116,1,178,12,1,77,115,1,178,13,1,77,14,1,78,114,1,177,15,1,79,113,1,176,16,1,78,112,1,177,111,1,175,17,1,80,110,1,174,18,1,81,19,1,82,109,1,173,20,1,84,108,1,171,107,1,169,21,1,86,106,1,169,22,1,86,105,1,168,23,1,87,103,1,166,25,1,89,104,1,166,24,1,89,26,1,90,102,1,165,21,127,209,124,1,209,131,2,121,123,126,121,132,125,43,203,3,43,52,0,17,0,4,10,174,124,10,81,121,8,14,7,8,241,122,6,45,6,6,210,5,5,114,123,5,141,120,4,24,8,4,231,9,1,93,119,1,162,10,1,88,118,1,167,43,127,151,122,1,151,133,126,135,138,2,135,117,125,42,187,3,42,68,0,18,128,121,8,231,7,8,24,124,6,53,4,6,202,122,5,250,6,5,5,123,5,177,5,5,78,120,4,224,8,4,31,9,2,107,119,2,148,10,1,97,118,1,158,11,1,94,117,1,161,116,1,164,12,1,91,114,1,165,14,1,90,115,1,165,13,1,90,113,1,166,15,1,89,16,1,91,112,1,164,17,1,92,111,1,163,18,1,91,110,1,164,19,1,91,109,1,164,20,1,92,108,1,163,21,1,91,107,1,164,19,127,151,120,1,151,135,2,124,117,126,124,138,3,46,70,125,46,185,124,8,51,4,8,204,121,7,217,7,7,38,122,7,244,6,7,11,0,5,128,123,4,180,5,4,75,120,4,203,8,4,52,9,1,178,119,1,77,17,127,137,112,1,137,143,126,132,138,2,132,117,125,41,186,3,41,69,7,9,67,121,9,188,0,8,0,123,7,182,5,7,73,124,7,53,4,7,202,122,6,210,6,6,45,120,5,162,8,5,93,39,2,140,117,126,140,138,1,139,141,127,139,114,125,37,195,3,37,60,124,14,50,4,14,205,0,7,0,7,6,99,121,6,156,123,5,166,5,5,89,8,4,141,120,4,114,122,3,234,6,3,21,119,2,41,9,2,214,118,1,46,10,1,209,117,1,45,11,1,210,12,1,208,116,1,47,13,1,206,115,1,49,14,1,207,114,1,48,15,1,208,113,1,47,112,1,46,16,1,209,111,1,46,17,1,209,110,1,42,18,1,213,109,1,44,19,1,211,128,126,157,148,2,157,107,127,115,106,1,115,149,125,41,193,3,41,62,0,21,128,5,12,77,123,12,178,4,12,248,124,12,7,6,11,48,122,11,207,7,10,103,121,10,152,119,4,195,9,4,60,10,3,65,118,3,190,117,3,187,11,3,68,8,3,118,120,3,137,116,3,185,12,3,70,115,2,184,13,2,71,114,2,182,14,2,73,15,2,75,113,2,180,112,2,179,16,2,76,111,2,178,17,2,77,18,2,79,110,2,176,19,2,81,109,2,174,20,2,81,108,2,174,107,2,173,21,2,82,22,1,83,106,1,172,23,1,85,105,1,170,104,1,170,24,1,85,103,1,168,25,1,87,26,1,88,102,1,167,101,1,166,27,1,89,28,1,91,100,1,164,29,1,91,99,1,164,98,1,163,30,1,92,31,1,93,97,1,162,32,1,94,96,1,161,95,1,160,33,1,95,34,1,96,94,1,159,93,1,158,35,1,97,37,1,99,91,1,156,92,1,157,36,1,98,88,1,153,40,1,102,38,1,101,90,1,154,39,1,102,89,1,153,86,1,151,42,1,104,84,1,150,44,1,105,87,1,151,41,1,104,43,1,107,85,1,148,83,1,147,45,1,108,80,1,144,48,1,111,79,1,143,49,1,112,82,1,144,46,1,111,50,1,113,78,1,142,81,1,146,47,1,109,77,1,141,51,1,114,76,1,140,52,1,115,53,1,116,75,1,139,74,1,138,54,1,117,73,1,137,55,1,118,72,1,136,56,1,119,71,1,135,57,1,120,70,1,134,58,1,121,59,1,122,69,1,133,68,1,132,60,1,123,67,1,131,61,1,124,62,1,125,66,1,130,63,1,126,65,1,129,64,1,128,33,126,143,140,2,143,115,1,77,166,127,77,89,125,29,196,3,29,59,124,14,21,4,14,234,6,9,52,122,9,203,7,7,141,121,7,114,5,7,71,123,7,184,0,5,128,120,3,49,8,3,206,119,2,175,9,2,80,10,1,77,118,1,178,117,1,179,11,1,76,116,1,179,12,1,76,13,1,78,115,1,177,114,1,177,14,1,78,113,1,173,15,1,82,112,1,173,16,1,82,35,126,125,140,2,125,115,127,90,89,1,90,166,125,33,190,3,33,65,124,17,12,4,17,243,0,17,0,6,13,58,122,13,197,7,7,172,121,7,83,5,6,76,123,6,179,8,4,13,120,4,242,119,2,173,9,2,82,10,1,73,118,1,182,117,1,184,11,1,71,116,1,179,12,1,76,115,1,180,13,1,75,114,1,179,14,1,76,112,1,176,16,1,79,113,1,177,15,1,78,17,1,81,111,1,174,51,126,122,144,2,122,111,127,64,73,1,64,182,3,33,63,125,33,192,124,16,10,4,16,245,6,12,69,122,12,186,120,6,207,8,6,48,121,5,47,7,5,208,0,5,128,5,5,84,123,5,171,119,1,168,9,1,87,10,1,81,118,1,174,117,1,175,11,1,80,116,1,176,12,1,79,115,1,176,13,1,79,114,1,174,14,1,81,15,1,80,113,1,175,16,1,81,112,1,174,17,1,82,111,1,173,109,1,171,19,1,84,18,1,85,110,1,170,21,1,85,107,1,170,108,1,170,20,1,85,106,1,168,22,1,87,23,1,89,105,1,166,24,1,89,104,1,166,103,1,165,25,1,90,17,2,109,113,126,109,142,127,48,66,1,48,189,125,23,191,3,23,64,4,20,249,124,20,6,121,8,21,7,8,234,6,8,82,122,8,173,120,5,174,8,5,81,5,5,85,123,5,170,0,4,128,17,126,96,151,2,96,104,1,75,190,127,75,65,125,30,186,3,30,69,4,25,245,124,25,10,6,9,111,122,9,144,121,6,254,7,6,1,8,6,108,120,6,147,0,5,128,5,1,106,123,1,149,45,126,91,149,2,91,106,127,73,53,1,73,202,125,34,189,3,34,66,4,25,0,124,25,255,6,9,114,122,9,141,7,7,27,121,7,228,120,4,115,8,4,140,123,3,144,5,3,111,119,2,197,9,2,58,10,1,67,118,1,188,11,1,70,117,1,185,116,1,180,12,1,75,115,1,181,13,1,74,114,1,181,14,1,74,15,1,77,113,1,178,112,1,176,16,1,79,111,1,174,17,1,81,0,1,128,18,1,82,110,1,173,19,1,81,109,1,174,20,1,84,108,1,171,21,1,84,107,1,171,106,1,171,22,1,84,16,127,82,53,1,82,202,2,78,111,126,78,144,125,32,196,3,32,59,4,26,247,124,26,8,6,9,143,122,9,112,7,6,41,121,6,214,120,5,69,8,5,186,5,2,134,123,2,121,17,1,92,196,127,92,59,126,80,141,2,80,114,125,33,195,3,33,60,124,27,253,4,27,2,0,10,128,122,8,87,6,8,168,7,6,66,121,6,189,120,5,34,8,5,221,123,2,110,5,2,145,17,127,109,61,1,109,194,126,87,142,2,87,113,125,37,195,3,37,60,124,30,243,4,30,12,122,9,78,6,9,177,0,7,128,7,6,92,121,6,163,8,4,11,120,4,244,123,3,114,5,3,141,49,127,138,70,1,138,185,126,80,139,2,80,116,125,36,190,3,36,65,124,31,247,4,31,8,122,9,58,6,9,197,7,6,131,121,6,124,0,6,0,120,3,217,8,3,38,123,3,73,5,3,182,9,2,198,119,2,57,118,1,53,10,1,202,117,1,52,11,1,203,12,1,205,116,1,50,13,1,204,115,1,51,14,1,209,114,1,46,15,1,205,113,1,50,16,1,207,112,1,48,17,1,209,111,1,46,110,1,44,18,1,211,109,1,45,19,1,210,20,1,212,108,1,43,107,1,43,21,1,212,22,1,214,106,1,41,105,1,40,23,1,215,104,1,38,24,1,217,42,127,106,73,1,106,182,2,87,117,126,87,138,125,44,192,3,44,63,124,33,235,4,33,20,122,7,35,6,7,220,7,7,135,121,7,120,8,6,84,120,6,171,5,3,2,123,3,253,119,1,213,9,1,42,117,1,190,11,1,65,118,1,197,10,1,58,12,1,68,116,1,187,115,1,182,13,1,73,113,1,182,15,1,73,114,1,186,14,1,69,112,1,181,16,1,74,17,1,74,111,1,181,18,1,76,110,1,179,109,1,177,19,1,78,108,1,176,20,1,79,107,1,175,21,1,80,19,1,87,187,127,87,68,2,78,123,126,78,132,125,30,190,3,30,65,124,28,238,4,28,17,0,9,0,122,9,28,6,9,227,121,8,84,7,8,171,120,4,125,8,4,130,5,1,2,123,1,253,119,1,231,9,1,24,45,126,64,142,2,64,113,127,62,72,1,62,183,125,34,185,3,34,70,124,33,228,4,33,27,122,7,2,6,7,253,0,7,0,121,5,53,7,5,202,5,5,38,123,5,217,8,3,155,120,3,100,119,2,175,9,2,80,10,2,81,118,2,174,117,1,175,11,1,80,116,1,172,12,1,83,115,1,171,13,1,84,114,1,174,14,1,81,113,1,173,15,1,82,16,1,82,112,1,173,17,1,84,111,1,171,18,1,86,110,1,169,19,1,86,109,1,169,20,1,87,108,1,168,107,1,168,21,1,87,106,1,167,22,1,88,19,127,65,72,1,65,183,126,48,136,2,48,119,125,36,187,3,36,68,4,31,28,124,31,227,0,10,0,122,7,1,6,7,254,121,6,29,7,6,226,120,3,58,8,3,197,5,2,25,123,2,230,119,1,138,9,1,117,41,126,44,141,2,44,114,127,42,64,1,42,191,3,41,61,125,41,194,124,34,215,4,34,40,0,22,128,122,8,228,6,8,27,121,7,242,7,7,13,5,6,73,123,6,182,8,3,17,120,3,238,119,2,165,9,2,90,10,1,87,118,1,168,117,1,172,11,1,83,12,1,83,116,1,172,115,1,172,13,1,83,15,1,83,113,1,172,114,1,174,14,1,81,112,1,174,16,1,81,111,1,172,17,1,83,18,1,84,110,1,171,19,1,85,109,1,170,108,1,168,20,1,87,29,127,51,70,1,51,185,2,41,114,126,41,141,3,37,60,125,37,195,0,31,0,124,26,219,4,26,36,122,6,213,6,6,42,7,4,38,121,4,217,5,3,70,123,3,185,120,2,217,8,2,38,9,2,177,119,2,78,118,1,75,10,1,180,11,1,185,117,1,70,116,1,72,12,1,183,115,1,66,13,1,189,14,1,191,114,1,64,25,126,45,141,2,45,114,3,38,60,125,38,195,127,32,60,1,32,195,4,25,39,124,25,216,0,9,128,6,7,52,122,7,203,5,6,83,123,6,172,7,4,69,121,4,186,120,3,172,8,3,83,9,1,205,119,1,50,118,1,46,10,1,209,117,1,52,11,1,203,116,1,50,12,1,205,26,126,38,145,2,38,110,125,36,192,3,36,63,1,28,167,127,28,88,4,24,42,124,24,213,5,6,89,123,6,166,6,5,71,122,5,184,7,5,98,121,5,157,8,3,144,120,3,111,119,2,34,9,2,221,118,1,36,10,1,219,11,1,214,117,1,41,116,1,44,12,1,211,14,1,216,114,1,39,23,125,42,191,3,42,64,126,41,146,2,41,109,124,28,208,4,28,47,127,21,89,1,21,166,6,6,88,122,6,167,7,6,119,121,6,136,5,5,93,123,5,162,0,5,0,120,3,93,8,3,162,119,1,213,9,1,42,10,1,56,118,1,199,117,1,199,11,1,56,17,125,38,184,3,38,71,2,33,113,126,33,142,124,26,205,4,26,50,127,18,75,1,18,180,122,6,149,6,6,106,120,4,44,8,4,211,7,4,155,121,4,100,5,3,127,123,3,128,0,1,0,19,125,37,187,3,37,68,126,30,138,2,30,117,124,24,194,4,24,61,6,7,123,122,7,132,0,7,0,127,6,187,1,6,68,7,4,182,121,4,73,8,4,251,120,4,4,123,3,128,5,3,127,9,1,92,119,1,163,18,3,37,65,125,37,190,124,23,194,4,23,61,127,21,168,1,21,87,2,19,106,126,19,149,122,6,122,6,6,133,7,5,213,121,5,42,120,4,222,8,4,33,123,3,128,5,3,127,9,1,133,119,1,122,27,125,37,191,3,37,64,124,27,189,4,27,66,126,24,164,2,24,91,127,16,191,1,16,64,122,5,113,6,5,142,120,5,189,8,5,66,7,4,248,121,4,7,0,2,128,123,1,107,5,1,148,9,1,89,119,1,166,118,1,179,10,1,76,12,1,76,116,1,179,11,1,72,117,1,183,115,1,181,13,1,74,19,125,38,186,3,38,69,124,27,184,4,27,71,1,24,248,127,24,7,126,21,165,2,21,90,6,5,170,122,5,85,7,5,9,121,5,246,8,4,105,120,4,150,5,3,181,123,3,74,0,3,128,9,1,21,119,1,234,17,127,38,246,1,38,9,125,30,183,3,30,72,2,25,84,126,25,171,124,23,174,4,23,81,6,6,191,122,6,64,7,4,31,121,4,224,5,4,176,123,4,79,120,4,110,8,4,145,0,1,0,17,127,29,4,1,29,251,125,29,186,3,29,69,126,27,171,2,27,84,124,22,170,4,22,85,122,7,49,6,7,206,0,4,128,7,4,61,121,4,194,120,4,69,8,4,186,123,4,67,5,4,188,17,126,30,171,2,30,84,3,30,71,125,30,184,1,22,249,127,22,6,4,20,92,124,20,163,122,6,37,6,6,218,120,3,31,8,3,224,0,3,0,121,3,174,7,3,81,123,3,56,5,3,199,19,125,31,183,3,31,72,126,29,177,2,29,78,124,20,156,4,20,99,127,16,34,1,16,221,122,7,25,6,7,230,7,4,114,121,4,141,123,4,31,5,4,224,120,3,0,8,3,255,0,2,0,9,1,195,119,1,60,17,125,32,175,3,32,80,126,29,177,2,29,78,127,27,253,1,27,2,124,24,155,4,24,100,122,5,3,6,5,252,121,5,130,7,5,125,8,3,59,120,3,196,123,2,25,5,2,230,0,2,128,19,3,28,82,125,28,173,126,24,186,2,24,69,124,22,148,4,22,107,127,21,249,1,21,6,122,5,252,6,5,3,121,4,89,7,4,166,5,3,224,123,3,31,120,2,168,8,2,87,9,1,227,119,1,28,0,1,128,17,125,33,174,3,33,81,126,28,182,2,28,73,4,22,108,124,22,147,127,20,223,1,20,32,0,9,0,7,5,189,121,5,66,123,4,22,5,4,233,122,3,232,6,3,23,8,2,132,120,2,123,17,3,32,86,125,32,169,126,30,183,2,30,72,4,24,110,124,24,145,1,22,17,127,22,238,123,6,16,5,6,239,0,5,128,7,5,211,121,5,44,122,4,214,6,4,41,120,3,85,8,3,170,37,126,41,187,2,41,68,3,37,85,125,37,170,1,32,25,127,32,230,124,24,145,4,24,110,123,7,245,5,7,10,6,6,60,122,6,195,0,6,0,7,4,252,121,4,3,9,1,84,119,1,171,118,1,172,10,1,83,11,1,83,117,1,172,115,1,177,13,1,78,12,1,84,116,1,171,114,1,178,14,1,77,15,1,85,113,1,170,112,1,173,16,1,82,111,1,170,17,1,85,18,1,86,110,1,169,19,1,85,109,1,170,19,127,44,234,1,44,21,126,34,190,2,34,65,3,31,89,125,31,166,4,22,122,124,22,133,123,6,251,5,6,4,7,4,18,121,4,237,6,4,77,122,4,178,8,2,249,120,2,6,0,1,0,119,1,97,9,1,158,21,1,41,28,127,41,227,126,35,190,2,35,65,3,29,92,125,29,163,4,22,124,124,22,131,5,5,14,123,5,241,7,4,31,121,4,224,0,4,0,6,3,102,122,3,153,8,2,31,120,2,224,119,1,67,9,1,188,10,1,187,118,1,68,31,126,32,191,2,32,64,127,32,226,1,32,29,3,28,95,125,28,160,124,22,123,4,22,132,0,15,128,5,5,14,123,5,241,6,3,138,122,3,117,121,2,195,7,2,60,119,1,47,9,1,208,10,1,208,118,1,47,8,1,81,120,1,174,117,1,45,11,1,210,116,1,40,12,1,215,13,1,208,115,1,47,14,1,209,114,1,46,113,1,45,15,1,210,23,126,43,189,2,43,66,3,31,94,125,31,161,1,29,31,127,29,224,4,25,127,124,25,128,0,12,0,123,6,210,5,6,45,122,4,121,6,4,134,121,4,161,7,4,94,8,3,123,120,3,132,9,1,26,119,1,229,118,1,209,10,1,46,11,1,60,117,1,195,17,126,35,192,2,35,63,127,34,225,1,34,30,125,28,158,3,28,97,124,26,115,4,26,140,123,5,220,5,5,35,121,4,125,7,4,130,122,3,81,6,3,174,120,3,77,8,3,178,0,2,0,17,127,36,203,1,36,52,2,34,60,126,34,195,124,26,109,4,26,146,125,26,159,3,26,96,123,7,209,5,7,46,122,5,74,6,5,181,121,3,94,7,3,161,120,2,44,8,2,211,0,2,128,18,1,43,56,127,43,199,126,38,192,2,38,63,124,27,106,4,27,149,3,25,100,125,25,155,123,6,201,5,6,54,122,4,57,6,4,198,7,3,186,121,3,69,120,2,252,8,2,3,9,1,84,119,1,171,17,127,54,198,1,54,57,126,36,188,2,36,67,125,27,151,3,27,104,124,27,104,4,27,151,0,7,0,123,5,190,5,5,65,122,4,43,6,4,212,7,4,216,121,4,39,120,3,219,8,3,36,16,127,59,200,1,59,55,126,39,189,2,39,66,3,27,101,125,27,154,124,24,102,4,24,153,123,6,178,5,6,77,122,4,14,6,4,241,7,2,248,121,2,7,120,2,175,8,2,80,17,127,63,201,1,63,54,126,39,194,2,39,61,125,27,154,3,27,101,4,23,157,124,23,98,5,7,84,123,7,171,0,5,0,122,5,2,6,5,253,7,3,20,121,3,235,120,3,153,8,3,102,17,127,72,205,1,72,50,126,37,196,2,37,59,124,24,92,4,24,163,3,23,105,125,23,150,0,7,128,123,6,162,5,6,93,122,5,249,6,5,6,121,4,219,7,4,36,120,2,107,8,2,148,17,127,70,204,1,70,51,126,38,192,2,38,63,124,25,85,4,25,170,3,23,106,125,23,149,6,5,20,122,5,235,5,5,110,123,5,145,121,3,201,7,3,54,0,3,0,120,3,62,8,3,193,17,127,52,209,1,52,46,126,36,193,2,36,62,124,26,79,4,26,176,125,22,145,3,22,110,0,6,128,5,5,115,123,5,140,6,5,40,122,5,215,121,3,174,7,3,81,120,3,32,8,3,223,17,127,56,212,1,56,43,2,34,63,126,34,192,125,26,145,3,26,110,124,24,75,4,24,180,5,7,121,123,7,134,6,5,55,122,5,200,0,5,128,121,3,138,7,3,117,120,2,242,8,2,13,17,1,43,46,127,43,209,126,33,194,2,33,61,4,25,186,124,25,69,3,23,109,125,23,146,5,6,122,123,6,133,6,3,77,122,3,178,120,2,214,8,2,41,121,2,114,7,2,141,0,2,0,19,127,34,206,1,34,49,126,29,191,2,29,64,124,26,63,4,26,192,125,21,140,3,21,115,5,6,147,123,6,108,7,2,194,121,2,61,6,2,87,122,2,168,120,2,175,8,2,80,0,1,128,119,1,23,9,1,232,17,127,30,204,1,30,51,124,28,60,4,28,195,2,27,60,126,27,195,125,20,136,3,20,119,0,10,128,5,6,149,123,6,106,6,3,108,122,3,147,7,2,216,121,2,39,120,2,125,8,2,130,19,126,28,191,2,28,64,124,27,54,4,27,201,127,27,196,1,27,59,3,22,118,125,22,137,5,5,154,123,5,101,6,3,125,122,3,130,0,3,0,7,2,223,121,2,32,120,1,87,8,1,168,9,1,50,119,1,205,19,126,30,186,2,30,69,124,28,48,4,28,207,127,26,203,1,26,52,3,22,123,125,22,132,5,5,166,123,5,89,7,3,249,121,3,6,6,2,118,122,2,137,8,1,217,120,1,38,0,1,0,9,1,78,119,1,177,17,124,29,43,4,29,212,126,26,187,2,26,68,127,23,199,1,23,56,125,21,130,3,21,125,5,6,183,123,6,72,121,3,241,7,3,14,122,2,108,6,2,147,120,1,19,8,1,236,0,1,0,17,126,30,185,2,30,70,124,28,39,4,28,216,125,20,129,3,20,126,127,18,192,1,18,63,5,5,181,123,5,74,0,3,128,121,3,201,7,3,54,122,2,98,6,2,157,120,1,223,8,1,32,17,126,33,188,2,33,67,124,27,36,4,27,219,3,19,127,125,19,128,127,16,188,1,16,67,123,5,69,5,5,186,121,3,174,7,3,81,120,2,183,8,2,72,122,2,99,6,2,156,0,1,128,17,126,30,189,2,30,66,124,28,32,4,28,223,125,18,125,3,18,130,127,16,189,1,16,66,123,5,54,5,5,201,121,3,143,7,3,112,120,2,148,8,2,107,122,2,82,6,2,173,0,2,0,16,126,33,188,2,33,67,124,28,26,4,28,229,125,19,123,3,19,132,127,15,182,1,15,73,123,6,41,5,6,214,7,2,129,121,2,126,122,2,68,6,2,187,8,1,155,120,1,100,21,2,33,63,126,33,192,124,28,21,4,28,234,125,17,123,3,17,132,127,16,182,1,16,73,123,4,27,5,4,228,7,2,152,121,2,103,122,2,44,6,2,211,120,1,69,8,1,186,9,1,75,119,1,180,0,1,0,118,1,177,10,1,78,21,126,32,192,2,32,63,4,29,240,124,29,15,127,24,188,1,24,67,125,16,118,3,16,137,5,6,234,123,6,21,0,4,0,122,2,18,6,2,237,7,2,188,121,2,67,9,1,87,119,1,168,120,1,253,8,1,2,118,1,176,10,1,79,17,126,35,197,2,35,58,4,30,244,124,30,11,127,21,193,1,21,62,125,16,114,3,16,141,123,6,17,5,6,238,0,5,128,122,3,4,6,3,251,7,2,219,121,2,36,8,2,33,120,2,222,17,4,30,247,124,30,8,126,30,197,2,30,58,127,18,191,1,18,64,125,15,116,3,15,139,123,5,9,5,5,246,122,4,238,6,4,17,0,4,0,120,2,199,8,2,56,7,1,246,121,1,9,17,126,30,197,2,30,58,4,29,251,124,29,4,1,21,53,127,21,202,125,14,112,3,14,143,123,6,249,5,6,6,0,5,128,6,3,29,122,3,226,8,2,99,120,2,156,7,1,25,121,1,230,17,126,32,198,2,32,57,124,29,252,4,29,3,1,21,61,127,21,194,3,12,146,125,12,109,0,8,0,123,6,236,5,6,19,121,2,180,7,2,75,6,2,53,122,2,202,120,2,118,8,2,137,15,126,31,200,2,31,55,4,30,5,124,30,250,1,21,60,127,21,195,125,10,105,3,10,150,123,6,241,5,6,14,0,4,128,6,2,50,122,2,205,8,1,177,120,1,78,16,126,34,200,2,34,55,124,28,245,4,28,10,1,21,55,127,21,200,125,9,104,3,9,151,123,6,222,5,6,33,6,2,76,122,2,179,120,1,34,8,1,221,121,1,142,7,1,113,16,2,29,58,126,29,197,124,29,240,4,29,15,1,22,48,127,22,207,125,10,98,3,10,157,123,6,221,5,6,34,6,2,88,122,2,167,8,1,250,120,1,5,121,1,110,7,1,145,17,126,32,199,2,32,56,124,28,235,4,28,20,127,24,203,1,24,52,125,10,97,3,10,158,5,5,41,123,5,214,6,3,103,122,3,152,121,2,96,7,2,159,8,1,28,120,1,227,0,1,0,16,126,32,197,2,32,58,124,28,233,4,28,22,1,23,45,127,23,210,125,9,103,3,9,152,123,6,202,5,6,53,6,3,117,122,3,138,7,2,171,121,2,84,120,1,183,8,1,72,16,126,31,199,2,31,56,124,28,228,4,28,27,127,21,210,1,21,45,125,9,99,3,9,156,123,5,193,5,5,62,6,3,128,122,3,127,7,2,199,121,2,56,8,1,118,120,1,137,17,126,34,198,2,34,57,124,28,222,4,28,33,127,24,214,1,24,41,125,8,97,3,8,158,123,6,184,5,6,71,6,3,133,122,3,122,7,1,232,121,1,23,120,1,104,8,1,151,0,1,0,17,126,34,200,2,34,55,124,29,219,4,29,36,1,25,35,127,25,220,125,8,95,3,8,160,5,5,76,123,5,179,0,3,128,122,2,101,6,2,154,7,2,250,121,2,5,120,2,62,8,2,193,15,126,36,201,2,36,54,124,30,212,4,30,43,1,22,33,127,22,222,125,7,90,3,7,165,5,6,81,123,6,174,0,3,0,122,3,97,6,3,158,7,2,23,121,2,232,18,126,34,200,2,34,55,124,27,209,4,27,46,1,21,28,127,21,227,125,10,83,3,10,172,5,5,94,123,5,161,122,2,76,6,2,179,7,1,48,121,1,207,8,1,247,120,1,8,119,1,61,9,1,194,15,126,38,200,2,38,55,4,27,50,124,27,205,127,20,225,1,20,30,125,7,96,3,7,159,5,6,99,123,6,156,0,3,128,122,3,68,6,3,187,121,2,153,7,2,102,15,126,33,200,2,33,55,124,27,201,4,27,54,127,16,214,1,16,41,125,7,90,3,7,165,123,5,143,5,5,112,0,4,0,122,2,58,6,2,197,121,1,135,7,1,120,17,126,34,199,2,34,56,124,28,196,4,28,59,127,17,212,1,17,43,125,6,82,3,6,173,5,5,120,123,5,135,0,3,128,122,2,52,6,2,203,7,2,156,121,2,99,120,1,98,8,1,157,17,126,32,198,2,32,57,124,28,191,4,28,64,127,18,205,1,18,50,5,6,121,123,6,134,125,5,83,3,5,172,0,3,0,122,2,18,6,2,237,7,2,169,121,2,86,120,1,69,8,1,186,17,126,31,199,2,31,56,124,27,187,4,27,68,127,18,204,1,18,51,125,7,74,3,7,181,5,6,136,123,6,119,122,3,20,6,3,235,7,2,192,121,2,63,0,1,128,8,1,241,120,1,14,16,2,32,57,126,32,198,124,28,183,4,28,72,1,22,54,127,22,201,125,6,79,3,6,176,5,5,141,123,5,114,122,2,244,6,2,11,7,1,214,121,1,41,120,1,245,8,1,10,15,126,30,199,2,30,56,124,27,179,4,27,76,127,21,200,1,21,55,125,7,81,3,7,174,5,6,152,123,6,103,0,2,0,7,2,242,121,2,13,122,2,241,6,2,14,15,126,31,200,2,31,55,124,27,175,4,27,80,1,20,60,127,20,195,5,6,162,123,6,93,125,6,83,3,6,172,6,2,41,122,2,214,0,1,128,7,1,13,121,1,242,13,126,33,196,2,33,59,4,27,86,124,27,169,127,21,191,1,21,64,123,6,89,5,6,166,125,5,77,3,5,178,0,2,0,6,1,51,122,1,204,17,126,33,198,2,33,57,124,28,164,4,28,91,1,27,61,127,27,194,5,6,174,123,6,81,125,4,77,3,4,178,6,2,60,122,2,195,121,1,192,7,1,63,0,1,128,120,1,93,8,1,162,17,126,33,199,2,33,56,127,28,188,1,28,67,124,27,161,4,27,94,5,6,191,123,6,64,125,4,64,3,4,191,0,2,0,6,2,103,122,2,152,120,1,39,8,1,216,121,1,173,7,1,82,16,126,34,198,2,34,57,127,28,190,1,28,65,124,27,156,4,27,99,123,6,61,5,6,194,125,4,67,3,4,188,6,1,92,122,1,163,121,1,142,7,1,113,8,1,239,120,1,16,15,126,34,197,2,34,58,127,29,191,1,29,64,124,27,151,4,27,104,5,6,204,123,6,51,125,4,68,3,4,187,0,2,128,6,1,119,122,1,136,121,1,112,7,1,143,15,2,34,60,126,34,195,127,31,187,1,31,68,124,28,148,4,28,107,5,6,212,123,6,43,0,3,0,125,2,48,3,2,207,6,1,137,122,1,118,7,1,186,121,1,69,15,126,33,197,2,33,58,127,30,187,1,30,68,124,26,143,4,26,112,123,7,34,5,7,221,125,3,65,3,3,190,0,3,128,122,2,98,6,2,157,7,1,206,121,1,49,17,127,34,187,1,34,68,2,34,58,126,34,197,124,28,140,4,28,115,5,6,236,123,6,19,0,2,0,125,2,39,3,2,216,122,1,102,6,1,153,120,1,124,8,1,131,7,1,12,121,1,243,16,2,33,57,126,33,198,127,32,185,1,32,70,4,26,122,124,26,133,5,7,236,123,7,19,125,3,51,3,3,204,122,1,64,6,1,191,7,1,5,121,1,250,120,1,55,8,1,200,15,127,35,188,1,35,67,2,34,57,126,34,198,124,27,132,4,27,123,5,7,247,123,7,8,125,3,46,3,3,209,0,2,128,121,1,225,7,1,30,122,1,68,6,1,187,15,127,35,188,1,35,67,126,31,195,2,31,60,124,26,127,4,26,128,123,6,249,5,6,6,125,4,34,3,4,221,0,2,0,122,1,47,6,1,208,121,1,193,7,1,62,15,127,36,189,1,36,66,2,31,60,126,31,195,124,27,123,4,27,132,123,6,244,5,6,11,0,1,128,122,1,35,6,1,220,121,1,169,7,1,86,125,1,26,3,1,229,15,127,39,187,1,39,68,2,30,60,126,30,195,124,26,119,4,26,136,123,6,234,5,6,21,0,3,0,125,2,36,3,2,219,121,1,132,7,1,123,122,1,252,6,1,3,13,127,40,189,1,40,66,126,31,196,2,31,59,4,26,141,124,26,114,123,6,226,5,6,29,125,2,254,3,2,1,121,1,112,7,1,143,0,1,128,15,127,39,191,1,39,64,126,32,196,2,32,59,124,26,110,4,26,145,123,6,214,5,6,41,125,2,10,3,2,245,0,1,128,7,1,176,121,1,79,6,1,55,122,1,200,15,1,36,62,127,36,193,2,32,59,126,32,196,124,24,106,4,24,149,123,6,208,5,6,47,0,3,128,125,1,26,3,1,229,7,1,201,121,1,54,6,1,36,122,1,219,13,127,37,191,1,37,64,126,32,194,2,32,61,124,25,100,4,25,155,123,5,203,5,5,52,0,2,0,125,2,243,3,2,12,7,1,225,121,1,30,11,127,32,188,1,32,67,126,31,194,2,31,61,124,24,95,4,24,160,5,5,63,123,5,192,7,1,1,121,1,254,0,1,0,15,127,35,186,1,35,69,126,32,195,2,32,60,124,24,92,4,24,163,123,5,183,5,5,72,0,2,128,125,1,230,3,1,25,121,1,220,7,1,35,6,1,116,122,1,139,14,127,38,186,1,38,69,126,32,194,2,32,61,124,24,89,4,24,166,123,5,171,5,5,84,3,2,57,125,2,198,121,1,206,7,1,49,6,1,107,122,1,148,15,127,39,187,1,39,68,126,32,195,2,32,60,4,24,170,124,24,85,123,6,164,5,6,91,0,3,0,3,2,58,125,2,197,121,1,187,7,1,68,6,1,107,122,1,148,12,127,40,187,1,40,68,2,30,58,126,30,197,124,24,78,4,24,177,5,5,102,123,5,153,3,2,63,125,2,192,121,1,142,7,1,113,13,127,41,188,1,41,67,126,33,196,2,33,59,124,23,75,4,23,180,5,5,108,123,5,147,3,2,70,125,2,185,0,1,0,121,1,149,7,1,106,15,127,41,192,1,41,63,2,31,60,126,31,195,124,23,70,4,23,185,5,5,118,123,5,137,0,3,128,3,2,91,125,2,164,122,1,59,6,1,196,7,1,165,121,1,90,15,127,45,190,1,45,65,126,32,194,2,32,61,124,22,67,4,22,188,5,5,125,123,5,130,3,3,71,125,3,184,0,2,0,120,1,185,8,1,70,6,1,31,122,1,224,13,1,43,62,127,43,193,126,30,194,2,30,61,124,24,62,4,24,193,5,5,134,123,5,121,3,2,62,125,2,193,0,1,128,7,1,215,121,1,40,13,127,44,194,1,44,61,126,31,192,2,31,63,124,22,58,4,22,197,5,4,138,123,4,117,3,4,79,125,4,176,6,1,35,122,1,220,0,1,0,13,127,40,195,1,40,60,126,30,192,2,30,63,124,22,54,4,22,201,5,5,155,123,5,100,3,3,75,125,3,180,0,1,0,122,1,253,6,1,2,13,127,43,195,1,43,60,2,30,63,126,30,192,124,21,48,4,21,207,0,5,128,5,4,163,123,4,92,3,4,65,125,4,190,121,1,206,7,1,49,15,1,42,61,127,42,194,126,30,193,2,30,62,124,22,43,4,22,212,0,6,0,5,5,170,123,5,85,3,4,88,125,4,167,6,1,52,122,1,203,121,1,173,7,1,82,15,1,41,58,127,41,197,2,29,62,126,29,193,124,21,40,4,21,215,0,6,128,5,5,185,123,5,70,3,3,76,125,3,179,121,1,192,7,1,63,6,1,41,122,1,214,15,127,41,196,1,41,59,2,30,62,126,30,193,124,20,36,4,20,219,0,5,0,3,5,90,125,5,165,5,4,191,123,4,64,6,1,55,122,1,200,121,1,182,7,1,73,13,127,37,199,1,37,56,126,29,195,2,29,60,124,21,32,4,21,223,5,5,202,123,5,53,3,3,83,125,3,172,0,2,128,6,1,100,122,1,155,13,127,36,196,1,36,59,2,30,60,126,30,195,124,20,26,4,20,229,5,5,209,123,5,46,3,5,76,125,5,179,0,3,128,6,1,82,122,1,173,11,127,35,194,1,35,61,126,30,195,2,30,60,124,20,22,4,20,233,123,4,36,5,4,219,3,4,80,125,4,175,0,2,0,13,127,34,194,1,34,61,2,30,61,126,30,194,124,20,19,4,20,236,123,4,33,5,4,222,3,3,89,125,3,166,0,1,0,6,1,93,122,1,162,13,127,35,195,1,35,60,2,30,61,126,30,194,4,20,240,124,20,15,3,6,90,125,6,165,123,5,15,5,5,240,6,1,139,122,1,116,0,1,128,13,127,35,194,1,35,61,2,30,60,126,30,195,4,20,244,124,20,11,3,5,90,125,5,165,123,4,12,5,4,243,0,3,128,6,1,137,122,1,118,13,127,32,190,1,32,65,126,30,193,2,30,62,4,20,249,124,20,6,0,7,0,3,5,93,125,5,162,123,4,4,5,4,251,6,1,141,122,1,114,13,127,32,194,1,32,61,126,29,194,2,29,61,124,18,2,4,18,253,0,6,128,3,5,97,125,5,158,123,4,241,5,4,14,122,1,79,6,1,176,11,127,35,191,1,35,64,2,30,62,126,30,193,124,19,252,4,19,3,3,6,99,125,6,156,123,4,234,5,4,21,0,3,0,14,127,34,192,1,34,63,126,29,194,2,29,61,124,18,251,4,18,4,3,5,94,125,5,161,123,4,226,5,4,29,122,1,68,6,1,187,121,1,104,7,1,151,13,127,35,193,1,35,62,126,30,192,2,30,63,124,19,242,4,19,13,3,7,103,125,7,152,123,4,213,5,4,42,0,1,128,122,1,16,6,1,239,11,127,34,194,1,34,61,2,31,63,126,31,192,4,19,16,124,19,239,3,6,108,125,6,147,123,4,203,5,4,52,0,1,0,10,1,34,60,127,34,195,126,30,194,2,30,61,124,18,234,4,18,21,3,6,104,125,6,151,123,5,195,5,5,60,14,127,33,195,1,33,60,2,29,63,126,29,192,124,17,230,4,17,25,125,6,146,3,6,109,123,4,186,5,4,69,7,1,215,121,1,40,122,1,25,6,1,230,11,127,35,194,1,35,61,126,29,193,2,29,62,4,18,28,124,18,227,3,6,115,125,6,140,123,5,175,5,5,80,0,2,128,10,127,33,194,1,33,61,2,29,62,126,29,193,124,17,222,4,17,33,125,7,143,3,7,112,123,5,164,5,5,91,13,127,32,196,1,32,59,126,30,192,2,30,63,124,17,217,4,17,38,125,7,141,3,7,114,123,5,156,5,5,99,6,1,68,122,1,187,0,1,128,11,127,32,196,1,32,59,126,28,190,2,28,65,124,17,214,4,17,41,3,6,121,125,6,134,5,4,114,123,4,141,0,2,0,11,127,32,193,1,32,62,126,28,192,2,28,63,124,16,209,4,16,46,3,6,118,125,6,137,5,4,114,123,4,141,0,2,128,11,127,32,195,1,32,60,126,28,191,2,28,64,124,17,205,4,17,50,125,7,142,3,7,113,5,4,119,123,4,136,0,1,128,11,127,30,193,1,30,62,126,28,192,2,28,63,124,16,201,4,16,54,3,7,122,125,7,133,5,5,134,123,5,121,0,4,0,13,1,28,60,127,28,195,2,27,62,126,27,193,124,15,198,4,15,57,125,7,132,3,7,123,5,5,145,123,5,110,0,4,128,8,1,222,120,1,33,10,127,30,195,1,30,60,126,28,191,2,28,64,124,16,193,4,16,62,3,7,124,125,7,131,5,5,156,123,5,99,11,127,28,197,1,28,58,126,27,190,2,27,65,124,15,191,4,15,64,3,8,124,125,8,131,5,4,158,123,4,97,0,1,0,12,126,26,192,2,26,63,1,24,59,127,24,196,124,14,183,4,14,72,125,8,124,3,8,131,5,5,172,123,5,83,122,1,37,6,1,218,11,126,27,191,2,27,64,127,26,196,1,26,59,124,14,180,4,14,75,125,8,129,3,8,126,5,5,179,123,5,76,0,2,128,11,126,26,190,2,26,65,1,26,62,127,26,193,124,14,174,4,14,81,125,7,126,3,7,129,5,4,193,123,4,62,0,3,0,13,126,25,190,2,25,65,127,24,195,1,24,60,124,14,173,4,14,82,125,8,123,3,8,132,5,4,192,123,4,63,0,2,128,122,1,15,6,1,240,12,126,26,190,2,26,65,127,26,190,1,26,65,124,13,167,4,13,88,125,8,122,3,8,133,5,5,206,123,5,49,122,1,5,6,1,250,11,127,25,190,1,25,65,126,25,192,2,25,63,124,13,163,4,13,92,125,8,117,3,8,138,5,5,214,123,5,41,0,1,128,13,126,26,191,2,26,64,127,26,189,1,26,66,124,14,159,4,14,96,125,8,117,3,8,138,5,4,217,123,4,38,0,1,0,6,1,38,122,1,217,13,126,26,188,2,26,67,127,25,187,1,25,68,124,12,152,4,12,103,125,9,118,3,9,137,5,5,228,123,5,27,0,1,0,7,1,212,121,1,43,11,127,28,187,1,28,68,126,27,188,2,27,67,124,13,152,4,13,103,3,8,138,125,8,117,123,4,13,5,4,242,0,2,128,13,127,26,186,1,26,69,126,26,189,2,26,66,124,12,144,4,12,111,125,9,111,3,9,144,123,4,2,5,4,253,0,2,0,6,1,77,122,1,178,11,127,30,187,1,30,68,126,25,189,2,25,66,4,12,112,124,12,143,125,9,114,3,9,141,123,4,253,5,4,2,0,1,128,12,127,28,186,1,28,69,126,24,190,2,24,65,4,12,118,124,12,137,125,9,115,3,9,140,123,4,240,5,4,15,6,1,105,122,1,150,13,127,28,188,1,28,67,126,25,190,2,25,65,124,12,132,4,12,123,3,10,142,125,10,113,123,4,239,5,4,16,0,2,128,6,1,111,122,1,144,11,127,31,185,1,31,70,126,25,189,2,25,66,124,12,133,4,12,122,125,9,113,3,9,142,123,4,229,5,4,26,0,3,0,11,127,28,186,1,28,69,126,23,190,2,23,65,124,11,126,4,11,129,125,9,108,3,9,147,123,4,220,5,4,35,0,3,128,11,127,31,186,1,31,69,126,25,188,2,25,67,124,11,121,4,11,134,3,9,147,125,9,108,123,4,208,5,4,47,0,1,0,12,1,30,68,127,30,187,126,24,188,2,24,67,124,10,113,4,10,142,125,9,110,3,9,145,123,4,200,5,4,55,122,1,51,6,1,204,11,127,30,187,1,30,68,126,25,189,2,25,66,4,10,147,124,10,108,3,10,150,125,10,105,123,4,193,5,4,62,0,2,128,13,127,27,182,1,27,73,126,23,190,2,23,65,124,11,103,4,11,152,125,10,102,3,10,153,123,4,180,5,4,75,0,2,0,122,1,19,6,1,236,13,127,31,186,1,31,69,126,24,191,2,24,64,4,11,151,124,11,104,3,9,149,125,9,106,5,4,78,123,4,177,0,3,128,6,1,38,122,1,217,11,127,29,184,1,29,71,126,24,189,2,24,66,4,10,159,124,10,96,125,10,101,3,10,154,5,3,91,123,3,164,0,2,0,11,127,28,183,1,28,72,126,24,190,2,24,65,124,10,92,4,10,163,125,9,103,3,9,152,123,4,151,5,4,104,0,1,128,11,1,30,73,127,30,182,126,23,190,2,23,65,3,11,159,125,11,96,124,10,87,4,10,168,5,3,119,123,3,136,0,1,0,11,1,28,75,127,28,180,126,24,190,2,24,65,3,10,158,125,10,97,124,9,79,4,9,176,5,3,121,123,3,134,0,2,128,11,127,32,180,1,32,75,126,24,189,2,24,66,125,10,97,3,10,158,124,10,77,4,10,178,5,3,134,123,3,121,0,3,0,11,127,32,179,1,32,76,126,23,190,2,23,65,125,10,93,3,10,162,124,9,68,4,9,187,5,4,141,123,4,114,0,1,128,12,127,32,178,1,32,77,126,25,191,2,25,64,125,9,95,3,9,160,124,9,66,4,9,189,5,3,143,123,3,112,6,1,81,122,1,174,11,127,34,180,1,34,75,126,24,189,2,24,66,125,10,94,3,10,161,124,9,61,4,9,194,5,3,161,123,3,94,0,2,0,10,127,34,179,1,34,76,126,22,190,2,22,65,3,10,167,125,10,88,124,9,56,4,9,199,5,3,177,123,3,78,11,127,35,180,1,35,75,2,24,63,126,24,192,125,10,88,3,10,167,124,9,51,4,9,204,5,2,177,123,2,78,0,2,128,11,127,37,180,1,37,75,126,23,190,2,23,65,125,10,88,3,10,167,124,9,44,4,9,211,5,3,189,123,3,66,0,2,0,10,127,37,182,1,37,73,126,23,189,2,23,66,125,10,87,3,10,168,124,9,35,4,9,220,5,2,202,123,2,53,11,127,34,180,1,34,75,126,22,190,2,22,65,125,10,83,3,10,172,124,9,33,4,9,222,5,3,207,123,3,48,0,1,0,11,127,36,182,1,36,73,126,22,190,2,22,65,125,10,80,3,10,175,124,8,28,4,8,227,0,3,128,5,2,221,123,2,34,13,127,37,180,1,37,75,126,22,191,2,22,64,125,10,81,3,10,174,124,8,23,4,8,232,0,4,0,5,3,233,123,3,22,6,1,44,122,1,211,11,127,35,180,1,35,75,2,22,64,126,22,191,125,11,80,3,11,175,124,9,20,4,9,235,5,3,230,123,3,25,0,1,128,12,127,40,181,1,40,74,2,24,63,126,24,192,125,9,81,3,9,174,124,8,10,4,8,245,123,2,253,5,2,2,6,1,63,122,1,192,10,127,34,181,1,34,74,126,22,192,2,22,63,125,11,78,3,11,177,4,8,247,124,8,8,5,3,248,123,3,7,13,127,39,183,1,39,72,126,22,191,2,22,64,125,9,75,3,9,180,4,8,0,124,8,255,5,2,12,123,2,243,0,2,128,6,1,68,122,1,187,11,127,35,181,1,35,74,126,21,190,2,21,65,125,12,76,3,12,179,124,8,252,4,8,3,0,5,0,5,3,18,123,3,237,11,127,37,183,1,37,72,2,21,63,126,21,192,125,10,75,3,10,180,124,8,246,4,8,9,0,5,128,123,3,217,5,3,38,11,127,36,181,1,36,74,126,21,189,2,21,66,125,11,69,3,11,186,124,8,244,4,8,11,0,3,0,123,2,218,5,2,37,11,127,37,185,1,37,70,126,21,191,2,21,64,125,10,69,3,10,186,124,8,239,4,8,16,123,2,209,5,2,46,0,1,0,11,127,34,183,1,34,72,126,20,191,2,20,64,125,11,65,3,11,190,124,7,236,4,7,19,123,3,208,5,3,47,0,2,128,11,127,39,183,1,39,72,126,22,190,2,22,65,125,10,66,3,10,189,124,8,225,4,8,30,123,3,191,5,3,64,0,1,0,13,127,34,181,1,34,74,126,20,190,2,20,65,3,11,189,125,11,66,124,7,224,4,7,31,0,3,0,123,2,178,5,2,77,122,1,66,6,1,189,11,127,38,184,1,38,71,126,22,190,2,22,65,125,10,65,3,10,190,124,8,214,4,8,41,0,4,128,123,2,169,5,2,86,11,127,36,183,1,36,72,126,21,188,2,21,67,125,10,62,3,10,193,124,8,210,4,8,45,0,2,0,123,2,155,5,2,100,10,127,36,183,1,36,72,126,21,188,2,21,67,125,10,62,3,10,193,124,8,210,4,8,45,123,2,156,5,2,99,11,127,35,185,1,35,70,126,20,190,2,20,65,125,10,61,3,10,194,124,7,205,4,7,50,123,2,142,5,2,113,0,1,128,11,127,36,183,1,36,72,126,19,189,2,19,66,125,9,56,3,9,199,124,7,199,4,7,56,123,2,132,5,2,123,0,1,0,13,127,34,184,1,34,71,126,18,190,2,18,65,125,10,60,3,10,195,124,7,193,4,7,62,5,2,133,123,2,122,0,1,128,6,1,28,122,1,227,11,127,34,182,1,34,73,126,20,189,2,20,66,125,10,53,3,10,202,124,6,188,4,6,67,123,2,106,5,2,149,0,1,128,11,127,34,179,1,34,76,126,20,188,2,20,67,125,10,56,3,10,199,124,7,180,4,7,75,0,2,0,5,2,160,123,2,95,13,127,36,181,1,36,74,126,19,189,2,19,66,125,10,55,3,10,200,124,7,179,4,7,76,5,2,156,123,2,99,0,1,128,6,1,84,122,1,171,10,127,35,181,1,35,74,126,19,189,2,19,66,125,10,55,3,10,200,4,6,80,124,6,175,5,2,173,123,2,82,10,1,35,73,127,35,182,126,19,187,2,19,68,125,10,51,3,10,204,124,7,168,4,7,87,5,2,189,123,2,66,10,127,34,182,1,34,73,126,18,188,2,18,67,125,9,52,3,9,203,124,6,163,4,6,92,5,1,200,123,1,55,10,127,37,184,1,37,71,126,18,188,2,18,67,125,8,53,3,8,202,4,6,95,124,6,160,5,2,205,123,2,50,10,127,33,185,1,33,70,126,18,187,2,18,68,125,10,49,3,10,206,124,6,151,4,6,104,5,3,201,123,3,54,13,127,35,186,1,35,69,126,17,187,2,17,68,125,9,48,3,9,207,124,6,148,4,6,107,5,2,213,123,2,42,0,1,128,121,1,181,7,1,74,10,127,31,183,1,31,72,126,16,189,2,16,66,125,9,50,3,9,205,4,6,117,124,6,138,5,3,228,123,3,27,13,127,33,187,1,33,68,126,18,186,2,18,69,125,8,43,3,8,212,4,6,109,124,6,146,0,2,128,5,2,241,123,2,14,121,1,179,7,1,76,11,127,30,186,1,30,69,126,16,188,2,16,67,125,9,49,3,9,206,4,5,117,124,5,138,0,3,0,5,2,247,123,2,8,11,127,30,187,1,30,68,126,17,188,2,17,67,125,8,43,3,8,212,4,6,123,124,6,132,0,4,128,123,1,248,5,1,7,11,127,30,185,1,30,70,126,17,188,2,17,67,125,8,42,3,8,213,4,6,133,124,6,122,5,2,11,123,2,244,0,1,0,12,127,28,185,1,28,70,126,16,187,2,16,68,125,8,41,3,8,214,124,6,114,4,6,141,5,2,14,123,2,241,122,1,11,6,1,244,10,127,30,186,1,30,69,126,17,188,2,17,67,125,8,41,3,8,214,124,5,114,4,5,141,123,2,226,5,2,29,11,127,29,185,1,29,70,126,16,188,2,16,67,125,7,36,3,7,219,4,5,151,124,5,104,123,2,215,5,2,40,0,1,0,11,127,29,184,1,29,71,126,15,187,2,15,68,125,8,41,3,8,214,124,5,95,4,5,160,123,2,214,5,2,41,0,1,128,13,127,29,183,1,29,72,126,15,189,2,15,66,125,7,38,3,7,217,4,5,159,124,5,96,123,2,192,5,2,63,0,1,128,6,1,54,122,1,201,11,127,27,181,1,27,74,126,15,189,2,15,66,125,8,37,3,8,218,124,5,91,4,5,164,0,1,0,123,1,180,5,1,75,11,127,30,185,1,30,70,126,15,186,2,15,69,125,7,37,3,7,218,124,5,90,4,5,165,123,2,189,5,2,66,0,1,128,11,127,27,180,1,27,75,126,14,186,2,14,69,125,7,37,3,7,218,124,5,76,4,5,179,0,2,0,123,1,188,5,1,67,11,127,28,182,1,28,73,126,14,189,2,14,66,125,7,33,3,7,222,124,5,74,4,5,181,0,3,128,123,2,162,5,2,93,11,127,27,181,1,27,74,126,14,187,2,14,68,125,7,38,3,7,217,4,4,185,124,4,70,0,1,0,123,1,154,5,1,101,10,127,28,182,1,28,73,126,14,187,2,14,68,125,6,35,3,6,220,124,5,61,4,5,194,123,2,143,5,2,112,10,127,28,184,1,28,71,126,14,187,2,14,68,125,6,27,3,6,228,124,4,53,4,4,202,123,1,142,5,1,113,10,127,26,181,1,26,74,126,12,188,2,12,67,125,7,35,3,7,220,4,5,207,124,5,48,5,1,160,123,1,95,11,127,29,183,1,29,72,126,13,187,2,13,68,125,6,31,3,6,224,124,5,47,4,5,208,5,1,142,123,1,113,0,1,128,11,127,28,183,1,28,72,126,14,189,2,14,66,125,6,29,3,6,226,124,4,41,4,4,214,0,1,0,5,1,143,123,1,112,11,127,27,182,1,27,73,126,12,191,2,12,64,125,5,29,3,5,226,124,5,35,4,5,220,0,1,0,5,1,164,123,1,91,11,1,25,74,127,25,181,2,12,63,126,12,192,125,6,26,3,6,229,124,5,34,4,5,221,0,3,128,5,1,167,123,1,88,15,127,27,181,1,27,74,126,13,190,2,13,65,125,5,22,3,5,233,4,4,232,124,4,23,0,3,0,5,1,152,123,1,103,6,1,52,122,1,203,121,1,154,7,1,101,11,127,27,182,1,27,73,126,12,190,2,12,65,3,6,232,125,6,23,124,4,23,4,4,232,5,1,190,123,1,65,0,1,128,11,127,28,180,1,28,75,126,12,189,2,12,66,125,6,30,3,6,225,4,5,238,124,5,17,5,1,197,123,1,58,0,1,0,11,127,28,181,1,28,74,126,12,191,2,12,64,125,5,29,3,5,226,4,5,241,124,5,14,0,1,128,5,1,220,123,1,35,11,127,27,179,1,27,76,126,12,191,2,12,64,125,5,24,3,5,231,4,5,252,124,5,3,0,1,0,122,1,118,6,1,137,11,1,27,76,127,27,179,126,12,189,2,12,66,124,5,0,4,5,255,125,4,26,3,4,229,0,1,128,5,1,209,123,1,46,11,127,28,178,1,28,77,126,11,190,2,11,65,125,5,21,3,5,234,124,5,250,4,5,5,0,1,0,5,1,251,123,1,4,11,127,28,178,1,28,77,126,11,195,2,11,60,4,5,9,124,5,246,125,5,27,3,5,228,5,1,3,123,1,252,0,1,128,10,127,28,179,1,28,76,2,11,63,126,11,192,124,5,237,4,5,18,125,4,22,3,4,233,5,1,14,123,1,241,10,127,27,179,1,27,76,126,10,192,2,10,63,125,5,26,3,5,229,124,5,238,4,5,17,123,1,236,5,1,19,10,127,29,181,1,29,74,2,12,62,126,12,193,125,5,27,3,5,228,124,5,232,4,5,23,123,1,225,5,1,30,11,1,30,72,127,30,183,2,11,62,126,11,193,124,5,230,4,5,25,125,4,28,3,4,227,0,1,0,123,1,220,5,1,35,11,127,28,183,1,28,72,126,11,191,2,11,64,124,6,223,4,6,32,125,4,28,3,4,227,0,2,128,123,1,217,5,1,38,10,1,27,74,127,27,181,126,11,195,2,11,60,124,5,216,4,5,39,125,5,22,3,5,233,123,1,218,5,1,37,11,127,29,181,1,29,74,126,11,193,2,11,62,124,6,211,4,6,44,125,4,32,3,4,223,0,1,0,123,1,197,5,1,58,11,127,27,183,1,27,72,2,9,59,126,9,196,124,5,211,4,5,44,125,5,26,3,5,229,0,2,128,123,1,191,5,1,64,11,127,28,184,1,28,71,126,10,195,2,10,60,124,5,208,4,5,47,125,5,32,3,5,223,0,1,0,123,1,169,5,1,86,10,127,27,185,1,27,70,126,10,193,2,10,62,125,5,29,3,5,226,124,5,205,4,5,50,123,1,152,5,1,103,11,127,28,184,1,28,71,2,10,60,126,10,195,124,5,199,4,5,56,125,4,22,3,4,233,123,1,144,5,1,111,0,1,128,8,1,25,71,127,25,184,126,9,201,2,9,54,124,5,193,4,5,62,125,5,40,3,5,215,8,127,26,183,1,26,72,126,9,197,2,9,58,4,5,63,124,5,192,125,4,29,3,4,226,10,127,27,182,1,27,73,126,10,197,2,10,58,124,5,185,4,5,70,125,4,29,3,4,226,123,1,130,5,1,125,8,127,27,180,1,27,75,126,10,195,2,10,60,124,5,180,4,5,75,125,5,31,3,5,224,9,127,27,182,1,27,73,126,9,196,2,9,59,124,5,173,4,5,82,125,5,33,3,5,222,0,1,128,9,127,29,181,1,29,74,2,9,59,126,9,196,125,5,39,3,5,216,124,5,170,4,5,85,0,2,0,11,127,27,180,1,27,75,126,9,199,2,9,56,125,5,36,3,5,219,124,5,165,4,5,90,0,1,128,5,1,171,123,1,84,9,127,29,182,1,29,73,2,10,56,126,10,199,124,5,157,4,5,98,125,4,33,3,4,222,0,1,0,8,127,28,180,1,28,75,126,9,202,2,9,53,125,6,33,3,6,222,124,5,156,4,5,99,8,1,28,76,127,28,179,126,10,200,2,10,55,125,5,29,3,5,226,124,5,155,4,5,100,9,1,29,75,127,29,180,126,9,200,2,9,55,125,5,34,3,5,221,124,5,140,4,5,115,0,1,0,8,127,29,178,1,29,77,126,9,201,2,9,54,125,5,28,3,5,227,4,5,111,124,5,144,9,127,29,180,1,29,75,126,9,199,2,9,56,125,5,28,3,5,227,124,5,140,4,5,115,0,1,0,8,127,29,180,1,29,75,126,8,201,2,8,54,125,6,27,3,6,228,4,5,126,124,5,129,8,127,30,179,1,30,76,126,8,200,2,8,55,125,6,27,3,6,228,124,5,125,4,5,130,13,127,30,180,1,30,75,126,8,200,2,8,55,124,5,123,4,5,132,125,4,23,3,4,232,0,1,0,5,1,252,123,1,3,6,1,100,122,1,155,9,1,31,74,127,31,181,126,7,203,2,7,52,125,5,29,3,5,226,124,5,114,4,5,141,0,2,128,9,127,32,179,1,32,76,2,8,52,126,8,203,125,5,26,3,5,229,124,5,114,4,5,141,0,2,0,9,127,32,181,1,32,74,126,8,201,2,8,54,125,6,25,3,6,230,124,5,112,4,5,143,0,1,128,10,127,32,183,1,32,72,126,7,201,2,7,54,4,5,151,124,5,104,125,5,24,3,5,231,123,1,227,5,1,28,11,1,32,74,127,32,181,126,8,200,2,8,55,125,6,31,3,6,224,4,4,159,124,4,96,0,1,0,123,1,197,5,1,58,11,127,33,183,1,33,72,126,9,207,2,9,48,125,5,24,3,5,231,124,4,93,4,4,162,0,1,128,123,1,199,5,1,56,9,127,31,184,1,31,71,126,9,202,2,9,53,125,6,23,3,6,232,124,5,90,4,5,165,0,1,0,9,127,32,182,1,32,73,126,8,206,2,8,49,125,6,19,3,6,236,124,5,82,4,5,173,0,1,128,8,127,31,182,1,31,73,126,8,203,2,8,52,125,6,22,3,6,233,4,5,173,124,5,82,11,127,32,184,1,32,71,126,9,204,2,9,51,125,5,16,3,5,239,124,4,80,4,4,175,123,1,168,5,1,87,0,1,0,9,127,29,185,1,29,70,126,7,201,2,7,54,125,7,20,3,7,235,4,5,184,124,5,71,0,1,128,12,127,32,184,1,32,71,126,9,204,2,9,51,125,6,14,3,6,241,124,5,69,4,5,186,123,1,181,5,1,74,6,1,57,122,1,198,9,127,29,183,1,29,72,126,7,205,2,7,50,125,7,18,3,7,237,124,5,61,4,5,194,0,1,0,13,127,33,185,1,33,70,126,8,204,2,8,51,125,5,9,3,5,246,124,4,54,4,4,201,0,1,128,123,1,166,5,1,89,6,1,58,122,1,197,9,127,32,186,1,32,69,126,7,206,2,7,49,125,6,19,3,6,236,124,5,51,4,5,204,0,1,0,9,127,31,182,1,31,73,2,8,45,126,8,210,125,7,13,3,7,242,124,4,44,4,4,211,0,1,128,9,127,34,183,1,34,72,126,8,205,2,8,50,125,6,9,3,6,246,124,5,44,4,5,211,0,2,0,9,127,32,185,1,32,70,126,7,210,2,7,45,125,7,10,3,7,245,124,5,43,4,5,212,0,2,128,9,1,33,71,127,33,184,126,8,206,2,8,49,125,6,7,3,6,248,124,5,32,4,5,223,0,1,0,9,127,34,184,1,34,71,3,7,250,125,7,5,126,6,209,2,6,46,124,5,32,4,5,223,0,2,0,9,127,33,186,1,33,69,126,7,209,2,7,46,125,6,6,3,6,249,124,5,27,4,5,228,0,2,128,9,127,34,186,1,34,69,126,7,203,2,7,52,125,6,6,3,6,249,124,5,19,4,5,236,0,1,0,8,127,33,187,1,33,68,125,7,3,3,7,252,2,6,51,126,6,204,124,5,20,4,5,235,9,127,34,187,1,34,68,126,7,208,2,7,47,125,6,254,3,6,1,4,5,242,124,5,13,0,1,0,9,127,31,188,1,31,67,125,8,254,3,8,1,126,6,214,2,6,41,4,5,243,124,5,12,0,2,128,9,127,33,188,1,33,67,126,7,212,2,7,43,125,7,250,3,7,5,4,5,250,124,5,5,0,1,0,10,127,30,187,1,30,68,2,7,42,126,7,213,3,7,253,125,7,2,124,5,5,4,5,250,5,1,250,123,1,5,9,127,31,186,1,31,69,2,7,46,126,7,209,125,7,249,3,7,6,124,6,249,4,6,6,0,1,128,9,127,30,188,1,30,67,126,7,209,2,7,46,125,7,251,3,7,4,124,5,249,4,5,6,0,1,0,8,127,31,189,1,31,66,125,7,246,3,7,9,126,6,209,2,6,46,124,5,242,4,5,13,9,127,30,188,1,30,67,125,7,251,3,7,4,126,6,214,2,6,41,124,5,239,4,5,16,0,1,0,9,127,31,188,1,31,67,126,7,208,2,7,47,125,7,245,3,7,10,124,5,236,4,5,19,0,1,128,9,127,32,190,1,32,65,125,7,248,3,7,7,126,6,213,2,6,42,4,4,23,124,4,232,0,1,0,9,127,30,190,1,30,65,125,7,246,3,7,9,126,6,211,2,6,44,4,5,27,124,5,228,0,1,0,9,127,31,191,1,31,64,125,7,242,3,7,13,126,6,213,2,6,42,124,5,224,4,5,31,0,1,128,8,127,31,191,1,31,64,125,7,243,3,7,12,126,6,218,2,6,37,124,5,223,4,5,32,9,127,29,192,1,29,63,125,7,242,3,7,13,2,6,42,126,6,213,124,5,216,4,5,39,0,1,128,9,127,27,192,1,27,63,125,7,235,3,7,20,126,5,211,2,5,44,124,5,207,4,5,48,0,3,0,9,1,28,62,127,28,193,125,6,237,3,6,18,124,5,202,4,5,53,126,5,211,2,5,44,0,3,128,11,1,29,64,127,29,191,125,7,238,3,7,17,126,6,216,2,6,39,124,5,202,4,5,53,0,1,0,123,1,158,5,1,97,8,127,27,193,1,27,62,3,6,15,125,6,240,126,6,221,2,6,34,124,4,197,4,4,58,8,127,29,192,1,29,63,3,7,22,125,7,233,126,5,212,2,5,43,124,5,194,4,5,61,8,1,28,62,127,28,193,125,7,237,3,7,18,124,4,198,4,4,57,126,4,215,2,4,40,11,127,27,191,1,27,64,125,6,236,3,6,19,124,4,185,4,4,70,2,4,36,126,4,219,0,1,128,5,1,183,123,1,72,9,127,27,189,1,27,66,3,7,23,125,7,232,126,6,218,2,6,37,124,5,182,4,5,73,0,1,0,10,1,28,63,127,28,192,3,6,26,125,6,229,126,6,219,2,6,36,124,5,182,4,5,73,7,1,15,121,1,240,8,127,27,192,1,27,63,125,7,233,3,7,22,2,5,38,126,5,217,124,5,171,4,5,84,10,127,26,192,1,26,63,3,7,27,125,7,228,2,6,40,126,6,215,124,5,166,4,5,89,5,1,178,123,1,77,10,1,25,63,127,25,192,125,6,225,3,6,30,126,5,224,2,5,31,124,4,162,4,4,93,5,1,207,123,1,48,8,127,28,190,1,28,65,125,6,223,3,6,32,126,6,219,2,6,36,124,4,163,4,4,92,8,127,25,191,1,25,64,3,7,30,125,7,225,126,5,223,2,5,32,124,4,157,4,4,98,8,127,26,192,1,26,63,3,7,38,125,7,217,126,5,223,2,5,32,4,4,101,124,4,154,8,127,26,191,1,26,64,3,6,32,125,6,223,126,6,222,2,6,33,124,4,153,4,4,102,9,127,25,192,1,25,63,125,7,223,3,7,32,126,6,225,2,6,30,4,4,114,124,4,141,0,2,128,8,127,24,192,1,24,63,125,7,216,3,7,39,126,6,224,2,6,31,124,4,135,4,4,120,8,1,21,62,127,21,193,3,6,40,125,6,215,126,5,222,2,5,33,124,3,131,4,3,124,9,127,22,191,1,22,64,3,7,41,125,7,214,126,6,227,2,6,28,124,3,134,4,3,121,0,1,128,10,127,21,191,1,21,64,3,7,43,125,7,212,126,6,223,2,6,32,124,4,126,4,4,129,123,1,229,5,1,26,8,127,19,191,1,19,64,3,6,40,125,6,215,126,6,233,2,6,22,124,4,119,4,4,136,8,127,20,188,1,20,67,3,7,43,125,7,212,126,5,227,2,5,28,124,4,117,4,4,138,10,127,22,188,1,22,67,3,7,49,125,7,206,126,5,228,2,5,27,4,3,148,124,3,107,123,1,210,5,1,45,8,127,21,188,1,21,67,3,6,49,125,6,206,126,4,230,2,4,25,4,3,157,124,3,98,9,127,22,187,1,22,68,3,7,49,125,7,206,126,5,230,2,5,25,124,4,116,4,4,139,0,1,0,9,127,22,188,1,22,67,3,6,52,125,6,203,126,5,231,2,5,24,124,3,100,4,3,155,0,1,128,10,127,22,186,1,22,69,3,7,51,125,7,204,126,5,233,2,5,22,4,4,158,124,4,97,123,1,197,5,1,58,9,127,21,187,1,21,68,3,7,52,125,7,203,126,5,237,2,5,18,124,4,92,4,4,163,0,1,0,8,127,22,186,1,22,69,3,6,56,125,6,199,126,6,229,2,6,26,124,3,95,4,3,160,8,127,23,188,1,23,67,3,7,57,125,7,198,126,5,228,2,5,27,124,3,83,4,3,172,8,127,23,188,1,23,67,3,7,59,125,7,196,126,5,239,2,5,16,124,3,81,4,3,174,8,127,23,188,1,23,67,3,7,61,125,7,194,2,5,19,126,5,236,124,3,75,4,3,180,9,127,22,188,1,22,67,3,6,59,125,6,196,126,4,230,2,4,25,124,2,74,4,2,181,0,1,128,9,127,24,187,1,24,68,3,6,59,125,6,196,126,6,233,2,6,22,124,2,66,4,2,189,0,1,0,9,127,24,187,1,24,68,3,6,60,125,6,195,2,5,17,126,5,238,124,2,68,4,2,187,0,1,0,9,127,24,186,1,24,69,125,6,188,3,6,67,126,6,233,2,6,22,124,2,56,4,2,199,0,1,128,8,127,24,189,1,24,66,3,6,67,125,6,188,126,5,232,2,5,23,124,2,51,4,2,204,8,127,24,190,1,24,65,3,6,70,125,6,185,2,6,18,126,6,237,124,2,47,4,2,208,8,127,23,189,1,23,66,3,6,68,125,6,187,126,5,233,2,5,22,124,2,41,4,2,214,9,127,23,190,1,23,65,125,6,181,3,6,74,126,5,238,2,5,17,124,2,37,4,2,218,0,1,128,9,127,22,188,1,22,67,3,6,74,125,6,181,126,5,234,2,5,21,124,3,43,4,3,212,0,1,0,9,127,23,188,1,23,67,125,7,177,3,7,78,126,5,236,2,5,19,124,2,33,4,2,222,0,1,0,9,127,22,189,1,22,66,125,6,179,3,6,76,126,5,232,2,5,23,124,2,21,4,2,234,0,1,128,8,127,24,187,1,24,68,125,6,178,3,6,77,126,4,242,2,4,13,4,2,235,124,2,20,9,127,24,186,1,24,69,3,6,81,125,6,174,126,5,233,2,5,22,124,2,19,4,2,236,0,1,0,9,127,23,189,1,23,66,3,6,82,125,6,173,126,5,234,2,5,21,124,2,16,4,2,239,0,1,128,8,127,24,190,1,24,65,125,7,170,3,7,85,126,6,233,2,6,22,4,2,246,124,2,9,9,127,23,191,1,23,64,2,6,8,126,6,247,3,5,88,125,5,167,4,2,250,124,2,5,0,1,128,11,127,24,189,1,24,66,3,6,86,125,6,169,126,5,241,2,5,14,124,2,3,4,2,252,0,1,0,6,1,43,122,1,212,9,127,23,191,1,23,64,126,6,240,2,6,15,3,6,86,125,6,169,124,2,243,4,2,12,0,1,128,9,127,23,191,1,23,64,126,6,229,2,6,26,3,5,95,125,5,160,124,2,249,4,2,6,0,1,0,8,127,25,190,1,25,65,2,6,22,126,6,233,3,6,89,125,6,166,124,2,253,4,2,2,9,127,24,189,1,24,66,126,5,236,2,5,19,3,5,89,125,5,166,124,1,241,4,1,14,0,1,128,8,127,23,190,1,23,65,3,7,94,125,7,161,126,6,235,2,6,20,124,1,223,4,1,32,8,127,23,190,1,23,65,126,6,231,2,6,24,3,5,97,125,5,158,124,2,234,4,2,21,8,127,25,191,1,25,64,3,6,97,125,6,158,126,5,238,2,5,17,124,2,221,4,2,34,9,127,24,190,1,24,65,126,6,236,2,6,19,3,6,100,125,6,155,124,2,233,4,2,22,0,1,0,9,127,24,191,1,24,64,126,5,232,2,5,23,3,5,102,125,5,153,124,2,223,4,2,32,0,1,128,8,127,26,190,1,26,65,126,5,236,2,5,19,3,5,101,125,5,154,124,1,213,4,1,42,8,127,24,191,1,24,64,2,5,17,126,5,238,3,5,104,125,5,151,124,2,222,4,2,33,8,127,25,192,1,25,63,126,5,232,2,5,23,3,5,111,125,5,144,124,2,215,4,2,40,8,127,27,191,1,27,64,126,5,234,2,5,21,3,5,106,125,5,149,4,2,49,124,2,206,8,1,26,62,127,26,193,126,6,230,2,6,25,3,4,107,125,4,148,124,1,198,4,1,57,9,127,26,194,1,26,61,2,6,11,126,6,244,3,5,113,125,5,142,0,2,128,124,1,210,4,1,45,9,127,28,195,1,28,60,3,4,115,125,4,140,2,4,20,126,4,235,0,1,0,124,1,193,4,1,62,8,127,27,196,1,27,59,3,5,117,125,5,138,126,5,238,2,5,17,124,1,180,4,1,75,8,127,27,193,1,27,62,126,5,238,2,5,17,3,4,112,125,4,143,124,1,183,4,1,72,8,1,26,58,127,26,197,125,5,134,3,5,121,126,4,239,2,4,16,124,2,185,4,2,70,9,127,26,199,1,26,56,126,4,242,2,4,13,125,3,138,3,3,117,0,1,128,124,1,182,4,1,73,9,1,25,57,127,25,198,2,4,24,126,4,231,125,3,124,3,3,131,0,2,0,4,1,85,124,1,170,9,127,25,199,1,25,56,2,5,14,126,5,241,125,4,131,3,4,124,0,2,128,124,1,173,4,1,82,8,127,25,201,1,25,54,125,5,135,3,5,120,2,5,9,126,5,246,124,1,169,4,1,86,9,127,25,199,1,25,56,2,4,16,126,4,239,125,4,128,3,4,127,0,2,0,124,1,158,4,1,97,8,127,26,198,1,26,57,126,5,235,2,5,20,125,3,124,3,3,131,124,1,164,4,1,91,8,1,25,57,127,25,198,2,6,12,126,6,243,125,3,127,3,3,128,124,2,156,4,2,99,9,1,26,57,127,26,198,2,5,18,126,5,237,125,2,121,3,2,134,124,1,155,4,1,100,0,1,128,9,127,24,200,1,24,55,126,5,241,2,5,14,125,3,121,3,3,134,124,1,140,4,1,115,0,1,0,8,127,24,201,1,24,54,126,5,241,2,5,14,125,3,121,3,3,134,4,1,112,124,1,143,9,1,23,53,127,23,202,126,5,248,2,5,7,125,2,118,3,2,137,124,1,144,4,1,111,0,1,128,8,1,25,54,127,25,201,126,6,246,2,6,9,125,2,127,3,2,128,124,1,140,4,1,115,9,1,22,53,127,22,202,126,5,253,2,5,2,125,3,106,3,3,149,124,1,108,4,1,147,0,1,0,11,127,23,202,1,23,53,126,5,247,2,5,8,125,2,119,3,2,136,0,1,128,4,1,123,124,1,132,123,1,187,5,1,68,9,127,23,200,1,23,55,126,5,251,2,5,4,125,2,102,3,2,153,0,1,0,124,1,121,4,1,134,8,127,23,199,1,23,56,2,5,7,126,5,248,125,2,108,3,2,147,4,1,144,124,1,111,8,127,22,202,1,22,53,126,4,247,2,4,8,125,2,110,3,2,145,4,1,130,124,1,125,8,127,23,204,1,23,51,126,4,244,2,4,11,125,2,103,3,2,152,124,1,111,4,1,144,9,127,24,201,1,24,54,126,4,249,2,4,6,125,2,99,3,2,156,4,1,144,124,1,111,0,1,0,8,127,23,203,1,23,52,126,4,248,2,4,7,125,2,92,3,2,163,124,1,120,4,1,135,9,127,24,201,1,24,54,2,4,12,126,4,243,125,1,101,3,1,154,0,1,0,124,1,125,4,1,130,9,127,24,203,1,24,52,126,5,5,2,5,250,125,2,92,3,2,163,0,1,128,124,1,92,4,1,163,9,127,24,204,1,24,51,126,4,249,2,4,6,125,2,94,3,2,161,0,1,128,124,1,92,4,1,163,9,1,22,50,127,22,205,126,4,254,2,4,1,0,1,0,125,1,88,3,1,167,124,1,80,4,1,175,8,127,23,205,1,23,50,2,4,255,126,4,0,125,2,82,3,2,173,124,1,86,4,1,169,8,1,24,53,127,24,202,126,4,250,2,4,5,125,1,96,3,1,159,124,1,88,4,1,167,8,127,22,203,1,22,52,126,4,250,2,4,5,125,1,88,3,1,167,124,1,62,4,1,193,7,127,23,203,1,23,52,126,4,248,2,4,7,0,1,0,125,1,89,3,1,166,9,127,23,205,1,23,50,126,4,3,2,4,252,0,2,128,125,1,89,3,1,166,124,1,77,4,1,178,8,127,22,203,1,22,52,126,5,249,2,5,6,125,1,57,3,1,198,124,1,38,4,1,217,6,127,22,208,1,22,47,126,5,250,2,5,5,124,1,42,4,1,213,9,127,22,208,1,22,47,126,5,252,2,5,3,125,1,57,3,1,198,124,1,63,4,1,192,0,1,128,9,1,20,50,127,20,205,126,4,254,2,4,1,0,1,0,4,1,210,124,1,45,125,1,68,3,1,187,7,127,21,206,1,21,49,126,4,0,2,4,255,0,1,128,125,1,61,3,1,194,7,127,21,204,1,21,51,126,5,249,2,5,6,0,1,0,124,1,43,4,1,212,4,127,22,206,1,22,49,126,5,245,2,5,10,8,127,22,203,1,22,52,2,5,8,126,5,247,124,1,34,4,1,221,125,1,47,3,1,208,7,127,21,206,1,21,49,2,5,8,126,5,247,124,1,30,4,1,225,0,1,128,7,127,20,209,1,20,46,126,4,252,2,4,3,4,1,225,124,1,30,0,1,128,7,127,21,207,1,21,48,126,4,251,2,4,4,124,1,16,4,1,239,0,1,0,6,127,21,210,1,21,45,2,5,253,126,5,2,124,1,22,4,1,233,6,1,22,48,127,22,207,126,5,253,2,5,2,4,1,223,124,1,32,7,1,20,46,127,20,209,126,4,250,2,4,5,0,1,128,125,1,20,3,1,235,9,127,19,207,1,19,48,126,5,3,2,5,252,0,1,0,124,1,249,4,1,6,3,1,251,125,1,4,4,1,20,49,127,20,206,126,5,248,2,5,7,6,127,20,205,1,20,50,2,4,255,126,4,0,4,1,235,124,1,20,9,127,21,206,1,21,49,126,4,254,2,4,1,0,1,128,124,1,229,4,1,26,3,1,12,125,1,243,7,127,20,205,1,20,50,2,5,254,126,5,1,0,2,0,124,1,255,4,1,0,7,127,20,204,1,20,51,126,5,4,2,5,251,0,1,128,124,1,244,4,1,11,9,127,21,205,1,21,50,126,6,253,2,6,2,4,1,16,124,1,239,3,1,34,125,1,221,0,1,128,6,127,20,209,1,20,46,126,5,1,2,5,254,124,1,241,4,1,14,9,127,20,207,1,20,48,126,5,248,2,5,7,0,1,0,3,1,18,125,1,237,124,1,235,4,1,20,7,127,20,209,1,20,46,126,6,252,2,6,3,0,1,128,124,1,229,4,1,26,4,127,19,208,1,19,47,126,4,251,2,4,4,6,127,19,208,1,19,47,126,3,247,2,3,8,3,1,28,125,1,227,6,127,18,207,1,18,48,2,4,4,126,4,251,3,1,36,125,1,219,6,127,18,205,1,18,50,2,6,254,126,6,1,124,1,203,4,1,52,9,127,18,208,1,18,47,126,5,248,2,5,7,0,1,128,124,1,217,4,1,38,3,1,45,125,1,210,7,127,17,208,1,17,47,2,4,6,126,4,249,0,2,0,124,1,206,4,1,49,7,127,20,208,1,20,47,126,3,246,2,3,9,3,1,41,125,1,214,0,1,128,6,1,20,48,127,20,207,126,4,249,2,4,6,3,1,63,125,1,192,6,127,19,207,1,19,48,126,4,246,2,4,9,124,1,195,4,1,60,9,127,20,205,1,20,50,126,5,249,2,5,6,3,1,62,125,1,193,124,1,177,4,1,78,0,1,0,7,127,19,207,1,19,48,126,5,254,2,5,1,3,1,63,125,1,192,0,1,128,6,127,20,207,1,20,48,126,5,251,2,5,4,3,1,80,125,1,175,6,127,19,208,1,19,47,126,5,250,2,5,5,3,1,55,125,1,200,6,127,19,208,1,19,47,126,5,252,2,5,3,3,1,77,125,1,178,6,127,20,209,1,20,46,126,4,247,2,4,8,3,1,67,125,1,188,6,1,21,48,127,21,207,2,5,8,126,5,247,3,1,72,125,1,183,6,127,20,208,1,20,47,2,4,254,126,4,1,3,1,54,125,1,201,6,127,22,212,1,22,43,126,4,248,2,4,7,3,1,78,125,1,177,6,127,22,209,1,22,46,126,4,5,2,4,250,3,1,67,125,1,188,6,127,20,211,1,20,44,2,4,253,126,4,2,3,1,93,125,1,162,8,127,21,211,1,21,44,126,4,253,2,4,2,3,2,92,125,2,163,124,1,156,4,1,99,7,127,21,211,1,21,44,2,4,248,126,4,7,3,2,86,125,2,169,0,1,128,6,127,20,212,1,20,43,126,4,252,2,4,3,125,2,163,3,2,92,7,1,20,44,127,20,211,2,3,246,126,3,9,3,1,94,125,1,161,0,1,128,9,127,21,210,1,21,45,126,3,248,2,3,7,3,3,91,125,3,164,0,1,0,124,1,139,4,1,116,9,127,21,210,1,21,45,126,4,7,2,4,248,3,2,105,125,2,150,0,1,128,4,1,114,124,1,141,6,127,21,209,1,21,46,126,4,7,2,4,248,3,2,99,125,2,156,6,1,20,44,127,20,211,2,4,3,126,4,252,3,2,96,125,2,159,8,127,22,213,1,22,42,126,4,255,2,4,0,125,3,140,3,3,115,4,1,158,124,1,97,7,127,20,211,1,20,44,126,3,249,2,3,6,125,3,141,3,3,114,0,1,0,7,127,20,212,1,20,43,2,3,250,126,3,5,3,3,103,125,3,152,0,1,128,7,127,20,211,1,20,44,126,4,253,2,4,2,3,2,112,125,2,143,0,1,0,6,127,21,214,1,21,41,2,4,254,126,4,1,125,3,132,3,3,123,7,127,20,214,1,20,41,2,4,246,126,4,9,125,2,139,3,2,116,0,1,128,6,127,21,214,1,21,41,125,3,144,3,3,111,126,3,249,2,3,6,9,127,21,214,1,21,41,125,3,135,3,3,120,2,3,250,126,3,5,0,1,0,124,1,81,4,1,174,6,127,21,210,1,21,45,125,4,134,3,4,121,126,3,254,2,3,1,6,127,23,212,1,23,43,125,3,128,3,3,127,2,3,7,126,3,248,6,127,22,212,1,22,43,125,3,129,3,3,126,126,3,250,2,3,5,6,1,22,40,127,22,215,126,3,254,2,3,1,125,3,126,3,3,129,6,127,21,217,1,21,38,126,3,15,2,3,240,125,2,119,3,2,136,8,127,22,214,1,22,41,125,3,130,3,3,125,126,3,4,2,3,251,124,1,50,4,1,205,7,127,21,216,1,21,39,125,4,127,3,4,128,126,3,10,2,3,245,0,1,0,7,127,23,217,1,23,38,125,4,120,3,4,135,126,3,253,2,3,2,0,1,128,9,127,22,217,1,22,38,125,4,115,3,4,140,126,2,11,2,2,244,0,1,0,122,1,59,6,1,196,7,127,24,217,1,24,38,125,3,120,3,3,135,2,2,10,126,2,245,0,1,128,11,127,23,217,1,23,38,125,4,112,3,4,143,2,3,244,126,3,11,0,1,0,124,1,50,4,1,205,5,1,198,123,1,57,7,127,23,218,1,23,37,125,4,113,3,4,142,126,3,11,2,3,244,0,1,128,7,127,22,219,1,22,36,2,4,253,126,4,2,125,4,112,3,4,143,0,1,128,7,1,21,33,127,21,222,2,4,241,126,4,14,125,4,107,3,4,148,0,1,0,6,1,23,36,127,23,219,126,4,12,2,4,243,125,4,104,3,4,151,6,127,21,221,1,21,34,125,4,106,3,4,149,2,3,251,126,3,4,7,127,23,220,1,23,35,125,4,97,3,4,158,2,3,252,126,3,3,0,1,128,7,127,21,222,1,21,33,125,4,102,3,4,153,2,3,251,126,3,4,0,1,0,6,127,21,221,1,21,34,125,4,98,3,4,157,2,3,0,126,3,255,7,127,21,221,1,21,34,125,4,98,3,4,157,126,4,10,2,4,245,0,1,128,8,127,20,222,1,20,33,125,4,92,3,4,163,126,3,5,2,3,250,124,1,252,4,1,3,7,127,21,220,1,21,35,125,4,91,3,4,164,2,3,242,126,3,13,0,1,0,7,127,21,221,1,21,34,126,3,4,2,3,251,125,3,90,3,3,165,0,1,128,6,127,20,223,1,20,32,126,3,11,2,3,244,125,3,86,3,3,169,6,127,19,223,1,19,32,125,4,84,3,4,171,126,3,11,2,3,244,6,127,20,219,1,20,36,125,3,87,3,3,168,2,3,253,126,3,2,7,127,19,225,1,19,30,126,4,16,2,4,239,125,4,79,3,4,176,0,1,128,6,127,19,223,1,19,32,125,4,76,3,4,179,2,2,243,126,2,12,6,127,19,222,1,19,33,126,3,13,2,3,242,125,3,76,3,3,179,7,1,19,30,127,19,225,125,4,72,3,4,183,126,3,14,2,3,241,0,1,128,6,127,19,225,1,19,30,125,3,74,3,3,181,126,3,2,2,3,253,6,127,19,226,1,19,29,125,4,75,3,4,180,126,3,23,2,3,232,8,1,20,31,127,20,224,125,3,73,3,3,182,2,2,255,126,2,0,124,1,194,4,1,61,7,1,19,31,127,19,224,126,3,19,2,3,236,125,3,71,3,3,184,0,1,128,8,1,17,32,127,17,223,126,3,4,2,3,251,125,2,75,3,2,180,124,1,165,4,1,90,6,127,18,224,1,18,31,125,3,60,3,3,195,126,2,11,2,2,244,6,1,17,30,127,17,225,125,4,63,3,4,192,126,3,17,2,3,238,8,127,19,223,1,19,32,2,2,254,126,2,1,125,2,58,3,2,197,4,1,71,124,1,184,6,127,18,227,1,18,28,125,3,64,3,3,191,2,3,246,126,3,9,9,1,19,30,127,19,225,126,3,14,2,3,241,125,3,57,3,3,198,0,1,0,124,1,176,4,1,79,6,127,18,225,1,18,30,125,3,56,3,3,199,2,3,240,126,3,15,9,127,19,222,1,19,33,126,3,2,2,3,253,125,3,51,3,3,204,124,1,165,4,1,90,0,1,128,7,1,19,33,127,19,222,126,2,253,2,2,2,3,2,209,125,2,46,0,2,0,7,1,18,31,127,18,224,2,3,238,126,3,17,125,2,47,3,2,208,0,1,128,7,127,18,223,1,18,32,2,3,251,126,3,4,125,2,45,3,2,210,0,1,128,7,127,17,225,1,17,30,126,3,254,2,3,1,125,2,47,3,2,208,0,1,0,7,127,17,227,1,17,28,126,3,12,2,3,243,125,2,51,3,2,204,0,1,0,7,1,17,32,127,17,223,125,2,31,3,2,224,2,2,253,126,2,2,0,1,128,6,127,16,224,1,16,31,126,2,6,2,2,249,3,2,222,125,2,33,7,127,16,225,1,16,30,2,3,2,126,3,253,3,2,228,125,2,27,0,1,0,6,127,17,225,1,17,30,126,4,8,2,4,247,125,2,39,3,2,216,6,127,17,223,1,17,32,2,3,238,126,3,17,125,2,32,3,2,223,6,127,17,222,1,17,33,2,3,244,126,3,11,125,2,31,3,2,224,6,127,16,223,1,16,32,126,3,11,2,3,244,125,2,36,3,2,219,6,1,15,35,127,15,220,126,3,6,2,3,249,125,2,32,3,2,223,6,127,16,219,1,16,36,2,3,251,126,3,4,3,1,230,125,1,25,6,127,17,221,1,17,34,126,3,15,2,3,240,125,2,32,3,2,223,6,1,17,34,127,17,221,126,2,5,2,2,250,3,2,238,125,2,17,7,127,17,224,1,17,31,2,3,250,126,3,5,3,1,238,125,1,17,0,1,128,7,1,18,30,127,18,225,126,3,253,2,3,2,3,1,249,125,1,6,0,1,0,6,127,18,224,1,18,31,2,3,244,126,3,11,125,1,14,3,1,241,6,127,17,226,1,17,29,2,2,242,126,2,13,3,1,241,125,1,14,8,1,17,30,127,17,225,2,3,247,126,3,8,3,1,243,125,1,12,124,1,73,4,1,182,6,127,17,222,1,17,33,2,3,248,126,3,7,3,1,247,125,1,8,6,127,15,224,1,15,31,126,3,4,2,3,251,3,1,251,125,1,4,9,127,16,226,1,16,29,126,2,11,2,2,244,0,2,128,3,1,246,125,1,9,124,1,66,4,1,189,9,127,15,220,1,15,35,0,3,0,126,2,14,2,2,241,3,1,243,125,1,12,124,1,57,4,1,198,9,127,16,223,1,16,32,126,2,22,2,2,233,0,2,128,3,1,4,125,1,251,124,1,40,4,1,215,7,127,16,219,1,16,36,126,2,18,2,2,237,0,1,0,3,1,7,125,1,248,6,127,17,222,1,17,33,2,2,242,126,2,13,3,1,0,125,1,255,6,127,18,219,1,18,36,126,2,17,2,2,238,3,1,13,125,1,242,6,127,17,222,1,17,33,126,2,33,2,2,222,3,1,250,125,1,5,6,127,18,217,1,18,38,126,2,17,2,2,238,3,1,23,125,1,232,7,127,19,221,1,19,34,126,2,20,2,2,235,3,1,14,125,1,241,0,1,128,9,127,17,222,1,17,33,126,2,16,2,2,239,3,1,14,125,1,241,124,1,25,4,1,230,0,1,0,7,127,18,223,1,18,32,126,2,14,2,2,241,0,1,128,3,1,26,125,1,229,4,127,18,223,1,18,32,126,2,17,2,2,238,6,127,18,222,1,18,33,126,2,8,2,2,247,4,1,254,124,1,1,8,127,19,223,1,19,32,126,2,20,2,2,235,4,1,252,124,1,3,3,1,18,125,1,237,6,1,20,31,127,20,224,126,2,12,2,2,243,124,1,253,4,1,2,7,127,20,222,1,20,33,126,2,21,2,2,234,0,1,0,3,1,41,125,1,214,7,127,21,223,1,21,32,126,2,18,2,2,237,0,1,128,3,1,41,125,1,214,5,127,19,226,1,19,29,126,3,18,2,3,237,0,1,128,9,127,21,224,1,21,31,2,2,244,126,2,11,3,1,46,125,1,209,121,1,193,7,1,62,0,1,0,4,1,18,26,127,18,229,126,2,14,2,2,241,7,127,19,228,1,19,27,126,2,1,2,2,254,0,2,128,3,1,28,125,1,227,5,127,18,228,1,18,27,126,2,17,2,2,238,0,1,0,6,127,19,225,1,19,30,2,3,236,126,3,19,124,1,212,4,1,43,7,127,20,225,1,20,30,126,2,9,2,2,246,0,1,0,124,1,207,4,1,48,6,127,22,226,1,22,29,126,2,7,2,2,248,124,1,217,4,1,38,4,127,21,228,1,21,27,126,2,9,2,2,246,6,127,21,229,1,21,26,126,2,15,2,2,240,4,1,42,124,1,213,5,1,21,24,127,21,231,2,2,235,126,2,20,0,1,128,5,127,19,234,1,19,21,126,2,26,2,2,229,0,1,128,7,127,19,230,1,19,25,2,2,253,126,2,2,0,1,0,124,1,184,4,1,71,5,127,20,233,1,20,22,126,2,35,2,2,220,0,1,128,6,127,20,231,1,20,24,126,1,23,2,1,232,124,1,182,4,1,73,7,127,20,232,1,20,23,126,2,20,2,2,235,0,2,0,124,1,195,4,1,60,5,1,20,21,127,20,234,0,2,128,126,2,18,2,2,237,5,127,18,232,1,18,23,126,2,19,2,2,236,0,1,0,4,127,19,232,1,19,23,2,1,235,126,1,20,5,127,20,232,1,20,23,2,2,236,126,2,19,0,1,128,6,127,19,235,1,19,20,126,2,18,2,2,237,124,1,162,4,1,93,4,1,20,23,127,20,232,2,2,233,126,2,22,7,127,21,232,1,21,23,126,2,17,2,2,238,0,1,128,124,1,155,4,1,100,4,127,19,235,1,19,20,2,3,238,126,3,17,5,127,19,233,1,19,22,126,2,5,2,2,250,0,1,0,4,127,19,233,1,19,22,126,3,24,2,3,231,4,127,19,233,1,19,22,126,3,17,2,3,238,4,1,20,20,127,20,235,126,2,8,2,2,247,6,127,21,233,1,21,22,126,3,16,2,3,239,124,1,125,4,1,130,4,127,21,237,1,21,18,126,3,21,2,3,234,6,1,19,17,127,19,238,126,3,25,2,3,230,124,1,116,4,1,139,5,127,19,235,1,19,20,126,3,9,2,3,246,0,1,128,4,127,18,238,1,18,17,126,3,16,2,3,239,5,127,18,238,1,18,17,126,2,16,2,2,239,0,1,0,5,1,19,15,127,19,240,2,3,232,126,3,23,0,1,128,5,1,19,15,127,19,240,126,2,19,2,2,236,0,2,0,6,127,19,238,1,19,17,126,3,21,2,3,234,124,1,92,4,1,163,5,1,21,16,127,21,239,126,2,15,2,2,240,0,1,128,8,127,20,240,1,20,15,126,2,30,2,2,225,4,1,180,124,1,75,125,1,77,3,1,178,4,127,18,236,1,18,19,126,2,25,2,2,230,5,127,19,236,1,19,19,126,2,13,2,2,242,0,1,128,7,127,19,243,1,19,12,126,3,32,2,3,223,0,1,128,124,1,71,4,1,184,5,127,18,240,1,18,15,2,2,230,126,2,25,0,1,0,7,1,19,13,127,19,242,126,2,24,2,2,231,0,1,128,124,1,71,4,1,184,8,127,16,243,1,16,12,126,2,32,2,2,223,3,1,201,125,1,54,124,1,58,4,1,197,4,127,17,239,1,17,16,126,1,10,2,1,245,4,127,17,241,1,17,14,126,2,26,2,2,229,4,127,17,239,1,17,16,126,2,28,2,2,227,4,1,17,17,127,17,238,126,2,22,2,2,233,5,1,16,16,127,16,239,126,2,5,2,2,250,0,1,128,6,127,17,239,1,17,16,126,2,12,2,2,243,125,1,54,3,1,201,6,127,18,239,1,18,16,2,2,235,126,2,20,124,1,28,4,1,227,6,127,18,240,1,18,15,126,2,14,2,2,241,124,1,8,4,1,247,5,1,16,14,127,16,241,2,2,231,126,2,24,0,1,0,7,127,17,243,1,17,12,126,2,11,2,2,244,0,2,128,124,1,25,4,1,230,5,127,17,243,1,17,12,126,2,13,2,2,242,0,1,0,7,127,16,240,1,16,15,126,2,12,2,2,243,0,1,0,3,1,217,125,1,38,5,1,16,15,127,16,240,126,2,6,2,2,249,0,1,128,4,1,16,14,127,16,241,2,2,238,126,2,17,7,1,17,16,127,17,239,126,2,35,2,2,220,0,1,0,124,1,230,4,1,25,7,1,18,17,127,18,238,126,2,15,2,2,240,0,1,128,124,1,250,4,1,5,6,127,17,239,1,17,16,126,2,28,2,2,227,3,1,214,125,1,41,6,127,16,239,1,16,16,126,2,19,2,2,236,124,1,219,4,1,36,6,127,18,242,1,18,13,126,1,15,2,1,240,124,1,224,4,1,31,7,127,17,244,1,17,11,126,2,25,2,2,230,0,1,128,3,1,224,125,1,31,4,127,15,243,1,15,12,2,2,230,126,2,25,4,1,16,13,127,16,242,2,2,231,126,2,24,6,1,16,13,127,16,242,2,2,229,126,2,26,124,1,198,4,1,57,4,127,16,241,1,16,14,2,2,236,126,2,19,6,1,15,12,127,15,243,126,2,28,2,2,227,3,1,237,125,1,18,8,127,15,239,1,15,16,126,1,27,2,1,228,4,1,79,124,1,176,3,1,241,125,1,14,9,127,16,240,1,16,15,126,2,9,2,2,246,0,1,128,124,1,193,4,1,62,3,1,249,125,1,6,7,1,15,10,127,15,245,126,1,23,2,1,232,0,1,0,3,1,239,125,1,16,7,127,17,243,1,17,12,126,1,22,2,1,233,0,1,128,124,1,168,4,1,87,5,127,15,241,1,15,14,2,2,228,126,2,27,0,1,0,6,127,16,239,1,16,16,126,1,19,2,1,236,4,1,90,124,1,165,8,1,15,15,127,15,240,126,2,28,2,2,227,3,1,5,125,1,250,4,1,108,124,1,147,6,1,16,15,127,16,240,126,1,27,2,1,228,124,1,166,4,1,89,6,127,15,243,1,15,12,126,2,22,2,2,233,3,1,224,125,1,31,8,127,15,244,1,15,11,126,1,26,2,1,229,124,1,153,4,1,102,3,1,3,125,1,252,4,127,16,244,1,16,11,126,1,22,2,1,233,4,127,15,243,1,15,12,126,1,21,2,1,234,8,127,16,243,1,16,12,126,1,23,2,1,232,124,1,152,4,1,103,3,1,11,125,1,244,8,127,16,247,1,16,8,2,1,232,126,1,23,3,1,13,125,1,242,4,1,118,124,1,137,8,127,16,245,1,16,10,126,1,20,2,1,235,3,1,56,125,1,199,124,1,145,4,1,110,8,127,16,246,1,16,9,126,2,25,2,2,230,124,1,127,4,1,128,3,1,5,125,1,250,6,127,16,246,1,16,9,126,2,30,2,2,225,124,1,110,4,1,145,6,127,17,244,1,17,11,2,2,244,126,2,11,124,1,137,4,1,118,4,127,17,249,1,17,6,126,2,34,2,2,221,4,127,17,246,1,17,9,126,1,21,2,1,234,5,127,16,243,1,16,12,126,2,36,2,2,219,0,1,0,6,127,16,244,1,16,11,126,2,24,2,2,231,124,1,101,4,1,154,8,127,16,245,1,16,10,126,2,20,2,2,235,3,1,22,125,1,233,124,1,84,4,1,171,6,1,16,8,127,16,247,2,2,235,126,2,20,124,1,86,4,1,169,7,127,17,245,1,17,10,126,1,26,2,1,229,0,1,0,124,1,95,4,1,160,6,127,18,244,1,18,11,126,2,40,2,2,215,124,1,73,4,1,182,6,127,17,243,1,17,12,126,2,14,2,2,241,124,1,76,4,1,179,6,127,17,247,1,17,8,2,2,233,126,2,22,3,1,13,125,1,242,6,127,17,247,1,17,8,126,2,42,2,2,213,124,1,63,4,1,192,8,127,17,245,1,17,10,126,1,26,2,1,229,4,1,186,124,1,69,3,1,49,125,1,206,6,127,16,248,1,16,7,126,1,21,2,1,234,3,1,23,125,1,232,4,1,17,7,127,17,248,126,2,28,2,2,227,9,127,16,248,1,16,7,126,2,29,2,2,226,124,1,43,4,1,212,3,1,40,125,1,215,0,1,128,6,1,17,7,127,17,248,2,1,233,126,1,22,3,1,37,125,1,218,6,127,19,248,1,19,7,126,2,33,2,2,222,4,1,238,124,1,17,6,127,17,248,1,17,7,126,2,30,2,2,225,124,1,38,4,1,217,7,1,18,6,127,18,249,126,2,25,2,2,230,0,1,128,3,1,46,125,1,209,4,127,18,250,1,18,5,2,2,222,126,2,33,6,1,17,5,127,17,250,126,1,29,2,1,226,3,1,46,125,1,209,5,127,17,251,1,17,4,2,2,236,126,2,19,0,1,128,8,127,17,253,1,17,2,126,2,16,2,2,239,124,1,18,4,1,237,3,1,45,125,1,210,6,127,17,253,1,17,2,126,2,27,2,2,228,124,1,13,4,1,242,9,127,17,252,1,17,3,126,1,16,2,1,239,0,1,0,125,1,197,3,1,58,4,1,12,124,1,243,9,1,17,3,127,17,252,126,2,17,2,2,238,3,1,19,125,1,236,0,1,128,124,1,255,4,1,0,8,127,18,252,1,18,3,126,2,9,2,2,246,125,1,193,3,1,62,4,1,18,124,1,237,8,1,18,4,127,18,251,126,1,31,2,1,224,124,1,2,4,1,253,3,1,33,125,1,222,6,127,16,250,1,16,5,126,2,29,2,2,226,124,1,248,4,1,7,6,127,16,251,1,16,4,2,2,236,126,2,19,125,1,191,3,1,64,6,127,17,252,1,17,3,126,1,21,2,1,234,125,1,196,3,1,59,5,127,17,253,1,17,2,126,2,2,2,2,253,0,1,128,6,127,16,1,1,16,254,126,1,23,2,1,232,124,1,235,4,1,20,4,127,17,254,1,17,1,126,1,24,2,1,231,4,127,17,255,1,17,0,126,2,28,2,2,227,4,1,17,253,127,17,2,126,2,28,2,2,227,4,1,16,3,127,16,252,126,1,28,2,1,227,8,127,16,249,1,16,6,126,1,20,2,1,235,124,1,191,4,1,64,125,1,188,3,1,67,5,1,17,253,127,17,2,126,2,25,2,2,230,0,1,128,9,127,16,253,1,16,2,126,2,18,2,2,237,124,1,175,4,1,80,125,1,174,3,1,81,0,1,0,8,1,17,3,127,17,252,126,2,9,2,2,246,124,1,176,4,1,79,125,1,175,3,1,80,8,127,18,254,1,18,1,126,2,29,2,2,226,125,1,195,3,1,60,124,1,170,4,1,85,4,127,16,1,1,16,254,126,2,37,2,2,218,8,127,16,253,1,16,2,2,1,244,126,1,11,124,1,178,4,1,77,125,1,178,3,1,77,5,127,17,1,1,17,254,126,1,21,2,1,234,0,1,0,6,127,16,2,1,16,253,126,2,23,2,2,232,125,1,166,3,1,89,9,127,16,1,1,16,254,2,2,253,126,2,2,125,1,176,3,1,79,0,1,128,124,1,161,4,1,94,6,127,17,7,1,17,248,2,2,221,126,2,34,122,1,71,6,1,184,5,1,15,248,127,15,7,2,2,216,126,2,39,0,1,0,6,1,15,255,127,15,0,2,1,236,126,1,19,125,1,170,3,1,85,4,1,14,250,127,14,5,126,3,34,2,3,221,7,1,14,255,127,14,0,126,2,6,2,2,249,125,1,161,3,1,94,0,1,128,5,1,16,251,127,16,4,0,1,0,126,1,12,2,1,243,7,127,16,3,1,16,252,126,2,33,2,2,222,0,1,128,124,1,124,4,1,131,7,127,15,5,1,15,250,0,1,128,126,1,21,2,1,234,124,1,119,4,1,136,5,127,14,9,1,14,246,0,2,0,126,1,45,2,1,210,4,127,13,6,1,13,249,126,1,37,2,1,218,7,1,14,252,127,14,3,0,2,128,2,1,253,126,1,2,125,1,167,3,1,88,7,1,14,246,127,14,9,0,2,0,126,2,51,2,2,204,4,1,151,124,1,104,4,1,13,250,127,13,5,126,1,15,2,1,240,8,127,13,4,1,13,251,126,1,30,2,1,225,125,1,161,3,1,94,124,1,90,4,1,165,5,127,13,5,1,13,250,126,1,25,2,1,230,0,1,128,7,1,12,252,127,12,3,126,1,32,2,1,223,0,1,0,125,1,144,3,1,111,4,127,12,4,1,12,251,126,1,25,2,1,230,4,127,13,2,1,13,253,126,1,22,2,1,233,5,1,12,254,127,12,1,2,1,233,126,1,22,0,1,0,5,127,13,253,1,13,2,2,1,243,126,1,12,0,1,128,4,1,13,253,127,13,2,126,1,27,2,1,228,6,127,13,3,1,13,252,126,1,30,2,1,225,125,1,131,3,1,124,7,127,13,4,1,13,251,126,1,31,2,1,224,0,1,0,124,1,54,4,1,201,4,127,14,4,1,14,251,126,1,11,2,1,244,4,127,14,6,1,14,249,126,1,45,2,1,210,6,127,14,6,1,14,249,126,1,33,2,1,222,4,1,212,124,1,43,6,127,13,4,1,13,251,126,1,14,2,1,241,125,1,152,3,1,103,6,127,13,8,1,13,247,126,2,41,2,2,214,124,1,53,4,1,202,6,127,12,3,1,12,252,2,1,251,126,1,4,125,1,155,3,1,100,5,1,13,250,127,13,5,126,1,36,2,1,219,0,1,0,5,127,13,2,1,13,253,0,1,128,126,1,15,2,1,240,5,127,13,4,1,13,251,0,1,0,2,1,219,126,1,36,5,127,13,2,1,13,253,0,1,128,2,1,239,126,1,16,4,127,13,9,1,13,246,126,1,32,2,1,223,4,127,12,3,1,12,252,126,1,22,2,1,233,4,127,13,254,1,13,1,126,1,14,2,1,241,7,127,14,4,1,14,251,126,2,35,2,2,220,0,1,128,4,1,250,124,1,5,5,127,12,2,1,12,253,2,1,237,126,1,18,0,1,0,4,1,13,254,127,13,1,126,1,22,2,1,233,4,1,14,252,127,14,3,126,1,20,2,1,235,6,127,14,6,1,14,249,126,1,23,2,1,232,125,1,99,3,1,156,6,127,14,1,1,14,254,2,1,236,126,1,19,4,1,48,124,1,207,4,127,14,7,1,14,248,126,1,28,2,1,227,4,127,14,6,1,14,249,126,1,23,2,1,232,4,127,14,7,1,14,248,126,1,34,2,1,221,4,127,13,6,1,13,249,126,1,18,2,1,237,6,127,14,7,1,14,248,126,1,4,2,1,251,124,1,180,4,1,75,4,1,15,248,127,15,7,126,1,32,2,1,223,6,1,14,251,127,14,4,2,1,237,126,1,18,124,1,178,4,1,77,5,1,14,250,127,14,5,126,1,16,2,1,239,0,1,128,5,1,14,248,127,14,7,126,1,38,2,1,217,0,1,0,4,1,14,251,127,14,4,126,1,34,2,1,221,5,127,14,3,1,14,252,2,1,231,126,1,24,0,1,128,5,1,14,250,127,14,5,126,1,10,2,1,245,0,1,0,5,1,16,246,127,16,9,0,1,128,2,1,245,126,1,10,6,1,16,246,127,16,9,126,1,34,2,1,221,3,1,164,125,1,91,7,127,14,8,1,14,247,126,1,35,2,1,220,0,1,0,3,1,189,125,1,66,5,1,13,252,127,13,3,126,1,247,2,1,8,0,1,0,5,1,16,251,127,16,4,2,1,249,126,1,6,0,1,128,5,127,17,7,1,17,248,2,1,229,126,1,26,0,1,128,5,127,15,10,1,15,245,126,1,29,2,1,226,0,1,0,5,1,16,245,127,16,10,0,1,128,126,1,19,2,1,236,5,1,15,241,127,15,14,0,1,0,126,1,20,2,1,235,5,127,16,12,1,16,243,0,2,128,126,1,23,2,1,232,5,127,14,8,1,14,247,0,2,0,126,1,7,2,1,248,5,127,17,9,1,17,246,0,1,128,2,1,242,126,1,13,5,127,15,12,1,15,243,126,1,41,2,1,214,0,1,0,4,127,15,8,1,15,247,126,1,249,2,1,6,4,127,15,14,1,15,241,126,1,28,2,1,227,5,1,16,245,127,16,10,126,1,12,2,1,243,0,1,128,5,1,16,248,127,16,7,126,1,24,2,1,231,0,1,0,5,127,16,10,1,16,245,2,1,242,126,1,13,0,1,128,4,127,17,11,1,17,244,126,1,8,2,1,247,4,1,17,243,127,17,12,126,1,21,2,1,234,5,127,17,13,1,17,242,0,1,128,2,1,235,126,1,20,4,127,17,16,1,17,239,126,1,18,2,1,237,4,1,17,238,127,17,17,126,1,32,2,1,223,4,1,15,240,127,15,15,126,1,31,2,1,224,4,127,14,15,1,14,240,126,1,23,2,1,232,4,127,14,14,1,14,241,126,1,10,2,1,245,4,127,14,13,1,14,242,126,1,18,2,1,237,5,127,15,17,1,15,238,0,1,128,2,1,239,126,1,16,3,1,14,238,127,14,17,0,1,0,4,127,14,17,1,14,238,2,1,222,126,1,33,4,127,13,18,1,13,237,126,1,22,2,1,233];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment