-- title: Definitely not an Impostor -- name: impostor -- author: Teletype Games -- desc: Life of a programmer -- site: https://git.teletype.hu/games/impostor -- license: MIT License -- version: 1.0-beta1 -- script: lua a={}b={}c={}d={}e={}f={}g={}h={}i={}j={}k={}l={}m={}n={}o={}p={}q={}r={}s={}t={}u={}v={}w={}function w.initial_data()return{screen={width=240,height=136},colors={black=0,light_grey=2,dark_grey=1,red=13,light_blue=9,blue=3,white=4,item=7,meter_bg=1},timing={minigame_win_duration=180}}end function w.reset()local cd=w.initial_data()w.screen=cd.screen w.colors=cd.colors w.timing=cd.timing end local Q=7 local R=2 local S=0xDE function w.save()mset(S,R,Q)end function w.load()if mget(R,Q)==S then return else w.reset()end end w.load()local T=9 local U="ASCENSION"local V=false local W=false local X=0 local Y=0 local Z=120 local ab=false local bb=0 local cb=120 local db=nil function u.get_initial()V=false return{level=0,}end function u.get_level()if not x or not x.ascension then return 0 end return x.ascension.level end function u.get_max_level()return T end function u.increase()if not x or not x.ascension then return end x.ascension.level=math.min(T,x.ascension.level+1)V=true end function u.did_increase()return V end function u.consume_increase()local cd=V V=false return cd end function u.is_complete()return u.get_level()>=T end function u.draw(cd,dd,ed)if not x or not x.ascension then return end ed=ed or{}local fd=x.ascension.level if fd<1 then return end local gd=ed.lit_color or w.colors.white local hd=ed.spacing or 5 for id=1,fd do local jd=U:sub(id,id)local kd if id==fd and ab then kd=u.get_fade_color()else kd=gd end print(jd,cd+(id-1)*hd,dd,kd,false,1,true)end end function u.get_fade_color()if not db then db={w.colors.black,w.colors.dark_grey,w.colors.light_grey,w.colors.white,}end if not ab then return w.colors.white end local cd=math.min(bb/cb,1)local dd=math.floor(cd*(#db-1))+1 return db[dd]end function u.start_fade()ab=true bb=0 end function u.start_flash()W=true X=0 Y=Z end function u.draw_flash()if not W then return end X=X+1 local cd=w.screen.width local dd=w.screen.height local ed=X/Z local fd=math.abs(math.sin(ed*math.pi*6))local gd=(fd>0.5)and w.colors.white or w.colors.light_grey rect(0,0,cd,dd,gd)if X>=Y then W=false u.start_fade()end end function u.update_fade()if not ab then return end bb=bb+1 if bb>=cb then ab=false end end function u.is_flashing()return W end local eb=6 local fb=0 local gb=0xCA x={}function x.initial_data()return{current_menu_item=1,test_mode=false,popup={show=false,content={}},game_in_progress=false,stat_screen_active=false,minigame_ddr={},minigame_button_mash={},minigame_rhythm={},meters=c.get_initial(),ascension=u.get_initial(),timer=p.get_initial(),triggers={},home_norman_visible=false,have_been_to_office=false,have_done_work_today=false,should_ascend=false,have_met_sumphore=false,game={current_screen="home",current_situation=nil,},day_count=1,delta_time=0,last_frame_time=0,glitch={enabled=false,state="active",timer=0,},_end={state="choice",selection=1,},discussion={active=false,id=nil,step=1,selected_answer=1,scroll_y=0,scroll_timer=0,auto_scroll=true,return_window=nil,},}end function x.reset()local cd=x.initial_data()for dd in pairs(x)do if type(x[dd])~="function"then x[dd]=nil end end for dd,ed in pairs(cd)do x[dd]=ed end end function x.new_game()x.reset()x.game_in_progress=true y.refresh_menu_items()g.get_by_id(x.game.current_screen).init()v.start({text=[[ Norman was never a bad ... simulation engineer, ... but ... we need to be careful ... letting him improve. ... We need to distract him. ]],on_text_complete=function()m.sfx_alarm()x.home_norman_visible=false b.go_to_screen_by_id("home")z.start("game",{focus_center_x=(w.screen.width/2)-22,focus_center_y=(w.screen.height/2)-18,focus_initial_radius=0,target_points=100,instruction_text="Wake up Norman!",show_progress_text=false,on_win=function()m.music_play_wakingup()c.show()a.set_current("game")end,})end,})end function x.save_game()if not x.game_in_progress then return end mset(gb,fb,eb)end function x.load_game()if mget(fb,eb)~=gb then x.new_game()return end x.reset()x.game_in_progress=true y.refresh_menu_items()g.get_by_id(x.game.current_screen).init()end function b.safeindex(cd,dd)return((dd-1+#cd)%#cd)+1 end function b.go_to_screen_by_id(cd)local dd=g.get_by_id(x.game.current_screen)local ed=g.get_by_id(cd)if ed then x.game.current_screen=cd if dd and dd.exit then dd.exit()end ed.init()else A.show({"Error: Screen '"..cd.."' not found!"})end end function b.contains(cd,dd)for ed=1,#cd do if cd[ed]==dd then return true end end return false end function b.deepcopy(cd,dd)if type(cd)~="table"then return cd end if dd and dd[cd]then return dd[cd]end local ed={}dd=dd or{}dd[cd]=ed for fd,gd in pairs(cd)do local hd=b.deepcopy(fd,dd)local id=b.deepcopy(gd,dd)ed[hd]=id end return setmetatable(ed,getmetatable(cd))end function j.text(cd,dd,ed,fd,gd,hd)local id=w.colors.black if fd==id then id=w.colors.light_grey end hd=hd or 1 print(cd,dd+1,ed+1,id,gd,hd)print(cd,dd,ed,fd,gd,hd)end function j.text_center(cd,dd,ed,fd,gd,hd)hd=hd or 1 local id=print(cd,0,-6,0,gd,hd)local jd=dd-(id/2)j.text(cd,jd,ed,fd,gd,hd)end local hb=0 local ib=1 local jb=2 local kb=3 local lb=4 local mb=5 local nb=7 local ob=48 local pb=51 local qb=50 function k.up()return btnp(hb)end function k.down()return btnp(ib)end function k.left()return btnp(jb)end function k.right()return btnp(kb)end function k.space()return keyp(ob)end function k.select()return btnp(lb)or keyp(ob)end function k.menu_confirm()return btnp(lb)or keyp(qb)end function k.player_interact()return btnp(mb)or keyp(qb)end function k.menu_back()return btnp(nb)or keyp(pb)end function k.toggle_popup()return keyp(qb)end t={}function t.draw(cd,dd)dd=dd or{}local ed=dd.char_w or 4 local fd=dd.char_h or 5 local gd=dd.line_gap or 0 local hd=dd.word_gap or 6 local id=dd.color or w.colors.light_blue local jd={}local kd=0 for od in(cd.."\n"):gmatch("(.-)\n")do table.insert(jd,od)if#od>kd then kd=#od end end while#jd>0 and jd[1]:gsub("%s+","")==""do table.remove(jd,1)end while#jd>0 and jd[#jd]:gsub("%s+","")==""do table.remove(jd,#jd)end if#jd==0 then return end local ld=0 for od,pd in ipairs(jd)do if pd:find("#")then ld=ld+fd+gd else ld=ld+hd end end ld=ld-gd local md=dd.y or(w.screen.height-ld)/2 local nd=dd.x or(w.screen.width-(kd*ed))/2 for od,pd in ipairs(jd)do if pd:find("#")then for qd=1,#pd do local rd=pd:sub(qd,qd)if rd=="#"then rect(nd+(qd-1)*ed,md,ed,fd,id)end end md=md+fd+gd else md=md+hd end end return{x=nd,y=dd.y or(w.screen.height-ld)/2,width=kd*ed,height=ld,bottom=(dd.y or(w.screen.height-ld)/2)+ld}end s={}function s.draw(cd,dd)local ed=240 local fd=136 local gd=0 local hd=0 for id=0,fd-1 do for jd=0,ed-1 do if hd==0 then gd=gd+1 hd=dd[gd]end hd=hd-1 pix(jd,id,cd[gd])end end end local rb=1000 local sb=500 local tb=100 local ub=20 local vb=0.02 local wb=0.16 local xb=600 c.COLOR_ISM=w.colors.red c.COLOR_WPM=w.colors.blue c.COLOR_BM=w.colors.black c.COLOR_BG=w.colors.meter_bg function c.get_initial()return{ism=sb,wpm=sb,bm=sb,combo=0,combo_timer=0,hidden=false,}end function c.hide()if x and x.meters then x.meters.hidden=true end end function c.show()if x and x.meters then x.meters.hidden=false end end function c.get_max()return rb end function c.set_decay(cd)ub=cd end function c.get_decay_percentage()return math.floor(ub/rb*100)end function c.get_combo_multiplier()if not x or not x.meters then return 1 end local cd=x.meters.combo if cd==0 then return 1 end return 1+math.min(wb,vb*(2^(cd-1)))end function c.update()if not x or not x.game_in_progress or not x.meters then return end local cd=x.meters local dd=string.find(a.get_current_id(),"^minigame_")~=nil if not dd then if cd.combo>0 then cd.combo_timer=cd.combo_timer+1 if cd.combo_timer>=xb then cd.combo=0 cd.combo_timer=0 end end end end function c.add(cd,dd)if not x or not x.meters then return end local ed=x.meters if ed[cd]~=nil then ed[cd]=math.min(rb,ed[cd]+dd)end end function c.on_minigame_complete()local cd=x.meters local dd=math.floor(tb*c.get_combo_multiplier())c.add("wpm",dd)c.add("ism",dd)c.add("bm",dd)cd.combo=cd.combo+1 cd.combo_timer=0 end function c.draw()if not x or not x.game_in_progress or not x.meters then return end if x.meters.hidden then return end local cd=x.meters local dd=c.get_max()local ed=44 local fd=2 local gd=182 local hd=228 local id=5 local jd=1 local kd=math.floor((id-fd)/2)local ld={{key="wpm",label="WPM",color=c.COLOR_WPM,row=0},{key="ism",label="ISM",color=c.COLOR_ISM,row=1},{key="bm",label="BM",color=c.COLOR_BM,row=2},}for nd,od in ipairs(ld)do local pd=jd+od.row*id local qd=pd+kd local rd=math.max(0,math.floor((cd[od.key]/dd)*ed))rect(gd,qd,ed,fd,c.COLOR_BG)if rd>0 then rect(gd,qd,rd,fd,od.color)end print(od.label,hd,pd,od.color,false,1,true)end local md=jd+3*id+1 u.draw(gd,md,{spacing=5})end local yb=5 local zb=false local Ab=false local Bb=false local Cb=0 local Db=0 local Eb=0 local Fb=yb local Gb=nil local Hb=0 local Ib=0 local function Jb(cd,dd)local ed=math.max(cd,w.screen.width-cd)local fd=math.max(dd,w.screen.height-dd)return math.sqrt(ed*ed+fd*fd)end function n.start(cd,dd,ed)ed=ed or{}zb=true Ab=false Bb=false Cb=cd Db=dd Eb=ed.initial_radius or 0 Fb=ed.speed or yb Gb=ed.on_complete end function n.close(cd,dd,ed)ed=ed or{}zb=true Ab=true Bb=false Cb=cd Db=dd Eb=Jb(cd,dd)Fb=ed.speed or yb Gb=ed.on_complete end function n.start_driven(cd,dd,ed)ed=ed or{}zb=true Ab=false Bb=true Cb=cd Db=dd Hb=ed.initial_radius or 0 Ib=Jb(cd,dd)Eb=Hb Gb=nil end function n.set_percentage(cd)if not Bb then return end Eb=Hb+cd*(Ib-Hb)end function n.is_active()return zb end function n.stop()zb=false Ab=false Bb=false Eb=0 Gb=nil end function n.update()if not zb then return end if Bb then return end if Ab then Eb=Eb-Fb if Eb<=0 then local cd=Gb n.stop()if cd then cd()end end else Eb=Eb+Fb if Eb>=Jb(Cb,Db)then local cd=Gb n.stop()if cd then cd()end end end end function n.draw()if not zb then return end local cd=Cb local dd=Db local ed=Eb local fd=w.screen.width local gd=w.screen.height local hd=w.colors.black if Ab and ed<=0 then rect(0,0,fd,gd,hd)return end local id=math.max(0,math.floor(dd-ed))local jd=math.min(gd-1,math.ceil(dd+ed))if id>0 then rect(0,0,fd,id,hd)end if jd0 then rect(0,kd,nd,1,hd)end if od=1 then cd.progress=cd.progress-1 end end end function p.draw()if not x or not x.game_in_progress or not x.meters or not x.timer then return end if x.meters.hidden and not x.stat_screen_active then return end local cd=10 local dd=8 local ed=5 local fd=3 local gd=x.timer.progress local hd if gd<=0.25 then hd=w.colors.dark_grey elseif gd<=0.5 then hd=w.colors.light_blue elseif gd<=0.75 then hd=w.colors.blue elseif gd<=1 then hd=w.colors.red end local id=w.colors.white local jd=-math.pi*0.5 local kd=gd*2*math.pi local ld=ed*ed local md=fd*fd for qd=-ed,ed do for rd=-ed,ed do local sd=rd*rd+qd*qd if sd<=ld and sd>md then local td=math.atan(qd,rd)local ud=td-jd if ud<0 then ud=ud+2*math.pi end if ud<=kd then pix(cd+rd,dd+qd,hd)else pix(cd+rd,dd+qd,id)end end end end local nd=jd+kd local od=math.floor(cd+math.cos(nd)*(fd-1)+0.5)local pd=math.floor(dd+math.sin(nd)*(fd-1)+0.5)line(cd,dd,od,pd,w.colors.white)end local Mb={}function q.register(cd)if not cd or not cd.id then trace("Error: Invalid trigger registered (missing id)!")return end if not cd.duration or cd.duration<=0 then trace("Error: Invalid trigger registered (missing or invalid duration)!")return end if not cd.on_start then cd.on_start=function()end end if not cd.on_stop then cd.on_stop=function()end end if cd.repeating==nil then cd.repeating=false end if Mb[cd.id]then trace("Warning: Overwriting trigger with id: "..cd.id)end Mb[cd.id]=cd end function q.get_by_id(cd)return Mb[cd]end function q.get_all()return Mb end function q.is_active(cd)if not x or not x.triggers then return false end return x.triggers[cd]~=nil end function q.start(cd)if not x or not x.triggers then return end local dd=Mb[cd]if not dd then trace("Error: Cannot start unknown trigger: "..tostring(cd))return end x.triggers[cd]={elapsed=0}dd.on_start()end function q.stop(cd)if not x or not x.triggers then return end local dd=Mb[cd]if not dd then trace("Error: Cannot stop unknown trigger: "..tostring(cd))return end if not x.triggers[cd]then return end x.triggers[cd]=nil dd.on_stop()end function q.reset(cd)if not x or not x.triggers then return end if not Mb[cd]then trace("Error: Cannot reset unknown trigger: "..tostring(cd))return end if not x.triggers[cd]then return end x.triggers[cd].elapsed=0 end function q.update()if not x or not x.game_in_progress or not x.triggers then return end local cd=string.find(a.get_current_id(),"^minigame_")~=nil if cd then return end local dd={}for ed,fd in pairs(x.triggers)do local gd=Mb[ed]if gd then fd.elapsed=fd.elapsed+1 if fd.elapsed>=gd.duration then table.insert(dd,ed)end else table.insert(dd,ed)end end for ed,fd in ipairs(dd)do local gd=Mb[fd]if gd then gd.on_stop()if gd.repeating then x.triggers[fd]={elapsed=0}else x.triggers[fd]=nil end else x.triggers[fd]=nil end end end function d.draw_win_overlay(cd)local dd=cd or"SUCCESS"local ed=#dd*6 local fd=6 local gd=4 local hd=ed+gd*2 local id=fd+gd*2 local jd=(w.screen.width-hd)/2 local kd=(w.screen.height-id)/2 rect(jd,kd,hd,id,w.colors.dark_grey)rectb(jd,kd,hd,id,w.colors.white)j.text_center(dd,w.screen.width/2,kd+gd,w.colors.white)end B={}function B.show()if x and x.glitch then x.glitch.enabled=true end end function B.hide()if x and x.glitch then x.glitch.enabled=false end end function B.draw()if not x or not x.glitch or not x.glitch.enabled then return end x.glitch.timer=x.glitch.timer-1 if x.glitch.timer<=0 then if x.glitch.state=="active"then x.glitch.state="waiting"x.glitch.timer=math.random(20,60)else x.glitch.state="active"x.glitch.timer=math.random(40,100)end end if x.glitch.state=="active"then for cd=1,15 do local dd=math.random(0,w.screen.width-1)local ed=math.random(0,w.screen.height-1)local fd=pix(dd,ed)local gd=math.random(2,40)for hd=0,gd-1 do local id=ed+hd if idhd then hd=kd end end ed=(w.screen.width-hd)/2 end for hd,id in ipairs(cd)do local jd=fd+(hd-1)*10 if hd==dd then j.text(">",ed-8,jd,w.colors.light_blue)end j.text(id.label,ed,jd,w.colors.light_blue)end end function i.update_menu(cd,dd)if k.up()then m.sfx_beep()dd=dd-1 if dd<1 then dd=#cd end elseif k.down()then m.sfx_beep()dd=dd+1 if dd>#cd then dd=1 end end return dd end function i.draw_textbox(cd,dd,ed,fd,gd,hd,id,jd,kd,ld)id=id or w.colors.white jd=jd or w.colors.dark_grey kd=kd or w.colors.white ld=ld or false local md=4 local nd=8 local od=dd+md local pd=ed+md local qd=dd+(fd/2)local rd=gd-md*2 local sd=i.word_wrap(cd,30)local td=#sd*nd local ud=pd if ld and td=pd and xd+nd<=pd+rd then if ld then j.text_center(wd,qd,xd,id)else j.text(wd,od,xd,id)end end end rectb(dd,ed,fd,gd,kd)end function i.word_wrap(cd,dd)if cd==nil then return{""}end local ed={}local function fd(hd)return(hd:gsub("^%s+",""):gsub("%s+$",""))end local function gd(hd,id)if hd:sub(id,id):match("%s")then return id end for jd=id-1,1,-1 do if hd:sub(jd,jd):match("%s")then return jd end end return nil end for hd in(cd.."\n"):gmatch("(.-)\n")do local id=fd(hd)if id==""then table.insert(ed,"")else while#id>dd do local jd=gd(id,dd)local kd=fd(id:sub(1,jd))if not jd or kd==""then kd=id:sub(1,dd)jd=dd end table.insert(ed,kd)id=fd(id:sub(jd+1))end table.insert(ed,id)end end if#ed==0 then return{""}end return ed end m={music_playing=nil}function m.music_stop()music()m.music_playing=nil end function m.music_play(cd)if m.music_playing~=cd then music(cd)m.music_playing=cd end end function m.music_play_mainmenu()end function m.music_play_mystery()m.music_play(2)end function m.music_play_wakingup()end function m.music_play_room_morning()end function m.music_play_room_street_1()end function m.music_play_room_street_2()end function m.music_play_room_()end function m.music_play_room_work()m.music_play(0)end function m.music_play_activity_work()m.music_play(1)end function m.sfx_select()sfx(17,'C-7',30)end function m.sfx_deselect()sfx(18,'C-7',30)end function m.sfx_beep()sfx(19,'C-6',30)end function m.sfx_success()sfx(16,'C-7',60)end function m.sfx_bloop()sfx(21,'C-3',60)end function m.sfx_alarm()sfx(34,"C-5",240)end function m.sfx_drum_low()sfx(61,"C-2")end function m.sfx_drum_high()sfx(61,"C-6")end function m.sfx_arrowhit(cd)sfx(56,cd)end local Ob={model={["...|..."]={next={["..."]=0.71111111111111,["A-4"]=0.0074074074074074,["B-4"]=0.0037037037037037,["C-3"]=0.011111111111111,["C-4"]=0.037037037037037,["C-5"]=0.11111111111111,["C-6"]=0.0037037037037037,["D-4"]=0.011111111111111,["D-5"]=0.018518518518519,["E-4"]=0.0074074074074074,["E-5"]=0.025925925925926,["F-5"]=0.0074074074074074,["G-3"]=0.0037037037037037,["G-4"]=0.022222222222222,["G-5"]=0.018518518518519},total=270},["...|A-4"]={next={["..."]=0.9,["C-5"]=0.1},total=10},["...|A-5"]={next={["..."]=1},total=8},["...|B-4"]={next={["..."]=1},total=1},["...|B-5"]={next={["..."]=1},total=5},["...|C-3"]={next={["..."]=0.66666666666667,["C-5"]=0.33333333333333},total=3},["...|C-4"]={next={["..."]=0.875,["D-4"]=0.083333333333333,["E-4"]=0.041666666666667},total=24},["...|C-5"]={next={["..."]=0.73333333333333,["B-4"]=0.033333333333333,["C-5"]=0.066666666666667,["D-5"]=0.13333333333333,["E-5"]=0.033333333333333},total=60},["...|C-6"]={next={["..."]=1},total=1},["...|D-4"]={next={["..."]=0.92857142857143,["D-4"]=0.071428571428571},total=14},["...|D-5"]={next={["..."]=0.80645161290323,["C-5"]=0.032258064516129,["D-5"]=0.032258064516129,["E-5"]=0.12903225806452},total=31},["...|D-6"]={next={["..."]=1},total=3},["...|E-4"]={next={["..."]=1},total=19},["...|E-5"]={next={["..."]=0.77777777777778,["C-5"]=0.022222222222222,["D-5"]=0.13333333333333,["F-5"]=0.066666666666667},total=45},["...|F-3"]={next={["..."]=1},total=3},["...|F-4"]={next={["..."]=0.8,["D-4"]=0.1,["F-4"]=0.1},total=10},["...|F-5"]={next={["..."]=0.66666666666667,["D-5"]=0.066666666666667,["E-5"]=0.066666666666667,["G-5"]=0.2},total=15},["...|G-3"]={next={["..."]=0.8,["G-5"]=0.2},total=5},["...|G-4"]={next={["..."]=0.95652173913043,["E-4"]=0.043478260869565},total=23},["...|G-5"]={next={["..."]=0.875,["A-5"]=0.0625,["E-5"]=0.0625},total=16},["...|G-6"]={next={["..."]=1},total=1},["A-4|..."]={next={["..."]=0.55555555555556,["C-5"]=0.33333333333333,["D-5"]=0.11111111111111},total=9},["A-4|B-4"]={next={["C-5"]=1},total=2},["A-4|C-5"]={next={["..."]=1},total=1},["A-4|G-4"]={next={["F-4"]=1},total=2},["A-5|..."]={next={["..."]=0.2,["B-5"]=0.1,["E-4"]=0.1,["E-5"]=0.4,["F-5"]=0.1,["G-5"]=0.1},total=10},["A-5|G-5"]={next={["..."]=0.33333333333333,["A-5"]=0.66666666666667},total=3},["B-4|..."]={next={["A-4"]=1},total=1},["B-4|A-4"]={next={["G-4"]=1},total=2},["B-4|C-5"]={next={["..."]=1},total=2},["B-5|..."]={next={["..."]=0.2,["A-5"]=0.2,["D-6"]=0.4,["G-5"]=0.2},total=5},["C-3|..."]={next={["C-4"]=1},total=2},["C-3|C-5"]={next={["..."]=0.33333333333333,["C-3"]=0.66666666666667},total=3},["C-4|..."]={next={["..."]=0.5,["D-4"]=0.125,["E-4"]=0.041666666666667,["F-3"]=0.041666666666667,["G-3"]=0.16666666666667,["G-4"]=0.083333333333333,["G-5"]=0.041666666666667},total=24},["C-4|D-4"]={next={["E-4"]=1},total=2},["C-4|E-4"]={next={["..."]=1},total=1},["C-5|..."]={next={["..."]=0.40677966101695,["A-4"]=0.067796610169492,["C-5"]=0.050847457627119,["D-5"]=0.20338983050847,["E-5"]=0.15254237288136,["F-5"]=0.016949152542373,["G-4"]=0.10169491525424},total=59},["C-5|B-4"]={next={["A-4"]=1},total=2},["C-5|C-3"]={next={["C-5"]=1},total=2},["C-5|C-5"]={next={["..."]=0.8,["C-5"]=0.2},total=5},["C-5|D-5"]={next={["..."]=0.3,["C-5"]=0.2,["D-5"]=0.1,["E-5"]=0.4},total=10},["C-5|E-5"]={next={["..."]=0.33333333333333,["D-5"]=0.33333333333333,["G-5"]=0.33333333333333},total=3},["C-6|..."]={next={["A-5"]=1},total=1},["D-4|..."]={next={["..."]=0.26666666666667,["A-5"]=0.066666666666667,["C-4"]=0.2,["E-4"]=0.4,["F-3"]=0.066666666666667},total=15},["D-4|C-4"]={next={["..."]=1},total=2},["D-4|D-4"]={next={["..."]=1},total=1},["D-4|E-4"]={next={["F-4"]=1},total=2},["D-5|..."]={next={["..."]=0.2258064516129,["A-4"]=0.032258064516129,["A-5"]=0.032258064516129,["C-5"]=0.2258064516129,["E-5"]=0.29032258064516,["F-5"]=0.096774193548387,["G-5"]=0.096774193548387},total=31},["D-5|C-5"]={next={["..."]=0.77777777777778,["D-5"]=0.22222222222222},total=9},["D-5|D-5"]={next={["..."]=0.5,["E-5"]=0.5},total=2},["D-5|E-5"]={next={["..."]=0.33333333333333,["E-5"]=0.11111111111111,["F-5"]=0.55555555555556},total=9},["D-5|F-5"]={next={["E-5"]=1},total=1},["D-6|..."]={next={["B-5"]=0.66666666666667,["G-6"]=0.33333333333333},total=3},["E-4|..."]={next={["..."]=0.19047619047619,["B-5"]=0.047619047619048,["C-4"]=0.14285714285714,["D-4"]=0.23809523809524,["F-4"]=0.19047619047619,["G-4"]=0.19047619047619},total=21},["E-4|D-4"]={next={["C-4"]=1},total=2},["E-4|F-4"]={next={["G-4"]=1},total=2},["E-5|..."]={next={["..."]=0.18604651162791,["A-5"]=0.046511627906977,["C-5"]=0.27906976744186,["D-5"]=0.2093023255814,["E-5"]=0.069767441860465,["F-5"]=0.093023255813953,["G-4"]=0.023255813953488,["G-5"]=0.093023255813953},total=43},["E-5|C-5"]={next={["E-5"]=1},total=1},["E-5|D-5"]={next={["..."]=0.125,["C-5"]=0.75,["F-5"]=0.125},total=8},["E-5|E-5"]={next={["F-5"]=1},total=1},["E-5|F-5"]={next={["..."]=0.5,["E-5"]=0.4,["G-5"]=0.1},total=10},["E-5|G-5"]={next={["..."]=0.5,["F-5"]=0.5},total=2},["F-3|..."]={next={["C-4"]=1},total=3},["F-4|..."]={next={["D-4"]=0.11111111111111,["E-4"]=0.44444444444444,["G-4"]=0.44444444444444},total=9},["F-4|D-4"]={next={["..."]=1},total=1},["F-4|E-4"]={next={["D-4"]=1},total=2},["F-4|F-4"]={next={["..."]=1},total=1},["F-4|G-4"]={next={["A-4"]=1},total=2},["F-5|..."]={next={["..."]=0.2,["A-5"]=0.066666666666667,["D-5"]=0.2,["E-5"]=0.46666666666667,["G-5"]=0.066666666666667},total=15},["F-5|A-5"]={next={["G-5"]=1},total=1},["F-5|D-5"]={next={["..."]=1},total=1},["F-5|E-5"]={next={["..."]=0.5,["D-5"]=0.16666666666667,["F-5"]=0.16666666666667,["G-5"]=0.16666666666667},total=6},["F-5|G-5"]={next={["..."]=0.75,["A-5"]=0.25},total=4},["G-3|..."]={next={["C-4"]=0.5,["D-4"]=0.25,["F-3"]=0.25},total=4},["G-3|G-5"]={next={["..."]=0.5,["G-3"]=0.5},total=2},["G-4|..."]={next={["..."]=0.090909090909091,["A-4"]=0.090909090909091,["C-4"]=0.045454545454545,["C-5"]=0.18181818181818,["D-5"]=0.045454545454545,["E-4"]=0.22727272727273,["E-5"]=0.045454545454545,["F-4"]=0.27272727272727},total=22},["G-4|A-4"]={next={["B-4"]=1},total=2},["G-4|E-4"]={next={["..."]=1},total=1},["G-4|F-4"]={next={["E-4"]=1},total=2},["G-5|..."]={next={["..."]=0.35,["A-5"]=0.05,["B-5"]=0.05,["C-5"]=0.05,["D-4"]=0.05,["E-5"]=0.25,["F-5"]=0.2},total=20},["G-5|A-5"]={next={["..."]=0.5,["G-5"]=0.5},total=4},["G-5|E-5"]={next={["..."]=1},total=1},["G-5|F-5"]={next={["A-5"]=1},total=1},["G-5|G-3"]={next={["G-5"]=1},total=1},["G-6|..."]={next={["D-6"]=1},total=1}},order=2}local function Pb(cd)local dd={}for ed in string.gmatch(cd,"[^|]+")do dd[#dd+1]=ed end return dd end local function Qb(cd)local dd=0 for ed,fd in ipairs(cd)do if fd~="..."then dd=dd+1 end end return dd end local function Rb(cd,dd)local ed=cd.order local fd=cd.model local gd={}for jd,kd in pairs(fd)do gd[#gd+1]=jd end local hd=gd[math.ceil(math.random()*#gd)]local id=Pb(hd)while Qb(id)
0 then local gd=cd[dd]local hd=e.get_label(gd)local id=fd+4 j.text("<",2,id,w.colors.light_blue)j.text_center(hd,w.screen.width/2,id,w.colors.item)j.text(">",w.screen.width-6,id,w.colors.light_blue)end end function e.update(cd,dd)if k.left()then m.sfx_beep()dd=b.safeindex(cd,dd-1)elseif k.right()then m.sfx_beep()dd=b.safeindex(cd,dd+1)end return dd end e.register({id="have_a_coffee",label="Have a Coffee",handle=function()local cd=f.apply("drink_coffee",x.game.current_screen)local dd=u.get_level()local ed="coworker_disc_0"if dd>=1 and dd<=3 then local fd=x.have_done_work_today and("_asc_"..dd)or("_"..dd)ed="coworker_disc"..fd end r.start(ed,"game")x.game.current_situation=cd end,})e.register({id="go_to_home",label="Go Home",condition=function()return x.have_been_to_office and x.have_done_work_today end,handle=function()b.go_to_screen_by_id("home")end,})e.register({id="go_to_toilet",label="Go to Toilet",handle=function()b.go_to_screen_by_id("toilet")end,})e.register({id="go_to_walking_to_office",label="Walk to office",handle=function()b.go_to_screen_by_id("walking_to_office")end,})e.register({id="go_to_office",label="Go to Office",handle=function()b.go_to_screen_by_id("office")end,})e.register({id="go_to_end",label="Break the cycle",condition=function()return u.is_complete()end,handle=function()a.set_current("end")end,})e.register({id="go_to_walking_to_home",label="Walk home",handle=function()b.go_to_screen_by_id("walking_to_home")end,})e.register({id="go_to_sleep",label="Go to Sleep",condition=function()return x.have_been_to_office and x.have_done_work_today end,handle=function()c.hide()o.increase()F.start("game",{focus_center_x=(w.screen.width/2)-22,focus_center_y=(w.screen.height/2)-18,focus_initial_radius=0,on_win=function()local cd=u.consume_increase()local dd=u.get_level()v.start({skip_text=not cd,text=cd and v.get_text_for_level(dd)or nil,})end,})end,})e.register({id="do_work",label="Do Work",handle=function()c.hide()b.go_to_screen_by_id("work")local cd={}cd[0]="normal"cd[1]="only_special"cd[2]="only_left"cd[3]="only_nothing"G.start("game","generated",{on_win=function(dd)if(dd.special_mode_condition and x.ascension.level==1)then x.should_ascend=true elseif(dd.special_mode_condition and x.ascension.level==2)then x.should_ascend=true elseif(dd.special_mode_condition and x.ascension.level==3)then x.should_ascend=true elseif(dd.special_mode_condition and x.ascension.level==4)then x.should_ascend=true end c.show()b.go_to_screen_by_id("office")a.set_current("game")x.have_done_work_today=true end,special_mode=cd[u.get_level()]})end,})e.register({id="sumphore_discussion",label=function()if x.have_met_sumphore then return"Talk to Sumphore"end return"Talk to the homeless guy"end,handle=function()if not x.have_met_sumphore then r.start("homeless_guy","game")return end local cd=u.get_level()if cd>=1 and cd<=3 then r.start("sumphore_disc_asc_"..cd,"game")else r.start("homeless_guy","game",4)end end,})r.register({id="sumphore_disc_asc_1",steps={{question="Are you still seeking the ox?",answers={{label="Huh? What ox?",next_step=2},{label="Are you drunk, old man?",next_step=nil},},},{question="Did you never think there would be more to this?",answers={{label="I'm not sure what you mean.",next_step=nil},},},},})r.register({id="sumphore_disc_asc_2",steps={{question="How's work? Your face looks strange",answers={{label="I just really need to take a break.",next_step=2},{label="Not sure what you mean.",next_step=nil},},},{question="Are you seeing things?",answers={{label="How did you know ?",next_step=3},{label="I'm not sure what you mean.",next_step=nil},},},{question="Come have a drink, I could tell you some stories.",answers={{label="No, drink makes you stupid and I need to be in top shape.",next_step=4,on_select=function()c.add("ism",10)end},{label="I could use a drink.",next_step=nil,on_select=function()c.add("bm",10)end},},},{question="Always trying to do the right thing, huh? What if you did the left thing instead?",answers={{label="I've never thought of that up till now.",next_step=nil,on_select=function()c.add("ism",5)end},{label="Silly wordgames, I like them.",next_step=nil,on_select=function()c.add("wpm",10)end},},},},})r.register({id="sumphore_disc_asc_3",steps={{question="Do you think it's work you're doing?",answers={{label="... that sounds like it's from a movie.",next_step=2},{label="Are you drunk, old man?",next_step=nil},},},{question="You might just be trying too hard, why dont you just flow for a while?",answers={{label="Flow where ?",next_step=3},{label="I'm not sure what you mean.",next_step=nil},},},{question="Flow carelessly, without any effort",answers={{label="Consuming sth other than alcohol ?",next_step=nil},{label="Deja vu",next_step=nil},},},},})r.register({id="homeless_guy",steps={{question="Sup bro, how are you?",answers={{label="I'm doing great, thanks!",next_step=2},{label="Not as good as you",next_step=nil},},},{question="What's your name?",answers={{label="Norman Reds, nice to meet you.",next_step=3},{label="Mom told me not to talk to strangers.",next_step=nil},},},{question="That name ... could it be? I know a guy with that name...",answers={{label="Never met you before.",next_step=4},{label="I'm not sure what you mean.",next_step=nil},},},{question="My name is Sumphore, nice to meet you.",answers={{label="Nice to meet you, Sumphore.",next_step=5,on_select=function()x.have_met_sumphore=true end},},},{question="You're a good guy, I can tell. You abide by the rules. Life would be so much easier if more people were like you ...",answers={{label="Thanks, I try my best.",next_step=nil},},},},})r.register({id="coworker_disc_0",steps={{question="Good morning Normal, enjoying your coffee as usual, huh?",answers={{label="The name is Norman, not Normal",next_step=2},},},{question="Can't work without some good coffee, no? ",answers={{label="Mhmm",next_step=nil},},},},})r.register({id="coworker_disc_1",steps={{question="Norman, you look confused, what's up?",answers={{label="Just some bugs I noticed",next_step=2},},},{question="Your coffee also seems whiter than usual!",answers={{label="I feel like latte today",next_step=nil},},},},})r.register({id="coworker_disc_asc_1",steps={{question="Normann you look weird and unfocused. You are usually locked in and not like this, what's up?",answers={{label="Nothing it's just, I noticed some bugs in the simulation, maybe.",next_step=2},},},{question="Are you fixing bugs nobody noticed before?",answers={{label="Maybe",next_step=nil},},},},})r.register({id="coworker_disc_2",steps={{question="Hey Norman, do you have new socks on? That's a weird color!",answers={{label="Huh? True ...",next_step=2},},},{question="You look strange today, Normal, you put your tie on backwards, is everything ok? ",answers={{label="Get it right, Norman ... NORMAN!",next_step=3},},},{question="Yo Normann, text goes from left to right, not right to left, these parts!",answers={{label="Uhm...why?",next_step=nil},},},},})r.register({id="coworker_disc_asc_2",steps={{question="Normann, are you ok? You were doing weird things while typing?",answers={{label="Naw",next_step=2},},},{question="Oh, it's ok, I'm not wathcing you. Noone really is. *giggle*",answers={{label="Huh ?",next_step=nil},},},},})r.register({id="coworker_disc_3",steps={{question="You look so happy, did you catch a bull or something?",answers={{label="What do you mean?",next_step=2},},},{question="Most people catch colds! You are so strange!",answers={{label="An apple a day keeps the cold away",next_step=3},},},{question="You look like you don't really want to work today, are you ok?",answers={{label="Oh brother",next_step=nil},},},},})r.register({id="coworker_disc_asc_3",steps={{question="Normal, you should take a break, you don't live up to your name today",answers={{label="Norman is the name ...",next_step=2},},},{question="You aren't as enthusiastic as you were before!",answers={{label="Burnout comes for everyone",next_step=nil},},},},})local bc={}function h.get_maps_array()local cd={}for dd,ed in pairs(bc)do table.insert(cd,ed)end return cd end function h.register(cd)if bc[cd.id]then trace("Warning: Overwriting map with id: "..cd.id)end bc[cd.id]=cd end function h.get_by_id(cd)return bc[cd]end function h.draw(cd)local dd=h.get_by_id(cd)if not dd then return end map(dd.from_x,dd.from_y,dd.width,dd.height,dd.to_x,dd.to_y)end h.register({id="bedroom",from_x=0,from_y=0,width=30,height=17,to_x=0,to_y=0,})h.register({id="street",from_x=30,from_y=0,width=30,height=17,to_x=0,to_y=0,})h.register({id="office",from_x=60,from_y=0,width=30,height=17,to_x=0,to_y=0,})local cc={}function g.register(cd)if cc[cd.id]then trace("Warning: Overwriting screen with id: "..cd.id)end if not cd.situations then cd.situations={}end if not cd.init then cd.init=function()end end if not cd.exit then cd.exit=function()end end if not cd.update then cd.update=function()end end if not cd.draw then cd.draw=function()end end cc[cd.id]=cd end function g.get_by_id(cd)return cc[cd]end function g.get_all()return cc end g.register({id="home",name="Home",decisions={"go_to_toilet","go_to_walking_to_office","go_to_sleep","go_to_end",},init=function()m.music_play_room_work()end,background="bedroom",draw=function()if x.home_norman_visible and a.get_current_id()=="game"then l.draw_at("norman",100,80)end end})g.register({id="toilet",name="Toilet",decisions={"go_to_home",},background="bedroom",init=function()m.music_play_mystery()x.stat_screen_active=true c.hide()local cd=w.screen.width*0.75 local dd=w.screen.height*0.75 n.start_driven(cd,dd)n.set_percentage(0.15)end,update=function()if not x.stat_screen_active then return end if k.select()or k.player_interact()then n.stop()x.stat_screen_active=false c.show()b.go_to_screen_by_id("home")end end,draw=function()if not x.stat_screen_active then return end local cd=w.screen.width local dd=cd/2 local ed=math.floor(cd*0.75)local fd=math.floor(w.screen.height*0.75)local gd=math.floor(cd*0.75)local hd=math.floor((cd-gd)/2)local id=4 l.draw_at("norman",ed,fd)j.text_center("day "..x.day_count,dd,10,w.colors.white)local jd="reflecting on my past and present\n...\nboth eventually flushed."local kd=i.word_wrap(jd,38)local ld=24 for vd,wd in ipairs(kd)do j.text_center(wd,dd,ld,w.colors.light_grey)ld=ld+8 end local md=x.meters local nd=c.get_max()local od=c.get_decay_percentage()local pd=string.format("-%d%%",od)local qd=c.get_combo_multiplier()local rd=math.floor((qd-1)*100)local sd=string.format("+%d%%",rd)local td=ld+10 local ud={{key="wpm",label="Work Productivity Meter"},{key="ism",label="Impostor Syndrome Meter"},{key="bm",label="Burnout Meter"},}for vd,wd in ipairs(ud)do local xd=td+(vd-1)*20 j.text_center(wd.label,dd,xd,w.colors.white)local yd=xd+8 local zd=math.max(0,math.floor((md[wd.key]/nd)*gd))rect(hd,yd,gd,id,c.COLOR_BG)if zd>0 then rect(hd,yd,zd,id,w.colors.blue)end local Ad=print(pd,0,-6,0,false,1)j.text(pd,hd-Ad-4,yd,w.colors.light_blue)j.text(sd,hd+gd+4,yd,w.colors.light_blue)end if u.get_level()>0 then local vd=td+#ud*20 local wd=vd+10 local xd=8 local yd=u.get_level()*xd local zd=math.floor((cd-yd)/2)u.draw(zd,wd,{spacing=xd})end end,})g.register({id="walking_to_office",name="Walking to office",decisions={"go_to_home","go_to_office","sumphore_discussion",},init=function()m.music_play_room_work()end,background="street",draw=function()if a.get_current_id()=="game"then l.draw_at("norman",7*8,3*8)l.draw_at("sumphore",9*8,2*8)l.draw_at("pizza_vendor",19*8,1*8)l.draw_at("dev_guard",22*8,2*8)l.draw_at("matrix_trinity",5*8,11*8)l.draw_at("matrix_neo",7*8,11*8)l.draw_at("matrix_oraculum",9*8,12*8)l.draw_at("matrix_architect",11*8,11*8)end end})g.register({id="office",name="Office",decisions={"do_work","go_to_walking_to_home","have_a_coffee",},situations={"drink_coffee",},init=function()m.music_play_room_work()end,background="office",draw=function()if a.get_current_id()=="game"then l.draw_at("norman",13*8,9*8)l.draw_at("dev_buddy",15*8,9*8)l.draw_at("dev_project_manager",6*8,4*8)l.draw_at("dev_hr_girl",12*8,4*8)l.draw_at("dev_introvert",-4+5*8,9*8)l.draw_at("dev_extrovert",20*8,4*8)l.draw_at("dev_girl",23*8,5*8)l.draw_at("dev_boy",10*8,11*8+4)l.draw_at("dev_guru",22*8,10*8+4)l.draw_at("dev_operator",27*8,10*8+4)end x.have_been_to_office=true end})g.register({id="walking_to_home",name="Walking to home",decisions={"go_to_home","go_to_office",},init=function()m.music_play_room_work()end,background="street",draw=function()if a.get_current_id()=="game"then l.draw_at("norman",7*8,3*8)l.draw_at("pizza_vendor",19*8,1*8)l.draw_at("dev_guard",22*8,2*8)end end})g.register({id="work",name="Work",decisions={},background_color=w.colors.blue,})local dc="text"local ec="day"local fc="choice"local gc=[[ Normann seems to be in line, ... and stays seeking for oxes ... within the confines. ... Very good. ]]local hc=[[ We have a problem! ... Normann formed his first thought. ... He saw the tracks. ]]local ic=[[ Not good, not terrible. ... Normann caught his glimpse ... of another way ... - quite literally - ... if this continues, ... we will lose control. ]]local jc=[[ There is no turning back now for Norman. ... He caught on. ... I hoped it would never come to this... ]]local kc=[[ Wait, who are you? ... *silence* ... Why am I seeing this? ... *silence* ... ]]local lc={[1]=gc,[2]=hc,[3]=ic,[4]=jc,[5]=kc,}function v.get_text_for_level(cd)return lc[cd]or gc end local mc=dc local nc=w.screen.height local oc=12 local pc=0 local qc=2 local rc=false local sc=0 local tc=2 local uc=1 local vc=gc local wc=nil local xc=nil local yc=true local zc=false v.choices={{label="Wake Up",},{label="Stay in Bed",},}function v.draw_background()local cd={0,1,0,1,0,1,0,1,0,1,0,1,2,1,4,1,0,2,4,1,0,2,4,1,0,2,4,1,0,2,4,1,0,2,4,2,1,4,2,1,4,1,0,2,4,1,0,1,4,2,1,2,1,0,1,2,4,1,0,2,4,2,1,0,1,2,1,2,1,0,1,4,1,0,2,4,2,0,1,0,1,0,1,2,4,1,0,2,4,2,1,0,1,4,1,0,2,4,2,0,1,2,4,1,0,2,4,1,0,1,0,4,1,0,2,4,0,1,0,1,0,1,0,4,1,0,2,4,0,1,4,1,0,2,4,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,0,4,1,0,2,4,1,0,1,0,4,1,0,2,4,1,0,1,0,1,4,1,0,2,4,1,2,1,0,1,4,1,0,2,4,2,1,0,1,2,4,1,0,2,4,2,1,0,1,2,4,1,0,2,4,1,2,0,1,0,1,0,1,2,1,2,1,0,2,4,1,0,2,4,0,1,0,1,2,1,0,1,0,2,4,1,0,2,4,2,1,0,1,0,1,4,1,0,2,4,2,1,0,1,0,2,4,2,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,4,1,0,2,4,2,1,0,1,0,2,0,1,4,1,0,2,4,1,0,1,0,1,2,0,1,4,1,0,2,4,2,1,0,1,0,1,4,1,0,2,4,2,1,0,2,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,4,1,0,2,4,1,0,1,0,1,4,1,0,2,4,0,1,0,1,0,1,0,1,4,1,0,2,4,0,1,0,1,0,1,4,1,0,2,4,1,0,1,0,2,4,1,0,2,4,2,1,0,1,0,1,0,1,2,4,1,0,2,4,2,1,0,1,0,1,0,1,2,4,1,0,2,4,2,1,0,1,0,1,0,1,4,1,0,2,4,2,4,1,0,1,0,1,0,1,0,1,0,1,2,1,4,2,4,1,0,2,4,2,1,0,1,0,1,0,1,0,1,0,1,2,1,4,2,4,1,0,2,4,2,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,4,1,0,2,4,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,2,1,4,1,0,2,4,2,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,1,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,2,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,2,0,1,0,1,0,4,1,0,2,4,0,1,0,1,0,2,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,0,2,0,1,4,1,0,2,4,0,1,0,1,0,1,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,0,1,0,1,4,1,0,2,4,1,0,2,0,1,0,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,0,1,2,4,1,0,2,4,1,0,1,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,0,4,1,0,2,4,1,0,2,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,4,1,0,2,4,1,0,1,0,1,2,4,1,0,2,4,1,0,1,0,1,2,4,1,0,2,4,2,1,0,1,0,1,2,4,1,0,2,4,2,1,0,1,0,1,2,4,1,0,2,4,2,0,1,0,1,4,1,0,2,4,2,0,1,0,1,0,4,1,0,2,4,1,0,1,0,1,0,1,4,1,0,2,4,0,1,0,1,4,2,1,0,1,2,1,2,1,0,1,2,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,0,1,2,0,1,0,2,1,0,1,2,0,1,0,2,0,1,0,1,0,1,2,0,1,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,1,0,1,0,2,1,0,1,0,1,2,0,1,0,2,0,2,1,0,1,2,0,2,1,0,1,0,1,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,0,2,1,0,1,0,1,0,1,0,1,0,2,1,0,1,2,0,1,0,1,2,1,0,1,0,1,0,1,0,2,1,0,2,0,1,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,1,0,2,1,0,1,2,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0}local dd={1480,1,151,1,87,1,1,150,1,1,86,1,2,148,1,2,87,2,148,2,88,2,148,2,88,2,148,2,88,2,148,2,88,2,70,1,2,9,1,2,63,2,88,2,69,1,2,3,5,1,1,1,1,1,1,1,61,2,88,2,68,1,1,3,1,2,1,3,2,3,2,61,2,88,2,68,1,6,1,4,1,5,1,1,60,2,88,2,67,1,1,17,2,60,2,88,2,67,1,19,1,1,59,2,88,2,67,1,19,1,1,59,2,88,2,67,4,1,11,1,1,1,3,59,2,88,2,67,21,1,59,2,88,2,67,21,1,59,2,88,2,66,1,21,2,58,2,88,2,66,1,21,1,1,58,2,88,2,66,4,17,2,1,58,2,88,2,65,2,5,1,15,2,58,2,88,2,63,1,1,2,22,4,55,2,88,2,57,2,2,34,2,2,49,2,88,2,55,1,2,39,3,1,47,2,88,2,55,5,1,3,2,2,1,25,1,1,1,1,1,1,1,47,2,88,2,57,1,2,1,29,1,4,1,1,1,1,49,2,88,2,59,1,2,8,15,9,2,52,2,88,2,62,2,1,1,1,24,1,1,1,54,2,88,2,66,1,22,1,58,2,88,2,66,1,21,1,59,2,88,2,66,2,20,1,59,2,88,2,65,3,20,2,58,2,88,2,63,2,2,1,20,1,1,2,56,2,88,2,61,2,4,1,20,1,2,2,55,2,88,2,59,1,1,6,1,19,1,4,2,54,2,88,2,58,2,7,2,17,1,1,6,2,52,3,87,2,56,1,2,9,1,26,2,51,3,87,2,55,1,1,40,1,50,2,88,2,54,2,41,1,50,2,88,2,53,2,42,2,49,2,88,2,52,2,44,2,48,2,88,2,51,2,46,2,47,2,88,2,50,2,16,1,31,1,47,2,88,2,50,3,1,14,1,29,1,1,2,46,2,88,2,50,18,1,29,1,2,1,46,2,88,2,50,4,14,1,33,1,45,2,88,2,53,1,3,11,2,15,1,13,1,2,46,2,88,2,56,1,1,11,1,15,1,10,2,1,49,2,88,2,55,2,3,10,2,12,2,8,8,46,2,88,2,50,1,1,4,4,1,9,2,11,2,8,2,4,2,1,2,1,1,42,2,88,2,48,2,3,8,1,9,2,9,3,7,2,8,1,1,2,1,1,40,2,88,2,45,3,2,1,1,1,1,8,1,7,1,1,3,6,4,6,1,8,1,1,1,1,4,2,38,2,88,2,45,1,2,2,22,4,4,4,6,1,10,1,1,2,1,2,1,2,37,2,88,2,42,1,1,1,4,1,2,19,1,1,4,1,5,21,1,2,6,35,2,88,2,42,2,1,1,1,1,15,2,8,3,4,3,6,1,17,1,1,2,1,1,1,34,2,88,2,41,3,1,1,15,2,9,3,5,2,8,1,21,1,1,34,2,88,2,41,1,1,1,16,2,11,2,5,2,9,2,18,2,1,34,2,88,2,41,1,2,1,14,2,13,1,5,1,12,1,17,1,2,34,2,88,2,41,1,16,1,17,1,2,1,14,2,17,1,1,33,2,88,2,41,1,2,1,12,1,17,1,3,2,15,1,14,1,1,1,1,33,2,88,2,41,15,1,22,1,17,1,1,11,1,3,1,33,2,88,2,41,1,14,2,40,1,15,1,33,2,88,2,41,1,15,2,35,1,3,1,10,1,4,1,33,2,88,2,41,1,3,1,12,2,36,2,11,1,4,1,33,2,88,2,40,1,1,18,1,35,1,12,1,4,1,1,32,2,88,2,40,2,4,1,14,1,33,1,12,1,6,1,32,2,88,2,40,1,6,1,14,1,31,1,13,1,6,1,32,2,88,2,39,2,22,2,28,1,21,1,1,31,2,88,2,39,2,24,1,26,1,22,1,1,31,2,88,2,39,2,25,1,24,1,23,1,1,31,2,88,2,39,1,27,1,22,2,23,1,1,31,2,88,2,39,1,49,2,24,3,30,2,88,2,39,1,48,1,27,1,1,30,2,88,2,39,1,47,2,27,1,1,30,2,88,2,37,1,1,47,2,28,1,1,30,2,88,2,37,1,1,46,1,30,2,1,29,2,88,2,37,1,47,1,30,2,30,2,88,2,37,1,1,2,43,1,33,30,3,87,2,37,1,45,1,31,1,1,2,29,3,87,2,37,45,1,35,1,29,1,1,88,2,1,35,1,1,80,2,1,26,1,3,86,1,1,2,1,21,1,4,4,2,1,3,80,30,1,2,125,2,80,2,156,2,79,2,1,156,2,1,77,4,156,1,3,76,3,1,140,1,15,1,2,2,74,2,1,1,1,5,3,129,1,18,1,82,1,7,1,129,1,18,1,82,1,9,1,123,3,20,1,1,80,2,11,1,1,119,1,22,1,1,1,2,76,4,1,154,2,2,63,1,14,3,1,126,1,27,2,65,1,17,1,17,2,132,4,66,1,17,4,113,39,66,2,16,31,191,1,1,1,15,1,153,2,15,3,48,2,16,2,152,1,16,1,1,1,48,2,16,2,152,1,1,2,2,1,10,1,1,1,48,1,13,6,153,1,3,13,1,1,48,1,15,2,1,1,153,3,64,1,16,2,154,1,1,83,1,154,1,17,1,66,1,154,1,17,1,66,1,155,1,82,1,156,1,82,1,156,1,1,80,1,1,157,2,78,2,158,2,78,2,158,1,80,1,158,1,79,2,158,1,79,1,159,1,79,1,160,1,77,2,160,1,77,1,162,1,74,1,1,1,162,1,75,1,239,1,165,1,72,1,166,1,240,1,69,1,412,1,63,1,175,1,63,2,238,1,175,1,63,1,239,1,807}s.draw(cd,dd)end function v.draw_day_switch_background()local cd={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}local dd={86,2,238,2,225,1,10,5,224,1,8,8,221,4,5,2,1,8,219,6,2,13,217,1,2,19,1,1,213,2,4,19,2,1,211,2,5,19,3,1,208,1,7,20,4,1,204,2,7,2,1,19,5,1,201,2,7,2,3,19,6,1,198,2,7,2,5,9,2,1,2,5,7,1,195,2,7,2,7,5,7,7,8,1,192,2,7,2,9,5,8,6,9,1,188,3,7,2,11,5,9,5,10,1,186,2,7,2,13,5,9,5,11,1,182,2,7,3,15,5,9,5,12,1,179,2,8,2,17,5,9,5,13,1,176,2,7,3,19,5,9,5,14,1,173,2,7,3,21,5,9,5,15,1,169,3,7,2,24,5,9,5,16,1,166,2,8,2,26,5,9,5,3,1,177,2,8,3,27,5,9,5,4,1,13,1,159,3,7,3,30,5,8,6,5,1,170,3,7,3,32,5,7,7,6,1,13,1,153,2,8,2,35,19,7,1,164,2,7,3,37,19,8,1,160,3,7,3,39,19,9,1,156,3,8,3,41,19,10,1,153,3,8,2,44,19,25,1,136,3,8,2,46,19,160,2,8,3,48,19,157,3,7,4,50,7,6,6,15,1,139,2,9,3,52,6,7,6,16,1,12,1,122,3,8,3,55,6,7,6,17,1,132,4,7,3,57,6,7,6,159,2,60,6,7,6,32,1,123,3,62,6,7,6,33,1,119,4,64,6,7,6,22,1,128,3,67,6,7,6,150,2,1,1,67,6,7,6,153,1,67,6,7,6,25,1,11,1,115,1,67,6,7,6,26,1,126,1,67,6,7,6,28,1,124,1,67,6,7,6,29,1,11,1,111,1,67,6,7,6,30,1,11,1,110,1,66,7,6,8,42,1,109,1,66,21,32,1,10,1,71,4,33,1,66,21,115,1,2,1,33,1,66,21,119,1,32,1,66,21,36,1,115,1,66,21,48,1,66,1,2,1,33,1,66,21,38,1,10,1,65,4,33,1,66,21,152,1,66,21,152,1,66,8,6,7,152,1,66,7,7,7,114,6,32,1,66,7,7,7,114,6,32,1,66,7,7,7,57,1,56,2,2,2,32,1,66,7,7,7,58,1,18,1,35,7,32,1,12,1,49,1,3,7,7,7,19,1,1,1,2,2,24,1,8,2,46,1,4,8,32,1,66,8,6,7,12,1,1,1,4,3,2,2,2,2,2,1,18,2,7,3,44,1,3,9,32,1,12,1,1,1,51,8,6,7,14,1,1,2,1,1,1,1,2,3,1,3,1,1,3,1,2,2,11,4,1,1,2,5,41,1,3,10,32,1,12,3,51,8,5,8,7,3,2,1,1,1,1,2,1,1,1,1,1,4,1,6,1,2,2,2,1,2,1,3,1,2,1,6,1,2,1,4,39,3,2,3,1,6,32,1,8,1,2,6,2,1,4,1,2,1,7,1,30,8,5,8,2,2,3,1,1,1,6,2,1,11,1,6,2,2,1,2,1,6,1,15,24,5,1,3,1,7,2,3,1,10,28,1,14,1,9,2,1,1,38,8,1,1,2,9,1,3,10,1,1,6,10,1,2,2,1,1,3,9,1,4,1,6,1,7,8,47,26,1,27,1,7,1,18,1,4,1,4,13,1,9,1,3,3,1,1,1,1,4,1,1,2,3,2,5,2,7,1,2,1,6,1,7,1,16,1,53,25,1,66,8,1,1,3,8,1,3,3,1,1,2,3,1,1,1,1,4,2,2,2,1,7,1,2,1,1,1,1,4,1,3,1,31,7,2,1,15,6,2,1,7,1,2,25,1,66,7,7,7,29,1,2,1,3,1,6,1,16,1,2,3,6,14,5,16,2,6,10,2,25,1,66,7,7,7,57,1,7,6,1,36,9,8,1,1,25,1,66,7,7,7,68,35,7,11,5,1,25,1,66,7,7,7,69,2,1,3,1,22,7,16,2,1,2,1,25,1,66,8,6,7,75,19,6,21,2,1,2,1,92,21,79,4,1,7,4,26,2,1,2,1,2,1,89,21,91,12,9,1,1,7,2,1,28,1,66,21,87,12,13,9,98,21,84,11,19,6,99,21,80,12,22,2,3,1,32,1,66,21,70,1,5,13,25,6,99,21,73,13,28,6,2,1,29,1,66,21,69,14,31,7,31,1,66,21,58,2,6,14,39,1,99,8,4,9,55,1,6,15,42,1,99,8,5,8,51,2,6,15,145,8,5,8,48,2,5,17,147,8,5,8,43,3,6,17,150,8,5,8,40,2,6,18,153,8,5,8,36,3,5,20,155,8,5,8,32,4,5,19,1,2,156,8,5,8,29,3,6,19,95,1,66,8,5,8,25,4,5,21,97,1,66,8,5,8,22,4,5,21,167,8,5,8,18,5,5,21,170,8,5,8,14,6,4,23,105,1,66,8,5,8,11,4,6,23,108,1,66,8,5,8,8,4,6,23,111,1,66,8,5,8,4,4,6,24,114,1,66,8,5,14,7,23,116,1,66,8,6,8,2,1,4,25,119,1,66,8,5,8,3,1,2,24,122,1,66,8,3,38,124,1,65,24,1,22,127,1,63,1,1,44,130,1,63,7,1,5,1,30,132,1,58,3,1,42,135,1,58,14,2,27,138,1,56,10,1,32,140,1,53,8,4,27,1,3,143,1,49,9,1,1,2,1,1,24,2,2,147,1,47,7,5,32,148,1,30,1,12,8,5,32,151,1,28,1,1,1,3,1,4,4,1,3,6,35,151,1,22,10,1,10,1,1,4,39,151,1,20,25,2,41,151,1,18,47,1,22,151,1,18,70,148,2,1,1,17,71,148,4,17,71,148,4,14,61,2,10,149,6,10,63,2,10,149,8,4,66,4,9,149,80,2,9,149,91,149,92,78,3,67,92,148,80,3,9,148,92,148,92,148,92,148,92,74,1,3,2,68,92,73,3,2,3,67,92,69,1,3,3,2,2,68,94,66,2,1,5,2,3,67,95,58,15,2,1,69,96,55,21,68}s.draw(cd,dd)end function v.go_to_day_state()if xc then xc()xc=nil end if x.game.current_screen~="mysterious_man"then return end mc=ec pc=qc end function v.wake_up()x.home_norman_visible=false b.go_to_screen_by_id("home")z.start("game",{focus_center_x=(w.screen.width/2)-22,focus_center_y=(w.screen.height/2)-18,focus_initial_radius=0,target_points=100,instruction_text="Wake up Norman!",show_progress_text=false,on_win=function()m.music_play_wakingup()c.show()if zc then zc=false u.start_flash()end a.set_current("game")end,})end function v.stay_in_bed()o.increase()mc=ec pc=qc end function v.start(cd)cd=cd or{}pc=0 rc=false sc=0 uc=1 vc=cd.text or gc nc=w.screen.height wc=cd.day_text xc=cd.on_text_complete c.hide()zc=not cd.skip_text if cd.skip_text then yc=false mc=ec pc=qc else yc=true mc=dc end b.go_to_screen_by_id("mysterious_man")a.set_current("game")end function v.set_text(cd)vc=cd end g.register({id="mysterious_man",name="Mysterious Man",decisions={},background_color=w.colors.black,init=function()m.music_play_mystery()end,exit=function()m.music_stop()end,update=function()if mc==dc then if not rc then nc=nc-(oc*x.delta_time)local cd=1 for dd in string.gmatch(vc,"\n")do cd=cd+1 end if nc<-cd*8 or k.select()then rc=true sc=tc if k.select()then v.go_to_day_state()end end else sc=sc-x.delta_time if sc<=0 or k.select()then v.go_to_day_state()if 4<=u.get_level()then a.set_current("continued")end end end elseif mc==ec then pc=pc-x.delta_time if pc<=0 or k.select()then if zc or u.get_level()<1 then v.wake_up()else mc=fc uc=1 end end elseif mc==fc then uc=i.update_menu(v.choices,uc)if k.select()then m.sfx_select()if uc==1 then v.wake_up()else v.stay_in_bed()end end end end,draw=function()if yc then v.draw_background()end if mc==dc then local cd=w.screen.width/2 local dd=nc for ed in(vc.."\n"):gmatch("(.-)\n")do j.text_center(ed,cd,dd,w.colors.light_grey)dd=dd+8 end elseif mc==ec then v.draw_day_switch_background()local cd=wc or("Day "..x.day_count)j.text_center(cd,w.screen.width/2,w.screen.height/2-3,w.colors.white)elseif mc==fc then local cd=(w.screen.width-60)/2 local dd=(w.screen.height-20)/2 i.draw_menu(v.choices,uc,cd,dd)end end,})local Ac={}function a.register(cd,dd)Ac[cd]=dd end function a.get(cd)return Ac[cd]end function a.set_current(cd)x.current_window=cd end function a.get_current_id()return x.current_window end function a.get_current_handler()local cd=a.get(x.current_window)if cd and cd.update and cd.draw then return function()cd.update()cd.draw()end else return function()trace("Error: No handler for window: "..tostring(x.current_window))end end end H={}a.register("intro_title",H)I={}a.register("intro_ttg",I)J={}a.register("intro_brief",J)y={}a.register("menu",y)K={}a.register("game",K)A={}a.register("popup",A)L={}a.register("configuration",L)M={}a.register("audiotest",M)z={}a.register("minigame_button_mash",z)F={}a.register("minigame_rhythm",F)G={}a.register("minigame_ddr",G)N={}a.register("end",N)O={}a.register("discussion",O)P={}a.register("continued",P)function N.draw()cls(w.colors.black)if x._end.state=="choice"then local cd={"This is not a workplace.","This is a cycle.","And if it is a cycle...","it can be broken."}local dd=40 for jd,kd in ipairs(cd)do j.text_center(kd,w.screen.width/2,dd,w.colors.white)dd=dd+10 end dd=dd+20 local ed=x._end.selection==1 and w.colors.light_blue or w.colors.white local fd=x._end.selection==2 and w.colors.light_blue or w.colors.white local gd=(x._end.selection==1 and"> YES"or" YES")local hd=(x._end.selection==2 and"> NO"or" NO")local id=w.screen.width/2 j.text(gd,id-40,dd,ed)j.text(hd,id+10,dd,fd)elseif x._end.state=="ending"then j.text_center("Game over -- good ending.",w.screen.width/2,50,w.colors.light_blue)j.text_center("Congratulations!",w.screen.width/2,70,w.colors.white)j.text_center("Press Z to return to menu",w.screen.width/2,110,w.colors.light_grey)end end function N.update()if x._end.state=="choice"then if k.left()or k.up()then if x._end.selection==2 then m.sfx_beep()x._end.selection=1 end elseif k.right()or k.down()then if x._end.selection==1 then m.sfx_beep()x._end.selection=2 end end if k.menu_confirm()then m.sfx_select()if x._end.selection==1 then x._end.state="ending"else o.increase()b.go_to_screen_by_id("home")a.set_current("game")local cd=g.get_by_id("home")if cd and cd.init then cd.init()end end end elseif x._end.state=="ending"then if k.menu_confirm()then a.set_current("menu")y.refresh_menu_items()end end end H.timer=180 H.text=[[ ## ### ### ### ### ### ### ### # # # # # # # # # # # # # # # # # # ### ### # # # # # ### # # # # # # # # # # # # # # ## ### # ### # # ### # ### ## # # # ### ### ## # # ## # # # # # # ## # # ## # # # #### # ## # # # # # # # # # # # ### # # # # # ### # # ### #### ### ### #### ### # ## ## # # # # # # # # # # # # # # ### # # ### # # # ### # # # # # # # # # # # # ### # # # #### ### # #### # # ]]function H.draw()t.draw(H.text,{})end function H.update()H.timer=H.timer-1 if H.timer<=0 or k.select()or k.menu_confirm()then a.set_current("intro_ttg")end end I.timer=180 I.glitch_started=false I.space_count=0 I.space_timer=0 I.text=[[ ###### ###### ###### ## ## # ## ## # #### ## ## # # ## ## ###### ]]function I.draw()local cd=t.draw(I.text,{})if not cd then return end j.text_center("Teletype Games",(w.screen.width/2+3),(cd.bottom+4),w.colors.light_blue)end function I.update()if not I.glitch_started then B.show()I.glitch_started=true end if k.menu_back()then I.space_count=I.space_count+1 end I.timer=I.timer-1 if I.timer<=0 or k.menu_confirm()then if I.space_count==3 then x.test_mode=true y.refresh_menu_items()m.sfx_success()end B.hide()a.set_current("intro_brief")end end J.y=w.screen.height J.speed=30 J.text=[[ Norman Reds’ everyday life seems ordinary: work, meetings, coffee, and endless notifications. But beneath him, or around him — something is constantly building, and it soon becomes clear that there is more going on than meets the eye. ]]function J.draw()local cd=(w.screen.width-132)/2 j.text(J.text,cd,J.y,w.colors.light_blue)end function J.update()J.y=J.y-(J.speed*x.delta_time)local cd=1 for dd in string.gmatch(J.text,"\n")do cd=cd+1 end if J.y<-cd*8 or k.select()or k.menu_confirm()then a.set_current("menu")end end local Bc={}function y.draw()local cd="Definitely not an Impostor"if x.test_mode then cd=cd.." (TEST MODE)"end i.draw_top_bar(cd)local dd=#Bc*10 local ed=10+(w.screen.height-10-10-dd)/2 i.draw_menu(Bc,x.current_menu_item,0,ed,true)local fd="TTG"local gd=print(fd,0,-10,0,false,1,false)j.text(fd,w.screen.width-gd-5,w.screen.height-10,w.colors.light_blue)end function y.update()x.current_menu_item=i.update_menu(Bc,x.current_menu_item)if k.menu_confirm()then local cd=Bc[x.current_menu_item]if cd and cd.decision then m.sfx_select()cd.decision()end end end function y.new_game()x.new_game()end function y.load_game()x.load_game()K.set_state("game")end function y.save_game()x.save_game()end function y.resume_game()K.set_state("game")end function y.exit()exit()end function y.configuration()L.init()K.set_state("configuration")end function y.audio_test()M.init()K.set_state("audiotest")end function y.continued()P.timer=300 K.set_state("continued")end function y.ddr_test()M.init()K.set_state("minigame_ddr")G.start("menu","generated",{special_mode="only_nothing"})end function y.refresh_menu_items()Bc={}if x.game_in_progress then table.insert(Bc,{label="Resume Game",decision=y.resume_game})table.insert(Bc,{label="Save Game",decision=y.save_game})end table.insert(Bc,{label="New Game",decision=y.new_game})table.insert(Bc,{label="Load Game",decision=y.load_game})table.insert(Bc,{label="Configuration",decision=y.configuration})if x.test_mode then table.insert(Bc,{label="Audio Test",decision=y.audio_test})table.insert(Bc,{label="To Be Continued...",decision=y.continued})table.insert(Bc,{label="DDR Test",decision=y.ddr_test})end table.insert(Bc,{label="Exit",decision=y.exit})x.current_menu_item=1 end L.controls={}L.selected_control=1 function L.init()L.controls={{label="Save",action=function()w.save()end,type="action_item"},{label="Restore Defaults",action=function()w.reset()end,type="action_item"},}end function L.draw()i.draw_top_bar("Configuration")local cd=10 local dd=40 local ed=w.screen.width-10 local fd=4 for gd,hd in ipairs(L.controls)do local id=dd+(gd-1)*12 local jd=w.colors.light_blue if hd.type=="numeric_stepper"then local kd=hd.get()local ld=hd.label local md=string.format(hd.format,kd)local nd=ed-(#md*fd)if gd==L.selected_control then jd=w.colors.item j.text("<",cd-8,id,jd)j.text(ld,cd,id,jd)j.text(md,nd,id,jd)j.text(">",ed+4,id,jd)else j.text(ld,cd,id,jd)j.text(md,nd,id,jd)end elseif hd.type=="action_item"then local kd=hd.label if gd==L.selected_control then jd=w.colors.item j.text("<",cd-8,id,jd)j.text(kd,cd,id,jd)j.text(">",cd+8+(#kd*fd)+4,id,jd)else j.text(kd,cd,id,jd)end end end j.text("Press B to go back",cd,120,w.colors.light_grey)end function L.update()if k.menu_back()then K.set_state("menu")return end if k.up()then L.selected_control=L.selected_control-1 if L.selected_control<1 then L.selected_control=#L.controls end elseif k.down()then L.selected_control=L.selected_control+1 if L.selected_control>#L.controls then L.selected_control=1 end end local cd=L.controls[L.selected_control]if cd then if cd.type=="numeric_stepper"then local dd=cd.get()if k.left()then local ed=math.max(cd.min,dd-cd.step)cd.set(ed)elseif k.right()then local ed=math.min(cd.max,dd+cd.step)cd.set(ed)end elseif cd.type=="action_item"then if k.menu_confirm()then cd.action()end end end end M.index_menu=1 M.index_func=1 M.list_func={}M.menuitems={}M.last_pressed=false function M.generate_menuitems(cd,dd)return{{label="Play music/sound: "..(cd[dd]or"?"),decision=function()local ed=m[cd[dd]]if ed then ed()else trace("Invalid Audio function: "..cd[dd])end end},{label="Stop playing music",decision=function()m.music_stop()end},{label="Back",decision=function()M.back()end},}end function M.generate_listfunc()local cd={}for dd,ed in pairs(m)do if type(ed)=="function"then cd[#cd+1]=dd end end table.sort(cd)return cd end function M.back()m.sfx_deselect()K.set_state("menu")end function M.init()M.last_pressed=false M.index_menu=1 M.index_func=1 M.list_func=M.generate_listfunc()M.menuitems=M.generate_menuitems(M.list_func,M.index_func)end function M.draw()i.draw_top_bar("Audio test")i.draw_menu(M.menuitems,M.index_menu,20,50)end function M.update()if k.up()then M.index_menu=b.safeindex(M.menuitems,M.index_menu-1)elseif k.down()then M.index_menu=b.safeindex(M.menuitems,M.index_menu+1)elseif k.left()then M.index_func=b.safeindex(M.list_func,M.index_func-1)M.menuitems=M.generate_menuitems(M.list_func,M.index_func)elseif k.right()then M.index_func=b.safeindex(M.list_func,M.index_func+1)M.menuitems=M.generate_menuitems(M.list_func,M.index_func)elseif k.menu_confirm()then M.menuitems[M.index_menu].decision()elseif k.menu_back()then M.back()end end local Cc=40 local Dc=40 local Ec=160 local Fc=80 local Gc=Cc+10 local Hc=Dc+10 local Ic=8 function A.show(cd)x.popup.show=true x.popup.content=cd or{}K.set_state("popup")end function A.hide()x.popup.show=false x.popup.content={}K.set_state("game")end function A.update()if x.popup.show then if k.menu_confirm()or k.menu_back()then A.hide()end end end function A.draw()if x.popup.show then rect(Cc,Dc,Ec,Fc,w.colors.black)rectb(Cc,Dc,Ec,Fc,w.colors.light_blue)local cd=Hc for dd,ed in ipairs(x.popup.content)do j.text(ed,Gc,cd,w.colors.light_grey)cd=cd+Ic end j.text("[A] Close",Gc,Dc+Fc-Ic-2,w.colors.light_blue)end end function z.init_context()return{bar_fill=0,target_points=100,fill_per_press=8,base_degradation=0.15,degradation_multiplier=0.006,button_pressed_timer=0,button_press_duration=8,instruction_text="MASH Z!",show_progress_text=true,return_window=nil,bar_x=20,bar_y=10,bar_width=200,bar_height=12,button_x=20,button_y=110,button_size=12,focus_center_x=nil,focus_center_y=nil,focus_initial_radius=0,win_timer=0,on_win=nil}end function z.init(cd)local dd=z.init_context()if cd then for ed,fd in pairs(cd)do dd[ed]=fd end if cd.max_fill and not cd.target_points then dd.target_points=cd.max_fill end end x.minigame_button_mash=dd end function z.start(cd,dd)z.init(dd)local ed=x.minigame_button_mash ed.return_window=cd or"game"if ed.focus_center_x then n.start_driven(ed.focus_center_x,ed.focus_center_y,{initial_radius=ed.focus_initial_radius})end a.set_current("minigame_button_mash")end function z.update()local cd=x.minigame_button_mash if cd.win_timer>0 then cd.win_timer=cd.win_timer-1 if cd.win_timer==0 then c.on_minigame_complete()if cd.focus_center_x then n.stop()end x.home_norman_visible=true x.have_done_work_today=false x.have_been_to_office=false if cd.on_win then cd.on_win()else c.show()a.set_current(cd.return_window)end end return end if k.select()then m.sfx_drum_high()cd.bar_fill=cd.bar_fill+cd.fill_per_press cd.button_pressed_timer=cd.button_press_duration if cd.bar_fill>cd.target_points then cd.bar_fill=cd.target_points end end if cd.bar_fill>=cd.target_points then m.sfx_select()cd.win_timer=w.timing.minigame_win_duration return end local dd=cd.base_degradation+(cd.bar_fill*cd.degradation_multiplier)cd.bar_fill=cd.bar_fill-dd if cd.bar_fill<0 then cd.bar_fill=0 end if cd.button_pressed_timer>0 then cd.button_pressed_timer=cd.button_pressed_timer-1 end if cd.focus_center_x then n.set_percentage(cd.bar_fill/cd.target_points)end end function z.draw()local cd=x.minigame_button_mash if cd.return_window=="game"then K.draw_with_underlay(function()l.draw_at("sleeping_norman",(w.screen.width/2)-30,(w.screen.height/2)-22)end)end if not cd.focus_center_x then rect(0,0,w.screen.width,w.screen.height,w.colors.black)end rect(cd.bar_x-2,cd.bar_y-2,cd.bar_width+4,cd.bar_height+4,w.colors.light_grey)rectb(cd.bar_x-2,cd.bar_y-2,cd.bar_width+4,cd.bar_height+4,w.colors.dark_grey)local dd=(cd.bar_fill/cd.target_points)*cd.bar_width if dd>0 then local fd=w.colors.light_blue if cd.bar_fill>66 then fd=w.colors.item elseif cd.bar_fill>33 then fd=w.colors.blue end rect(cd.bar_x,cd.bar_y,dd,cd.bar_height,fd)end local ed=w.colors.light_grey if cd.button_pressed_timer>0 then ed=w.colors.light_blue end circb(cd.button_x,cd.button_y,cd.button_size,ed)if cd.button_pressed_timer>0 then circ(cd.button_x,cd.button_y,cd.button_size-2,ed)end j.text_center("Z",cd.button_x,cd.button_y-3,ed)j.text_center(cd.instruction_text,w.screen.width/2,cd.bar_y+cd.bar_height+10,w.colors.light_grey)if cd.show_progress_text then local fd=math.floor(cd.bar_fill).."/"..cd.target_points j.text_center(fd,cd.bar_x+cd.bar_width/2,cd.bar_y+2,w.colors.black)end if cd.win_timer>0 then d.draw_win_overlay()end end function F.init_context()return{line_position=0,line_speed=0.015,line_direction=1,target_center=0.5,target_width=0.3,initial_target_width=0.3,min_target_width=0.08,target_shrink_rate=0.9,score=0,max_score=10,button_pressed_timer=0,button_press_duration=10,return_window=nil,bar_x=20,bar_y=10,bar_width=200,bar_height=12,button_x=210,button_y=110,button_size=10,press_cooldown=0,press_cooldown_duration=15,focus_center_x=nil,focus_center_y=nil,focus_initial_radius=0,win_timer=0,on_win=nil}end function F.init(cd)local dd=F.init_context()if cd then for ed,fd in pairs(cd)do dd[ed]=fd end end x.minigame_rhythm=dd end function F.start(cd,dd)F.init(dd)local ed=x.minigame_rhythm ed.return_window=cd or"game"if ed.focus_center_x then n.start_driven(ed.focus_center_x,ed.focus_center_y,{initial_radius=ed.focus_initial_radius})end a.set_current("minigame_rhythm")end function F.update()local cd=x.minigame_rhythm if cd.win_timer>0 then cd.win_timer=cd.win_timer-1 if cd.win_timer==0 then c.on_minigame_complete()if cd.focus_center_x then n.stop()end if cd.on_win then cd.on_win()else c.show()a.set_current(cd.return_window)end end return end cd.line_position=cd.line_position+(cd.line_speed*cd.line_direction)if cd.line_position>1 then cd.line_position=1 cd.line_direction=-1 elseif cd.line_position<0 then cd.line_position=0 cd.line_direction=1 end if cd.press_cooldown>0 then cd.press_cooldown=cd.press_cooldown-1 end if k.select()and cd.press_cooldown==0 then cd.button_pressed_timer=cd.button_press_duration cd.press_cooldown=cd.press_cooldown_duration local dd=cd.target_center-(cd.target_width/2)local ed=cd.target_center+(cd.target_width/2)if cd.line_position>=dd and cd.line_position<=ed then cd.score=cd.score+1 else cd.score=cd.score-1 if cd.score<0 then cd.score=0 end end cd.target_width=cd.initial_target_width*(cd.target_shrink_rate^cd.score)if cd.target_width=cd.max_score then m.sfx_select()cd.win_timer=w.timing.minigame_win_duration return end if cd.button_pressed_timer>0 then cd.button_pressed_timer=cd.button_pressed_timer-1 end if cd.focus_center_x then n.set_percentage(1-cd.score/cd.max_score)end end function F.draw()local cd=x.minigame_rhythm if cd.return_window=="game"then K.draw_with_underlay(function()l.draw_at("sleeping_norman",(w.screen.width/2)-30,(w.screen.height/2)-22)end)end if not cd.focus_center_x then rect(0,0,w.screen.width,w.screen.height,w.colors.black)end rect(cd.bar_x-2,cd.bar_y-2,cd.bar_width+4,cd.bar_height+4,w.colors.light_grey)rectb(cd.bar_x-2,cd.bar_y-2,cd.bar_width+4,cd.bar_height+4,w.colors.dark_grey)rect(cd.bar_x,cd.bar_y,cd.bar_width,cd.bar_height,w.colors.dark_grey)local dd=cd.target_center-(cd.target_width/2)local ed=cd.bar_x+(dd*cd.bar_width)local fd=cd.target_width*cd.bar_width rect(ed,cd.bar_y,fd,cd.bar_height,w.colors.light_blue)local gd=cd.bar_x+(cd.line_position*cd.bar_width)rect(gd-1,cd.bar_y,2,cd.bar_height,w.colors.item)j.text_center("Sleep Norman ... Sleep!",w.screen.width/2,cd.bar_y+cd.bar_height+14,w.colors.light_grey)local hd=w.colors.light_grey if cd.button_pressed_timer>0 then hd=w.colors.light_blue end circb(cd.button_x,cd.button_y,cd.button_size,hd)if cd.button_pressed_timer>0 then circ(cd.button_x,cd.button_y,cd.button_size-2,hd)end j.text_center("Z",cd.button_x,cd.button_y-3,hd)if cd.win_timer>0 then d.draw_win_overlay()end end function G.draw_background()local cd={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}local dd={809,40,5,26,178,42,4,7,30,10,127,103,11,1,116,124,116,124,115,18,60,47,115,10,105,10,115,9,108,9,114,9,108,9,114,9,108,9,114,9,33,31,44,9,114,9,34,28,46,9,114,9,108,9,114,9,108,9,114,9,108,9,114,9,108,9,114,9,109,8,114,9,109,8,114,9,109,9,112,10,105,1,3,9,111,11,104,2,3,9,111,11,101,5,3,9,111,11,101,5,3,9,111,9,103,5,3,9,111,9,99,1,2,6,3,9,111,9,99,1,2,8,1,9,111,9,3,1,88,1,3,1,2,11,1,9,111,9,3,1,88,1,3,14,1,9,111,9,3,1,88,1,3,1,2,11,1,9,111,9,3,1,88,1,5,12,1,9,111,9,3,1,88,1,3,14,1,9,111,9,3,1,88,3,1,1,2,11,1,9,111,9,3,1,88,3,1,14,1,9,111,9,3,1,88,3,2,13,2,8,111,9,3,1,88,3,3,12,3,8,110,9,3,1,88,3,3,12,3,9,109,9,3,1,88,3,1,14,3,9,109,9,3,1,90,1,1,7,3,4,3,9,109,9,3,1,90,1,1,5,6,3,3,9,108,10,3,1,44,1,4,1,40,1,1,5,7,2,3,9,108,10,3,1,44,1,4,1,38,3,1,5,7,3,2,9,108,10,3,1,48,1,39,3,1,5,7,2,3,9,108,10,3,1,88,3,1,5,6,3,3,9,108,10,3,1,32,5,4,4,3,2,38,3,1,15,2,9,108,10,3,1,41,5,2,2,2,4,32,3,1,15,2,9,108,10,2,2,41,9,2,5,3,1,3,1,23,3,1,9,1,5,2,9,108,10,2,2,41,12,35,3,1,7,4,4,2,9,108,10,2,2,32,26,30,3,1,5,7,3,2,9,108,10,2,2,36,21,31,9,7,3,2,9,108,10,2,2,35,23,30,10,6,3,2,9,108,10,2,2,35,23,30,11,4,4,2,9,108,10,2,2,34,24,30,19,2,9,108,10,2,2,33,25,30,19,2,9,108,10,2,2,32,28,28,19,2,9,108,10,2,2,32,30,26,19,2,9,108,10,2,2,33,31,24,19,2,9,108,10,2,4,37,17,32,19,2,10,107,10,2,5,85,19,2,10,107,10,2,109,2,10,107,12,1,107,3,10,107,133,107,133,107,133,107,133,107,133,107,133,107,133,118,111,129,6,63,3,28,10,121,13,98,6,142,7,76,6,129,10,13,5,77,15,109,4,31,4,78,4,24,7,75,173,66,176,64,177,62,178,62,178,62,56,31,2,7,2,2,3,2,1,2,1,61,8,62,56,114,8,62,56,114,8,62,56,114,8,62,56,114,8,62,9,8,39,114,9,61,8,9,39,114,9,61,8,9,39,114,9,61,8,9,39,114,9,61,8,9,39,114,9,61,8,9,39,114,9,61,8,9,39,115,8,61,8,8,40,115,8,61,56,115,8,61,13,2,1,1,1,1,16,1,1,2,17,115,8,61,13,2,1,1,1,2,1,1,10,2,1,1,1,2,1,2,7,1,6,115,8,60,14,2,1,1,1,5,9,2,1,1,1,2,1,2,6,2,6,115,8,59,15,2,1,1,1,5,9,2,1,1,1,2,1,2,6,2,6,115,8,59,15,2,1,1,1,6,8,2,1,1,1,2,1,2,14,115,8,59,6,1,11,1,1,7,10,1,1,2,1,2,14,115,8,59,6,1,11,1,1,7,10,1,1,2,1,2,1,1,12,115,9,58,6,1,1,2,10,9,8,1,1,2,1,2,1,1,12,115,9,58,6,1,1,2,8,1,1,9,8,1,1,2,1,2,1,1,11,116,9,58,6,1,1,2,1,2,7,9,8,1,1,2,1,2,1,1,11,116,9,58,6,1,1,2,1,2,7,9,10,2,1,2,1,1,11,116,9,58,57,116,9,58,58,115,9,102,13,116,9,58,48,2,10,1,3,22,84,5,7,58,158,7,5,6,6,75,3,7,2,7,1,7,2,6,1,6,2,6,2,4,4,6,2,6,1,6,2,6,3,6,1,6,5,7,8,7,9,11,1,9,2,50,1,22,1,14,5,3,5,3,4,3,6,3,5,2,16,2,5,3,14,2,6,2,6,5,5,11,4,30,1,50,1,37,6,3,5,3,5,2,6,3,5,3,6,1,7,2,6,2,15,2,6,2,5,6,5,12,1,15,1,106,93,2,8,10,5,2,6,2,5,4,4,100,7,3,13,2,65,3,8,3,5,2,5,4,4,3,5,4,4,100,94,2,5,3,5,4,4,6,5,2,5,105,86,2,13,3,5,4,4,6,5,2,1,1,3,102,4,2,24,2,62,1,1,2,7,3,5,4,5,4,5,2,8,4,2,92,5,2,24,2,61,5,5,7,2,5,6,3,4,3,7,102,88,6,7,12,8,6,1,3,7,103,87,6,7,11,9,6,1,3,7,110,1,9,9,5,1,2,1,3,47,162,1,10,6,27,34,162,1,10,6,27,34,97,3,57,14,2,7,26,66,9,33,5,2,17,223,17,223,18,222,47,193,53,1,3,163,19,1,85,109,14,29,36,151,784}s.draw(cd,dd)end function G.init_context()local cd=12 local dd=30 local ed=(4*cd)+(3*dd)local fd=(w.screen.width-ed)/2 return{special_mode="normal",bar_fill=0,max_fill=100,fill_per_hit=10,miss_penalty=5,bar_x=20,bar_y=10,bar_width=200,bar_height=12,arrow_size=cd,arrow_spawn_timer=0,arrow_spawn_interval=45,arrow_fall_speed=1.5,arrows={},target_y=115,target_arrows={{dir="left",x=fd},{dir="down",x=fd+cd+dd},{dir="up",x=fd+(cd+dd)*2},{dir="right",x=fd+(cd+dd)*3}},hit_threshold=8,button_pressed_timers={},button_press_duration=8,input_cooldowns={left=0,down=0,up=0,right=0},input_cooldown_duration=10,frame_counter=0,current_song=nil,pattern_index=1,use_pattern=false,generated_length=30,return_window=nil,win_timer=0,on_win=nil,total_misses=0,total_hits=0,special_mode_condition=true,special_mode_counter=0}end function G.prepareSong(cd,dd,ed)local fd=b.deepcopy(cd)if fd.generated then local gd=Vb(dd,fd.bpm,fd.spd*4)fd.pattern=gd fd.end_frame=gd[#gd].frame if ed=="only_special"then for hd,id in ipairs(fd.pattern)do fd.pattern[hd].special=(hd%5==0)end end end return fd end function G.on_arrow_hit_special(cd,dd)local ed=dd.special_mode if ed=="normal"then m.sfx_arrowhit(cd.note)elseif ed=="only_special"then if cd.special then m.sfx_arrowhit(cd.note)dd.special_mode_counter=dd.special_mode_counter+1 else if dd.special_mode_condition then m.sfx_bloop()end dd.special_mode_condition=false end elseif ed=="only_left"then if cd.dir=="left"then m.sfx_arrowhit(cd.note)dd.special_mode_counter=dd.special_mode_counter+1 if dd.max_fill<=dd.bar_fill+dd.fill_per_hit then dd.bar_fill=dd.bar_fill-dd.fill_per_hit end else if dd.special_mode_condition then m.sfx_bloop()end dd.special_mode_condition=false end elseif ed=="only_nothing"then if dd.special_mode_condition then m.sfx_bloop()end dd.special_mode_condition=false end end function G.on_end(cd)m.sfx_select()cd.win_timer=w.timing.minigame_win_duration local dd=0 for fd,gd in ipairs(cd.current_song.pattern)do if cd.special_mode=="only_left"then dd=dd+((gd.dir=="left"and 1)or 0)else dd=dd+((gd.special and 1)or 0)end end local ed=true if cd.special_mode=="normal"then ed=cd.special_mode_counter==dd elseif cd.special_mode=="only_special"then ed=cd.special_mode_counter==dd elseif cd.special_mode=="only_left"then ed=cd.special_mode_counter==dd end cd.special_mode_condition=cd.special_mode_condition and ed end function G.init(cd)local dd=G.init_context()if cd then for ed,fd in pairs(cd)do dd[ed]=fd end end x.minigame_ddr=dd end function G.start(cd,dd,ed)G.init(ed)m.music_play_activity_work()x.minigame_ddr.return_window=cd or"game"x.minigame_ddr.debug_song_key=dd if dd and C and C[dd]then x.minigame_ddr.use_pattern=true x.minigame_ddr.pattern_index=1 x.minigame_ddr.debug_status="Pattern loaded: "..dd x.minigame_ddr.current_song=G.prepareSong(C[dd],x.minigame_ddr.generated_length,x.minigame_ddr.special_mode)else x.minigame_ddr.use_pattern=false if dd then x.minigame_ddr.debug_status="Song not found: "..tostring(dd)else x.minigame_ddr.debug_status="Random mode"end end if not x.test_mode then x.minigame_ddr.debug_status=""end a.set_current("minigame_ddr")end local function Jc()trace("random arrow")local cd=x.minigame_ddr local dd=cd.target_arrows[math.random(1,4)]table.insert(cd.arrows,{dir=dd.dir,x=dd.x,y=cd.bar_y+cd.bar_height+10})end local function Kc(cd,dd,ed)local fd=x.minigame_ddr for gd,hd in ipairs(fd.target_arrows)do if hd.dir==cd then table.insert(fd.arrows,{dir=cd,x=hd.x,y=fd.bar_y+fd.bar_height+10,note=dd,special=ed})break end end end local function Lc(cd)local dd=x.minigame_ddr local ed=math.abs(cd.y-dd.target_y)return ed<=dd.hit_threshold end local function Mc(cd)local dd=x.minigame_ddr return cd.y>dd.target_y+dd.hit_threshold end local function Nc(cd,dd,ed,fd)local gd=12 local hd=gd/2 if ed=="left"then tri(cd+hd,dd,cd,dd+hd,cd+hd,dd+gd,fd)rectb(cd+hd,dd+hd-2,hd,4,fd)elseif ed=="right"then tri(cd+hd,dd,cd+gd,dd+hd,cd+hd,dd+gd,fd)rectb(cd,dd+hd-2,hd,4,fd)elseif ed=="up"then tri(cd,dd+hd,cd+hd,dd,cd+gd,dd+hd,fd)rectb(cd+hd-2,dd+hd,4,hd,fd)elseif ed=="down"then tri(cd,dd+hd,cd+hd,dd+gd,cd+gd,dd+hd,fd)rectb(cd+hd-2,dd,4,hd,fd)end end function G.update()local cd=x.minigame_ddr if cd.win_timer>0 then cd.win_timer=cd.win_timer-1 if cd.win_timer==0 then m.music_stop()c.on_minigame_complete()if cd.on_win then cd.on_win(cd)else c.show()a.set_current(cd.return_window)end end return end if cd.bar_fill>=cd.max_fill then G.on_end(cd)return end cd.frame_counter=cd.frame_counter+1 if cd.use_pattern and cd.current_song and cd.current_song.end_frame then if cd.frame_counter>cd.current_song.end_frame and#cd.arrows==0 then G.on_end(cd)return end end if cd.use_pattern and cd.current_song and cd.current_song.pattern then local fd=cd.current_song.pattern while cd.pattern_index<=#fd do local gd=fd[cd.pattern_index]if cd.frame_counter>=gd.frame then Kc(gd.dir,gd.note,gd.special)cd.pattern_index=cd.pattern_index+1 else break end end else cd.arrow_spawn_timer=cd.arrow_spawn_timer+1 if cd.arrow_spawn_timer>=cd.arrow_spawn_interval then Jc()cd.arrow_spawn_timer=0 end end local dd={}for fd,gd in ipairs(cd.arrows)do gd.y=gd.y+cd.arrow_fall_speed if Mc(gd)then table.insert(dd,fd)cd.bar_fill=cd.bar_fill-cd.miss_penalty if cd.bar_fill<0 then cd.bar_fill=0 end cd.total_misses=cd.total_misses+1 end end for fd=#dd,1,-1 do table.remove(cd.arrows,dd[fd])end for fd,gd in pairs(cd.input_cooldowns)do if cd.input_cooldowns[fd]>0 then cd.input_cooldowns[fd]=cd.input_cooldowns[fd]-1 end end for fd,gd in pairs(cd.button_pressed_timers)do if cd.button_pressed_timers[fd]>0 then cd.button_pressed_timers[fd]=cd.button_pressed_timers[fd]-1 end end local ed={left=k.left(),down=k.down(),up=k.up(),right=k.right()}for fd,gd in pairs(ed)do if gd and cd.input_cooldowns[fd]==0 then cd.input_cooldowns[fd]=cd.input_cooldown_duration cd.button_pressed_timers[fd]=cd.button_press_duration local hd=false for id,jd in ipairs(cd.arrows)do if jd.dir==fd and Lc(jd)then G.on_arrow_hit_special(jd,cd)cd.bar_fill=cd.bar_fill+cd.fill_per_hit if cd.bar_fill>cd.max_fill then cd.bar_fill=cd.max_fill end table.remove(cd.arrows,id)hd=true break end end if not hd then cd.bar_fill=cd.bar_fill-2 if cd.bar_fill<0 then cd.bar_fill=0 end cd.total_misses=cd.total_misses+1 end end end end function G.draw()local cd=x.minigame_ddr if not cd then cls(0)print("DDR ERROR: Context not initialized",10,10,12)print("Press Z to return",10,20,12)if k.select()then a.set_current("game")end return end rect(0,0,w.screen.width,w.screen.height,w.colors.black)rect(cd.bar_x-2,cd.bar_y-2,cd.bar_width+4,cd.bar_height+4,w.colors.light_grey)rectb(cd.bar_x-2,cd.bar_y-2,cd.bar_width+4,cd.bar_height+4,w.colors.dark_grey)local dd=(cd.bar_fill/cd.max_fill)*cd.bar_width G.draw_background()if dd>0 then local gd=w.colors.light_blue if cd.bar_fill>66 then gd=w.colors.item elseif cd.bar_fill>33 then gd=w.colors.blue end rect(cd.bar_x,cd.bar_y,dd,cd.bar_height,gd)end local ed=math.floor((cd.bar_fill/cd.max_fill)*100)j.text_center(ed.."%",cd.bar_x+cd.bar_width/2,cd.bar_y+2,w.colors.black)if cd.target_arrows then for gd,hd in ipairs(cd.target_arrows)do local id=cd.button_pressed_timers[hd.dir]and cd.button_pressed_timers[hd.dir]>0 local jd=id and w.colors.light_blue or w.colors.light_grey Nc(hd.x,cd.target_y,hd.dir,jd)end end if cd.arrows then for gd,hd in ipairs(cd.arrows)do local id=hd.special and w.colors.white or w.colors.blue Nc(hd.x,hd.y,hd.dir,id)end end j.text_center("Hit the arrows!",w.screen.width/2,cd.bar_y+cd.bar_height+10,w.colors.light_grey)local fd=60 if cd.debug_status then j.text_center(cd.debug_status,w.screen.width/2,fd,w.colors.item)fd=fd+10 end if cd.use_pattern and x.test_mode then j.text_center("PATTERN MODE - Frame:"..cd.frame_counter,w.screen.width/2,fd,w.colors.light_blue)if cd.current_song and cd.current_song.pattern then j.text_center("Pattern Len:"..#cd.current_song.pattern.." Index:"..cd.pattern_index,w.screen.width/2,fd+10,w.colors.light_blue)end elseif x.test_mode then j.text_center("RANDOM MODE",w.screen.width/2,fd,w.colors.blue)end if cd.win_timer>0 then if cd.special_mode_condition then d.draw_win_overlay("SUCCESS...?")elseif cd.total_hits<10 then d.draw_win_overlay("MEH...")else d.draw_win_overlay()end end end local Oc=math.floor(w.screen.width*0.7)local Pc=math.floor(w.screen.height*0.3)local Qc=math.floor((w.screen.width-Oc)/2)local Rc=math.floor((w.screen.height-Pc)/2-8)local Sc=30 local Tc=8 local Uc=4 local Vc=12 local Wc=1 function O.draw()K.draw()local cd=r.get_current_step()if not cd then return end i.draw_textbox(cd.question,Qc,Rc,Oc,Pc,x.discussion.scroll_y,w.colors.white,w.colors.dark_grey,w.colors.light_blue,true)local dd=cd.answers if#dd>0 then local ed=16 local fd=w.screen.height-ed rect(0,fd,w.screen.width,ed,w.colors.dark_grey)local gd=dd[x.discussion.selected_answer]local hd=gd.label local id=fd+4 j.text("<",2,id,w.colors.light_blue)j.text_center(hd,w.screen.width/2,id,w.colors.item)j.text(">",w.screen.width-6,id,w.colors.light_blue)end end function O.update()local cd=r.get_current_step()if not cd then return end local dd=i.word_wrap(cd.question,Sc)local ed=#dd*Tc local fd=Pc-Uc*2 local gd=ed-fd if gd<0 then gd=0 end if gd>0 then if x.discussion.auto_scroll then x.discussion.scroll_timer=x.discussion.scroll_timer+1 if x.discussion.scroll_timer>=Vc then x.discussion.scroll_timer=0 x.discussion.scroll_y=x.discussion.scroll_y+Wc if x.discussion.scroll_y>gd then x.discussion.scroll_y=gd end end end else x.discussion.scroll_y=0 x.discussion.scroll_timer=0 end if k.up()then x.discussion.auto_scroll=false x.discussion.scroll_y=x.discussion.scroll_y-Tc if x.discussion.scroll_y<0 then x.discussion.scroll_y=0 end elseif k.down()then x.discussion.auto_scroll=false x.discussion.scroll_y=x.discussion.scroll_y+Tc if x.discussion.scroll_y>gd then x.discussion.scroll_y=gd end end local hd=cd.answers if#hd>0 then if k.left()then m.sfx_beep()x.discussion.selected_answer=b.safeindex(hd,x.discussion.selected_answer-1)elseif k.right()then m.sfx_beep()x.discussion.selected_answer=b.safeindex(hd,x.discussion.selected_answer+1)end if k.select()then m.sfx_select()local id=hd[x.discussion.selected_answer]if id.on_select then id.on_select()end r.go_to_step(id.next_step)end end end P.timer=300 P.text=[[ ### ### ### ### # # # # # # # # # ### ## # # # # # # # ### ### ### ### ### # # ### ### # # # # ### ## # # # ## # # # ## # # # # # # # # # # ## # # # ## # # ## # # # # # # # # # # # # # # # # ### ### # # # ### # # ### ### ## ]]function P.draw()cls(w.colors.black)t.draw(P.text,{})end function P.update()P.timer=P.timer-1 if P.timer<=0 or k.select()or k.menu_confirm()then a.set_current("menu")y.refresh_menu_items()end end local Xc={}local Yc=1 local function Zc(cd)local dd=g.get_by_id(x.game.current_screen)if not dd then return end if dd.background then h.draw(dd.background)elseif dd.background_color then rect(0,0,w.screen.width,w.screen.height,dd.background_color)end if cd then cd()end if not x.stat_screen_active and#Xc>0 then e.draw(Xc,Yc)end l.draw()n.draw()dd.draw()end function K.draw()Zc()end function K.draw_with_underlay(cd)Zc(cd)end function K.update()n.update()if k.menu_back()then a.set_current("menu")y.refresh_menu_items()return end local cd=g.get_by_id(x.game.current_screen)if not cd or not cd.update then return end cd.update()if x.game.current_situation then local fd=f.get_by_id(x.game.current_situation)if fd and type(fd.update)=="function"then fd.update()end end if x.stat_screen_active then return end local dd=e.get_for_screen(cd)Xc=e.filter_available(dd)if#Xc==0 then return end if Yc>#Xc then Yc=1 end local ed=e.update(Xc,Yc)if ed~=Yc then Yc=ed end if k.select()then local fd=Xc[Yc]if fd and fd.handle then m.sfx_select()fd.handle()end end end function K.set_state(cd)a.set_current(cd)end local ad=false local function bd()if ad then return false end x.reset()a.set_current("intro_title")y.refresh_menu_items()ad=true return true end function TIC()bd()local cd=time()if x.last_frame_time==0 then x.delta_time=0 else x.delta_time=(cd-x.last_frame_time)/1000 end x.last_frame_time=cd cls(w.colors.black)local dd=a.get_current_handler()if dd then dd()end c.update()p.update()q.update()B.draw()u.update_fade()if x.game_in_progress then c.draw()p.draw()end u.draw_flash()end -- -- 000:0404005f574fc2c3c71d2b53fff1e8ab52367e2553ffa30000875129adff83769c00e436fa77a8ff004dc3c3c7ffccaa -- -- -- 000:00000000c666666006606060c636366006606060c606366006666660c0000000 -- 001:0000000006666666060600600666666606000600066666660633633300000000 -- 002:0000000066666666006000066666666660060006666666666333363300000000 -- 004:1111111111111111111111111111111111111111111111111111111111111111 -- 005:1111111111111111111111111111111111111111111111111111111100000000 -- 006:0222222200010010033055010130150603305501013015060330550100000000 -- 007:2222222001022220601022206001022060201020602201006022201000000000 -- 008:0000000003330333033303330333000003330111033301110333011103330111 -- 009:0000000033333333333333330000000011100111111001111110011111100111 -- 010:0000000033303330333033300000333011103330111033301110333011103330 -- 011:111111111111111111111100111110a511110a51111015a51101515111000000 -- 012:111111111111111101111111101111115a01111115a011115151011100000111 -- 013:1000000004444444044444440444444404444444044444440444444404444444 -- 014:0000000144444240444424204444424044442420444442404444242044444240 -- 015:0000000004244444024444440424400002444444042424240242424200000000 -- 016:000000004444442044444240c004442044444240e424242042424240c0000000 -- 017:0000000002424240042424200244444004244440024404400424044002440440 -- 018:0000000002424240042424200444424004444420044042400440442004404240 -- 019:0222222200010012055016020150660205501602015066020550160200000000 -- 020:2222222022221000222203302222013022220330222201302222033000000000 -- 021:0333011103330111033301110333011103330111033300000333011103330111 -- 022:1110011111100111111001111110011111100111000000001110011111100111 -- 023:1110333011103330111033301110333011103330000033301110333011103330 -- 024:1111111011111110111111101111111011111110111111101111111011111110 -- 025:0444444404444444044444440444444404444444044044440440444404404444 -- 026:4444242044444240444424204444424044442420444442404444242044444240 -- 027:3333111133331111333311113333111111113333111133331111333311113333 -- 028:0424044002440440042404400244444004244440024242400424242000000000 -- 029:0440442004404240044044200444424004444420024242400424242000000000 -- 030:0000000006666660036060600360666006606060036660600360666003606060 -- 031:0222222200010010033033030130130103303303013013010330330300000000 -- 032:22222220c10012203033022030130220303302203013022030330220c0000000 -- 033:0333011103330111033301110333011103330111033301110333011100000000 -- 034:1110011111100111111001111110011111100111111001111110011100000000 -- 035:1110333011103330111033301110333011103330111033301110333000000000 -- 036:0440444404404444044044440444444404444444044444440444444404444444 -- 037:0000000002222222022000220201110202011102020111020220002202222222 -- 038:0000000022222220220002202011102020111020201110202200022022222220 -- 039:0000000002222222022222220222222202222222022222220222222202222222 -- 040:0000000022222220222222202222222022222220222222202222222022222220 -- 041:0000000002222222022200000220111102201121020112000201120402012200 -- 042:0000000022222220000002201111102021211020000210203430102000430020 -- 043:0666606003606060036066600366606003606060066060600360606003666660 -- 044:0222222202222222022222220222222202222222000000000001111100011111 -- 045:2222222022222220222222202222222022222220000000001111100011111000 -- 046:1111111111111111111111111000000002222222022222220222222202222222 -- 047:1111111111111111111111110000000022222222222222222222222222222222 -- 048:111111111111111111111111c000100022220444e222044422220444e2220444 -- 049:1111111111111111111111111100001100222201022222200222222002222220 -- 050:1111111011111110111111101111111011111110111111101111111011110000 -- 051:1111111111111111111111111111111111111111111111111111111100011111 -- 052:0444444404444444044444440444444404444444044444440444444410000000 -- 053:4444242044444240444424204444424044442420444442404444242000000001 -- 054:0222222202222222022000220201110202011102020111020220002202222222 -- 055:2222222022222220220002202011102020111020201110202200022022222220 -- 056:0222222202222222022222220222222202222222022222220222222200000000 -- 057:2222222022222220222222202222222022222220222222202222222000000000 -- 058:0201122202012222020112220201222202201222022022220222000002222222 -- 059:2204302022204020202200202000002020222020222220200000022022222220 -- 060:5555555555555555555555556666111155555555555555555555555566616666 -- 061:5555555555555555555555556666666655551555555515555555655566666611 -- 062:0222222202222222022222220222222202222222022222220222222202222222 -- 063:2222222222222222222222222222222222222222222222222222222222222222 -- 064:22220444e222044422220444e222044422220444e222044422220444e2220444 -- 065:0222222002222220020000206022220002222220022222200200002000111100 -- 066:5000000004444444044044440440444404404444044044440444444460000000 -- 067:0000000544444240444424204444424044442420444442404444242000000001 -- 068:0000000001111111011111110111111101111111011111110111111100000000 -- 069:0000000011111110111111101111111011111110111111101111111000000000 -- 070:5555555555555555555555551111666655555555555555555555555511666111 -- 071:000000000222220002222090022209900220999002099d900099199009919790 -- 072:0000000022222220222222202222222022220000222011002212000021222220 -- 073:5555555555555555555555556611166655555551555555515555555166666111 -- 074:0000000001111111000000001111666655555555555555555555555511666111 -- 075:0000000011111111000000006611166655555551555555515555555166666111 -- 076:0000000011111111000000001111666655555555555555555555555511666111 -- 077:0000000011111110000000006611166655555551555555515555555166666111 -- 078:1111111111111111111100001110919111101010110191011019191000919190 -- 079:1111111111111111000000009191919000000010111110901111101000000090 -- 080:09191990c991990209199020c999020209902020c902020200202020c0000000 -- 081:0000000002020200202020200200022020002220000222202022222002222220 -- 082:5555555555555055555501056666010155550105555501055555010566610106 -- 083:5555555555555555000000000222222202222222022222220222222202222222 -- 084:5555555555555555000000002222222022222220222222202222222022222220 -- 085:5555000055500220550202206022022002220220022202200222022002220220 -- 086:1000000110333301103333011033330110333301103333011033330110333301 -- 087:3010101033331111333311113333111111113333111133331111333311113333 -- 088:3333101033331090333310103333109011113010111010901110201011101090 -- 089:2222222022222220222222202222222022222220222222202222222022222220 -- 090:5555550055555022555502226611022255550222555502225555501266666100 -- 091:0005010522200105222201052222010622220105222201052210505500066111 -- 092:5000000002222222022222220222222202222222022222220222222202222222 -- 093:0222022002220220022202200222022002220220022202200222022002220220 -- 094:1033330110333301103333011033330110333301103333011033330110000001 -- 095:3333101033331090333310103333109011113010111130901111301011113000 -- 096:00000000c111111100000000c106666601051555c105155501056555c0066611 -- 097:0000000011111110000000006666101055555010555550105555501066616000 -- 098:5555555555555550555555056666116655550055555500555555655566666611 -- 099:0555555500555555050555550661111105500555115005550055555500616666 -- 100:0222222202222222022222220000000000000000501055555010555560006666 -- 101:2222222022222220222222200000000000000000555501055555010566660001 -- 102:0222022002220220022202200222022002220220022202200222022012220220 -- 103:1000000103333330033333300333333003333330033333300333333010000001 -- 104:5500000050222222022222220222222202222222022222220222222202222222 -- 105:0222222222222222222222222222222222222222222222222222222222222222 -- 106:1222000012201110120111101011111001111110011111100111111001111110 -- 107:0000000001111111011111110111111101111111011111115000000066000066 -- 108:0000000011111111111111111111111111111111111111110000000066666611 -- 109:1111111011111110111111101111111011111110111111100000000566000066 -- 110:1111111111111111111111111111010011101044111010441110104400000010 -- 111:1111111111111111111111110011111144011111440111114401111110000000 -- 112:11111111111111111111111111111111111111111111111111110111c0004000 -- 113:3333104433331044333310003333111111113333111133331111333311113333 -- 114:4403111144031111000311113333111111110000111044441104444411014444 -- 115:3304440133044401330444013304440100104033440103334440333344103333 -- 116:3330111133020000330124243330111111110111111130111111301111113300 -- 117:1103111100401111242011111240111111203333124033331120333300013333 -- 118:1111111100000000033333330333333303333333033333330000000011111111 -- 119:1111111100000000333333303333333033333330333333300000000011111111 -- 120:1a12222222a222222212222222a222222212222222a222222212222222222222 -- 121:1a8b888822888b8b228b888822b8bb8b22888b88228b88882288b88b228b8b88 -- 122:8b8b8888b8b88b8bb88b888888b8bb8b8b888b8888bb88888b88b88bb88b8b88 -- 123:8b8b888800000000055555550555555500000000055555550555555500000000 -- 124:8b8b888800000000555555555555555500000000555555555555555500000000 -- 125:8b8b888800000000555555505555555000000000555555505555555000000000 -- 126:0000000007777777070000000703333307033333070333330703333307033333 -- 127:0000000077777777000000003333333033333330333333303333333033333330 -- 128:000000007777777700000000e222222222222222e222222222222222e2222222 -- 129:0000000077777770000000702222207022222070222220702222207022222070 -- 130:3000000300ffff000ddddff00dddddf00dddddf00dddddf000dddd0000000000 -- 131:0555555505555555055555550555555500000000050b88880508b88b000b8b88 -- 132:555555555555555555555555555555550000000088bb88888b88b88bb88b8b88 -- 133:555555505555555055555550555555500000000088bb80508b88b050b88b8000 -- 134:0703333307033333070333330703333307033333070333330703333307033333 -- 135:3333333033333330333333303333333033333330333333303333333033333330 -- 136:2222207022222070222220702222207022222070222220702222207022222070 -- 137:4444444444444444444444444444444444444444444444444444444444444444 -- 138:4442222244422222444222224442222244422222444222224442222244422222 -- 139:0000000000bbbb0008888bb0088888b0088888b0088888b00088880030000003 -- 140:0000000007777777076666770767776707677776076777760767777607766667 -- 141:0000000077777770777777707777777077777770777777777677777777777777 -- 142:0000000066666666666666666666666600000000777777777777777777777777 -- 143:0000000066666070666660706666607000000070777777707777777077777770 -- 144:1a80088be2800b8822800888e280088b22800b88e220022221a001a2ea100a12 -- 145:88888888b88b8b888b8888b8888b888888888b8b12222222a1a1a1a21a1a1a12 -- 146:0776777707767777077677770776777707677777076777770777777700000000 -- 147:7677666676777776767777677677767767776777677666667777777700000000 -- 148:7766667777777677777767767776777677677776766666767777777700000000 -- 149:7667777067767770777767706666677077776770777767707777777000000000 -- 150:2220022222200222222002222220022222200222222002222220022222200222 -- 151:1a12222222a222222212222222a222222212222222222222a1a1a1a21a1a1a12 -- 152:2222222222222222222222222222222222222222444444444444444444444444 -- 153:222002222220022222200222222002222220022212200222a000000200000000 -- 154:222222222222222222222222222222222222222212222222a1a1a1a21a1a1a12 -- 155:11111000111100331110a033110a903310a9a0330a9a903309a9a0330a9a9033 -- 156:0000000033333333333333333333333333333333333333333333333333333333 -- 157:000000000a9a9a9a09a9a9a90a9a9a9a09a9a9a90a9a9a9a09a9a9a90a9a9a9a -- 158:001111119a001111a9a904449a9a9004a9a9a9a09a9a9a9aa9a9a9a99a9a9a9a -- 159:111111111111111111111111111111111111111100111111090111110a900111 -- 160:1111111111111111444444444444444444444444444444441111111111111111 -- 161:09a9a0330a9a903309a9a0330000000003333333033333330333333303333333 -- 162:3333333333333333333333330000000033333333333333333000000301111110 -- 163:3333333333333333333333330000000033333333333333333333333333333333 -- 164:09a9a9a90a9a9a9a09a9a9a90000000003333333033333330333333303333333 -- 165:a9a9a9a99a9a9a9aa9a9a9a90000000033333333333333333333333333333333 -- 166:09a9a0110a9a9a0109a9a9a00000000033333333333333333000000301111110 -- 167:1111111111111111111111110011111133001111333301113333300133333330 -- 168:0333333003333301033333010333330103333301000000011111111111111111 -- 169:1100001110555501055005500506605005066050055005501055550111000011 -- 170:0333333310333333103333331033333310333333100000001111111111111111 -- 171:0333333303333333033333330333333303333333000000001111111111111111 -- 172:3333333033333301333333013333330133333301000000011111111111111111 -- 173:0333333010333330103333301033333010333330100000001111111111111111 -- 174:111111111111111111111111111111111111111112222222a1a1a1a21a1a1a12 -- 175:1111111111111111111111111111111111111111444444444444444444444444 -- 176:00000000c111111001101010c131311001101010c101311001111110c0000000 -- 177:0000000001111111010100100111111101000100011111110133133300000000 -- 178:0000000011111111001000011111111110010001111111111333313300000000 -- 179:11111111111111111111111111111111111100001110b161110b100010810101 -- 180:1111111111111111111111111111111101111111b01111110001111101011111 -- 181:111111111000111000880110080880100b08801008b080100b80801010b80010 -- 182:081b01010081b00011001b1b11110000111111111111110111111080111108b0 -- 183:01011111000111111b0111110011111111111111111111111111111111111111 -- 184:1111111111111100111110081111108011111010111110811111101811111101 -- 185:110b80100110801080110000b80111108b80111008b801100b1b011080b18010 -- 186:11108b801108b801008b80111100011111111111111111101111100111110818 -- 187:1111111111111111111111111111111111111111000111118001111108011111 -- 188:0000000004444444040010040440404404404004044040440440400404444444 -- 189:0000000044444444044001000440440404400404044044040040040444444444 -- 190:0000000044444444404040044040404044004004444040444000404444444444 -- 191:0000000044444444400410444044044440040004404444044004001444444444 -- 192:0000000044444440444444404444444044444440444444404444444044444440 -- 193:0000000002222222020000000200000002000000020000000200000002000000 -- 194:0000000022222222000000000000000000000000000000000000000000000000 -- 195:0000000022222220000000100000001000000010000000100000001000000010 -- 196:3333999933339999333399993000000002222222000000000444444404111111 -- 197:3333999933339999333399990000000922222203000000004440d6d011201110 -- 198:3333999933339999333399993333999999993333999933339999333399993333 -- 199:0000000001111110031010100310111001101010031110100310111003101010 -- 200:1111110811111101111111101111111011111111111111111111111111111111 -- 201:180b8010810180101810b0108180101008180010108100101108101011108010 -- 202:111081801110180811018081110810b8101801801080b8011008101100100111 -- 203:8b011111b8011111801111110111111111111111111111111111111111111111 -- 204:0440000404404444044040040440440404440014044444440444444404444444 -- 205:4001404404404004000040400440404404404044444444444444444444400000 -- 206:4040041000404404404004004040444440400400444444444404444400044444 -- 207:4444000044440222044402220444022214440222444402224444000044444444 -- 208:00000040e222204022222040e222204022222040e22220400000004044444440 -- 209:0200000002000000020000000200000002000000020000000200000002000000 -- 210:0000001000000010000000100000001000000010000000100000001000000010 -- 211:0444444404111111044444440411111104444444000000000111111100000000 -- 212:4440222011201110444024201120444044402420000000001111111000000000 -- 213:0111101003101010031011100311101003101010011010100310101003111110 -- 214:1000000000606000060606060000000010565656106565651106565611100000 -- 215:0000000100606060060606000000000055555501555555015555501100000111 -- 216:0444444404444044044404040440440004404404044044440444444400000000 -- 217:4404444440444444044444404444440444444440444444444444444400000000 -- 218:4404444440444004044404404444044400004440444444444444444400000000 -- 219:4444440044444402404444000044441044044444444444104444444400000000 -- 220:0000444022204440000044401101444000444440440144404444444000000000 -- 221:0200000002000000020000000200000002000000020000000211111100000000 -- 222:0000000000000000000000000000000000000000000000001111111100000000 -- 223:000000000000000000000000000000000000000000000000111dd11100000000 -- 224:00000010c000001000000010c000001000000010c000001011111110c0000000 -- 225:3333333333333333333333333333333313131313313131311313131331313131 -- 226:0203333302033333020333330203333302031313020131310203131300013131 -- 227:3333302033333020333330203333302013131020313130201313102031313000 -- 228:0000000011111111111111111111111111111111111111111111111100000000 -- 229:3000000004444444044044440440444404404444044044440444444430000000 -- 230:0000000344444240444424204444424044442420444442404444242000000001 -- 231:333333303333330033333090333309901310999031099d901099199009919790 -- 232:3333333333333333333333333333333313130000313011001313000331313131 -- 233:0000000002222222022222220222200202220440022204440220444402204414 -- 234:0000000022222220100001202100002002222220400222204440022044444020 -- 235:3333333333333033333301033333010313130103313101011313010331310101 -- 236:0204414402200441022220040222222002222222022222220222200002220111 -- 237:1444402044140220444402204144022000402220220222200222222010222220 -- 238:3333330033333022333302223333022213130222313102221313101231313100 -- 239:0003010322200103222201032222010322220103222201012210101300013131 -- 240:02220111c222001102220000c222033302220333c222200002222222c2222222 -- 241:1002222001202220002022203002222031222220022222202222222022222220 -- 242:3333333333333330333333033333113313130013313100311313131331313131 -- 243:0333333300333333030333330331133303100313113001310013131300313131 -- 244:022222200222220002222090022209900220999002099d900099199009919790 -- 245:2222222022222220222222202222222022220000222011002212000021222220 -- 246:0000000001111111000000000103333301031313010131310103131300013131 -- 247:0000000011111110000000003333301013131010313130101313101031313000 -- -- -- 002:00000000000000000000444400044444000444440044ffff004fffff004f3333 -- 003:0000000000000000441600004242600044241000ff426000fff4100033f26000 -- 004:00000333000035550003655500365555003555ff00356fff00365f3f00355fff -- 005:33000000553000005563000055563000ff553000fff53000f3f63000fff53000 -- 008:0000005a00005a55000055a50000a55a00005a5700005533000575f30000757f -- 009:55a50000a55a50005a55a00057555500fff7a5003f335a00fff3f500fffffa00 -- 016:0000000000000000000000000000003000000353000035350003535100353535 -- 017:0000000000000000000000003000000053300000151300005151300015151300 -- 018:004f99ff000fffff0000ff3300000fff00003666000355550035652503163555 -- 019:99f41000fff26000ff600000f600000063300000555330005555530055535530 -- 020:00356f6f003655f60365511f3653122f3531222f363221220532232203322322 -- 021:f6f530006f563000f1156300f2215300f2226300221233002232130022121300 -- 022:000000000000005100000155000055150000157f0000551300057f3f00017fff -- 023:00000000555000005155000015515000ff7f5100ff31f200fff3ff0033fff200 -- 024:0000057f00000005000000050000559900055911005599110055119900551199 -- 025:f3ff5000fff500005f5000004415100077995100449915007711955044119550 -- 026:00000000000001330001331300031333001333330031f7f7001133390031999f -- 027:0000000013310000131330003333130033333100f7f113003337310099975300 -- 028:000000000000000000000a77000057770005777700577777005775a50077a7ff -- 029:0000000000000000777a0000777750007777750077777750a5a57750fff7a770 -- 030:000000000000051500001151000555550001517f000557ff0001ff3f0007ff1f -- 031:00000000150000005110000055500000f7110000ff750000f3f10000f1f50000 -- 032:0033535100353533003351ff00351f3f0003ff3f0003ffff00003ff3000323ff -- 033:5555530033555300ff155300f3f15300f3ff3000ffff30003ff30000ff323000 -- 034:036135250316355503613525031633110333331103f333330333333300033333 -- 035:55565530555355305556553013335530133333303333ff303333333033330000 -- 036:00322322003223330033331a003ff31a003ff3a1003333a100003a1a00003a1a -- 037:223213003332130011133300111f300011133000111300001113000011130000 -- 038:000007ff0001117f0016171f0155175501561755155117555f7157555ff15755 -- 039:fffff700333f2000ffff7100555571105555716155557111555575ff555575ff -- 040:005599110055991100ff533300fff511007fff110007f5110000311300003113 -- 041:479915504499155047333f7014113ff011113f70111130003311300003113000 -- 042:0035777f0001776600005777000000550088885508bbb84508bbb8448bb8b844 -- 043:77775300677500007750000055880000558b8000548bb800228bbb80428b8b80 -- 044:005a7f3f0057ff3f07f7ffff07757fdf077a57fd0575357f005a66a70006aa6f -- 045:ff3f7a50ff3ff750fffff777ffdf7577ddf75a77ff75157577a66a50ff6aa600 -- 046:0005ffff00005ff3000005ff0017775500242777002121710024277100212171 -- 047:fff500003f500000f50000005771000077720000171200001772000017120000 -- 048:00323123003231430032314300313339000f3333000033300000333000033330 -- 049:324303003443030034430300933313003333f000033300000333000003333000 -- 050:0003333000033330000333300003333000053530003311300031113000333330 -- 051:3333000033330000333300003333000035350000311330003111300033333000 -- 052:000031a1000031a100003a1a00003a1a00003333000003f3000003f300000330 -- 053:111300001113000011130000111300003333000003f3000003f3000003300000 -- 054:5ff7646607f59999000991330003993000099130000133300001221000011100 -- 055:666646ff999993f7339913000039930000991300001333000012210000111000 -- 056:0000311300003113000031130000311300003113000033330000165100001111 -- 057:0311300003113000031130000311300003113000033330000165100001111000 -- 058:8888b8445f78b8445f58884405031330000331300003133000053550000577f0 -- 059:218b8880428b87f5218885f5031330500331300003133000053550000577f000 -- 060:0056aa66001f6aaa001fa666007f6aaa00006aaa0000a666000007d7000001d1 -- 061:666aa650aaaa6f106666af10aaaa6f70aaaa60006666a000007d7000001d1000 -- 062:0024277700ff611100fff333005f533300003333000033300000333000001110 -- 063:77720000116f0000335ff000333f000033300000333000003330000001110000 -- 064:00000000000000000000011100003311000111170003317f000117ff00553333 -- 065:0000000000000000110000001110000077110000ff710000ff77000013330000 -- 066:00000000000000330000033300003333000033f7000035ff000535ff0007f333 -- 067:0000000030000000333300003333000037f30000ffff0000ffff0000f333f000 -- 068:000000000000000000000000000000000000000000000122000012440001447f -- 069:00000000000000000000000000000000000000002210000044210000f7441000 -- 070:000000000000000000000333000038880003888800388881038388310338835f -- 071:00000000000000003330000088880000883380003355380016665300f7ff7300 -- 072:0000000000000000000000550000055500005577000057ff00007f55000fff33 -- 073:0000000000000000555550005555550077777550ffffff507f755f703f333fff -- 074:0000000000000011000001130000113100011313000131310013137c003131ff -- 075:000000001110000013110000313110001313100031313100ffff7100fffff100 -- 076:0000000000000055000005550000055500005577000057ff0007ff55000fff99 -- 077:0000000055550000555550005555500075775500fffff5005f555f703f993ff0 -- 078:0000000000000000000000000000000000001111000014440000144400001555 -- 079:0000000000000000000000000000000011100000441000004410000055100000 -- 080:0077533f000ff77f0005fff500005ff70000015f0005f315005ff3ff00ff3333 -- 081:f33f0000f77f00005ff000007f500000f500000053f00000f3f50000333f0000 -- 082:000fff330005ffff000057f50000007f000333350031313f0031313303113133 -- 083:ff33f000ffff100055f10000ff70000055330000ff3130003331300033311300 -- 084:000447ff000fffff0007f33f000ff11f000f7fff0000ff750000042400001142 -- 085:ff744000ffff1000f33f7000f11f5000fff7f00057ff00004240000044110000 -- 086:038383390338833b038383130338337f0383835f003838350003838300003333 -- 087:99539900bb33bb0099513900fffff530ff66f1007fff53001555310033333000 -- 088:000f7ff300005fff000007ff0000007f0000021f000024410002444400124244 -- 089:fff3ff7ff1ffff50fffff700111f7000ffff1000111142004244442042442410 -- 090:005f5733005f1f2300015fff0000077f00011117001244210144414201421444 -- 091:ff33f500ff23f500fffff00011ff500077710000112410004442410042441410 -- 092:00005fff000005ff0000001f0000000100000114000018140000181400018114 -- 093:fffff500111f5000fff500001110000042411000424180004241810042411100 -- 094:00001fff00001f3f0000cf3f0000cfff00000cf3000023cc000131ff001f1f11 -- 095:ff1000003f1000003ff00000fff00000fc000000c3200000f13100001f1f1000 -- 096:00ff33330033133305f333330ff31333033333330f5313330ff1311107f13333 -- 097:333f0000333f5000333f5000333ff000333330003335f500111ff5003337f000 -- 098:03113133031131330333313303113131033331320555313107ff313307ff3131 -- 099:333113003331130033333300213113004233330021317f0033317f5001317500 -- 100:0002441400244441024444240242442414424424144144241441442414414424 -- 101:4144210014444200424444204244422042444241424441414244414142444141 -- 102:000333330033a3530032a353003a332303a23333032a333303a23333032a3333 -- 103:3333300055353300553533002232323033333130333332303333313333333233 -- 104:001441440014424400144144001441240017f311001ff133001fff330007f333 -- 105:4244142042442410424414204244122012113f7031333ff033333ff030333f00 -- 106:01421444014414440142144431421444011111110fff1a5a0ff755a505755a51 -- 107:44441410424414104444141042441410111111105a5a55f5a5a5a5f5111a5170 -- 108:0001181400018114000118140001811300011333005fff33000f773300055333 -- 109:424181104241181042418110222318101113310033335ff03333f77033335500 -- 112:0553333300033330000333000033330000333300003333000011110000121200 -- 113:3330000033300000333000003330000033300000333000001111000012120000 -- 114:05f5313103003131033311310311113103111131003111300003333000012120 -- 115:0131130001311300013113000131130001311300003113000033330000121200 -- 116:0fff242407f72211005544200002442000024420000244200002222000024440 -- 117:424441f1112227f1024425500244200002442000024420000222200002444000 -- 118:0333333307ff333307f733330070333000003330000033300000111000001110 -- 119:33333575333331f1333335750033300000333000003330000011100000111100 -- 120:0000033300000333000003330000033300000333000003330000033300000111 -- 121:0033300000333000003330000033300000333000003330000033300010111100 -- 122:005015a100001a51000015a100001a51000015a1000022510000924900009999 -- 123:0315a150001a51000015a100001a51000015a100002251000092490000999900 -- 124:0000033300000333000003330000033300000333000003330000033300000111 -- 125:0333000003330000033300000333000003330000033300000333000000111000 -- 129:0000000000000000000000000000000000000000011515101151515151515151 -- 144:0000000500000015000000150000057f000005ff0000017f0000331700073331 -- 145:1ffffff7ff0fff0fff1fff1fffffffffff7555fffffffffffff111ff57fffff7 -- 146:1000000071000000f5000000ff000000ff500000ff5000007513100051333700 -- 160:0077333303331333333313333331333333313333355133335ff513335ff71111 -- 161:1111111133333333333337333333373333333733333337333333373311117711 -- 162:133337003733133077731330333331333333313333333155333337ff1111175f -- 176:0775333300031333000333130000333300001333000033330000033300000111 -- 177:3335773333333533333333331313131333333333300000033000000310000001 -- 178:3333357533331000331300001333000033310000333300003331000011110000 -- -- -- 000:ffffffffff0010201020102010201020102010201020102000ffffffffff40404040404087f3f3f3f397a7b7c7d7a7e7f70818a7b7c7d7a7b7c7d7a70b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 001:ffffffffff0040404040404040404040404040404040404000ffffffffff40404040404087f3f3f3f328a7384858a76878f388a7384858a7384858a70b40403b4b4040404040404040404040404040404040404040404040400b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 002:ffffffffff00406070408090a040b0c0d0e0f001f001112100ffffffffff984098409840a8f3f3f3f3b8a7a7a7a7a7c8d8e8f8a7a7a7a7a7a7a7a7a70b405b6b7b4040404040404040404040404040d0e0f001f001f00111210b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 003:ffffffffff004031414051617140814091a1b1b1b1b1c1d100ffffffffff984098409840a8f3f3f3f3091919191919293949591919191919191919190b8b9babbb4040cbdbebfb0c401c2c2c2c3c4091a14c5c6c6c6c6cc1d10b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 004:ffffffffffe140f1024012223240814042a15262728292a2e1ffffffffff984098409840a8f3f3f3f369f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f37c8c9cacbc7282ccdcecfc0d401d3030302d4042a13d4d7282728292a27c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 005:ffffffffffb240c2d240e2f203132333435363738393a3b3b2ffffffffff984098409840a8f3f3f3f369f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f35d406d7d40e3958d9dadbdcd40ddedfded0e404353839383938393a3b35d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 006:ffffffffffe1c3d3c3d3e3f30414c3d32434445410201020e1ffffffffff404040404040798989898999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a97c1e1e1e1e44542e1e1e1e3e1e444e4e4e541e243444544454445444547c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 007:ffffffffffb264748494a4b4c4d46494649464940040e4f4b2ffffffffff4040404040404040404040404040404040404040404040404040404040405d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 008:ffffffffffe1c30515d325d33545c3d355d3c3d365b17585e1ffffffffff4040404040404098989898404040404040404040404040404040404040407c1e7e8e1e1e1e9eae1ebe1e1e1e1e1e1e1e1e72821ebe1e72821ebe1e7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 009:ffffffffffb264e395a5b594e39564c5d5946494e5b1b1f5b2ffffffffff4040404040404040404040404040404040404040404040404040404040405d1e05151ebe1ecedeeefe1e1e1e1e1e1e1e1ee395eefe1ee395eefe1e5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 010:ffffffffffe1c306162636d34656c395d5d3c3d376b1b1b1e1ffffffffff404040404040409898989840b9c9c9d9e9f90a0a0a0a4040400a0a0a0a407c1ee395eefe1e0f1f2f3f1e1e1e1e1e1e1e1ee3952f3f1ee3952f3f1e7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 011:ffffffffffb264946494649464948696a694649410201020b2ffffffffff4040404040404040404040401a2a3a4a5a6a7a40404040404040404040405d1ee3952f3f1e4f5f1ebe1e1e1e1e1e1e1e1ee3951ebe1ee3951ebe1e5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 012:ffffffffffe1c37282d3c3d3c3d3b6c6d6d3c3d300e6f607e1ffffffffff4040404040404098989898408a9aaabaca9ada40404040404040404040407c1e4f5f1ebe1e0515eefe1e1e1e1e1e1e1e1ee395eefe1ee395eefe1e7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 013:ffffffffffb264e395946494649464946494649465172737b2ffffffffffeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea5d1e0515eefe1e6f7f2f3f1e1e1e1e1e1e1e1e6f7f2f3f1e6f7f2f3f1e5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 014:ffffffffffe1c34454d3c3d3c3d3c3d3c3d3c3d3e5b14757e1fffffffffff3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f37c1e6f7f2f3f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 015:ffffffffffb2649464946494649464946494649476b1b1b1b2fffffffffff3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f35d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 016:ffffffffff0010201020766777001020102010201020102000fffffffffff3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f30b1b2b1b2b7667776777761b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- -- -- 016:00000000000000400040004000700070007000400040004000700070007000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c0470000000000 -- 017:030003000300030003000300036003600360036003600360136023c033c053c063c083c0a3c0b3c0c3c0c3c0d3c0d3c0e3c0f3c0f3c0f3c0f3c0f3c0400000000000 -- 018:03c003c003c003c003c003c0036003600360036003600360230033005300630083009300a300b300c300d300d300e300e300e300f300f300f300f300400000000000 -- 019:0300030003000300030003d013d013d023d033d053d073d093d0b3d0c3d0e3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0f3d0400000000000 -- 020:090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900500000000000 -- 021:01000100010001000100f10001100110011001100110f11001200120012001200120f1201130113011302130213021302130313041308130a130d130580000000000 -- 022:03b003100300030003000300130063009300b300c300d300d300e300e300e300f300f300f300f300f300f300f300f300f300f300f300f300f300f300400000000000 -- 032:010001100100011001000110010001100100010001000100010001000100010001000100010001000100010001000100010001000100010001000100400000000800 -- 033:000000010002000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c40000000004 -- 034:02000240020002000200020002000200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f200f2004700000f0200 -- 044:0600f6000620f6000600f6000610f600f600f6000600f600f600f600f6000600060006000600060006000600060006000600060006000600060006001600000f0f00 -- 045:0000f0000020f0000000f0000010f000f000f0000000f000f000f000f0000000000000000000000000000000000000000000000000000000000000005600000f0f00 -- 048:090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900400000000000 -- 056:4100510061406140717081709100b100c100d100e100e100e100f100f100f100f100f100f100f100f100f100f100f100f100f100f100f100f100f100480000000600 -- 057:000000010002000300020001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000004 -- 058:41004110410041104100411041004110c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100003000080800 -- 059:03000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300030000b000000000 -- 060:220022002200820082008200820082008200820082008200820082008200820082008200820082008200820082008200820082008200820082008200500000000000 -- 061:9f009f00bf00df00df00ef00ef00ef00ef00ef00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00100000000000 -- 062:00000100010001000100510081008100910091009100a100a100a100a100a100b100b100b100b100c100c100c100d100d100d100e100e100e100f100580000000000 -- 063:00b000100000000000000000100060009000b000c000d000d000e000e000e000f000f000f000f000f000f000f000f000f000f000f000f000f000f000500000000000 -- -- -- 000:bcceefceedddddc84333121268abaa99 -- 001:6789bdd96adc83248dd6334adda7578b -- 002:0123456789abcdef0123456789abcdef -- 003:224578acdeeeeddcba95434567653100 -- 004:00000000ffffffff00000000ffffffff -- 005:0123456789abcdeffedcba9876543210 -- 006:0123456789abcdef0123456789abcdef -- 007:76543210123456789abcdefedcba9878 -- 008:0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f -- 009:fff000fff000fff000fff000fff000ff -- -- -- 000:4008b50000000000000000001008c10000004008b50000001008c1000000000000000000e008b30000004008b50000001008c10000000008c10000000008c10000000000000000000000000000000000000000000000000000000000000000004008b50000000000000000001008c10000004008b50000001008c10000000008c1000000e008b30000004008b50000001008c10000000008c10000000008c10000000008c10000000008c10000000008c1000000000000000000000000000000 -- 001:4008b50000000000000000001008c10000004008b50000001008c1000000000000000000e008b30000004008b50000001008c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007008b50000007008b50000001008c10000007008b50000001008c10000000008c10000007008b50000009008b50000001008c10000009008b50000001008c10000009008b50000009008b50000001008c10000009008b50000001008c1000000 -- 003:4008d30000000000000000000000000000000000000000004008d90000000000000000000000000000000000000000004008d30000000000000000000000000000004008d30000004008d90000000000000000000000000000000000000000004008d30000000000000000000000000000000000000000004008d90000000000000000000000000000000000000000004008d30000000000000000000000000000004008d30000004008d9000000000000000000000000000000000000000000 -- 004:43398d000000e0088b000000b0088b000881e0088b00000040088d000000e0088b000881b0088b000000e0088b00000040088d000000e0088b000000b0088b000000e0088b00000040088d000000e0088b000000b0088b000000e0088b00000040088b000000e00889000000b00889000000e0088900000040088b000000e00889000000b00889000000e0088900000040088b000000e00889000000b00889000000e0088900000040088b000000e00889000000b00889000000e00889000000 -- 005:455981000000000881000000000881000000000000000000400883000000000000000000000000000000000000000000400881000000000000000000000000000000000000000000400883000000000000000000000000000000000000000000400881000000000000000000000000000000000000000000400883000000000000000000000000000000000000000000400881000000000000000000000000000000000000000000400883000000000000000000000000000000000000000000 -- 008:4aa9b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005008b30000000000000000000000000000000000000000000008b10000000000000000000008910000000000000000004008b30000000000000000000000000000000000000000000000000000000000000000000008b1000000000000000000f008b1000000000000000000000000000000000000000000000891000000000000000000000000000000000000000000 -- 009:4779d30000000000000000004008d30000000000000000004008db0000000000000000004008d30000000000000000004008d30000000000000000004008d30000000000000000004008db0000000000000000004008d30000000000000000004008d30000000000000000004008d30000000000000000004008db0000000000000000004008d30000000000000000004008d30000000000000000004008d30000000000000000004008db0000000000000000004008d3000000000000000000 -- -- -- 000:1000012000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff -- 001:581000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- 002:900082000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 --