;; title: Snowfort Siege
;; author: Alec Troemel
;; desc: a winter themed, turn based rogue like about throwing snowballs and collecting golden bananas
;; script: fennel
;; DONE strech room to fill whole screen (after comming up with up)
;; DONE camera
;; DONE character movement
;; DONE snowball mechanic
;; DONE perlin noise for room decoration
;; DONE enemies
;; DONE max snowball capacity, button to make snowball
;; DONE layouts for all rooms types
;; DONE fix snowball bugs
;; DONE Banana pickups. Spawn randomly at rooms of max depth. Room layout should have :banana {:x :y}
;; DONE collect banana and add to stats
;; DONE game over by collection all 3 Bananas or deing
;; DONE title screen
;; DONE Player art
;; DONE enemy animations
;; DONE snowball moving and deing animations
;; DONE sfx
;; DONE Title music
;; DONE gameplay music
;; DONE game over win fanfair
;; DONE game over loose fanfair
;; TODO tutorial
;; DONE fix snowball bugs
;; DONE be able to set starting seed
;; Its the first snow of the year and some naughty kids have stolen all your golden bananas.
;; Raid their snow fort to get them back!
(global perlin (do (fn Bit-aND [a b]
(var (p c) (values 1 0))
(while (and (> a 0) (> b 0))
(local (ra rb) (values (% a 2) (% b 2)))
(when (> (+ ra rb) 1)
(set c (+ c p)))
(set-forcibly! (a b p) (values (/ (- a ra) 2) (/ (- b rb) 2) (* p 2))))
c)
(set-forcibly! fade
(fn [t]
(* (* (* t t) t) (+ (* t (- (* t 6) 15)) 10))))
(set-forcibly! lerp (fn [t a b]
(+ a (* t (- b a)))))
(set-forcibly! grad
(fn [hash x y z]
(let [h (Bit-aND hash 15)
u (or (and (< h 8) x) y)
v (or (and (< h 4) y)
(or (and (or (= h 12) (= h 14)) x) z))]
(+ (or (and (= (and h 1) 0) u) (- u))
(or (and (= (and h 2) 0) v) (- v))))))
(global perlin {})
(set perlin.p {})
(set perlin.permutation {1 151
2 160
3 137
4 91
5 90
6 15
7 131
8 13
9 201
10 95
11 96
12 53
13 194
14 233
15 7
16 225
17 140
18 36
19 103
20 30
21 69
22 142
23 8
24 99
25 37
26 240
27 21
28 10
29 23
30 190
31 6
32 148
33 247
34 120
35 234
36 75
37 0
38 26
39 197
40 62
41 94
42 252
43 219
44 203
45 117
46 35
47 11
48 32
49 57
50 177
51 33
52 88
53 237
54 149
55 56
56 87
57 174
58 20
59 125
60 136
61 171
62 168
63 68
64 175
65 74
66 165
67 71
68 134
69 139
70 48
71 27
72 166
73 77
74 146
75 158
76 231
77 83
78 111
79 229
80 122
81 60
82 211
83 133
84 230
85 220
86 105
87 92
88 41
89 55
90 46
91 245
92 40
93 244
94 102
95 143
96 54
97 65
98 25
99 63
100 161
101 1
102 216
103 80
104 73
105 209
106 76
107 132
108 187
109 208
110 89
111 18
112 169
113 200
114 196
115 135
116 130
117 116
118 188
119 159
120 86
121 164
122 100
123 109
124 198
125 173
126 186
127 3
128 64
129 52
130 217
131 226
132 250
133 124
134 123
135 5
136 202
137 38
138 147
139 118
140 126
141 255
142 82
143 85
144 212
145 207
146 206
147 59
148 227
149 47
150 16
151 58
152 17
153 182
154 189
155 28
156 42
157 223
158 183
159 170
160 213
161 119
162 248
163 152
164 2
165 44
166 154
167 163
168 70
169 221
170 153
171 101
172 155
173 167
174 43
175 172
176 9
177 129
178 22
179 39
180 253
181 19
182 98
183 108
184 110
185 79
186 113
187 224
188 232
189 178
190 185
191 112
192 104
193 218
194 246
195 97
196 228
197 251
198 34
199 242
200 193
201 238
202 210
203 144
204 12
205 191
206 179
207 162
208 241
209 81
210 51
211 145
212 235
213 249
214 14
215 239
216 107
217 49
218 192
219 214
220 31
221 181
222 199
223 106
224 157
225 184
226 84
227 204
228 176
229 115
230 121
231 50
232 45
233 127
234 4
235 150
236 254
237 138
238 236
239 205
240 93
241 222
242 114
243 67
244 29
245 24
246 72
247 243
248 141
249 128
250 195
251 78
252 66
253 215
254 61
255 156
256 180})
(set perlin.size 256)
(set perlin.gx {})
(set perlin.gy {})
(set perlin.randMax 256)
(fn perlin.load [self]
(for [i 1 self.size 1]
(tset self.p i (. self.permutation i))
(tset self.p (+ 255 i) (. self.p i))))
(fn perlin.noise [self x y z]
(let [X (+ (Bit-aND (math.floor x) 255) 1)
Y (+ (Bit-aND (math.floor y) 255) 1)
Z (+ (Bit-aND (math.floor z) 255) 1)]
(set-forcibly! x (- x (math.floor x)))
(set-forcibly! y (- y (math.floor y)))
(set-forcibly! z (- z (math.floor z)))
(local u (fade x))
(local v (fade y))
(local w (fade z))
(local A (+ (. self.p X) Y))
(local AA (+ (. self.p A) Z))
(local AB (+ (. self.p (+ A 1)) Z))
(local B (+ (. self.p (+ X 1)) Y))
(local BA (+ (. self.p B) Z))
(local BB (+ (. self.p (+ B 1)) Z))
(lerp w (lerp v (lerp u (grad (. self.p AA) x y z)
(grad (. self.p BA) (- x 1) y z))
(lerp u (grad (. self.p AB) x (- y 1) z)
(grad (. self.p BB) (- x 1) (- y 1) z)))
(lerp v
(lerp u (grad (. self.p (+ AA 1)) x y (- z 1))
(grad (. self.p (+ BA 1)) (- x 1) y (- z 1)))
(lerp u (grad (. self.p (+ AB 1)) x (- y 1) (- z 1))
(grad (. self.p (+ BB 1)) (- x 1) (- y 1) (- z 1)))))))
perlin ))
;; +--------------------+
;; | Tiny ECS |
;; +--------------------+
;; (global tiny (require :tiny))
(global tiny (do (local tiny {})
(local tinsert table.insert)
(local tremove table.remove)
(local tsort table.sort)
(local setmetatable setmetatable)
(local type type)
(local select select)
(local tiny-manage-entities nil)
(local tiny-manage-systems nil)
(var tiny-add-entity nil)
(var tiny-add-system nil)
(var tiny-add nil)
(var tiny-remove-entity nil)
(var tiny-remove-system nil)
(local filter-join nil)
(local filter-build-string nil)
(let [loadstring (or loadstring load)]
(fn getchr [c]
(.. "\\" (c:byte)))
(fn make-safe [text]
(: (: (: "%q" :format text) :gsub "\n" :n) :gsub "[�-�]" getchr))
(fn filter-join-raw [prefix seperator ...]
(let [accum {}
build {}]
(for [i 1 (select "#" ...) 1]
(local item (select i ...))
(if (= (type item) :string)
(tset accum (+ (length accum) 1)
(: "(e[%s] ~= nil)" :format (make-safe item)))
(= (type item) :function)
(do
(tset build (+ (length build) 1)
(: "local subfilter_%d_ = select(%d, ...)" :format i i))
(tset accum (+ (length accum) 1)
(: "(subfilter_%d_(system, e))" :format i)))
(error "Filter token must be a string or a filter function.")))
(local source (: "%s\nreturn function(system, e) return %s(%s) end"
:format (table.concat build "\n") prefix
(table.concat accum seperator)))
(local (loader err) (loadstring source))
(when err
(error err))
(loader ...)))
(set-forcibly! filter-join
(fn [...]
(let [(state value) (pcall filter-join-raw ...)]
(if state value (values nil value)))))
(fn build-part [str]
(let [accum {}
sub-parts {}]
(set-forcibly! str
(str:gsub "%b()"
(fn [p]
(tset sub-parts (+ (length sub-parts) 1)
(build-part (p:sub 2 (- 2))))
(: "�%d" :format (length sub-parts)))))
(each [invert part sep (str:gmatch "(%!?)([^%|%&%!]+)([%|%&]?)")]
(if (part:match "^�%d+$")
(let [part-index (tonumber (part:match (part:sub 2)))]
(tset accum (+ (length accum) 1)
(: "%s(%s)" :format (or (and (= invert "") "") :not)
(. sub-parts part-index))))
(tset accum (+ (length accum) 1)
(: "(e[%s] %s nil)" :format (make-safe part)
(or (and (= invert "") "~=") "=="))))
(when (not= sep "")
(tset accum (+ (length accum) 1)
(or (and (= sep "|") " or ") " and "))))
(table.concat accum)))
(set-forcibly! filter-build-string
(fn [str]
(let [source (: "return function(_, e) return %s end"
:format (build-part str))
(loader err) (loadstring source)]
(when err
(error err))
(loader)))))
(fn tiny.requireAll [...]
(filter-join "" " and " ...))
(fn tiny.requireAny [...]
(filter-join "" " or " ...))
(fn tiny.rejectAll [...]
(filter-join :not " and " ...))
(fn tiny.rejectAny [...]
(filter-join :not " or " ...))
(fn tiny.filter [pattern]
(let [(state value) (pcall filter-build-string pattern)]
(if state value (values nil value))))
(local system-table-key {1 :SYSTEM_TABLE_KEY})
(fn is-system [table]
(. table system-table-key))
(fn processing-system-update [system dt]
(let [pre-process system.preProcess
process system.process
post-process system.postProcess]
(when pre-process
(pre-process system dt))
(when process
(if system.nocache
(let [entities system.world.entities
filter system.filter]
(when filter
(for [i 1 (length entities) 1]
(local entity (. entities i))
(when (filter system entity)
(process system entity dt)))))
(let [entities system.entities]
(for [i 1 (length entities) 1]
(process system (. entities i) dt)))))
(when post-process
(post-process system dt))))
(fn sorted-system-on-modify [system]
(let [entities system.entities
indices system.indices]
(var sort-delegate system.sortDelegate)
(when (not sort-delegate)
(local compare system.compare)
(set sort-delegate (fn [e1 e2]
(compare system e1 e2)))
(set system.sortDelegate sort-delegate))
(tsort entities sort-delegate)
(for [i 1 (length entities) 1]
(tset indices (. entities i) i))))
(fn tiny.system [table]
(set-forcibly! table (or table {}))
(tset table system-table-key true)
table)
(fn tiny.processingSystem [table]
(set-forcibly! table (or table {}))
(tset table system-table-key true)
(set table.update processing-system-update)
table)
(fn tiny.sortedSystem [table]
(set-forcibly! table (or table {}))
(tset table system-table-key true)
(set table.onModify sorted-system-on-modify)
table)
(fn tiny.sortedProcessingSystem [table]
(set-forcibly! table (or table {}))
(tset table system-table-key true)
(set table.update processing-system-update)
(set table.onModify sorted-system-on-modify)
table)
(var world-meta-table nil)
(fn tiny.world [...]
(let [ret (setmetatable {:entitiesToRemove {}
:entitiesToChange {}
:systemsToAdd {}
:systemsToRemove {}
:entities {}
:systems {}}
world-meta-table)]
(tiny-add ret ...)
(tiny-manage-systems ret)
(tiny-manage-entities ret)
(values ret ...)))
(fn tiny.addEntity [world entity]
(let [e2c world.entitiesToChange]
(tset e2c (+ (length e2c) 1) entity)
entity))
(set tiny-add-entity tiny.addEntity)
(fn tiny.addSystem [world system]
(assert (= system.world nil) "System already belongs to a World.")
(local s2a world.systemsToAdd)
(tset s2a (+ (length s2a) 1) system)
(set system.world world)
system)
(set tiny-add-system tiny.addSystem)
(fn tiny.add [world ...]
(for [i 1 (select "#" ...) 1]
(local obj (select i ...))
(when obj
(if (is-system obj) (tiny-add-system world obj)
(tiny-add-entity world obj))))
...)
(set tiny-add tiny.add)
(fn tiny.removeEntity [world entity]
(let [e2r world.entitiesToRemove]
(tset e2r (+ (length e2r) 1) entity)
entity))
(set tiny-remove-entity tiny.removeEntity)
(fn tiny.removeSystem [world system]
(assert (= system.world world) "System does not belong to this World.")
(local s2r world.systemsToRemove)
(tset s2r (+ (length s2r) 1) system)
system)
(set tiny-remove-system tiny.removeSystem)
(fn tiny.remove [world ...]
(for [i 1 (select "#" ...) 1]
(local obj (select i ...))
(when obj
(if (is-system obj) (tiny-remove-system world obj)
(tiny-remove-entity world obj))))
...)
(set-forcibly! tiny-manage-systems
(fn [world]
(let [(s2a s2r) (values world.systemsToAdd
world.systemsToRemove)]
(when (and (= (length s2a) 0) (= (length s2r) 0))
(lua "return "))
(set world.systemsToAdd {})
(set world.systemsToRemove {})
(local world-entity-list world.entities)
(local systems world.systems)
(for [i 1 (length s2r) 1]
(local system (. s2r i))
(local index system.index)
(local on-remove system.onRemove)
(when (and on-remove (not system.nocache))
(local entity-list system.entities)
(for [j 1 (length entity-list) 1]
(on-remove system (. entity-list j))))
(tremove systems index)
(for [j index (length systems) 1]
(tset (. systems j) :index j))
(local on-remove-from-world system.onRemoveFromWorld)
(when on-remove-from-world
(on-remove-from-world system world))
(tset s2r i nil)
(set system.world nil)
(set system.entities nil)
(set system.indices nil)
(set system.index nil))
(for [i 1 (length s2a) 1]
(local system (. s2a i))
(when (not= (. systems (or system.index 0)) system)
(when (not system.nocache)
(set system.entities {})
(set system.indices {}))
(when (= system.active nil)
(set system.active true))
(set system.modified true)
(set system.world world)
(local index (+ (length systems) 1))
(set system.index index)
(tset systems index system)
(local on-add-to-world system.onAddToWorld)
(when on-add-to-world
(on-add-to-world system world))
(when (not system.nocache)
(local entity-list system.entities)
(local entity-indices system.indices)
(local on-add system.onAdd)
(local filter system.filter)
(when filter
(for [j 1 (length world-entity-list) 1]
(local entity (. world-entity-list j))
(when (filter system entity)
(local entity-index (+ (length entity-list) 1))
(tset entity-list entity-index entity)
(tset entity-indices entity entity-index)
(when on-add
(on-add system entity)))))))
(tset s2a i nil)))))
(set-forcibly! tiny-manage-entities
(fn [world]
(let [e2r world.entitiesToRemove
e2c world.entitiesToChange]
(when (and (= (length e2r) 0) (= (length e2c) 0))
(lua "return "))
(set world.entitiesToChange {})
(set world.entitiesToRemove {})
(local entities world.entities)
(local systems world.systems)
(for [i 1 (length e2c) 1]
(local entity (. e2c i))
(when (not (. entities entity))
(local index (+ (length entities) 1))
(tset entities entity index)
(tset entities index entity))
(for [j 1 (length systems) 1]
(local system (. systems j))
(when (not system.nocache)
(local ses system.entities)
(local seis system.indices)
(var index (. seis entity))
(local filter system.filter)
(if (and filter (filter system entity))
(when (not index)
(set system.modified true)
(set index (+ (length ses) 1))
(tset ses index entity)
(tset seis entity index)
(local on-add system.onAdd)
(when on-add
(on-add system entity)))
index
(do
(set system.modified true)
(local tmp-entity (. ses (length ses)))
(tset ses index tmp-entity)
(tset seis tmp-entity index)
(tset seis entity nil)
(tset ses (length ses) nil)
(local on-remove system.onRemove)
(when on-remove
(on-remove system entity))))))
(tset e2c i nil))
(for [i 1 (length e2r) 1]
(local entity (. e2r i))
(tset e2r i nil)
(local list-index (. entities entity))
(when list-index
(local last-entity (. entities (length entities)))
(tset entities last-entity list-index)
(tset entities entity nil)
(tset entities list-index last-entity)
(tset entities (length entities) nil)
(for [j 1 (length systems) 1]
(local system (. systems j))
(when (not system.nocache)
(local ses system.entities)
(local seis system.indices)
(local index (. seis entity))
(when index
(set system.modified true)
(local tmp-entity (. ses (length ses)))
(tset ses index tmp-entity)
(tset seis tmp-entity index)
(tset seis entity nil)
(tset ses (length ses) nil)
(local on-remove system.onRemove)
(when on-remove
(on-remove system entity))))))))))
(fn tiny.refresh [world]
(tiny-manage-systems world)
(tiny-manage-entities world)
(local systems world.systems)
(for [i (length systems) 1 (- 1)]
(local system (. systems i))
(when system.active
(local on-modify system.onModify)
(when (and on-modify system.modified)
(on-modify system 0))
(set system.modified false))))
(fn tiny.update [world dt filter]
(tiny-manage-systems world)
(tiny-manage-entities world)
(local systems world.systems)
(for [i (length systems) 1 (- 1)]
(local system (. systems i))
(when system.active
(local on-modify system.onModify)
(when (and on-modify system.modified)
(on-modify system dt))
(local pre-wrap system.preWrap)
(when (and pre-wrap (or (not filter) (filter world system)))
(pre-wrap system dt))))
(for [i 1 (length systems) 1]
(local system (. systems i))
(when (and (and (not= system nil) system.active)
(or (not filter) (filter world system)))
(local update system.update)
(when update
(local interval system.interval)
(if interval
(do
(var buffered-time (+ (or system.bufferedTime 0) dt))
(while (>= buffered-time interval)
(set buffered-time (- buffered-time interval))
(update system interval))
(set system.bufferedTime buffered-time))
(update system dt)))
(set system.modified false)))
(for [i 1 (length systems) 1]
(local system (. systems i))
(local post-wrap system.postWrap)
(when (and (and post-wrap system.active)
(or (not filter) (filter world system)))
(post-wrap system dt))))
(fn tiny.clearEntities [world]
(let [el world.entities]
(for [i 1 (length el) 1]
(tiny-remove-entity world (. el i)))))
(fn tiny.clearSystems [world]
(let [systems world.systems]
(for [i (length systems) 1 (- 1)]
(tiny-remove-system world (. systems i)))))
(fn tiny.getEntityCount [world]
(length world.entities))
(fn tiny.getSystemCount [world]
(length world.systems))
(fn tiny.setSystemIndex [world system index]
(tiny-manage-systems world)
(local old-index system.index)
(local systems world.systems)
(when (< index 0)
(set-forcibly! index (+ (+ (tiny.getSystemCount world) 1) index)))
(tremove systems old-index)
(tinsert systems index system)
(for [i old-index index (or (and (>= index old-index) 1) (- 1))]
(tset (. systems i) :index i))
old-index)
(fn tiny.entity [t]
(let [cmpt {}]
(set-forcibly! t (or t {}))
(setmetatable t {:__index cmpt
:__add (fn [self cmp]
(assert cmp._cn)
(tset self cmp._cn cmp)
self)
:__sub (fn [self cn]
(tset self cn nil)
self)})
t))
(fn tiny.component [cn t]
(set-forcibly! t (or t {}))
(set t._cn cn)
t)
(set world-meta-table {:__index {:add tiny.add
:addEntity tiny.addEntity
:addSystem tiny.addSystem
:remove tiny.remove
:removeEntity tiny.removeEntity
:removeSystem tiny.removeSystem
:refresh tiny.refresh
:update tiny.update
:clearEntities tiny.clearEntities
:clearSystems tiny.clearSystems
:getEntityCount tiny.getEntityCount
:getSystemCount tiny.getSystemCount
:setSystemIndex tiny.setSystemIndex
:entity tiny.entity
:component tiny.component}
:__tostring (fn []
:<tiny-ecs_World>)})
tiny))
(global ent tiny.entity)
(global cmp tiny.component)
(global filter tiny.filter)
(global req-all tiny.requireAll)
(global rej-all tiny.rejectAll)
(global add-ent tiny.addEntity)
(global rmv-ent tiny.removeEntity)
(global add-sys tiny.addSystem)
(global set-sys-index tiny.setSystemIndex)
(global clear-systems tiny.clearSystems)
(global clear-entities tiny.clearEntities)
(global refresh tiny.refresh)
(fn add-global-ent [world name ent]
(tset world name (add-ent world ent)))
;; system filters
(global update-system-filter (req-all :updating-system))
(global draw-system-filter (req-all :drawing-system))
(global ui-system-filter (req-all :ui-system))
;; System Macros
(macro sys [name filter update]
`(var ,name (tiny.system {:drawing-system false
:filter ,filter
:update ,update})))
(macro draw-sys [name filter update]
`(var ,name (tiny.system {:drawing-system true
:filter ,filter
:update ,update})))
(macro proc-sys [name filter process]
`(var ,name (tiny.processingSystem {:updating-system true
:filter ,filter
:process ,process})))
(macro sorted-proc-sys [name filter process compare]
`(var ,name (tiny.sortedProcessingSystem {:updating-system true
:filter ,filter
:process ,process
:compare ,compare})))
(macro draw-proc-sys [name filter process ...]
`(var ,name (tiny.processingSystem {:drawing-system true
:filter ,filter
:process ,process})))
(macro ui-proc-sys [name filter process ...]
`(var ,name (tiny.processingSystem {:ui-system true
:filter ,filter
:process ,process})))
;; +--------------------+
;; | Game State Manager |
;; +--------------------+
(global STATE {:current nil
:goto-name nil
:goto-state nil
:transition-tick -1
:transition-size 0
})
(fn state-add [name init tic teardown]
(tset STATE name {: init : tic : teardown}))
(fn state-start [name state]
(set STATE.current name)
(: (. STATE name) :init state))
(fn state-goto [name]
(set STATE.goto-name name)
(set STATE.goto-state (. STATE name))
(set STATE.transition-tick 0))
(fn state-tic [dt]
(: (. STATE STATE.current) :tic dt)
(when (and (> STATE.transition-tick -1)
(< STATE.transition-tick 15))
(set STATE.transition-tick (+ STATE.transition-tick 1)))
(if (> STATE.transition-tick -1)
(set STATE.transition-size (+ STATE.transition-size 1))
(if (> STATE.transition-size 0)
(set STATE.transition-size (- STATE.transition-size 1))))
(circ 120 68 (* 10 STATE.transition-size) 12)
(when (and (= STATE.transition-tick 15)
(not= STATE.goto-name nil))
(set STATE.transition-tick -1)
(: (. STATE STATE.current) :teardown)
(set STATE.current STATE.goto-name)
(set STATE.goto-name nil)
(: (. STATE STATE.current) :init STATE.goto-state)
(set STATE.goto-state nil)))
;; +--------------------+
;; | fennel Lume, Flume |
;; +--------------------+
;; Math
(global abs math.abs)
(global rnd math.random)
(global rnd-seed math.randomseed)
(global min math.min)
(global max math.max)
(global sin math.sin)
(global cos math.cos)
(global flr math.floor)
(global ceil math.ceil)
(global sqrt math.sqrt)
;; String
(global sub string.sub)
(global srt table.sort)
;; Table
(global rmv table.remove)
(global add table.insert)
(global sort table.sort)
(macro += [ind val]
`(set ,ind (+ ,ind ,val)))
(macro -= [ind val]
`(set ,ind (- ,ind ,val)))
(fn random-choice [t]
(. t (rnd (# t))))
(fn random [a b]
(when (not a) (set-forcibly! (a b) (values 0 1)))
(when (not b) (set-forcibly! b 0))
(+ a (* (rnd) (- b a))))
(fn filter [pred ind]
(icollect [_ v (ipairs ind)] (when (pred v) v)))
(fn any? [pred ind]
(> (# (filter pred ind)) 0))
(fn in? [val ind]
(any #(= $ val) ind))
(fn find-where [pred ind]
(. (filter pred ind) 1))
(fn lerp [a b t]
(+ (* (- 1 t) a) (* t b)))
(fn round [val increment]
(if increment
(* (round (/ val increment)) increment)
(if (>= val 0)
(flr (+ val 0.5))
(ceil (- val 0.5)))))
(fn map-scales [a-min a-max b-min b-max val]
"Map value from number scale a -> b"
(+ b-min (* (- b-max b-min)
(/ (- val a-min)
(- a-max a-min)))))
(fn shuffle [tbl]
"Shuffle order of indexed table (ie array)"
(let [(len random) (values (length tbl) math.random)]
(for [i len 2 (- 1)]
(local j (random 1 i))
(local temp (. tbl i))
(tset tbl i (. tbl j))
(tset tbl j temp))
tbl))
;; +--------------------+
;; | Position |
;; +--------------------+
(fn pos [x y locked?]
(cmp :pos {: x : y :locked (or locked? false)}))
(fn des-pos [x y speed]
(cmp :des-pos {: x : y : speed}))
(fn grid-pos [x y gx gy rx ry]
(cmp :grid-pos {: x : y : gx : gy : rx : ry}))
(fn move [{: des-pos : grid-pos} dir]
(match dir
:up (do (-= des-pos.y grid-pos.ry)
(-= grid-pos.y grid-pos.gy))
:down (do (+= des-pos.y grid-pos.ry)
(+= grid-pos.y grid-pos.gy))
:left (do (-= des-pos.x grid-pos.rx)
(-= grid-pos.x grid-pos.gx))
:right (do (+= des-pos.x grid-pos.rx)
(+= grid-pos.x grid-pos.gx))))
(proc-sys des-pos-tic
(req-all :pos :des-pos)
(fn [_ {: pos : des-pos} dt]
(tset pos :x (round (lerp pos.x des-pos.x des-pos.speed) 0.1))
(tset pos :y (round (lerp pos.y des-pos.y des-pos.speed) 0.1))))
;; +--------------------+
;; | Animation |
;; +--------------------+
(fn anim [current states ?paused ?hidden]
(cmp :anim {:tick 0
:frame 0
:paused (or ?paused false)
:hidden (or ?hidden false)
: current
: states}))
(proc-sys anim-tic
(req-all :anim :pos)
(fn [_ e dt]
(let [{: anim : pos} e
{: x : y} pos
{: frames : speed} (. anim.states anim.current)]
(when (not anim.paused)
(tset anim :tick (% (+ anim.tick 1) speed))
(when (= anim.tick 0)
(tset anim :frame (% (+ anim.frame 1) (# frames))))
(when (> anim.frame (# frames))
(tset anim :frame 0))))))
(draw-proc-sys
anim-draw
(req-all :anim :pos)
(fn [{: world} {: pos : anim} dt]
(let [{: x : y} pos
{: camera} world
current-state (. anim.states anim.current)
{: frames : speed} current-state
width (or (. current-state :width) 1)
height (or (. current-state :height) 1)
colorkey (or (. current-state :colorkey) 0)
scale (or (. current-state :scale) 1)
frame (. frames (+ anim.frame 1))
]
(when (not anim.hidden)
(let [x (if (not= nil camera) (- x camera.pos.x) x)
y (if (not= nil camera) (- y camera.pos.y) y)]
(match frame
[s flip rotate]
(spr s x y colorkey scale flip rotate width height)
[s flip]
(spr s x y colorkey scale flip 0 width height)
s
(spr s x y colorkey scale 0 0 width height)))))))
; +--------------------+
; | Timers |
; +--------------------+
(fn create-timer [wld t i cb fin]
(add-ent wld
(+ (ent)
(cmp :timer {:c 0 ; internal counter
: t ; times to run
: i ; interval
: cb ; interval callback
: fin})))) ; finished cb
(proc-sys timer-tic
(req-all :timer)
(fn [{: world} e dt]
(tset e.timer :c (+ e.timer.c 1))
(when (= e.timer.c e.timer.i)
(: e.timer :cb)
(tset e.timer :t (- e.timer.t 1))
(tset e.timer :c 0))
(when (= e.timer.t 0)
(when e.timer.fin (: e.timer :fin))
(rmv-ent world e))))
; +--------------------+
; | Screen Shake |
; +--------------------+
(fn shake-it [wld d p]
(add wld (+ (ent)
(cmp :shaker {: d : p}))))
(proc-sys shaker-tic
(req-all :shaker)
(fn [{: world} e dt]
(let [{: d : p} e.shaker]
; time to shake
(when (> d 0)
(poke 0x3FF9 (rnd (- p) p))
(poke 0x3FFA (rnd (- p) p))
(tset e.shaker :d (- d 1)))
; shake all done
(when (= d 0)
(memset 0x3FF9 0 2)
(rmv-ent world e)))))
;; +--------------------+
;; | Collision |
;; +--------------------+
(fn collidable [] (cmp :collidable {}))
(proc-sys collidables (req-all :grid-pos :collidable) (fn [self e dt] nil))
(fn player? [e] (not= nil e.player))
(fn enemy? [e] (not= nil e.enemy))
(fn snowball? [e] (not= nil e.snowball))
(fn banana? [e] (not= nil e.banana))
(fn collide [world e]
(let [{: x : y} e.grid-pos
collided-with-wall (fget (mget x y) 4)
collidable-entities (. collidables :entities)
collidable-entity-at-pos (find-where
#(and (not= $ e)
(= (. $ :grid-pos :x) x)
(= (. $ :grid-pos :y) y))
collidable-entities)
collided-with-ent (not= nil collidable-entity-at-pos)]
(if collided-with-wall
:wall
collided-with-ent
(if (player? collidable-entity-at-pos)
(values :player collidable-entity-at-pos)
(enemy? collidable-entity-at-pos)
(values :enemy collidable-entity-at-pos)
(snowball? collidable-entity-at-pos)
(values :snowball collidable-entity-at-pos)
(banana? collidable-entity-at-pos)
(values :banana collidable-entity-at-pos)
:none)
:none)))
;; +--------------------+
;; | World Generation |
;; +--------------------+
;; (global perlin (require :perlin))
(global TS_RED_TILES [[144 145 208 209 0 0 0 0 0 0 0 0 0 0 0]
[144 145 208 208 209 209 0]
[176 192 193 224 225 224 225 224 225 0 0 ]
[160 161 177 240 241 240 241 240 241 0]])
(global TS_BLUE_TILES [[0 0 0 0 0 0 210 211]
[210 210 211 211 0]
[226 226 226 227 227 227 0]
[242 242 242 243 243 243 0]])
(global TS_GRASS_TILES [[0]
[0]
[0]
[212 213 228 229 244 245 0 0 0]])
(local BIG_NUMBER 1000000)
(local DIRECTIONS {:up 0
:down 1
:left 2
:right 3})
(local START_ROOM 49)
(local ROOMS
[1 2 3 4
17 18 19 20 21 22
33 34 35 36
49])
;; 22 35 48 61 74 87 100 113
(local LAYOUTS
{
;; 4 door
1 {:mx 1 :my 22
:banana {:x 5 :y 3}
:enemies [{:x 3 :y 1 :ai [[:throw :right] [:move :right] [:move :right] [:move :right] [:move :right]
[:throw :left] :wait [:move :down] [:move :down] [:move :down]
[:throw :left] [:move :left] [:move :left] [:move :left] [:move :left]
[:throw :right] :wait [:move :up] [:move :up] [:move :up]]}
{:x 7 :y 4 :ai [[:throw :left] [:move :left] [:move :left] [:move :left] [:move :left]
[:throw :right] :wait [:move :up] [:move :up] [:move :up]
[:throw :right] [:move :right] [:move :right] [:move :right] [:move :right]
[:throw :left] :wait [:move :down] [:move :down] [:move :down]]}]}
2 {:mx 24 :my 22
:banana {:x 5 :y 2}
:enemies [{:x 1 :y 0 :ai [[:throw :right] :wait [:throw :down] :wait]}
{:x 9 :y 0 :ai [[:throw :left] :wait [:throw :down] :wait]}
{:x 0 :y 5 :ai [[:throw :right] :wait :wait]}
{:x 10 :y 5 :ai [[:throw :left] :wait :wait]}]}
3 {:mx 1 :my 35
:banana {:x 5 :y 2}
:enemies [{:x 1 :y 1 :ai [[:throw :right]
[:throw :down] :wait [:move :right] [:move :right] [:move :right]
[:throw :left] :wait [:move :down] [:move :down] [:move :down]
[:throw :up] :wait [:move :left] [:move :left] [:move :left]
[:throw :right] :wait [:move :up] [:move :up] [:move :up]]}
{:x 9 :y 4 :ai [[:throw :left]
[:throw :up] :wait [:move :left] [:move :left] [:move :left]
[:throw :right] :wait [:move :up] [:move :up] [:move :up]
[:throw :down] :wait [:move :right] [:move :right] [:move :right]
[:throw :left] :wait [:move :down] [:move :down] [:move :down]]}]}
4 {:mx 24 :my 35
:banana {:x 5 :y 3}
:enemies [{:x 4 :y 2 :ai [[:throw :up]
[:move :right] [:move :right]
[:throw :right]
[:move :left] [:move :left]]}
{:x 6 :y 2 :ai [[:throw :right]
[:move :down] [:move :down]
[:throw :down]
[:move :up] [:move :up]]}
{:x 4 :y 4 :ai [[:throw :left]
[:move :up] [:move :up]
[:throw :up]
[:move :down] [:move :down]]}
{:x 6 :y 4 :ai [[:throw :down]
[:move :left] [:move :left]
[:throw :left]
[:move :right] [:move :right]]}]}
5 {:mx 1 :my 48
:banana {:x 5 :y 0}
:enemies [{:x 3 :y 0 :ai [[:throw :down] :wait :wait]}
{:x 4 :y 0 :ai [[:throw :down] :wait :wait]}
{:x 6 :y 5 :ai [[:throw :up] :wait :wait]}
{:x 7 :y 5 :ai [[:throw :up] :wait :wait]}]}
6 {:mx 24 :my 48
:banana {:x 1 :y 1}
:enemies [{:x 5 :y 2 :ai [[:throw :left] :wait [:throw :right] :wait]}
{:x 5 :y 3 :ai [[:throw :right] :wait [:throw :left] :wait]}]}
;; 3 door
;; left up right
7 {:mx 24 :my 61
:banana {:x 5 :y 3}
:enemies [{:x 1 :y 0 :ai [[:throw :down] :wait :wait]}
{:x 2 :y 0 :ai [:wait [:throw :down] :wait :wait]}
{:x 8 :y 0 :ai [:wait [:throw :down] :wait :wait]}
{:x 9 :y 0 :ai [[:throw :down] :wait :wait]}
{:x 3 :y 2 :ai [[:move :right] [:move :right]
[:move :right] [:move :right]
:wait
[:move :left] [:move :left]
[:move :left] [:move :left]
:wait]}]}
;; left down right
8 {:mx 1 :my 61
:banana {:x 5 :y 1}
:enemies [{:x 2 :y 0 :ai [:wait [:throw :down] :wait :wait]}
{:x 8 :y 0 :ai [:wait [:throw :down] :wait :wait]}
{:x 1 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 3 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 7 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 9 :y 5 :ai [:wait [:throw :up] :wait :wait]}]}
;; right up down
9 {:mx 1 :my 74
:banana {:x 5 :y 0}
:enemies [{:x 1 :y 1 :ai [:wait [:throw :right] :wait :wait]}
{:x 1 :y 2 :ai [[:throw :right] :wait :wait :wait]}
{:x 1 :y 3 :ai [[:throw :right] :wait :wait :wait]}
{:x 1 :y 4 :ai [:wait [:throw :right] :wait :wait]}]}
;; left up down
10 {:mx 24 :my 74
:banana {:x 6 :y 3}
:enemies [{:x 2 :y 1 :ai [[:throw :down] :wait [:move :right] [:move :right] [:move :right]
[:throw :left] :wait [:move :down] [:move :down] [:move :down]
[:throw :up] :wait [:move :left] [:move :left] [:move :left]
[:throw :right] :wait [:move :up] [:move :up] [:move :up]]}
{:x 4 :y 3 :ai [[:move :left] :wait [:throw :right]
[:move :up] :wait [:throw :down]
[:move :right] :wait [:throw :left]
[:move :down] :wait [:throw :up]]}]}
;; 2 door
;; left right
11 {:mx 1 :my 87
:banana {:x 5 :y 3}
:enemies [{:x 4 :y 0 :ai [[:throw :down] [:throw :down]
:wait :wait
[:move :down] [:move :down] [:move :down] [:move :down] [:move :down]
[:throw :up] [:throw :up]
:wait :wait
[:move :up] [:move :up] [:move :up] [:move :up] [:move :up]]}
{:x 6 :y 0 :ai [[:throw :down] [:throw :down]
:wait :wait
[:move :down] [:move :down] [:move :down] [:move :down] [:move :down]
[:throw :up] [:throw :up]
:wait :wait
[:move :up] [:move :up] [:move :up] [:move :up] [:move :up]]}
{:x 5 :y 5 :ai [[:throw :left] [:move :up]
[:move :up] [:move :up]
[:move :up] [:throw :right]
[:move :up]
:wait :wait
[:throw :right] [:move :down]
[:move :down] [:move :down]
[:move :down] [:throw :left]
[:move :down]
:wait :wait]}]}
;; up down
12 {:mx 24 :my 87
:banana {:x 5 :y 3}
:enemies [{:x 2 :y 1 :ai [[:throw :right] :wait :wait :wait]}
{:x 2 :y 3 :ai [:wait [:throw :right] :wait :wait]}
{:x 8 :y 2 :ai [[:throw :left] :wait :wait :wait]}
{:x 8 :y 4 :ai [:wait [:throw :left] :wait :wait]}]}
;; left up
13 {:mx 1 :my 100
:banana {:x 5 :y 2}
:enemies [{:x 2 :y 4 :ai [[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :right]]}
{:x 8 :y 3 :ai [[:throw :left] [:move :up]
[:throw :left] [:move :up]
[:throw :left] [:move :up]
[:throw :left] [:move :down]
[:throw :left] [:move :down]
[:throw :left] [:move :down]]}]}
14 {:mx 24 :my 100
:banana {:x 8 :y 3}
:enemies [{:x 2 :y 0 :ai [:wait [:throw :right] :wait :wait]}
{:x 6 :y 2 :ai [[:move :right] [:move :right] [:move :right]
[:move :down] [:move :down]
[:move :left] [:move :left] [:move :left]
[:move :up] [:move :up]]}
{:x 3 :y 3 :ai [:wait [:throw :left]
[:move :down] [:move :down]
:wait [:throw :up]
[:move :up] [:move :up]]}]}
;; right up
15 {:mx 1 :my 100 :flip-h true
:banana {:x 5 :y 2}
:enemies [{:x 6 :y 4 :ai [[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]]}
{:x 2 :y 3 :ai [[:throw :right] [:move :up]
[:throw :right] [:move :up]
[:throw :right] [:move :up]
[:throw :right] [:move :down]
[:throw :right] [:move :down]
[:throw :right] [:move :down]]}]}
16 {:mx 24 :my 100 :flip-h true
:banana {:x 2 :y 3}
:enemies [{:x 8 :y 0 :ai [:wait [:throw :left] :wait :wait]}
{:x 1 :y 2 :ai [[:move :right] [:move :right] [:move :right]
[:move :down] [:move :down]
[:move :left] [:move :left] [:move :left]
[:move :up] [:move :up]]}
{:x 7 :y 3 :ai [:wait [:throw :right]
[:move :down] [:move :down]
:wait [:throw :up]
[:move :up] [:move :up]]}]}
;; left down
17 {:mx 1 :my 113
:banana {:x 8 :y 1}
:enemies [{:x 0 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 1 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 3 :y 4 :ai [:wait [:throw :right] :wait :wait]}
{:x 3 :y 5 :ai [:wait [:throw :right] :wait :wait]}
{:x 9 :y 1 :ai [:wait [:throw :left] :wait :wait [:throw :down] :wait]}
{:x 8 :y 2 :ai [:wait [:throw :left] :wait :wait [:throw :down] :wait]}]}
18 {:mx 24 :my 113
:banana {:x 3 :y 3}
:enemies [{:x 0 :y 0 :ai [:wait [:throw :down] :wait :wait :wait :wait :wait]}
{:x 1 :y 0 :ai [:wait :wait [:throw :down] :wait :wait :wait :wait]}
{:x 2 :y 0 :ai [:wait :wait :wait [:throw :down] :wait :wait :wait]}
{:x 3 :y 0 :ai [:wait :wait :wait :wait [:throw :down] :wait :wait]}
{:x 4 :y 0 :ai [:wait :wait :wait :wait :wait [:throw :down] :wait]}
{:x 5 :y 0 :ai [:wait :wait :wait :wait :wait :wait [:throw :down]]}]}
;; right down
19 {:mx 1 :my 113 :flip-h true
:banana {:x 2 :y 1}
:enemies [{:x 9 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 10 :y 5 :ai [:wait [:throw :up] :wait :wait]}
{:x 7 :y 4 :ai [:wait [:throw :left] :wait :wait]}
{:x 7 :y 5 :ai [:wait [:throw :left] :wait :wait]}
{:x 1 :y 1 :ai [:wait [:throw :right] :wait :wait [:throw :down] :wait]}
{:x 2 :y 2 :ai [:wait [:throw :right] :wait :wait [:throw :down] :wait]}]}
20 {:mx 24 :my 113 :flip-h true
:banana {:x 7 :y 3}
:enemies [{:x 5 :y 0 :ai [:wait [:throw :down] :wait :wait :wait :wait :wait]}
{:x 6 :y 0 :ai [:wait :wait [:throw :down] :wait :wait :wait :wait]}
{:x 7 :y 0 :ai [:wait :wait :wait [:throw :down] :wait :wait :wait]}
{:x 8 :y 0 :ai [:wait :wait :wait :wait [:throw :down] :wait :wait]}
{:x 9 :y 0 :ai [:wait :wait :wait :wait :wait [:throw :down] :wait]}
{:x 10 :y 0 :ai [:wait :wait :wait :wait :wait :wait [:throw :down]]}]}
;; 1 door
;; left
21 {:mx 47 :my 22
:banana {:x 10 :y 3}
:enemies [{:x 6 :y 0 :ai [[:throw :down] :wait :wait :wait]}
{:x 7 :y 0 :ai [:wait [:throw :down] :wait :wait]}
{:x 8 :y 0 :ai [:wait :wait [:throw :down] :wait]}
{:x 9 :y 0 :ai [:wait [:throw :down] :wait]}
{:x 9 :y 5 :ai [:wait :wait [:throw :up]]}]}
;; right
22 {:mx 47 :my 35
:banana {:x 1 :y 0}
:enemies [{:x 0 :y 2 :ai [[:throw :right] :wait :wait :wait :wait]}
{:x 5 :y 1 :ai [[:throw :down] [:move :right]
[:throw :down] [:move :right]
[:throw :down] [:move :right]
[:throw :down] [:move :right]
[:throw :down] [:move :left]
[:throw :down] [:move :left]
[:throw :down] [:move :left]
[:throw :down] [:move :left]]}
{:x 9 :y 4 :ai [[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :left]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]
[:throw :up] [:move :right]]}]}
;; down
23 {:mx 47 :my 100
:banana {:x 5 :y 1}
:enemies [{:x 1 :y 3 :ai [[:throw :right] [:move :down]
[:throw :right] [:move :up]]}
{:x 9 :y 4 :ai [[:throw :left] [:move :up]
[:throw :left] [:move :down]]}
{:x 3 :y 1 :ai [[:throw :down] [:move :right]
[:throw :down] [:move :left]]}
{:x 7 :y 1 :ai [[:throw :down] [:move :left]
[:throw :down] [:move :right]]}]}
;; up
24 {:mx 47 :my 113
:banana {:x 5 :y 5}
:enemies [{:x 5 :y 2 :ai [[:throw :left] [:throw :right] :wait]}
{:x 5 :y 3 :ai [[:throw :left] [:throw :left]
[:throw :right] [:throw :right]]}
{:x 5 :y 4 :ai [:wait [:throw :left] [:throw :right]]}
]}
})
;; (local DEBUG_LAYOUT [24])
;; (local ROOM_TO_LAYOUTS
;; {1 DEBUG_LAYOUT
;; 2 DEBUG_LAYOUT
;; 3 DEBUG_LAYOUT
;; 4 DEBUG_LAYOUT
;; 17 DEBUG_LAYOUT
;; 18 DEBUG_LAYOUT
;; 19 DEBUG_LAYOUT
;; 20 DEBUG_LAYOUT
;; 21 DEBUG_LAYOUT
;; 22 DEBUG_LAYOUT
;; 33 DEBUG_LAYOUT
;; 34 DEBUG_LAYOUT
;; 35 DEBUG_LAYOUT
;; 36 DEBUG_LAYOUT
;; 49 DEBUG_LAYOUT
;; })
(local ROOM_TO_LAYOUTS
;; 1 door
{1 [1 2 3 4 5 6 7 8 10 11 13 14 17 18 21 21 21 21 21 21] ;; left
2 [1 2 3 4 5 6 7 9 10 12 13 14 15 16 24 24 24 24 24 24] ;; up
3 [1 2 3 4 5 6 7 8 9 11 15 16 19 20 22 22 22 22 22 22] ;; right
4 [1 2 3 4 5 6 8 9 12 19 17 18 19 20 23 23 23 23 23 23] ;; down
;; 2 door
17 [1 2 3 4 5 6 7 10 13 13 13 13 14 14 14 14 ] ;; left up
18 [1 2 3 4 5 6 7 9 15 15 15 15 16 16 16 16] ;; right up
19 [1 2 3 4 5 6 8 9 19 19 19 19 20 20 20 20] ;; right down
20 [1 2 3 4 5 6 8 10 17 17 17 17 18 18 18 18] ;; left down
21 [1 2 3 4 5 6 9 10 12 12 12 12] ;; up down
22 [1 2 3 4 5 6 7 8 11 11 11 11] ;; left right
;; 3 door
33 [1 2 3 4 5 6 10 10 10 10 10] ;; left up down
34 [1 2 3 4 5 6 7 7 7 7 7] ;; left right up
35 [1 2 3 4 5 6 9 9 9 9 9] ;; right up down
36 [1 2 3 4 5 6 8 8 8 8 8] ;; left right down
;; 4 door
49 [1 2 3 4 5 6]})
(local ROOM_LAYOUT_ROWS [22 35 48 61 74 87 100 113])
(local ROOM_LAYOUT_COLUMS [1 24])
(fn pick-from-tileset [i j z zoom tileset]
"tileset must be of length 3"
(let [p (perlin:noise (/ i zoom) (/ j zoom) z)
mp (round (map-scales -1 1 0 10 p))]
(random-choice
(match mp
4 (. tileset 1)
5 (. tileset 2)
6 (. tileset 3)
7 (. tileset 4)
_ [0]
)
)))
(fn apply-decorations [tileset]
(let [start-x (random 0 BIG_NUMBER)
start-y (random 0 BIG_NUMBER)
zoom (random 20 25)
z (random 0.2 0.4)]
(for [i 1 (* 30 6)]
(for [j 1 (* 17 7)]
(let [sid (pick-from-tileset (+ start-x i)
(+ start-y j)
z
zoom
tileset)
x (+ 68 i)
y (+ 8 j)]
(when (not= 0 sid)
(mset x y sid))
)
))))
(fn opposite [dir]
(match dir
:up :down
:down :up
:left :right
:right :left
_ dir))
(fn has-door? [dir room]
"True if sprite has direction flag"
(fget room (. DIRECTIONS dir)))
(fn doors [room]
"List of all directions sprite has"
(filter #(has-door? $ room) [:up :down :left :right]))
(fn walls [room]
"List of all directions sprite does not have"
(filter #(not (has-door? $ room)) [:up :down :left :right]))
(fn shift-x [x dir]
"shift x by 1 in dir, noop on y axis"
(match dir
:left (- x 1)
:right (+ x 1)
_ x))
(fn shift-y [y dir]
"shift y by 1 in dir, noop on x axis"
(match dir
:up (- y 1)
:down (+ y 1)
_ y))
(fn valid-rooms [x y dir at-max-depth]
"rooms that fit into current map"
(let [left-room (mget (shift-x x :left) y)
right-room (mget (shift-x x :right) y)
up-room (mget x (shift-y y :up))
down-room (mget x (shift-y y :down))]
(var required-doors [])
(var required-walls [])
(when (not= 0 left-room)
(if (has-door? :right left-room)
(add required-doors :left)
(add required-walls :left)))
(when (not= 0 right-room)
(if (has-door? :left right-room)
(add required-doors :right)
(add required-walls :right)))
(when (not= 0 up-room)
(if (has-door? :down up-room)
(add required-doors :up)
(add required-walls :up)))
(when (not= 0 down-room)
(if (has-door? :up down-room)
(add required-doors :down)
(add required-walls :down)))
(var rooms ROOMS)
(each [_ door (ipairs required-doors)]
(set rooms (filter #(has-door? door $) rooms)))
(each [_ door (ipairs required-walls)]
(set rooms (filter #(not (has-door? door $)) rooms)))
(if at-max-depth
[(. rooms 1)]
rooms)))
(fn spawn-map-room [x y room depth max-depth]
(when (= 0 (mget x y))
(mset x y room)
(each [i dir (ipairs (doors room))]
(let [x (shift-x x dir)
y (shift-y y dir)
at-max-depth (= depth max-depth)
chosen-room (-> (valid-rooms x y dir at-max-depth)
(random-choice))]
(spawn-map-room x y chosen-room (+ 1 depth) max-depth)))))
(fn save-spawned-room [spawned-rooms x y layout depth]
(when (not (. spawned-rooms x))
(tset spawned-rooms x {}))
(tset (. spawned-rooms x) y {: layout : depth}))
(fn spawned? [spawned-rooms x y]
(-?> spawned-rooms
(. x)
(. y)))
(fn copy-paste-map [x y x2 y2 w h flip-h]
(for [i 0 (- w 1)]
(for [j 0 (- h 1)]
(let [sid (mget (+ x i) (+ y j))
mx (if flip-h
(- (+ x2 w -1) i)
(+ x2 i))]
(when (not= 0 sid)
(mset mx (+ y2 j) sid))))))
(fn spawn-room [x y spawned-rooms depth world]
(let [real-x (+ (* x 26) 40)
real-y (+ (* y 16) -8)
mid (mget x y)
door-dirs (doors mid)
wall-dirs (walls mid)]
;; place walls
(each [i dir (ipairs wall-dirs)]
(match dir
:left (copy-paste-map 42 0 real-x real-y 2 16 )
:right (copy-paste-map 42 0 (+ real-x 24) real-y 2 16)
:up (copy-paste-map 14 2 real-x (+ real-y 0) 26 2)
:down (copy-paste-map 14 7 real-x (+ real-y 14) 26 2)))
;; place a layout & entites for all non starting rooms
(if (= 4 x y)
(save-spawned-room spawned-rooms x y {} depth)
(let [rx (+ real-x 2)
ry (+ real-y 2)
layout-choices (. ROOM_TO_LAYOUTS mid)
layout-choice (. LAYOUTS (random-choice layout-choices))
{: mx : my : enemies} layout-choice
flip-h (or layout-choice.flip-h false)]
;; layout
(copy-paste-map mx my rx ry 22 12 flip-h)
;; enemies
(each [i enemy (ipairs enemies)]
(add-ent world
(enemy-spawn (+ rx (* 2 enemy.x))
(+ ry (* 2 enemy.y))
enemy.ai)))
;; Save room
(save-spawned-room spawned-rooms x y layout-choice depth)
))
;; place doors
(each [i dir (ipairs door-dirs)]
(match dir
:left (copy-paste-map 40 0 real-x real-y 2 16 )
:right (copy-paste-map 40 0 (+ real-x 24) real-y 2 16)
:up (copy-paste-map 14 0 real-x (+ real-y 0) 26 2)
:down (copy-paste-map 14 5 real-x (+ real-y 14) 26 2))
;; recursively spawn all neighbour rooms when not already
(let [x (shift-x x dir)
y (shift-y y dir)]
(when (not (spawned? spawned-rooms x y))
(spawn-room x y spawned-rooms (+ depth 1) world))))))
(fn spawn-bananas [spawned-rooms world]
;; flatten spawned rooms 2d array to 1d
(var room-list [])
(each [x col (pairs spawned-rooms)]
(each [y {: layout : depth} (pairs col)]
(add room-list {: x : y : depth :banana layout.banana })))
;; randomize order, then sort by depth
(shuffle room-list)
(sort room-list #(> (. $1 :depth) (. $2 :depth)))
;; place 3 bananas in 3 "deepest" rooms
(for [i 1 3]
(let [{: x : y : depth : banana} (. room-list i)
real-x (+ (* x 26) 42 (* 2 banana.x))
real-y (+ (* y 16) -6 (* 2 banana.y))]
(add-ent world (banana-spawn real-x real-y))))
)
(fn generate-world [start-x start-y max-depth world]
(perlin:load)
(apply-decorations TS_RED_TILES)
(apply-decorations TS_BLUE_TILES)
(apply-decorations TS_GRASS_TILES)
(spawn-map-room start-x start-y START_ROOM 1 max-depth)
(var spawned-rooms {})
(spawn-room start-x start-y spawned-rooms 1 world)
(spawn-bananas spawned-rooms world )
)
;; Gameplay
;; Components
(fn actor [order update-fn]
(cmp :actor {: order
:update (coroutine.create
(fn [self world]
(while true
(update-fn self world))))}))
(fn map-marker [color] (cmp :map-marker { : color }))
(fn player [] (cmp :player {}))
(fn enemy [] (cmp :enemy {}))
(fn banana [] (cmp :banana {}))
(fn snowball [dir] (cmp :snowball {: dir :smashing false}))
(fn health [max-health]
(cmp :health {:current max-health
:max max-health
:damage
(fn [self]
(set self.current (max 0 (- self.current 1))))
:heal
(fn [self]
(set self.current (min self.max (+ self.current 1))))}))
(fn stats []
(cmp :stats {:bananas 0
:max-bananas 3
:snowballs 0
:max-snowballs 3
:add
(fn [self key]
(tset self key (min (. self (.. "max-" key))
(+ (. self key) 1))))
:sub
(fn [self key]
(tset self key (max 0 (- (. self key) 1))))
}))
;; Systems
(sorted-proc-sys actors-tic
(req-all :actor :pos)
(fn [w e]
(when (and (or (btnp 6)
(and (or (btn 0) (btn 1) (btn 2) (btn 3))
(or (btnp 4) (btnp 5))))
(or (player? e)
(snowball? e)
(w.world.camera:is-visible e)))
(coroutine.resume e.actor.update e w)))
(fn [_ e1 e2] (> e1.actor.order e2.actor.order)))
(proc-sys enemy-death-tic
(req-all :health :enemy :anim)
(fn [{: world} e]
(when (and (= e.health.current 0)
(not= e.anim.current :die))
(set e.anim.current :die)
(sfx 37 "A-2" 60 1)
(create-timer world 1 18 #(rmv-ent world e)))))
(draw-proc-sys
player-arrow-draw
(req-all :player :pos :grid-pos)
(fn [{: world} {: pos : grid-pos}]
(let [{: camera} world
real-x (- pos.x camera.pos.x )
real-y (- pos.y camera.pos.y)
x-offset (* 8 grid-pos.gx)
y-offset (* 8 grid-pos.gy)]
(if (btn 0) (spr 288 real-x (- real-y y-offset) 5 1 0 3 2 2)
(btn 1) (spr 288 real-x (+ real-y y-offset) 5 1 0 1 2 2)
(btn 2) (spr 288 (- real-x x-offset) real-y 5 1 0 2 2 2)
(btn 3) (spr 288 (+ real-x x-offset) real-y 5 1 0 0 2 2)))))
(ui-proc-sys
map-items-ui
(req-all :pos :map-marker)
(fn [_ {: pos : map-marker}]
(rect pos.x pos.y 4 4 map-marker.color)))
(ui-proc-sys
player-health-ui
(req-all :player :health)
(fn [_ {: health}]
(for [i 0 (- health.max 1)]
(spr (if (< i health.current) 320 322)
218 (+ (* i 12) 4) 0 1 0 0 2 2))))
(ui-proc-sys
player-stats-ui
(req-all :player :stats :grid-pos)
(fn [_ {: stats : grid-pos}]
;; bananas
(for [i 0 (- stats.max-bananas 1)]
(spr (if (< i stats.bananas) 352 354)
218 (+ (* i 12) 50) 0 1 0 0 2 2))
;; bananas
(for [i 0 (- stats.max-snowballs 1)]
(spr (if (< i stats.snowballs) 384 386)
218 (+ (* i 12) 94) 0 1 0 0 2 2))))
;; Factories
(fn camera-spawn []
(let [x (* 8 144)
y (+ (* 8 56) -4)]
(+ (ent {: move
:is-visible (fn [self {: pos}]
(let [real-x (- pos.x self.pos.x)
real-y (- pos.y self.pos.y)]
(and (> real-x 0) (< real-x 240)
(> real-y 0) (< real-y 128))))
:in-room (fn [self {: pos}]
(let [real-x (- pos.x self.pos.x)
real-y (- pos.y self.pos.y)]
(and (> real-x 0) (< real-x 190)
(> real-y 8) (< real-y 110))))})
(cmp :camera {})
(pos x y)
(des-pos x y 0.2)
(grid-pos 4 4 1 1 (* 8 26) (* 8 16)))))
(fn player-mm-spawn []
(let [x 26
y 26]
(+ (ent {: move })
(pos x y)
(des-pos x y 0.5)
(grid-pos 4 4 1 1 8 8)
(map-marker 2))))
(fn snowball-smash [self world move-back?]
(when (not self.snowball.smashing)
(let [dir self.snowball.dir]
(set self.snowball.smashing true)
(when move-back?
(self:move (opposite dir)))
(set self.anim.current (.. "smash-" dir))
(create-timer world 1 16 #(rmv-ent world self)))))
(fn snowball-collide [self world]
(match (collide world self)
:wall (self:smash world true)
(:player p)
(do (self:smash world true)
(p:damage))
(:enemy e)
(do (self:smash world true)
(e.health:damage))
(:snowball s)
(when (not= s.snowball.dir self.snowball.dir)
(self:smash world true)
(s:smash world false))
_
(do (set self.anim.current self.snowball.dir)
(create-timer world 1 20 #(set self.anim.current :idle)))
)
)
(fn snowball-spawn [x y dir]
(+ (ent {: move :smash snowball-smash :collide snowball-collide})
(snowball dir)
(pos (* x 8) (* y 8))
(des-pos (* x 8) (* y 8) 0.3)
(grid-pos x y 2 2 16 16)
(collidable)
(actor 0
(fn [self {: world}]
(self:move dir)
(self:collide world)
(when (not (world.camera:in-room self))
(rmv-ent world self))
(coroutine.yield)))
(anim :idle
{:idle {:speed 100 :width 2 :height 2 :frames [384]}
:right {:speed 5 :width 2 :height 2 :frames [418 418 418 420]}
:left {:speed 5 :width 2 :height 2 :frames [[418 0 1]
[418 0 1]
[418 0 1]
[420 0 1]]}
:up {:speed 5 :width 2 :height 2 :frames [384 384 418 420]}
:down {:speed 5 :width 2 :height 2 :frames [[418 0 1]
[418 0 1]
[418 0 1]
[420 0 1]]}
:smash-right {:speed 3 :width 2 :height 2 :frames [422 424 426 428 430 430]}
:smash-left {:speed 4 :width 2 :height 2 :frames [[422 1]
[424 1]
[426 1]
[428 1]
[430 1]]}
:smash-up {:speed 4 :width 2 :height 2 :frames [[422 1 3]
[424 1 3]
[426 1 3]
[428 1 3]
[430 1 3]]}
:smash-down {:speed 4 :width 2 :height 2 :frames [[422 1 1]
[424 1 1]
[426 1 1]
[428 1 1]
[430 1 1]]}
})))
(fn throw-snowball [self world dir]
(var snowball
(add-ent world
(snowball-spawn
(match dir
:up self.grid-pos.x
:down self.grid-pos.x
:left (- self.grid-pos.x 2)
:right (+ self.grid-pos.x 2))
(match dir
:up (- self.grid-pos.y 2)
:down (+ self.grid-pos.y 2)
:left self.grid-pos.y
:right self.grid-pos.y)
dir)))
(snowball:collide world))
(fn damage [self world e]
(sfx 35 "C-2" 30 1)
(self.health:damage)
(when (= self.health.current 0)
(self:game-over-loose))
(rmv-ent world e))
(fn collect-banana [self world banana]
(trace "collected banana!")
(sfx 36 "C-7" 120 1)
(self.stats:add :bananas)
(self.health:heal)
(when (= self.stats.bananas self.stats.max-bananas)
(self:game-over-win))
;; TODO banana collection animation
(rmv-ent world banana))
(fn game-over-win [self]
(state-goto :win))
(fn game-over-loose [self]
(state-goto :loose))
(fn player-spawn [x y map-marker]
(+ (ent {: move
: damage
: throw-snowball
: collect-banana
: game-over-win
: game-over-loose})
(player)
(pos (* x 8) (* y 8))
(des-pos (* x 8) (* y 8) 0.3)
(grid-pos x y 2 2 16 16)
(health 3)
(stats)
(collidable)
(anim :idle-down
{:idle-up {:speed 30 :width 2 :height 2 :frames [326]}
:idle-down {:speed 30 :width 2 :height 2 :frames [324]}
:idle-left {:speed 30 :width 2 :height 2 :frames [328]}
:idle-right {:speed 30 :width 2 :height 2 :frames [[328 1]]}
:step-up {:speed 20 :width 2 :height 2 :frames [332]}
:step-down {:speed 20 :width 2 :height 2 :frames [330]}
:step-left {:speed 20 :width 2 :height 2 :frames [334]}
:step-right {:speed 20 :width 2 :height 2 :frames [[334 1]]}
:throw-up {:speed 20 :width 2 :height 2 :frames [332]}
:throw-down {:speed 20 :width 2 :height 2 :frames [330]}
:throw-left {:speed 20 :width 2 :height 2 :frames [334]}
:throw-right {:speed 20 :width 2 :height 2 :frames [[334 1]]}
})
(actor 1
(fn [self {: world}]
(let [{: camera} world
{: des-pos : pos : anim : stats} self
dir (if (btn 0) :up
(btn 1) :down
(btn 2) :left
(btn 3) :right)]
;; taking actual actions
(if (btnp 4) ; move
(do (self:move dir)
(match (collide world self)
:wall (self:move (opposite dir))
:enemy (self:move (opposite dir))
(:snowball s)
(when (and (not= s.snowball.dir dir)
(not s.snowball.smashing))
(self:damage world s)
(s:smash world))
(:banana b) (self:collect-banana world b))
(set anim.current (.. "step-" dir))
(create-timer world 1 20 #(set anim.current (.. "idle-" dir)))
(sfx 32))
(and (btnp 5) (> self.stats.snowballs 0)) ; throw snowball
(do (self:throw-snowball world dir)
(self.stats:sub :snowballs)
(sfx 33)
(set anim.current (.. "throw-" dir))
(create-timer world 1 20 #(set anim.current (.. "idle-" dir)))
)
(btnp 6) ; make snowball
(do (self.stats:add :snowballs)
(sfx 34)))
;; Handle camera moving to new room
(match dir
:up
(when (< (- pos.y camera.pos.y 8) 0)
(camera:move :up)
(map-marker:move :up))
:down
(when (> (- pos.y camera.pos.y) 114)
(camera:move :down)
(map-marker:move :down))
:left
(when (< (- pos.x camera.pos.x 8) 0)
(camera:move :left)
(map-marker:move :left))
:right
(when (> (- pos.x camera.pos.x) 190)
(camera:move :right)
(map-marker:move :right)))
(coroutine.yield))))))
(fn enemy-ai-factory [actions]
(var i 1)
(fn [self {: world}]
(match (. actions i)
[:move dir]
(do (set self.anim.current (.. "step-" dir))
(create-timer world 1 20 #(set self.anim.current (.. "idle-" dir)))
(: self :move dir)
(match (collide world self)
:wall
(: self :move (opposite dir))
(:player p)
(do (p:damage world self)
(: self :move (opposite dir)))
:enemy
(: self :move (opposite dir))))
[:throw dir]
(do (set self.anim.current (.. "step-" dir))
(create-timer world 1 20 #(set self.anim.current (.. "idle-" dir)))
(: self :throw-snowball world dir))
:wait nil)
(set i (+ i 1))
(when (> i (# actions))
(set i 1))
(coroutine.yield)))
(global enemy-spawn
(fn enemy-spawn [x y ai]
(+ (ent {: move : throw-snowball})
(enemy)
(pos (* x 8) (* y 8))
(des-pos (* x 8) (* y 8) 0.3)
(grid-pos x y 2 2 16 16)
(health 1)
(collidable)
(anim :idle-down
{:idle-up {:speed 30 :width 2 :height 2 :frames [358]}
:idle-down {:speed 30 :width 2 :height 2 :frames [356]}
:idle-left {:speed 30 :width 2 :height 2 :frames [360]}
:idle-right {:speed 30 :width 2 :height 2 :frames [[360 1]]}
:step-up {:speed 20 :width 2 :height 2 :frames [364]}
:step-down {:speed 20 :width 2 :height 2 :frames [362]}
:step-left {:speed 20 :width 2 :height 2 :frames [366]}
:step-right {:speed 20 :width 2 :height 2 :frames [[366 1]]}
:die {:speed 5 :width 2 :height 2 :frames [[366 0 0]
[366 0 1]
[366 0 2]
[366 0 3]]}
})
(actor 2 (enemy-ai-factory ai)))))
(global banana-spawn
(fn banana-spawn [x y]
(+ (ent)
(banana)
(pos (* x 8) (* y 8))
(grid-pos x y 2 2 16 16)
(collidable)
(anim :idle
{:idle {:speed 100 :width 2 :height 2 :frames [352]}}))))
(state-add
:main
(fn init [self]
(set self.world (tiny.world))
(music -1)
(generate-world 4 4 3 self.world)
(music 3)
(add-sys self.world des-pos-tic)
(add-sys self.world anim-tic)
(add-sys self.world timer-tic)
(add-sys self.world shaker-tic)
(add-sys self.world actors-tic)
(add-sys self.world collidables)
(add-sys self.world enemy-death-tic)
(add-sys self.world anim-draw)
(add-sys self.world player-arrow-draw)
(add-sys self.world map-items-ui)
(add-sys self.world player-health-ui)
(add-sys self.world player-stats-ui)
(add-global-ent self.world :camera (camera-spawn))
(var player-mm (add-ent self.world (player-mm-spawn)))
(add-ent self.world (player-spawn 154 64 player-mm))
)
(fn tic [{: world} t]
(cls)
(world:update dt update-system-filter)
(map 0 0 240 136 (- world.camera.pos.x) (- world.camera.pos.y))
(world:update dt draw-system-filter)
(map 1 1 7 7 0 0 0)
(rect 208 0 32 136 0)
(world:update dt ui-system-filter)
;; (print (tiny.getEntityCount world) 2 2)
)
(fn teardown [self]
(clear-entities self.world)
(clear-systems self.world)
(refresh self.world)
(set self.world nil)
))
(state-add
:title
(fn init [self]
(tset self :select 0)
(tset self :seed "Random")
(music 0 -1 -1 false)
)
(fn tic [self]
(cls)
;; Title
(map 60 0 17 5 50 (+ 10 (* 1 (sin (/ (time) 300)))))
;; menu
(print "Begin" 104 70 12)
(print "Set Seed" 95 85 12)
(if (= self.seed "Random")
(print self.seed 100 95 11)
(print self.seed 113 95 11))
(match self.select
0 (do (spr 448 90 68 0)
(spr 448 135 68 0))
1 (do (spr 448 68 84 0)
(spr 448 155 84 0)
(spr 450 85 94 0)
(spr 449 140 94 0)
)
)
(when (btnp 0)
(set self.select (- self.select 1))
(sfx 38))
(when (btnp 1)
(set self.select (+ self.select 1))
(sfx 38))
(when (= self.select -1) (set self.select 1))
(when (= self.select 2) (set self.select 0))
(when (and (btnp 3))
(sfx 38)
(set self.seed
(if (= self.seed "Random") 0
(+ self.seed 1))))
(when (and (btnp 2) (not= self.seed "Random"))
(sfx 38)
(set self.seed
(if (< self.seed 1) "Random"
(- self.seed 1))))
(when (and (= self.select 0) (btnp 4))
(when (not= self.seed "Random")
(rnd-seed self.seed))
(state-goto :main)))
(fn teardown [self] nil))
(state-add
:win
(fn init [self]
(music 2 -1 -1 false))
(fn tic [self]
(cls 0)
(print "You found all 3 golden bananas!" 35 10 12)
(print "Thanks for playing" 70 30 12)
(print "Press anything to continue..." 42 50 12)
(spr 352 60 70 0 2 0 0 2 2)
(spr 352 100 70 0 2 0 0 2 2)
(spr 352 140 70 0 2 0 0 2 2)
(when (or (btnp 0) (btnp 1) (btnp 2) (btnp 3)
(btnp 4) (btnp 5) (btnp 6) (btnp 7))
(reset)))
(fn teardown [self] nil))
(state-add
:loose
(fn init [self]
(music 1 -1 -1 false))
(fn tic [self]
(cls 0)
(print "You took too many snowball's to the" 25 10 12)
(print "face and are unable to go on." 37 30 12)
(print "Press anything to continue..." 42 50 12)
(spr 322 60 70 0 2 0 0 2 2)
(spr 322 100 70 0 2 0 0 2 2)
(spr 322 140 70 0 2 0 0 2 2)
(when (or (btnp 0) (btnp 1) (btnp 2) (btnp 3)
(btnp 4) (btnp 5) (btnp 6) (btnp 7))
(reset)))
(fn teardown [self] nil))
(state-start :title)
(global TIC (fn tic [] (state-tic 1)))
;; <TILES>
;; 001:ccccccccc888888c8888888c8888888c8888888c8888888cc888888ccccccccc
;; 002:cc8888ccc888888cc888888cc888888cc888888cc888888cc888888ccccccccc
;; 003:ccccccccc888888cc8888888c8888888c8888888c8888888c888888ccccccccc
;; 004:ccccccccc888888cc888888cc888888cc888888cc888888cc888888ccc8888cc
;; 010:0000000000cc00000caac0cc0a9aacaa099aaa99090aa999000aa900000aa000
;; 011:0000000000000000cccc0000aaaac00099aaac00999aaa000099aa000009aa00
;; 012:000000cc00000caa0000caa90000aa990000aa900000aaa000009aaa000009aa
;; 013:cccc0000aaaac000999aac000009aa000009aa000000a90000009900aa009000
;; 014:0000000000000ccc0000caaa000caa9900caa90000aa900000aa900000aa000a
;; 015:00000000ccc00000aaac000099aac000009aa0000009a000a900a000a900a000
;; 017:cc8888ccc888888c8888888c8888888c8888888c8888888cc888888ccccccccc
;; 018:cc8888ccc888888cc8888888c8888888c8888888c8888888c888888ccccccccc
;; 019:ccccccccc888888cc8888888c8888888c8888888c8888888c888888ccc8888cc
;; 020:ccccccccc888888c8888888c8888888c8888888c8888888cc888888ccc8888cc
;; 021:cc8888ccc888888cc888888cc888888cc888888cc888888cc888888ccc8888cc
;; 022:ccccccccc888888c88888888888888888888888888888888c888888ccccccccc
;; 026:000aa000000aa000000aa000000aa000000aa00000aaaa000099990000999900
;; 027:0000aa000000aa000000aa000000aa000000aa00000aaaa00009999000099990
;; 028:0000c099000ca000000aa000000aaa000009aaaa00099aaa0000999900000999
;; 029:aaaa000099aaa0000099aa00000aaa00aaaaa900aaaa99009999900099990000
;; 030:00aa000a00aaa009009aa000009aaaa00009aaaa000099aa0000099900000000
;; 031:aaaa9000aaa99000999900000000a000aaaa9000aa9900009990000000000000
;; 033:cc8888ccc888888c8888888c8888888c8888888c8888888cc888888ccc8888cc
;; 034:cc8888ccc888888c88888888888888888888888888888888c888888ccccccccc
;; 035:cc8888ccc888888cc8888888c8888888c8888888c8888888c888888ccc8888cc
;; 036:ccccccccc888888c88888888888888888888888888888888c888888ccc8888cc
;; 042:00000000000cc00000caac0000aaaa0000aa9a0000aa990000aa090c00aa000a
;; 043:00000000000cc00000caac0000aaaa0000a9aa000099aa00c090aa00a000aa00
;; 044:000000000000cc0c000caaca000a99aa000999aa000900aa0000aaaa000099aa
;; 045:cccc0000aaaac000aaaaac00a999aa0099999a0090009900aaa0090099900000
;; 046:00cc0ccc0caacaaa0a9aaaaa099aa999090aa900000aa000000aa000000aaaaa
;; 047:cc000000aac00000aaac000099aa0000009a0000000a000000aa0000aaa90000
;; 049:cc8888ccc888888c88888888888888888888888888888888c888888ccc8888cc
;; 050:8888888888888888888888888888888888888888888888888888888888888888
;; 051:8888888888888888888888888888888888888888888888888888888888888888
;; 052:8888888888888888888888888888888888888888888888888888888888888888
;; 058:00aa000a00aa000a00aa000a00aaa0aa009aaaa90099aa990009999000009900
;; 059:a000aa00a000aa00a000aa00aa0aaa009aaaa90099aa99000999900000990000
;; 060:000cc9aa00caa0aa00aa00aa00aa00aa00aa00aa009aaaa90099999900099990
;; 061:9990000000000000000000000000000000000000000000000000000000000000
;; 062:000aaaaa000aa999000aa999000aa000000aa00000aaaa000099990000999900
;; 063:aa900000aaa000009aa000009aaa000009aa00000aaaa0000999900009999000
;; 064:7777777777777777777777777777777777777777777777777777777777777777
;; 065:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
;; 074:0000000c0000ccca000caaaa000aaaaa000a999a000999aa0009009a0000009a
;; 075:c0000c00acccca00aaaaaa00aaaaa900a9999900aa999000a9000000a9000000
;; 076:000cc00c00caacca00a99aaa0090aa99009aa999000a990000aaaaaa00aa9999
;; 077:cc000000aacc0000aaaac000999aac009999aa0000009a00aaaaa90099999900
;; 078:0000000c0000000a0000000a000000090000cccc0000aaaa000099aa0000999a
;; 079:c0000000a0000000a000000090000000cccc0000aaaa0000aa990000a9990000
;; 080:6666666666666666666666666666666666666666666666666666666666666666
;; 081:5555555555555555555555555555555555555555555555555555555555555555
;; 090:0000000a0000aa0a000aa90a000aa90a000aaaaa0009aaa90009999900009990
;; 091:a0000000a0000000a0000000a00a0000aaaa00009aa900009999000009900000
;; 092:00aa9999009aa000009aaa000009aaaa00099aaa0000999a0000099900000009
;; 093:99999000000000000000000000000a00aaaaa900aaa999009999900099900000
;; 094:0000009a0000000a0000000a0000000a000000aa0000aaaa0000999900009999
;; 095:a9000000a0000000a0000000a0000000aa000000aaaa00009999000099990000
;; 096:ddddddddddddddddddddddddddddddddddddddddddddddddddddddddcccccccc
;; 097:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
;; 102:cccddcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
;; 103:cddcccdcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
;; 106:000000cc00000caa0000caa90000aa990000aa900000aa000000aaa000009aaa
;; 107:cc0cc000aacaac009aa99a0099aa990009aa090000aa00000aaa0000aaaa0000
;; 108:0000000000000ccc0000c000000c09aa00c09acc0c09accc0a0aaccc0a0acacc
;; 109:00000000ccc00000000c0000aa90c000cca90c00ccca90a0cccca0a0cccca0a0
;; 112:eeeeeeeeeaaeeaaeddaeeaaeddeedddeeeefdddeefeadddffffaafff08080088
;; 118:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
;; 122:000009aa0000a099000a0000000aa0000009aaaa00099aaa0000999900000999
;; 123:a9aa000090aa000000aa00000aaa0000aaa90000aa9900009990000099000000
;; 124:0a0aaacc0a0aacac0a09aaaa00a09aac000a09aa0000a00000000aaa00000000
;; 125:cccca0a0cccca0a0ccca90a0aca90a00aa90a000000a0000aaa0000000000000
;; 134:bbbbbbbbfffffffffff00fffff00000f00000000000000000000000000000000
;; 135:bbbbbbbbfffffffffff0ff0ff000000000000000000000000000000000000000
;; 144:0000000000000000000000000010100000001100000000000000000000000000
;; 145:0000000000000000000001000000000000000000010000000110000000000000
;; 160:0000000001111110011111100011100001110000011000000100000000000000
;; 161:0000000001111100001111100001111000001110000001100000001000000000
;; 176:0000000000000000000001000000101000100010010000100111011000000000
;; 177:0000000001000000011100000111000001111000011111000111111000000000
;; 192:0000000000000010000000100000100000010000000000000100011000000000
;; 193:0000000001100110010001000000100000000000000000000100000000000000
;; 208:0000000000010000000000100100001000000000000110000000000000000000
;; 209:0000000000011000000000000000000000010010001100000000000000000000
;; 210:8800000888088000000880000000000080000008800888080008880000088000
;; 211:8800000888088000000880000000000080000008800888080008880000088000
;; 212:0000000000000000c00c00000c0c00c00c0c0c00000000000000000000000000
;; 213:00000000000c00000c00c0c000c0c0c000000000000000000000000000000000
;; 224:0000000001000010010000000100000000000000010000100010011000000000
;; 225:0000000001101110000000100100000000000000010000100110011000000000
;; 226:8080808009089908898099800808080880808080089998089089908998080809
;; 227:8080808009089908898099800808080880808080089998089089908998080809
;; 228:000000000000000000000000c00c00000c0c00c00c0c0c000000000000000000
;; 229:000000000000000000000000000c0000000c0c000c00c00000c0c00000000000
;; 240:0000000001111110001111100111111001111110011111100111011000000000
;; 241:0000000000111110001111000111111001111110011111100111011000000000
;; 242:8998888889988998888889988888888888998888889988889899888998888889
;; 243:8998888889988998888889988888888888998888889988889899888998888889
;; 244:000000000000c0000c00c0c000c0c0c000c00000000000000000000000000000
;; 245:000000000000000000000000cc000c0000c0c0000000c0000000000000000000
;; </TILES>
;; <SPRITES>
;; 032:55555555555555555555555555555555555555555ccccccc5c2222225c222222
;; 033:5555555555555555cc555555c2c55555c22c5555c222c55522222c55222222c5
;; 048:5c2222225c2222225ccccccc5555555555555555555555555555555555555555
;; 049:222222c522222c55c222c555c22c5555c2c55555cc5555555555555555555555
;; 064:000000000000000000000000000ccc0000c000c00c02220cc0222221c0222222
;; 065:0000000000000000000000000ccc0000c000c00002220c0022c220c0222c20c0
;; 066:0000000000000000000000000000000000000000000eee0000eeeeef00eeeeee
;; 067:00000000000000000000000000000000000000000eee0000eedee000eeede000
;; 068:000001110000166600016666000166cc0011cc11014111330141444401444414
;; 069:111000006661000066661000cc66100011cc1100331114104444141041444410
;; 070:000001110000166600016666000166660011c66101411c1c0141311c01444331
;; 071:11100000666100006666100066661000166c1100c1c11410c113141013344410
;; 072:00000111000016660001666600166666001ccccc001111110001414400014144
;; 073:11100000666100006666100066661000c66661101ccc1cc611111cc613310660
;; 074:00000000000001110000166600016666000166cc0011cc110141113301414444
;; 075:000066001116cc606661cc6066661600cc66100011cc11003311141044441410
;; 076:00000000000001110000166600016666000166660011c66601411cc601413111
;; 077:0000000011100000666100006666100066661000611c11001cc114101cc11410
;; 078:0000000000000111000016660001666600166666001ccccc0011111100014144
;; 079:0000000011100000666100006666100066666110c6661cc61ccc1cc611111660
;; 080:c02222220c01122200c01121000c01110000c01100000c01000000c00000000c
;; 081:222220c022220c002220c000220c000010c000000c000000c000000000000000
;; 082:00eeeeee000ffeee0000ffef00000fff000000ff0000000f0000000000000000
;; 083:eeeee000eeee0000eee00000ee000000f0000000000000000000000000000000
;; 084:0011441400011443001765110166755501657665001117710001221100001110
;; 085:4144110034411000115671005557661056675610177111001122100001110000
;; 086:0011444400011333001765110176655501767665001117710001221100001110
;; 087:4444110033311000115671005556671056676710177111001122100001110000
;; 088:0001444400001333000001110000015700000076000001750000122700000111
;; 089:3331000033110000111000007610000067100000671000007210000011000000
;; 090:0144441400114414016114430117651100016655000117770001221100001110
;; 091:4144441041441100344100001111100055166100771561001111100000000000
;; 092:0144433300114444001113330155651101661665001117710000011100000000
;; 093:3113441044441110333116101156710056671000177110001122100001110000
;; 094:0001414400014444000713330007611100011156001221160001221100001110
;; 095:1331000033310000331100001771000075571000766721001772210000011000
;; 096:0000000000000000000cc00000c00c000c0120cc0c0442000c03444c0c023444
;; 097:0000000000cc00000c00c000c0110c00c0110c0004410c00c4340c0043440c00
;; 098:00000000000000000000000000000000000ff000000ddf00000edddc000feddd
;; 099:00000000000000000000000000ff000000ff00000ddf0000cded0000dedd0000
;; 100:000011110001aaab001aaaaa019aaa9901999933011142440141422401344312
;; 101:11110000baaa1000aaaaa10099aaa91033999910442411104224141021344310
;; 102:00011111001aaaab01aaaaaa01aaaaaa01999aaa011119990141311101444333
;; 103:11111000baaaa100aaaaaa10aaaaaa10aaa99910999111101113141033344410
;; 104:000011110001aaaa0001aaaa001aaaaa00199999001112110001214400014144
;; 105:11100000aaa10000aaaa1000aaaaa1009aaaa100119991001111110013311000
;; 106:00000000000011110001aaab001aaaaa019aaa99019999330111424401414224
;; 107:0000000011110000baaa1000aaaaa10099aaa910339999104424111042241410
;; 108:0000000000011111001aaaab01aaaaaa01aaaaaa01999aaa0111199901413111
;; 109:0000000011111000baaaa100aaaaaa10aaaaaa10aaa999109991111011131410
;; 110:00000000000011110001aaaa0001aaaa001aaaaa001999990011121100012144
;; 111:0000000011100000aaa10000aaaa1000aaaaa1009aaaa1001199910011111100
;; 112:00c023330c0344440c02344400c02333000c00000000cccc0000000000000000
;; 113:3c430c00c4430c004430c000330c000000c00000cc0000000000000000000000
;; 114:0000feee000edddd000feddd0000feee00000000000000000000000000000000
;; 115:ecde0000cdde0000dde00000ee00000000000000000000000000000000000000
;; 116:00114414000114420019ab1101aa9bbb01ab9aab001119910001221100001110
;; 117:414411002441100011ba9100bbb9aa10baa9ba10199111001122100001110000
;; 118:00114444000113330019ab11019aabbb019a9aab001119910001221100001110
;; 119:444411003331100011ba9100bbbaa910baa9a910199111001122100001110000
;; 120:000144440000133300000111000001b90000009a0000019b0000122900000111
;; 121:3331000033110000111000009a100000a9100000a91000009210000011000000
;; 122:0134431200114414019114420119ab110001aabb000119990001221100001110
;; 123:21344310414411002441000011111000bb1aa100991ba1001111100000000000
;; 124:01444333001144440011133301bbab1101aa1aab001119910000011100000000
;; 125:333444104444110033311a1011ba9100baa91000199110001122100001110000
;; 126:0001414400014444000913330009a111000111ba0012211a0001221100001110
;; 127:133110003331000033110000199100009bb910009aa921001992210000011000
;; 128:0000000000000ccc0000c000000c09aa00c09acc0c09accc0c0aaccc0c0acacc
;; 129:00000000ccc00000000c0000aa90c000cca90c00ccca90c0cccca0c0cccca0c0
;; 130:00000000000000000000000000000fee0000fedd000feddd000eeddd000ededd
;; 131:000000000000000000000000eef00000ddef0000dddef000dddde000dddde000
;; 132:00001111000f222300f222220f1222110f1111330fff42440f4f42240f344312
;; 133:111100003222f00022222f00112221f0331111f04424fff04224f4f0213443f0
;; 134:000fffff00f222230f2222220f2222220f1112220ffff1110f4f3fff0f444333
;; 135:fffff00032222f00222222f0222222f0222111f0111ffff0fff3f4f0333444f0
;; 136:0000ffff000f2222000f222200f2222200f1111100fff2ff000f2144000f4144
;; 137:fff00000222f00002222f00022222f0012222f00ff111f00ffffff00f33ff000
;; 138:000000000000ffff000f222300f222220f1222110f1111330fff42440f4f4224
;; 139:00000000ffff00003222f00022222f00112221f0331111f04424fff04224f4f0
;; 140:00000000000fffff00f222230f2222220f2222220f1112220ffff1110f4f3fff
;; 141:00000000fffff00032222f00222222f0222222f0222111f0111ffff0fff3f4f0
;; 142:000000000000ffff000f2222000f222200f2222200f1111100fff2ff000f2144
;; 143:00000000fff00000222f00002222f00022222f0012222f00ff111f00ffffff00
;; 144:0c0aaacc0c0aacac0c09aaaa00c09aac000c09aa0000c00000000ccc00000000
;; 145:cccca0c0cccca0c0ccca90c0aca90c00aa90c000000c0000ccc0000000000000
;; 146:000eeedd000eeded000feeee0000feed00000fee000000000000000000000000
;; 147:dddde000dddde000dddef000edef0000eef00000000000000000000000000000
;; 148:00ff4414000ff44400f123140f2213320f23122300fff11f000f99ff0000fff0
;; 149:4144ff00444ff00041321f00233122f0322132f0f11fff00ff99f0000fff0000
;; 150:00ff4444000ff33300f123110f1223330f12122300fff11f000f99ff0000fff0
;; 151:4444ff00333ff00011321f00333221f0322121f0f11fff00ff99f0000fff0000
;; 152:00f444440000f33300000fff00000f310000001200000f130000f99100000fff
;; 153:333f000033ff0000f1f0000012f0000021f0000021f0000019f00000ff000000
;; 154:0f34431200ff44140f1ff4440ff12314000f2232000ff111000f99ff0000fff0
;; 155:213443f04144ff00444f000041f1f00023122f0011132f00fffff00000000000
;; 156:0f44433300ff444400fff3330f3323110f22f22300fff11f00000fff00000000
;; 157:333444f04444ff00333ff2f011321f003221f000f11ff000ff99f0000fff0000
;; 158:000f414400f444440001f33300012111000fff3200f99ff2000f99ff0000fff0
;; 159:f33ff000333f000033ff0000111f00001331f00012219f00f1199f00000ff000
;; 160:000000000000000000000000000009aa00009acc0009accc000aaccc000acacc
;; 161:000000000000000000000000aa900000cca90000ccca9000cccca000cccca000
;; 162:0000000000000000000000000000cccc00cc00000c009aaac09accccc0acaccc
;; 163:000000000000000000000000cccc00000000cc00aaa900c0cccca90cccccca0c
;; 164:000000cc00000c000000c09a0000c0ac000c09cc000c0acc000c0acc000c0acc
;; 165:cc00000000c00000a90c0000ca0c0000cc90c000cca0c000cca0c000cca0c000
;; 166:000000000000000c000000c000000c090000c09a000c09ac000c0aac000c0aca
;; 167:00000000ccccc00000000c00aaaa90cccccca90cccccca9cccccccacccccccac
;; 169:000cccc000c0000c0c09aa9c0c0accacc09ccc9cc0acccacc0acccacc0acccac
;; 170:00000000000000000000000c00000000000000cc00000c000000c0990000c09a
;; 171:0cccccc0c0aa900c0acca99cc0aacaacccc0ac9c00c0acac900c9caccc9c9cac
;; 172:0000000c000000c9000000c00000000c0000c0c0000c090c00009aa0000c0990
;; 173:ccc000009a0ccccc990ca99cccc0c99c00c09a8c00c09a9cc0c09a9c00c08a9c
;; 174:0000000c00000000000000c00000000c0000c0c0000c0000000090a000000000
;; 175:0c0000000a0c0c0c000c090c0cc0090c0000000000c09a0c00c00a0c0000000c
;; 176:000aaacc000aacac0009aaaa00009aac000009aa000000000000000000000000
;; 177:cccca000cccca000ccca9000aca90000aa900000000000000000000000000000
;; 178:c0aaacccc09aaaac0c009aaa00cc00000000cccc000000000000000000000000
;; 179:ccccca0ccccca90caaa900c00000cc00cccc0000000000000000000000000000
;; 180:000c0aac000c0aac000c0aca000c09aa0000c0aa0000c09a00000c00000000cc
;; 181:cca0c000cca0c000cca0c000cc90c000ca0c0000a90c000000c00000cc000000
;; 182:000c0aaa000c0aac000c09aa0000c09a00000c09000000c00000000c00000000
;; 183:ccccccacacccccacaaccca9cacaca90caaaa90cc00000c00ccccc00000000000
;; 185:c0aaccacc0aaccacc0acacacc09aac9c0c0aacac0c09aa9c00c0000c000cccc0
;; 186:0000c09900000c00000000cc000000000000000c000000c0000000c00000000c
;; 187:ac009cac99c09cac0c009cacc0909c9c0aca0aacacca099c9990c00cccc00ccc
;; 188:0000c00c000000000000000c000000c000000c0800000c0a0000c09a0000c099
;; 189:00c08a8c00c08a8c00c08a9cccc08a9c0cc0889c80cc088ca0c0c00c0c000ccc
;; 190:0000c00c000000000000000c0000000000000c0800000000000000900000c090
;; 191:00c08a0c0000000000c00a0c0c000a9c0c000000000c080c00c000000c000c0c
;; 192:009aa90009acca909acccca9aacccccaaaccccca9aaccca909aaca90009aa900
;; 193:000020000000c20022222c202222222222222221111122100000210000001000
;; 194:00020000002c000002c222222222222212222222012211110012000000010000
;; </SPRITES>
;; <MAP>
;; 000:000000000000000000000000000016160606060606060606060600000606060606060606060616161616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 001:000000000000000000000000000016160707070707070707070700000707070707070707070716161616161600000000000000000000000000000000c0d0a0b0c6d6a2b200c2d2c6d6e2f2a4b400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 002:000000000000000000000000000016160606060606060606060606060606060606060606060616161616161600000000000000000000000000000000c1d1a1b1c7d7a3b300c3d3c7d7e3f3a5b500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 003:000000000000000000000000000016160707070707070707070707070707070707070707070716161616161600000000000000000000000000000000000000c0d0c4d4e4f4a6b6c4d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 004:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000c1d1c5d5e5f5a7b7c5d50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 005:000000000000000000000000000016161616161616161616161600001616161616161616161616161616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 006:000000000000000000000000000016161616161616161616161600001616161616161616161616160606161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 007:000000000000000000000000000016161616161616161616161616161616161616161616161616160707161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 008:000000000000000000000000000016161616161616161616161616161616161616161616161616160000161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 009:000000000000000000000000000000000000000000000000000000000000000000000000000000000000161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 010:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 011:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 012:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 013:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 014:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 015:000000000000000000000000000000000000000000000000000000000000000000000000000000001616161600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 017:000000000000000000000000000014010101011400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 018:000000000000000000000000000014010101011400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 019:000000000000000000000000000014010101011400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 020:000000000000000000000000000014010101011400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 021:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 022:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161416161616161616161616060600000000000000000606140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 023:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161416161616161616161616070700000000000000000707140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 024:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161416161616161616161616000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 025:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161416161616161616161616000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 026:140000000000000000161606061616000000000000000014060600000000000000000000000000000000000006061406060606060606060606000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 027:140000000000000000161607071616000000000000000014070700000000000000000000000000000000000007071407070707070707070707000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 028:140000000000000000060600000606000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 029:140000000000000000070700000707000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 030:140000000000000000000000000000000000000000000014060606060606000000000000000000000606060606061416161616161616161616000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 031:140000000069796979000000000000697969790000000014070707070707000000000000000000000707070707071416161616161616161616000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 032:140000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001416161616161616161616161600000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 033:140000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001416161616161616161616161600000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 034:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 035:140000000000000000000000000000000000000000000014161606060000000000000000000000000000060616161400000000000016161616060606060606060616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 036:140000000000000000000000000000000000000000000014161607070000000000000000000000000000070716161400000000000016161616070707070707070716161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 037:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161400000000000006060606000000000000000006061616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 038:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161400000000000007070707000000000000000007071616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 039:140000000016161616000000000000161616160000000014060600000000000000000000000000000000000006061400000000000000000000000000000000000000000606140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 040:140000000016161616000000000000161616160000000014070700000000000000000000000000000000000007071400000000000000000000000000000000000000000707140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 041:140000000006060606000000000000060606060000000014000000000000000000000000000000000000000000001416161616161616161616000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 042:140000000007070707000000000000070707070000000014000000000000000000000000000000000000000000001416161616161616161616000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 043:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161416161616161616161616161600000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 044:140000000000000000000000000000000000000000000014161600000000000000000000000000000000000016161416161616161616161616161600000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 045:140000000000000000000000000000000000000000000014161616160000000000000000000000000000161616161416161616161616161616161616161616161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 046:140000000000000000000000000000000000000000000014161616160000000000000000000000000000161616161416161616161616161616161616161616161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 047:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 048:140000000016160000000000000000000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 049:140000000016160000000000000000000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 050:140000000016160000000016160000000000000000000014000000000000060606060606060606060606000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 051:140000000016160000000016160000000000000000000014000000000000070707070707070707070707000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 052:140000000016160000000016160000000016160000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 053:140000000016160000000016160000000016160000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 054:140000000006060000000016160000000016160000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 055:140000000007070000000016160000000016160000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 056:140000000000000000000006060000000016160000000014000000000606060606060606060606060000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 057:140000000000000000000007070000000016160000000014000000000707070707070707070707070000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 058:140000000000000000000000000000000016160000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 059:140000000000000000000000000000000016160000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 060:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 061:140000161600000606060606060606060600001616000014000000000000060600000000000006060000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 062:140000161600000707070707070707070700001616000014000000000000070700000000000007070000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 063:140000060600000000000000000000000000000606000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 064:140000070700000000000000000000000000000707000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 065:140000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 066:140000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 067:140000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 068:140000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 069:141616000000000000000000000000000000000000161614161616161616161616161616161616161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 070:141616000000000000000000000000000000000000161614161616161616161616161616161616161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 071:141616000016160000161600001616000016160000161614161616161616161616161616161616161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 072:141616000016160000161600001616000016160000161614161616161616161616161616161616161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 073:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 074:140606060606060606000000000000060606060606060614000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 075:140707070707070707000000000000070707070707070714000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 076:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 077:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 078:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 079:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 080:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 081:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 082:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 083:140000000000000000000000000000000000000000000014000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 084:141616161616161616000000000000161616161616161614000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 085:141616161616161616000000000000161616161616161614000000000000000000000000000016161616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 086:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 087:140000000016161616000000000000000000000000000014161616160606000000000000000000000606161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 088:140000000016161616000000000000000000000000000014161616160707000000000000000000000707161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 089:140000000016161616000000000000000000000000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 090:140000000016161616000000000000000000000000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 091:140000000016161616000000000000161616160000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 092:140000000016161616000000000000161616160000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 093:140000000006060606000000000000161616160000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 094:140000000007070707000000000000161616160000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 095:140000000000000000000000000000161616160000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 096:140000000000000000000000000000161616160000000014161616160000000000000000000000000000161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 097:140000000000000000000000000000161616160000000014161616161616000000000000000000001616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 098:140000000000000000000000000000161616160000000014161616161616000000000000000000001616161616161400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 099:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 100:140606060606060606000000000000000000001616161614161616160000000000000000000000000606161616161416161616161616161616161616161616161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 101:140707070707070707000000000000000000001616161614161616160000000000000000000000000707161616161416161616161616161616161616161616161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 102:140000000000000000000000000000000000001616161614060606061616161600000000000000000000060616161416161616161600000000000000000000161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 103:140000000000000000000000000000000000001616161614070707071616161600000000000000000000070716161416161616161600000000000000000000161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 104:140000000000000000000000000000000000001616161614000000000606060616161616000000000000000016161416161616000000000000000000000000000016161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 105:140000000000000000000000000000000000001616161614000000000707070716161616000000000000000016161416161616000000000000000000000000000016161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 106:140000000000000000000000000000000000001616161614000000000000000006060606000000000000000016161416160000000000000000000000000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 107:140000000000000000000000000000000000001616161614000000000000000007070707000000000000000016161416160000000000000000000000000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 108:141616000000000000000000000000000016161616161614000000000000000000000000000000000000000016161416160000000000000000000000000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 109:141616000000000000000000000000000016161616161614000000000000000000000000000000000000000016161416160000000000000000000000000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 110:141616161616161616161616161616161616161616161614000000000000000016161616161616161616161616161416160000000000000000000000000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 111:141616161616161616161616161616161616161616161614000000000000000016161616161616161616161616161416160000000000000000000000000000000000001616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 112:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 113:140606060606060606060606060606060606060606161614000000000000000000000000161616161616161616161406060000000000000000000000000000000000000606140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 114:140707070707070707070707070707070707070707161614000000000000000000000000161616161616161616161407070000000000000000000000000000000000000707140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 115:140000000000000000000000000000000000000000161614000000000000000000000000161616161616161616161400000000060606060606060606060606060600000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 116:140000000000000000000000000000000000000000161614000000000000000000000000161616161616161616161400000000070707070707070707070707070700000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 117:140000000000000000000000000000000000000000161614000000000000000000000000161616161616161616161400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 118:140000000000000000000000000000000000000000161614000000000000000000000000161616161616161616161400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 119:140000000016160606060606060606060600000000161614000000000000000000000000161616161616161616161400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 120:140000000016160707070707070707070700000000161614000000000000000000000000161616161616161616161400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 121:140000000016160000000000000000000000000000161614161616161616161616160000161616161616161616161400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 122:140000000016160000000000000000000000000000161614161616161616161616160000161616161616161616161400000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 123:140000000016160000000000000000000000000000161614161616161616161616160000161616161616161616161416161616161616160000000000001616161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 124:140000000016160000000000000000000000000000161614161616161616161616160000161616161616161616161416161616161616160000000000001616161616161616140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 125:141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; </MAP>
;; <WAVES>
;; 001:01357899aabbccdeffeca65433322100
;; 002:f000000000000000f000000000000000
;; 003:fff0000000000000fff0000000000000
;; 004:fffff00000000000fffff00000000000
;; 005:fffffff000000000fffffff000000000
;; 006:fffffff0000000000000015ddeffabbc
;; 007:8bcddeeeeeeedcca8754211111112346
;; 008:000235578aacdffffffdcaa875532000
;; 009:fffffffffffffff00000000000000000
;; 010:72000158bdefffec72000158bdefffec
;; 011:8efcbcdb97a976556775333235542238
;; 015:0123456789abcdeffedcba9876543210
;; </WAVES>
;; <SFX>
;; 000:0b001b005b009b00bb00bb00bb00bb00bb00bb00bb00bb00bb00bb00bb00bb00cb00cb00cb00cb00cb00cb00cb00db00db00db00db00eb00eb00fb00371000000000
;; 001:32004200b200c200c200d200d200d200d200e200e200e200e200e200e200e200e200e200e200e200e200e200e200e200e200e200e200e200e200f200404000000000
;; 002:83004300030003003300630073009300a300c300c300d300d300d300d300d300d300d300d300d300d300d300d300d300d300d300e300e300e300e300404000000000
;; 003:7700170007000700170027004700570077009700a700b700c700d700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700f700404000000000
;; 004:35004500b500c500c500d500d500d500d500e500e500e500e500e500e500e500e500e500e500e500e500e500e500e500e500e500e500e500e500f500200000000000
;; 005:d600d600c600c600c600c600c600b600b600b600b600b600a600a600a600a600a6009600960096009600860086008600860076007600760076006600c77000000000
;; 006:000216071602000730008003d004e005f006f006f006f007f007f007f007f007f007f007f007f007f007f007f007f007f007f007f007f007f007f007c04000000000
;; 007:0600060016001600260026006600c600d600d600d600d600d600d600d600d600d600d600d600d600d600d600d600d600d600d600d600d600e600f60047b000000000
;; 008:070007300770070017001700170017002700270027003700370047008700d700d700d700d700d700d700d700d700d700d700d700d700d700e700f700407000000300
;; 009:0b000b400b700b001b001b001b001b002b002b002b003b003b006b006b006b006b007b007b008b008b008b008b008b008b008b009b009b009b009b00200000000300
;; 010:000b060726036600960ec60de60ce60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bf60bb00000000000
;; 011:080038004801480138002800180f080f08000800080018002800280038003800380028002800280018000800f800f800f800f800f800f800f800f800c060007f0008
;; 012:09070905090309010900090f090e090d090c090b090a090a09090909090909090909090909090909090909090909090909090909090919095909b909b00000000000
;; 013:080038004801580168007800780f880f880098009800a800a800a800b800b800c800c800c800d800d800d800d800e800e800e800e800e800e800f800b70000000008
;; 014:060c060d060e060f06000600060006001600160026002600360046006600c600d600d600d600d600d600d600d600d600d600d600d600d600e600f600b70000000000
;; 015:ca007a003a000a000a002a003a003a003a003a003a003a003a003a003a003a003a013a023a013a003a0f3a0e3a0f3a003a004a004a004a004a004a003000000000f8
;; 016:040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400201000000000
;; 017:7600160006000600060026004600560076009600a600b600c600d600e600e600e600e600e600e600e600e600e600e600e600e600e600e600e600f600409000000000
;; 018:c3007300330003000300230033003300330033003300330033c033c033c033c0330133023301330033cf33ce33cf33c03300430043004300430043002000000008f8
;; 019:0a001a003a004a004a005a006a006a007a008a008a008a009a009a00aa00aa00aa00ba00ba00ba00ba00ba00ba00ca00ca00ca00ca00ca00ca00ca00301000000000
;; 032:f000d000b000a00090008000800090009000a000c000e000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000410000000000
;; 033:40e720d710c610a61095108520742074306330524042504160307030702e802d901da01ca01cb00bb00bc00bc00ac00ad00ad009e009e009f008f008520000000000
;; 034:d03a803aa03ac03ad03ae03af030e0803080508080809080c080d080d080e080f080e0f7d0f7a0f700f720f730f760f780f7b0f7d0f0e0f0f0f0f0f0311000000000
;; 035:00e010e014d024c034c044b054a06490748084709470a460b450b450c440d440e440e430f420f420f420f400f400f400f400f400f400f400f400f40011a000000000
;; 036:970a474a077b074c17cd170e170f270027023702370437054706570767077700770087009700a700c700d700d700e700e700e700e700e700e700f700670000000500
;; 037:00e010e414d024cc34c4445054a0649b74d084709477a420b450b450c44dd440e470e430f42df410f420f400f400f400f400f400f400f400f400f400109000000000
;; 038:0300030043008300d300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300409000000000
;; 040:0000000000001000100020003000400060007000800090009000a000b000b000c000c000c000d000d000d000d000d000e000e000e000e000f000f000720000000000
;; </SFX>
;; <PATTERNS>
;; 000:4fa11d000000000000000000000000000000000000000000d0001b00000000000000000000000000000000000000000040001d000000000000000000000000000000000000000000d0001b00000000000000000000000000000000000000000040001d000000000000000000000000000000000000000000dd611b00000000000000000000000000000000000000000049411d000000000000000000000000000000000000000000d6211b000000000000000000000000000000000000000000
;; 001:0af100000000000000000000b0001b00000000000000000000003000000000000000000080001b000000000000000000000000000000000000000000b0001b00000000000000000000003000000000000000000080001b000000000000000000000000000000000000000000b0001b00000000000000000006d13000000000000000000080001b000000000000000000049100000000000000000000b0001b00000000000000000002613000000000000000000080001b000000000000000000
;; 002:4000030000000000000000000000300000000000000000000ff1300dd1000aa100099100055130044100033100022100011100100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 003:c00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa100000000000000000000000000000000000000000000055100000000000000000000022100000000000000000000
;; 004:7000050000c0c00005000000400007000000700007000000700005000000c00005000000400007000000700007000000900005000000e00005000000600007000000900007000000900005000000e00005000000600007000000900007000000400007000001800007000000b00007000000400009000001800009000000400009000000bff107000000800007000000400007000000baa107000000800007000000400007000000b44107000000800007000000400007000000000000000000
;; 005:4000fa7000fab000fac000fae000fa4000fce000fac000fab000fa7000fa4000fa7000fab000fac000fae000fa4000fc9000f8e000f86000fa9000fad000fae000fa6000fce000fa9000fa6000fae000f89000f86000f84000f8e000f86000fa4000fa0000f00000f00000f00dd1f00000f00cc1f00000f00aa1f00000f00661f00000f00000f00000f00000f00000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 006:4000c60000c0c000980000004000c6000000c000980000004000a6000000c000980000004000c6000000c000980000004000c6000000e000980000004000c6000000e000980000004000c6000000e000980000004000c6000000e000980000004000c600000040009a0000000000000000000000000000000000000000000000000000000dd100000000000000000000099100000000000000000000055100000000000000000000022100000000000000000000100090000000000000000000
;; 007:00000000000049413c000000000000000000000000000000000000000000d0003a00000000000000000000000000000000000000000040003c000000000000000000000000000000000000000000d0003a00000000000000000000000000000000000000000040003c000000000000000000000000000000000000000000d0003a00000000000000000000000000000000000000000040003c000000000000000000000000000000000000000000d0003a000000000000000000000000000000
;; 008:000000000000049100000000000000000000b0003a00000000000000000000003000000000000000000080003a000000000000000000000000000000000000000000b0003a00000000000000000000003000000000000000000080003a000000000000000000000000000000000000000000b0003a00000000000000000000003000000000000000000080003a000000000000000000000000000000000000000000b0003a00000000000000000000003000000000000000000080003a000000
;; 009:4fa13d000000000000000000000000000000000000000000c0003b0000000000000000000000000000000000000000004fa13b000000000000000000000000000000000000000000c00039000000000000000000000000000000600039000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 010:0af100000000000000000000b0003b00000000000000000000003000000000000000000090003b000000000000000000000000000000000000000000b00039000000000000000000000030000000000000000000700039000000000011000000400039000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 011:4fa11d0000008000dc000000b000dc000000f000dc0000d0d0001b0000008000dc000000b000dc000000f000dc00000050001d0000009000dc0000d0c000dc0000005000de000011e0001b0000009000dc0000d0c000dc0000d05000de00000060001dd000dca000dc6000dcd000daa000da8000da6000da600019000000000011000000600019000000600019000000600017000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 012:baf1f68000f64000f88000f8b0001b00000000000000000000003000000000000000000080001b0000000000000000005000f89000f8c000f89000fac0001b00000000000000000000000000000000000000001190001b000000000000000000a0001ba000fa6000fad000f8a000f86000f8d000f6a000f6a00019000000000000000000a00019000000a0001900000060001900000000000000000000000000000000000000000060001d000000000000000000100011000000000000000000
;; 013:400056000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000500056000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000600056000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100050000000000000000000000000000000000000000000000000000000000000000000
;; 014:800056000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000900056000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00056000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 015:4000f4000000000000000000b000f2000000000000000000c000f20000000000000000009000f20000000000000000004000f2000000000000000000b000f0000000000000000000c000f00000000000000000007000f00000006000f00000004000f00000000000000000000000f00000000000000000001000f0000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 016:86f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff613900000000000000000086f13b000000000000000000ff6139000000000000000000
;; 017:099100000000800039000000000000000000800039000000000000000000800039000000000000000000800039000000099100000000800039000000000000000000800039000000000000000000800039000000000000000000800039000000099100000000800039000000000000000000800039000000000000000000800039000000000000000000800039000000099100000000800039000000000000000000800039000000000000000000800039000000000000000000800039000000
;; 018:899123009600000000000000000000000000000000000000018600000000000000000000f006230dd100099100044100fdd123000000000000000000000000000000000000000000daa123000000000000000000000001000000000000000000b00023000000000000000000000001000000000000000000a18423000000000000000000000001000000000000000000800423000000000000000000000000000000000000000000600023000000000000000000018600000000000000000000
;; 019:8dd1230000000000000000000000000000000000000000000dd1000000000000000000000aa100000000000000000000088100000000000021000000066100000000000000000000044100000000000000000000000021000000000000000000022100000021011100000000100021000000000000000000000000000000000000000000000000000000000000000000844127a00027b00027f00027866129a00029b00029f000298aa12ba0002bb0002bf0002b8ee12da0002db0002df0002d
;; 020:8ff1158000138661151000118661151000118ff1150000008441150000008221151000118000150000008441150000008ff1150000008331150000008331151000118ff1150000008331151000118ff1150000118331150000008661150000008ff1151000118661151000118661151000118ff1150000008441150000008221151000118000150000008441150000008ff1150000008331150000008331151000118ff1150000008331151000118ff115000011833115000000866115000000
;; 021:fff115000011f66115100011f66115100011fff115000000f44115000000f22115100011f00015000000f44115000000fff115000000f33115000000f33115100011fff115000000f33115100011fff115000011f33115000000f66115000000fff115000011f66115100011f66115100011fff115000000f44115000000f22115100011f00015000000f44115000000fff115000000f33115000000f33115100011fff115000000f33115100011fff115000011f33115000000f66115000000
;; 022:4ff1150000114661151000114661151000114ff1150000004441150000004221151000114000150000f04441150000004ff1150000004331150000004331151000114ff1150000004331151000114ff1150000114331150000004661150000006ff1150000116661151000116661151000116ff1150000006441150000006221151000116000150000006441150000006ff1150000006331150000006331151000116ff1150000006331151000116ff115000011633115000000666115000000
;; 023:bff115000011b66115100011b66115100011bff115000000b44115000000822115100011b00015000000b44115000000bff115000000b33115000000833115100011bff115000000b33115100011bff115000011833115000000b66115000000dff115000011d66115100011d66115100011aff115000000d44115000000d22115100011d00015000000a44115000000dff115000000d33115000000d33115100011dff115000000a33115100011dff115000011d33115000000d66115000000
;; 024:8000f80000000000000000000000f0000000fff139044100fff1f800000000000000000000000000000000000050003b60003b50003b000000000000d99139000000000020000000f00039000031000031000000800039a000398ff139600039800039000000000031000031000031000000f00039000000f0003900000000003100000000003100000050003b60003b50003b000000000000000000d00039000000000000000000f00039000000000000000000000031000000000000000000
;; 025:8004f800000000000000000080f4fa0000000000000000000000000000000000000000000004f00000f00661f00000f0bff1fa0000f0a000fa0000f08000fa0000000000000000000000000000000000000000006000fa000000099100044100aff1f8000000000000000000d084f80000000000000000006000fa000000000000000000a000fa000000000000000000d000fa000000000000000000000000000000000000000000b004fa000000a000fa0000008000fa0000006000fa000000
;; 026:8004fa000000000000000000b0f4f80000000000000000008003f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 027:f000f60000000000000000004000f80000006000f80000008000f8000000000000000000a000f8000000000000000000b000f8000000000000000000d000f8000000f000f80000004000fa0000000000000000006000fa0000000000000000008000fa0000008000f8000000a000fa0000008000f8000000b000fa0000008000f8000000d000fa0000008000f8000000a000fa0000f06000f8000000b000fa0000006000f8000000d000fa0000006000f8000000f000fa0000006000f8000000
;; 028:9ff1130000119661131000119661131000119ff1130000009441130000009221131000119000137000139441130000009ff1130000009331130000009331131000119ff1130000009331131000119ff1130000119331130000009661130000007ff1150000117661151000117661151000117ff1150000007441150000007221151000117000150000117441150000009ff1150000009331150000006331151000119ff1150000006331151000119ff115000011933115000000966115000000
;; 029:4ff1170000114661171000114661171000114ff1170000004441170000004221171000114000170000004441170000004ff1170000004331170000004331171000114ff1170000004331171000114ff117000011433117000000466115000000eff115000011e66115100011e66115100011eff115000000e44115000000e22115100011e00015000000e44115000000eff115000000e33115000000e33115100011eff115000000e33115100011eff115000011e33115000000e66115000000
;; 030:4000fa0000f04000f80000f0f000f80000004000f8000000d000f80000004000f8000000b000f80000004000f80000009000f80000004000f8000000b000f80000f04000f8000000d000f80000004000f8000000e000f80000004000f8000000e000f80000007000f8000000d000f80000007000f80000f0b000f8000000e000f60000009000f8000000e000f6000000b000f80000007000f8000000d000f80000007000f8000000e000f80000007000f80000004000f87000f8d000f8e000f8
;; 031:6ff1150000110000111000116661151000116ff1150000001000110000001000111000116ff1151000119441150000006ff1150000001331110000006331151000116ff1150000009331131000119ff1130000119331130000009661130000007ff1130000117661151000117661151000117ff1150000007441150000001221111000117000150000117441150000009ff1150000009331150000007331151000117ff1150000007331151000117ff115000011133111000000166111000000
;; 032:d00035000000900037000000e00035000000600035000000d00035000031900037000031e00035000031900035000031400037000000900035000000e00035000000900037000000d00035000000900035000000b00035000031800035000000b00035000000700035000000d00035000000700035000031e00035000000700035000000400037000031700035000031e00035000000700035000031d00035000000700035000000b00035000000700035000000d00035000000700035000000
;; 033:600014900014d00014900014d00014600016d00014600016900016600016900016d00016600018d00016600018900018d00018900018600018900018600018d00016600018d00016900016600016900016600016d000149000146000149000147aa124b00024e00024b00024e00024700026e00024700026b00026700026b00026e00026700028e00026700028b00028d00028b00028700028b00028700028e00026700028e00026b00026700026b00026700026e00024700026e00024b00024
;; 034:dff117000011000011100011d66117100011dff117000000100011000000100011100011dff117100011d44117000000dff117000000133111000000d33117100011dff117000000d33117100011dff117000011d33117000000d66117000000eff117000011e66117100011e66117100011eff117000000e44117000000122111100011e00017000011e44117000000eff117000000e331170000004331191000114ff119000000433119100011eff117000011133111000000166111000000
;; 035:900014d00014400016d00014400016900016400016900016d00016900016d00016400018900018400018900018d0001840001ad00018900018d00018900018400018900018400018d00016400018d00016900016d00016900016400016900016eaa124700026b00026700026b00026e00026b00026e00026700028e00026700028b00028700028b00028700028e00026700028b00028e00028b00028700028b00028700028e00026700028e00026b00026e00026b00026700026b00026e00024
;; 036:6ff1150000110000111000116661151000116ff1150000001000110000001000111000116ff1151000119441150000006ff1150000001331110000006331151000116ff1150000006331151000116ff1150000116331130000006661150000004ff1150000114661151000114661151000114ff1150000004441150000001221111000114000150000114441150000004ff1150000004331150000004331151000114ff1150000004331151000114ff115000011433113100011466115100011
;; 037:eff117000011000011100011e66117100011eff117000000100011000000100011100011eff117100011e44117000000eff117000000133111000000e33117100011eff117000000e33117100011eff117000011e33117000000e66117000000bff117000011b66117100011b66117100011bff117000000b44117000000122111100011b00017000011b44117000000bff117000000b33117000000b33117100011bff119000000b33117100011bff117000011133111000000166111000000
;; 038:b00037000031600037000031e00037000031600037000000b00037000000600037000031e00037000000b00037000000600037000000b00037000000e00037000000600037000000b00037000000600037000000e00037000000600037000000b00037000000400037000000800037000000400037000000b00037000000400037000000800037000000400037000000b00037000031400037000031900037000000400037000000e00037000000400037000000800037000000400037000000
;; 039:600046b00046e00046b00046e00046600048e00046600048b00048600048b00048e00048b00048e0004860004ab0004a60004ae0004860004ae00048b00048e00048b00048600048b00048600048e00046600048e00046b00046e00046b00046700026400026800026b00026800026b00026400028b00026400028800028400028800028b00028800028b0002840002ab00028800028b00028800028400028800028400028b00026800028b00026800026400026800026400026b00024800026
;; 040:600037b00037e00037b00037e00037600039e00037600039b00039600039b00039e00039b00039e0003960003bb0003b60003be0003960003be00039b00039e00039b00039600039b00039600039e00037600039e00037b00037e00037b00037000031000000800039000000000031000031400039000000000031000000800039000000000031000000400039000000000031000000800039000000000000000000400039000000000000000000800039000000000000000000400039000000
;; 041:b00037000031600037000031e00037000031600037000000b00037000000600037000031e00037000000b00037000000600037000000b00037000000e00037000000600037000000b00037000000600037000000e0003700000060003700000040003b000000000000000000b0003900000000000000000040003b000000000000000000b0003900000000000000000040003b000000000000000000b0003900000000000000000040003b000000000000000000b00039000000000000000000
;; 042:8ff1158000138661151000118661151000118ff1150000008441150000008221151000118000150000008441150000008ff1150000008331150000008331151000118ff1150000008331151000118ff1150000118331150000008661150000008ff1151000118661151000118661150000111ff1110000008ff1150000001221111000111000110000000441110000008ff1150000001331110000001331111000118ff1150000008331151000111ff111000011833115000000166131000000
;; 043:80003b00000080003b000000f00039000000faa13900000080003b000000a0003b000000b0003b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 044:fff115000011f66115100011f66115100011fff115000000f44115000000f22115100011f00015000000f44115000000fff115000000f33115000000f33115100011fff115000000f33115100011fff115000011f33115000000f66115000000fff115000011f66115100011f661150000111ff111000000fff115000000122111100011f00015000000044111000000fff115000000133131000000133111100011fff115000000f331151000110ff111000011f33115000000166111000000
;; </PATTERNS>
;; <TRACKS>
;; 000:4416c1180842000000000000000000000000000000000000000000000000000000000000000000000000000000000000f10000
;; 001:ac2010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; 002:f83c43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000
;; 003:0442100442d40442150456560c58960456560c5817047ed7467ed71283a81283a876962aa6966a1dada40000000000005e00ef
;; </TRACKS>
;; <FLAGS>
;; 000:00401080202000000000000000000000005090a06030c00000000000000000000070d0b0e0700000000000000000000000f00000000000000000000000000000010000000000000000000000000000000101000000000000000000000000000001010000000001010000000000000000010000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; </FLAGS>
;; <SCREEN>
;; 000:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0100001000000000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 001:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000080000008dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 002:ddfffffddfffdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0001100080088808dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 003:ddffddddffdffddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000088800dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 004:ddffffddfffdfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000111111088000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 005:dddddffdffddfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8081666666100000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 006:ddffffdddfffdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0916666666610000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 007:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd89166cccc6610100dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000ccc000ccc0000000000
;; 008:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd011cc1111cc11000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd000000000000c000c0c000c000000000
;; 009:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd1411133331114100dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c02220c02220c00000000
;; 010:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd1414444444414100dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000c022222122c220c0000000
;; 011:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd1444414414444100dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000c0222222222c20c0000000
;; 012:ddddddddddddddddcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc9114414414411000ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdddddddddddddddd0000000000c0222222222220c0000000
;; 013:ddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8011443344118080eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddddddddddd00000000000c01122222220c00000000
;; 014:ddddddddddddddddeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaae0176511115671908eaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaeeaaedddddddddddddddd000000000000c011212220c000000000
;; 015:ddddddddddddddddddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaae1667555555766180ddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaeddaeeaaedddddddddddddddd0000000000000c0111220c0000000000
;; 016:ddddddddccccccccccccccccccccccccccccccccccccccccddeedddeddeedddeddeedddeddeedddeddeedddeddeeddde1657665566756108ddeedddeddeedddeddeedddeddeedddeddeedddeddeedddeddeedddeddeedddeddeedddeddeedddedddddddddddddddd00000000000000c01110c00000000000
;; 017:ddddddddc888888cc888888cc888888cc888888cc888888ceeefdddeeeefdddeeeefdddeeeefdddeeeefdddeeeefddde8111771177111080eeefdddeeeefdddeeeefdddeeeefdddeeeefdddeeeefdddeeeefdddeeeefdddeeeefdddeeeefdddedddddddddddddddd000000000000000c010c000000000000
;; 018:ddddddddc8888888888888888888888cc888888cc888888cefeadddfefeadddfefeadddfefeadddfefeadddfefeadddf0812211112219808efeadddfefeadddfefeadddfefeadddfefeadddfefeadddfefeadddfefeadddfefeadddfefeadddfdddddddddddddddd0000000000000000c0c0000000000000
;; 019:ddddddddc8888888888888888888888cc888888cc888888cfffaaffffffaaffffffaaffffffaaffffffaaffffffaafff9081118911199089fffaaffffffaaffffffaaffffffaaffffffaaffffffaaffffffaaffffffaaffffffaaffffffaafffdddddddddddddddd0000000000000ccc0c0ccc0000000000
;; 020:ddddddddc8888888888888888888888cc888888cc888888c080800880808008808080088080800880808008808080088980808099808080908080088080800880808008808080088080800880808008808080088080800880808008808080088dddddddddddddddd000000000000c000c0c000c000000000
;; 021:ddddddddc8888888888888888888888cc888888cc888888c8800000888000008808080800000000080808080808080808080808080808080808080808080808080808080808080808800000888000008dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c02220c02220c00000000
;; 022:ddddddddc888888cc888888cc888888cc888888cc888888c8808800088088000090899080001100009089908090899080908990809089908090899080908990809089908090899088808800088088000dddddddddddddddddddddddddddddddddddddddddddddddd0000000000c022222122c220c0000000
;; 023:ddddddddcccccccccc8888cccc8888cccc8888cccc8888cc0008800000088000898099800000000089809980898099808980998089809980898099808980998089809980898099800008800000088000dddddddddddddddddddddddddddddddddddddddddddddddd0000000000c0222222222c20c0000000
;; 024:ddddddddddddddddcc8888cccc8888cccc8888cccc8888cc0000000000000000080808080000000008080808080808080808080808080808080808080808080808080808080808080000000000000000dddddddddddddddddddddddddddddddddddddddddddddddd0000000000c0222222222220c0000000
;; 025:ddddddddddddddddc888888cc888888cc888888cc888888c8000000880000008808080800001001080808080808080808080808080808080808080808080808080808080808080808000000880000008dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c01122222220c00000000
;; 026:ddddddddddddddddc888888888888888888888888888888c8008880880088808089998080011000008999808089998080899980808999808089998080899980808999808089998088008880880088808dddddddddddddddddddddddddddddddddddddddddddddddd000000000000c011212220c000000000
;; 027:ddddddddddddddddc888888888888888888888888888888c0008880000088800908990890000000090899089908990899089908990899089908990899089908990899089908990890008880000088800dddddddddddddddddddddddddddddddddddddddddddddddd0000000000000c0111220c0000000000
;; 028:ddddddddddddddddc888888888888888888888888888888c0008800000088000980808090000000098080809980808099808080998080809980808099808080998080809980808090008800000088000ccccccccccccccccdddddddddddddddddddddddddddddddd00000000000000c01110c00000000000
;; 029:ddddddddddddddddc888888888888888888888888888888c8800000880808080808080808080808080808080808080808080808080808080808080808080808080808080000000008080808088000008eeeeeeeeeeeeeeeedddddddddddddddddddddddddddddddd000000000000000c010c000000000000
;; 030:ddddddddddddddddc888888cc888888cc888888cc888888c8808800009089908090899080908990809089908090899080908990809089908090899080908990809089908011011100908990888088000eaaeeaaeeaaeeaaedddddddddddddddddddddddddddddddd0000000000000000c0c0000000000000
;; 031:ddddddddddddddddcccccccccc8888cccccccccccccccccc0008800089809980898099808980998089809980898099808980998089809980898099808980998089809980000000108980998000088000ddaeeaaeddaeeaaedddddddddddddddddddddddddddddddd0000000000000ccc0c0ccc0000000000
;; 032:ddddddddcccccccccccccccccc8888ccddeedddeddeeddde0000000008080808080808080808080808080808080808080808080808080808080808080808080808080808010000000808080800000000ddeedddeddeedddedddddddddddddddddddddddddddddddd000000000000c000c0c000c000000000
;; 033:ddddddddc888888cc888888cc888888ceeefdddeeeefddde8000000880808080808080808080808080808080808080808080808080808080808080808080808080808080000000008080808080000008eeefdddeeeefdddedddddddddddddddddddddddddddddddd00000000000c02220c02220c00000000
;; 034:ddddddddc8888888888888888822228cefeadddfefeadddf8008880808999808089998080899980808999808089998080899980808999808089998080899980808999808010000100899980880088808efeadddfefeadddfdddddddddddddddddddddddddddddddd0000000000c022222122c220c0000000
;; 035:ddddddddc8888888888888888822228cfffaaffffffaafff0008880090899089908990899089908990899089908990899089908990899089908990899089908990899089011001109089908900088800fffaaffffffaafffdddddddddddddddddddddddddddddddd0000000000c0222222222c20c0000000
;; 036:ddddddddc8888888888888888822228c080800880808008800088000980808099808080998080809980808099808080998080809980808099808080998080809980808090000000098080809000880000808008808080088dddddddddddddddddddddddddddddddd0000000000c0222222222220c0000000
;; 037:ddddddddc8888888888888888822228c8800000888000008880000088080808080808080808080808080cccccc80808080808080808080808080808080808080808080800000000000000000880000088800000888000008dddddddddddddddddddddddddddddddd00000000000c01122222220c00000000
;; 038:ddddddddc888888cc888888cc888888c880880008808800088088000090899080908990809089908090c990809c8990809089908090899080908990809089908090899080110111000000000880880008808800088088000dddddddddddddddddddddddddddddddd000000000000c011212220c000000000
;; 039:ddddddddcccccccccccccccccc8888cc00088000000880000008800089809980898099808980998089c09aaaa98c998089809980898099808980998089809980898099800000001000000000000880000008800000088000dddddddddddddddddddddddddddddddd0000000000000c0111220c0000000000
;; 040:ddddddddddddddddddddddddcc8888cc0000000000000000000000000808080808080808080808080c09acccca98c80808080808080808080808080808080808080808080100000000000000000000000000000000000000dddddddddddddddddddddddddddddddd00000000000000c01110c00000000000
;; 041:ddddddddddddddddddddddddc888888c800000088000000880000008808080808080808080808080c09acccccca98c8080808080808080808080808080808080808080800000000000000000800000088000000880000008dddddddddddddddddddddddddddddddd000000000000000c010c000000000000
;; 042:ddddddddddddddddddddddddc888888c800888088008880880088808089998080899980808999808c8aaccccccca9c0808999808089998080899980808999808089998080100001000000000800888088008880880088808dddddddddddddddddddddddddddddddd0000000000000000c0c0000000000000
;; 043:ddddddddddddddddddddddddc888888c000888000008880000088800908990899089908990899089c0acacccccca9c8990899089908990899089908990899089908990890110011000000000000888000008880000088800dddddddddddddddddddddddddddddddd00000000000000000c00000000000000
;; 044:ddddddddddddddddddddddddc888888c000880000008800000088000980808099808080998080809c8aaacccccca0c0998080809980808099808080998080809980808090000000000000000000880000008800000088000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 045:ddddddddddddddddddddddddc888888c880000088800000880808080808080808080808080808080c0aacaccccca0c0080808080000000008080808080808080808080808080808080808080808080808800000800000000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 046:ddddddddddddddddddddddddc888888c880880008808800009089908090899080908990809089908c99aaaaccca91c0009089908000000000908990809089908090899080908990809089908090899088808800000010000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 047:ddddddddddddddddddddddddcc8888cc0008800000088000898099808980998089809980898099808c89aacaca90c00089809980000001008980998089809980898099808980998089809980898099800008800000000010dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 048:ddddddddddddddddddddddddcc8888cc00000000000000000808080808080808080808080808080808c89aaaa90c000008080808000000000808080808080808080808080808080808080808080808080000000001000010dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 049:ddddddddddddddddddddddddc888888c800000088000000880808080808080808080808080808080808c808000c1001080808080000000008080808080808080808080808080808080808080808080808000000800000000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 050:ddddddddddddddddddddddddc888888c8008880880088808089998080899980808999808089998080899cccccc11000008999808010000000899980808999808089998080899980808999808089998088008880800011000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 051:ddddddddddddddddddddddddc888888c000888000008880090899089908990899089908990899089908990890000000090899089011000009089908990899089908990899089908990899089908990890008880000000000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 052:ddddddddddddddddddddddddc888888c000880000008800098080809980808099808080998080809981111111111000098080809000000009808111111180809980808099808080998080809980808090008800000000000dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 053:ddddddddddddddddddddddddc888888c88000008808080808080808080808080808080808080808081aaaabbaaaa188889988888899888880001aaaaaaa188888080cccccc80808080808080808080808080808088000008dddddddddddddddddddddddddddddddd00000000000000000000ff0000000000
;; 054:ddddddddddddddddddddddddc888888c8808800009089908090899080908990809089908090899081aaaaaaaaaaaa1988998899889988998001aaaaaaaa18998090c990809c8990809089908090899080908990888088000dddddddddddddddddddddddddddddddd0000000000000ff00000ff0000000000
;; 055:ddddddddddddddddddddddddcccccccc0008800089809980898099808980998089809980898099801aaaaaaaaaaaa198888889988888899801aaaaaaaaaa199889c09aaaa98c998089809980898099808980998000088000dddddddddddddddddddddddddddddddd0000000000000ddf000ddf0000000000
;; 056:dddddddddddddddddddddddddddddddd0000000008080808080808080808080808080808080808081999aaaaaa999188888888888888888801aaaa99999918880c09acccca98c80808080808080808080808080800000000dddddddddddddddddddddddddddddddd0000000000000edddccded0000000000
;; 057:dddddddddddddddddddddddddddddddd800000088080808080808080808080808080808080808080111199999911118888998888889988880199911112111888c09acccccca98c8080808080808080808080808080000008dddddddddddddddddddddddddddddddd0000000000000feddddedd0000000000
;; 058:dddddddddddddddddddddddddddddddd800888080899980808999808089998080899980808999808141311111131418888998888889988880111111441218888c8aaccccccca9c0808999808089998080899980880088808dddddddddddddddddddddddddddddddd00000000000000feeeecde0000000000
;; 059:dddddddddddddddddddddddddddddddd000888009089908990899089908990899089908990899089144433333344418998998889989988890011331441418889c0acacccccca9c8990899089908990899089908900088800dddddddddddddddddddddddddddddddd0000000000000eddddcdde0000000000
;; 060:cccccccccccccccccccccccccccccccc000880009808080998080809980808099808080998080809911444444441188998888889988888890001333444418889c8aaacccccca0c0998080809980808099808080900088000ccccccccccccccccdddddddddddddddd0000000000000feddddde00000000000
;; 061:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000008080808080808080808080808080808080808080891133333311888889988888899888888991133333188888c9aacaccccca8c8080808080808080808080808080808080eeeeeeeeeeeeeeeedddddddddddddddd00000000000000feeeee000000000000
;; 062:eaaeeaaeeaaeeaaeeaaeeaaeeaaeeaae000100000908990809089908090899080908990809089908819ab1111ba9199889988998899889988998111111988998c99aaaaccca99c0809089908090899080908990809089908eaaeeaaeeaaeeaaedddddddddddddddd00000000000000000000000000000000
;; 063:ddaeeaaeddaeeaaeddaeeaaeddaeeaae00000010898099808980998089809980898099808980998019aabbbbbbaa9198888889988888899888881a99b18889988c89aacaca90c98089809980898099808980998089809980ddaeeaaeddaeeaaedddddddddddddddd00000000000000000000000000000000
;; 064:ddeedddeddeedddeddeedddeddeeddde01000010080808080808080808080808080808080808080819a9aabbaa9a91888888888888888888888819aa9888888888c89aaaa90c080808080808080808080808080808080808ddeedddeddeedddedddddddddddddddd00000000000000000000000000000000
;; 065:eeefdddeeeefdddeeeefdddeeeefddde00000000808080808080808080808080808080808080808081119911991118888899888888998888889919ab91998888889c888880c0808080808080808080808080808080808080eeefdddeeeefdddedddddddddddddddd00000000000000000000ff0000000000
;; 066:efeadddfefeadddfefeadddfefeadddf0001100008999808089998080899980808999808089998088812211112218888889988888899888888991299221988888899cccccc99980808999808089998080899980808999808efeadddfefeadddfdddddddddddddddd0000000000000ff00000ff0000000000
;; 067:fffaaffffffaaffffffaaffffffaafff000000009089908990899089908990899089908990899089989111891119888998998889989988899899811111998889989988899089908990899089908990899089908990899089fffaaffffffaafffdddddddddddddddd0000000000000ddf000ddf0000000000
;; 068:080800880808008808080088080800880000000098080809980808099808080998080809980808099888888998888889988888899888888998888889988888899888888998080809980808099808080998080809980808090808008808080088dddddddddddddddd0000000000000edddccded0000000000
;; 069:880000088800000800000000880000088080808080808080000000008080808080808080000000008998888889988888899888888998888889988888899888888998888880808080808080808080808080808080000000008800000800000000dddddddddddddddd0000000000000feddddedd0000000000
;; 070:880880008808800001100110880880000908990809089908000110000908990809089908000000008998899889988998899889988998899889988998899889988998899809089908090899080908990809089908000100008808800000000000dddddddddddddddd00000000000000feeeecde0000000000
;; 071:000880000008800001000100000880008980998089809980000000008980998089809980000001008888899888888998888889988888899888888998888889988888899889809980898099808980998089809980000000100008800000000000dddddddddddddddd0000000000000eddddcdde0000000000
;; 072:000000000000000000001000000000000808080808080808000000000808080808080808000000008888888888888888888888888888888888888888888888888888888808080808080808080808080808080808010000100000000000101000dddddddddddddddd0000000000000feddddde00000000000
;; 073:800000088000000800000000800000088080808080808080000100108080808080808080000000008899888888998888889988888899888888998888889988888899888880808080808080808080808080808080000000008000000800001100dddddddddddddddd00000000000000feeeee000000000000
;; 074:800888088008880800000000800888080899980808999808001100000899980808999808010000008899888888998888889988888899888888998888889988888899888808999808089998080899980808999808000110008008880800000000dddddddddddddddd00000000000000000000000000000000
;; 075:000888000008880001000000000888009089908990899089000000009089908990899089011000009899888998998889989988899899888998998889989988899899888990899089908990899089908990899089000000000008880000000000dddddddddddddddd00000000000000000000000000000000
;; 076:000880000008800000000000000880009808080998080809000000009808080998080809000000009888888998888889988888899888888998888889988888899888888998080809980808099808080998080809000000000008800000000000dddddddddddddddd00000000000000000000000000000000
;; 077:880000088800000888000008808080808080808080808080808080808080808080808080899888888998888889988888899888888998888889988888000000008998888800000000000000008080808080808080808080808080808088000008dddddddddddddddd00000000000000000000ff0000000000
;; 078:880880008808800088088000090899080908990809089908090899080908990809089908899889988998899889988998899889988998899889988998000110008998899800010000000100000908990809089908090899080908990888088000dddddddddddddddd0000000000000ff00000ff0000000000
;; 079:000880000008800000088000898099808980998089809980898099808980998089809980888889988888899888888998888889988888899888888998000000008888899800000010000000108980998089809980898099808980998000088000dddddddddddddddd0000000000000ddf000ddf0000000000
;; 080:000000000000000000000000080808080808080808080808080808080808080808080808888888888888888888888888888888888888888888888888000000008888888801000010010000100808080808080808080808080808080800000000dddddddddddddddd0000000000000edddccded0000000000
;; 081:800000088000000880000008808080808080808080808080808080808080808080808080889988888899888888998888889988888899888888998888000100108899888800000000000000008080808080808080808080808080808080000008dddddddddddddddd0000000000000feddddedd0000000000
;; 082:800888088008880880088808089998080899980808999808089998080899980808999808889988888899888888998888889988888899888888998888001100008899888800011000000110000899980808999808089998080899980880088808dddddddddddddddd00000000000000feeeecde0000000000
;; 083:000888000008880000088800908990899089908990899089908990899089908990899089989988899899888998998889989988899899888998998889000000009899888900000000000000009089908990899089908990899089908900088800dddddddddddddddd0000000000000eddddcdde0000000000
;; 084:000880000008800000088000980808099808080998080809980808099808080998080809988888899881111111888889988888899888888998811111111000009888888900000000000000009808080998080809980808099808080900088000dddddddddddddddd0000000000000feddddde00000000000
;; 085:dddddddddddddddddddddddddddddddd808080808080808000000000808080808080cccccc988888891aaaaaaa1888888998888889988888001aaabbaaa18888899888888080808080808080808080808080808080808080dddddddddddddddddddddddddddddddd00000000000000feeeee000000000000
;; 086:dddddddddddddddddddddddddddddddd09089908090899080000000009089908090c990889c88998891aaaaaaaa18998899889988998899801aaaaaaaaaa1998899889980908990809089908090899080908990809089908dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 087:dddddddddddddddddddddddddddddddd8980998089809980000001008980998089c09aaaa98c899881aaaaaaaaaa1998888889988888899819aaa9999aaa9198888889988980998089809980898099808980998089809980dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 088:dddddddddddddddddddddddddddddddd080808080808080800000000080808080c09acccca98c88881999999aaaa188888888888888888881999933339999188888888880808080808080808080808080808080808080808dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 089:dddddddddddddddddddddddddddddddd80808080808080800000000080808080c09acccccca98c88811121111999188888998888889988881114244442411188889988888080808080808080808080808080808080808080dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 090:dddddddddddddddddddddddddddddddd08999808089998080100000008999808c8aaccccccca8c88881214411111188888998888889988881414224422414188889988880899980808999808089998080899980808999808dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 091:dddddddddddddddddddddddddddddddd90899089908990890110000090899089c0acacccccca8c89981414413311888998998889989988891344312213443189989988899089908990899089908990899089908990899089dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 092:dddddddddddddddddddddddddddddddd98080809980808090000000098080809c8aaacccccca8c89981444433318888998888889988888890114414414411889988888899808080998080809980808099808080998080809dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 093:dddddddddddddddddddddddddddddddd80808080808080808080808080808080c0aacaccccca8c88000133333110000089988888899888888911442244118888899888888080808080808080808080808080808080808080dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 094:dddddddddddddddddddddddddddddddd09089908090899080908990809089908c99aaaaccca98c9800001111110000008998899889988998819ab1111ba91998899889980908990809089908090899080908990809089908dddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 095:dddddddddddddddddddddddddddddddd898099808980998089809980898099808c89aacaca98c99800001b99a100000088888998888889981aa9bbbbbb9aa198888889988980998089809980898099808980998089809980dddddddddddddddddddddddddddddddd000000000000000cccccc00000000000
;; 096:dddddddddddddddddddddddddddddddd0808080808080808080808080808080808c89aaaa98c8888000009aa9100000088888888888888881ab9aabbaa9ba188888888880808080808080808080808080808080808080808dddddddddddddddddddddddddddddddd00000000000000c000000c0000000000
;; 097:dddddddddddddddddddddddddddddddd80808080808080808080808080808080808c808088c98888000019ba9100000088998888889988888111991199111888889988888080808080808080808080808080808080808080dddddddddddddddddddddddddddddddd0000000000000c09aaaa90c000000000
;; 098:dddddddddddddddddddddddddddddddd089998080899980808999808089998080899cccccc998888010122992100000088998888889988888812211112218888889988880899980808999808089998080899980808999808dddddddddddddddddddddddddddddddd000000000000c09acccca90c00000000
;; 099:dddddddddddddddddddddddddddddddd908990899089908990899089908990899089908998998889011011111000000098998889989988899891118911198889989988899089908990899089908990899089908990899089dddddddddddddddddddddddddddddddd00000000000c09acccccca90c0000000
;; 100:dddddddddddddddddddddddddddddddd980808099808080998080809980808099808080998888889000000000000000098888889988888899888888998888889988888899808080998080809980808099808080998080809dddddddddddddddddddddddddddddddd00000000000c0aaccccccca0c0000000
;; 101:dddddddddddddddddddddddddddddddddddddddddddddddd80808080808080808080808089988888899888888998888800000000899888880000cccccc98888889988888808080808080808080808080dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0acacccccca0c0000000
;; 102:dddddddddddddddddddddddddddddddddddddddddddddddd0908990809089908090899088998899889988998899889980000000089988998000c000089c8899889988998090899080908990809089908dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aaacccccca0c0000000
;; 103:dddddddddddddddddddddddddddddddddddddddddddddddd898099808980998089809980888889988888899888888998000000008888899800c09aaaa98c899888888998898099808980998089809980dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aacaccccca0c0000000
;; 104:dddddddddddddddddddddddddddddddddddddddddddddddd08080808080808080808080888888888888888888888888800000000888888880c09acccca98c88888888888080808080808080808080808dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c09aaaaccca90c0000000
;; 105:dddddddddddddddddddddddddddddddddddddddddddddddd8080808080808080808080808899888888998888889988880000000088998888c09acccccca98c8888998888808080808080808080808080dddddddddddddddddddddddddddddddddddddddddddddddd000000000000c09aacaca90c00000000
;; 106:dddddddddddddddddddddddddddddddddddddddddddddddd0899980808999808089998088899888888998888889988880000000088998888c0aaccccccca8c8888998888089998080899980808999808dddddddddddddddddddddddddddddddddddddddddddddddd0000000000000c09aaaa90c000000000
;; 107:dddddddddddddddddddddddddddddddddddddddddddddddd9089908990899089908990899899888998998889989988890000000098998889c0acacccccca8c8998998889908990899089908990899089dddddddddddddddddddddddddddddddddddddddddddddddd00000000000000cccccccc0000000000
;; 108:dddddddddddddddddddddddddddddddddddddddddddddddd9808080998080809980808099888888998888889988888890000000098888889c0aaacccccca8c8998888889980808099808080998080809dddddddddddddddddddddddddddddddddddddddddddddddd00000000000000cccccccc0000000000
;; 109:dddddddddddddddddddddddddddddddddddddddddddddddd8080808080808080808080808080808089988888899888888998888889988888c9aacaccccca8c8880808080808080808080808000000000dddddddddddddddddddddddddddddddddddddddddddddddd0000000000000c09aaaa90c000000000
;; 110:dddddddddddddddddddddddddddddddddddddddddddddddd0908990809089908090899080908990889988998899889988998899889988998c99aaaaccca98c9809089908090899080908990800000000dddddddddddddddddddddddddddddddddddddddddddddddd000000000000c09acccca90c00000000
;; 111:dddddddddddddddddddddddddddddddddddddddddddddddd89809980898099808980998089809980888889988888899888888998888889988c89aacaca98c99889809980898099808980998000000000dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c09acccccca90c0000000
;; 112:dddddddddddddddddddddddddddddddddddddddddddddddd080808080808080808080808080808088888888888888888888888888888888888c89aaaa98c888808080808080808080808080800000000dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aaccccccca0c0000000
;; 113:dddddddddddddddddddddddddddddddddddddddddddddddd8080808080808080808080808080808088998888889988888899888888998888889c888888c9888880808080808080808080808000000000dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0acacccccca0c0000000
;; 114:dddddddddddddddddddddddddddddddddddddddddddddddd08999808089998080899980808999808889988888899888888998888889988888899cccccc99888808999808089998080899980800000000dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aaacccccca0c0000000
;; 115:dddddddddddddddddddddddddddddddddddddddddddddddd9089908990899089908990899089908998998889989988899899888998998889989988899899888990899089908990899089908900000000dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aacaccccca0c0000000
;; 116:dddddddddddddddddddddddddddddddddddddddddddddddd9808080998080809980808099808080998888889988888899888888998888889988888899888888998080809980808099808080900000000dddddddddddddddddddddddddddddddddddddddddddddddd00000000000c09aaaaccca90c0000000
;; 117:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8998888889988888dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd000000000000c09aacaca90c00000000
;; 118:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8998899889988998dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000c09aaaa90c000000000
;; 119:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8888899888888998dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000cccccccc0000000000
;; 120:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8888888888888888dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000cccccccc0000000000
;; 121:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8899888888998888dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000c09aaaa90c000000000
;; 122:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8899888888998888dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd000000000000c09acccca90c00000000
;; 123:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd9899888998998889dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c09acccccca90c0000000
;; 124:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd9888888998888889dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aaccccccca0c0000000
;; 125:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8080808080808080dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0acacccccca0c0000000
;; 126:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0908990809089908dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aaacccccca0c0000000
;; 127:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8980998089809980dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c0aacaccccca0c0000000
;; 128:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0808080808080808dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000c09aaaaccca90c0000000
;; 129:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd8080808080808080dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd000000000000c09aacaca90c00000000
;; 130:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0899980808999808dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000c09aaaa90c000000000
;; 131:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd9089908990899089dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000c000000c0000000000
;; 132:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd9808080998080809dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd000000000000000cccccc00000000000
;; 133:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 134:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; 135:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd0000000000000000dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000000000000000000000000000
;; </SCREEN>
;; <PALETTE>
;; 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
;; </PALETTE>