Skip to content

Instantly share code, notes, and snippets.

@flipflop
Created January 29, 2019 13:34
Show Gist options
  • Save flipflop/867f73e12ab58e88ca6b6bf07c0e6af6 to your computer and use it in GitHub Desktop.
Save flipflop/867f73e12ab58e88ca6b6bf07c0e6af6 to your computer and use it in GitHub Desktop.
SCRIPT-8
{
"0": {
"0": {
"0": 0,
"1": 10,
"2": 20
},
"1": {
"0": 1,
"1": 11,
"2": 21
},
"2": {
"0": 2,
"1": 12,
"2": 22
},
"3": {
"0": 1,
"1": 11,
"2": 21
},
"4": {
"0": 3,
"1": 12,
"2": 22
},
"5": {
"0": 4,
"1": 13,
"2": 23
},
"6": {
"0": 5,
"1": 14,
"2": 24
},
"7": {
"0": 4,
"1": 13,
"2": 23
},
"8": {
"0": 6,
"1": 15,
"2": 25
},
"9": {
"0": 4,
"1": 13,
"2": 23
},
"10": {
"0": 5,
"1": 14,
"2": 24
},
"11": {
"0": 4,
"1": 13,
"2": 23
},
"12": {
"0": 6,
"1": 15,
"2": 25
},
"13": {
"0": 7,
"1": 16,
"2": 26
},
"14": {
"0": 8,
"1": 17,
"2": 26
},
"15": {
"0": 7,
"1": 16,
"2": 26
}
},
"1": {
"0": {
"0": 60
}
}
}
// title: los hermanos bros.
const { PI, atan2, ceil, floor, min, max, sign, abs, round } = Math
const rad2Deg = ø => (ø * 180) / PI
const spriteSprite = (a, b) => {
const r1RightEdgePastR2Left = a.x + 8 >= b.x
const r1LeftEdgePastR2Right = a.x <= b.x + 8
const r1TopEdgePastR2Bottom = a.y + 8 >= b.y
const r1BottomEdgePastR2Top = a.y <= b.y + 8
const collision =
r1RightEdgePastR2Left &&
r1LeftEdgePastR2Right &&
r1TopEdgePastR2Bottom &&
r1BottomEdgePastR2Top
// If we had a collision, try to find the side.
if (collision) {
let side
const angle = rad2Deg(atan2(b.y - a.y, a.x - b.x))
if (angle > 30 && angle < 180 - 30) {
side = 'top'
} else {
side = 'other'
}
return side
} else {
return false
}
}
const e = {
mario: {
maxDx: 0.75,
maxDy: 4,
ddx: 0.25,
bounceBonus: 95
}
}
const sprites = {
mario: {
idle: [...range(21).map(d => 0), 7],
walk: [1, 2, 3, 4, 5, 6],
prejump: [8],
jump: [9],
fall: [10],
postfall: [8],
dying: [8]
},
goomba: {
idle: [...range(21).map(d => 11), 12],
walk: [13, 14]
},
smallcloud: {
drift: [[[39, 41], [55, 57]]]
}
}
const fsm = new StateMachine({
init: 'idle',
transitions: [
{ name: 'leftright', from: 'idle', to: 'walk' },
{ name: 'noleftright', from: 'walk', to: 'idle' },
{ name: 'a', from: 'idle', to: 'prejump' },
{ name: 'a', from: 'walk', to: 'prejump' },
{ name: 'sinkholed', from: 'idle', to: 'fall' },
{ name: 'sinkholed', from: 'walk', to: 'fall' },
{ name: 'launch', from: 'prejump', to: 'jump' },
{ name: 'falling', from: 'jump', to: 'fall' },
{ name: 'landed', from: 'fall', to: 'postfall' },
{ name: 'bounce', from: 'fall', to: 'prejump' },
{ name: 'recovered', from: 'postfall', to: 'idle' },
{ name: 'touchEnemy', from: 'idle', to: 'dying' },
{ name: 'touchEnemy', from: 'walk', to: 'dying' },
{ name: 'died', from: 'dying', to: 'idle' }
]
})
const initialActors = [
{
name: 'smallcloud',
x: 20,
y: 32,
dx: -1/32,
mode: 'drift',
counter: 0,
flip: false
},
{
name: 'mario',
counter: 0,
x: 20,
y: 104,
dx: 0,
dy: 0,
mode: 'idle',
flip: false,
isOnGround: true
},
{
name: 'goomba',
enemy: true,
instances: [
{
x: 128 * 2 - 8,
y: 104,
dx: 0,
marioX: 120,
counter: 0,
mode: 'walk',
flip: true
},
{
x: 256 + 32,
y: 104,
dx: 0,
marioX: 256,
counter: 0,
mode: 'walk',
flip: true
}
]
}
]
initialState = {
mode: 'title',
checks: [],
counter: 0,
score: 0,
lives: 0,
coins: 0,
elapsed: 0,
actors: [...initialActors]
}
const scanTileV = ({ x, y, dy, up }) => {
const start = (up ? floor(y / 8) : ceil(y / 8) + 1) * 8
const end = (up ? floor((y + dy) / 8) : ceil((y + dy) / 8) + 1) * 8
for (let i = start; up ? i >= end : i <= end; i += up ? -8 : 8) {
const tileX = floor(x / 8)
const tileY = i / 8
const blockingTiles = (x % 8 === 0
? [tile(tileX, tileY)]
: [tile(tileX, tileY), tile(tileX + 1, tileY)]
).filter(d => d && d[8] === 1)
if (blockingTiles.length) {
return { tile: blockingTiles[0], y: i }
}
}
return null
}
const scanTileH = ({ x, dx, y, left }) => {
const start = (left ? floor(x / 8) : ceil(x / 8) + 1) * 8
const end = (left ? floor((x + dx) / 8) : ceil((x + dx) / 8) + 1) * 8
if (left && end <= 0) {
return { x: -8 }
}
for (let i = start; left ? i >= end : i <= end; i += left ? -8 : 8) {
const tileX = i / 8
const tileY = floor(y / 8)
const blockingTiles = (y % 8 === 0
? [tile(tileX, tileY)]
: [tile(tileX, tileY), tile(tileX, tileY + 1)]
).filter(d => d && d[8] === 1)
if (blockingTiles.length) {
return { tile: blockingTiles[0], x: i }
}
}
return null
}
const moveMarioHorizontally = ({ state, input }) => {
const mario = state.actors.find(d => d.name === 'mario')
let { x, dx, y } = mario
const { maxDx, ddx } = e.mario
if (input.left) {
dx = clamp(dx - ddx, -maxDx, maxDx)
mario.flip = true
} else if (input.right) {
dx = clamp(dx + ddx, -maxDx, maxDx)
mario.flip = false
} else {
dx = sign(dx) * max(abs(dx) - 0.125, 0)
}
// Scan left or right and stop at first tile.
if (dx < 0) {
const blockingTile = scanTileH({ x, dx, y, left: true })
if (blockingTile) {
const distanceToCollider = blockingTile.x - x + 8
dx = max(distanceToCollider, dx)
}
} else if (dx > 0) {
const blockingTile = scanTileH({ x, dx, y })
if (blockingTile) {
const distanceToCollider = blockingTile.x - x - 8
dx = min(distanceToCollider, dx)
}
}
mario.x = x
mario.dx = dx
// Move x by dx.
mario.x += mario.dx
}
const moveEnemies = state => {
const enemies = state.actors.filter(d => d.enemy)
const mario = state.actors.find(d => d.name === 'mario')
enemies.forEach(actor => {
actor.instances.forEach(d => {
if (d.x <= -8) {
d.remove = true
}
if (mario.x >= d.marioX) {
d.dx = -0.25
}
state.counter % 10 === 0 && d.counter++
d.x += d.dx
})
})
}
const isOnGround = ({ x, y }) => {
// If the y-coordinate isn't at a multiple of 8,
// we're obviously not on ground.
if (floor(y) % 8 !== 0) {
return false
} else {
const tiles = (x % 8 === 0
? [tile(floor(x / 8), floor(y / 8) + 1)]
: [
tile(floor(x / 8), floor(y / 8) + 1),
tile(floor(x / 8) + 1, floor(y / 8) + 1)
]
).filter(d => d && d[8] === 1)
return tiles.length
}
}
const collideWithEnemies = ({ state }) => {
const mario = state.actors.find(d => d.name === 'mario')
const enemies = state.actors.filter(d => d.enemy)
// Check if we're colliding with an enemy.
enemies.forEach(d => {
d.instances
.filter(d => !d.remove)
.forEach(actor => {
const collision = spriteSprite(mario, actor)
if (collision) {
if (collision === 'top') {
state.score += 100
actor.remove = true
if (fsm.can('bounce')) {
playPhrase(61)
fsm.bounce()
mario.dy -= e.mario.bounceBonus / 100
}
} else {
// Handle touching an enemy, which at the moment means:
// setting game mode to death,
// decreasing lives,
// and launching mario in the air.
if (fsm.can('touchEnemy')) {
fsm.touchEnemy()
state.mode = 'death'
--state.lives
mario.dy = -e.mario.maxDy
playSong(1)
}
}
}
})
})
}
const moveClouds = state => {
const cloud = state.actors.find(d => d.name === 'smallcloud')
const mario = state.actors.find(d => d.name === 'mario')
cloud.x += cloud.dx
if (cloud.x < -15) {
cloud.x = 127
cloud.y = random(6, 54)
}
}
const moveMario = ({ state, input }) => {
const mario = state.actors.find(d => d.name === 'mario')
if (fsm.state === 'idle') {
// Move horizontally.
moveMarioHorizontally({ state, input })
// Increase mario counter (for spriting).
state.counter % 6 === 0 && mario.counter++
// Disallow idling on air.
mario.isOnGround = isOnGround(mario)
!mario.isOnGround && fsm.can('sinkholed') && fsm.sinkholed()
// Handle left / right press.
if (input.left || input.right) {
fsm.can('leftright') && fsm.leftright()
}
// Handle jumping.
if (input.a && fsm.can('a')) {
fsm.a()
}
} else if (fsm.state === 'walk') {
// Move horizontally.
moveMarioHorizontally({ state, input })
// Increase mario counter (for spriting).
state.counter % 4 === 0 && mario.counter++
// Disallow walking on air.
mario.isOnGround = isOnGround(mario)
!mario.isOnGround && fsm.can('sinkholed') && fsm.sinkholed()
// Handle not pressing left or right.
if (!input.left && !input.right) {
fsm.can('noleftright') && fsm.noleftright()
}
// If we're pressing `a`, and we can fire the `a` event,
if (input.a && fsm.can('a')) {
// fire it.
fsm.a()
}
} else if (fsm.state === 'prejump') {
moveMarioHorizontally({ state, input })
// Set jump velocity.
mario.dy = -e.mario.maxDy
// Go to launch after one cycle here.
++mario.counter === 2 && fsm.can('launch') && fsm.launch()
} else if (fsm.state === 'jump') {
moveMarioHorizontally({ state, input })
const prevDy = mario.dy
// Decrease jump speed.
mario.dy = min(mario.dy + 0.25, e.mario.maxDy)
// Scan up and stop at first tile.
const blockingTile = scanTileV({ ...mario, up: true })
if (blockingTile) {
const distanceToCollider = blockingTile.y - mario.y + 8
mario.dy = max(distanceToCollider, mario.dy)
}
// If we've gone from going up to going down, switch to falling mode.
if (prevDy < 0 && mario.dy >= 0) {
fsm.can('falling') && fsm.falling()
}
// Move mario.
mario.y += mario.dy
} else if (fsm.state === 'fall') {
moveMarioHorizontally({ state, input })
// Decrease fall speed.
mario.dy = min(mario.dy + 0.25, e.mario.maxDy)
// Scan down and stop at first tile.
const blockingTile = scanTileV(mario)
if (blockingTile) {
const distanceToCollider = blockingTile.y - mario.y - 8
mario.dy = min(distanceToCollider, mario.dy)
}
// Move mario.
mario.y += mario.dy
// Check if we're on the ground.
mario.isOnGround = isOnGround(mario)
// If we are, switch to landed mode.
mario.isOnGround && fsm.can('landed') && fsm.landed()
} else if (fsm.state === 'postfall') {
moveMarioHorizontally({ state, input })
mario.dy = 0
++mario.counter === 3 && fsm.can('recovered') && fsm.recovered()
} else if (fsm.state === 'dying') {
// Make mario fall.
if (state.counter % 3 === 0) {
mario.dy = min(mario.dy + 0.25, e.mario.maxDy)
mario.y += mario.dy
}
// Make mario flip.
if (state.counter % 3 === 0) {
mario.flip = !mario.flip
}
// If mario goes past the bottom screen, fire died event.
if (mario.y % 128 < 10 && fsm.can('died')) {
fsm.died()
// Reset actors
state.actors = [...initialActors]
// and reset game counter.
state.counter = 0
// If we still have lives left, change mode to preplay.
// Otherwise go to gameover.
state.mode = state.lives < 1 ? 'gameover' : 'preplay'
}
}
// If we changed states,
if (fsm.state !== mario.mode) {
// reset counter.
mario.counter = 0
}
mario.mode = fsm.state
}
update = (state, input, elapsed) => {
state.checks = []
if (state.mode === 'play') {
state.elapsed += elapsed
state.counter++
moveEnemies(state)
moveMario({ state, input })
collideWithEnemies({ state })
moveClouds(state)
} else if (state.mode === 'death') {
state.counter++
moveMario({ state, input })
moveClouds(state)
} else if (state.mode === 'preplay') {
if (state.counter++ > 60 * 2) {
state.mode = 'play'
playSong(0, true)
}
} else if (state.mode === 'gameover') {
if (state.counter++ > 60 * 3) {
state.mode = 'title'
}
} else if (state.mode === 'title') {
state.counter++
moveMario({ state, input: {} })
moveClouds(state)
if (input.left || input.right || input.a) {
state.counter = 0
state.lives = 3
state.mode = 'preplay'
}
}
}
drawActors = (state, fade) => {
state.actors.forEach(actor => {
if (actor.instances) {
actor.instances
.filter(d => !d.remove)
.forEach(d => {
drawActor({
...d,
name: actor.name
})
})
} else {
drawActor(actor)
}
})
}
const drawActor = actor => {
const cycle = sprites[actor.name][actor.mode]
const step = cycle[actor.counter % cycle.length]
if (Array.isArray(step)) {
// Here, step is a grid. Let's go over each entry.
step.forEach((row, rowIndex) => {
row.forEach((cell, col) => {
sprite(actor.x + 8 * col, actor.y + 8 * rowIndex, cell, 0, actor.flip)
})
})
} else {
sprite(actor.x, actor.y, step, 0, actor.flip)
}
}
const drawTopBar = state => {
camera(0)
rectFill(0, 0, 128, 8, 7) // clear
sprite(-1, 1, 0) // mario head
print(8, 1, state.lives.toString().padStart(2, '0'), 0) // lives
sprite(32, 1, 48) // coin sprite
print(39, 1, state.coins.toString().padStart(2, '0'), 0) // coins
sprite(64, 1, 64) // time sprite
print(71, 1, round(state.elapsed / 1000), 0) // time
print(101, 1, state.score.toString().padStart(7, '0'), 0) // score
rectFill(0, 6, 128, 8, 7) // clear bottom
}
const drawLivesScreen = state => {
const mario = state.actors.find(d => d.name === 'mario')
camera(0)
clear()
print(52, 52, `world ${ceil(mario.y / 128)}`, 0)
sprite(51, 65, 0) // mario
print(63, 67, `x ${state.lives.toString().padStart(2, '0')}`, 0)
}
draw = state => {
const mario = state.actors.find(d => d.name === 'mario')
const cloud = state.actors.find(d => d.name === 'smallcloud')
if (state.mode === 'play' || state.mode === 'death') {
drawTopBar(state)
camera()
rectFill(0, 8, 128, 120, 6)
drawActors({
actors: state.actors.filter(d => d.name === 'smallcloud')
})
const cameraX = floor((mario.x + 4) / 128) * 128
camera(cameraX)
map()
drawActors({
actors: state.actors.filter(d => d.name !== 'smallcloud')
})
}
if (state.mode === 'preplay') {
drawLivesScreen(state)
drawTopBar(state)
}
if (state.mode === 'gameover') {
camera()
clear()
print(48, 62, 'game over', 0)
drawTopBar(state)
}
if (state.mode === 'title') {
drawTopBar(state)
const cameraX = floor((mario.x + 4) / 128) * 128
camera(cameraX)
rectFill(cameraX, 8, 128, 120, 6)
map()
drawActors(state)
rectFill(29, 34, 70, 25, 1)
rectFill(30, 35, 70, 25, 5)
rectFill(30, 35, 69, 24, 3)
rectFill(99, 34, 1, 1, 4)
rectFill(29, 59, 1, 1, 4)
print(35, 40, 'los', 0)
print(35, 48, 'hermanos bros.', 0)
print(35, 68, 'left / right / a', 3)
}
}
[
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
33,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
43,
null,
null,
null,
null,
null,
null,
null,
null,
33,
null,
null,
null,
null,
null,
null,
null,
33,
null,
null,
34,
33,
34,
33,
34,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
58,
42,
60,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
37,
38,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
58,
59,
59,
59,
60,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
43,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
37,
38,
null,
null,
null,
53,
54,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
58,
59,
59,
59,
59,
59,
60,
null,
null,
null,
null,
null,
23,
24,
24,
25,
null,
null,
null,
null,
58,
42,
60,
null,
null,
null,
null,
23,
25,
null,
null,
null,
null,
null,
null,
null,
null,
53,
54,
null,
null,
null,
53,
54,
23,
24,
24,
25,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32
],
[
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]
]
{
"0": [
"0e27",
"1e27",
"3e27",
"5c27",
"6e27",
"8g27",
"12g17"
],
"1": [
"0c27",
"3g17",
"6e17",
"9a17",
"11b17",
"13a#17",
"14a17"
],
"2": [
"0g17",
"2e27",
"3g27",
"4a27",
"6f27",
"7g27",
"9e27",
"11c27",
"12d27",
"13b17"
],
"3": [
"0g17",
"2e27",
"3g27",
"4a27",
"6f27",
"7g27",
"9e27",
"11c27",
"12d27",
"13b17"
],
"4": [
"2g27",
"3f#27",
"4f27",
"5d#27",
"7e27",
"9g#17",
"10a17",
"11c27",
"13a17",
"14c27",
"15d27"
],
"5": [
"2g27",
"3f#27",
"4f27",
"5d#27",
"7e27",
"9c37",
"11c37",
"12c37"
],
"6": [
"2d#27",
"5d27",
"8c27"
],
"7": [
"0c27",
"1c27",
"3c27",
"5c27",
"6d27",
"8e27",
"9c27",
"11a17",
"12g17",
"15g10"
],
"8": [
"0c27",
"1c27",
"3c27",
"5c27",
"6d27",
"7e27"
],
"10": [
"0f#17",
"1f#17",
"3f#17",
"5f#17",
"6f#17",
"8b17"
],
"11": [
"0e17",
"3c17",
"6g07",
"9c17",
"11d17",
"13c#17",
"14c17"
],
"12": [
"0c17",
"2g17",
"3b17",
"4c27",
"6a17",
"7b17",
"9a17",
"11e17",
"12f17",
"13d17"
],
"13": [
"2e27",
"3e27",
"4d27",
"5b17",
"7c27",
"9e17",
"10f17",
"11g17",
"13c17",
"14e17",
"15f17"
],
"14": [
"2e27",
"3e27",
"4d27",
"5b17",
"7c27",
"9g27",
"11g27",
"12g27"
],
"15": [
"2g#17",
"5f17",
"8e17"
],
"16": [
"0g#17",
"1g#17",
"3g#17",
"5g#17",
"6a#17",
"8g17",
"9e17",
"11e17",
"12c17"
],
"17": [
"0g#17",
"1g#17",
"3g#17",
"5g#17",
"6a#17",
"7g17"
],
"20": [
"0d07",
"1d07",
"3d07",
"5d07",
"6d07",
"8g17",
"12g07"
],
"21": [
"0g07",
"3e07",
"6c07",
"9f07",
"11g07",
"13f#07",
"14f07"
],
"22": [
"0e07",
"2c17",
"3e17",
"4f17",
"6d17",
"7e17",
"9c17",
"11a07",
"12b07",
"13g07"
],
"23": [
"0c07",
"3g07",
"6c17",
"8f07",
"11c17",
"12c17",
"14f07"
],
"24": [
"0c07",
"3e07",
"6g07",
"7c17",
"14g07"
],
"25": [
"0c07",
"2g#07",
"5a#07",
"8c17",
"11g07",
"12g07",
"14c07"
],
"26": [
"0g#07",
"3d#07",
"6g#07",
"8g07",
"11c07",
"14g#07"
],
"60": [
"0b37",
"1d37",
"2b27",
"3d27",
"4b17",
"5d17",
"6b07",
"7d07"
],
"61": [
"0b37"
]
}
{
"0": {
"0": 0
},
"1": {
"0": 1
}
}
{
"0": [
" 2220 ",
" 22222",
" 20270 ",
" 200220",
" 2000 ",
" 221331 ",
"0 333351",
" 2 3 "
],
"1": [
" 2220 ",
" 22222",
" 20270 ",
" 200220",
" 2000 ",
" 22135 ",
" 20335 ",
" 223 "
],
"2": [
" 2222 ",
" 22222",
" 22027 ",
" 220022",
" 2200 ",
" 32215 ",
" 33220 ",
" 2 3 "
],
"3": [
" 2222 ",
" 22222",
" 22027 ",
" 220022",
" 2200 ",
" 322150",
" 233322 ",
" 3 "
],
"4": [
" 2220 ",
" 22222",
" 20270 ",
" 200220",
" 2000 ",
" 22135 ",
" 20335 ",
" 223 "
],
"5": [
" 2202 ",
" 22222",
" 02707 ",
" 002202",
" 0000 ",
" 221331 ",
"0 333351",
" 3 2 "
],
"6": [
" 2202 ",
" 22222",
" 02707 ",
" 002202",
" 220000 ",
"0 213310",
" 333335 ",
" 2 "
],
"7": [
" 2220 ",
" 22222",
" 20200 ",
" 200220",
" 2000 ",
" 221331 ",
"0 333351",
" 2 3 "
],
"8": [
" ",
" 2220 ",
" 22222",
" 20270 ",
" 200220",
" 222000 ",
"0 333351",
" 2 3 "
],
"9": [
" 2220 ",
" 222221",
" 2027072",
" 2002202",
" 220001 ",
"0 21335 ",
" 33353 ",
" 2 "
],
"10": [
" 20 ",
" 222221",
" 2222 2",
" 20270 2",
" 200220 ",
"0220001 ",
" 213353",
" 23335 "
],
"11": [
" ",
" 22 ",
" 2222 ",
" 227273 ",
"22033330",
"22222223",
" 311 ",
" 2233 "
],
"12": [
" ",
" 22 ",
" 2222 ",
" 223233 ",
"22033330",
"22222223",
" 311 ",
" 2233 "
],
"13": [
" ",
" 22 ",
" 2222 ",
" 22272 ",
"22203330",
"22222223",
" 311 ",
" 22 "
],
"14": [
" ",
" 22 ",
" 2222 ",
" 222273 ",
"22230331",
"22222223",
" 311 ",
" 3322 "
],
"16": [
" 022 3 ",
" 5047000",
"05200000",
"5120022 ",
"01710001",
"52710171",
" 110021 ",
" 11 21 "
],
"17": [
" 033 3 ",
" 5022000",
"05200000",
"5120022 ",
"01710001",
"52710171",
" 110021 ",
" 11 21 "
],
"18": [
" 022 3 ",
" 5047000",
"05200000",
"5120022 ",
"0117100 ",
"552711 ",
" 110021 ",
" 11 21 "
],
"19": [
" 022 3 ",
" 5047000",
"05200000",
"5120022 ",
"0171000 ",
"5271071 ",
" 1102 ",
" 1121 "
],
"20": [
" 022 3 ",
" 5047000",
"05200000",
"5120022 ",
"17100001",
"27100171",
" 211 ",
" 211 "
],
"21": [
" 202 ",
" 02222 ",
" 3220000",
" 3200330",
" 433333 ",
"4 313 ",
" 4 ",
"444555 "
],
"23": [
" ",
" ",
" ",
" ",
" 5",
" 553",
" 5333",
" 53343"
],
"24": [
" ",
" ",
" ",
" 5",
"5 53",
"35 5533",
"33553334",
"33333343"
],
"25": [
" ",
" ",
" ",
"5 ",
"355 ",
"3335 ",
"33335 ",
"33335 "
],
"32": [
"00112112",
"02225223",
"12225225",
"12223225",
"13552112",
"01121223",
"12231225",
"25532555",
1
],
"33": [
"00000002",
"01133115",
"01333315",
"01113315",
"01133115",
"01111115",
"01133115",
"45555555",
1
],
"34": [
"01111112",
"23333535",
"12222325",
"12222325",
"23533535",
"12322225",
"12322225",
"45555555",
1
],
"35": [
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
1
],
"36": [
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
1
],
"37": [
"50000004",
"54000445",
"54000445",
"54000445",
"54000445",
"54000445",
"55555555",
" 5544455",
1
],
"38": [
"44440000",
"55553303",
"55553303",
"55553303",
"55553303",
"55553303",
"55555555",
"5555535 ",
1
],
"39": [
" ",
" ",
" ",
" ",
" ",
" 0",
" 000",
" 0010"
],
"40": [
" ",
" ",
" ",
" ",
" 0",
"0 00",
"00 0001",
"00000010"
],
"41": [
" ",
" ",
" ",
" ",
"0 ",
"000 ",
"0000 ",
"0000 "
],
"42": [
"44444444",
"44444744",
"44447774",
"47447774",
"77744744",
"77744444",
"47444444",
"44444444"
],
"43": [
" ",
" ",
" ",
" ",
" ",
" 55 ",
" 544445 ",
"54444445"
],
"48": [
" 000 ",
" 00100 ",
" 00100 ",
" 00100 ",
" 000 ",
" ",
" ",
" "
],
"49": [
" 110 ",
" 110 ",
" 110 ",
" 110 ",
" 110 ",
" ",
" ",
" "
],
"50": [
" 011 ",
" 011 ",
" 011 ",
" 011 ",
" 011 ",
" ",
" ",
" "
],
"51": [
" 5400044",
"40000004",
"54000445",
"54000445",
"54000445",
"54000445",
"54000445",
"55555555",
1
],
"52": [
"5553303 ",
"44440000",
"55553303",
"55553303",
"55553303",
"55553303",
"55553303",
"55555555",
1
],
"53": [
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
" 5400044",
1
],
"54": [
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
"5553303 ",
1
],
"55": [
" 00100",
" 0000000",
"00000000",
"00000000",
" 0100001",
" 0011110",
" 001100",
" 00 "
],
"56": [
"00000000",
"00000000",
"00000000",
"00000000",
"10000100",
"01101011",
"00010000",
" 000 "
],
"57": [
"00000 ",
"0000000 ",
"00000000",
"00000000",
"00000000",
"11000100",
"0001100 ",
" 000 "
],
"58": [
" 5",
" 54",
" 544",
" 5444",
" 54444",
" 544444",
" 5444444",
"54444444"
],
"59": [
"44444444",
"44444444",
"44444444",
"44444444",
"44444444",
"44444444",
"44444444",
"44444444"
],
"60": [
"5 ",
"45 ",
"445 ",
"4445 ",
"44445 ",
"444445 ",
"4444445 ",
"44444445"
],
"64": [
" 222 ",
" 22422 ",
" 22442 ",
" 22222 ",
" 222 ",
" ",
" ",
" "
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment