experiments-pico8/games/boybomb.p8
2023-04-30 06:36:05 -05:00

827 lines
51 KiB
Lua
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

pico-8 cartridge // http://www.pico-8.com
version 41
__lua__
--
#include sprites.lua
function _init()
-- global initialization
palt(11, true)
palt(0, false)
-- start first scene
start_scene("explainer")
--start_scene("ending")
end
function _update()
if _scene and _scene.update then
_scene.update()
end
end
function _draw()
if _scene and _scene.draw then
_scene.draw()
end
end
function start_scene(name)
_scene = _scenes[name]
_scene_start = time()
if _scene.start then
_scene.start()
end
end
function scene_time()
return time() - _scene_start
end
function draw_title()
cls(2)
if scene_time() < 2 then
fillp(0b1010010110100101)
elseif scene_time() < 4 then
fillp(0b1010110110101101)
end
--rectfill(0, 0, 128, 128, 9)
fillp(0)
print("THE", 10, 0, 6)
print("\^w\^tboy", 10, 8, 11)
print("WHO", 10, 24, 6)
print("\^w\^tbecame", 10, 32, 11)
print("A", 10, 48, 6)
print("\^w\^tbomb", 10, 56, 11)
for n=7,0,-1 do
if scene_time() > n then
sspr(16*n, 16, 16, 16, n*14, 90-((1.5*n)*(1.5*n)), 32+n*2, 32+n*2)
end
end
end
function update_title()
if scene_time() > 15 or btnp() then
start_level(1)
end
end
function draw_dusk()
cls()
fillp(0b1010010110100101)
rectfill(0, 0, 128, 12, 2)
fillp(0)
rectfill(0, 12, 128, 64, 2)
-- trick: make other fill transparent
fillp(0b1010010110100101.1)
rectfill(0, 50, 128, 60, 9)
fillp(0)
end
function draw_explainer()
draw_dusk()
map(0, 0, 0, 16, 16, 8)
local st = scene_time()
local bcolors = {8, 9, 10}
local bcolor = bcolors[flr(5*t()%3)+1]
if st < 1 then
print("3", 80, 25, 7)
elseif st < 2 then
print("2", 80, 25, 7)
elseif st < 3 then
print("1", 80, 25, 7)
elseif st < 4 then
print("WATCH OUT!", 40, 15, 7)
end
print("in 1978, frank a. boyman was \n involved in an accident.", 10, 80, 7)
if st > 4 then
print("\nas a bystander of a \n failed nasa experiment")
end
if st > 7 then
print("he became...", 20, 118)
end
if st > 10 then
print("a bomb", 70, 118, bcolor)
end
if st > 15 or btnp() then
start_scene("title")
end
if st > 3 and st < 6 then
draw_beam()
end
draw_sprite(exp_spr)
end
function draw_beam()
-- only lime thing
palt(11, false)
local x=30
local y=66
line(x, 0, x, y, 11)
local v = 9*t() % 3
oval(x-(3+v), y-(2+v), x+4+v, y+2+v, 11)
palt(11, true)
--oval(x-(6+v), y-(4+v), x+6+v, y+4+v, 11)
end
function update_explainer()
update_sprite(exp_spr)
local st = scene_time()
if exp_phase == "boy" and exp_spr.x >= 20 then
exp_spr.x = 20
exp_spr.vx = 0
exp_spr.speed = 0
end
if exp_phase == "boy" and st > 5 then
exp_spr = make_sprite(20, exp_spr.y, "boy_bomb", 0.4)
exp_phase = "boy_bomb"
end
if exp_phase == "boy_bomb" and st > 9 then
exp_spr = make_sprite(20, exp_spr.y+8, "bomb_s", 0.1)
exp_phase = "bomb_s"
end
if exp_phase == "bomb_s" and st > 11 then
exp_spr = make_sprite(20, exp_spr.y-8, "bomb_m", 0.1)
exp_phase = "bomb_m"
end
end
function start_explainer()
exp_spr = make_sprite(-10, 50, "boy_walk", 0.2)
exp_spr.loop = true
exp_spr.vx = .3
exp_spr.vy = .02
exp_phase = "boy"
end
levels = {
{name="lobby 1",
mapx=16, mapy=8, par=1, boss=8,
message="there's no way he'll\nclear these boxes"
},
{name="lobby 2",
mapx=25, mapy=8, par=2, boss=8,
message="this one should take a\ndozen explosions"
},
{name="lobby 3",
mapx=31, mapy=8, par=8, boss=8,
message="maybe he'll wear himself\nout?"
},
{name="lobby 4",
mapx=39, mapy=8, par=2, boss=8,
message="being hit by a block\nwill make him explode"
},
{name=" lab 1",
mapx=48, mapy=8, par=2, boss=11,
message="we need to be careful\nof chain reactions",
},
{name=" lab 2",
mapx=56, mapy=8, par=2, boss=11,
message="there's no way!",
},
{name=" lab 3",
mapx=63, mapy=8, par=2, boss=11,
message="we may need to evacuate...",
},
{name=" lab 4",
mapx=72, mapy=8, par=2, boss=11,
message="ok, fall back!",
},
}
function start_level(n)
if n > #levels then
start_scene("ending")
return
end
start_scene("level")
last_gravity = t()
level_dets = 0
level_boxes = 0
level_num = n
level = levels[n]
bomb_x = 4
bomb_y = 4
-- load puzzle
puzzle_grid = {}
explode_grid = {}
for y=1,GRID_H do
explode_grid[y] = {nil, nil, nil, nil, nil, nil, nil, nil}
puzzle_grid[y] = {0, 0, 0, 0, 0, 0, 0, 0}
for x=1,GRID_W do
puzzle_grid[y][x] = mget(x+level.mapx-1, y+level.mapy-1)
if puzzle_grid[y][x] == GRID_EMPTY then
puzzle_grid[y][x] = 0
elseif puzzle_grid[y][x] == GRID_START then
puzzle_grid[y][x] = 0
bomb_x = x
bomb_y = y
elseif puzzle_grid[y][x] ~= 0 then
level_boxes += 1
end
end
end
bomb_spr = make_sprite(bomb_x*8, bomb_y*8, "bomb_s", 0)
end
particles = {}
function add_particles(gx, gy, colors)
local x = gx*8+4
local y = gy*8+4
for i=0,30 do
local angle = rnd()
add(particles, {
x=x, y=y,
vx=(rnd(1)+1)*cos(angle),
vy=(rnd(1)+1)*sin(angle),
age=10+rnd(10),
color=rnd(colors),
})
end
end
function draw_explosions()
for p in all(particles) do
pset(p.x, p.y, p.color)
end
end
function update_explosions()
for i=#particles,1,-1 do
local p = particles[i]
p.x += p.vx
p.y += p.vy
p.age -= 1
if p.age <= 0 then
deli(particles, i)
end
end
end
function draw_level()
cls()
-- HUD
map(0, 8, 0, 0, 16, 16)
for y=1,GRID_H do
for x=1,GRID_W do
n = puzzle_grid[y][x]
if n > 0 then
spr(n, x*8, y*8)
end
end
end
print(level.name, 90, 5, 11)
local jx = 86
print("par "..level.par, jx, 24, 11)
print("dets "..level_dets, jx, 32, 11)
print("chain "..10, jx, 40, 11)
print("crates "..level_boxes, jx, 48, 11)
spr(level.boss, 10, 108, 1, 2)
print(level.message, 20, 110, 7)
bomb_spr.x = bomb_x * 8
bomb_spr.y = bomb_y * 8
draw_sprite(bomb_spr)
draw_explosions()
end
function can_move(dx, dy)
local ny = bomb_y+dy
local nx = bomb_x+dx
if ny == 0 or ny > GRID_H-1 or nx == 0 or nx > 8 then
return false
end
if puzzle_grid[ny][nx] ~= 0 then
return false
end
return true
end
explosion_types = {
fire={8, 9, 10},
wood={4, 15},
}
function add_explosion(x, y, countdown, colors)
explode_grid[y][x] = {countdown=countdown, colors=colors}
end
function explosion_adjacent(x, y)
-- called when the block next door explodes
local block = puzzle_grid[y][x]
if block == BOX_WOOD then
add_explosion(x, y, 3, explosion_types.wood)
elseif block == BOX_FIRE then
add_explosion(x, y, 3, explosion_types.fire)
end
end
function update_exp_grid(x, y)
-- called on each block each frame
-- the explosion grid contains countdown objects
-- grid items are {countdown, colors}
local block = puzzle_grid[y][x]
local explode = explode_grid[y][x]
if explode then
--printh("CD: "..x..", "..y.." "..explode.countdown)
if explode.countdown == 0 then
-- always add particles and destroy box
add_particles(x, y, explode.colors)
if puzzle_grid[y][x] != 0 then
level_boxes -= 1
end
puzzle_grid[y][x] = 0
if explode.colors ~= explosion_types.fire then
-- don't propagate
return
end
-- fiery explosion
sfx(0)
local ys = {0}
local xs = {0}
if y > 1 then
add(ys, -1)
end
if y < GRID_H then
add(ys, 1)
end
if x > 1 then
add(xs, -1)
end
if x < GRID_W then
add(xs, 1)
end
for xx in all(xs) do
for yy in all(ys) do
if xx~=0 or yy~=0 then
explosion_adjacent(x+xx, y+yy)
end
end
end
explode_grid[y][x] = nil
end
end
end
function update_level()
-- explosions
-- decrement explosions in separate loop to avoid issues with chains
for x=1,GRID_W do
for y=1,GRID_H do
local exp = explode_grid[y][x]
if exp then
exp.countdown -= 1
end
end
end
-- track if any explosions this frame
for x=1,GRID_W do
for y=1,GRID_H do
update_exp_grid(x, y)
end
end
update_sprite(bomb_spr)
update_explosions()
-- bomb animation / explosion
if bomb_spr.frame > 1 then
if bomb_spr.is_done then
-- when explosion hits last frame, particles / update grid
reset_sprite(bomb_spr)
bomb_y = 1
end
end
-- explosion in progress
if #particles > 1 then
return
end
-- gravity
fall_speed = 0.3
if t() - last_gravity > fall_speed then
last_gravity = t()
for y=GRID_H,1,-1 do
for x=1,GRID_W do
-- fall down
if y < GRID_H
and puzzle_grid[y+1][x] == 0
and puzzle_grid[y][x] != 0
then
-- crushed, explode
if y+1 == bomb_y and x == bomb_x then
explode()
puzzle_grid[y+1][x] = 0
level_boxes -= 1
end
puzzle_grid[y+1][x] = puzzle_grid[y][x]
puzzle_grid[y][x] = 0
sfx(1)
end
end
end
if level_boxes <= 0 and bomb_y == GRID_H then
start_level(level_num+1)
end
end
-- movement
if btnp() then
if can_move(-1, 0) then
bomb_x -= 1
elseif can_move(-1, -1) then
bomb_x -= 1
bomb_y -= 1
end
end
if btnp() then
if can_move(1, 0) then
bomb_x += 1
elseif can_move(1, -1) then
bomb_x += 1
bomb_y -= 1
end
end
if btnp() then
explode()
end
-- bomb gravity after movement
if bomb_y < GRID_H and puzzle_grid[bomb_y+1][bomb_x] == 0 then
bomb_y += 1
end
--DEBUG LEVEL SELECT
-- if btnp(⬇️) then
-- level_num = max(level_num-1, 1)
-- start_level(level_num)
-- end
-- if btnp(⬆️) then
-- level_num = min(level_num+1, #levels)
-- start_level(level_num)
-- end
end
function explode()
bomb_spr.speed = 0.1
add_explosion(bomb_x, bomb_y, 40, explosion_types.fire)
level_dets += 1
end
function start_ending()
exp_spr = make_sprite(50, 50, "boy_back", 0.2)
exp_spr.speed = 0.4
exp_spr.loop = false
exp_spr.vx = .3
exp_spr.vy = .02
end
function update_ending()
update_sprite(exp_spr)
end
function draw_ending()
draw_dusk()
map(18, 0, 0, 16, 16, 8)
draw_sprite(exp_spr)
local st = scene_time()
print("the boy conquered nasa and", 10, 80, 7)
if st > 1 then
print("thwarted their plans for")
end
if st > 2 then
print("solar system domination...")
end
if st > 5 then
print("\nwhat awaits our hero next?")
end
end
-- globals
_scene = nil
_scenes = {}
_scene_start = 0
_scenes.title = {start=nil, draw=draw_title, update=update_title}
_scenes.explainer = {start=start_explainer, draw=draw_explainer, update=update_explainer}
_scenes.level = {start=nil, draw=draw_level, update=update_level}
_scenes.ending = {start=start_ending, draw=draw_ending, update=update_ending}
total_dets = 0
GRID_W = 8
GRID_H = 11
GRID_EMPTY = 136
GRID_START = 152
BOX_WOOD = 137
BOX_STEEL = 138
BOX_FIRE = 139
BOX_FROG = 140
BOX_NUKE = 141
BOX_WATER = 142
animations = {
boy_walk={frames={[0]=2, 0, 4, 0}, w=2, h=2},
boy_bomb={frames={[0]=32, 34, 36, 38, 40, 42, 44, 46}, w=2, h=2},
bomb_s={frames={[0]=64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76}, w=1, h=1},
bomb_m={frames={[0]=80, 82, 84, 86, 88, 90, 92}, w=2, h=2},
boy_back={frames={[0]=46,44,42,40,38,36,34,32}, w=2, h=2},
}
-- globals
__gfx__
bbbb00000bbbbbbbbbbb00000bbbbbbbbbbb00000bbbbbbbbbaaaabbbbb44bbbb999999bbb5555bbb666666bb666666bbbaaaabbbbb66bbbbbccbccbbccbbbbb
bbbbffff0bbbbbbbbbbbffff0bbbbbbbbbbbffff0bbbbbbbbbfffabbbb4444bbb9ffff9bb544445b65ffff5665444456bb666abbbb6666bbbcbbcbbccbbccbbb
bbbbfcfcbbbbbbbbbbbbfcfcbbbbbbbbbbbbfcfcbbbbbbbbbb0000abbb0404bb993f3f9955040455653f3f5665040456bb6666abbb8686bbbbcb66666666bcbb
bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbffffbbbbbbbbbb0f0faabb4444bb99ffff995544445565ffff5665444456bb8686aabb6666bbbbb6555555556bbb
bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbffffbbbbbbbbbbffffbbbd4444db99ffff995544445565ffff5665444456bb6666bbbd6666dbbb655eeffee556bb
b5555fff555bbbbbb5555fff555bbbbbb5555fff555bbbbbb79ff97bbddd4ddb999ff999bb54455b665ff56666544566b796697bbdd66ddbb655eeeffeee556b
555557f7555bbbbb555557f7555bbbbb555557f7555bbbbb77799777dddd7dddbaaffaab22b44522b99ff99bb994499b77699677ddd66dddb65eefeffefee56b
55555777555bbbbb55555777555bbbbb55555777555bbbbb777f7777ddddddddaaaaaaaa22244222999999999999999977666677ddd66dddb65effeffeffe56b
bff557775fbbbbbbbff557775fbbbbbbbff557775fbbbbbb77777777ddddddddfba5aabf42222224999599999995999977666677ddd66dddb65eeeffffeee56b
bff557775fbbbbbbbff557775fffbbbbbff557775fbbbbbb77555557dddd0dd7fbaaaabf444222b49b9999b99b9999b977555556ddd66dd6b65effeffeffe56b
bff551115fbbbbbbbff551115bbbbbbbbbfff1115fbbbbbb7f44444fd7ddddd4faa5aaafb2222224599599955b9599b566444446d6ddddd6b65eefeffeefe56b
bbf111111bbbbbbbbbf111111bbbbbbbbbbf11111bbbbbbbbf44444bb4dd0ddbbaaaaaabb222222bb999999bbb99999bb644444bb6dddddbb655eeeffeee56bb
bbb111111bbbbbbbbbb1111111bbbbbbbbb111111bbbbbbbbb44444bbbdddddbbaaaaaabb242422bb999999bb9999999bb44444bbbdddddbbb65555665556bbb
bbb111b11bbbbbbbbbb111bb111bbbbbbbb111b11bbbbbbbbb44b44bbbd5b5dbbbaabaab22424222bb99b99bb999b999bb44b44bbbd5b5dbbbb666677666bbbb
bbb111b11bbbbbbbbbb111bb444bbbbbbb411bb11bbbbbbbbb44b44bbb55b55bbb22b22bb99b99bbbb55b55bbb55b55bbb44b44bbb55b55bbbbbbbb66bbbbbbb
bbb444b444bbbbbbbbb444bbbbbbbbbbbb44bbb444bbbbbbb555b555b555b555b222b222999b999bb555b555b555b555b555b555b555b555bbbbbbb77bbbbbbb
bbbb00000bbbbbbbbbbb0000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbffff0bbbbbbbbbbbffff0bbbbbbbbbbb0000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbfcfcbbbbbbbbbbbbfcfcbbbbbbbbbbbbffff0bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbfcfcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbb0006bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
b5555fff555bbbbbbb555fff55bbbbbbbbbbffffbbbbbbbbbbbb0fff6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
555557f7555bbbbbb55557f7555bbbbbbbb55fff0bbbbbbbbbbb0cfcbbbbbbbbbbbb0066bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
55555777555bbbbbb5555777555bbbbbbb0557f750bbbbbbbbbbffffbbbbbbbbbbbb0fff0bbbbbbbbbbb0660bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bff557775fbbbbbbbff557775fbbbbbbb0555777555bbbbbbbb05fff0bbbbbbbbbbb00fcbbbbbbbbbbbb0fff0bbbbbbbbbbb666bbbbbbbbbb66bbbbbbbbbbbbb
bff557775fbbbbbbbff557775fbbbbbbbff557775fbbbbbbbb0557f750bbbbbbbbbbffff0bbbbbbbbbbb00fcbbbbbbbbbbb0000bbbbbbbbbbbb6bbbbbbbbbbbb
bbfff1115fbbbbbbbbfff1115fbbbbbbbff557775fbbbbbbb055577750bbbbbbbbb05fff0bbbbbbbbbbbffff0bbbbbbbbbb000c0bbbbbbbbbb000bbbbbbbbbbb
bbbf11111bbbbbbbbbbf11111bbbbbbbbbfff1115fbbbbbbbff5577750bbbbbbbb0557f750bbbbbbbbb05fff0bbbbbbbbbb00ff0bbbbbbbb0000700bbbbbbbbb
bbb111111bbbbbbbbbb111111bbbbbbbbbbf11111bbbbbbbb0f557775bbbbbbbb055577750bbbbbbbb0057f750bbbbbbbb000000bbbbbbbb0000070bbbbbbbbb
bbb111b11bbbbbbbbbb111b11bbbbbbbbbb111111bbbbbbbbb0ff1115bbbbbbbb0f5577000bbbbbbb005000050bbbbbbb0007f750bbbbbbb0000000bbbbbbbbb
bb411bb11bbbbbbbbbb41bb11bbbbbbbbbb011b11bbbbbbbbbbf11111bbbbbbbb0f500000bbbbbbbb005000000bbbbbbb00000000bbbbbbb0000000bbbbbbbbb
bb44bbb444bbbbbbbbb4bbb44bbbbbbbbbb011b40bbbbbbbbbb000000bbbbbbbbb0000000bbbbbbbb00000000bbbbbbbb00000000bbbbbbbbb000bbbbbbbbbbb
bb66bbbbbb9abbbbbbb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8bbbbbb88bbb0bb88b0bbbb88bbb000000000000000000000000
bbbb6bbbbbbb6bbbbbbbabbbbbbb9bbbbbb99bbbbbb99bbbbbb99bbbbbb99bbbbbb99bb0b888bbbbbbb8bbb8bbb8bbb8bbb8bbb8000000000000000000000000
bbb00bbbbbb00bbbbbb00bbbbbb00bbbbbb90bbbbbb90bbbbbb90bbbbab90bbb08b90bbbbb888b00bb888b88bb888b88bb888b88000000000000000000000000
b000700bb000700bb000700bb000700bb000900bb000900bb0009a0bb00a9a0bb08a9a8b0a089aab090899aba9a899aba9a899ab000000000000000000000000
b000070bb000070bb000070bb000070bb009070bb009070bb0a90a0bb0a90a0bb8a90a8b0a989aa0998899909988999a9988999a000000000000000000000000
b000000bb000000bb000000bb000000bb000000bb090900bb090900bb090900bb090900ba998900b9998909b09989a9b99989a9b000000000000000000000000
b000000bb000000bb000000bb000000bb000000bb000000bb000000bb000000bb000080b0aa9000b0a99090baa99a9abaa99a9ab000000000000000000000000
bbb00bbbbbb00bbbbbb00bbbbbb00bbbbbb00bbbbbb00bbbbbb00bbbbbb00bbbbbb00bbbbb000bbbbb000bbb0b99abb0bb99abbb000000000000000000000000
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8bbbbbbbbb8bbbbb8bbbbbbbbb8bbbbb8bbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8bbbbbbbbb8bbbbb8bbbbb8bbb8bbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbb0000000000000000
bbbbbbbbbbbbbbbbbbbbbbbb88bb8bbbbbbbbbbb88bb8bbbb8bbbbbbbbbb8bbbb8bbbbbbbbbbbbb8b8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbbbbbbbbbbbbbbbbbbbb8888b8bbbbbbbbbb8888b8b8bbbbbbbb88b8b8b8bbbbbbbb8bb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbbbbbbbbbbbbbbbbbbbbb898bbbbbbbbbbbbb898bbbbbbbbbbbbb898bbbbbbbbbbbbb8bbbbbbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbbbbbbbbbbbbbbbbbbbbbb98bbbbbbbbbbbbbb98bbbbbbbb9bbbbbbbbbbbbbbb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbb8bbbbabbbbbbbbbb8bbb99bbbbbbbbbb899b99bb8bbbbbbb899b99bb8bbbbbbbbbbbb9bbbbbbbbbbbbbbb9bbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbb88bbb88bbbbbb8bb88bbb99bbbbbbbbb999b999abbbbbb8b999b999abbbbbb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbb999889bbb8bb88bb999899bbbbbbbbb99aaaa9998bbbbbb99bbbbbb98bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbb98aa9999b888b8bb99aaa999bbb8bbb99abbbaa99bb8b9b9bbbbbbb99bb8b9bbbbbbbbbbbbb8bbbbbbbbbbbbbbb8bbbbbbbbbbbbbbbb0000000000000000
899b999aa999bb98889b98aa9999bb98bb999abab9a99998bb99bbbbb9b99998bbbbbbbbbbb9b9b8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
b88a98998abbbbbb888a99a8a9bbbbbbbb899abba9abb99bbb89bbbbbbbbb99bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
baa998aaa99998bbb8a9998aa89998bbbba99abbaaa9989bbba99bbbbbb9989bbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbb99988a9bbb88bbbb9988aa9bbb88bbbb99aaaa9bbb99bb9b99bbba9bbb99bb9bbbbbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbb8899a9abbbb9bbbb8899a9abbbb8bbbb899999999998bbbb89bbb9999998bbbbbbbbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
bbbb899abbbbbbbbbbbb899abbbbbbbbbbbb899abbbbbbbbbbbb899abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000
77cc77ccbbbb55555555bbbbbbbbbbbb555555556b5555b65577775577cc77cc77cc77cc77cc77cc788c88cc77cc77cc7555555c000000000000000000000000
77cc77ccbbbb55555555bbbbbbbbbbbb55555555b556655b554444557444444c7555555c7555555c783c38cc7444444c55555555000000000000000000000000
cc77cc77bbbb55555555bbbbbbbbbbbb555555555555555555cc7755c4ffff47c5665657c5a78357cc333c77c438684755555555000000000000000000000000
cc77cc77bbbb55555555bbbbbbbbbbbb555555555654456555444455c4ffff47c5665657c53ea157cc733c77c438684755555555000000000000000000000000
77cc77ccbbbb55555555bbbb55555555bbbbbbbb565445655577cc557444444c7566555c75187e5c7444444c7444444c55555555000000000000000000000000
77cc77ccbbbb55555555bbbb55555555bbbbbbbb55555555b544445b74ffff4c7566555c7555555c7444444c74363f4c55555555000000000000000000000000
cc77cc77bbbb55555555bbbb55555555bbbbbbbbb556655bbbbbbbbbc4ffff47c5555557c5555557c4444447c4363f4755555555000000000000000000000000
cc77cc77bbbb55555555bbbb55555555bbbbbbbb6b5555b6bbbbbbbbc4444447cc77cc77cc77cc77cc444477c4444447c5555557000000000000000000000000
bbbbbbbbbbbbbbbbbb8888bbbbbbbbbbbbbbbbbb444bbbb4444888bbbbbbbbbb0000000044444444555555554444444455555555555555555555555500000000
bbbbbbbbbbbbbbbbb8888bbbbbbbbbbbbbbbb447774bbbb4ee44444444bbbbbb0055550044ffff4455dddd55449999445577775550aaaa055cccccc500000000
bbb88bb88bb888bb88bb5bbb888bbbbbbbb44ee747488bb777e47474448bbbbb055005504f4ff4f45d5dd5d54989989457373775500aa0055111ccc500000000
bbb888b88b88888b88888bb88888bbbbbbb844e777748b874744747e4488bbbb050555504ff44ff45dd55dd549988994577bb37550a00a05511111c500000000
bbb888888b88b88bbbbb88b88b88bbbbbbb884e74d74b887774447e44488bbbb050000004ff44ff45dd55dd549988994577bb3755aa00aa55cc1111500000000
bbb88b888b88888bb88888b88888bbbbbbb884477774b84444e77444448bbbbb055000004f4ff4f45d5dd5d549899894573737755a0000a55ccc111500000000
bbb88bb88b88b88b88885bb88b88bbbbbbb88b448b88b844444444b88bbbbbbb0055550044ffff4455dddd554499994455777755500000055cccccc500000000
bbb5bbb5bb5bbb5bbb5b5bb5bbb5bbbbbbb5bbb5bb5bbb5bbb5b5bb5bbb5bbbb0000000044444444555555554444444455555555555555555555555500000000
bb6666666666666666666666666666bbbb666666666666666666666666b5bbbb0000000000000000000000000000000000000000000000000000000000000000
bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb666666666666666666666666665bbb00bbbb0000000000000000000000000000000000000000000000000000000000
bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb66c646c6c64646646c6c6c6b6b6bbb0bb0000000000000000000000000000000000000000000000000000000000000
bb6666666666666666666666666666bbbb66c646c6c6c6c6646c646c6b6b66bb0bbb000000000000000000000000000000000000000000000000000000000000
bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb6666666666666666666666666666bb000bbb0000000000000000000000000000000000000000000000000000000000
bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb66c6c6c64646c66c6c64646c6c66bb00000b0000000000000000000000000000000000000000000000000000000000
bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb66c6c6c64646c66c6464646c6c66bb0bbbbb0000000000000000000000000000000000000000000000000000000000
bb6666666666666666666666666666bbbb66c6c6c64646c66c6464646c6c66bb00bb000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000006645bbbb0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000006666bbbb0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000646bbbbb0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000064bbbbbb0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000006bbbbbbb0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000006bbbbbbb0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000006b6bbbbb0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000006654bbbb0000000000000000000000000000000000000000000000000000000000000000
66666666666666663333333300000000000000000000000000000000000000006666666600000000000000000000000000000000000000000000000000000000
33333333333333333333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
33333333335335333333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
33333333333533533333333300000000000000000000000000000000000000000aa00aa000000000000000000000000000000000000000000000000000000000
33333333333533533333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
33333333335335333333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
33333333353353333333333300000000000000000000000000000000000000006666666600000000000000000000000000000000000000000000000000000000
33333333353353333333333300000000000000000000000000000000000000003333333300000000000000000000000000000000000000000000000000000000
00555555555555555555550000555555555555555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000
05666666666666666666665005666666666666666666665000000000000000000000000000000000000000000000000000000000000000000000000000000000
56666666666666666666666556666666666666666666666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56666666555555556666666556666666555555556666666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56666555776677665556666556666555000000005556666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56665566776677667755666556665500000000000055666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56665677667766776675666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56665677667766776675666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000
56665766776677667765666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56665766776677667765666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56665577667766776655666556665500000000000055666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56666555667766775556666556666555000000005556666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56666666555555556666666556666666555555556666666500000000000000000000000000000000000000000000000000000000000000000000000000000000
56666666666666666666666556666666666666666666666500000000000000000000000000000000000000000000000000000000000000000000000000000000
05666666666666666666665005666666666666666666665000000000000000000000000000000000000000000000000000000000000000000000000000000000
00555555555555555555550000555555555555555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000
__label__
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222226662626266622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222622626266222222222222222222222222222222222222222222222222222222222222222222222222222222222666666222222222222222222222
22222222222622666262222222222222222222222222222222222222222222222222222222222222222222222222222222222666666222222222222222222222
22222222222622626226622222222222222222222222222222222222222222222222222222222222222222222222222222222666666222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666222222222222222222
2222222222bbbbbb2222bbbb22bb22bb222222222222222222222222222222222222222222222222222222222222222222222222000000002222222222222222
2222222222bbbbbb2222bbbb22bb22bb222222222222222222222222222222222222222222222222222222222222222222222222000000002222222222222222
2222222222bb22bb22bb22bb22bb22bb222222222222222222222222222222222222222222222222222222222222222222222222000000002222222222222222
2222222222bb22bb22bb22bb22bb22bb222222222222222222222222222222222222222222222222222222222222222222000000000000770000002222222222
2222222222bbbb2222bb22bb22bbbbbb222222222222222222222222222222222222222222222222222222222222222222000000000000770000002222222222
2222222222bbbb2222bb22bb22bbbbbb222222222222222222222222222222222222222222222222222222222222222222000000000000770000002222222222
2222222222bb22bb22bb22bb222222bb222222222222222222222222222222222222222222222222222222222222222222000000000000007770002222222222
2222222222bb22bb22bb22bb222222bb222222222222222222222222222222222222222222222222222222222222222222000000000000007770002222222222
2222222222bbbbbb22bbbb2222bbbbbb222222222222222222222222222222222222222222222222222222222222222222000000000000000000002222222222
2222222222bbbbbb22bbbb2222bbbbbb222222222222222222222222222222222222222222222222222222222222222222000000000000000000002222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000000000000000002222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000000000000000002222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000000000000000002222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000000000000000002222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000002222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000002222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222000000002222222222222222
22222222226262626226622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222226262626262622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222226662666262622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222226662626266222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666666662222222222222222222222222
2222222222bbbbbb22bbbbbb2222bbbb22bbbbbb22bbbbbb22bbbbbb222222222222222222222222222222222222222666666662222222222222222222222222
2222222222bbbbbb22bbbbbb2222bbbb22bbbbbb22bbbbbb22bbbbbb222222222222222222222222222222222222222666666662222222222222222222222222
2222222222bb22bb22bb222222bb222222bb22bb22bbbbbb22bb2222222222222222222222222222222222222222000000000002222222222222222222222222
2222222222bb22bb22bb222222bb222222bb22bb22bbbbbb22bb2222222222222222222222222222222222222222000000000002222222222222222222222222
2222222222bbbb2222bbbb2222bb222222bbbbbb22bb22bb22bbbb22222222222222222222222222222222222222000000000002222222222222222222222222
2222222222bbbb2222bbbb2222bb222222bbbbbb22bb22bb22bbbb22222222222222222222222222222222222222000000000cc0002222222222222222222222
2222222222bb22bb22bb222222bb222222bb22bb22bb22bb22bb2222222222222222222222222222222222222222000000000cc0002222222222222222222222
2222222222bb22bb22bb222222bb222222bb22bb22bb22bb22bb2222222222222222222222222222222222222222000000fffff0002222222222222222222222
2222222222bbbbbb22bbbbbb2222bbbb22bb22bb22bb22bb22bbbbbb222222222222222222222222222222222222000000fffff0002222222222222222222222
2222222222bbbbbb22bbbbbb2222bbbb22bb22bb22bb22bb22bbbbbb222222222222222222222222222222222222000000fffff0002222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000000000002222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000000000002222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000000000002222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000777fff775550002222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000777fff775550002222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000777fff775550002222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000000000000000000002222222222222222222
22222222222662222222222222222222222222222222222222222222222222222222222222222222222222200000000000000000000002222222222222222222
22222222226262222222222222222222222222222222222222222222222222222222222222222222222222200000000000000000000002222222222222222222
22222222226662222222222222222222222222222222222222222222222222222222222222222222200666660000000000000000000002222222222222222222
22222222226262222222222222222222222222222222222222222222222222222222222222222222200666660000000000000000000002222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222200666660002222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222200ffffffff0002222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222200ffffffff0002222222222222222222222222222222222
2222222222bbbbbb2222bbbb22bbbbbb22bbbbbb2222222222222222222222222222222222222222200ffffffff0002222222222222222222222222222222222
2222222222bbbbbb2222bbbb22bbbbbb22bbbbbb2222222222222222222222222222222222222222200000ffccc2222222222222222222222222222222222222
2222222222bb22bb22bb22bb22bbbbbb22bb22bb2222222222222222222222222222222222222222200000ffccc2222222222222222222222222222222222222
2222222222bb22bb22bb22bb22bbbbbb22bb22bb22222222222222222222222222222222222222222ffffffffff0002222222222222222222222222222222222
2222222222bbbb2222bb22bb22bb22bb22bbbb2222222222222222222222222222222222222222222ffffffffff0002222222222222222222222222222222222
2222222222bbbb2222bb22bb22bb22bb22bbbb2222222222222222222222222222222222222222222ffffffffff0002222222222222222222222222222222222
2222222222bb22bb22bb22bb22bb22bb22bb22bb2222222222222222222222222222222222222200055ffffffff0002222222222222222222222222222222222
2222222222bb22bb22bb22bb22bb22bb22bb22bb2222222222222222222222222222222222222200055ffffffff0002222222222222222222222222222222222
2222222222bbbbbb22bbbb2222bb22bb22bbbbbb2222222222222222222222222222222222222200055ffffffff0002222222222222222222222222222222222
2222222222bbbbbb22bbbb2222bb22bb22bbbbbb2222222222222222222222222222222222200000055777ff7775550022222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222200000055777ff7775550022222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222220000055500000000005550022222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222220000055500000000005550022222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222200000666660055500000000005550022222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222200000666660055500000000000000022222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222200000666660055500000000000000022222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222000fffffff0000000000000000002222222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222000fffffff0000000000000000002222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222200000fffcc0000000000000000002222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222200000fffcc2222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222200000fffcc2222222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222ffffffffff0002222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222ffffffffff0002222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222200000006622200555fffffff0002222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222200000006622200555fffffff0002222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222200fffffff66200555fffffff0002222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222200fffffff6605555577fff775550022222222222222222222222222222222222222222222222
222222222222222222222222222222222222200000000022222200ccfffcc0005555577fff775550022222222222222222222222222222222222222222222222
222222222222222222222222222222222222200000000022222200ccfffcc5555555577777775550022222222222222222222222222222222222222222222222
222222222222222222222222222222222222200000000022222200ccfffcc5555555577777775550022222222222222222222222222222222222222222222222
2222222222222222222222222222222222222fffffffff002222fffffffff5555555577777775550022222222222222222222222222222222222222222222222
2222222222222222222222200000000222222fffffffff002222ffffffffffff5555577777000000022222222222222222222222222222222222222222222222
2222222222222222222222200000000222222ffcccffcc22200055fffffff00f5555577777000000022222222222222222222222222222222222222222222222
22222222222222222222222ffffffff002222ffcccffcc22200055fffffff00f5500000000000002222222222222222222222222222222222222222222222222
22222222000000000022222ffffffff002222fffffffff2005555577fff775500000000000000002222222222222222222222222222222222222222222222222
22222222000000000022222ffccffcc222222fffffffff2005555577fff775500000000000000002222222222222222222222222222222222222222222222222
22222222ffffffff0022222ffccffcc222222fffffffff2005555577fff775500000000000000002222222222222222222222222222222222222222222222222
22222222ffffffff0022222ffffffff222222fffffffff0555555577777775500000000000000002222222222222222222222222222222222222222222222222
22222222ffccffcc2222222ffffffff222222fffffffff0555555577777775500022222222222222222222222222222222222222222222222222222222222222
22222222ffccffcc2222222ffffffff22225555fffffff00f5555577777775500022222222222222222222222222222222222222222222222222222222222222
22222222ffffffff2222222ffffffff22225555fffffff00f5555577777775500022222222222222222222222222222222222222222222222222222222222222
22222222ffffffff2222222ffffffff22005555777ff775500055577777775500022222222222222222222222222222222222222222222222222222222222222
22222222ffffffff225555555ffffff55555555777ff775500055577777775522222222222222222222222222222222222222222222222222222222222222222
22222222ffffffff225555555ffffff5555555577777775555555577777775522222222222222222222222222222222222222222222222222222222222222222
2255555555ffffff55555555577ff775555555577777775555555f11111115522222222222222222222222222222222222222222222222222222222222222222
2255555555ffffff55555555577ff7755555555777777755ffffff11111115522222222222222222222222222222222222222222222222222222222222222222
555555555577ff7755555555577777755555555777777755ffff1111111111122222222222222222222222222222222222222222222222222222222222222222
555555555577ff7755555555577777755555555777777755ffff1111111111122222222222222222222222222222222222222222222222222222222222222222
555555555577777755555555577777755ff5555777777755ffff1111111111122222222222222222222222222222222222222222222222222222222222222222
555555555577777755555555577777755ff5555777777755fff00000000000022222222222222222222222222222222222222222222222222222222222222222
22ffff555577777755ff5555577777755ffffff111111155fff00000000000022222222222222222222222222222222222222222222222222222222222222222
22ffff555577777755ff5555577777755ffffff111111155fff22222222222222222222222222222222222222222222222222222222222222222222222222222
22ffff555577777755fffffff11111155ffff1111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
22ffff555577777755fffffff11111155ffff1111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
2222ffffff11111155fffff111111111122111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
2222ffffff11111155fffff111111111122111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
222222ff111111111122fff111111111122111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
222222ff111111111122111111111111122001111122111122222222222222222222222222222222222222222222222222222222222222222222222222222222
22222211111111111122111111111111122001111122111122222222222222222222222222222222222222222222222222222222222222222222222222222222
22222211111111111122111111122111122001111122440022222222222222222222222222222222222222222222222222222222222222222222222222222222
22222211111122111122111111122111122001111122440022222222222222222222222222222222222222222222222222222222222222222222222222222222
22222211111122111122444112222111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22224411112222111122444112222111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22224411112222111122444222222444422222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22224444222222444444444222222444422222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22224444222222444444222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
__map__
000000000000000000000000808182832f2f2f2f2f2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000007000000909192932f2f2f2f2f2f84858687000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000b170a0000909192932f2f2f2f2f2f94959697000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000061b891a0800909192932f2f2f2f2f2f949696a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000168989891800909192932f2f2f2f2f2f949596a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b2b2b2b2b2b2b2b2b2b8b8b8b8b8b8b80000b2b2b2b8b8b8b8b8b8b8b8b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b2b2b2b2b2b2b2b2b2b0b0b0b0b0b0b0b0b0b2b2b2b0b0b0b1b0b0b0b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
c0c1c1c1c1c1c1c1c1c2c3c4c4c4c4c5888888888888888800008888888888888888000000000000000000000000000000000000000000008b8b8b8b8b8b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2e3e4e4e4e4e5000000000000000000008800888888888888890089000000008900000000000000000000000000008b8b8b8b8b8b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2c3c4c4c4c4c5000000000000000000008800888888888888899889000089898900000000000000000000000000008b8989898989890000000000000000000000009800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5000000000000000000008888888888888888898989000000000000000000000000000000000000008b8989898989890000000000000000000000898989890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5000000000000000000008800000088888888898989000088888800008800000088000000000000008b8b8b8b8b8b8b0000000000000000000000898b8b890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5000000000000000000008800000000008888898989000088888888008888880088000000000000008989898989898b00000000000089890000008b8b8b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5000000000000000000008800000000008888898989000000000000000000000088000000000000008989898989898b000000000089898b0000008b8b8b8b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5888888888888888800008800000000008888898989000000000000000000000088000000000000008b8b8b8b8b8b8b0000000089898b8b00898989898b8b8b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5888889888988888800898898888889888888898989000000000000000000000088890000008900008b898989898989000000898b8b898900898b8b8b8b89898b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d300000000d5888889988988888800898889888889008888898989000089000088880000890088898b008b8900008b898989898989000089898b898b8900898b8b8b8b89898b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d3d4d4d4d4d5888889898988888800898989898989888888898989000089898988888989890088898989898900008b8b8b8b8b8b8b988b898b8b89898b00898989898b8b8b8b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d1d1d1d1d1d1d1d2d3d4d4d4d4d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
e0e1e1e1e1e1e1e1e1e2e3e4e4e4e4e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
c3c4c4c4c4c4c4c4c4c4c4c4c4c4c4c500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d3d4d4d4d4d4d4d4d4d4d4d4d4d4d4d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
e3e4e4e4e4e4e4e4e4e4e4e4e4e4e4e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
490200003465028650216501c6501865016650166501665017650186501b6502065024650296502d6502e6502d6602b66026660236601f6601b66017660146600e6600b6600966008660176600d6700767006670
390100000265002650026500265002650026500265002650026500265002650006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600