Skip to content

Instantly share code, notes, and snippets.

@variousauthors
Created June 18, 2022 07:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save variousauthors/a063d79e851ab9160dde35e4ce839f70 to your computer and use it in GitHub Desktop.
Save variousauthors/a063d79e851ab9160dde35e4ce839f70 to your computer and use it in GitHub Desktop.
Exercice de Style (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Exercice de Style
author arrogantgamer & edderiofer
homepage www.puzzlescript.net
norepeat_action
run_rules_on_level_start
again_interval 0.1
zoomscreen 24x12
========
OBJECTS
========
Background
black
Grass
LIGHTGREEN
Water
#ADD8E6
PlayerTip
#7B4B2A #493c2b #000000
.....
.....
.....
..0..
.111.
Player
#7B4B2A #493c2b #000000
01110
02220
.2.2.
.....
.....
TreeTip
#44891A brown #54992A #64A93A
.....
.....
.....
.....
..3..
tree
#44891A brown #54992A #64A93A
.232.
02220
00000
.111.
.....
LogUpTip
brown lightbrown
.....
.....
.....
.111.
.111.
stump
brown LIGHTBROWN
.111.
.111.
.111.
.000.
.....
LogUp
brown lightbrown
.111.
.000.
.000.
.000.
.....
LogH
brown blue
....1
00000
00000
00000
.....
LogV
brown LIGHTBROWN blue
.0002
.000.
.000.
.000.
.111.
LogHRolling
brown pink
....1
00000
00000
00000
.....
LogVRolling
brown LIGHTBROWN
.0001
.000.
.000.
.000.
.111.
BridgeH
brown #ADD8E6
.....
00000
00000
00000
.....
BridgeV
brown #ADD8E6 yellow #BDE8F6
.000.
.000.
.000.
.000.
.000.
RaftH
brown darkbrown #ADD8E6 yellow #BDE8F6
00000
00000
11111
00000
00000
RaftV
brown darkbrown #ADD8E6 yellow #BDE8F6
00100
00100
00100
00100
00100
LogOnStumpV
brown LIGHTBROWN
.000.
.000.
.000.
.111.
.....
LogOnStumpVTip
brown LIGHTBROWN
.....
.....
.....
.....
.000.
LogOnStumpH
brown LIGHTBROWN
00000
00000
00000
.000.
.....
Stone
lightgrey grey
..000
00011
00001
01111
1111.
SunkenStone
LIGHTGRAY grey #ADD8E6 #9DC8E6
.....
..000
20011
30001
33333
Momentum
yellow #BDE8F6
.....
.....
..1..
.....
.....
Beach
yellow #BDE8F6
00000
11111
.....
.....
.....
=======
LEGEND
=======
~ = water
. = Background and Grass
I = Background and Grass
P = Player and Grass
T = tree and Grass
o = stone and Grass
Log = LogV or LogH or LogUp or LogHRolling or LogVRolling or LogOnStumpV or LogOnStumpH
Raft = RaftH or RaftV
Bridge = BridgeV or BridgeH or Raft
Obstacle = Log or Tree or Stone or SunkenStone or stump
LogUpBlocker = Log or Tree or Stone
RaftObstacle = Log or Tree or Stone
=======
SOUNDS
=======
================
COLLISIONLAYERS
================
Background
Grass
Water
Beach
SunkenStone
Stump
Bridge
Log
Player, Tree, Stone
TreeTip, LogUpTip, PlayerTip, LogOnStumpVTip
Momentum
======
RULES
======
( need to remove orphaned momentum when log goes into water )
( raft can push off a rock )
( this rule has to be early and not remove the < impulse )
( this is so a player can push off a tree, and still knock over the tree, etc... )
[ raftobstacle | < player raft | water ] -> [ raftobstacle | < player > raft | water ]
( the player can't cross water like, at all )
[ > player | water no bridge ] -> [ player | water ]
( they can't cross against the grain of the log )
vertical [ > player | bridgeH ] -> [ player | bridgeH ]
horizontal [ > player | bridgeV ] -> [ player | bridgeV ]
( they can't step the wrong way off a log )
vertical [ > player bridgeH ] -> [ player bridgeH ]
horizontal [ > player bridgeV ] -> [ player bridgeV ]
( bridges are checkpoints )
late [ player bridge ] -> checkpoint
( the player can knock over trees )
vertical [ > player | tree | no Obstacle ] -> [ player | stump | LogV ]
horizontal [ > player | tree | no Obstacle ] -> [ player | stump | LogH ]
( onto a stump )
vertical [ > player | tree | stump ] -> [ player | stump | stump LogOnStumpV ]
horizontal [ > player | tree | stump ] -> [ player | stump | stump LogOnStumpH ]
( the player can knock over standing logs )
vertical [> player | LogUp | no Obstacle ] -> [ | player | LogV ]
horizontal [ > player | LogUp | no Obstacle ] -> [ | player | LogH ]
( onto stumps )
vertical [> player | LogUp | stump no Log ] -> [ | player | stump LogOnStumpV ]
horizontal [ > player | LogUp | stump no Log ] -> [ | player | stump LogOnStumpH ]
( otherwise the player is blocked by standing logs )
vertical [> player | LogUp ] -> [ player | LogUp ]
horizontal [ > player | LogUp ] -> [ player | LogUp ]
( the player hops onto logs from stumps )
vertical [> player stump | logV ] -> [ stump | player LogV ]
horizontal [ > player stump | LogH ] -> [ stump | player LogH ]
( the player can kind of lift/push logs )
( into the water )
vertical [ > player no log | stationary logV | water ] -> [ > player | > LogV | water ]
horizontal [ > player no log | stationary logH | water ] -> [ > player | > LogH | water ]
( not into the water )
vertical [ > player no log | stationary logV | no logupblocker ] -> [ > player | > LogUp | ]
horizontal [ > player no log | stationary logH | no logupblocker ] -> [ > player | > LogUp | ]
( and log on stump )
vertical [ > player no log | stationary LogOnStumpV | no logupblocker ] -> [ > player | > LogUp | ]
horizontal [ > player no log | stationary LogOnStumpH | no logupblocker ] -> [ > player | > LogUp | ]
( rolling: this could be cleaned up )
vertical [ > player no log | logH ] -> [ > player | > LogHRolling ]
horizontal [ > player no log | logV ] -> [ > player | > LogVRolling ]
( and log on stump )
vertical [ > player no log | LogOnStumpH | no obstacle ] -> [ > player | > LogHRolling | no obstacle ]
horizontal [ > player no log | LogOnStumpV | no obstacle ] -> [ > player | > LogVRolling | no obstacle ]
( standing a log up into a perpendicular log, rolls it)
vertical [ > player no log | logV | logH ] -> [ > player | > logUp | > LogHRolling ]
horizontal [ > player no log | logH | logV ] -> [ > player | > logUp | > LogVRolling ]
( standing on a log, you can roll a log )
vertical [ > player log | logH ] -> [ player log | > LogHRolling ]
horizontal [ > player log | logV ] -> [ player log | > LogVRolling ]
( roll logs horizontally )
late horizontal [ Momentum | LogVRolling water no bridgeH ] -> [ | logV water ]
late horizontal [ LogVRolling water no bridgeH ] -> [ logV water ]
horizontal [ Momentum | LogVRolling ] -> [ | > LogVRolling ]
horizontal [ > LogVRolling | LogV ] -> [ LogV | > LogVRolling ]
horizontal [ > LogVRolling | obstacle ] -> [ logV | obstacle ]
horizontal [ > LogVRolling | no Obstacle ] -> [ > LogVRolling Momentum | ] again
( roll logs vertically )
late vertical [ Momentum | LogHRolling water no BridgeV ] -> [ | logH water ]
late vertical [ LogHRolling water no BridgeV ] -> [ logH water ]
vertical [ Momentum | LogHRolling ] -> [ | > LogHRolling ]
vertical [ > LogHRolling | LogH ] -> [ LogH | > LogHRolling ]
vertical [ > LogHRolling | obstacle ] -> [ logH | obstacle ]
vertical [ > LogHRolling | no Obstacle no water ] -> [ > LogHRolling Momentum | ] again
( raft go )
[ Momentum | raft ] -> [ | > raft ]
[ > raft | obstacle ] -> [ raft | obstacle ]
[ > raft | bridge ] -> [ raft | bridge ]
[ > raft | no water ] -> [ raft | no water ]
[ > raft | water ] -> [ > raft Momentum | ] again
[ player > raft ] -> [ > player > raft ]
( generally though, a player can't walk into a log )
( they are on a lower collision layer though )
( so if no other rules has said yes, then no )
[ > player | stationary log ] -> [ player | log ]
( logs in water become bridges )
late [ BridgeV logV ] -> [ RaftV ]
late [ BridgeH logH ] -> [ RaftH ]
late [ BridgeV logH ] -> [ RaftH ]
late [ BridgeH logV ] -> [ RaftV ]
late [ water logV ] -> [ bridgeV ]
late [ water logH ] -> [ bridgeH ]
( render pretty things )
late down [ LogOnStumpVTip | no LogOnStumpV ] -> [ | ]
late up [ LogOnStumpV | no LogOnStumpVTip ] -> [ LogOnStumpV | LogOnStumpVTip ]
late down [ TreeTip | no tree ] -> [ | ]
late up [ tree | no TreeTip ] -> [ tree | TreeTip ]
late down [ LogUpTip | no LogUp ] -> [ | ]
late up [ LogUp | no LogUpTip ] -> [ LogUp | LogUpTip ]
late down [ PlayerTip | no Player ] -> [ | ]
late up [ Player | no PlayerTip ] -> [ Player | PlayerTip ]
( water gets eliminated at some point so put it back lol )
late [ bridge no water ] -> [ bridge water ]
down [ Grass | water no beach ] -> [ Grass | water beach ]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~T...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..I..~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~..~~..I.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~...o.~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~..I..~~.~.o...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~...~~..~..o.~~~.o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~..~~~~~~~~~~~~~~...~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~..~~~~~~~~~..I...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....I.~~~~.I..~~~~~~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....o.~~.....~~~o.~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~I......~....o~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~...~~~.I....~~oT.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~~~~~I.~~~..I~..~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~..o...~~~~~~~~~~~~~~.~~.~~.......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~.....o~~~~~~~~~~~~~~~~~~~~...I...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~......~....~~~..~~~~~~~~~~~..~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~.I..~~~.o...~....~~~o...~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~...~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~....~......T~.T..~~.......~..~~..~~~~.....~~~..~~~~~~~~.o.~..T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~..~~.I.....~~..o~~.......~....o...~~.I...~~I...~~~~~~~...o....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~..~~~....~~~..I..~~.oI.....~..o.~~~..o.~~..~~~~T..~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~..o~~~~~~~..~~~~~~.I..~~.....o~~..~~.I..~~..~~~~...~~...~~....o~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~..~~~.o...~~~~~~~~..~~~~~~~~~~...~T...~.T.o.T~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~......~~~~~~~...~~~~~~~~~~...~~~~~...~~~~~~~~~~~..~~..~....~......~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~.....~~~~~~~.....~~~~~~~~~~~~~~~~.....~~~~~~~~~...o~.~~~I.~~~.o.~~~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~..~~~~~~~~......~~~~~~~~~~~~~~~...o..~~~~~~~~~~T.T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~....~~~~~~~~~~~~.....~~~~~~~~~~...~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~..~~~~~~~~~~~~~~~~~I.~~~~~~~~~~~~~~.o.~~~...~~~~.T....~.T..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o.T.o~...oT.~T....~~..~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~..~~~~~~~~~~~~~.T.~~......o.~T.o..~~.o..~...o.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....oI~~~~~~~~~~~~......~o.T....~~~..~~~..o.~.T...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T....~~~~~~~~~~~....T.~~~~..~~~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~..~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T....~~T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~.T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...o..~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~~..~.o~~~~~~~~~~o....~~...o.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..o~~~~~~~~.T.~~~~~~~~~~~~~~~~~~......~~~~~~~~~~...~~~.T...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~.I..o.~~~~~~~..~...~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~.......~~~~~~~~...I.~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~...T.~~~~~~~~.....~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~~~~~~~..o~~~~~~~~o.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o~~~~~~~~~o..~~I.~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~..~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T..~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~..~~~...~.T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....T..~~~.T....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T...o.~~~..~~~~~~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...o..~~~~~~..~~~~~o..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...o.~~~...~.T~~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..o..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~.I.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~..~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~..~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~.T....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o.~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~.T~~.....o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....I.~~~~~~..~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..TT...o~......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T..o..~~~~~.....T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~...~..~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~~~~~.T....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~..~~~~~~~~~~~~..o.o..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~..~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~........~~...~~~~~~I..~..o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.I.....o.~.T..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~..~....~~~~o......~~~~~~~~~~....~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~..I..~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T....~....~~~~.....T.~~~~~~~~~..o.o..~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~...~~~......~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......~~..~~~~~......~~~~~~~~~~.......~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T....~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~~~~~~~~~..~~~~~~~~..~~..o....o~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~~..~~I....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~....~~~~~~~~~~~~~~~~~...~...~....o.T.~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o.~~~~~~~~..~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~o..~~~~~~~~~~..~..o~....T..~~.......~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~..T..~~~~~~~~T..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~..T.~~~~~~~~~~~~~...~T...~.o....~~~~~.o.~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~...~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~..T...~~~~~~~~~~~.o......~~...~~~~~~~~~~~~~~~~..~.~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~..o.~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~.....~~~~~~~~~~~~..~~...~~~~~~~~~~~~~...~~~~.....~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~.I...~~...~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~.......~~...~~..~~~~~~~T~~~~~...~~~~~.o...~~~.....~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~....~~o....~.T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~......~.........~~T.~~~~~~~.....~~~~...T~~~~~o..~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o..~~......T..~......~~~~.o...~~~~~~o..~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...o....~~......~~~~~~..~~~~~~~...~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.o.....~~~.....T~....~~~~~..~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~~.T~..~...o.~~.....~~~.....~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...T.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~.T...~......~~...o..~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~..oo....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~.o.....~......~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~~~~~~~~...T.~~.o...~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~..~~~~.....o.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....o~~~~~~.o..~~...~~~...T.~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~......~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~.o....~~~~~~~~~..~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~...~~....T~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~......~~o.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T.~~~.o..~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~....~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~..~~..o..~~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......T~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~..o....~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~........~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....T~....T..~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T..T~..~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T...~...~..~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..o..~~~~~~~~..~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~..T.~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~..P..~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~~~T~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......~~~~..~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...o...~~~~..o~~..~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.T..~..~~~~....~...~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~~~~~~~~...~~.o~..~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~..~~.T....~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~.....~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..o...~~~~~~~..~..~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...T..~~~~~~~~~..T.~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~...~~~~....~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~.o...~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~..T..~.....~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..........~...o.~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..........~~...~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~.....o..~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~o....~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment