diff --git a/docs/static/skillmap/sparks/bg.gif b/docs/static/skillmap/sparks/bg.gif
new file mode 100644
index 0000000000..56d55676ef
Binary files /dev/null and b/docs/static/skillmap/sparks/bg.gif differ
diff --git a/docs/static/skillmap/sparks/cave.gif b/docs/static/skillmap/sparks/cave.gif
new file mode 100644
index 0000000000..bdff7bf555
Binary files /dev/null and b/docs/static/skillmap/sparks/cave.gif differ
diff --git a/docs/static/skillmap/sparks/kindling.gif b/docs/static/skillmap/sparks/kindling.gif
new file mode 100644
index 0000000000..3667c0821f
Binary files /dev/null and b/docs/static/skillmap/sparks/kindling.gif differ
diff --git a/docs/static/skillmap/sparks/kindling1.gif b/docs/static/skillmap/sparks/kindling1.gif
new file mode 100644
index 0000000000..9ddade9220
Binary files /dev/null and b/docs/static/skillmap/sparks/kindling1.gif differ
diff --git a/docs/static/tutorials/lyla/arrows.gif b/docs/static/tutorials/lyla/arrows.gif
new file mode 100644
index 0000000000..38e8900b32
Binary files /dev/null and b/docs/static/tutorials/lyla/arrows.gif differ
diff --git a/docs/static/tutorials/lyla/circles.gif b/docs/static/tutorials/lyla/circles.gif
new file mode 100644
index 0000000000..63b5792c89
Binary files /dev/null and b/docs/static/tutorials/lyla/circles.gif differ
diff --git a/docs/static/tutorials/lyla/lyla.png b/docs/static/tutorials/lyla/lyla.png
new file mode 100644
index 0000000000..c3619cee9e
Binary files /dev/null and b/docs/static/tutorials/lyla/lyla.png differ
diff --git a/docs/static/tutorials/lyla/pickle.gif b/docs/static/tutorials/lyla/pickle.gif
new file mode 100644
index 0000000000..2a1a2decff
Binary files /dev/null and b/docs/static/tutorials/lyla/pickle.gif differ
diff --git a/docs/static/tutorials/lyla/play.gif b/docs/static/tutorials/lyla/play.gif
new file mode 100644
index 0000000000..c0fac7f825
Binary files /dev/null and b/docs/static/tutorials/lyla/play.gif differ
diff --git a/docs/test/skillmap/sparks/sparks1.md b/docs/test/skillmap/sparks/sparks1.md
index 5fcb314d15..2e9fb119fc 100644
--- a/docs/test/skillmap/sparks/sparks1.md
+++ b/docs/test/skillmap/sparks/sparks1.md
@@ -7,11 +7,13 @@
_prΔ-(h)i-ΛstΘ―r-ik_
-: from a time before human records were kept
+: from a time before records were kept
---
-This tutorial will help you create your own game, set near prehistoric Mount Carmel in Israel, with the goal of lighting a fire before the wind blows away your sparks.
+This tutorial will help you create your own game, set near prehistoric
+Mount Carmel in Israel.
+The goal is to light a fire before the wind blows away your sparks.
![Campfire Sparks](/static/skillmap/sparks/sparks1.gif "Let's create sparks")
@@ -187,11 +189,11 @@ kindling.setPosition(70, 80)
π₯ **Make sparks** π₯
- :game: From the ``||controller: Controller||`` category **in the toolbox**, grab
-``||controller: on [A] button [pressed]||``
+``||controller: on [B] button [pressed]||``
and drop it into an empty area of the workspace.
-The is an **EVENT** block and it will cause the **ACTION** inside to happen each time the (A) button is pressed.
+The is an **EVENT** block and it will cause the **ACTION** inside to happen each time the (B) button is pressed.
~hint Tell me about events! π‘
@@ -207,14 +209,14 @@ hint~
#### ~ tutorialhint
```blocks
-controller.A.onEvent(ControllerButtonEvent.Pressed, function () { })
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () { })
```
## {10. Add Points}
-Now we can add a point each time the (A) button is clicked.
+Now we can add a point each time the (B) button is clicked.
This will be the **ACTION** that goes with our **EVENT**.
@@ -222,14 +224,14 @@ This will be the **ACTION** that goes with our **EVENT**.
- :id card: From the ``||info: Info||`` category in the toolbox, grab
``||info: change score by [1]||``
and snap it into the empty
-``||controller(noclick): on [A] button [pressed]||``
+``||controller(noclick): on [B] button [pressed]||``
block that's already in the workspace.
#### ~ tutorialhint
```blocks
-controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
//@highlight
info.changeScoreBy(1)
})
@@ -246,14 +248,14 @@ We can finish by adding spark effects with each click.
- :paper plane: From the ``||sprites: Sprites||`` category in the toolbox, grab
``||sprites: [kindling] start [fire] effect||``
and snap it anywhere inside the
-``||controller(noclick): on [A] button [pressed]||``
+``||controller(noclick): on [B] button [pressed]||``
block that's already in the workspace.
#### ~ tutorialhint
```blocks
let kindling: Sprite = null
-controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
info.changeScoreBy(1)
//@highlight
kindling.startEffect(effects.fire)
@@ -268,7 +270,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
- :binoculars: Take a look at the game window to see your project!
-You should see sparks ignite your kindling each time you click the (A) button. You should also get a point with each click.
+You should see sparks ignite your kindling each time you click the (B) button. You should also get a point with each click.
@@ -277,7 +279,8 @@ You should see sparks ignite your kindling each time you click the (A) button. Y
Right now, the sparks build too quickly. Let's fix that.
-- :mouse pointer: Click the white plus sign to the right of the
+- :mouse pointer: Click the white plus sign ``||sprites: +||``
+to the right of the
``||sprites: [kindling] start [fire] effect||``
block.
@@ -286,7 +289,7 @@ block.
#### ~ tutorialhint
```blocks
-controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
info.changeScoreBy(1)
//@highlight
kindling.startEffect(effects.fire, 100)
@@ -334,12 +337,12 @@ game.gameOver(true)
let kindling = sprites.create(img`.`, SpriteKind.Player)
kindling.setPosition(70, 80)
kindling.startEffect(effects.fire)
-
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {}
```
```ghost
-controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
info.changeScoreBy(1)
kindling.startEffect(effects.fire, 25)
})
@@ -375,4 +378,4 @@ namespace game {
return game.runtime()/100;
}
}
-```
\ No newline at end of file
+```
diff --git a/docs/test/skillmap/sparks/sparks2 copy.md b/docs/test/skillmap/sparks/sparks2 copy.md
new file mode 100644
index 0000000000..8ee6c99777
--- /dev/null
+++ b/docs/test/skillmap/sparks/sparks2 copy.md
@@ -0,0 +1,452 @@
+# When the Wind Blows
+### @explicitHints true
+
+
+## {Intro @showdialog}
+
+Your code from the last activity is already in the workspace.
+
+Let's add some code that allows the player to win or lose.
+
+
+![Time is ticking](/static/skillmap/sparks/sparks2.gif "Let's add win & loss conditions." )
+
+
+
+
+## {2. Play Your Game}
+
+
+**Play the clicker game!**
+
+Press the (B) button or the **enter key** and watch the score go up!
+
+
+
+
+~hint My game doesn't work β οΈ
+
+---
+
+If your code isn't working and you can't figure out why, click
+
"Replace my code"
+to replace the blocks in your workspace with new starter code.
+
+hint~
+
+
+
+
+
+## {3. Win Some}
+
+**Add a score event.**
+
+- :id card: From the ``||info:Info||`` category, drag
+``||info:on score [30]||``
+into an **empty area** of the workspace.
+
+
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore(30, function () {})
+```
+
+
+
+## {4. Game Over}
+
+**Win the game when the score reaches 30.**
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:game over ||``
+into the **empty**
+``||info(noclick):on score [30]||`` container.
+
+
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore(30, function () {
+ game.gameOver(true)
+})
+```
+
+
+
+
+
+
+## {5. Check Your Game!}
+
+
+- :binoculars: Try your project in the game window.
+
+Press the (B) button as quickly as possible and you should win the game when you score gets to 30.
+
+
+
+
+## {6. Counting the Seconds}
+
+Right now, the winning score will always be 30.
+Let's change the final score to the amount of time it took to win the game,
+then celebrate the "lowest" score.
+
+---
+
+- :id card: From the ``||info:Info||`` category, drag
+``||info:set score to [0]||``
+into the **top of** the
+``||info(noclick):on score [30]||`` container that's already in the workspace.
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:time since start (tenths)||``
+to replace **0** inside the
+``||info(noclick):set score to [0]||`` block.
+
+
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore(30, function () {
+ //@highlight
+ info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths))
+ game.gameOver(true)
+})
+```
+
+
+
+
+## {7. Lowest Wins}
+
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:use [high score] as best score||``
+into the **top of** the
+``||info(noclick):on score [30]||`` container that's already in the workspace.
+
+- :mouse pointer: Click ``||game:high score||`` and choose
+``||game: low score||`` from the dropdown menu.
+
+
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore(30, function () {
+ //@highlight
+ game.setGameOverScoringType(game.ScoringType.LowScore)
+ info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths))
+ game.gameOver(true)
+})
+```
+
+
+
+## {8. How long has this been going on?}
+
+Let the user see how long they've been playing.
+
+
+- :stopwatch: From the ``||stopwatch:Stopwatch||`` category, drag
+``||stopwatch:start timer using [tenths only]||``
+into the **end of** the
+``||loops(noclick):on start||`` container that's already in the workspace.
+
+
+#### ~ tutorialhint
+
+```blocks
+
+//@highlight
+stopwatch.startTimer(stopwatch.TimerType.Tenths)
+```
+
+
+
+## {9. Check Your Game!}
+
+
+- :binoculars: Try your project in the game window again.
+
+Press the (B) button as quickly as possible and
+see how long it takes you to win the game when you score gets to 30.
+
+
+
+
+
+## {10. Lose Some}
+
+
+**Time for a challenge!**
+β€οΈβπ₯ β€οΈβπ₯ β€οΈβπ₯
+
+It's too easy to reach 30.
+Let's subtract a point every second to represent the effects of the wind.
+
+---
+
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game: on game update every [500] ms||``
+into **an empty area** of the workspace.
+
+- :mouse pointer: Change **500** ms to **1000** ms (which is also 1 second.)
+
+
+
+#### ~ tutorialhint
+
+```blocks
+game.onUpdateInterval(1000, function () { })
+```
+
+
+## {11. Losing It}
+
+
+- :id card: From the ``||info:Info||`` category, drag
+``||info: change score by [1]||``
+into **the empty**
+``||game(noclick): on game update every [1000] ms||``
+container already in the workspace.
+
+- :mouse pointer: Change **1** to **-1** to remove a point.
+
+
+
+#### ~ tutorialhint
+
+```blocks
+game.onUpdateInterval(1000, function () {
+//@highlight
+ info.changeScoreBy(-1)
+})
+```
+
+
+
+
+
+## {12. Check Your Game!}
+
+
+- :binoculars: Try your project in the game window.
+
+Press the (B) button as quickly as possible and see if you can hit 30 points before too many points are taken away.
+
+
+
+
+
+## {13. Enough is Enough}
+
+Let's add a way to lose the game when points fall too far below zero.
+
+π°οΈ π°οΈ π°οΈ
+
+- :id card: From the ``||info:Info||`` category, drag
+``||info:on score [30]||``
+into an **empty area** of the workspace.
+
+- :mouse pointer: Click inside the empty container and change **30** to **-5**.
+
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore(-5, function () { })
+```
+
+
+
+
+## {14. Enough is Enough}
+
+
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:game over ||``
+into the **empty**
+``||info(noclick):on score [-5]||`` container.
+
+- :mouse pointer: Click **`** and change it to **`**.
+
+
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore(-5, function () {
+ //@highlight
+ game.gameOver(false)
+})
+```
+
+
+
+## {15. Check Your Game!}
+
+
+- :binoculars: Take a look at the game window
+
+Don't touch any buttons or keys...you should lose the game after five seconds.
+
+
+
+## {16. Play again}
+
+- :sync alt: Reset your game and play again!
+
+Click the (B) button as fast as you can. Is the game any harder to win?
+
+π‘ _Don't worry if your game is still too easy. In the next tutorial, we'll add more
+levels, which will make the game much harder!_
+
+
+
+
+## {17. Too Lossy}
+
+Now the player loses the game if they're not ready to start.
+
+Let's add a start screen to give the player a chance to catch up.
+
+---
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [You are in ...]||``
+into the **top of** the
+``||loops(noclick):on start||`` container already in the workspace.
+
+
+#### ~ tutorialhint
+
+```blocks
+let kindling: Sprite = null
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+scene.setBackgroundImage(sparks.background)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
+```
+
+
+## {18. More words}
+
+Add another block to share the goal of the game.
+
+---
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [The world...]||``
+into the ``||loops(noclick):on start||`` container, just below the
+``||game:show long text [You are in ...]||``
+block.
+
+
+#### ~ tutorialhint
+
+```blocks
+let kindling: Sprite = null
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full)
+scene.setBackgroundImage(sparks.background)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
+```
+```blockconfig.local
+game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full)
+```
+
+
+
+## {19. Play again}
+
+- :binoculars: Reset your game and play again!
+
+You should see your messages and be able to clear them with the (A) button.
+
+The points won't start going down until your final message is dismissed.
+
+
+
+
+
+## {Finale}
+
+**π¨π½βπ You're FIRE π¨π½βπ**
+
+What a great game you've got there!
+
+
+~hint How do I share my game?π‘
+
+---
+
+**Want to share your game?**
+
+Click "Done" to get back out to the skillmap, then look in the lower-right corner for the share button.
+
+![Share your card](/static/skillmap/sparks/share.gif )
+
+hint~
+
+
+When you're ready, click **Done** to return to the skillmap so you can
+add levels to your game!
+
+
+```blockconfig.global
+info.onScore(30, function () {})
+game.gameOver(true)
+let kindling = sprites.create(img`.`, SpriteKind.Player)
+kindling.setPosition(70, 80)
+kindling.startEffect(effects.fire)
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+info.onScore(30)
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {})
+stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)
+stopwatch.startTimer(stopwatch.TimerType.Tens)
+```
+
+```template
+
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
+ info.changeScoreBy(1)
+ kindling.startEffect(effects.fire, 100)
+})
+
+let kindling: Sprite = null
+scene.setBackgroundImage(sparks.background1)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
+```
+
+```ghost
+info.onScore(30, function () {
+ game.gameOver(true)
+})
+
+game.onUpdateInterval(1000, function () {
+ if (inCutscene == false) {
+ info.changeScoreBy(currentLevel * -1)
+ }
+})
+```
+
+
+
+```package
+arcade-storytelling=github:microsoft/arcade-storytelling
+arcade-text=github:microsoft/arcade-text
+sparks=github:kiki-lee/sparks#v0.0.5
+stopwatch=github:kiki-lee/stopwatch#v0.0.5
+```
+
diff --git a/docs/test/skillmap/sparks/sparks2.md b/docs/test/skillmap/sparks/sparks2.md
index 37ce80b166..ba250972b1 100644
--- a/docs/test/skillmap/sparks/sparks2.md
+++ b/docs/test/skillmap/sparks/sparks2.md
@@ -1,4 +1,4 @@
-# Pile of Sticks
+# Winner, Winner
### @explicitHints true
@@ -9,7 +9,7 @@ Your code from the last activity is already in the workspace.
Let's add some code that allows the player to win or lose.
-![Time is ticking](/static/skillmap/sparks/sparks2.gif "Let's add win & loss conditions." )
+![Time is ticking](/static/skillmap/sparks/sparks2.gif "Let's add a way to win." )
@@ -19,7 +19,7 @@ Let's add some code that allows the player to win or lose.
**Play the clicker game!**
-Press the (A) button or **space bar** and watch the score go up!
+Press the (B) button or the **enter key** and watch the score go up!
@@ -85,14 +85,18 @@ info.onScore(30, function () {
- :binoculars: Try your project in the game window.
-Press the (A) button as quickly as possible and you should win the game when you score gets to 30.
+Press the (B) button as quickly as possible and you should win the game when you score gets to 30.
## {6. Counting the Seconds}
-Right now, the winning score will always be 30. Let's change the final score to the amount of time it took to win the game, then celebrate the "lowest" score.
+Right now, the winning score will always be 30.
+Let's change the final score to the amount of time it took to win the game,
+then celebrate the "lowest" score.
+
+---
- :id card: From the ``||info:Info||`` category, drag
``||info:set score to [0]||``
@@ -100,7 +104,7 @@ into the **top of** the
``||info(noclick):on score [30]||`` container that's already in the workspace.
- :circle: From the ``||game:Game||`` category, drag
-``||game:time since start (tenths)||``
+``||stopwatch:timer value [tenths]||``
to replace **0** inside the
``||info(noclick):set score to [0]||`` block.
@@ -111,7 +115,7 @@ to replace **0** inside the
```blocks
info.onScore(30, function () {
//@highlight
- info.setScore(game.timeSinceStartSec())
+ info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths))
game.gameOver(true)
})
```
@@ -138,147 +142,49 @@ into the **top of** the
info.onScore(30, function () {
//@highlight
game.setGameOverScoringType(game.ScoringType.LowScore)
- info.setScore(game.timeSinceStartSec())
+ info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths))
game.gameOver(true)
})
```
+## {8. How long has this been going on?}
-## {8. Lose Some}
-
-
-**Time for a challenge!**
-β€οΈβπ₯ β€οΈβπ₯ β€οΈβπ₯
-
-It's too easy to reach 30. Let's subtract a point every second to add a twist.
-
-
-- :circle: From the ``||game:Game||`` category, drag
-``||game: on game update every [500] ms||``
-into **an empty area** of the workspace.
-
-- :mouse pointer: Change **500** ms to **1000** ms (which is also 1 second.)
-
-
-
-#### ~ tutorialhint
-
-```blocks
-game.onUpdateInterval(1000, function () { })
-```
-
-
-## {9. Lose Some}
-
-
-- :id card: From the ``||info:Info||`` category, drag
-``||info: change score by [1]||``
-into **the empty**
-``||game(noclick): on game update every [1000] ms||``
-container already in the workspace.
+Let the user see how long they've been playing.
-- :mouse pointer: Change **1** to **-1** to remove a point.
+- :stopwatch: From the ``||stopwatch:Stopwatch||`` category, drag
+``||stopwatch:start timer using [tenths only]||``
+into the **end of** the
+``||loops(noclick):on start||`` container that's already in the workspace.
#### ~ tutorialhint
```blocks
-game.onUpdateInterval(1000, function () {
+let kindling: Sprite = null
+scene.setBackgroundImage(sparks.background1)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
//@highlight
- info.changeScoreBy(-1)
-})
-```
-
-
-
-
-
-## {10. Check Your Game!}
-
-
-- :binoculars: Try your project in the game window.
-
-Press the (A) button as quickly as possible and see if you can hit 30 points before too many points are taken away.
-
-
-
-
-
-## {11. Enough is Enough}
-
-Let's add a way to lose the game when points fall too far below zero.
-
-π°οΈ π°οΈ π°οΈ
-
-- :id card: From the ``||info:Info||`` category, drag
-``||info:on score [30]||``
-into an **empty area** of the workspace.
-
-- :mouse pointer: Click inside the empty container and change **30** to **-5**.
-
-
-#### ~ tutorialhint
-
-```blocks
-info.onScore(-5, function () { })
-```
-
-
-
-
-## {12. Enough is Enough}
-
-
-
-- :circle: From the ``||game:Game||`` category, drag
-``||game:game over ||``
-into the **empty**
-``||info(noclick):on score [-5]||`` container.
-
-- :mouse pointer: Click **`** and change it to **`**.
-
-
-
-#### ~ tutorialhint
-
-```blocks
-info.onScore(-5, function () {
- //@highlight
- game.gameOver(false)
-})
+stopwatch.startTimer(stopwatch.TimerType.Tens)
```
+## {9. Check Your Game!}
+- :binoculars: Try your project in the game window again.
-## {13. Check Your Game!}
-
-
-- :binoculars: Take a look at the game window
-
-Don't touch any buttons or keys...you should lose the game after five seconds.
-
+Press the (B) button as quickly as possible and
+see how long it takes you to win the game when you score gets to 30.
-## {14. Play again}
-- :binoculars: Reset your game and play again!
-
-Click the (A) button as fast as you can. Is the game any harder to win?
-
-π‘ _Don't worry if your game is still too easy. In the next tutorial, we'll add more
-levels, which will make the game much harder!_
-
-
-
-
-## {9. Finale}
+## {Finale}
**π¨π½βπ You're FIRE π¨π½βπ**
@@ -308,19 +214,22 @@ game.gameOver(true)
let kindling = sprites.create(img`.`, SpriteKind.Player)
kindling.setPosition(70, 80)
kindling.startEffect(effects.fire)
-
-info.onScore(30, function () { })
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+info.onScore(30)
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {})
+stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)
+stopwatch.startTimer(stopwatch.TimerType.Tens)
```
```template
-controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
info.changeScoreBy(1)
- kindling.startEffect(effects.fire, 25)
+ kindling.startEffect(effects.fire, 100)
})
let kindling: Sprite = null
-scene.setBackgroundImage(sparks.background)
+scene.setBackgroundImage(sparks.background1)
kindling = sprites.create(sparks.pile1, SpriteKind.Player)
kindling.setPosition(70, 80)
```
@@ -340,24 +249,9 @@ game.onUpdateInterval(1000, function () {
```package
-arcade-carnival=github:microsoft/arcade-carnival
arcade-storytelling=github:microsoft/arcade-storytelling
arcade-text=github:microsoft/arcade-text
sparks=github:kiki-lee/sparks#v0.0.5
-
+stopwatch=github:kiki-lee/stopwatch#v0.0.5
```
-
-
-```customts
-namespace game {
- /**
- * This is a reporter block that returns
- * the number of seconds since the game started
- */
- //% block="time since start (tenths) "
- export function timeSinceStartSec(): number {
- return game.runtime()/100;
- }
-}
-```
\ No newline at end of file
diff --git a/docs/test/skillmap/sparks/sparks3.md b/docs/test/skillmap/sparks/sparks3.md
index 51e60ea155..ad58207b6c 100644
--- a/docs/test/skillmap/sparks/sparks3.md
+++ b/docs/test/skillmap/sparks/sparks3.md
@@ -1,4 +1,4 @@
-# Get Animated
+# When the Wind Blows
### @explicitHints true
@@ -6,10 +6,10 @@
Your code from the last activity is already in the workspace.
-Let's make our game more professional by adding sound and animation.
+Let's add some code that allows the player to win or lose.
-![Whack-the-Mole](/static/skillmap/mole/mole3.gif "Let's add sound and an animation for the hammer." )
+![Let's add some wind](/static/skillmap/sparks/sparks3.gif "Let's add wind to take points away." )
@@ -17,9 +17,9 @@ Let's make our game more professional by adding sound and animation.
## {2. Play Your Game}
-- :binoculars: Play the game you have so far.
+**Play the clicker game!**
-Using the joypad (or the arrow keys on your keyboard) move the hammer around the screen and earn 1 point each time it overlaps the mole!
+Press the (B) button or the **enter key** and see how fast you can light your fire!
~hint My game doesn't work β οΈ
@@ -35,189 +35,210 @@ hint~
+## {3. Lose Some}
+**Time for a challenge!**
+β€οΈβπ₯ β€οΈβπ₯ β€οΈβπ₯
-## {3. Add the Label}
+It's too easy to reach 30.
+Let's subtract a point every second to represent the effects of the wind.
-**Letβs add a label to the bottom our Whack-the-Mole game booth.**
+---
-- :tree: From the ``||carnival: Carnival||`` category in the toolbox, grab
-```block
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
-```
+- :circle: From the ``||game:Game||`` category, drag
+``||game: on game update every [500] ms||``
+into **an empty area** of the workspace.
-and snap it inside and at the very **end** of the
-``||loops(noclick): on start||``
-block container that's already in your workspace.
+- :mouse pointer: Change **500** ms to **1000** ms (which is also 1 second.)
-~hint Show me how! π΅π½
-![Choose the hammer from My Assets](/static/skillmap/mole/add-label.gif "Change from the Editor to My Assets and select the hammer.")
+#### ~ tutorialhint
+
+```blocks
+//@highlight
+game.onUpdateInterval(1000, function () { })
+```
-hint~
-π‘ **Tip:** _Don't forget to look at your game to see what your new addition did!_
+## {4. Losing It}
+- :id card: From the ``||info:Info||`` category, drag
+``||info: change score by [1]||``
+into **the empty**
+``||game(noclick): on game update every [1000] ms||``
+container already in the workspace.
+
+- :mouse pointer: Change **1** to **-1** to remove a point.
+
#### ~ tutorialhint
```blocks
-let myMole: Sprite = null
-let myHammer: Sprite = null
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Score)
+game.onUpdateInterval(1000, function () {
//@highlight
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
+ info.changeScoreBy(-1)
+})
```
-## {4. Drop the Beat}
-**Add a sound when the rubber hammer overlaps the mole.**
-- :headphones: From the ``||music: Music||`` category, grab
+## {5. Check Your Game!}
-```block
- music.baDing.play()
-```
-and snap it in at **the end** of the ``||sprites(noclick): on sprite overlaps otherSprite||`` block already in the workspace.
+- :binoculars: Try your project in the game window.
-- :mouse pointer: Change ``||music(noclick): ba ding||`` to whatever sound brings you joy.
+Press the (B) button as quickly as possible and see if you can hit 30 points before too many points are taken away.
-~hint Click here to see how π΅π½
-![Look under Controller for the block](/static/skillmap/mole/add-music.gif "Drag out the controller block to use later.")
-hint~
+## {6. Enough is Enough}
+Let's add a way to lose the game when points fall too far below zero.
+π°οΈ π°οΈ π°οΈ
+- :id card: From the ``||info:Info||`` category, drag
+``||info:on score [30]||``
+into an **empty area** of the workspace.
+
+- :mouse pointer: Click inside the empty container and change **30** to **-5**.
#### ~ tutorialhint
```blocks
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
- let myMole: Sprite = null
- let myHammer: Sprite = null
- info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
- //@highlight
-music.knock.play()
-
-})
+//@highlight
+info.onScore(-5, function () { })
```
-## {5. Check Your Game!}
-- :binoculars: Test your game!
+## {7. Enough is Enough Contd.}
-The mole should hop between holes and you should be able to move the hammer with your arrow keys or the joypad.
+- :circle: From the ``||game:Game||`` category, drag
+``||game:game over ||``
+into the **empty**
+``||info(noclick):on score [-5]||`` container.
-You should also see the Whack-the-Mole label, and be able to hear a sound each time the rubber hammer overlaps the mole.
+- :mouse pointer: Click **`** and change it to **`**.
----
-π‘ _If you're not hearing anything in your game, you may need to **unmute** the game window using the speaker icon._
+#### ~ tutorialhint
+```blocks
+info.onScore(-5, function () {
+ //@highlight
+ game.gameOver(false)
+})
+```
+## {8. Check Your Game!}
+- :binoculars: Take a look at the game window
-## {6. Add Animation}
+Don't touch any buttons or keys...you should lose the game after five seconds.
-**Finally, let's animate the rubber hammer each time it overlaps the mole.**
-- :mouse pointer: At the bottom of the toolbox, click **Advanced** to show more categories.
+## {9. Play again}
-- :sync: From the ``||animation: Animation||`` category, grab
+- :sync alt: Reset your game and play again!
-```block
-animation.runImageAnimation(
-myHammer,
-[img`
- .
- `],
-50,
-false
-)
-```
+Click the (B) button as fast as you can. Is the game any harder to win?
-and snap it in at **the end** of the ``||sprites(noclick): on sprite overlaps otherSprite||`` block already in the workspace.
+π‘ _Don't worry if your game is still too easy. In the next tutorial, we'll add more
+levels, which will make the game much harder!_
-- :mouse pointer: Click the empty square and when the image editor opens, switch to **My Assets** to select the **hammerAnimation** option and click **Done**.
-~hint Show me how! π΅π½
+## {10. Too Lossy}
-![Add the sprite block.](/static/skillmap/mole/add-animation.gif "Add a sprite to your game.")
+Now the player loses the game if they're not ready to start.
-hint~
+Let's add a start screen to give the player a chance to catch up.
+---
+- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [You are in ...]||``
+into the **top of** the
+``||loops(noclick):on start||`` container already in the workspace.
#### ~ tutorialhint
-
```blocks
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
- let myMole: Sprite = null
- let myHammer: Sprite = null
- info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
- music.knock.play()
- //@highlight
-animation.runImageAnimation(
-myHammer,
-assets.animation`hammerAnimation`,
-50,
-false
-)
-})
+let kindling: Sprite = null
+//@highlight
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+scene.setBackgroundImage(sparks.background)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
```
-## {7. Check Your Game Again!}
+## {11. More words}
+
+Add another block to share the goal of the game.
+
+---
+
+- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [The world...]||``
+into the ``||loops(noclick):on start||`` container, just below the
+``||game:show long text [You are in ...]||``
+block.
+#### ~ tutorialhint
+
+```blocks
+let kindling: Sprite = null
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+//@highlight
+game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full)
+scene.setBackgroundImage(sparks.background)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
+```
+```blockconfig.local
+game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full)
+```
+
-- :binoculars: Play your game in the game window!
-When your rubber hammer overlaps the mole, points should show up in the top-right corner, a sound should play, and you should see the rubber hammer move back and forth.
+## {12. Play again}
-**How many times can you tag the mole in 15 seconds?**
+- :binoculars: Reset your game and play again!
+You should see your messages and be able to clear them with the (A) button.
+The points won't start going down until your final message is dismissed.
-## {11. Finale}
+## {Finale}
-**π‘ You've done it! π‘**
+**π₯ So HOT π₯**
-You've created a Whack-the-Mole game!
+Now that's a great game!
~hint How do I share my game?π‘
@@ -228,75 +249,67 @@ You've created a Whack-the-Mole game!
Click "Done" to get back out to the skillmap, then look in the lower-right corner for the share button.
-![Share your card](/static/skillmap/mole/share.gif )
+![Share your card](/static/skillmap/sparks/share.gif )
hint~
-When you're ready, click **Done** to return to the skillmap so you can turn it into a game for two players!
-
-
-
+When you're ready, click **Done** to return to the skillmap so you can
+add levels to your game!
```blockconfig.global
-let myHammer: Sprite = null
-animation.runImageAnimation(
-myHammer,
-[img`.`],
-50,
-false
-)
-myHammer = sprites.create(img`.`, SpriteKind.Player)
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { info.changeScoreBy(1) })
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
-carnival.startCountdownGame(15, carnival.WinTypes.Score)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-simplified.moveToRandomHoleOnGrid(myMole)
-
+info.onScore(30, function () {})
+game.gameOver(true)
+let kindling = sprites.create(img`.`, SpriteKind.Player)
+kindling.setPosition(70, 80)
+kindling.startEffect(effects.fire)
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+info.onScore(30)
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {})
+stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)
+stopwatch.startTimer(stopwatch.TimerType.Tens)
```
+```template
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
+ info.changeScoreBy(1)
+ kindling.startEffect(effects.fire, 100)
+})
-```package
-carnival=github:microsoft/arcade-carnival#v0.0.7
-mole-images=github:microsoft/arcade-tutorial-extensions/mole-images#v0.0.11
-```
-
+let kindling: Sprite = null
+scene.setBackgroundImage(sparks.background1)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
+stopwatch.startTimer(stopwatch.TimerType.Tens)
-```template
+info.onScore(30, function () {
+ game.setGameOverScoringType(game.ScoringType.LowScore)
+ info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths))
+ game.gameOver(true)
+})
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
- info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
+```
+```ghost
+info.onScore(30, function () {
+ game.gameOver(true)
})
-let myMole: Sprite = null
-let myHammer: Sprite = null
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Score)
game.onUpdateInterval(1000, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
+ if (inCutscene == false) {
+ info.changeScoreBy(currentLevel * -1)
+ }
})
-
```
+```package
+arcade-storytelling=github:microsoft/arcade-storytelling
+arcade-text=github:microsoft/arcade-text
+sparks=github:kiki-lee/sparks#v0.0.5
+stopwatch=github:kiki-lee/stopwatch#v0.0.5
+```
-```assetjson
-{
- "README.md": " ",
- "assets.json": "",
- "custom.ts": "",
- "images.g.jres": "{\n \"Qv@;p79@e|(fGBFKaJ@[\": {\n \"data\": \"hwQQABAAAAAAAO7u7u7u7gDg7u7u7u7uAO7u7u7u7u4A7u7u7u7v7gDu7v7u7v7uAO7u7u/v/u4A7v/u8+7+7gDu7u4z7v7uAO7u7jPu/u4A7v/u8+7+7gDu7u7v7/7uAO7u/u7u/u4A7u7u7u7v7gDu7u7u7u7uAODu7u7u7u4AAO7u7u7u7g==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"mole\"\n },\n \"/LJ4HDC9/+6j@JGvC7#:\": {\n \"data\": \"hwSgAHgAAABmZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d397u7u8t/d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3f3v7u7u8z8f3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3e/u7u7y8zM/3d3d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3e/u7u7y8zM/Hd3d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d7+7u7vLzMzMzMx/d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d397u7u7vLzMzMzMx/d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d7+7u7vLzMzMzPx3d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d/e7u7u7zMzMzPx3d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3e/u7u7zMzM/Hd3d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3f3u7u7y8zM/3d3d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3f3v7u7y8z8f3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d397u7u8t8d3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////8=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"grid\"\n },\n \"Oag!`vsg+~Y,+WT2meT;\": {\n \"data\": \"hwQgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNwNAAAAAAAAAAAAAAAAAMDcDQAAAAAAAAAAAAAAAMDcvQsAAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAAMDcvQsAAAAAAABABAAAAMDcvQsAAAAAAAAAQAQAAADA3L0LAAAAAAAAQCTiDgDA3L0LAAAAAAAAAEAk4g4AwNy9CwAAAAAAAEAk4u7uzty9CwAAAAAAAABAJOLu7s7cvQsAAAAAAABAJOLu7u7evQsAAAAAAAAAQCTi7u7u3r0LAAAAAAAAACTi7u7u7u7uDgAAAAAAAAAk4u7u7u7u7g4AAAAAAAAA4O7u7u7u7u7uDgAAAAAAAODu7u7u7u7u7g4AAAAAAAAA4O7u7u7u7o5oBgAAAAAAAODu7u7u7u6OaAYAAAAAAAAA4O7u7u6OaAYAAAAAAAAAAODu7u7ujmgGAAAAAAAAAAAA4O7ujmgGAAAAAAAAAAAAAODu7o5oBgAAAAAAAAAAAAAA4I5oBgAAAAAAAAAAAAAAAOCOaAYAAAAAAAAAAAAAAAAAYAYAAAAAAAAAAAAAAAAAAGAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"hammer\"\n },\n \"anim1\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim1\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"YzgwMDEwMDAxMDAwMDQwMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDA1MDA1MDAwMDAwNTBlZWVlZWVlZWVlZWUwNWUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUwMDAwNTAwMDAwMDAwMDUwMDUwMDAwMDUwMDAwMDAwNTA1MDAwMDUwMDAwMDAwNTA1MDAwMDA1MDA1MDA1MDA1MDUwMDAwMDAwMDAwMDAwMDAwZWVlZWVlZWVlZWVlMDBlMGVlZWVlZWVlZWVlZTBlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmZWVlZWZlZWVlZWVlZWVmZTMzMzNlZmVlZWVlZWVlZWUzZmYzZWVlZWVlZWVlZWZlZWVlZWVmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZWVlZWVlZmVlMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDUwMDAwMDAwMDAwNTAwMDAwMDA1MDAwMDAwNTAwMDAwMDAwNTAwMDA1MDUwMDAwMDUwMDAwMDAwMDUwMDA1MDA1MDAwMDAwMDUwNTAwMDAwMDAwMDAwMDA1NTAwMDAwMDAwMDAwMDAwMDAwMGVlZWVlZWVlZWVlZTAwZTBlZWVlZWVlZWVlZWUwZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVmZWVlZWVlZWVlZmUzMzMzZWZlZWVlZWVlZWVlM2ZmM2VlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlZWVlZWVlZWVlZWUwMGUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWU=\",\n \"displayName\": \"moleAnimation\"\n },\n \"anim2\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim2\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"MzIwMDIwMDAyMDAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVjMGNjY2NjY2NjY2NjY2NjY2NjY2VjZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWViMGJiYmJiYmJiYmJiYmJiYmJiYmViZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlYzBjY2NjY2NjY2NjY2NjY2NjY2NlY2VlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlYjBiYmJiYmJiYmJiYmJiYmJiYmJlYmVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWMwY2NjY2NjY2NjY2NjY2NjY2NjZWNlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWIwYmJiYmJiYmJiYmJiYmJiYmJiZWJlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDI0ZTIwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMjBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMmVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDQwMjRlMmVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZThlNjgwNjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2VkZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwMDBjMGRjZWRlZWVlZWU4ZTY4MDYwMDAwMDAwMDAwMDBjMGRjYmRlYmVlZWU4ZTY4MDYwMDAwMDAwMDAwMDAwMGMwZGNiZGViZWVlZThlNjgwNjAwMDAwMDAwMDAwMGMwZGNiZDBiMDBlMDhlNjgwNjAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMGUwOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDYwMDYwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA=\",\n \"displayName\": \"hammerAnimation\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myImages\"\n }\n}",
- "images.g.ts": "// Auto-generated code. Do not edit.\nnamespace myImages {\n\n helpers._registerFactory(\"image\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"Qv@;p79@e|(fGBFKaJ@[\":\n case \"mole\":return img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`;\n case \"/LJ4HDC9/+6j@JGvC7#:\":\n case \"grid\":return img`\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc7777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n777777777777fcccccccccccccccccccccccccccccccf777777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n7777777777777ffcccccccccccccccccccccccccccff77777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n777777777777777fcccccccccccccccccccccccccf77777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n7777777777777777ffcccccccccccccccccccccff77777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n77777777777777777777fffffffffffffffff777777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n777777777777777777777777777777777777777777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n`;\n case \"Oag!`vsg+~Y,+WT2meT;\":\n case \"hammer\":return img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`;\n }\n return null;\n })\n\n helpers._registerFactory(\"animation\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"moleAnimation\":\n case \"anim1\":return [img`\n. . . . . . . 5 . . . . . . . . \n. . . . . . . 5 5 . . . . . . . \n. 5 e e e e e e e e e e e e 5 . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`, img`\n. . . . . 5 . . . . . . . . . 5 \n5 . . . . . 5 . . . . . . . 5 . \n5 . . . . . . 5 . . . . . . . 5 \n. 5 . . . . . 5 5 . . . . 5 5 . \n5 . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \n`, img`\n. . . . . . 5 . . . . . . . . . \n. . . . . . . 5 . . . . . . . . \n5 . . . . . . . 5 . . . . . . . \n. 5 . . . . . . 5 . . . . . . 5 \n. 5 . . . . . 5 . . . . . . 5 . \n. . 5 . . . . 5 . . . . . . . 5 \n. 5 . . . . . . . . . . . . 5 5 \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \n`, img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`];\n case \"hammerAnimation\":\n case \"anim2\":return [img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`];\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n",
- "main.blocks": "myHammermyHammer[img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n`]{\"commentRefs\":[],\"fieldData\":{\"frames\":null}}500false",
- "main.ts": "",
- "pxt.json": "{\n \"name\": \"Whackem2 - Assets Only\",\n \"description\": \"\",\n \"dependencies\": {\n \"device\": \"*\"\n },\n \"files\": [\n \"main.blocks\",\n \"main.ts\",\n \"README.md\",\n \"assets.json\",\n \"images.g.jres\",\n \"images.g.ts\",\n \"custom.ts\"\n ],\n \"targetVersions\": {\n \"branch\": \"v1.8.26\",\n \"tag\": \"v1.8.26\",\n \"commits\": \"https://github.com/microsoft/pxt-arcade/commits/6434cb63948fe7c1d1a7498115a4bc495495512c\",\n \"target\": \"1.8.26\",\n \"pxt\": \"7.4.27\"\n },\n \"preferredEditor\": \"tsprj\"\n}\n"
-}
-```
\ No newline at end of file
diff --git a/docs/test/skillmap/sparks/sparks4.md b/docs/test/skillmap/sparks/sparks4.md
index ffcabedbd5..a0696f0e63 100644
--- a/docs/test/skillmap/sparks/sparks4.md
+++ b/docs/test/skillmap/sparks/sparks4.md
@@ -1,4 +1,4 @@
-# Play with Friends
+# Another Level
### @explicitHints true
@@ -6,9 +6,10 @@
Your code from the last activity is already in the workspace.
-Let's add to it to create a multiplayer game.
+Let's build on it to add more levels!
-![Whack-the-Mole](/static/skillmap/mole/mole4.gif "Twice as much fun with two people." )
+
+![Again and Again](/static/skillmap/sparks/sparks4.gif "Let's add more levels." )
@@ -16,9 +17,11 @@ Let's add to it to create a multiplayer game.
## {2. Play Your Game}
-- :binoculars: Play the game you have so far.
+**Play your game!**
+
+Press the (B) button and try to get 30 points before they all disappear!
+
-Using the joypad (or the arrow keys on your keyboard) move the hammer around the screen and earn 1 point each time it overlaps the mole!
~hint My game doesn't work β οΈ
@@ -32,281 +35,94 @@ to replace the blocks in your workspace with new starter code.
hint~
-#### ~ tutorialhint
-
-```blocks
-
-let myMole: Sprite = null
-let myHammer: Sprite = null
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Multi)
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
-
-game.onUpdateInterval(1000, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
-})
-
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
- info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
- music.knock.play()
- animation.runImageAnimation(
- myHammer,
- assets.animation`hammerAnimation`,
- 50,
- false
- )
-})
-
-```
-
-
-## {3. Player 2}
-**Allow player 2 to move the mole**
-- :tree: From the ``||controller: Controller||`` category, drag
+## {3. Prepping the Variable}
-```blocks
-controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
-})
-```
+The level needs to change as the user plays.
+This is the perfect place to use a variable.
-into **an empty area** of your workspace.
-
-~hint Show me how! π΅π½
-
-![Add a block so a second player can control the mole](/static/skillmap/mole/player2.gif "Add a second player with the controller bundle")
-
-hint~
-
-Now, when player 2 presses their A button (or the **U key** on the keyboard) the mole will hop to a new location.
-
-
-
-#### ~ tutorialhint
-
-```blocks
-controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
-})
-```
-
-
-## {4. Playing Chicken}
-
-**Give player 2 a point for being fearless.**
-
-Now that player 2 moves the mole, we don't need to have it happen automatically.
-
-
-- :mouse pointer: From the
-``||game(noclick): on game update every [1000] ms||``
-
container already in the workspace, **delete**
-```block
- simplified.moveToRandomHoleOnGrid(myMole)
-```
-
-~hint How do I delete a block? π‘
+~hint What's a variable? π‘
---
-You can delete a block three ways:
-1) Click the block to select, then press **delete** on your keyboard
-2) Right-click the block and choose **Delete Blocks**
-3) Drag the block back into the toolbox
-
-
-hint~
-
-
-
-~hint Click here to see how π΅π½
-
-![Delete the block you don't need](/static/skillmap/mole/delete.gif "Delete the block that moves the mole automatically.")
-
-
-hint~
-
-
-#### ~ tutorialhint
-
-```blocks
-game.onUpdateInterval(1000, function () {})
-```
+A **variable** is a placeholder that you can use for a value that changes.
+In our program, we will **declare** a variable called **level**, which means that we'll tell the program
+that we want it to replace the word ``||variables(noclick):level||`` with whatever
+value is assigned to it.
+Later in our program, we can change the value of **level** and the code will use
+the newest value each time we call ``||variables(noclick):level||``.
-## {5. Add a point each second}
+This is the block we'll use to declare the variable in our program:
-- :bolt: From ``||simplified:Simplified||``, drag
```block
- simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1)
+let level: number = null
+level = 1
```
-into the newly **empty**
-``||game(noclick): on game update every [1000] ms||``
-
container already in the workspace.
-
-
-~hint Click here to see how π΅π½
-
-![Score points for staying still](/static/skillmap/mole/check-mole.gif "Add the block to check if the mole is still in the same spot.")
-
-
-hint~
-
-
-#### ~ tutorialhint
-
-```blocks
-game.onUpdateInterval(1000, function () {
- //@highlight
- simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1)
-})
-```
-
-
-
-
-
-## {6. Multiplayer Win}
+This is the block we'll use to change the value as we go:
-**Change to a multiplayer win screen.**
-
-Now that we have two scores to judge, you need to change the game over screen to **multiplayer**.
-
-- :mouse pointer: Find
```block
-carnival.startCountdownGame(15, carnival.WinTypes.Score
+let level: number = null
+level++
```
-inside the ``||loops(noclick):on start||`` container, and change **best score** to **multiplayer**.
-
-
-~hint Show me how! π΅π½
-
-
-![Change the type of win to multiplayer.](/static/skillmap/mole/multi.gif "Make your game multiplayer.")
hint~
-#### ~ tutorialhint
-
-
-```blocks
-let myMole: Sprite = null
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-let myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-//@highlight
-carnival.startCountdownGame(15, carnival.WinTypes.Multi)
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
-```
-
-
-## {7. Check Your Game Again!}
-
-
-
-- :binoculars: Play your game in the game window!
-
-Player 2 should be able to move the mole with the **U key** on the keyboard.
-
-They should also get a point for every second they stay in the same spot.
-**Play against someone. Who wins?**
+- :align justify: From the ``||variables:Variables||`` category, click on
+**Make a Variable**
+- :mouse pointer: Enter the name **level** and click **Ok**.
-## {8. Fine Tune}
+## {4. Put it in the program}
-**Is your game too easy? Too hard?**
-
-You can change your values to make your game exactly the way you like.
-
-
-~hint Show me how! π΅π½
-
----
-
-- If player 1 wins too much, change the hammer speed to **medium** or **slow** or change the number of milliseconds the mole must wait from **1000** to **500**.
-- If player 2 wins too much, change the number of milliseconds they must wait from **1000** to **1500**.
-- If you don't feel like you have long enough to play, change the countdown from **15** to **25** or **30** seconds.
+Add the variable to your program.
---
+- :align justify: From the ``||variables: Variables||`` category, grab
+``||variables: set [level] to [0]||``
+and snap it to **the top** of the
+``||loops(noclick): on start||``
+container that's already in the workspace.
-![Customize your game by changing the values in your blocks](/static/skillmap/mole/custom.gif "You can make your game easier or harder.")
-
-hint~
-
-
-
-## {9. Add Instructions}
-
-
-**Add some instructions to the beginning to let users know how to play!**
-
-
-- :circle: From ``||game:Game||``, snap
-```block
-game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press A to move the mole.", DialogLayout.Center)
-```
-into the **top of** the ``||loops(noclick):on start||`` container.
-
-You can change the instructions to whatever you want them to be.
-
-
-~hint Show me how! π΅π½
+- :mouse pointer: Change the value of level from **0** to **1**.
+---
-![Add rules.](/static/skillmap/mole/rules.gif "Add some text so users know the rules.")
-
-hint~
+Now the game will begin at Level 1.
#### ~ tutorialhint
-
-
```blocks
-let myMole: Sprite = null
//@highlight
-game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press B to move the mole.", DialogLayout.Center)
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-let myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Multi)
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
+let level = 1
+scene.setBackgroundImage(sparks.background)
+let kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
```
+```blockconfig.local
+let level = 1
+```
-## {10. Play your finished game}
-
-
-
-- :binoculars: Play your finished game in the game window!
-
-You should see the instructions before the game starts. Press the A button to clear them.
-**Start a Whack-the-Mole tournament? Who gets best 2 out of 3?**
-## {11. Finale}
+## {9. Finale}
-**π‘ You've done it! π‘**
+**π¨π½βπ You're FIRE π¨π½βπ**
-You've finished your Whack-the-Mole game!
+What a great game you've got there!
~hint How do I share my game?π‘
@@ -317,129 +133,108 @@ You've finished your Whack-the-Mole game!
Click "Done" to get back out to the skillmap, then look in the lower-right corner for the share button.
-![Share your card](/static/skillmap/mole/share.gif )
+![Share your card](/static/skillmap/sparks/share.gif )
hint~
-When you're ready, click **Done** to return to the skillmap to claim your badge and share your game with friends and family.
-
-
-
+When you're ready, click **Done** to return to the skillmap so you can
+add levels to your game!
```blockconfig.global
-let myHammer: Sprite = null
-animation.runImageAnimation(
-myHammer,
-[img`.`],
-50,
-false
-)
-myHammer = sprites.create(img`.`, SpriteKind.Player)
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
- info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
- music.knock.play()
- animation.runImageAnimation(
- myHammer,
- [img`.`],
- 50,
- false
- )
-})
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Multi)
-game.onUpdateInterval(1000, function () {
- simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1)
-})
-controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
-})
-game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press A to move the mole.", DialogLayout.Center)
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
-carnival.startCountdownGame(15, carnival.WinTypes.Score)
-simplified.moveToRandomHoleOnGrid(myMole)
+info.onScore(30, function () {})
+game.gameOver(true)
+let kindling = sprites.create(img`.`, SpriteKind.Player)
+kindling.setPosition(70, 80)
+kindling.startEffect(effects.fire)
+info.onScore(30, function () { })
```
-
-```package
-carnival=github:microsoft/arcade-carnival#v0.0.7
-mole-images=github:microsoft/arcade-tutorial-extensions/mole-images#v0.0.11
-```
-
-
```template
-
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
+info.onScore(-5, function () {
+ game.gameOver(false)
+})
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
- music.knock.play()
- animation.runImageAnimation(
- myHammer,
- assets.animation`hammerAnimation`,
- 50,
- false
- )
+ kindling.startEffect(effects.fire, 25)
+})
+info.onScore(30, function () {
+ game.setGameOverScoringType(game.ScoringType.LowScore)
+ info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths))
+ game.gameOver(true)
})
-let myMole: Sprite = null
-let myHammer: Sprite = null
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Score)
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
+let kindling: Sprite = null
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full)
+scene.setBackgroundImage(sparks.background)
+kindling = sprites.create(sparks.pile1, SpriteKind.Player)
+kindling.setPosition(70, 80)
+stopwatch.startTimer(stopwatch.TimerType.Tens)
+
game.onUpdateInterval(1000, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
+ info.changeScoreBy(-1)
})
```
-
```ghost
-
-controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () {
- simplified.moveToRandomHoleOnGrid(myMole)
-})
-sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
+controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
info.changeScoreBy(1)
- simplified.moveToRandomHoleOnGrid(myMole)
- music.knock.play()
- animation.runImageAnimation(
- myHammer,
- assets.animation`hammerAnimation`,
- 50,
- false
- )
+ firePit.startEffect(effects.fire, 100)
+})
+info.onScore(-5, function () {
+ game.gameOver(false)
})
-let myHammer: Sprite = null
-let myMole: Sprite = null
-game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press A to move the mole.", DialogLayout.Center)
-scene.setBackgroundImage(assets.image`grid`)
-myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
-myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
-simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast)
-carnival.startCountdownGame(15, carnival.WinTypes.Multi)
-carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom)
+info.onScore(30, function () {
+ bumpLevels()
+})
+function bumpLevels () {
+ if (level == 5) {
+ info.setScore(game.timeSinceStartSec())
+ game.setGameOverMessage(true, "Great job, Fire Maker!")
+ game.gameOver(true)
+ }
+ game.showLongText("Congrats! You started a fire! But...can you do it with fewer sticks?", DialogLayout.Full)
+ game.showLongText("Try to pass Level " + level + "!", DialogLayout.Full)
+ info.setScore(0)
+ level = level + 1
+ textSprite.setText("Level " + level)
+ firePit.setImage(list[level])
+}
+let textSprite: TextSprite = null
+let firePit: Sprite = null
+let level = 0
+let list: Image[] = []
+game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full)
+game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full)
+list = [
+sparks.pile1,
+sparks.pile2,
+sparks.pile3,
+sparks.pile4,
+sparks.pile5
+]
+level = 1
+scene.setBackgroundImage(sparks.background1)
+firePit = sprites.create(sparks.pile1, SpriteKind.Player)
+firePit.setPosition(70, 80)
+textSprite = textsprite.create("Level 1")
+textSprite.setPosition(30, 10)
+textSprite.setOutline(1, 6)
game.onUpdateInterval(1000, function () {
- simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1)
+ info.changeScoreBy(level * -1)
})
```
-```assetjson
-{
- "README.md": " ",
- "assets.json": "",
- "custom.ts": "",
- "images.g.jres": "{\n \"Qv@;p79@e|(fGBFKaJ@[\": {\n \"data\": \"hwQQABAAAAAAAO7u7u7u7gDg7u7u7u7uAO7u7u7u7u4A7u7u7u7v7gDu7v7u7v7uAO7u7u/v/u4A7v/u8+7+7gDu7u4z7v7uAO7u7jPu/u4A7v/u8+7+7gDu7u7v7/7uAO7u/u7u/u4A7u7u7u7v7gDu7u7u7u7uAODu7u7u7u4AAO7u7u7u7g==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"mole\"\n },\n \"/LJ4HDC9/+6j@JGvC7#:\": {\n \"data\": \"hwSgAHgAAABmZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d397u7u8t/d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3f3v7u7u8z8f3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3e/u7u7y8zM/3d3d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3e/u7u7y8zM/Hd3d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d7+7u7vLzMzMzMx/d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d397u7u7vLzMzMzMx/d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d7+7u7vLzMzMzPx3d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d/e7u7u7zMzMzPx3d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3e/u7u7zMzM/Hd3d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3f3u7u7y8zM/3d3d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3f3v7u7y8z8f3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d397u7u8t8d3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////8=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"grid\"\n },\n \"Oag!`vsg+~Y,+WT2meT;\": {\n \"data\": \"hwQgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNwNAAAAAAAAAAAAAAAAAMDcDQAAAAAAAAAAAAAAAMDcvQsAAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAAMDcvQsAAAAAAABABAAAAMDcvQsAAAAAAAAAQAQAAADA3L0LAAAAAAAAQCTiDgDA3L0LAAAAAAAAAEAk4g4AwNy9CwAAAAAAAEAk4u7uzty9CwAAAAAAAABAJOLu7s7cvQsAAAAAAABAJOLu7u7evQsAAAAAAAAAQCTi7u7u3r0LAAAAAAAAACTi7u7u7u7uDgAAAAAAAAAk4u7u7u7u7g4AAAAAAAAA4O7u7u7u7u7uDgAAAAAAAODu7u7u7u7u7g4AAAAAAAAA4O7u7u7u7o5oBgAAAAAAAODu7u7u7u6OaAYAAAAAAAAA4O7u7u6OaAYAAAAAAAAAAODu7u7ujmgGAAAAAAAAAAAA4O7ujmgGAAAAAAAAAAAAAODu7o5oBgAAAAAAAAAAAAAA4I5oBgAAAAAAAAAAAAAAAOCOaAYAAAAAAAAAAAAAAAAAYAYAAAAAAAAAAAAAAAAAAGAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"hammer\"\n },\n \"anim1\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim1\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"YzgwMDEwMDAxMDAwMDQwMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDA1MDA1MDAwMDAwNTBlZWVlZWVlZWVlZWUwNWUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUwMDAwNTAwMDAwMDAwMDUwMDUwMDAwMDUwMDAwMDAwNTA1MDAwMDUwMDAwMDAwNTA1MDAwMDA1MDA1MDA1MDA1MDUwMDAwMDAwMDAwMDAwMDAwZWVlZWVlZWVlZWVlMDBlMGVlZWVlZWVlZWVlZTBlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmZWVlZWZlZWVlZWVlZWVmZTMzMzNlZmVlZWVlZWVlZWUzZmYzZWVlZWVlZWVlZWZlZWVlZWVmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZWVlZWVlZmVlMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDUwMDAwMDAwMDAwNTAwMDAwMDA1MDAwMDAwNTAwMDAwMDAwNTAwMDA1MDUwMDAwMDUwMDAwMDAwMDUwMDA1MDA1MDAwMDAwMDUwNTAwMDAwMDAwMDAwMDA1NTAwMDAwMDAwMDAwMDAwMDAwMGVlZWVlZWVlZWVlZTAwZTBlZWVlZWVlZWVlZWUwZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVmZWVlZWVlZWVlZmUzMzMzZWZlZWVlZWVlZWVlM2ZmM2VlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlZWVlZWVlZWVlZWUwMGUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWU=\",\n \"displayName\": \"moleAnimation\"\n },\n \"anim2\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim2\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"MzIwMDIwMDAyMDAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVjMGNjY2NjY2NjY2NjY2NjY2NjY2VjZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWViMGJiYmJiYmJiYmJiYmJiYmJiYmViZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlYzBjY2NjY2NjY2NjY2NjY2NjY2NlY2VlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlYjBiYmJiYmJiYmJiYmJiYmJiYmJlYmVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWMwY2NjY2NjY2NjY2NjY2NjY2NjZWNlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWIwYmJiYmJiYmJiYmJiYmJiYmJiZWJlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDI0ZTIwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMjBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMmVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDQwMjRlMmVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZThlNjgwNjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2VkZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwMDBjMGRjZWRlZWVlZWU4ZTY4MDYwMDAwMDAwMDAwMDBjMGRjYmRlYmVlZWU4ZTY4MDYwMDAwMDAwMDAwMDAwMGMwZGNiZGViZWVlZThlNjgwNjAwMDAwMDAwMDAwMGMwZGNiZDBiMDBlMDhlNjgwNjAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMGUwOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDYwMDYwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA=\",\n \"displayName\": \"hammerAnimation\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myImages\"\n }\n}",
- "images.g.ts": "// Auto-generated code. Do not edit.\nnamespace myImages {\n\n helpers._registerFactory(\"image\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"Qv@;p79@e|(fGBFKaJ@[\":\n case \"mole\":return img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`;\n case \"/LJ4HDC9/+6j@JGvC7#:\":\n case \"grid\":return img`\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc7777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n777777777777fcccccccccccccccccccccccccccccccf777777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n7777777777777ffcccccccccccccccccccccccccccff77777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n777777777777777fcccccccccccccccccccccccccf77777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n7777777777777777ffcccccccccccccccccccccff77777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n77777777777777777777fffffffffffffffff777777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n777777777777777777777777777777777777777777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n`;\n case \"Oag!`vsg+~Y,+WT2meT;\":\n case \"hammer\":return img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`;\n }\n return null;\n })\n\n helpers._registerFactory(\"animation\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"moleAnimation\":\n case \"anim1\":return [img`\n. . . . . . . 5 . . . . . . . . \n. . . . . . . 5 5 . . . . . . . \n. 5 e e e e e e e e e e e e 5 . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`, img`\n. . . . . 5 . . . . . . . . . 5 \n5 . . . . . 5 . . . . . . . 5 . \n5 . . . . . . 5 . . . . . . . 5 \n. 5 . . . . . 5 5 . . . . 5 5 . \n5 . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \n`, img`\n. . . . . . 5 . . . . . . . . . \n. . . . . . . 5 . . . . . . . . \n5 . . . . . . . 5 . . . . . . . \n. 5 . . . . . . 5 . . . . . . 5 \n. 5 . . . . . 5 . . . . . . 5 . \n. . 5 . . . . 5 . . . . . . . 5 \n. 5 . . . . . . . . . . . . 5 5 \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \n`, img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`];\n case \"hammerAnimation\":\n case \"anim2\":return [img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`];\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n",
- "main.blocks": "myHammermyHammer[img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n`]{\"commentRefs\":[],\"fieldData\":{\"frames\":null}}500false",
- "main.ts": "",
- "pxt.json": "{\n \"name\": \"Whackem2 - Assets Only\",\n \"description\": \"\",\n \"dependencies\": {\n \"device\": \"*\"\n },\n \"files\": [\n \"main.blocks\",\n \"main.ts\",\n \"README.md\",\n \"assets.json\",\n \"images.g.jres\",\n \"images.g.ts\",\n \"custom.ts\"\n ],\n \"targetVersions\": {\n \"branch\": \"v1.8.26\",\n \"tag\": \"v1.8.26\",\n \"commits\": \"https://github.com/microsoft/pxt-arcade/commits/6434cb63948fe7c1d1a7498115a4bc495495512c\",\n \"target\": \"1.8.26\",\n \"pxt\": \"7.4.27\"\n },\n \"preferredEditor\": \"tsprj\"\n}\n"
-}
-```
\ No newline at end of file
+```package
+arcade-storytelling=github:microsoft/arcade-storytelling
+arcade-text=github:microsoft/arcade-text
+sparks=github:kiki-lee/sparks#v0.0.5
+stopwatch=github:kiki-lee/stopwatch#v0.0.5
+```
+
diff --git a/docs/test/tutorials/jr-template.md b/docs/test/tutorials/jr-template.md
new file mode 100644
index 0000000000..290514eda2
--- /dev/null
+++ b/docs/test/tutorials/jr-template.md
@@ -0,0 +1,36 @@
+# Jr Name
+### @explicitHints true
+
+
+## Jr Intro @showdialog
+
+Add goal here
+
+
+## {Solver}
+
+Show goal again
+
+ [![Level 2](/static/mkj/assets/next.png)](https://arcade.makecode.com/beta#recipe:/test/mkj/goal1/goal1-2)
+
+
+
+```package
+pxt-block-icons=github:jwunderl/arcade-block-icons/
+your_pack=github:yourName/your_pack/
+```
+
+
+```customts
+
+
+
+```
+
+```simtheme
+{
+ "theme": "junior",
+}
+```
+
+
diff --git a/docs/test/tutorials/layla-jr.md b/docs/test/tutorials/layla-jr.md
index 831989a1ed..cc3da2d469 100644
--- a/docs/test/tutorials/layla-jr.md
+++ b/docs/test/tutorials/layla-jr.md
@@ -4,9 +4,132 @@
## Pickle Party Intro @showdialog
-Are you ready to code a pickle party?
+**Ready to code a pickle party?**
+
+![Pickle Party Game](/static/tutorials/lyla/lyla.gif "Characters chasing pickle slices." )
+
+
+
+## {Step 2}
+
+**Take a look at the game window**
+
+![Lyla on the screen](/static/tutorials/lyla/lyla.png "Lyla is alone on the screen." )
+
+You should see Lyla on the screen.
+
+
+
+## {Step 3}
+
+**Click the circles for other players**
+
+![The circles allow you to control other players](/static/tutorials/lyla/circles.gif "Click the circles to control other players." )
+
+
+
+
+
+## {Step 4}
+
+**You can move the selected player with the arrow keys**
+
+![The arrow keys move whichever player you have selected](/static/tutorials/lyla/arrows.gif "The game window is the same color as the player circle." )
+
+
+
+
+
+## {Step 5}
+
+**Let's add pickles for them to chase!**
+
+![Add a flying pickle with a new block](/static/tutorials/lyla/pickle.gif "Choose the pickle from the gallery" )
+
+#### ~ tutorialhint
+
+```blocks
+game.onUpdateInterval2(1, function () {
+ //@highlight
+ sprites.sendFlying(lyla_imgs.picklechip)
+})
+```
+
+
+
+
+## {Step 6}
+
+**Play the game!**
+
+![Choose a character and chase pickles](/static/tutorials/lyla/play.gif "You get points for pickles" )
+
+Use the arrow keys to catch pickles.
+
+
+
+## {Step 7}
+
+**We need a way to win**
+
+Tell the computer what to do when someone scores 15 points.
+
+![Grab the player scores container](/static/tutorials/lyla/score.gif "When a player scores 15 points, the code inside will run." )
+
+#### ~ tutorialhint
+
+```blocks
+//@highlight
+info.onScore2(15, function () {})
+```
+
+
+
+
+## {Step 8}
+
+**Add the _game over_ block**
+
+![Add the game over block to the new container](/static/tutorials/lyla/game-over.gif "This block tells the computer that the first to 15 wins" )
+
+#### ~ tutorialhint
+
+```blocks
+info.onScore2(15, function () {
+ //@highlight
+ game.gameOver(true)
+})
+```
+
+
+
+
+## {Step 9}
+
+**Play until you win!**
+
+
+
+
+
+## {Step 10}
+
+**Let's make it fancy**
+
+Grab the block that runs code when the game starts.
+
+![Add the "on start" container](/static/tutorials/lyla/on-start.gif "This block tells the computer to run the code inside when the game starts" )
+
+#### ~ tutorialhint
+
+```blocks
+//@highlight
+scene.setBackgroundImage(img`.`)
+```
+
+
+
-Follow this tutorial to create your own multiplayer experience that you can play online together with family and friends!
@@ -21,44 +144,148 @@ When you're ready, sign-in, then select **Done** to start an online multiplayer
**Who will be the first to score 20 points?**
+```blockconfig.global
+info.onScore2(15, function () { })
+game.holdText("Press (A) when everyone is ready to start the game")
+```
+
+
```template
-sprites.step_right()
-let characters: Image[] = []
+game.onUpdateInterval2(1, function () { })
+```
-characters = [
-lyla_imgs.lyla,
-lyla_imgs.everett,
-lyla_imgs.stu
-]
+```ghost
+info.onScore2(15, function () {
+ game.gameOver(true)
+})
+scene.setBackgroundImage(lyla_imgs.diner)
+game.holdText("Press (A) when everyone is ready to start the game")
+music.play(music.createSong(lyla_imgs.countdown), music.PlaybackMode.UntilDone)
+game.onUpdateInterval2(1, function () {
+ sprites.sendFlying(lyla_imgs.picklechip)
+})
```
```package
multiplayer
-lyla_imgs=github:kiki-lee/lyla_imgs#v0.0.2
+lyla_imgs=github:kiki-lee/lyla_imgs#v0.0.3
```
```customts
+mp.onControllerEvent(ControllerEvent.Connected, function (thisPlayer) {
+ if (mp.getPlayerProperty(thisPlayer, mp.PlayerProperty.Number) <= characters.length) {
+ pizza.setPlayersWith(characters, mp.getPlayerProperty(thisPlayer, mp.PlayerProperty.Number))
+ }
+})
+sprites.onOverlap(SpriteKind.Player, SpriteKind.Projectile, function (sprite, otherSprite) {
+ if (!(mp.isButtonPressed(mp.getPlayerBySprite(sprite), mp.MultiplayerButton.A))) {
+ sprites.destroy(otherSprite, effects.disintegrate, 100)
+ mp.changePlayerStateBy(mp.getPlayerBySprite(sprite), MultiplayerState.score, 1)
+ }
+})
+sprites.onOverlap(SpriteKind.Player, SpriteKind.Player, function (sprite, otherSprite) {
+ if (mp.isButtonPressed(mp.getPlayerBySprite(sprite), mp.MultiplayerButton.A)) {
+ scene.cameraShake(4, 500)
+ pizza.bumpSprite(sprite, otherSprite)
+ mp.changePlayerStateBy(mp.getPlayerBySprite(otherSprite), MultiplayerState.score, -1)
+ }
+ if (mp.isButtonPressed(mp.getPlayerBySprite(otherSprite), mp.MultiplayerButton.A)) {
+ scene.cameraShake(4, 500)
+ pizza.bumpSprite(otherSprite, sprite)
+ mp.changePlayerStateBy(mp.getPlayerBySprite(sprite), MultiplayerState.score, -1)
+ }
+})
+
+
+let characters = [lyla_imgs.lyla, lyla_imgs.everett, lyla_imgs.stu]
+pizza.setPlayersWith(characters, 1)
+
+namespace game {
+ /**
+ * Run code on an interval of time. This executes before game.onUpdate()
+ * @param body code to execute
+ */
+ //% group="Gameplay"
+ //% help=game/on-update-interval weight=99 afterOnStart=true
+ //% blockId=gameinterval2 block="every $period second(s)"
+ //% period.defl=1
+ //% blockAllowMultiple=1
+ export function onUpdateInterval2(period: number, a: () => void): void {
+ period = period * 1000;
+ if (!a || period < 0) return;
+ let timer = 0;
+ game.eventContext().registerFrameHandler(scene.UPDATE_INTERVAL_PRIORITY, () => {
+ const time = game.currentScene().millis();
+ if (timer <= time) {
+ timer = time + period;
+ a();
+ }
+ });
+ }
+
+
+
+ //% blockId=hold_text block="hold text $msg"
+ //% msg.defl = "Press (A) when everyone is ready to start the game"
+ //% img.shadow=screen_image_picker
+ export function holdText(msg: string) {
+ game.showLongText(msg, DialogLayout.Full)
+ }
+
+
+
+}
namespace sprites {
- //% block="`lyla_imgs.stu`"
- export function step_right() {
- pause(500)
+ export enum Plyrs {
+ //% block="Player 1"
+ One = 0,
+ //% block="Player 2"
+ Two = 1,
+ //% block="Player 3"
+ Three = 2,
+ //% block="Player 4"
+ Four = 3
}
+
+
+ /**
+ * Run code on an interval of time. This executes before game.onUpdate()
+ * @param body code to execute
+ */
+ //% blockId=assign_player_image block="$thing = $img"
+ //% thing.defl = Plyrs.One
+ //% img.shadow=screen_image_picker
+ export function assignPlayerImg(thing: Plyrs, img:Image) {
+ characters[thing] = img
+ pizza.setPlayersWith(characters, thing+1)
+ }
+
+
+ /**
+ * Run code on an interval of time. This executes before game.onUpdate()
+ * @param body code to execute
+ */
+ //% blockId=send_flying block="add flying $thing"
+ //% thing.shadow=screen_image_picker
+ export function sendFlying(thing:Image){
+ let projectile2 = sprites.createProjectileFromSide(thing, randint(-100, 100), randint(-100, 100))
+ }
}
-//% color=#29a320 icon="\uf192"
-namespace pickle {
+//% color=#b79900 icon="\uf1ce"
+namespace pizza {
// Make sure not to remove later player when earlier player tested
- export let playersConnected=0;
+ export let playersConnected = 0;
//% blockId=set_players
@@ -67,20 +294,20 @@ namespace pickle {
//% list.shadow=variables_get
//% list.defl=characters
export function setPlayersWith(list: Image[], num: number) {
- if(num >= pickle.playersConnected){
- pickle.playersConnected = num;
+ if (num >= pizza.playersConnected) {
+ pizza.playersConnected = num;
sprites.destroyAllSpritesOfKind(SpriteKind.Player)
let xloc = [
- 40,
- 120,
- 40,
- 120
+ 40,
+ 120,
+ 40,
+ 120
]
let yloc = [
- 30,
- 30,
- 90,
- 90
+ 30,
+ 30,
+ 90,
+ 90
]
for (let index = 0; index <= num - 1; index++) {
mp.setPlayerSprite(mp.getPlayerByIndex(index), sprites.create(list[index], SpriteKind.Player))
@@ -92,52 +319,32 @@ namespace pickle {
}
}
-}
-
-namespace logic{
- /**
- * this just holds code
- */
- //% block="check if A button pressed" weight=300
- //% handlerStatement=1
- export function wralyla(handler: () => void) {
- handler();
+ //% blockId=bump_sprite
+ //% block="$thisSprite bump $thatSprite"
+ //% thisSprite.shadow=variables_get
+ //% thisSprite.defl=sprite
+ //% thatSprite.shadow=variables_get
+ //% thatSprite.defl=otherSprite
+ export function bumpSprite(thisSprite: Sprite, thatSprite: Sprite) {
+ thatSprite.setPosition((thisSprite.x + 80) % 160, thisSprite.y)
}
}
-
-//% color=#6d5ba4 icon="\uf0f2"
-namespace bundles{
- /**
- * this just holds code
- */
- //% block="check if A button pressed" weight=300
- //% handlerStatement=1
- export function wralyla(handler: () => void) {
- handler();
- }
-
+namespace info {
/**
- * this just holds code
- */
- //% block="create finish line" weight=300
- //% handlerStatement=1
- export function wraeverett(handler: () => void) {
- handler();
+ * Runs code once each time a player's score reaches a given value.
+ * @param score The score to check for, eg: 100
+ * @param handler The code to run when the score is reached
+ */
+ //% blockId=mp_onScore2
+ //% block="on player scores $score"
+ //% score.defl=20
+ //% blockGap=8
+ //% help=multiplayer/on-score
+ //% parts="multiplayer"
+ export function onScore2(score: number, handler: () => void) {
+ mp._mpstate().onReachedScore(score, handler);
}
-
- /**
- * this just holds code
- */
- //% block="create players" weight=300
- //% handlerStatement=1
- export function wrastu(handler: () => void) {
- handler();
- }
-
-
-
-
}
```
diff --git a/docs/test/tutorials/sparks-jr.md b/docs/test/tutorials/sparks-jr.md
new file mode 100644
index 0000000000..0cdd4ed170
--- /dev/null
+++ b/docs/test/tutorials/sparks-jr.md
@@ -0,0 +1,147 @@
+# Sparks Flying (Jr.)
+### @explicitHints true
+
+
+## prehistoric @showdialog
+
+
+Let's make a game!
+
+![Campfire Sparks](/static/skillmap/sparks/sparks1.gif "Let's create sparks")
+
+
+
+
+## {2. Your First Block}
+
+**Add your first block**
+
+![Set the background with a block from the scene category](/static/skillmap/sparks/bg.gif "Let's add a background")
+
+
+#### ~ tutorialhint
+
+```blocks
+//@highlight
+scene.setBackgroundImage(img`.`)
+```
+
+
+
+## {3. Choose the cave}
+
+**Choose a cave**
+
+![Choose your favorite cave](/static/skillmap/sparks/cave.gif "There are different caves to choose from")
+
+
+
+#### ~ tutorialhint
+
+```blocks
+scene.setBackgroundImage(sparks.background)
+```
+
+
+
+## {4. Check Your Screen!}
+
+
+**Look at the game window!**
+
+![Look for the game window in the lower right](/static/skillmap/sparks/game.png "Click the mini game window to pop open the bigger game window.")
+
+You should see a cave background.
+
+
+
+
+
+## {5. Add the Sprite}
+
+
+**Add kindling!**
+
+![Add a pile of kindling](/static/skillmap/sparks/kindling.gif "Let's add a kindling sprite")
+
+
+#### ~ tutorialhint
+
+```blocks
+scene.setBackgroundImage(sparks.background)
+//@highlight
+sparksjr.addFire(img`.`)
+```
+
+
+
+## {6. Choose the kindling}
+
+**Choose the kindling pile from the gallery**
+![Choose the biggest kindling pile](/static/skillmap/sparks/kindling1.gif "Let's add a kindling sprite")
+
+
+
+#### ~ tutorialhint
+
+```blocks
+scene.setBackgroundImage(sparks.background)
+//@highlight
+sparksjr.addFire(sparks.pile1)
+```
+
+
+
+
+## {8. Play!}
+
+- :binoculars: Take a look at what you made!
+
+How many points can you get in twenty seconds?
+
+
+
+
+## {9. Finale}
+
+**πͺ΅ Way to Go πͺ΅**
+
+You have a clicker game!
+
+
+When you're ready, click **Done** to finish this tutorial and share your game.
+
+
+```blockconfig.global
+ sparksjr.changeScoreOverride(1)
+```
+
+```ghost
+sparksjr.onB(function () {
+ sparksjr.changeScoreOverride(1)
+})
+sparksjr.onScore(30, function () {
+ sparksjr.fireWin()
+})
+sparksjr.onScore(-5, function () {
+ sparksjr.fireLoss()
+})
+scene.setBackgroundImage(sparks.background1)
+sparksjr.addFire(sparks.pile1)
+game.onUpdateInterval(1000, function () {
+ sparksjr.changeScoreOverride(-1)
+})
+
+```
+
+
+
+
+```package
+arcade-carnival=github:microsoft/arcade-carnival
+arcade-storytelling=github:microsoft/arcade-storytelling
+arcade-text=github:microsoft/arcade-text
+sparks=github:kiki-lee/sparks#v0.0.9
+sparksjr=github:kiki-lee/sparksjr#v0.0.2
+```
+